Код

// Treasure Hunting
// Barnabus [SphereServer]
[DEFNAME TreasureHunting]

RandomChestsLevel_1_4    {i_chest_metal 1}
RandomChestsLevel_5_8    {i_chest_wooden_brass 1 i_chest_metal_brass 1}
RandomChestsLevel_8_12    {i_chest_gargoyle 1 i_chest_rarewood 1}
RandomChestsLevel_13    {i_chest_wooden_finished 1}

SpawnChestLevel_1_MobsCount        1
SpawnChestLevel_1_MobsType        {c_dark_elf_grunt 1 c_dark_elf_macefighter 1 c_dark_elf_swordsman 1 c_dark_elf_elite_swordsman 1 c_dark_elf_axeman 1}
SpawnChestLevel_2_MobsCount        2
SpawnChestLevel_2_MobsType        {c_sprite_elf 1 c_sprte_elf_archer 1 c_sprite_elf_mage 1 c_sprite_elf_sorceress 1}
SpawnChestLevel_3_MobsCount        3
SpawnChestLevel_3_MobsType        {c_black_cat 1 c_h_witch_high 1 c_h_warlock 1 c_h_witch 1}
SpawnChestLevel_4_MobsCount        4
SpawnChestLevel_4_MobsType        {c_wood_elf_archer 1 c_wood_elf_elite_ranger 1 c_wood_elf_warrior 1 c_wood_elf_fighter 1 c_wood_elf_hunter 1 c_wood_elf_ranger 1}
SpawnChestLevel_5_MobsCount        5
SpawnChestLevel_5_MobsType        {c_evilmage 1 c_evilmage 1 c_theophilus 1}
SpawnChestLevel_6_MobsCount        6
SpawnChestLevel_6_MobsType        {c_savage_shaman 1 c_savage_warrior_female 1 c_savage_warrior_male 1}
SpawnChestLevel_7_MobsCount        7
SpawnChestLevel_7_MobsType        {c_meer_captain 1 c_meer_eternal 1 c_meer_mage 1 c_meer_warrior 1}
SpawnChestLevel_8_MobsCount        8
SpawnChestLevel_8_MobsType        {c_minotaur 1 c_tormented_minotaur 1 c_minotaur_Captain 1 c_minotaur_scout 1}
SpawnChestLevel_9_MobsCount        9
SpawnChestLevel_9_MobsType        {c_ratman 1 c_ratman_archer 1 c_ratman_w_mage 1 c_ratman_w_sword 1}
SpawnChestLevel_10_MobsCount    10
SpawnChestLevel_10_MobsType        {c_scorpion_king 1 c_scorpion_prince 1 c_scorpion_queen 1 c_scorpion_thrall 1}
SpawnChestLevel_11_MobsCount    11
SpawnChestLevel_11_MobsType        {c_terathan_avenger 1 c_terathan_drone 1 c_terathan_matriarch 1 c_terathan_warrior 1}
SpawnChestLevel_12_MobsCount    12
SpawnChestLevel_12_MobsType        {c_reaper_redux 1 c_treefellow 1 c_reaper 1}
SpawnChestLevel_13_MobsCount    13
SpawnChestLevel_13_MobsType        {c_yomotsu_elder 1 c_yomutsu_warrior 1 c_yomotsu_priest 1}

[FUNCTION f_DigUpTreasureChestHere] // Arguements (MapLvl), (Position)
ANIM 20
SFX 1230
IF <ARGV[0]> < 5
    SERV.NEWITEM=RandomChestsLevel_1_4
ELIF <ARGV[0]> < 9
    SERV.NEWITEM=RandomChestsLevel_5_8
ELIF <ARGV[0]> < 13
    SERV.NEWITEM=RandomChestsLevel_8_12
ELSE
    SERV.NEWITEM=RandomChestsLevel_13
