|   Spear of Loki v1 1470  lvl: 43 | ID:     264 Author: Boekie Rarity: unique Status: Approved |  Specials: +50% damage (+1%/lvl)  Tricky Weapon Each attack there is a 15% chance the carrier gets stunned for 1 second. | Download Toggle Triggers On Attack 
                            
                                goldcost: -1000
                            
                                ONATTACK_chance: 1.0
                            
                                ONATTACK_chanceLevelAdd: 0.0
                            
                             function onAttack takes Item itm returns nothing
    local Tower twr = itm.getCarrier()
    if GetRandomReal(0, 1) < 0.15 / twr.getProp_TriggerChances() then
        call cb_stun.applyOnlyTimed(itm,twr,1)
    endif
endfunction | 
|   Spellbook of Item Mastery v1 1500  lvl: 44 | ID:     200 Author: Majildian Rarity: unique Status: Approved | Description: This spellbook contains a variety of spells for items.  Cast a Spell Casts one of these spells on attack: -Target drops a very high quality item -Two high quality items -Three normal quality items -Two low quality items and spellbook gains +10% item chance and item quality -Spellbook gains +25% item quality or item chance Cooldown of 15 waves. | Download Toggle Triggers Header 
                            
                                goldcost: 0
                            
                                 globals
        MultiboardValues Maj_spellbook
    endglobals    
    
    //Do not remove or rename this function!
    //Put your initialization tasks here, this function will be called on map init
    private function init takes nothing returns nothing
        set Maj_spellbook = MultiboardValues.create(3)
        call Maj_spellbook.setKey(0,"Waves Left")
        call Maj_spellbook.setKey(1,"Item Quality")
        call Maj_spellbook.setKey(2,"Item Chance")
    endfunctionOn Attack 
                            
                                goldcost: 1500
                            
                                ONATTACK_chance: 1.0
                            
                                ONATTACK_chanceLevelAdd: 0.0
                            
                             function onAttack takes Item itm returns nothing
local integer choose
local Creep target
local Tower tower
local Playor owner
if itm.userInt <= 0 then
    set tower = itm.getCarrier()
    set owner = itm.getOwner()
    set choose = GetRandomInt(1,6)
    if choose <= 4 then
        set target = Event.getTarget()
    endif
    if choose == 1 then
        call tower.modifyProperty(MOD_ITEM_QUALITY_ON_KILL, 1)
        call target.dropItem(tower,false)
        call tower.modifyProperty(MOD_ITEM_QUALITY_ON_KILL, -1)
        call owner.displayFloatingText("One Item",tower,0,0,255)
    elseif choose == 2 then
        call tower.modifyProperty(MOD_ITEM_QUALITY_ON_KILL, 0.5)
        call target.dropItem(tower,false)
        call target.dropItem(tower,false)
        call tower.modifyProperty(MOD_ITEM_QUALITY_ON_KILL, -0.5)
        call owner.displayFloatingText("Two Items",tower,0,0,255)
    elseif choose == 3 then
        call target.dropItem(tower,false)
        call target.dropItem(tower,false)
        call target.dropItem(tower,false)
        call owner.displayFloatingText("Three Items",tower,0,0,255)
    elseif choose == 4 then
        call tower.modifyProperty(MOD_ITEM_QUALITY_ON_KILL, -0.25)
        call target.dropItem(tower, false)
        call target.dropItem(tower, false)
        call tower.modifyProperty(MOD_ITEM_QUALITY_ON_KILL, 0.35)
        call tower.modifyProperty(MOD_ITEM_CHANCE_ON_KILL, 0.1)
        set itm.userReal = itm.userReal + 0.1
        set itm.userReal2 = itm.userReal2 + 0.1
        call owner.displayFloatingText("Two Items + Bonus!", tower, 0, 0, 255)
    elseif choose == 5 then
        call tower.modifyProperty(MOD_ITEM_CHANCE_ON_KILL,.25)
        set itm.userReal2 = itm.userReal2+0.25
        call owner.displayFloatingText("Item Chance",tower,0,255,0)
    elseif choose == 6 then
        call tower.modifyProperty(MOD_ITEM_QUALITY_ON_KILL,.25)
        set itm.userReal = itm.userReal+0.25
        call owner.displayFloatingText("Item Quality",tower,0,255,0)
    endif
    set itm.userInt = 15
endif
endfunctionOn Item Creation 
                            
                                goldcost: 0
                            
                             function onCreate takes Item itm returns nothing
    set itm.userInt = 0
    set itm.userInt2 = itm.getOwner().getTeam().getLevel()
    set itm.userReal = 0.00
    set itm.userReal2 = 0.00
endfunctionOn Item Drop 
                            
                                goldcost: 0
                            
                             function onDrop takes Item itm returns nothing
