//Trap system //v1.0 //by Rudenid //Sphere version: 55i //Installation difficulty: 6.5/10 //Dependencies: Fire memory item from new arrows script required for fire traps. //Add the event below to your players. //See the very end of the script for a skillmenu to add to sphereskill.scp [EVENTS e_player_traps] ON=@ItemDClick IF (( = t_container)||( = t_container_locked)) VAR.TRAPZ= VAR.TRAPM= VAR.OLDACT= IF !() ACT.MOREZ=0 ACT.MOREM=0 DOSWITCH > RETURN 0 BEGIN //MOREZ=1 - Explosion trap SRC.NEWITEM i_fx_explode SRC.ACT.TYPE=t_explosion SRC.ACT.MOREP=>,094,5 SRC.ACT.ATTR=attr_move_never SRC.ACT.P= SRC.ACT.TIMERd=1 END BEGIN //MOREZ=2 - Poison trap SRC.SFX 517 SRC.POISON * 20> * 40>}> END BEGIN //MOREZ=3 - Drain trap SRC.SFX 504 SRC.HITS=1 SRC.MANA=1 SRC.STAM=1 END BEGIN //MOREZ=4 - Fire trap SRC.SYSMESSAGE You were set on fire! SRC.NEWITEM i_fire_memory SRC.ACT.LINK= SRC.ACT.MORE2= / 10> SRC.ACT.EQUIP END BEGIN //MOREZ=5 - Cold trap SRC.DAMAGE * 12 / 10>,0284 SRC.NEWITEM i_fire_column SRC.ACT.ATTR=attr_magic|attr_move_never|attr_decay SRC.ACT.COLOR=0480 SRC.ACT.P= SRC.ACT.TIMER=3 END ENDDO ELSE DOSWITCH > RETURN 0 SYSMESSAGE is a trapped container. Type = Explosion, strength = >/100 SYSMESSAGE is a trapped container. Type = Poison, strength = >/100 SYSMESSAGE is a trapped container. Type = Drain SYSMESSAGE is a trapped container. Type = Fire, strength = >/100 SYSMESSAGE is a trapped container. Type = Cold, strength = >/100 ENDDO ENDIF SRC.ACT=> ENDIF ON=@SkillStart IF ((==48)||(==skill_remove_trap)) IF () FINDID.i_memory_remove_trap.REMOVE ENDIF IF (( = t_container)||( = t_container_locked)) IF (( > 0)&&( > 0)) IF ( / 10> < +(-20)>) SYSMESSAGE Your remove trap needs to be +(-20)> or higher to attempt this. ELSE VAR.OLDACT= NEWITEM i_memory_remove_trap ACT.LINK=> ACT.TIMER={1 3} ACT.EQUIP ACT=> VAR.OLDACT= RETURN 1 ENDIF ENDIF ENDIF ENDIF ON=@SpellCast IF ( = 13) IF (( != t_container)&&( != t_container_locked)) SRC.SYSMESSAGE You may only magic trap containers. ELSE ACT.MOREZ={1 5} ACT.MOREM=+) / 50> ACT.SFX 495 ENDIF RETURN 1 ENDIF IF ( = 14) IF (( != t_container)&&( != t_container_locked)) IF (( = t_trap_active)||( = t_trap)) ACT.TYPE=t_trap_inactive ACT.EMOTE is untrapped ELSE SRC.SYSMESSAGE You can only untrap containers or traps. ENDIF ELSE IF (( / 10> < )&&( / 10> < )) SRC.SYSMESSAGE Either your magery or your remove trap needs to be or higher to attempt this. RETURN 1 ENDIF IF ((RAND( / 10>) > RAND())&&(RAND( / 10>) > RAND())) ACT.MOREZ=0 ACT.MOREM=0 ACT.SFX 496 ACT.EMOTE is untrapped ELSE ACT.EMOTE remains trapped ENDIF RETURN 1 ENDIF ENDIF [ITEMDEF i_memory_remove_trap] ID=i_memory TYPE=t_eq_script ON=@Create ATTR=attr_move_never|attr_invis ON=@Timer IF (RAND( / 10>) > RAND()) LINK.MOREZ=0 LINK.MOREM=0 LINK.SFX 496 LINK.EMOTE is untrapped ELSE LINK.EMOTE remains trapped ENDIF IF ( < 100.0) IF ( < 30.0) IF (rand(3)=1) CONT.REMOVETRAP= + {.1 .2} ENDIF ELSEIF ( < 50.0) IF (rand(15)=1) CONT.REMOVETRAP= + .1 ENDIF ELSEIF ( < 80.0) IF (rand(40)=1) CONT.REMOVETRAP= + .1 ENDIF ELSE IF (rand(60)=1) 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 (( = t_container)||( = t_container_locked)) SRC.TAG.TRAPKIT= 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 (( = t_container)||( = t_container_locked)) SRC.TAG.TRAPKIT= 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 (( = t_container)||( = t_container_locked)) SRC.TAG.TRAPKIT= SRC.SKILLMENU sm_trap ELSE SRC.SYSMESSAGE You can only trap containers. ENDIF RETURN 1 [FUNCTION TRAPCONTAINER] VAR.OLDACT= ACT=> TAG.TRAPKIT= IF (( = 3)||( = 4)) IF ( != i_trap_kit_greater) SYSMESSAGE You cannot create these two types of traps with anything but a greater kit. ACT=> VAR.OLDACT= RETURN 1 ENDIF ENDIF IF ( = 5) IF ( = i_trap_kit_lesser) SYSMESSAGE You cannot create a cold trap with a lesser trap kit. ACT=> VAR.OLDACT= RETURN 1 ENDIF ENDIF IF (( != t_container)&&( != t_container_locked)) SYSMESSAGE Only containers can be trapped. ACT=> VAR.OLDACT= RETURN 1 ENDIF SRC.TARG.MOREZ= SRC.TARG.MOREM=+) / 20> ACT.MORE2=+1> IF ( > 9) SRC.SYSMESSAGE Your trap kit has broken! ACT.REMOVE ENDIF SYSMESSAGE The container has been trapped. SRC.TARG.SFX 495 ACT=> VAR.OLDACT= //This goes in sphereskill.scp. [SKILLMENU sm_trap] Traps ON=i_fire Explosion Trap TRAPCONTAINER 1 ON=i_skull_candle Poison Trap TRAPCONTAINER 2 ON=i_skull_candle Drain Trap TRAPCONTAINER 3 ON=i_fire Fire Trap TRAPCONTAINER 4 ON=i_rune_glowing_2 Cold Trap TRAPCONTAINER 5