Enchanted Knives v1
2500
lvl: 76
ID:
18
Author:
Boekie
Rarity:
unique
Status:
Approved

Description:

These knives were used by a famous nightelf ranger. They can attack multiple units at once.
Specials:
Specials:
-50% attackspeed
Multishot
Attacks up to 3 targets at the same time.
Download

Toggle Triggers

Header

goldcost: 0
    globals
        integer array multishots
    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 multishots[0] = '@@16@@'  //750
        set multishots[1] = '@@9@@'
        set multishots[2] = '@@7@@'
        set multishots[3] = '@@8@@'
        set multishots[4] = '@@5@@'
        set multishots[5] = '@@6@@'
        set multishots[6] = '@@3@@'
        set multishots[7] = '@@4@@'
        set multishots[8] = '@@1@@'
        set multishots[9] = '@@2@@'
        set multishots[10] = '@@0@@'
        set multishots[11] = '@@17@@'
        set multishots[12] = '@@18@@'
        set multishots[13] = '@@15@@'
        set multishots[14] = '@@13@@'
        set multishots[15] = '@@14@@'
        set multishots[16] = '@@11@@'
        set multishots[17] = '@@12@@'
        set multishots[18] = '@@10@@' //2550
    endfunction

On Item Drop

goldcost: 0
function onDrop takes Item itm returns nothing
    call UnitRemoveAbility(itm.getCarrier().getUnit(),itm.userInt)
endfunction

On Item Pickup

goldcost: 2500
function onPickup  takes Item itm returns nothing
    local integer i = (Tower(itm.getCarrier()).getRange()-700)/100
    if i < 0 then
        set i = 0
    elseif i > 18 then
        set i = 18
    endif
    call UnitAddAbility(itm.getCarrier().getUnit(),multishots[i])
    set itm.userInt = multishots[i]
endfunction
Pendant of Promptness v1
2505
lvl: 76
ID:
137
Author:
Glowackos
Rarity:
unique
Status:
Approved

Description:

Tears at the very fabrics of time to imbue its bearer with immense speed.
Specials:
Specials:
+75% attackspeed (+1%/lvl)
Energy Drainer
Attacking with super speed comes at a price. The carrier burns 5% of its maximum mana per attack. Without mana it is unable to attack.
Download

Toggle Triggers

On Attack

goldcost: -7000 ONATTACK_chance: 1.0 ONATTACK_chanceLevelAdd: 0.0
function onAttack takes Item itm returns nothing
    local Tower tower = itm.getCarrier()
    if tower.subtractMana(0.05 * GetUnitState(tower.getUnit(), UNIT_STATE_MAX_MANA), false) == 0 then
        call tower.orderStop()
    endif
endfunction
Bhaal's Essence v1
2727
lvl: 83
ID:
56
Author:
poussix
Rarity:
unique
Status:
Approved

Description:

The essence of The Lord of Murder.
Specials:
-60% debuff duration
Fright Aura - Aura
Slows movement speed of enemies in 650 range by 10% and decreases their armor by 4.

Level Bonus:
+0.2% slow
+0.2 armor
Download

Toggle Triggers

Header

goldcost: 0
    globals
    
    BuffType poussix_fright_aura//thanks to Gex "ice core" aura
    
    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 slow = Modifier.create() 
    local Modifier m = Modifier.create()  
    set poussix_fright_aura = BuffType.createAuraEffectType(true)  
    call slow.addModification(MOD_MOVESPEED,-0.10,-0.0020) 
    call m.addModification( MOD_ARMOR, -4.00, -0.2 ) 
    call poussix_fright_aura.setBuffModifier(m)  
    call poussix_fright_aura.setStackingGroup("fright_aura")  
    call poussix_fright_aura.setBuffIcon('@@0@@') 
    
    
    
    endfunction

Tower Aura

AURA_levelAdd: 1 AURA_targetType: TARGET_TYPE_CREEPS AURA_auraRange: 650 AURA_powerAdd: 1 AURA_targetSelf: false goldcost: 1200 AURA_auraEffect: poussix_fright_aura AURA_power: 0 AURA_level: 0
The Divine Wings of Tragedy v1
2739
lvl: 83
ID:
230
Author:
SymphonyX, Finger of Destiny
Rarity:
unique
Status:
Approved

Description:

These wings once belonged to an angel.
Specials:
+37% buff duration
The Divine Wings of Tragedy - Aura
Increases attack damage and attack speed of towers in 250 range by 15%.
Download

Toggle Triggers

Header

goldcost: 0
    globals
    
    BuffType dmgaura
    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 dmgaura = BuffType.createAuraEffectType(true)  
        call m.addModification(MOD_ATTACKSPEED,0.15,0.0)
    call m.addModification(MOD_DAMAGE_ADD_PERC,0.15,0.0)  

    call dmgaura.setBuffModifier(m)  
    call dmgaura.setStackingGroup("dmgaura")  
    call dmgaura.setBuffIcon('@@0@@')
    
    
    
    endfunction

Tower Aura

AURA_powerAdd: 1 AURA_targetSelf: true AURA_auraEffect: dmgaura goldcost: 2000 AURA_levelAdd: 1 AURA_power: 0 AURA_level: 0 AURA_targetType: TARGET_TYPE_TOWERS AURA_auraRange: 250
Distorted Idol v1
2750
lvl: 84
ID:
254
Author:
Deemzul
Rarity:
unique
Status:
Unapproved

