function SimError takes nothing returns nothing
local string msg = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n|cffffcc00Value is either too large or too small.|r"
local player ForPlayer = GetTriggerPlayer()
if (GetLocalPlayer() == ForPlayer) then
call ClearTextMessages()
call DisplayTimedTextToPlayer( ForPlayer, 0.52, 0.96, 2.00, msg )
call StartSound(udg_Error)
endif
set ForPlayer = null
endfunction
function AddHP takes nothing returns nothing
local integer i = 1
local integer max = 16383
if (udg_CS_Value > max) then
call SimError()
return
else
endif
loop
exitwhen i > udg_CS_MaxLoopingBase
if udg_CS_LoopingBase[i] > udg_CS_Value then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_AddHP[i])
call IncUnitAbilityLevel(udg_CS_Unit, udg_CS_AddHP[i])
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddHP[i])
set udg_CS_Value = udg_CS_Value - udg_CS_LoopingBase[i]
endif
set i = i + 1
endloop
endfunction
function RemoveHP takes nothing returns nothing
local integer i = 1
local integer min = -16383
if (udg_CS_Value < min) then
call SimError()
return
else
endif
loop
exitwhen i > udg_CS_MaxLoopingBase
if udg_CS_LoopingBase[i] > udg_CS_Value then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_RemoveHP[i])
call IncUnitAbilityLevel(udg_CS_Unit, udg_CS_RemoveHP[i])
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveHP[i])
set udg_CS_Value = udg_CS_Value - udg_CS_LoopingBase[i]
endif
set i = i + 1
endloop
endfunction
function AddMP takes nothing returns nothing
local integer i = 1
local integer max = 16383
if (udg_CS_Value > max) then
call SimError()
return
else
endif
loop
exitwhen i > udg_CS_MaxLoopingBase
if udg_CS_LoopingBase[i] > udg_CS_Value then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_AddMP[i])
call IncUnitAbilityLevel(udg_CS_Unit, udg_CS_AddMP[i])
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddMP[i])
set udg_CS_Value = udg_CS_Value - udg_CS_LoopingBase[i]
endif
set i = i + 1
endloop
endfunction
function RemoveMP takes nothing returns nothing
local integer i = 1
local integer min = -16383
if (udg_CS_Value < min) then
call SimError()
return
else
endif
loop
exitwhen i > udg_CS_MaxLoopingBase
if udg_CS_LoopingBase[i] > udg_CS_Value then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_RemoveMP[i])
call IncUnitAbilityLevel(udg_CS_Unit, udg_CS_RemoveMP[i])
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveMP[i])
set udg_CS_Value = udg_CS_Value - udg_CS_LoopingBase[i]
endif
set i = i + 1
endloop
endfunction
function AddDamage takes nothing returns nothing
local integer i = 1
local integer max = 16383
set udg_CS_Key = GetHandleId(udg_CS_Unit)
set udg_CS_DamageValue = LoadInteger(udg_CS_Hashtable, udg_CS_Key, 0)
set udg_CS_DamageValue = (udg_CS_DamageValue + udg_CS_Value)
if (udg_CS_DamageValue > max) then
call SimError()
return
else
endif
if (udg_CS_DamageValue > 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 0, udg_CS_DamageValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddDamage[i])
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveDamage[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > udg_CS_DamageValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_AddDamage[i])
set udg_CS_DamageValue = (udg_CS_DamageValue - udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
if (udg_CS_DamageValue < 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 0, udg_CS_DamageValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveDamage[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > -udg_CS_DamageValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_RemoveDamage[i])
set udg_CS_DamageValue = (udg_CS_DamageValue + udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 0, udg_CS_DamageValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveDamage[i])
set i = i + 1
endloop
endif
endif
endfunction
function RemoveDamage takes nothing returns nothing
local integer i = 1
local integer min = -16383
set udg_CS_Key = GetHandleId(udg_CS_Unit)
set udg_CS_DamageValue = LoadInteger(udg_CS_Hashtable, udg_CS_Key, 0)
set udg_CS_DamageValue = (udg_CS_DamageValue - udg_CS_Value)
if (udg_CS_DamageValue < min) then
call SimError()
return
else
endif
if (udg_CS_DamageValue > 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 0, udg_CS_DamageValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddDamage[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > udg_CS_DamageValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_AddDamage[i])
set udg_CS_DamageValue = (udg_CS_DamageValue - udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
if (udg_CS_DamageValue < 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 0, udg_CS_DamageValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddDamage[i])
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveDamage[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > -udg_CS_DamageValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_RemoveDamage[i])
set udg_CS_DamageValue = (udg_CS_DamageValue + udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 0, udg_CS_DamageValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddDamage[i])
set i = i + 1
endloop
endif
endif
endfunction
function AddArmor takes nothing returns nothing
local integer i = 1
local integer max = 16383
set udg_CS_Key = GetHandleId(udg_CS_Unit)
set udg_CS_ArmorValue = LoadInteger(udg_CS_Hashtable, udg_CS_Key, 1)
set udg_CS_ArmorValue = (udg_CS_ArmorValue + udg_CS_Value)
if (udg_CS_ArmorValue > max) then
call SimError()
return
else
endif
if (udg_CS_ArmorValue > 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_ArmorValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddArmor[i])
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveArmor[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > udg_CS_ArmorValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_AddArmor[i])
set udg_CS_ArmorValue = (udg_CS_ArmorValue - udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
if (udg_CS_ArmorValue < 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_ArmorValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveArmor[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > -udg_CS_ArmorValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_RemoveArmor[i])
set udg_CS_ArmorValue = (udg_CS_ArmorValue + udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_ArmorValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveArmor[i])
set i = i + 1
endloop
endif
endif
endfunction
function RemoveArmor takes nothing returns nothing
local integer i = 1
local integer min = -16383
set udg_CS_Key = GetHandleId(udg_CS_Unit)
set udg_CS_ArmorValue = LoadInteger(udg_CS_Hashtable, udg_CS_Key, 1)
set udg_CS_ArmorValue = (udg_CS_ArmorValue - udg_CS_Value)
if (udg_CS_ArmorValue < min) then
call SimError()
return
else
endif
if (udg_CS_ArmorValue > 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_ArmorValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddArmor[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > udg_CS_ArmorValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_AddArmor[i])
set udg_CS_ArmorValue = (udg_CS_ArmorValue - udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
if (udg_CS_ArmorValue < 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_ArmorValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddArmor[i])
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveArmor[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > -udg_CS_ArmorValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_RemoveArmor[i])
set udg_CS_ArmorValue = (udg_CS_ArmorValue + udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_ArmorValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddArmor[i])
set i = i + 1
endloop
endif
endif
endfunction
function AddSight takes nothing returns nothing
local integer i = 1
local integer max = 16383
set udg_CS_Key = GetHandleId(udg_CS_Unit)
set udg_CS_SightValue = LoadInteger(udg_CS_Hashtable, udg_CS_Key, 1)
set udg_CS_SightValue = (udg_CS_SightValue + udg_CS_Value)
if (udg_CS_SightValue > max) then
call SimError()
return
else
endif
if (udg_CS_SightValue > 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_SightValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddSight[i])
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveSight[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > udg_CS_SightValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_AddSight[i])
set udg_CS_SightValue = (udg_CS_SightValue - udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
if (udg_CS_SightValue < 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_SightValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveSight[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > -udg_CS_SightValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_RemoveSight[i])
set udg_CS_SightValue = (udg_CS_SightValue + udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_SightValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveSight[i])
set i = i + 1
endloop
endif
endif
endfunction
function RemoveSight takes nothing returns nothing
local integer i = 1
local integer min = -16383
set udg_CS_Key = GetHandleId(udg_CS_Unit)
set udg_CS_SightValue = LoadInteger(udg_CS_Hashtable, udg_CS_Key, 1)
set udg_CS_SightValue = (udg_CS_SightValue - udg_CS_Value)
if (udg_CS_SightValue < min) then
call SimError()
return
else
endif
if (udg_CS_SightValue > 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_SightValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddSight[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > udg_CS_SightValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_AddSight[i])
set udg_CS_SightValue = (udg_CS_SightValue - udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
if (udg_CS_SightValue < 0) then
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_SightValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddSight[i])
call UnitRemoveAbility(udg_CS_Unit, udg_CS_RemoveSight[i])
set i = i + 1
endloop
set i = 1
loop
exitwhen i > udg_CS_MaxLoopingBase
if (udg_CS_LoopingBase[i] > -udg_CS_SightValue) then
else
call UnitAddAbility(udg_CS_Unit, udg_CS_RemoveSight[i])
set udg_CS_SightValue = (udg_CS_SightValue + udg_CS_LoopingBase[i])
endif
set i = i + 1
endloop
else
call SaveInteger(udg_CS_Hashtable, udg_CS_Key, 1, udg_CS_SightValue)
loop
exitwhen i > udg_CS_MaxLoopingBase
call UnitRemoveAbility(udg_CS_Unit, udg_CS_AddSight[i])
set i = i + 1
endloop
endif
endif
endfunction