local Tower tower = itm.getCarrier()
call tower.modifyProperty(MOD_ITEM_QUALITY_ON_KILL, -itm.userReal)
call tower.modifyProperty(MOD_ITEM_CHANCE_ON_KILL, -itm.userReal2)
endfunctionOn Item Pickup 
                            
                                goldcost: 0
                            
                             function onPickup  takes Item itm returns nothing
    local Tower tower = itm.getCarrier()
    call tower.modifyProperty(MOD_ITEM_QUALITY_ON_KILL, itm.userReal)
    call tower.modifyProperty(MOD_ITEM_CHANCE_ON_KILL, itm.userReal2)
endfunctionOn Tower Details 
                            
                                goldcost: 0
                            
                             function onTowerDetails takes Item itm returns MultiboardValues
call Maj_spellbook.setValue(0,I2S(itm.userInt))
call Maj_spellbook.setValue(1,formatPercent(itm.userReal, 0))
call Maj_spellbook.setValue(2,formatPercent(itm.userReal2, 0))
return Maj_spellbook
endfunctionPeriodic 
                            
                                PERIODIC_period: 5
                            
                                goldcost: 0
                            
                             function periodic takes Item itm returns nothing
    local integer level = itm.getOwner().getTeam().getLevel()
    if itm.userInt2 < level then
        set itm.userInt = itm.userInt - (level - itm.userInt2)
        set itm.userInt2 = level
    endif
endfunction | 
|   M.E.F.I.S. Rocket v1 1500  lvl: 44 | ID:     207 Author: cedi Rarity: unique Status: Approved | Description: Now, If only I could remember where I put the manual.  Anti-Immunity Missile Fires immune-seeking missiles. The attack range, speed, damage and type is the same as the carrier's, unless the attack type is Magic, which is dealt as Essence damage. Damage is scaled by 20% of the tower's spell damage. Level Bonus: +0.8% scaling | Download Toggle Triggers Header 
                            
                                goldcost: 0
                            
                                 globals
        ProjectileType PT
        MultiboardValues MB
    endglobals
    
    function hitPT takes Projectile P, Unit U returns nothing
        local Tower T = P.getCaster()
        //local AttackType AT = P.userInt
        call T.doCustomAttackDamage( U, P.userReal, T.calcAttackMulticrit( 0, 0, 0 ), P.userInt )
    endfunction
    
    //Do not remove or rename this function!
    //Put your initialization tasks here, this function will be called on map init
    private function init takes nothing returns nothing
        set PT = ProjectileType.createInterpolate( "Abilities\\Spells\\Other\\TinkerRocket\\TinkerRocketMissile.mdl", 1000.00 )
        call PT.setEventOnInterpolationFinished( hitPT )
        
        set MB = MultiboardValues.create( 1 )
        call MB.setKey( 0, "Damage" )
    endfunctionOn Item Pickup 
                            
                                goldcost: 0
                            
                             function onPickup  takes Item itm returns nothing
    local Tower T = itm.getCarrier()
    
    if T.getAttackType() != AttackType.MAGIC then
        set itm.userInt = T.getAttackType()
    else
        set itm.userInt = AttackType.ESSENCE
    endif
endfunctionOn Tower Details 
                            
                                goldcost: 0
                            
                             function onTowerDetails takes Item itm returns MultiboardValues
    local Tower T = itm.getCarrier()
    local real dmg = T.getCurrentAttackDamageWithBonus() * ( T.getProp_SpellDmgDealt() * ( 0.2 + 0.008 * T.getLevel() ) )
    call MB.setValue( 0, formatFloat( dmg, 0 ) )
    return MB
endfunctionPeriodic 
                            
                                PERIODIC_period: 0.1
                            
                                goldcost: 1500
                            
                             function periodic takes Item itm returns nothing
    local Tower T = itm.getCarrier()
    local Iterate I = Iterate.overUnitsInRangeOfCaster( T, TARGET_CREEPS, T.getRange() )
    local Unit U
    local real dmg
    local Projectile P
    
    call Event.getCurrentPeriodicEvent().enableAdvanced( T.getCurrentAttackspeed(), true )
    
    loop
        set U = I.next()
        if U == 0 then
            return //No target
        endif
        
        exitwhen U.isImmune()
    endloop
    //Gotcha
    call I.destroy() //If this point is reached the Iteration still exists and has to be destroyed
    set dmg = T.getCurrentAttackDamageWithBonus() * ( T.getProp_SpellDmgDealt() * ( 0.2 + 0.008 * T.getLevel() ) )
    set P = Projectile.createLinearInterpolationFromUnitToUnit( PT, T, 1.0, 1.0, T, U, 0.35, true )
    set P.userReal = dmg
    set P.userInt = itm.userInt
