Триггеры предметов

Общие для всех видов предметов

onWear(ch) - ch одел предмет на тело

onRemove(ch) - ch снял предмет с тела

onGet(ch) - предмет попал в инвентарь к ch

onDrop(ch) - ch уронил предмет. Надо вернуть true, если в триггере предмет разрушен, или если хотим чтобы он не утонул в воде и не рассыпался (при extra_flag melt_drop).

onSac(ch) - ch принес в жертву предмет. Вызывается сразу после сообщения "Такой-то приносит в жертву богам что-то.". Если уничтожаем предмет, надо вернуть true.

onEntry() - тот, кто нес предмет, вошел в какую-то комнату.

onGive(ch, vict) - ch дал предмет чару vict. Если вернем true, не будет вызван триггер onGive у vict, и onGet(vict) у этого предмета. True нужно возвращать, если предмет уничтожен или не задержался в руках у vict.

onGreet(ch) - ch вошел в комнату, а предмет - в руках у стоящего в комнате или лежит на полу.

onFight(ch) - ch, несущий предмет, сражается. Вызывается каждый баттл-раунд (раз в 4 секунды).

onDeath(ch) - ch, на которого одет предмет, пытается умереть. Если возращаем true, он воскресает и остается стоять.

onSpeech(ch, str)- ch произнес фразу 'str' стоя рядом с предметом

onArea() - вызывается каждую минуту. Если разрушаем предмет, или не хотим, чтобы для него тикал timer, надо вернуть true.

onExtract(count) - предмет разрушается. count == false означает, что разрушение не уменьшит счетчика предметов с этим внумом. Пример - выход чара из мира. На момент вызова триггера предмет уже удален из всех списков.

onQuit(ch,count) - ch покидает мир. Если разрушаем предмет, надо вернуть true. count == false при обычном quit, и true при делите.

onExamine(ch) - ch пялится на предмет (команда examine). Если вернем true, стандартные сообщения от examine не появятся.

onInvisible(ch) - Если вернем true, предмет будет всегда невидим для ch. Если false - будут вызваны стандартные проверки видимости-невидимости.

onPut(ch,obj,cont)- ch кладет obj в контейнер cont. Триггер вызывается для всех троих.

onUse(ch,str) - ch применил на предмет команду 'use' с аргументами str. Если вернуть false, ch будет 'вертеть в руках, не зная что с ним делать'.

onExtraDescr(ch,str) - возвращает строку, которую надо показать чару ch, при взгляде на экстра-дескр str. Если вернуть пустую строку, продолжится поиск другого экстра-деска, иначе -- покажет то что мы вернули, и оборвет поиск.

onLook(ch, str) - на предмете был экстра-дескр с ключевым словом str, и ch только что увидел его (например, предмет - это книга, и ch выполнил "look page1", тогда в onLook передастся ch и "page1").

onCommand(ch, cmdName, cmdArgs) - ch, держащий этот предмет в руках, пытается выполнить команду с именем cmdName и аргументами cmdArgs. если триггер возвращает true, команду выполнить не получится. осторожно, с помощью этого триггера можно полностью обездвижить персонажа, если всегда возвращать true!

Триггеры для контейнеров (container)

onFetch(ch,obj) - ch вынул obj из этого предмета-контейнера

onClose(ch) - ch закрыл этот предмет-контейнер. Вызывается сразу после фразы "Ты закрываешь <что-то>".

onOpen(ch) - ch открыл этот предмет-контейнер. Вызывается сразу после фразы "Ты открываешь <что-то>".

onCantFetch(ch) - чар ch пытается что-то вытащить из этого контейнера. если вернуть true - вытащить не получится.

onCantPut(ch, obj, pocket, verbose) - чар ch пытается положить предмет obj в этот контейнер (возможно в карман с именем pocket). если вернуть true - положить не получится. параметр verbose задает, надо ли выводить чару сообщения о неудаче. например, при "put all.something container" - спамить при попытке класть каждый предмет не нужно, и verbose будет равно false.

Триггеры для мебели (furniture)

onShowWhere(ch, looker) - пусть ch сидит на предмете, а другой чар (looker) выполняет look. если onShowWhere вернет строку, то looker увидит ее вместо стандартного "на стуле", "в кровати" и тп.

onShowEnd(ch, looker) - пусть ch сидит на предмете, а другой чар looker выполняет look. строку, возвращаемую onShowEnd, looker увидит в конце стандартных сообщений (например "такой-то сидит на стуле ... закинув ногу на ногу").

Триггеры для порталов (portal)

onPortalLocation(ch) - пусть ch пытается войти в портал. если триггер вернет 0, чар попадает в комнату предусмотренную этим порталом, если вернуть число - чар попадет в комнату с указанным внумом.

Триггеры для пищи (food, drink)

onEat(ch) - принимает в параметры чара-едока, если ты изнутри уничтожаешь объект или же наоборот - не хочешь, чтобы он исчез как обычно бывает после 'eat', возвращай true.

onDrink(ch, liqName, amount) - чар ch пьет жидкость liqName в размере глотка amount. При питье из бочонков он равен полю sip_size у жидкости, а из фонтанов - в три раза больше.