Name | Type | is_array | initial_value |
Angle | real | No | |
Cast_Point | location | No | |
Caster | unit | No | |
CItemType | itemcode | Yes | |
Creep_X | real | Yes | |
Creep_Y | real | Yes | |
CType | itemcode | Yes | |
DeathCount | integer | Yes | |
Distance | real | No | |
FC_angle | real | Yes | |
FC_angle_extra | real | Yes | |
FC_group | group | No | |
FC_int | integer | No | |
FC_point | location | Yes | |
FC_unique | integer | No | |
FC_unit | unit | Yes | |
FC_unit2 | unit | Yes | |
FC_unit4 | unit | No | |
FirePointEnd | location | No | |
FlareUnit | unit | No | |
FuseSound | sound | No | |
handle | handle | No | |
handlevars | gamecache | No | |
hashtable | hashtable | No | |
HeroesType | unitcode | Yes | |
HeroInteger | integer | No | |
HeroSpawnPoint | location | Yes | |
IllusionNumber | group | No | |
Integer | integer | No | |
item | item | No | |
ItemCombineSound | sound | No | |
ItemN | integer | No | |
KillCount | integer | Yes | |
lightning | lightning | No | |
loop_count | integer | No | |
ManaSearbounce | location | No | |
ManaSearGroup | group | No | |
ManaSearTarget | unit | No | |
ManaSurgeTargets | group | No | |
Minutes | integer | No | |
MovingGroup | unit | Yes | |
Multiboard | multiboard | No | |
N | real | No | |
Next_Item | boolean | No | |
next_load | integer | No | |
non_connect | boolean | No | |
Numbers | integer | Yes | |
NumbersCount | integer | No | |
Nutsmode_Group | abilcode | Yes | |
NutsmodeInteger | integer | No | |
Player_Colors | string | Yes | |
Player_Colours | string | Yes | |
Player_Count | force | No | |
PlayerNames | string | Yes | |
Point | location | No | |
Point2 | location | No | |
PulseUnit | unit | No | |
Real | real | No | |
RemainingTime | real | No | |
Rexxar | unit | No | |
rune_group | itemcode | Yes | |
RuneCount | integer | No | |
Seconds | integer | No | |
sfx | effect | No | |
Sound_Point | location | No | |
SpiritBear | unit | No | |
Target | unit | No | |
Target_Loc | location | No | |
TargetPoint | location | No | |
Temp_loc | location | No | |
Temp_Point | location | No | |
Timeshaper | unit | No | |
Unit | unit | No | |
UnitGroup | group | No | |
Walk_point | location | No |
//TESH.scrollpos=111
//TESH.alwaysfold=0
library DDItemCombineBasic initializer Init
globals
// *** Edit to your own will ***
private constant string ITEM_COMBINE_EFFECT = "Abilities\\Spells\\Items\\AIlm\\AIlmTarget.mdl"
private constant string ATTACH_POINT = "origin"
// *** End edit ***
private sound ItemCombineSound = null
private integer array CType[8191]
private integer ItemN = 0
endglobals
function NewItemGroup takes nothing returns nothing
local integer i = ItemN*6 + 7
local integer h = 1
set ItemN = ItemN + 1
loop
exitwhen (h == 7)
set udg_CItemType[i] = udg_CItemType[h]
set udg_CItemType[h] = 0
set h = h + 1
set i = i + 1
endloop
set CType[ItemN-1] = udg_CItemType[0]
set udg_CItemType[0] = 0
endfunction
private function UnitRemoveItemById takes unit whichUnit, integer itemId returns nothing
local integer i = 0
local item it
loop
exitwhen (i >= bj_MAX_INVENTORY)
set it = UnitItemInSlot(whichUnit, i)
if GetItemTypeId(it) == itemId then
call RemoveItem(it)
exitwhen (true)
endif
set i = i + 1
endloop
set it = null
endfunction
private function Actions takes nothing returns nothing
local integer n = 0
local integer array it
local integer i = 7
local integer h = 0
local integer x = 0
local unit u = GetTriggerUnit()
local boolean b = true
local integer y = 0
local integer z = 0
local integer array hero_item_type
// Get hero items
loop
exitwhen (x >= bj_MAX_INVENTORY)
set hero_item_type[x] = GetItemTypeId(UnitItemInSlot(u, x))
set x = x + 1
endloop
loop
exitwhen (n >= ItemN)
set h = i + 6
set x = 0
set it[x] = hero_item_type[x]
set x = x + 1
set it[x] = hero_item_type[x]
set x = x + 1
set it[x] = hero_item_type[x]
set x = x + 1
set it[x] = hero_item_type[x]
set x = x + 1
set it[x] = hero_item_type[x]
set x = x + 1
set it[x] = hero_item_type[x]
set x = x + 1
set y = 0 // N of items that hero has ()
set z = 0 // N of items needed ()
loop
exitwhen (i >= h or udg_CItemType[i] == 0)
set z = z + 1
// Does unit contain item n
set x = 0
loop
exitwhen (x >= bj_MAX_INVENTORY)
if (it[x] == udg_CItemType[i]) then
// Kick out the item
set it[x] = 0
set y = y + 1
// And increase by 1
exitwhen (true)
endif
set x = x + 1
endloop
set i = i + 1
endloop
set i = h
if (y == z) then
set h = i
set i = i-6
loop
exitwhen (i > h or udg_CItemType[i] == 0)
call UnitRemoveItemById(u, udg_CItemType[i])
set i = i + 1
endloop
call UnitAddItemById(u, CType[n])
call SetSoundPosition(ItemCombineSound, GetUnitX(u), GetUnitY(u), 0.)
call StartSound(ItemCombineSound)
call DestroyEffect(AddSpecialEffectTarget(ITEM_COMBINE_EFFECT, u, ATTACH_POINT))
set u = null
return
endif
set n = n + 1
endloop
endfunction
//===========================================================================
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_PICKUP_ITEM )
call TriggerAddAction( t, function Actions )
call Preload(ITEM_COMBINE_EFFECT)
set ItemCombineSound = CreateSound( "Abilities\\Spells\\Orc\\MirrorImage\\MirrorImage.wav", false, true, true, 10, 10, "" )
call SetSoundParamsFromLabel( ItemCombineSound, "MirrorImage" )
call SetSoundDuration( ItemCombineSound, 1756 )
call SetSoundPitch(ItemCombineSound, 1.2)
call SetSoundVolume(ItemCombineSound, 100)
endfunction
endlibrary