ENDIF
NEW.P=<P>
NEW.TYPE=t_container_locked
NEW.EFFECT 2,03728,3,20
LOCAL.RandomX=<R1,4>
LOCAL.RandomY=<R1,4>
LOCAL.Counter=0
WHILE (<EVAL <LOCAL.Counter>> < <EVAL SpawnChestLevel_8_MobsCount>)
    LOCAL.Counter=<EVAL <LOCAL.Counter>+1>
    SERV.NEWNPC SpawnChestLevel_8_MobsType
    LOCAL.RandomX1=<EVAL <P.X>+<LOCAL.RandomX>>
    LOCAL.RandomY1=<EVAL <P.Y>+<LOCAL.RandomY>>
    LOCAL.RandomX2=<EVAL <P.X>-<LOCAL.RandomX>>
    LOCAL.RandomY2=<EVAL <P.Y>-<LOCAL.RandomY>>
    LOCAL.RandomX=<R<LOCAL.RandomX2>,<LOCAL.RandomX1>>
    LOCAL.RandomY=<R<LOCAL.RandomY2>,<LOCAL.RandomY1>>
    NEW.P=<EVAL <LOCAL.RandomX>>,<EVAL <LOCAL.RandomY>> //,<EVAL <P.Z>+2>
    NEW.HOME=<EVAL <LOCAL.RandomX>>,<EVAL <LOCAL.RandomY>> //,<EVAL <P.Z>+2>
    NEW.HOMEDIST=50
    NEW.GO=<EVAL <LOCAL.RandomX>>,<EVAL <LOCAL.RandomY>> //,<EVAL <P.Z>+2>
    SAY <LOCAL.X> New <NEW.NAME> Location <NEW.P>
    NEW.UPDATE
    NEW.ATTACK <UID>
ENDWHILE

// ----------------------------------------------------------------------------------------
[FUNCTION f_SpawnATreasureChest]
LOCAL.FoundALocation=0
WHILE (!<LOCAL.FoundALocation>)
    LOCAL.PosX=<EVAL RAND(0,5119)>
    LOCAL.PosY=<EVAL RAND(0,4095)>
    SERV.NEWITEM=i_gold
    LOCAL.TempUID=<NEW.UID>
    NEW.P=<EVAL <LOCAL.PosX>>,<EVAL <LOCAL.PosY>>
    IF (!<SERV.UID.<LOCAL.TempUID>.ISNEARTYPE t_tree 1>) && (<SERV.UID.<LOCAL.TempUID>.ISNEARTYPE t_grass 1>) && (!<SERV.UID.<LOCAL.TempUID>.REGION.GUARDED>) && (<SERV.UID.<LOCAL.TempUID>.REGION.TYPE>!=t_multi) && (<SERV.UID.<LOCAL.TempUID>.REGION.TYPE>!=t_multi_custom)
        LOCAL.FoundALocation=1
        LOCAL.LocationFound=<NEW.P>
        LOCAL.LocationX=<NEW.P.X>
        LOCAL.LocationY=<NEW.P.Y>
        LOCAL.LocationZ=<NEW.P.Z>
    ENDIF
    SERV.UID.<LOCAL.TempUID>.REMOVE
ENDWHILE

// ----------------------------------------------------------------------------------------
[ITEMDEF i_DigWithSpade]
DEFNAME=i_DigWithSpade
ID=i_shovel
NAME=I am digging
TYPE=t_eq_script
LAYER=layer_special

ON=@Create
    ATTR=attr_newbie|attr_decay|attr_move_never
    TAG.UseCount=1
    TIMERD=1

