//This controls "anonymous curses" and "alter egos". [ITEMDEF i_potion_hyde] ID=0efc TYPE=t_normal NAME=Hyde's Brew ON=@DClick IF !(0) //No ego; create one. SRC.AnonCurse SRC.SaveEgo ELSEIF (0) SRC.RemoveAnon ELSE SRC.RestoreEgo ENDIF SRC.ANIM 20 SRC.BARK 4 RETURN 1 [FUNCTION SaveEgo] TAG.EGONAME= TAG.EGOKARMA= TAG.EGOFAME= TAG.EGOCOLOR= TAG.EGOBODY= TAG.EGOHAIR=0 TAG.EGOBEARD=0 TAG.EGOHAIRCOLOR=0 TAG.EGOBEARDCOLOR=0 TAG.EGOTITLE= TAG.EGOHAT=<FINDLAYER.layer_helm.ID> TAG.EGOHATATTR=<FINDLAYER.layer_helm.ATTR> TAG.EGOHATCOLOR=<FINDLAYER.layer_helm.COLOR> TAG.EGOSHIRT=<FINDLAYER.layer_shirt.ID> TAG.EGOSHIRTATTR=<FINDLAYER.layer_shirt.ATTR> TAG.EGOSHIRTCOLOR=<FINDLAYER.layer_shirt.COLOR> TAG.EGOPANTS=<FINDLAYER.layer_pants.ID> TAG.EGOPANTSATTR=<FINDLAYER.layer_pants.ATTR> TAG.EGOPANTSCOLOR=<FINDLAYER.layer_pants.COLOR> TAG.EGOSHOES=<FINDLAYER.layer_SHOES.ID> TAG.EGOSHOESATTR=<FINDLAYER.layer_SHOES.ATTR> TAG.EGOSHOESCOLOR=<FINDLAYER.layer_SHOES.COLOR> TAG.EGOTUNIC=<FINDLAYER.layer_TUNIC.ID> TAG.EGOTUNICATTR=<FINDLAYER.layer_TUNIC.ATTR> TAG.EGOTUNICCOLOR=<FINDLAYER.layer_TUNIC.COLOR> TAG.EGOSKIRT=<FINDLAYER.layer_SKIRT.ID> TAG.EGOSKIRTATTR=<FINDLAYER.layer_SKIRT.ATTR> TAG.EGOSKIRTCOLOR=<FINDLAYER.layer_SKIRT.COLOR> TAG.EGOROBE=<FINDLAYER.layer_ROBE.ID> TAG.EGOROBEATTR=<FINDLAYER.layer_ROBE.ATTR> TAG.EGOROBECOLOR=<FINDLAYER.layer_ROBE.COLOR> SRC.SYSMESSAGE Alter ego saved. SFX snd_spell_mark [FUNCTION RemoveEgo] IF ((0<TAG.ANON>)&&(0<ARGN> != 1)) SRC.SYSMESSAGE You must not be in the form of your alter ego when removing it. Pass "1" to override. RETURN 1 ENDIF TAG.EGONAME= TAG.EGOKARMA= TAG.EGOFAME= TAG.EGOCOLOR= TAG.EGOBODY= TAG.EGOHAIR= TAG.EGOBEARD= TAG.EGOHAIRCOLOR= TAG.EGOBEARDCOLOR= TAG.EGOTITLE= TAG.EGOHAT= TAG.EGOHATATTR= TAG.EGOHATCOLOR= TAG.EGOSHIRT= TAG.EGOSHIRTATTR= TAG.EGOSHIRTCOLOR= TAG.EGOPANTS= TAG.EGOPANTSATTR= TAG.EGOPANTSCOLOR= TAG.EGOSHOES= TAG.EGOSHOESATTR= TAG.EGOSHOESCOLOR= TAG.EGOTUNIC= TAG.EGOTUNICATTR= TAG.EGOTUNICCOLOR= TAG.EGOSKIRT= TAG.EGOSKIRTATTR= TAG.EGOSKIRTCOLOR= TAG.EGOROBE= TAG.EGOROBEATTR= TAG.EGOROBECOLOR= [FUNCTION RestoreEgo] removeanon //Get rid of any anon curse they may have. TAG.ANON=1 TAG.ANONNAME=<NAME> TAG.ANONKARMA=<KARMA> TAG.ANONFAME=<FAME> TAG.ANONCOLOR=<OSKIN> TAG.ANONBODY=<OBODY> TAG.ANONHAIR=0<FINDLAYER.layer_hair.ID> TAG.ANONBEARD=0<FINDLAYER.layer_beard.ID> TAG.ANONHAIRCOLOR=0<FINDLAYER.layer_hair.COLOR> TAG.ANONBEARDCOLOR=0<FINDLAYER.layer_beard.COLOR> TAG.ANONTITLE=<TITLE> NAME = <TAG.EGONAME> KARMA = <TAG.EGOKARMA> FAME = <TAG.EGOFAME> OSKIN = <TAG.EGOCOLOR> COLOR = <OSKIN> OBODY = <TAG.EGOBODY> BODY = <OBODY> FINDLAYER.layer_hair.REMOVE FINDLAYER.layer_beard.REMOVE IF (0<TAG.EGOHAIR>) NEWITEM <TAG.EGOHAIR> EQUIP <ACT.UID> ACT.COLOR=<TAG.EGOHAIRCOLOR> ENDIF IF (0<TAG.EGOBEARD>) NEWITEM <TAG.EGOBEARD> EQUIP <ACT.UID> ACT.COLOR=<TAG.EGOBEARDCOLOR> ENDIF TITLE = <TAG.EGOTITLE> FINDLAYER.layer_shirt.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_pants.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_robe.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_shoes.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_helm.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_gloves.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_tunic.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_cape.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_skirt.CONT=<FINDLAYER.layer_pack.UID> IF (0<TAG.EGOHAT>) NEWITEM <TAG.EGOHAT> ACT.COLOR=<TAG.EGOHATCOLOR> ACT.ATTR=<TAG.EGOHATATTR> TAG.NEWHAT=<ACT.UID> EQUIP <ACT.UID> ENDIF IF (0<TAG.EGOROBE>) NEWITEM <TAG.EGOROBE> ACT.COLOR=<TAG.EGOROBECOLOR> ACT.ATTR=<TAG.EGOROBEATTR> TAG.NEWROBE=<ACT.UID> EQUIP <ACT.UID> ENDIF IF (0<TAG.EGOSHIRT>) NEWITEM <TAG.EGOSHIRT> ACT.COLOR=<TAG.EGOSHIRTCOLOR> ACT.ATTR=<TAG.EGOSHIRTATTR> TAG.NEWTOP=<ACT.UID> EQUIP <ACT.UID> ENDIF IF (0<TAG.EGOPANTS>) NEWITEM <TAG.EGOPANTS> ACT.COLOR=<TAG.EGOPANTSCOLOR> ACT.ATTR=<TAG.EGOPANTSATTR> TAG.NEWPANTS=<ACT.UID> EQUIP <ACT.UID> ENDIF IF (0<TAG.EGOSHOES>) NEWITEM <TAG.EGOSHOES> ACT.COLOR=<TAG.EGOSHOESCOLOR> ACT.ATTR=<TAG.EGOSHOESATTR> TAG.NEWSHOES=<ACT.UID> EQUIP <ACT.UID> ENDIF IF (0<TAG.EGOTUNIC>) NEWITEM <TAG.EGOTUNIC> ACT.COLOR=<TAG.EGOTUNICCOLOR> ACT.ATTR=<TAG.EGOTUNICATTR> TAG.NEWTUNIC=<ACT.UID> EQUIP <ACT.UID> ENDIF IF (0<TAG.EGOSKIRT>) NEWITEM <TAG.EGOSKIRT> ACT.COLOR=<TAG.EGOSKIRTCOLOR> ACT.ATTR=<TAG.EGOSKIRTATTR> TAG.NEWSKIRT=<ACT.UID> EQUIP <ACT.UID> ENDIF UPDATE SYSMESSAGE You are now <NAME>. SFX snd_spell_incognito [FUNCTION anoncurse] SPELLEFFECT s_dispel, 100.0 TAG.ANON=1 TAG.ANONNAME=<NAME> TAG.ANONKARMA=<KARMA> TAG.ANONFAME=<FAME> TAG.ANONCOLOR=<OSKIN> TAG.ANONBODY=<OBODY> TAG.ANONHAIR=0<FINDLAYER.layer_hair.ID> TAG.ANONBEARD=0<FINDLAYER.layer_beard.ID> TAG.ANONHAIRCOLOR=0<FINDLAYER.layer_hair.COLOR> TAG.ANONBEARDCOLOR=0<FINDLAYER.layer_beard.COLOR> TAG.ANONTITLE=<TITLE> BODY={c_man 1 c_woman 1} OBODY=<BODY> KARMA={-10000 10000} FAME={0 10000} DORAND 6 TITLE=the Farmer TITLE=the Peasant TITLE=the Wheelwright TITLE=the Innkeeper TITLE=the Stablehand TITLE=the Beggar ENDDO COLOR=colors_skin OSKIN=<COLOR> FINDLAYER.layer_hair.REMOVE FINDLAYER.layer_beard.REMOVE FINDLAYER.layer_shirt.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_pants.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_robe.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_shoes.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_helm.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_gloves.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_tunic.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_cape.CONT=<FINDLAYER.layer_pack.UID> FINDLAYER.layer_skirt.CONT=<FINDLAYER.layer_pack.UID> NEWITEM random_hats ACT.ATTR=attr_newbie|attr_move_never ACT.COLOR=colors_neutral TAG.NEWHAT=<ACT.UID> EQUIP <ACT.UID> NEWITEM random_footwear ACT.ATTR=attr_newbie|attr_move_never ACT.COLOR=colors_neutral TAG.NEWSHOES=<ACT.UID> EQUIP <ACT.UID> IF (<CAN> & mt_female) NAME=#NAMES_HUMANFEMALE NEWITEM random_female_tops ACT.ATTR=attr_newbie|attr_move_never ACT.COLOR=colors_neutral TAG.NEWTOP=<ACT.UID> EQUIP <ACT.UID> NEWITEM random_female_pants ACT.ATTR=attr_newbie|attr_move_never ACT.COLOR=colors_neutral TAG.NEWPANTS=<ACT.UID> EQUIP <ACT.UID> NEWITEM random_female_hair EQUIP <ACT.UID> ACT.COLOR=colors_hair ELSE NAME=#NAMES_HUMANMALE NEWITEM random_male_tops ACT.ATTR=attr_newbie|attr_move_never ACT.COLOR=colors_neutral TAG.NEWTOP=<ACT.UID> EQUIP <ACT.UID> NEWITEM random_male_pants ACT.ATTR=attr_newbie|attr_move_never ACT.COLOR=colors_neutral TAG.NEWPANTS=<ACT.UID> EQUIP <ACT.UID> NEWITEM random_male_hair EQUIP <ACT.UID> ACT.COLOR=colors_hair IF (RAND(2) == 1) NEWITEM random_facial_hair EQUIP <ACT.UID> ACT.COLOR=colors_hair ENDIF ENDIF UPDATE SYSMESSAGE You have been cursed! SFX snd_spell_incognito [FUNCTION removeanon] IF ((0<EVAL <TAG.ANON>> != 1)&&(0<ARGN> != 1)) // SRC.SYSMESSAGE Target is not anon-cursed. Pass the "1" argument to override. RETURN 1 ENDIF TAG.ANON= NAME=<TAG.ANONNAME> TAG.ANONNAME= OBODY=<TAG.ANONBODY> TAG.ANONBODY= BODY=<OBODY> OSKIN=<TAG.ANONCOLOR> COLOR=<OSKIN> TAG.ANONCOLOR= FAME=<TAG.ANONFAME> TAG.ANONFAME= KARMA=<TAG.ANONKARMA> TAG.ANONKARMA= FINDLAYER.layer_hair.REMOVE FINDLAYER.layer_beard.REMOVE NEWITEM <HVAL <TAG.ANONHAIR>> ACT.COLOR <TAG.ANONHAIRCOLOR> EQUIP <ACT.UID> TAG.ANONHAIR= TAG.ANONHAIRCOLOR= ACT=0 NEWITEM <HVAL <TAG.ANONBEARD>> ACT.COLOR <TAG.ANONBEARDCOLOR> EQUIP <ACT.UID> TAG.ANONBEARD= TAG.ANONBEARDCOLOR= TITLE=<TAG.ANONTITLE> TAG.ANONTITLE= IF (0<TAG.NEWHAT>) TRYP 0 UID.<TAG.NEWHAT>.REMOVE ENDIF IF (0<TAG.NEWSHOES>) TRYP 0 UID.<TAG.NEWSHOES>.REMOVE ENDIF IF (0<TAG.NEWTOP>) TRYP 0 UID.<TAG.NEWTOP>.REMOVE ENDIF IF (0<TAG.NEWPANTS>) TRYP 0 UID.<TAG.NEWPANTS>.REMOVE ENDIF IF (0<TAG.NEWROBE>) TRYP 0 UID.<TAG.NEWROBE>.REMOVE ENDIF IF (0<TAG.NEWSKIRT>) TRYP 0 UID.<TAG.NEWSKIRT>.REMOVE ENDIF IF (0<TAG.NEWTUNIC>) TRYP 0 UID.<TAG.NEWTUNIC>.REMOVE ENDIF TAG.NEWHAT= TAG.NEWSHOES= TAG.NEWTOP= TAG.NEWPANTS= TAG.NEWROBE= TAG.NEWSKIRT= TAG.NEWTUNIC= EQUIPARMOR UPDATE SFX snd_spell_cure SYSMESSAGE The curse has been lifted. [EVENTS e_lycanthrope] ON=@Death IF (<ACT.ISEVENT.e_lycanthrope>) //Killing a lycanthrope cures lycanthropy. ACT.LYCANTHROPE ENDIF ON=@Hit IF ((!<SRC.NPC>)&&(!<SRC.ISEVENT.e_lycanthrope>)&&(RAND(10) == 1)) SRC.LYCANTHROPE <TAG.EGOBODY> ENDIF ON=@EnvironChange IF ((0<TAG.ANON> == 0)&&(<SECTOR.ISNIGHTTIME>)) IF (<NPC>) KARMA={-1000 -100} ENDIF RestoreEgo IF (0<TAG.EGOSTATCHANGE>) FLAGS=<FLAGS>|statf_war NPC=brain_animal BARK 1 TAG.STRCHANGE=<STR> STR=<EVAL (<STR> * 15) / 10> HITS=<EVAL (<HITS> * 15) / 10> TAG.STRCHANGE=<EVAL <STR> - <TAG.STRCHANGE>> TAG.DEXCHANGE=<DEX> DEX=<EVAL <DEX> * 2> STAM=<EVAL <STAM> * 2> TAG.DEXCHANGE=<EVAL <DEX> - <TAG.DEXCHANGE>> //This is the negative of the change, since Sphere has issues with signed representations. TAG.INTCHANGE=<INT> INT=<EVAL <INT> / 5> MANA=<EVAL <MANA> / 5> TAG.INTCHANGE=<EVAL <TAG.INTCHANGE> - <INT>> TAG.OLDRESIST=<MAGICRESISTANCE> MAGICRESISTANCE=0.0 ENDIF ELSEIF ((0<TAG.ANON>==1)&&(!<SECTOR.ISNIGHTTIME>)) RemoveAnon IF (<NPC>) IF (((<RESCOUNT i_memory> < 2)&&(<MEMORYFINDTYPE.memory_ispawned>))||(<RESCOUNT i_memory> < 1)) KARMA={100 1000} ENDIF FLAGS=<FLAGS> &~ statf_war NPC=<EVAL <TAG.LYCBRAIN>> IF (<MEMORYFINDTYPE.memory_war_targ>) MEMORYFINDTYPE.memory_war_targ.REMOVE ENDIF EMOTE looks around, confused ACTION=-1 TIMER=5 ENDIF IF (0<TAG.EGOSTATCHANGE>) FLAGS=<FLAGS> &~ statf_war INT=<EVAL <INT> + <TAG.INTCHANGE>> MANA=<EVAL <MANA> * 5> DEX=<EVAL <DEX> - <TAG.DEXCHANGE>> STAM=<EVAL <STAM> / 2> STR=<EVAL <STR> - <TAG.STRCHANGE>> HITS=<EVAL (<HITS> * 10) / 15> MAGICRESISTANCE=<TAG.OLDRESIST> TAG.OLDRESIST= TAG.STRCHANGE= TAG.DEXCHANGE= TAG.INTCHANGE= ENDIF ENDIF [FUNCTION lycanthrope] IF (<ISEVENT.e_lycanthrope>) EVENTS=-e_lycanthrope IF (0<TAG.ANON> == 1) RemoveAnon IF (<NPC>) IF (((<RESCOUNT i_memory> < 2)&&(<MEMORYFINDTYPE.memory_ispawned>))||(<RESCOUNT i_memory> < 1)) KARMA={100 1000} ENDIF FLAGS=<FLAGS> &~ statf_war IF (<MEMORYFINDTYPE.memory_war_targ>) MEMORYFINDTYPE.memory_war_targ.REMOVE ENDIF NPC=<EVAL <TAG.LYCBRAIN>> EMOTE looks around, confused ACTION=-1 TIMER=5 ENDIF IF (0<TAG.EGOSTATCHANGE>) INT=<EVAL <INT> + <TAG.INTCHANGE>> MANA=<EVAL <MANA> * 5> DEX=<EVAL <DEX> - <TAG.DEXCHANGE>> STAM=<EVAL <STAM> / 2> STR=<EVAL <STR> - <TAG.STRCHANGE>> HITS=<EVAL (<HITS> * 10) / 15> MAGICRESISTANCE=<TAG.OLDRESIST> TAG.OLDRESIST= TAG.STRCHANGE= TAG.DEXCHANGE= TAG.INTCHANGE= TAG.EGOSTATCHANGE= ENDIF ENDIF SYSMESSAGE You feel like yourself again. TAG.INTCHANGE= RETURN 1 ENDIF IF !(0<TAG.EGOBODY>) //Give them the body of a wolf by default. TAG.EGOKARMA=<EVAL {-1000 -4000}> TAG.EGOFAME=4000 TAG.EGOCOLOR=0 IF (0<ARGS>) TAG.EGOBODY=<ARGS> ELSE TAG.EGOBODY=c_a_werewolf ENDIF IF (<NPC>) TAG.LYCBRAIN=<NPC> ENDIF TAG.EGONAME=<SERV.CHARDEF.<TAG.EGOBODY>.JOB> TAG.EGOHAIR=0 TAG.EGOBEARD=0 TAG.EGOTITLE=the Lycanthrope TAG.EGOSTATCHANGE=1 SYSMESSAGE Savage thoughts flit through your mind. ELSE SYSMESSAGE You feel... different, somehow. ENDIF EVENTS=+e_lycanthrope //TRIGGER @EnvironChange