Description:

Exists beyond reality.
Specials:
Specials:
-60% attackspeed
Imitation
On pick up, this item copies the abilities and modifiers of every other item already on the tower, except other Distorted Idols and use-actives. The effects are lost when this item is dropped, or the carrier is upgraded or replaced.
Restriction
This item can only be picked up by a tower in a corner with cliffs on two sides.
Download

Toggle Triggers

Header

goldcost: 2750
    globals
        constant real displayTime = 7
    endglobals
    struct copyList
        Item array items[6]
        static method create takes nothing returns copyList
            local copyList cl = copyList.allocate()
            local integer i = 0
            loop
                set cl.items[i] = 0
                set i = i + 1
                exitwhen i == 6
            endloop
            return cl
        endmethod
    endstruct
    //@export
    function deem_delayDrop takes nothing returns nothing //Should maybe make Item.drop() do this on default
        local timer t = GetExpiredTimer()
        call Item(GetTimerData(t)).drop()
        call ReleaseTimer(t)
    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
    endfunction

On Item Creation

goldcost: 0
function onCreate takes Item itm returns nothing
    set itm.userInt = copyList.create()
    set itm.userInt2 = 0
endfunction

On Item Destruction

goldcost: 0
function onDestruct takes Item itm returns nothing
    call copyList(itm.userInt).destroy()
endfunction

On Item Drop

goldcost: 0
function onDrop takes Item itm returns nothing
    local copyList cl = itm.userInt
    local integer i = 0
    local Item cur_item
    if itm.userInt2 != 0 then
        loop
            set cur_item = cl.items[i]
            if cur_item != 0 then //the tower doesn't actually carry these items, they are hidden and at 0,0
                //Remove effects
                if cur_item.typ.effects != 0 then
                    call cur_item.currentEffect.remove()
                    set cur_item.currentEffect = 0
                endif
                call cur_item.destroy()
                set cl.items[i] = 0
            endif
            set i = i + 1
            exitwhen i == 6
        endloop
        set itm.userInt2 = 0
    endif
endfunction

On Item Pickup

goldcost: 0
function onPickup  takes Item itm returns nothing
    local Tower tower = itm.getCarrier()
    local integer i = 1 //itemslots start from 1 for whatever reason
    local Item tmpItm
    local ItemEventList cur_iel
    local Item dummy_itm
    local ItemType cur_ityp
    local copyList cur_copy_list
    local real x = tower.getX()
    local real y = tower.getY()
    local integer cliff = 0
    local timer t
    if IsTerrainPathable(x,y-96,PATHING_TYPE_BUILDABILITY) then
        set cliff = cliff + 1
    endif
    if IsTerrainPathable(x,y+96,PATHING_TYPE_BUILDABILITY) then
        set cliff = cliff + 1
    endif
    if IsTerrainPathable(x-96,y,PATHING_TYPE_BUILDABILITY) then
        set cliff = cliff + 1
    endif
    if IsTerrainPathable(x+96,y,PATHING_TYPE_BUILDABILITY) then
        set cliff = cliff + 1
    endif
    if cliff != 2 then //Is tower not next to 2 cliffs?
        set t = NewTimer()
        call SetTimerData(t,itm)
        call TimerStart(t,0,false,function deem_delayDrop) //can't drop immediately, because of execution order
    else
        loop
            set itm.userInt2 = tower
            exitwhen i > 6
            set tmpItm = tower.getHeldItem(i)
            if tmpItm != 0 then
                set cur_ityp = tmpItm.typ
                set cur_iel = cur_ityp .effects
                set cur_copy_list = itm.userInt
                if cur_iel != itm.typ.effects then
                    //Create fake items for userInts and such
                    set dummy_itm = Item.create(tower.getOwner(),cur_ityp,0,0)
                    set dummy_itm.currentCarrier = tower
                    call SetItemVisible(dummy_itm.theItem,false)
                    call ItemEffect.create(dummy_itm,tower)
                    set cur_copy_list.items[i-1] = dummy_itm //-1 because array starts at 0 and getHeldItem at 1
                endif
            endif
            set i = i + 1
        endloop
    endif
endfunction

On Tower Details

goldcost: 0
function onTowerDetails takes Item itm returns MultiboardValues
    local integer i = 0
    local Item tmpItm
    local item tmpitm
    local string s
    local Playor p = Event.getMBObserver()
    local integer i2  = 0
    local Tower t = itm.getCarrier()
    //Only want to view this when opening the multiboard
    if p.towerDisplay.curTower != t then
        set s = ""
        loop
            set tmpItm = copyList(itm.userInt).items[i]
            exitwhen i == 6
            if tmpItm != 0 then
                if i2 == 3 then
                    set s = s + "\n"
                elseif i2 > 0 then
                    set s = s + ", "
                endif
                set tmpitm = tmpItm.getItem()
                set s = s + GetItemName(tmpitm)
                set i2 = i2 + 1
            endif
            set i = i + 1
        endloop
        if i2 == 0 then
            call p.displayTimedText("|cffFF8000Distorted Idol is copying:|r Absolutely nothing",displayTime)
        else
            call p.displayTimedText("|cffFF8000Distorted Idol is copying the following items:|r",displayTime)
            call p.displayTimedText(s,displayTime)
        endif
        set tmpitm = null
    endif
    return 0
endfunction