ON=@TIMER
    LOCAL.MaxUseCount=<EVAL 15 - <CONT.CARTOGRAPHY>/100>
    IF ((<EVAL <CONT.CTAG.SpadeStartPosX>>!=<CONT.P.X>) || (<EVAL <CONT.CTAG.SpadeStartPosY>>!=<CONT.P.Y>) || (<EVAL <CONT.CTAG.SpadeStartPosZ>>!=<CONT.P.Z>))
        CONT.CTAG.SpadeStartPosX=
        CONT.CTAG.SpadeStartPosY=
        CONT.CTAG.SpadeStartPosZ=
        REMOVE
        RETURN 1
    ENDIF
    DORAND 2
        CONT.ANIM 7
        CONT.ANIM 8
    ENDDO
    DORAND 5
        CONT.SFX 945
        CONT.SFX 946
        CONT.SFX 947
        CONT.SFX 948
        CONT.SFX 949
    ENDDO
    IF (STRMATCH(*t_normal*,<SERV.MAP(<CONT.P.X>,<CONT.P.Y>,<MAP>).TYPE>))
        CONT.SYSMESSAGE @154,,1 You dig in the ground
    ELIF (STRMATCH(*t_dirt*,<SERV.MAP(<CONT.P.X>,<CONT.P.Y>,<MAP>).TYPE>))
        CONT.SYSMESSAGE @154,,1 You dig in the dirt
    ELIF (STRMATCH(*t_grass*,<SERV.MAP(<CONT.P.X>,<CONT.P.Y>,<MAP>).TYPE>))
        CONT.SYSMESSAGE @154,,1 You dig up the grass
    ELIF (STRMATCH(*t_water*,<SERV.MAP(<CONT.P.X>,<CONT.P.Y>,<MAP>).TYPE>))
        CONT.SYSMESSAGE @154,,1 You try digging in the water but its useless!
        CONT.CTAG.SpadeStartPosX=
        CONT.CTAG.SpadeStartPosY=
        CONT.CTAG.SpadeStartPosZ=
        REMOVE
        RETURN 1
    ELSE
        CONT.SYSMESSAGE @154,,1 You cant dig in <SERV.MAP(<CONT.P.X>,<CONT.P.Y>,<MAP>).TYPE>
        CONT.CTAG.SpadeStartPosX=
        CONT.CTAG.SpadeStartPosY=
        CONT.CTAG.SpadeStartPosZ=
        REMOVE
        RETURN 1
    ENDIF
    IF <EVAL <TAG.UseCount>> > <EVAL <LOCAL.MaxUseCount>>
        REF1=<CONT.UID>
        LOCAL.Discovered=0
        FORCONT <REF1.FINDLAYER.21.UID> 10
            IF (STRMATCH(*i_TreasureMapLevel*,<BASEID>))
                IF ((<EVAL <TAG.TreasureLocationX>>=<REF1.P.X>) && (<EVAL <TAG.TreasureLocationY>>=<REF1.P.Y>) && (<EVAL <TAG.TreasureLocationZ>>=<REF1.P.Z>))
                    LOCAL.MapInUseUID=<UID>
                    LOCAL.Discovered=1
                    REF1.SFX 1230
                ENDIF
            ENDIF
        ENDFOR
        IF <EVAL <LOCAL.Discovered>> > 0
            REF1.EMOTE pull something out of the ground
            SERV.UID.<LOCAL.MapInUseUID>.COLOR=63
            REF1.f_DigUpTreasureChestHere <SERV.UID.<LOCAL.MapInUseUID>.TAG.MapLevel>, <SERV.UID.<LOCAL.MapInUseUID>.TAG.TreasureLocation>
            SERV.UID.<LOCAL.MapInUseUID>.TAG.TreasureLocationX=
            SERV.UID.<LOCAL.MapInUseUID>.TAG.TreasureLocationY=
            SERV.UID.<LOCAL.MapInUseUID>.TAG.TreasureLocationZ=
            SERV.UID.<LOCAL.MapInUseUID>.TAG.MapLevel=
        ELSE
            REF1.SAY @55 There does not seem to be anything here
        ENDIF
        REMOVE
        RETURN 1
    ELSE
        TAG.UseCount=<EVAL <TAG.UseCount>+1>
        TIMER=1
    ENDIF
    RETURN 1
    
// ----------------------------------------------------------------------------------------

[ITEMDEF i_spade]
DEFNAME=i_spade
ID=i_shovel
NAME=Spade
TYPE=t_spade
WEIGHT=0.1
VALUE=1
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=Spade

ON=@Create
    COLOR=0038d
    TAG.Uses=<R8,20>
    
// ----------------------------------------------------------------------------------------

[ITEMDEF i_map_treasure]
ID=i_map
NAME=An Old Treasure Map
TYPE=t_map
ON=@DClick
    REMOVE
    NEWITEM=RandomTMap,1,<UID>

RandomTMap {i_TreasureMapLevel_1 1 i_TreasureMapLevel_2 1 i_TreasureMapLevel_3 1 i_TreasureMapLevel_4 1 i_TreasureMapLevel_5 1 i_TreasureMapLevel_6 1 i_TreasureMapLevel_7 1}

[ITEMDEF i_TreasureMapLevel_1]
ID=i_map
NAME=Treasure Map Level 1
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 1

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=1

[ITEMDEF i_TreasureMapLevel_2]
ID=i_map
NAME=Treasure Map Level 2
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 2

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=2

[ITEMDEF i_TreasureMapLevel_3]
ID=i_map
NAME=Treasure Map Level 3
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 3

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=3

