/* This is a list of library verbs with the corresponding macro name I used. If the macro starts with a 'lib', the Action name and the macro name are the same. Note that if you want to use different naming conventions, different preconditions, whatever, you'll have to alter the list below. The 50s and 20s have to do with logicalRank, I was mostly trying to mimic how the library handles the verbs. */ modify Thing libpTnK(Attack) libpTnK(Break) dF(BurnWith) pTnK(Burn) // nBurnWith applies to iobj; nBurn to dobj dF(CleanWith) pTnK(Clean) // like BurnWith iF(CleanWith) pHnK(CleanWith) // hold something to clean with it libpTnK(Climb) libpTnK(ClimbDown) libpTnK(ClimbUp) dF(CutWith) pTnK50(Cut) // like BurnWith iF(CutWith) pHnK20(CutWith) // we'll show an illogical nCutWith sooner than // an illogical nCut dF(DigWith) pTnK(Dig) // like BurnWith libpTnK(Drink) libpTnK(Eat) libpTnK(JumpOff) libpTnK50(Kiss) libpTnK(Lock) libpTnK50(Move) dF(MoveWith) pTnK50(MoveXWith) // this could be approached another way libpTnK50(Push) libpTnK50(Pull) libpTnK50(Turn) dF(TurnWith) pTnK(Turn) // like BurnWith iF(TurnWith) pHnK(TurnWith) libpTnK(Unlock) /* We have to define these properties so that the above verbs can make use of the nVerb/kVerb system. If you want to override library default response messages, you can replace the &cannot... with your own message, or you can just override the properties in playerActionMessages like normal. You can also change the n or k before any of these, if you want default dismiss/acknowledge to be different from the library's defaults. */ nBreak = &shouldNotBreakMsg nBurn = &cannotBurnMsg nClean = &cannotCleanMsg nCleanWith = &cannotCleanWithMsg nCut = &cutNoEffectMsg nCutWith = &cannotCutWithMsg nClimb = &cannotClimbMsg nClimbUp = &cannotClimbMsg nClimbDown = &cannotClimbMsg nDig = &cannotDigMsg nDigWith = &cannotDigWithMsg nDrink = &cannotDrinkMsg nEat = &cannotEatMsg nFollow = ¬FollowableMsg nJumpOff = &cannotJumpOffMsg nAttack = &uselessToAttackMsg kKiss = &cannotKissMsg // lib msg implies the action happened nLock = &cannotLockMsg kMove = &moveNoEffectMsg kMoveXWith = &moveNoEffectMsg kPull = &pullNoEffectMsg kPush = &pushNoEffectMsg nTurn = &cannotTurnMsg nTurnWith = &cannotTurnWithMsg nUnlock = &cannotUnlockMsg ; modify Fixture nTake = cannotTakeMsg nMove = cannotMoveMsg nMoveXTo = cannotMoveMsg nMoveXWith = cannotMoveMsg dF(Push) pTnK50(Push) dF(Pull) pTnK50(Pull) dF(Move) pTnK50(Move) dF(MoveWith) pTnK50(MoveXWith) dF(MoveTo) pTnK50(MoveXTo) ; modify CustomFixture nMove = nTake ; modify Immovable nTake = cannotTakeMsg nMove = cannotMoveMsg nMoveXTo = cannotMoveMsg nMoveXWith = cannotMoveMsg dF(Push) pTnK50(Push) dF(Pull) pTnK50(Pull) dF(Move) pTnK50(Move) dF(MoveWith) pTnK50(MoveXWith) dF(MoveTo) pTnK50(MoveXTo) ; modify CustomImmovable nMove = nTake ; modify TravelPushable nMove = &cannotMovePushableMsg ; modify Food dF(Eat) {action() { moveInto(nil); defaultReport(&okayEatMsg); } } kEat = &okayEatMsg ; /* so iobj `illogical`s can trump dobj ones when desired by rank:20 */ modify IllogicalVerifyResult construct(rank:=30, msg, [params]) { if(dataType(msg)==TypeObject && msg.oK(MessageResult)) { messageText_ = msg.messageText_; messageProp_ = msg.messageProp_; return; } if(dataType(msg)==TypeProp) messageProp_ = msg; messageText_ = resolveMessageText(gAction.getCurrentObjects(), msg, params); resultRank = rank; } ;