Name | Type | is_array | initial_value |
CP_HiddenItems | item | Yes | |
CP_HiddenItemsIndex | integer | No | |
CP_Item | item | No | |
CP_Point | location | No | |
CP_PointIsWalkable | boolean | No | |
CP_Rect | rect | No | |
DiffBoard | dialog | No | |
DiffBoard_Butt | button | Yes | |
GameDiffUnit | unit | No | |
Integer | integer | No | |
Loop_Int | integer | No | |
MapLocation | location | Yes | |
ModeSelecting | boolean | No | |
PlayerLeader | player | No | |
PS_Angle | real | Yes | |
PS_Aoe | real | Yes | |
PS_Caster | unit | Yes | |
PS_Collide | integer | Yes | |
PS_Damage | real | Yes | |
PS_DamagedUnits | group | Yes | |
PS_Dummy | unit | Yes | |
PS_HitEffect | string | Yes | |
PS_HitEffectTerrain | string | Yes | |
PS_Index | integer | No | |
PS_Index_Max | integer | No | |
PS_Range | real | Yes | |
PS_SearchRange | real | Yes | |
PS_Speed | real | Yes | |
Reload_Index | integer | No | |
Reload_Index_Max | integer | No | |
Reload_Item | item | Yes | |
Reload_Mag | integer | Yes | |
Reload_Time | real | Yes | |
Reload_Unit | unit | Yes | |
ReviveTimer | timer | Yes | |
ReviveTimer_W | timerdialog | Yes | |
ReviveUnit | unit | Yes | |
S_Sentrygun | integer | Yes | |
SpellHashtable | hashtable | No | |
Targets | group | No | |
TempINT | integer | No | |
TempItem | item | Yes | |
TempPoint | location | Yes | |
TempUG | group | Yes | |
TempUnit | unit | Yes | |
u | unit | No | |
u2 | unit | No | |
u3 | unit | No | |
u4 | unit | No | |
u5 | unit | No | |
WaveNumber | integer | No | |
WaveTimer | timer | No | |
WaveTimerW | timerdialog | No |
//TESH.scrollpos=0
//TESH.alwaysfold=0
//***************************************************************************
//*
//* Item Stacking System
//* Version 1.0.7, 01/01-08
//*
//* Coded by Mr. Zero - [email protected]
//*
//***************************************************************************
function ISS_SC takes nothing returns nothing
local integer array i
local item a=GetManipulatedItem()
local unit b=GetManipulatingUnit()
local item c
set i[0]=0
set i[1]=GetItemLevel(a)
set i[2]=GetItemCharges(a)
set i[3]=GetItemTypeId(a)
if(i[2]!=0)then
loop
exitwhen i[0]>5
set c=UnitItemInSlot(b,i[0])
set i[4]=GetItemCharges(c)
set i[5]=GetItemTypeId(c)
if(((c!=a)and(i[5]==i[3]))and(i[4]<i[1]))then
if((i[4]+i[2])<=i[1])then
call SetItemCharges(c,(i[4]+i[2]))
call RemoveItem(a)
exitwhen true
else
call SetItemCharges(a,(i[4]+i[2])-i[1])
call SetItemCharges(c,i[1])
call UnitAddItem(b,a)
exitwhen true
endif
endif
set i[0]=i[0]+1
endloop
endif
set a=null
set b=null
set c=null
endfunction
function ISS_RC takes nothing returns nothing
local integer array i
local unit a=GetOrderedUnit()
local item b=GetOrderTargetItem()
local item c=UnitItemInSlot(a,(GetIssuedOrderId()-852002))
set i[0]=0
set i[1]=GetItemCharges(b)
set i[2]=GetItemLevel(b)
set i[3]=GetItemTypeId(b)
set i[4]=GetItemCharges(c)
set i[5]=GetItemTypeId(c)
if((((GetIssuedOrderId()>=852002)and(GetIssuedOrderId()<=852007))and(i[1]!=0)and(c!=null)))then
if(b==c)then
set c=CreateItem(i[3],0,0)
set i[4]=GetItemCharges(c)
call RemoveItem(c)
if(i[1]>i[4])then
loop
exitwhen i[0]>5
if(UnitItemInSlot(a,i[0])==null)then
call SetItemCharges(b,(i[1]-i[4]))
set b=CreateItem(i[3],0,0)
call DisableTrigger(gg_trg_Item_Stacking_System)
call UnitAddItem(a,b)
call EnableTrigger(gg_trg_Item_Stacking_System)
exitwhen true
endif
set i[0]=i[0]+1
endloop
endif
else
if((i[5]==i[3])and(i[4]<i[2]))then
if((i[1]+i[4])<=i[2])then
call SetItemCharges(b,(i[1]+i[4]))
call RemoveItem(c)
else
call SetItemCharges(c,(i[1]+i[4])-i[2])
call SetItemCharges(b,i[2])
endif
endif
endif
endif
set a=null
set b=null
set c=null
endfunction
function InitTrig_Item_Stacking_System takes nothing returns nothing
local integer i=0
local trigger t=CreateTrigger()
set gg_trg_Item_Stacking_System=CreateTrigger()
loop
exitwhen i==16
call TriggerRegisterPlayerUnitEvent(gg_trg_Item_Stacking_System,Player(i),EVENT_PLAYER_UNIT_PICKUP_ITEM,null)
call TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER,null)
set i=i+1
endloop
call TriggerAddAction(gg_trg_Item_Stacking_System,function ISS_SC)
call TriggerAddAction(t,function ISS_RC)
set t=null
endfunction