endfunction | 
|   Grounding Gloves v1 1500  lvl: 44 | ID:     209 Author: SirCoqaLot. Rarity: unique Status: Approved | Description:  Entangling Roots On attack the carrier has an 6% attackspeed adjusted chance to create a field of overgrowth in 200 AoE around the target. Creeps entering the overgrowth will become entangled for 1.8 seconds, taking 4500 spell damage per second. Cannot entangle the same creep for 3 seconds afterwards. Bosses can only be hit once. | Download Toggle Triggers Header 
                            
                                goldcost: 0
                            
                                 globals
        BuffType BT
        BuffType CD
        Cast C
    endglobals
    
    function overgrowth_dmg takes DummyUnit C returns nothing
        local Creep U = Event.getTarget()
        local Tower tower = C.getCaster()
        set Event.damage = 0
        
        if U.getBuffOfType(CD) == 0 then
            call BT.apply(tower, U, 0)
            if U.getSize() < SIZE_BOSS then
                call CD.apply(tower, U, 0)
            else
                call CD.applyOnlyTimed(tower, U, -1)
            endif
        endif
    endfunction
    
    function periodicDmg takes Buff B returns nothing
        call B.getCaster().doSpellDamage(B.getBuffedUnit(), 4500, B.getCaster().calcSpellCritNoBonus())
    endfunction
    
    //Do not remove or rename this function!
    //Put your initialization tasks here, this function will be called on map init
    private function init takes nothing returns nothing
        set BT = BuffType.createDuplicate(cb_stun, 1.8, 0.00, false)
        call BT.addPeriodicEvent(periodicDmg, 1.0)
        call BT.setBuffIcon('@@1@@')
        
        set CD = BuffType.create(4.8, 0.00, false)
        
        set C = Cast.create('@@0@@', "blizzard", 4.0)
        call C.setDamageEvent(overgrowth_dmg)
    endfunctionOn Damage 
                            
                                ONDAMAGE_chance: 1
                            
                                goldcost: 1500
                            
                                ONDAMAGE_chanceLevelAdd: 0.0
                            
                             function onDamage takes Item itm returns nothing
    local Creep target = Event.getTarget()
    local Tower tower = itm.getCarrier()
    if Event.isMainTarget() and tower.calcChance(tower.getBaseAttackspeed()*0.06) then
        call C.pointCastFromTargetOnTarget( tower, target, 1.0, 1.0 )
        call Effect.createColored( "Abilities\\Spells\\NightElf\\EntangleMine\\Roots.mdl", target.getX(), target.getY(), 0.0, 270.0, 1.2, 210, 255, 180, 255 ).setLifetime( 2.5 )
    endif 
endfunction | 
|   Doom's Ensign v1 1500  lvl: 44 | ID:     253 Author: cedi Rarity: unique Status: Approved | Description: This relic is imbued with dark powers.  Ensign's Touch When the user of this item attacks an enemy it decreases the armor of the target by 10% for 5 seconds. Level Bonus: +0.6% armor decrease | Download Toggle Triggers Header 
                            
                                goldcost: 1500
                            
                                 globals
        BuffType BT
    endglobals
    
    //Do not remove or rename this function!
    //Put your initialization tasks here, this function will be called on map init
    private function init takes nothing returns nothing
        local Modifier m = Modifier.create()
        set BT = BuffType.create( 5.00, 0.00, false )
        call m.addModification( MOD_ARMOR_PERC, -0.10, -0.006 )
        call BT.setBuffModifier( m )
        call BT.setBuffIcon( '@@0@@' )
    endfunctionOn Damage 
                            
                                ONDAMAGE_chance: 1.0
                            
                                goldcost: 0
                            
                                ONDAMAGE_chanceLevelAdd: 0.0
                            
                             function onDamage takes Item itm returns nothing
    if Event.isMainTarget() then
        call BT.apply( itm.getCarrier(), Event.getTarget(), itm.getCarrier().getLevel() )
    endif
endfunction | 
|   Beast Head v2 1525  lvl: 89 | ID:     134 Author: cedi Rarity: uncommon Status: Approved | Description: Only the bravest and strongest warriors are able to kill such a beast without hurting the head.  Specials: +1230 dps
 | Download | 
|   Forcefield Generator v1 1600  lvl: 67 | ID:     126 Author: drol Rarity: rare Status: Approved | Description: Negates all offensive magic in an area.  Forcefield Reduces the duration of debuffs cast on the carrier and all towers within 200 range of the carrier by 15%. Level Bonus: -1% debuff duration | Download Toggle Triggers Header 
                            
                                goldcost: 1600
                            
                                 globals
        BuffType drol_debuffAura
    endglobals
    
    //Do not remove or rename this function!
    //Put your initialization tasks here, this function will be called on map init
    private function init takes nothing returns nothing
        local Modifier m = Modifier.create()
        call m.addModification(MOD_DEBUFF_DURATION,-0.15,-0.01)
    
        set drol_debuffAura = BuffType.createAuraEffectType(true)
        call drol_debuffAura.setBuffIcon('@@0@@')
        
        call drol_debuffAura.setBuffModifier(m) 
    endfunctionTower Aura 
                            
                                AURA_levelAdd: 1
                            
                                AURA_targetType: TARGET_TYPE_TOWERS
                            
                                AURA_auraRange: 200
                            
                                AURA_powerAdd: 1
                            
                                AURA_targetSelf: true
                            
                                goldcost: 0
                            
                                AURA_auraEffect: drol_debuffAura
                            
                                AURA_power: 0
                            
                                AURA_level: 0
                            
                             | 
Description: