[ITEMDEF i_gray] ID=01ea7 TYPE=t_eq_script LAYER=30 NAME=Gray Timer ON=@Create ATTR=attr_invis|attr_newbie|010 ON=@Timer IF >=1 CONT.CRIMINAL=0 CONT.TAG.USEDGRAY= CONT.SYSMESSAGE=You are no longer gray TIMER=3600 //One hour RETURN 1 ELSE REMOVE ENDIF RETURN 1 [FUNCTION gray2] IF () SYSMESSAGE You may not use this command again so soon. RETURN 1 ENDIF if ( & 002000000) if ( > = 0) MESSAGE You cannot remove a criminal flag this way RETURN 1 else CRIMINAL=0 TAG.USEDGRAY= SYSMESSAGE=You are no longer gray RETURN 1 endif else FLAGS=|002000000 TAG.USEDGRAY=1 NEWITEM i_gray ACT.CONT= ACT.TIMER=15 SYSMESSAGE=You are now gray RETURN 1 endif [FUNCTION gray] if ( & 002000000) if ( > = 0) MESSAGE You cannot remove a criminal flag this way RETURN 1 else CRIMINAL=0 TAG.USEDGRAY=0 SYSMESSAGE=You are no longer gray RETURN 1 endif else FLAGS=|statf_criminal // SFX=00f6 TAG.USEDGRAY=1 SYSMESSAGE=You are now gray RETURN 1 endif [FUNCTION grey] GRAY [FUNCTION runespeak] TAG.OLDFONT= FONT=8 SAY FONT= TAG.OLDFONT= [FUNCTION dupeskills] IF ( < 50) TRYP 0 SRC. <> dupeskills + 1 ENDIF [FUNCTION layerremove] IF (>) TRYP 0 FINDLAYER..REMOVE ENDIF [FUNCTION dupelayer] IF (>) TRYP 0 NEWITEM .BASEID> TRYP 0 ACT.DISPID .DISPID> TRYP 0 ACT.COLOR .COLOR> ACT.CONT ACT.UPDATE ENDIF [FUNCTION iamyou] IF () SRC.SYSMESSAGE This only works on characters. RETURN 1 ELIF ( == ) SRC.SYSMESSAGE You can\'t use this on yourself. RETURN 1 ENDIF SRC.NAME SRC.BODY SRC.OBODY SRC.COLOR SRC.OSKIN SRC.KARMA SRC.FAME SRC.KILLS SRC.STR SRC.DEX SRC.INT SRC.HITS SRC.STAM SRC.MANA SRC.TITLE SRC.UPDATE IF (<SRC.MEMORYFINDTYPE.memory_guild>) SRC.MEMORYFINDTYPE.memory_guild.REMOVE ENDIF IF (<MEMORYFINDTYPE.memory_guild>) SRC.NEWITEM <MEMORYFINDTYPE.memory_guild.BASEID> SRC.ACT.ATTR <MEMORYFINDTYPE.memory_guild.ATTR> SRC.ACT.NAME <MEMORYFINDTYPE.memory_guild.NAME> SRC.ACT.COLOR <MEMORYFINDTYPE.memory_guild.COLOR> SRC.ACT.TYPE <MEMORYFINDTYPE.memory_guild.TYPE> SRC.ACT.MORE2 <MEMORYFINDTYPE.memory_guild.MORE2> SRC.ACT.MOREP <MEMORYFINDTYPE.memory_guild.MOREP> SRC.ACT.LINK <MEMORYFINDTYPE.memory_guild.LINK> SRC.ACT.CONT <SRC.UID> ENDIF dupeskills 0 SRC.PRIVSHOW 0 SRC.EVENTS -0 SRC.EVENTS <EVENTS> SRC.LAYERREMOVE layer_hand1 SRC.LAYERREMOVE layer_hand2 SRC.LAYERREMOVE layer_shoes SRC.LAYERREMOVE layer_pants SRC.LAYERREMOVE layer_shirt SRC.LAYERREMOVE layer_helm SRC.LAYERREMOVE layer_gloves SRC.LAYERREMOVE layer_ring SRC.LAYERREMOVE layer_light SRC.LAYERREMOVE layer_collar SRC.LAYERREMOVE layer_hair SRC.LAYERREMOVE layer_half_apron SRC.LAYERREMOVE layer_chest SRC.LAYERREMOVE layer_wrist SRC.LAYERREMOVE layer_beard SRC.LAYERREMOVE layer_tunic SRC.LAYERREMOVE layer_ears SRC.LAYERREMOVE layer_arms SRC.LAYERREMOVE layer_cape SRC.LAYERREMOVE layer_robe SRC.LAYERREMOVE layer_skirt SRC.LAYERREMOVE layer_legs SRC.LAYERREMOVE layer_horse DUPELAYER layer_hand1 DUPELAYER layer_hand2 DUPELAYER layer_shoes DUPELAYER layer_pants DUPELAYER layer_shirt DUPELAYER layer_helm DUPELAYER layer_gloves DUPELAYER layer_ring DUPELAYER layer_light DUPELAYER layer_collar DUPELAYER layer_hair DUPELAYER layer_half_apron DUPELAYER layer_chest DUPELAYER layer_wrist DUPELAYER layer_beard DUPELAYER layer_tunic DUPELAYER layer_ears DUPELAYER layer_arms DUPELAYER layer_cape DUPELAYER layer_robe DUPELAYER layer_skirt DUPELAYER layer_legs DUPELAYER layer_horse [FUNCTION summonplayer] SFX 526 NEWITEM i_moongate_black ACT.ATTR=012 ACT.P=<P> ACT.MOVE w ACT.COLOR=01d9 ACT.MOREP=<SRC.P> ACT.NAME=<ARGS> ACT.SAY You are being summoned to <ARGS>! ACT.TIMER=60 [FUNCTION inviseffect] INVIS EFFECT <ARGS> [EVENTS e_protectfromhits] //ON=@GetHit //ATTACK //IF (<NPC>==4) //SAY <REGION.NAME> shall not fall to the likes of thee! //ENDIF //RETURN 1 //ON=@SpellEffect //HITS=<HITS>+100 //IF (<NPC>==4) //SAY <REGION.NAME> shall not fall to the likes of thee! //ENDIF ON=@SpellCast MANA=<INT> ON=@NPCSeeNewPlayer RETURN 1 ON=@Environchange IF (<eval <TAG.BINDX>> != 0) P=<eval <TAG.BINDX>>,<eval <TAG.BINDY>>,<eval <TAG.BINDZ>> ELSE P=<HOME> ENDIF UPDATE ON=@Hit FINDLAYER(2).MORE1L=<FINDLAYER(2).MORE1H> ON=@Death HITS=<STR> RETURN 1 [ITEMDEF i_scroll_healing_wind] ID=i_scroll_resurrection NAME=Healing Wind Scroll TYPE=t_normal VALUE=200 ON=@Create ATTR=020 ON=@DClick IF (<SRC.MANA> < 55) SRC.SYSMESSAGE You do not have enough mana to cast this spell RETURN 1 ELSE SRC.MANA=<SRC.MANA> + {-55 -35} SRC.SAY In Mani Hur SRC.ANIM 17 ATTR=<ATTR>|attr_invis P=<SRC.P> LINK=<SRC.UID> TIMERd=17 RETURN 1 ENDIF ON=@Timer LINK.HEALWIND <LINK.MAGERY> IF (<AMOUNT> > 1) AMOUNT=<AMOUNT>+(-1) CONT=<LINK.FINDLAYER(layer_pack).UID> ATTR=<ATTR> &~ attr_invis ELSE REMOVE ENDIF RETURN 1 [FUNCTION HEALWIND] SECTOR.ALLCLIENTS SFX 498 SECTOR.ALLCLIENTS SPELLEFFECT 29, <ARGN> [ITEMDEF i_scroll_water_walk] ID=i_scroll_flamestrike NAME=Water Walk Scroll TYPE=t_eq_script VALUE=200 ON=@Create ATTR=020 ON=@DClick IF (<SRC.MANA> < 55) SRC.SYSMESSAGE You do not have enough mana to cast this spell RETURN 1 ELSE SRC.MANA=<SRC.MANA> + {-55 -35} SRC.SAY Rel Ylem SRC.ANIM 17 TAG.OLDAMOUNT=<AMOUNT> AMOUNT=1 ATTR=<ATTR>|attr_move_never|attr_invis P=1,1 LINK=<SRC.UID> SRC.TAG.WALKINGWATER=1 IF (<eval <TAG.OLDAMOUNT>> > 1) SRC.NEWITEM i_scroll_water_walk SRC.ACT.AMOUNT=<eval <TAG.OLDAMOUNT>> +(-1) SRC.ACT.CONT=<SRC.FINDLAYER(layer_pack).UID> TAG.OLDAMOUNT= ENDIF SRC.NEWITEM i_waterwalk SRC.ACT.LINK=<SRC.UID> SRC.ACT.ATTR=attr_move_never IF <SRC.ISGM> SRC.ACT.ATTR=<SRC.ACT.ATTR>|attr_invis ENDIF SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=1 SRC.NEWITEM i_waterwalk_s SRC.ACT.LINK=<SRC.UID> SRC.ACT.ATTR=attr_move_never IF <SRC.ISGM> SRC.ACT.ATTR=<SRC.ACT.ATTR>|attr_invis ENDIF SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=1 SRC.NEWITEM i_waterwalk_n SRC.ACT.LINK=<SRC.UID> SRC.ACT.ATTR=attr_move_never IF <SRC.ISGM> SRC.ACT.ATTR=<SRC.ACT.ATTR>|attr_invis ENDIF SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=1 SRC.NEWITEM i_waterwalk_e SRC.ACT.LINK=<SRC.UID> SRC.ACT.ATTR=attr_move_never IF <SRC.ISGM> SRC.ACT.ATTR=<SRC.ACT.ATTR>|attr_invis ENDIF SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=1 SRC.NEWITEM i_waterwalk_w SRC.ACT.LINK=<SRC.UID> SRC.ACT.ATTR=attr_move_never IF <SRC.ISGM> SRC.ACT.ATTR=<SRC.ACT.ATTR>|attr_invis ENDIF SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=1 SRC.NEWITEM i_waterwalk_sw SRC.ACT.LINK=<SRC.UID> SRC.ACT.ATTR=attr_move_never IF <SRC.ISGM> SRC.ACT.ATTR=<SRC.ACT.ATTR>|attr_invis ENDIF SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=1 SRC.NEWITEM i_waterwalk_nw SRC.ACT.LINK=<SRC.UID> SRC.ACT.ATTR=attr_move_never IF <SRC.ISGM> SRC.ACT.ATTR=<SRC.ACT.ATTR>|attr_invis ENDIF SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=1 SRC.NEWITEM i_waterwalk_se SRC.ACT.LINK=<SRC.UID> SRC.ACT.ATTR=attr_move_never IF <SRC.ISGM> SRC.ACT.ATTR=<SRC.ACT.ATTR>|attr_invis ENDIF SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=1 SRC.NEWITEM i_waterwalk_ne SRC.ACT.LINK=<SRC.UID> SRC.ACT.ATTR=attr_move_never IF <SRC.ISGM> SRC.ACT.ATTR=<SRC.ACT.ATTR>|attr_invis ENDIF SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=1 MORE1={ 180 300 } TIMERd=20 RETURN 1 ENDIF ON=@Timer IF (<MORE1>=0) LINK.TAG.WALKINGWATER= REMOVE ELSE MORE1=<MORE1>-1 TIMER=1 ENDIF RETURN 1 [ITEMDEF i_waterwalk] ID=i_floor_marble ON=@Step TRIGGER Timer ON=@Timer IF <eval <LINK.TAG.WALKINGWATER>>=0 REMOVE RETURN 1 ELSE P=<LINK.P> TIMERd=1 ENDIF RETURN 1 [ITEMDEF i_waterwalk_n] ID=i_floor_marble ON=@Step TRIGGER Timer ON=@Timer IF <eval <LINK.TAG.WALKINGWATER>>=0 REMOVE RETURN 1 ELSE P=<LINK.P> MOVE n TIMERd=1 ENDIF RETURN 1 [ITEMDEF i_waterwalk_s] ID=i_floor_marble ON=@Step TRIGGER Timer ON=@Timer IF <eval <LINK.TAG.WALKINGWATER>>=0 REMOVE RETURN 1 ELSE P=<LINK.P> MOVE s TIMERd=1 ENDIF RETURN 1 [ITEMDEF i_waterwalk_e] ID=i_floor_marble ON=@Step TRIGGER Timer ON=@Timer IF <eval <LINK.TAG.WALKINGWATER>>=0 REMOVE RETURN 1 ELSE P=<LINK.P> MOVE e TIMERd=1 ENDIF RETURN 1 [ITEMDEF i_waterwalk_w] ID=i_floor_marble ON=@Step TRIGGER Timer ON=@Timer IF <eval <LINK.TAG.WALKINGWATER>>=0 REMOVE RETURN 1 ELSE P=<LINK.P> MOVE w TIMERd=1 ENDIF RETURN 1 [ITEMDEF i_waterwalk_ne] ID=i_floor_marble ON=@Step TRIGGER Timer ON=@Timer IF <eval <LINK.TAG.WALKINGWATER>>=0 REMOVE RETURN 1 ELSE P=<LINK.P> MOVE ne TIMERd=1 RETURN 1 ENDIF RETURN 1 [ITEMDEF i_waterwalk_nw] ID=i_floor_marble ON=@Step TRIGGER Timer ON=@Timer IF <eval <LINK.TAG.WALKINGWATER>>=0 REMOVE RETURN 1 ELSE P=<LINK.P> MOVE nw TIMERd=1 ENDIF RETURN 1 [ITEMDEF i_waterwalk_se] ID=i_floor_marble ON=@Step TRIGGER Timer ON=@Timer IF <eval <LINK.TAG.WALKINGWATER>>=0 REMOVE RETURN 1 ELSE P=<LINK.P> MOVE se TIMERd=1 ENDIF RETURN 1 [ITEMDEF i_waterwalk_sw] ID=i_floor_marble ON=@Step TRIGGER Timer ON=@Timer IF <eval <LINK.TAG.WALKINGWATER>>=0 REMOVE RETURN 1 ELSE P=<LINK.P> MOVE sw TIMERd=1 ENDIF RETURN 1 [ITEMDEF i_scroll_haste] ID=i_scroll_earthquake NAME=Haste Scroll TYPE=t_eq_script VALUE=200 ON=@Create ATTR=020 ON=@DClick IF (<SRC.MANA> < 55) SRC.SYSMESSAGE You do not have enough mana to cast this spell RETURN 1 ENDIF TARGET Select Target RETURN 1 ON=@Targon_Char IF (<SRC.MANA> < 55) SRC.SYSMESSAGE You do not have enough mana to cast this spell RETURN 1 ENDIF IF (<SRC.GM> == 0) SRC.MANA=<SRC.MANA> + {-55 -35} SRC.SAY Uus Tym SRC.ANIM 17 ENDIF TAG.OLDAMOUNT=<AMOUNT> AMOUNT=1 ATTR=<ATTR>|attr_move_never|attr_invis P=<SRC.TARG.P> LINK=<SRC.TARG.UID> MORE1=0 TIMER=1 IF (<eval <TAG.OLDAMOUNT>> > 1) SRC.NEWITEM i_scroll_haste SRC.ACT.AMOUNT=<eval <TAG.OLDAMOUNT>> +(-1) SRC.ACT.CONT=<SRC.FINDLAYER(layer_pack).UID> TAG.OLDAMOUNT= ENDIF RETURN 1 ON=@Timer IF !(<LINK.ISCHAR>) LINK.TAG.HASTESCROLL= REMOVE ENDIF P=<LINK.P> IF (<MORE1>=0) //LINK.EFFECT 3,i_fx_sparkle_2,20,15 //LINK.SFX 486 MORE1={100 200} TIMERd=2 ELSEIF <MORE1>=1 LINK.TAG.HASTESCROLL= REMOVE ELSE MORE1 = <MORE1> - 1 LINK.TIMERd=0 TIMERd=1 ENDIF RETURN 1 [ITEMDEF i_scroll_slow] ID=i_scroll_earthquake NAME=Slow Scroll TYPE=t_eq_script VALUE=200 ON=@Create ATTR=020 ON=@DClick IF (<SRC.MANA> < 55) SRC.SYSMESSAGE You do not have enough mana to cast this spell RETURN 1 ENDIF TARGET Select Target RETURN 1 ON=@Targon_Char IF (<SRC.MANA> < 55) SRC.SYSMESSAGE You do not have enough mana to cast this spell RETURN 1 ELSE SRC.MANA=<SRC.MANA> + {-55 -35} SRC.SAY Des Tym SRC.ANIM 17 TAG.OLDAMOUNT=<AMOUNT> AMOUNT=1 ATTR=<ATTR>|attr_move_never|attr_invis P=<SRC.TARG.P> LINK=<SRC.TARG.UID> MORE1=0 TIMER=1 IF !(<SRC.TARG.FLAGS>&statf_criminal) IF !(<SRC.TARG.KILLS> > <SERV.MURDERMINCOUNT>) IF !(<SRC.TARG.KARMA> < -2999) SRC.CRIMINAL 1 ENDIF ENDIF ENDIF IF (<eval <TAG.OLDAMOUNT>> > 1) SRC.NEWITEM i_scroll_slow SRC.ACT.AMOUNT=<eval <TAG.OLDAMOUNT>> +(-1) SRC.ACT.CONT=<SRC.FINDLAYER(layer_pack).UID> TAG.OLDAMOUNT= ENDIF RETURN 1 ENDIF ON=@Timer IF !(<LINK.ID>) REMOVE ENDIF P=<LINK.P> IF <MORE1>=0 LINK.EFFECT 3,i_fx_glow2,1,35 LINK.SFX 470 MORE1={40 80} TIMERd=2 ELSEIF <MORE1>=1 REMOVE ELSE MORE1 = <MORE1> - 1 LINK.TIMER=2 TIMER=3 ENDIF RETURN 1 [ITEMDEF i_scroll_stop] ID=i_scroll_earthquake NAME=Stop Scroll TYPE=t_eq_script VALUE=200 ON=@Create ATTR=020 ON=@DClick //IF (<SRC.MANA> < 55) //SRC.SYSMESSAGE You do not have enough mana to cast this spell //RETURN 1 //ENDIF TARGET Select Target RETURN 1 ON=@Targon_Char //IF (<SRC.MANA> < 55) //SRC.SYSMESSAGE You do not have enough mana to cast this spell //RETURN 1 //ENDIF //SRC.MANA=<SRC.MANA> + {-55 -35} SRC.SAY An Tym SRC.ANIM 17 TAG.OLDAMOUNT=<AMOUNT> AMOUNT=1 ATTR=<ATTR>|attr_move_never|attr_invis P=<SRC.TARG.P> LINK=<SRC.TARG.UID> MORE1=0 TIMER=1 IF !(<SRC.TARG.FLAGS>&statf_criminal) IF !(<SRC.TARG.KILLS> > <SERV.MURDERMINCOUNT>) IF !(<SRC.TARG.KARMA> < -2999) SRC.CRIMINAL 1 ENDIF ENDIF ENDIF IF (<eval <TAG.OLDAMOUNT>> > 1) SRC.NEWITEM i_scroll_stop SRC.ACT.AMOUNT=<eval <TAG.OLDAMOUNT>> +(-1) SRC.ACT.CONT=<SRC.FINDLAYER(layer_pack).UID> TAG.OLDAMOUNT= ENDIF RETURN 1 ON=@Timer IF !(<LINK.ID>) REMOVE ENDIF P=<LINK.P> IF <MORE1>=0 LINK.EFFECT 3,i_fx_glow2,1,35 LINK.SFX 470 MORE1={75 90} TIMERd=2 ELSEIF <MORE1>=1 REMOVE ELSE MORE1 = <MORE1> - 1 LINK.TIMER=2 TIMERd=2 ENDIF RETURN 1 [FUNCTION f_roof_target] SRC.NEWITEM=i_gold VAR.ACT=<SRC.ACT.UID> SRC.ACT.P=<ARGS> SRC.LAST TRY UID.<VAR.ACT>.REMOVE VAR.ACT= [FUNCTION awardfame] IF <ARGN> < 50 SYSMESSAGE You have gained a small amount of fame. ELSEIF <ARGN> < 100 SYSMESSAGE You have gained a bit of fame. ELSEIF <ARGN> < 300 SYSMESSAGE You have gained some fame. ELSEIF <ARGN> < 500 SYSMESSAGE You have gained large amounts of fame. ELSE SYSMESSAGE You have gained huge amounts of fame. ENDIF FAME=<FAME>+<ARGN> [FUNCTION rprating] TAG.RPRATING=<ARGN> [FUNCTION randloc] IF (<ARGN> == 1) //Random Land NEWNPC c_man_invisible ACT.npcrandvalidlocation VAR.NPCCOORDX=<ACT.P.X> VAR.NPCCOORDY=<ACT.P.Y> VAR.NPCCOORDZ=<ACT.Z> ACT.REMOVE ELSEIF (<ARGN> == 2) //Random Water NEWNPC c_dolphin ACT.npcrandvalidlocation VAR.NPCCOORDX=<ACT.P.X> VAR.NPCCOORDY=<ACT.P.Y> VAR.NPCCOORDZ=<ACT.Z> ACT.REMOVE ELSEIF (<ARGN> == 3) //Random Dungeon NEWNPC c_man_invisible ACT.npcrandvalidlocation 1 VAR.NPCCOORDX=<ACT.P.X> VAR.NPCCOORDY=<ACT.P.Y> VAR.NPCCOORDZ=<ACT.Z> ACT.REMOVE ELSE VAR.NPCCOORDX=<eval rand(6142)> VAR.NPCCOORDY=<eval rand(4093)> VAR.NPCCOORDZ=20 ENDIF GO <eval <VAR.NPCCOORDX>>,<eval <VAR.NPCCOORDY>>,<eval <VAR.NPCCOORDZ>> VAR.NPCCOORDX= VAR.NPCCOORDY= VAR.NPCCOORDZ= [ITEMDEF i_memory_badclient] ID=i_memory LAYER=30 TYPE=t_eq_script NAME=Bad Client ON=@Timer CONT.DISCONNECT REMOVE RETURN 1 [ITEMDEF i_orb_moons] ID=i_crystal_ball TYPE=t_comm_crystal NAME=Orb of Moons ON=@DClick RETURN 1 ON=@Create SPEECH=orbmoons ATTR=attr_move_never|attr_magic TIMER=5*60 COLOR=018f ON=@Timer EMOTE flashes a brilliant white and is gone COLOR=0481 SFX 508 UPDATE DORAND 4 P=1419,1620,26 P=4291,1001,6 P=627,845,6 P=1567,2208,11 ENDDO COLOR=018f UPDATE TIMER=5*60 RETURN 1 [SPEECH orbmoons] ON=Mu //Compassion IF (<SRC.MANA> > 19) SRC.ANIM 17 SFX 526 SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=1857,873,-1 SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=20 SRC.MANA=<SRC.MANA>+(-20) SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=<SRC.P> SRC.ACT.P=1857,873,-1 SRC.ACT.SFX 526 SRC.ACT.TIMER=20 ELSE SRC.SYSMESSAGE Nothing happens... you don't seem to have the mana to use the orb. ENDIF ON=Ahm //Honesty IF (<SRC.MANA> > 19) SRC.ANIM 17 SFX 526 SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=4215,563,39 SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=20 SRC.MANA=<SRC.MANA>+(-20) SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=<SRC.P> SRC.ACT.P=4215,563,39 SRC.ACT.SFX 526 SRC.ACT.TIMER=20 ELSE SRC.SYSMESSAGE Nothing happens... you don't seem to have the mana to use the orb. ENDIF ON=Summ //Honor IF (<SRC.MANA> > 19) SRC.ANIM 17 SFX 526 SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=1729,3528,3 SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=20 SRC.MANA=<SRC.MANA>+(-20) SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=<SRC.P> SRC.ACT.P=1729,3528,3 SRC.ACT.SFX 526 SRC.ACT.TIMER=20 ELSE SRC.SYSMESSAGE Nothing happens... you don't seem to have the mana to use the orb. ENDIF ON=Lum //Humility IF (<SRC.MANA> > 19) SRC.ANIM 17 SFX 526 SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=4273,3702 SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=20 SRC.MANA=<SRC.MANA>+(-20) SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=<SRC.P> SRC.ACT.P=4273,3702 SRC.ACT.SFX 526 SRC.ACT.TIMER=20 ELSE SRC.SYSMESSAGE Nothing happens... you don't seem to have the mana to use the orb. ENDIF ON=Beh //Justice IF (<SRC.MANA> > 19) SRC.ANIM 17 SFX 526 SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=1301,641,16 SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=20 SRC.MANA=<SRC.MANA>+(-20) SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=<SRC.P> SRC.ACT.P=1301,641,16 SRC.ACT.SFX 526 SRC.ACT.TIMER=20 ELSE SRC.SYSMESSAGE Nothing happens... you don't seem to have the mana to use the orb. ENDIF ON=Cah //Sacrifice IF (<SRC.MANA> > 19) SRC.ANIM 17 SFX 526 SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=3354,299,9 SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=20 SRC.MANA=<SRC.MANA>+(-20) SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=<SRC.P> SRC.ACT.P=3354,299,9 SRC.ACT.SFX 526 SRC.ACT.TIMER=20 ELSE SRC.SYSMESSAGE Nothing happens... you don't seem to have the mana to use the orb. ENDIF ON=Om //Spirituality IF (<SRC.MANA> > 19) SRC.ANIM 17 SFX 526 SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=1602,2489,5 SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=20 SRC.MANA=<SRC.MANA>+(-20) SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=<SRC.P> SRC.ACT.P=1602,2489,5 SRC.ACT.SFX 526 SRC.ACT.TIMER=20 ELSE SRC.SYSMESSAGE Nothing happens... you don't seem to have the mana to use the orb. ENDIF ON=Ra //Valor IF (<SRC.MANA> > 19) SRC.ANIM 17 SFX 526 SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=2495,3930 SRC.ACT.P=<SRC.P> SRC.ACT.TIMER=20 SRC.MANA=<SRC.MANA>+(-20) SRC.NEWITEM i_moongate_blue SRC.ACT.ATTR 032 SRC.ACT.MOREP=<SRC.P> SRC.ACT.P=2495,3930 SRC.ACT.SFX 526 SRC.ACT.TIMER=20 ELSE SRC.SYSMESSAGE Nothing happens... you don't seem to have the mana to use the orb. ENDIF [SPEECH halloweenquest] ON=*Vas Por Corp In Ylem* SRC.NEWITEM i_moongate_blue SRC.ACT.COLOR=0455 SRC.ACT.ATTR=032 SRC.ACT.P=<SRC.REGION.P> //SRC.ACT.MOREX=<SRC.ACT.P.X> //SRC.ACT.MOREY=<SRC.ACT.P.Y> //SRC.ACT.MOREZ=<SRC.ACT.Z> //IF (<SRC.ACT.MAPPLANE> == 0) //SRC.ACT.MOREM=1 //ELSE //SRC.ACT.MOREM=0 //ENDIF SRC.ACT.TIMER=30 SRC.NEWNPC { c_zombie 1 c_skeleton 1 c_m_ghoul 1 c_m_ghost 1 c_m_wraith 1 c_liche 1 c_m_liche_lord 1 c_daemon 1 } SRC.ACT.P=<SRC.REGION.P> SRC.ACT.HOME=<SRC.REGION.P> SRC.ACT.HOMEDIST=5 SRC.ACT.FLAGS=<SRC.ACT.FLAGS>|statf_conjured SRC.NEWNPC { c_zombie 1 c_skeleton 1 c_m_ghoul 1 c_m_ghost 1 c_m_wraith 1 c_liche 1 c_m_liche_lord 1 c_daemon 1 } SRC.ACT.P=<SRC.REGION.P> SRC.ACT.HOME=<SRC.REGION.P> SRC.ACT.HOMEDIST=5 SRC.ACT.FLAGS=<SRC.ACT.FLAGS>|statf_conjured SRC.NEWNPC { c_zombie 1 c_skeleton 1 c_m_ghoul 1 c_m_ghost 1 c_m_wraith 1 c_liche 1 c_m_liche_lord 1 c_daemon 1 } SRC.ACT.P=<SRC.REGION.P> SRC.ACT.HOME=<SRC.REGION.P> SRC.ACT.HOMEDIST=5 SRC.ACT.FLAGS=<SRC.ACT.FLAGS>|statf_conjured SRC.NEWNPC { c_zombie 1 c_skeleton 1 c_m_ghoul 1 c_m_ghost 1 c_m_wraith 1 c_liche 1 c_m_liche_lord 1 c_daemon 1 } SRC.ACT.P=<SRC.REGION.P> SRC.ACT.HOME=<SRC.REGION.P> SRC.ACT.HOMEDIST=5 SRC.ACT.FLAGS=<SRC.ACT.FLAGS>|statf_conjured SRC.NEWNPC { c_zombie 1 c_skeleton 1 c_m_ghoul 1 c_m_ghost 1 c_m_wraith 1 c_liche 1 c_m_liche_lord 1 c_daemon 1 } SRC.ACT.P=<SRC.REGION.P> SRC.ACT.HOME=<SRC.REGION.P> SRC.ACT.HOMEDIST=5 SRC.ACT.FLAGS=<SRC.ACT.FLAGS>|statf_conjured UPDATE ON=*An Rel Por In Corp Ylem* IF (<SRC.FINDID.i_crystal_ball.COLOR> == 0455) SRC.FINDID.i_crystal_ball.COLOR=0482 SRC.NEWITEM i_potion_lava SRC.ACT.ATTR=090 SRC.ACT.NAME=Pentagram SRC.ACT.P=<P> SRC.ACT.MORE2=2 SRC.ACT.LINK=<SRC.SERIAL> SRC.ACT.TIMER=1 EMOTE begins to rumble violently REMOVE UPDATE ELSE SAY There is silence... you remember that the book said something of an orb... ENDIF [ITEMDEF i_memory_wander] ID=i_memory TYPE=t_eq_script LAYER=30 NAME=NPC Wandering Memory ON=@Create ATTR=attr_invis|attr_move_never ON=@Timer //This code here to disable wandering NPCs REMOVE CONT.REMOVE RETURN 1 CONT.NEWNPC c_man_invisible CONT.ACT.npcrandvalidlocation CONT.HOME=<CONT.ACT.P> CONT.ACT.REMOVE TIMER={3600 7200} RETURN 1 [EVENTS e_enticed] ON=@EnvironChange IF (rand(<EVAL <TAG.ENTICEDSKILL>>) < rand(<EVAL <INT> * 10>) ACTION=-1 TAG.OLDACTION= TAG.ENTICEDSKILL= IF (rand(3)=1) DAMAGE 1 0 <EVAL <TAG.ENTICER>> ENDIF TAG.ENTICER= EVENTS=-e_enticed ELSE IF (<FIXACTION> != 064) ACTION=064 ENDIF ENDIF ON=@SkillStart IF (<FIXACTION> != 064) ACTION=064 ENDIF RETURN 0 [SPEECH serpentpillar1] ON=*sueacron* SRC.GO 2983, 2895, -5 [SPEECH serpentpillar2] ON=*doracron* SRC.GO 5973, 2702, -2 [ITEMDEF i_newincog] ID=i_rune_incognito TYPE=t_eq_script LAYER=30 NAME=Incognito ON=@Create ATTR=attr_invis|attr_move_never ON=@Timer CONT.NAME=<TAG.OLDNAME> CONT.COLOR=<EVAL <TAG.OLDCOLOR>> CONT.TITLE=<TAG.OLDTITLE> CONT.KARMA=<EVAL <TAG.OLDKARMA>> CONT.FAME=<EVAL <TAG.OLDFAME>> REMOVE RETURN 1 [ITEMDEF i_newpoly] ID=i_rune_polymorph TYPE=t_eq_script LAYER=30 NAME=Polymorph ON=@Create ATTR=attr_invis|attr_move_never ON=@Timer CONT.FINDID.i_rune_curse.REMOVE CONT.FINDID.i_rune_mass_curse.REMOVE CONT.FINDID.i_rune_feeblemind.REMOVE CONT.FINDID.i_rune_clumsy.REMOVE CONT.FINDID.i_rune_weaken.REMOVE CONT.FINDID.i_rune_bless.REMOVE CONT.FINDID.i_rune_strength.REMOVE CONT.FINDID.i_rune_agility.REMOVE CONT.FINDID.i_rune_cunning.REMOVE CONT.FINDID.i_statreset.REMOVE CONT.FLAGS=<CONT.FLAGS> &~ statf_polymorph CONT.NAME=<TAG.OLDNAME> CONT.OBODY=<EVAL <TAG.OLDOBODY>> CONT.BODY=<EVAL <TAG.OLDBODY>> CONT.FAME=<EVAL <TAG.OLDFAME>> CONT.KARMA=<EVAL <TAG.OLDKARMA>> CONT.STR=<EVAL <TAG.OLDSTR>> CONT.DEX=<EVAL <TAG.OLDDEX>> CONT.INT=<EVAL <TAG.OLDINT>> IF (<CONT.HITS> > <CONT.STR>) CONT.HITS=<CONT.STR> ENDIF IF (<CONT.STAM> > <CONT.DEX>) CONT.STAM=<CONT.DEX> ENDIF IF (<CONT.MANA> > <CONT.INT>) CONT.MANA=<CONT.INT> ENDIF CONT.COLOR=<EVAL <TAG.OLDCOLOR>> CONT.UPDATE CONT.BARK 3 REMOVE RETURN 1 [FUNCTION clothingrepair] IF !(<TYPE> = t_clothing) SRC.SYSMESSAGE Only clothing can be repaired by a tailor. RETURN 1 ENDIF IF (<MORE1L> >= <MORE1H>) SRC.SYSMESSAGE This item is already in full repair. RETURN 1 ENDIF IF (<SRC.RESCOUNT i_cloth> < <EVAL <WEIGHT> / 10>) SRC.SYSMESSAGE You require <EVAL <WEIGHT> / 10> cloth to repair this. RETURN 1 ENDIF IF (<ATTR> & 020) SRC.SYSMESSAGE The lore of repairing magical items is not yet known. Perhaps one day it will be. RETURN 1 ENDIF SFX 584 IF (rand(<SRC.TAILORING>) < rand(<EVAL <VALUE>*10>)) IF (rand(2) = 1) SRC.EMOTE damage the <NAME> MORE1H=<EVAL <MORE1H> +(<EVAL {-1 0}>)> MORE1L=<EVAL <MORE1L> +(-1)> DAMAGE 1 ELSE SRC.CONSUME <EVAL rand(<EVAL <WEIGHT> / 10>)> i_cloth SRC.EMOTE fail to repair the <NAME>. Some of the cloth is ruined. ENDIF ELSE SRC.EMOTE repair the <NAME> COLOR=0 MORE1L=<MORE1H> SRC.CONSUME <EVAL <WEIGHT> / 10> i_cloth ENDIF [ITEMDEF i_clothingrepair] ID=i_memory LAYER=30 TYPE=t_eq_script NAME=Clothing Repair Memory Item ON=@Create ATTR=attr_invis|attr_move_never ON=@Equip TIMER=60 TARGET What item do you want to repair? ON=@Targon_Item SRC.TARG.clothingrepair REMOVE RETURN 1 ON=@Timer REMOVE RETURN 1 [ITEMDEF i_failmacro] ID=i_memory LAYER=30 TYPE=t_eq_script NAME=Macro stat gain locker ON=@Create ATTR=attr_move_never|attr_invis ON=@Timer IF (<CONT.STR> > <MOREX>) CONT.STR=<MOREX> ENDIF IF (<CONT.INT> > <MOREY>) CONT.INT=<MOREY> ENDIF IF (<CONT.DEX> > <MOREZ>) CONT.DEX=<MOREZ> ENDIF REMOVE RETURN 1 [ITEMDEF i_vendor_timer] ID=i_memory NAME=Commission Based Vendor Timer TYPE=t_eq_script ON=@Create ATTR=attr_move_never|attr_invis MORE2=85 TIMER=1 ON=@Timer IF !(<CONT.MEMORYFINDTYPE.memory_ipet>) REMOVE RETURN 1 ENDIF IF !(<EVAL <TAG.OLDGOLD>>) TAG.OLDGOLD=0 ENDIF IF (<MORE1> = 0) //GM didn't set it explicitly. VAR.OLDACT=<CONT.ACT.UID> CONT.ACT=<CONT.REGION.UID> IF (<CONT.ACT.ISITEM>) IF (<CONT.ACT.TYPE> = t_multi) IF (<MORE2> != 93) MORE2=93 CONT.SAY I will now work for a 7% commission. ENDIF ELSEIF (<CONT.ACT.TYPE> = t_ship) IF (<MORE2> != 91) MORE2=91 CONT.SAY I will now work for a 9% commission. ENDIF ENDIF ELSE IF (<MORE2> != 85) MORE2=85 CONT.SAY I will now work for a 15% commission. ENDIF ENDIF CONT.ACT=<VAR.OLDACT> VAR.OLDACT= ENDIF IF (<CONT.FINDLAYER.layer_bankbox.MORE1> < 51) CONT.FINDLAYER.layer_bankbox.MORE1=<EVAL <CONT.FINDLAYER.layer_bankbox.MORE1>+1> TAG.OLDGOLD=<CONT.FINDLAYER.layer_bankbox.MORE1> ELSE IF (<EVAL <TAG.OLDGOLD>> < <CONT.FINDLAYER.layer_bankbox.MORE1>) //If more gold now than before, divide out the commission. VAR.GOLDCHANGE=<EVAL <CONT.FINDLAYER.layer_bankbox.MORE1> + <EVAL -1 * <TAG.OLDGOLD>>> VAR.GOLDCHANGE=<EVAL <VAR.GOLDCHANGE> / 100> VAR.GOLDCHANGE=<EVAL <VAR.GOLDCHANGE> * <EVAL <MORE2>>> IF !(<EVAL <TAG.OLDGOLD> + <VAR.GOLDCHANGE>> > <CONT.FINDLAYER.layer_bankbox.MORE1>) //But don't give them extra gold. CONT.FINDLAYER.layer_bankbox.MORE1=<EVAL <TAG.OLDGOLD> + <VAR.GOLDCHANGE>> ENDIF VAR.GOLDCHANGE= TAG.OLDGOLD=<CONT.FINDLAYER.layer_bankbox.MORE1> ELSEIF (<EVAL <TAG.OLDGOLD>+51> > <CONT.FINDLAYER.layer_bankbox.MORE1>) //If the change is more than 50, set the old amount to the amount held. TAG.OLDGOLD=<EVAL <CONT.FINDLAYER.layer_bankbox.MORE1>> ELSE //Otherwise, set the gold held to the old amount instead. CONT.FINDLAYER.layer_bankbox.MORE1=<EVAL <TAG.OLDGOLD>> ENDIF ENDIF TIMER=60 RETURN 1 [EVENTS e_lowerparry] ON=@SkillStart TRYP 0 SKILLLOCK.<EVAL <FIXACTION>> 1 RETURN 0 [ITEMDEF i_animal_sell] ID=i_memory TYPE=t_eq_script NAME=Sell an animal ON=@Create ATTR=attr_move_never|attr_invis ON=@Equip TARGET Choose the animal to sell TIMER=60 ON=@TARGON_ITEM SRC.SYSMESSAGE That is not an animal. REMOVE RETURN 1 ON=@TARGON_CHAR IF !(<SRC.TARG.ISMYPET>) LINK.SAY Are you tryin' to pull a fast one on me? This ain't your animal. REMOVE RETURN 1 ENDIF IF (<SRC.TARG.NPC> != brain_animal) LINK.SAY 'Fraid I have no use for <SRC.TARG.NAME>. REMOVE RETURN 1 ENDIF IF (<SRC.TARG.FLAGS> & statf_conjured) LINK.SAY This animal ain't real! REMOVE RETURN 1 ENDIF IF (<SRC.UID> = <SRC.TARG.UID>) LINK.SAY I'm not interested in slaves, jus' animals. REMOVE RETURN 1 ENDIF VAR.GOLDFORANIMAL=<EVAL <SRC.TARG.STR> + <SRC.TARG.INT> + <SRC.TARG.DEX>> VAR.GOLDFORANIMAL=<EVAL <VAR.GOLDFORANIMAL> + <EVAL -1*<SRC.TARG.MAXFOOD>>> VAR.GOLDFORANIMAL=<EVAL <VAR.GOLDFORANIMAL> + <SRC.TARG.FOOD>> IF (<SERV.ITEMDEF.<EVAL <SRC.TARG.ICON>>.VALUE> > 0) IF (<EVAL <VAR.GOLDFORANIMAL>> > <EVAL (<SERV.ITEMDEF.<EVAL <SRC.TARG.ICON>>.VALUE> * 85) / 100>) VAR.GOLDFORANIMAL=<EVAL (<SERV.ITEMDEF.<EVAL <SRC.TARG.ICON>>.VALUE> * 85) / 100> ENDIF ENDIF IF (<EVAL <VAR.GOLDFORANIMAL>> < 1) VAR.GOLDFORANIMAL=1 ENDIF IF (<EVAL <VAR.GOLDFORANIMAL>> > 5000) LINK.SAY 'Fraid I can't afford that animal. VAR.GOLDFORANIMAL= REMOVE RETURN 1 ENDIF LINK.SAY Hmm... here's <EVAL <VAR.GOLDFORANIMAL>> gold for <SRC.TARG.NAME>. CONT.NEWITEM i_gold CONT.ACT.AMOUNT=<EVAL <VAR.GOLDFORANIMAL>> CONT.ACT.CONT=<CONT.UID> SRC.TARG.REMOVE VAR.GOLDFORANIMAL= REMOVE RETURN 1 ON=@Timer LINK.SAY Yer' taking too long to choose, and I've better things to do than wait for ya. REMOVE RETURN 1 [ITEMDEF i_animal_stable] ID=i_memory TYPE=t_eq_script NAME=Stable an animal ON=@Create ATTR=attr_move_never|attr_invis ON=@Equip TARGET Choose the animal to stable TIMER=60 ON=@TARGON_ITEM SRC.SYSMESSAGE That is not an animal. REMOVE RETURN 1 ON=@TARGON_CHAR IF !(<SRC.TARG.ISMYPET>) LINK.SAY Are you tryin' to pull a fast one on me? This ain't your animal. REMOVE RETURN 1 ENDIF IF (<SRC.TARG.NPC> != brain_animal) LINK.SAY 'Fraid I'm not able to care for <SRC.TARG.NAME>. REMOVE RETURN 1 ENDIF IF (<SRC.TARG.FLAGS> & statf_conjured) LINK.SAY This animal ain't real, and there's no reason to stable it. REMOVE RETURN 1 ENDIF IF (<SRC.UID> = <SRC.TARG.UID>) LINK.SAY I'm not interested in slaves, jus' animals. REMOVE RETURN 1 ENDIF IF !(<SRC.RESTEST 50 i_gold>) LINK.SAY You don't have enough gold. REMOVE RETURN 1 ENDIF LINK.SAY <SRC.TARG.NAME>? Don't worry, I'll take good care of it. SRC.CONSUME 50 i_gold SRC.NEWITEM=i_deed_animal SRC.ACT.NAME=Deed to <SRC.TARG.NAME> SRC.ACT.TAG.ANIMALNAME=<SRC.TARG.NAME> SRC.ACT.TAG.ORIGINREGION=<LINK.REGION.NAME> SRC.ACT.TAG.ORIGINPX=<LINK.P.X> SRC.ACT.TAG.ORIGINPY=<LINK.P.Y> SRC.ACT.COLOR=<SRC.TARG.COLOR> SRC.ACT.MORE1=<SRC.TARG.ID> SRC.ACT.BOUNCE SRC.TARG.REMOVE REMOVE RETURN 1 ON=@Timer LINK.SAY Yer' taking too long to choose, and I've better things to do than wait for ya. REMOVE RETURN 1 [ITEMDEF i_animal_stable_retrieve] ID=i_memory TYPE=t_eq_script NAME=Retrieve an animal ON=@Create ATTR=attr_move_never|attr_invis ON=@Equip TARGET Choose the deed to show to the tamer. TIMER=60 ON=@TARGON_ITEM IF (<SRC.TARG.BASEID> != i_deed_animal) LINK.SAY This don't look like an animal deed to me. REMOVE RETURN 1 ENDIF SRC.NEWITEM i_gold SRC.ACT.ATTR=attr_invis|attr_decay SRC.ACT.P=<EVAL <SRC.TARG.TAG.ORIGINPX>>,<EVAL <SRC.TARG.TAG.ORIGINPY>> SRC.ACT.TIMER=5 IF (<SRC.ACT.DISTANCE> > 2000) LINK.SAY Yer' way too far from the stable you got this from. We don't have an animal like that here. SRC.ACT.REMOVE REMOVE RETURN 1 ENDIF SRC.ACT.REMOVE SRC.NEWITEM <SERV.ITEMDEF.<EVAL <SRC.TARG.MORE1>>.ICON> SRC.ACT.COLOR=<SRC.TARG.COLOR> SRC.ACT.NAME=<SRC.TARG.TAG.ANIMALNAME> SRC.ACT.LINK=<SRC.UID> SRC.ACT.MORE1=<SRC.TARG.MORE1> SRC.TARG.REMOVE SRC.ACT.P=<SRC.P> SRC.ACT.DCLICK LINK.SAY You take good care of it now... REMOVE RETURN 1 ON=@TARGON_CHAR SRC.SYSMESSAGE This is not an animal deed. REMOVE RETURN 1 [ITEMDEF i_deed_animal] ID=i_map_rolled TYPE=t_eq_script NAME=deed to an animal VALUE=50 ON=@DClick SRC.SYSMESSAGE Take that to an animal tamer near <TAG.ORIGINREGION> to claim <TAG.ANIMALNAME>. RETURN 1 [ITEMDEF i_memory_remove_trap] ID=i_memory TYPE=t_eq_script ON=@Create ATTR=attr_move_never|attr_invis ON=@Timer IF (RAND(<EVAL <CONT.REMOVETRAP> / 10>) > RAND(<LINK.MOREM>)) LINK.MOREZ=0 LINK.MOREM=0 LINK.SFX 496 LINK.EMOTE is untrapped ELSE LINK.EMOTE remains trapped ENDIF IF (<CONT.REMOVETRAP> < 100.0) IF (<CONT.REMOVETRAP> < 30.0) IF (rand(3)=1) CONT.REMOVETRAP=<CONT.REMOVETRAP> + {.1 .2} ENDIF ELSEIF (<CONT.REMOVETRAP> < 50.0) IF (rand(15)=1) CONT.REMOVETRAP=<CONT.REMOVETRAP> + .1 ENDIF ELSEIF (<CONT.REMOVETRAP> < 80.0) IF (rand(40)=1) CONT.REMOVETRAP=<CONT.REMOVETRAP> + .1 ENDIF ELSE IF (rand(60)=1) CONT.REMOVETRAP=<CONT.REMOVETRAP> + .1 ENDIF ENDIF ENDIF REMOVE RETURN 1 [ITEMDEF i_trap_kit_lesser] ID=i_toolkit NAME=Lesser Trap Kit TYPE=t_normal RESOURCES=10 i_gears, 10 i_hinge, 1 i_wire_iron SKILLMAKE=TINKERING 75.0,t_tinker_tools ON=@Create ATTR=attr_decay MORE1=34.0 ON=@DClick TARGET Choose the container you wish to trap. RETURN 1 ON=@Targon_Item IF ((<SRC.TARG.TYPE> = t_container)||(<SRC.TARG.TYPE> = t_container_locked)) SRC.TAG.TRAPKIT=<UID> SRC.SKILLMENU sm_trap ELSE SRC.SYSMESSAGE You can only trap containers. ENDIF RETURN 1 [ITEMDEF i_trap_kit] ID=i_toolkit NAME=Trap Kit TYPE=t_normal RESOURCES=15 i_gears, 15 i_hinge, 2 i_wire_iron, 2 i_wire_silver SKILLMAKE=TINKERING 85.0,t_tinker_tools ON=@Create ATTR=attr_decay MORE1=67.0 ON=@DClick TARGET Choose the container you wish to trap. RETURN 1 ON=@Targon_Item IF ((<SRC.TARG.TYPE> = t_container)||(<SRC.TARG.TYPE> = t_container_locked)) SRC.TAG.TRAPKIT=<UID> SRC.SKILLMENU sm_trap ELSE SRC.SYSMESSAGE You can only trap containers. ENDIF RETURN 1 [ITEMDEF i_trap_kit_greater] ID=i_toolkit NAME=Greater Trap Kit TYPE=t_normal RESOURCES=20 i_gears, 20 i_hinge, 4 i_wire_iron, 2 i_wire_silver, 4 i_wire_gold SKILLMAKE=TINKERING 95.0,t_tinker_tools ON=@Create ATTR=attr_decay MORE1=100.0 ON=@DClick TARGET Choose the container you wish to trap. RETURN 1 ON=@Targon_Item IF ((<SRC.TARG.TYPE> = t_container)||(<SRC.TARG.TYPE> = t_container_locked)) SRC.TAG.TRAPKIT=<UID> SRC.SKILLMENU sm_trap ELSE SRC.SYSMESSAGE You can only trap containers. ENDIF RETURN 1 [FUNCTION TRAPCONTAINER] VAR.OLDACT=<ACT.UID> ACT=<EVAL <TAG.TRAPKIT>> TAG.TRAPKIT= IF ((<ARGN> = 3)||(<ARGN> = 4)) IF (<ACT.BASEID> != i_trap_kit_greater) SYSMESSAGE You cannot create these two types of traps with anything but a greater kit. ACT=<EVAL <VAR.OLDACT>> VAR.OLDACT= RETURN 1 ENDIF ENDIF IF (<ARGN> = 5) IF (<ACT.BASEID> = i_trap_kit_lesser) SYSMESSAGE You cannot create a cold trap with a lesser trap kit. ACT=<EVAL <VAR.OLDACT>> VAR.OLDACT= RETURN 1 ENDIF ENDIF IF ((<SRC.TARG.TYPE> != t_container)&&(<SRC.TARG.TYPE> != t_container_locked)) SYSMESSAGE Only containers can be trapped. ACT=<EVAL <VAR.OLDACT>> VAR.OLDACT= RETURN 1 ENDIF SRC.TARG.MOREZ=<ARGN> SRC.TARG.MOREM=<EVAL (<ACT.MORE1>+<REMOVETRAP>) / 20> ACT.MORE2=<EVAL <ACT.MORE2>+1> IF (<ACT.MORE2> > 9) SRC.SYSMESSAGE Your trap kit has broken! ACT.REMOVE ENDIF SYSMESSAGE The container has been trapped. SRC.TARG.SFX 495 ACT=<EVAL <VAR.OLDACT>> VAR.OLDACT= [FUNCTION timersafe] IF (<TYPE> != t_corpse) TIMER=1 ENDIF [TYPEDEF t_moonstone] ON=@DClick IF (<TOPOBJ.UID> != <SRC.UID>) SRC.SYSMESSAGE This must be in your pack to use. RETURN 1 ENDIF SFX 486 EMOTE glows TARGET RETURN 1 ON=@Targon_Item IF (<SRC.TARG.TYPE> = t_moonstone) IF (<SRC.TARG.UID> = <LINK.UID>) LINK.COLOR=<COLOR> LINK.SFX 490 SFX 490 EMOTE reacts to its matching stone IF (<LINK.MORE1> != 0) LINK.NAME=Linked Active Moonstone ELSE LINK.NAME=Linked Moonstone ENDIF IF (<MORE1> != 0) NAME=Linked Active Moonstone ELSE NAME=Linked Moonstone ENDIF ELSE EMOTE doesn't react to the other moonstone ENDIF ENDIF IF (<SRC.TARG.UID> = <MORE1>) EMOTE reacts to the virtue stone COLOR={0483 048f} MORE1=0 SFX 489 IF (<LINK.COLOR> != <COLOR>) NAME=Active Moonstone ELSE NAME=Linked Active Moonstone ENDIF ENDIF IF (<SRC.TARG.UID> = <MORE2>) IF ((<MORE1> = 0)&&(<LINK.COLOR> = <COLOR>)) EMOTE fits perfectly into the hole. P=<SRC.TARG.P> ATTR=010 SRC.TARG.LINK.TYPE=t_telepad SRC.TARG.LINK.SFX 526 SFX 526 VAR.ADDFAME=<EVAL {500 1000}> IF (<EVAL <SRC.FAME>+<VAR.ADDFAME>> > 10000) SRC.FAME=10000 ELSE SRC.FAME=<EVAL <SRC.FAME>+<VAR.ADDFAME>> ENDIF SRC.SYSMESSAGE You have gained huge amounts of fame. IF (<SRC.TARG.MORE1> > 0) SRC.NEWITEM <SRC.TARG.MORE1> SRC.SYSMESSAGE You find a <SRC.ACT.NAME> in the hole! SRC.ACT.BOUNCE SRC.TARG.MORE1=0 ENDIF VAR.ADDFAME= ELSE EMOTE fits, but... nothing happens. The moonstone is inactive or unlinked. ENDIF ENDIF RETURN 1 [CHARDEF c_h_alchemist_travelling] NAME=#NAMES_HUMANMALE the Travelling Alchemist ID=c_man CAN=MT_EQUIP|MT_WALK|MT_SWIM|MT_FLY|MT_RUN|MT_USEHANDS DESIRES=i_gold,e_notoriety,t_magic AVERSIONS=t_TRAP,t_lavabomb,i_fx_field_fire,i_fx_field_fire_ns,i_fx_poison_field,i_fx_field_paralyze,t_eerie_stuff TSPEECH=spk_human_prime TSPEECH=jobalchemist TSPEECH=spk_shopkeep TSPEECH=spk_needs TSPEECH=spk_rehello TSPEECH=spk_human_default TEVENTS=e_Human_HearUnk TEVENTS=e_Human_ConvInit TEVENTS=e_Human_Greet TEVENTS=e_Human_Space TEVENTS=e_Human_Needs TEVENTS=e_Human_Refuse TEVENTS=e_Human_Environ ON=@Create NPC=brain_vendor COLOR=colors_skin STR={360 500} DEX={3600 5000} INT={510 650} ALCHEMY={75.0 100.0} TasteID={55.0 78.0} WRESTLING={15.0 38.0} MAGICRESISTANCE={25.0 48.0} TACTICS={15.0 38.0} POISONING={35.0 55.0} ITEMNEWBIE=random_male_hair COLOR=colors_hair ITEMNEWBIE=random_facial_hair COLOR=match_hair ON=@NPCRestock ITEM=RANDOM_LIGHT ITEM=i_shirt_plain COLOR=colors_all ITEM=random_pants COLOR=colors_all ITEM=i_robe COLOR=colors_red ITEM=random_shoes COLOR=colors_neutral ITEM=random_coin_purse SELL=VENDOR_S_ALCHEMIST SELL=i_mortar_pestle_copper SELL=i_mortar_pestle_glass SELL=i_mortar_pestle_silver BUY=VENDOR_B_ALCHEMIST ON=@NPCSeeNewPlayer SAY Good day, sir. Perhaps you wish to see my wares? I have some rather uncommon goods. Now if I could only find a diamond mortar, my inventory would be complete... CATEGORY=Civilized SUBSECTION=Tradesmen DESCRIPTION=Travelling Alchemist (male) [FUNCTION stuck] UNSTUCK <ARGN> [FUNCTION unstuck] FIX NEWNPC c_man_invisible ACT.P=<P> ACT.NAME=Stuck Checker ACT.isnpcstuck IF (<eval <ACT.TAG.STUCKCOUNTER>> != 0) //The player is stuck. Try raising the Z level. ACT.TAG.STUCKCOUNTER= ACT.NUDGEUP 20 ACT.isnpcstuck IF (<eval <ACT.TAG.STUCKCOUNTER>> == 0) SYSMESSAGE Resolved by raising Z-level. P=<ACT.P> ACT.REMOVE UPDATE RETURN 1 ENDIF ELSE ACT.MOVE n 3 ACT.isnpcstuck ACT.MOVE s 6 IF (<eval <ACT.TAG.STUCKCOUNTER>> == 1) SYSMESSAGE Resolved by moving one square south. MOVE s NUDGEUP 5 ACT.REMOVE RETURN 1 ELSE ACT.isnpcstuck ACT.MOVE n 3 IF (<eval <ACT.TAG.STUCKCOUNTER>> == 1) SYSMESSAGE Resolved by moving one square north. MOVE n NUDGEUP 5 ACT.REMOVE RETURN 1 ELSE SYSMESSAGE You don't appear to be stuck. ACT.REMOVE RETURN 1 ENDIF ENDIF ENDIF ACT.MOVEUNSTICK n ACT.MOVEUNSTICK ne ACT.MOVEUNSTICK nw ACT.MOVEUNSTICK w ACT.MOVEUNSTICK e ACT.MOVEUNSTICK s ACT.MOVEUNSTICK se ACT.MOVEUNSTICK sw ACT.MOVEUNSTICK 5,0 ACT.MOVEUNSTICK 0,5 ACT.MOVEUNSTICK 5,5 ACT.MOVEUNSTICK -5,5 ACT.MOVEUNSTICK 10,0 ACT.MOVEUNSTICK 0,10 ACT.MOVEUNSTICK 10,10 ACT.MOVEUNSTICK -10,10 IF (<eval <ACT.TAG.STUCKCOUNTER>> != 0) IF (<ARGN> != 1) SYSMESSAGE We can't unstick you conventionally. If you pass the "1" argument to this function, we'll teleport you to <REGION.NAME> (<REGION.P>). ELSE SYSMESSAGE Resolved by (last resort) teleportation to <REGION.NAME> (<REGION.P>). ACT.GO <REGION.P> ENDIF ELSE SYSMESSAGE Resolved by small movement. ENDIF P=<ACT.P> ACT.REMOVE UPDATE RETURN 1 [FUNCTION moveunstick] IF (<eval <TAG.STUCKCOUNTER>> == 0) RETURN 1 ENDIF TAG.OLDP=<P> MOVE <ARGS> TAG.STUCKCOUNTER= isnpcstuck IF (<eval <TAG.STUCKCOUNTER>> != 0) //Moving didn't unstick; move back. P=<TAG.OLDP> TAG.OLDP= ENDIF RETURN 0