[ITEMDEF i_TreasureMapLevel_4]
ID=i_map
NAME=Treasure Map Level 4
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 4

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=4

[ITEMDEF i_TreasureMapLevel_5]
ID=i_map
NAME=Treasure Map Level 5
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 5

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=5

[ITEMDEF i_TreasureMapLevel_6]
ID=i_map
NAME=Treasure Map Level 6
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 6

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=6

[ITEMDEF i_TreasureMapLevel_7]
ID=i_map
NAME=Treasure Map Level 7
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 7

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=7

[ITEMDEF i_TreasureMapLevel_8]
ID=i_map
NAME=Treasure Map Level 8
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 8

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=8

[ITEMDEF i_TreasureMapLevel_9]
ID=i_map
NAME=Treasure Map Level 9
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 9

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=9

[ITEMDEF i_TreasureMapLevel_10]
ID=i_map
NAME=Treasure Map Level 10
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 10

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=10

[ITEMDEF i_TreasureMapLevel_11]
ID=i_map
NAME=Treasure Map Level 11
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 11

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=11

[ITEMDEF i_TreasureMapLevel_12]
ID=i_map
NAME=Treasure Map Level 12
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 12

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=12

[ITEMDEF i_TreasureMapLevel_13]
ID=i_map
NAME=Treasure Map Level 13
TYPE=t_map
RESOURCES=i_map_blank
SKILLMAKE=CARTOGRAPHY 100.0
TEVENTS=t_TreasureMap
CATEGORY=AncientRealms
SUBSECTION=TreasureHunting
DESCRIPTION=MapLevel 13

ON=@Create
    MORE1=0
    MORE2=0144f0fff
    TAG.MapLevel=13

// ----------------------------------------------------------------------------------------
[TYPEDEF t_TreasureMap]

ON=@DClick
    IF !<TAG.MapDeciphered>
        SRC.CTAG.TreasureMapUID=<UID>
        LOCAL.MapDifficulty=<EVAL <TAG.MapLevel> * 10 >
        LOCAL.SkillBonus=<EVAL <SRC.CARTOGRAPHY> / 10>
        LOCAL.IntBonus=<EVAL <SRC.INT> / 10>
        LOCAL.PlayersLuck=<EVAL <SRC.LUCK> / 10>
        LOCAL.LawsOfAvergages=<R1,<LOCAL.SkillBonus>>
        LOCAL.PlayersLuck=<R<LOCAL.LawsOfAvergages>,<EVAL <LOCAL.PlayersLuck> + <LOCAL.IntBonus> + <LOCAL.SkillBonus>>>
        SRC.SYSMESSAGE @,,1 The map requires <EVAL <LOCAL.MapDifficulty>>% cartograpy.
        IF <EVAL <LOCAL.PlayersLuck>> > <EVAL <LOCAL.MapDifficulty>-1>
            LOCAL.PassedBy=<EVAL <LOCAL.PlayersLuck>-<LOCAL.MapDifficulty>>
            SRC.SYSMESSAGE @,,1 You successfully decipher the map passing the requirement by <EVAL <LOCAL.PassedBy>>%
            SRC.SFX 1468
            LOCAL.LocationX=0
            LOCAL.LocationY=0
            LOCAL.LocationZ=0
            LOCAL.LocationFound=0
            CALL f_SpawnATreasureChest
            TAG.TreasureLocationX=<LOCAL.LocationX>
            TAG.TreasureLocationY=<LOCAL.LocationY>
            TAG.TreasureLocationZ=<LOCAL.LocationZ>
            TAG.TreasureLocation=<LOCAL.LocationFound>
            //------ Rescale Width    5195 - 505 factor 10.29
            //------ Rescale Length 4095 - 500 factor 8.19
            TAG.TreasureLocationX1=<EVAL (((<LOCAL.LocationX>*100000) / 1029) / 1000)>
            TAG.TreasureLocationY1=<EVAL (((<LOCAL.LocationY>*100000) / 819)  / 1000)>
            PIN=<EVAL <TAG.TreasureLocationX1>>,<EVAL <TAG.TreasureLocationY1>>
            IF <SRC.FINDID.i_sextant>
                SERV.UID.<SRC.FINDID.i_sextant.UID>.NAME=Treasure <EVAL <TAG.TreasureLocationX>> <EVAL <TAG.TreasureLocationY>> <EVAL <TAG.TreasureLocationZ>>
                SERV.UID.<SRC.FINDID.i_sextant.UID>.TAG.TargetPosition=<TAG.TreasureLocation>
                SRC.SYSMESSAGE @0095,,1 The target has been set in your sextant
                SRC.ARROWQUEST=0
            ELSE
                SRC.SYSMESSAGE @0029,,1 You need a sextant to get a target
            ENDIF
            IF <SRC.ISGM>
                SRC.GO <EVAL <LOCAL.LocationX>>,<EVAL <LOCAL.LocationY>>,<EVAL <LOCAL.LocationZ>>
            ENDIF
            SRC.SYSMESSAGE @,,1 The Map Coordinates Read (<EVAL <LOCAL.LocationX>>,<EVAL <LOCAL.LocationY>>,<EVAL <LOCAL.LocationZ>>)
            TAG.MapDeciphered=1
        ELSE
            LOCAL.FailedBy=<EVAL <LOCAL.MapDifficulty>-<LOCAL.PlayersLuck>>
            SRC.EMOTE look confused
            SRC.SYSMESSAGE @0029,,1 You fail to decipher the map falling short of the required ability by <EVAL <LOCAL.FailedBy>>%
            RETURN 1
        ENDIF
    ELSE
        SRC.SYSMESSAGE @0052,,1 This map has been deciphered
        IF <SRC.FINDID.i_sextant>
            SERV.UID.<SRC.FINDID.i_sextant.UID>.NAME=Treasure <EVAL <TAG.TreasureLocationX>> <EVAL <TAG.TreasureLocationY>> <EVAL <TAG.TreasureLocationZ>>
            SRC.ARROWQUEST=0
            SRC.SYSMESSAGE @0095,,1 The target has been set in your sextant
            SERV.UID.<SRC.FINDID.i_sextant.UID>.TAG.TargetPosition=<TAG.TreasureLocation>
        ELSE
            SRC.SYSMESSAGE @0029,,1 You need a sextant to get a target
        ENDIF
        RETURN 0
    ENDIF
            
