struct EffectListType { BYTE *eName; EFFECTPROC (*eProc); WORD eCheck; /* double check constant versus this entry */ }; #define EFFECT_NONE 0 /* silly option really */ #define EFFECT_UNCODED EFFECT_NONE+1 /* silly option really */ /* Body */ #define EFFECT_CELL_REPAIR EFFECT_UNCODED+1 #define EFFECT_REFRESH EFFECT_CELL_REPAIR+1 #define EFFECT_ENDURANCE EFFECT_REFRESH+1 #define EFFECT_BREATHWATER EFFECT_ENDURANCE+1 #define EFFECT_STRENGTH EFFECT_BREATHWATER+1 #define EFFECT_DARKVISION EFFECT_STRENGTH+1 #define EFFECT_SLOW_POISON EFFECT_DARKVISION+1 #define EFFECT_CURE_POISON EFFECT_SLOW_POISON+1 #define EFFECT_POISON EFFECT_CURE_POISON+1 #define EFFECT_HEAL_MINOR EFFECT_POISON+1 #define EFFECT_REGENERATION EFFECT_HEAL_MINOR+1 #define EFFECT_HEAL_MAJOR EFFECT_REGENERATION+1 #define EFFECT_DEXTERITY EFFECT_HEAL_MAJOR+1 #define EFFECT_CONSTITUTION EFFECT_DEXTERITY+1 #define EFFECT_HASTE EFFECT_CONSTITUTION+1 #define EFFECT_QUENCH EFFECT_HASTE+1 #define EFFECT_SUSTENANCE EFFECT_QUENCH+1 #define EFFECT_ACIDTOUCH EFFECT_SUSTENANCE+1 #define EFFECT_POISONTOUCH EFFECT_ACIDTOUCH+1 /* Telekinetic */ #define EFFECT_CRUSH EFFECT_POISONTOUCH+1 #define EFFECT_FORCESTORM EFFECT_CRUSH+1 #define EFFECT_GHOSTFIST EFFECT_FORCESTORM+1 #define EFFECT_KINETIC_SHIELD EFFECT_GHOSTFIST+1 #define EFFECT_IMMOBILIZE EFFECT_KINETIC_SHIELD+1 #define EFFECT_HEARTSTOP EFFECT_IMMOBILIZE+1 #define EFFECT_ASPHYXIATE EFFECT_HEARTSTOP+1 #define EFFECT_INVISIBILITY EFFECT_ASPHYXIATE+1 #define EFFECT_SLOW EFFECT_INVISIBILITY+1 #define EFFECT_IMPROVEDINVIS EFFECT_SLOW+1 #define EFFECT_VACUUMWALK EFFECT_IMPROVEDINVIS+1 /* Telepathy */ #define EFFECT_PHANTOMEAR EFFECT_VACUUMWALK+1 #define EFFECT_PHANTOMEYE EFFECT_PHANTOMEAR+1 #define EFFECT_MINDLINK EFFECT_PHANTOMEYE+1 #define EFFECT_DOMINATION EFFECT_MINDLINK+1 #define EFFECT_THOUGHTBLADE EFFECT_DOMINATION+1 #define EFFECT_MINDCRUSH EFFECT_THOUGHTBLADE+1 #define EFFECT_DEATHDREAM EFFECT_MINDCRUSH+1 #define EFFECT_MINDSHIELD EFFECT_DEATHDREAM+1 #define EFFECT_SLEEP EFFECT_MINDSHIELD+1 #define EFFECT_BERSERK EFFECT_SLEEP+1 #define EFFECT_MINDCLEAR EFFECT_BERSERK+1 /* Apportation */ #define EFFECT_TELEPORT EFFECT_MINDCLEAR+1 #define EFFECT_SUMMON EFFECT_TELEPORT+1 #define EFFECT_SUCCOR EFFECT_SUMMON+1 #define EFFECT_BANISH EFFECT_SUCCOR+1 #define EFFECT_DISRUPTDOOR EFFECT_BANISH+1 #define EFFECT_PHASEDOOR EFFECT_DISRUPTDOOR+1 #define EFFECT_PHASEWALK EFFECT_PHASEDOOR+1 #define EFFECT_PHANTOMPOCKET EFFECT_PHASEWALK+1 #define EFFECT_WATERWALK EFFECT_PHANTOMPOCKET+1 #define EFFECT_TELETRACK EFFECT_WATERWALK+1 #define EFFECT_RECALL EFFECT_TELETRACK+1 #define EFFECT_MARK EFFECT_RECALL+1 #define EFFECT_TRANSLOCATE EFFECT_MARK+1 /* Spirit */ #define EFFECT_SPIRITWALK EFFECT_TRANSLOCATE+1 #define EFFECT_SENSELIFE EFFECT_SPIRITWALK+1 #define EFFECT_SEEINVISIBLE EFFECT_SENSELIFE+1 #define EFFECT_LUCKSHIELD EFFECT_SEEINVISIBLE+1 #define EFFECT_IDENTIFY EFFECT_LUCKSHIELD+1 #define EFFECT_STAT EFFECT_IDENTIFY+1 #define EFFECT_LUCKYHITS EFFECT_STAT+1 #define EFFECT_LUCKYDAMAGE EFFECT_LUCKYHITS+1 /* Pyrokinetic */ #define EFFECT_BURNINGFIST EFFECT_LUCKYDAMAGE+1 #define EFFECT_FLAMESTRIKE EFFECT_BURNINGFIST+1 #define EFFECT_INCINERATE EFFECT_FLAMESTRIKE+1 #define EFFECT_IGNITE EFFECT_INCINERATE+1 #define EFFECT_HEATSHIELD EFFECT_IGNITE+1 #define EFFECT_FIREBLADE EFFECT_HEATSHIELD+1 #define EFFECT_FIRESHIELD EFFECT_FIREBLADE+1 #define EFFECT_FIREARMOR EFFECT_FIRESHIELD+1 /* Misc. */ #define EFFECT_REVITALIZE EFFECT_FIREARMOR+1 /* Targetting flags for effects */ #define TAR_NODEFAULT 1<<0 /* no default dont do anything without cmd str */ #define TAR_SELF_DEF 1<<1 /* you */ #define TAR_FIGHT_DEF 1<<2 /* what you are fighting */ #define TAR_GROUP_DEF 1<<3 /* the group (in the same location, and not you) */ #define TAR_NOTGROUP_DEF 1<<4 /* everything but your group */ #define TAR_NOTSELF_DEF 1<<5 /* everything but you */ #define TAR_MULTIPLE 1<<6 /* allow user to MassFireball all.orc */ #define TAR_PLR_ROOM 1<<7 /* player in the same room/inv */ #define TAR_PLR_WLD 1<<8 /* player anywhere */ #define TAR_MOB_ROOM 1<<9 /* mob in the same room/inv */ #define TAR_MOB_WLD 1<<10 /* mob anywhere */ #define TAR_OBJ_INV 1<<11 /* object in inventory but *NOT* in room */ #define TAR_OBJ_ROOM 1<<12 /* object in the same room but *NOT* in room */ #define TAR_OBJ_WLD 1<<13 /* object anywhere */ #define TAR_ON_WEAR 1<<14 /* apply to default when worn */ #define TAR_GROUPWLD_DEF 1<<15 /* the group (anywhere in the world, not you) */ #define TAR_AFFECT 1<<16 /* doesnt create an AFFECT structure, direct application */ #define EVENT_EFFECT 0 /* typically the You feel XXX message and then fall thru to EVENT_APPLY */ #define EVENT_UNEFFECT 1 /* typically the You feel less XXX message and then fall thru to EVENT_UNAPPLY */ #define EVENT_APPLY 2 /* if you build your own apply types then */ #define EVENT_UNAPPLY 3 /* I must be able to unapply and re-apply the effect for PlayerWrite */ #define EVENT_GROUP 4 #define EVENT_UNGROUP 5 #define EVENT_FREE 6 /* being free'd, so free up any custom structs */ #define EVENT_READ 7 /* chance to read custom data */ #define EVENT_WRITE 8 /* override write with custom data */ extern void EffectInit(void); extern LWORD Effect(WORD effect, FLAG tarFlag, THING *thing, BYTE *cmd, LWORD data); extern LWORD EffectFree(WORD effect, FLAG tarFlag, THING *thing, LWORD data); extern struct EffectListType effectList[]; extern INDEX tarIndex; extern EFFECTPROC(EffectUncoded); extern EFFECTPROC(EffectCellRepair); extern EFFECTPROC(EffectRefresh); extern EFFECTPROC(EffectEndurance); extern EFFECTPROC(EffectBreathwater); extern EFFECTPROC(EffectStrength); extern EFFECTPROC(EffectDarkvision); extern EFFECTPROC(EffectSlowPoison); extern EFFECTPROC(EffectCurePoison); extern EFFECTPROC(EffectPoison); extern EFFECTPROC(EffectHealMinor); extern EFFECTPROC(EffectRegeneration); extern EFFECTPROC(EffectHealMajor); extern EFFECTPROC(EffectDexterity); extern EFFECTPROC(EffectConstitution); extern EFFECTPROC(EffectHaste); extern EFFECTPROC(EffectQuench); extern EFFECTPROC(EffectSustenance); extern EFFECTPROC(EffectAcidtouch); extern EFFECTPROC(EffectPoisontouch); extern EFFECTPROC(EffectCrush); extern EFFECTPROC(EffectForcestorm); extern EFFECTPROC(EffectGhostfist); extern EFFECTPROC(EffectKineticShield); extern EFFECTPROC(EffectInvisibility); extern EFFECTPROC(EffectSlow); extern EFFECTPROC(EffectImprovedInvis); extern EFFECTPROC(EffectVacuumwalk); extern EFFECTPROC(EffectDomination); extern EFFECTPROC(EffectThoughtblade); extern EFFECTPROC(EffectMindcrush); extern EFFECTPROC(EffectDeathdream); extern EFFECTPROC(EffectMindshield); extern EFFECTPROC(EffectMindclear); extern EFFECTPROC(EffectBerserk); extern EFFECTPROC(EffectSummon); extern EFFECTPROC(EffectSuccor); extern EFFECTPROC(EffectPhasedoor); extern EFFECTPROC(EffectPhasewalk); extern EFFECTPROC(EffectPhantompocket); extern EFFECTPROC(EffectWaterwalk); extern EFFECTPROC(EffectTeletrack); extern EFFECTPROC(EffectRecall); extern EFFECTPROC(EffectMark); extern EFFECTPROC(EffectTranslocate); extern EFFECTPROC(EffectSpiritwalk); extern EFFECTPROC(EffectSenseLife); extern EFFECTPROC(EffectSeeinvisible); extern EFFECTPROC(EffectLuckshield); extern EFFECTPROC(EffectIdentify); extern EFFECTPROC(EffectStat); extern EFFECTPROC(EffectLuckyhits); extern EFFECTPROC(EffectLuckydamage); extern EFFECTPROC(EffectBurningfist); extern EFFECTPROC(EffectFlamestrike); extern EFFECTPROC(EffectIncinerate); extern EFFECTPROC(EffectHeatshield); extern EFFECTPROC(EffectFireblade); extern EFFECTPROC(EffectFireshield); extern EFFECTPROC(EffectFirearmor); extern EFFECTPROC(EffectRevitalize);