LurkerAspect
Now officially a Super Lurker
- Reaction score
- 118
XXXX==--SOLVED--==XXXX
Hi again all I'm becoming a main source of rep for some of you
Anyway, my problem today is that I'm running a function every time a unit drops an item, however the function that follows it almost immediately is still counting the item the unit just dropped, which is messing with my other systems. Any tips on how to fix this?
Here's the code:
Don't worry about the other undefined functions and global variables, they don't affect the performance of the main tally function.
Any help is much appreciated
Hi again all I'm becoming a main source of rep for some of you
Anyway, my problem today is that I'm running a function every time a unit drops an item, however the function that follows it almost immediately is still counting the item the unit just dropped, which is messing with my other systems. Any tips on how to fix this?
Here's the code:
JASS:
private function ElementalTally takes unit u returns integer //this is the function that gets run immediately from the actions; this is the function that is counting the dropped item
local integer i = 1
local boolean has_air = false
local boolean has_dark = false
local boolean has_earth = false
local boolean has_fire = false
local boolean has_light = false
local boolean has_water = false
local integer tally = 0
loop
exitwhen i > 6
if GetItemTypeId(UnitItemInSlot(u,i)) == AIR_ITEM and has_air == false then
set has_air = true
set tally = tally+32
elseif GetItemTypeId(UnitItemInSlot(u,i)) == DARK_ITEM and has_dark == false then
set has_dark = true
set tally = tally+16
elseif GetItemTypeId(UnitItemInSlot(u,i)) == EARTH_ITEM and has_earth == false then
set has_earth = true
set tally = tally+8
elseif GetItemTypeId(UnitItemInSlot(u,i)) == FIRE_ITEM and has_fire == false then
set has_fire = true
set tally = tally+4
elseif GetItemTypeId(UnitItemInSlot(u,i)) == LIGHT_ITEM and has_light == false then
set has_light = true
set tally = tally+2
elseif GetItemTypeId(UnitItemInSlot(u,i)) == WATER_ITEM and has_water == false then
set has_water = true
set tally = tally+1
endif
set i = i+1
endloop
return tally
endfunction
//bla bla bla
private function Actions2 takes nothing returns nothing
local unit u = GetTriggerUnit()
call RemoveElementalPowers(u)
call UnitAddAbility(u,ELEMENTAL_ABILITY[ElementalTally(u)])
set u = null
endfunction
private function Conditions1 takes nothing returns boolean
return GetUnitTypeId(GetTriggerUnit()) == 039;h000039; and not UnitHasItemAlready(GetTriggerUnit(),GetManipulatedItem()) and IsItemElemental(GetManipulatedItem())
endfunction
Don't worry about the other undefined functions and global variables, they don't affect the performance of the main tally function.
Any help is much appreciated