// ----------------------------------------------------------------------------------------
[TYPEDEF t_sextant]
ON=@DClick
    IF <TAG.TargetPosition>
        SRC.SYSMESSAGE @55,,1 This sextant has been set to coords <TAG.TargetPosition>
        If !<SRC.TAG.ArrowQuest>
            SERV.NEWITEM=i_gold
            LOCAL.TempUID=<NEW.UID>
            NEW.P=<TAG.TargetPosition>
            SRC.SYSMESSAGE @55,,1 You turn on the Sextant set to coords <TAG.TargetPosition>
            SRC.SYSMESSAGE @64,,1 Target is located in <SERV.UID.<LOCAL.TempUID>.REGION.NAME>
            SERV.UID.<LOCAL.TempUID>.REMOVE
            SRC.TAG.ArrowQuest=1
            SRC.ARROWQUEST <TAG.TargetPosition>
            RETURN 1
        ELSE
            SRC.SYSMESSAGE @55,,1 You turn off the sextant
            SRC.TAG.ArrowQuest=
            SRC.ARROWQUEST=0
            RETURN 0
        ENDIF
    ELSE
        SRC.SYSMESSAGE @55,,1 This sextant is not set.
        NAME=Sextant
        SRC.TAG.ArrowQuest=
        SRC.ARROWQUEST=0
        RETURN 0
    ENDIF
    
// ----------------------------------------------------------------------------------------
[TYPEDEF t_spade]
ON=@DClick
    SRC.CTAG.SpadeStartPosX=<SRC.P.X>
    SRC.CTAG.SpadeStartPosY=<SRC.P.Y>
    SRC.CTAG.SpadeStartPosZ=<SRC.P.Z>
    TAG.Uses=<TAG.Uses>-1
    IF <EVAL <TAG.Uses>> < 1
        SRC.SYSMESSAGE @154,,1 The Spade has broken!
        SRC.EFFECT=3,037C4,6,15,1
        SOUND=SND_SPELL_MAGIC_UNTRAP
        REMOVE
        RETURN 1
    ENDIF
    SERV.NEWITEM i_DigWithSpade,1,<SRC.UID>
    NEW.LINK=<SRC.UID>
    NEW.TIMERD=1
    RETURN 1


[EOF]