- Joined
- Jun 20, 2017
- Messages
- 380
Any ideas + Rep
I have these jass (reduce armor system). but I want same system work for increases attack speed and which ability to use properly for it?
I have these jass (reduce armor system). but I want same system work for increases attack speed and which ability to use properly for it?
JASS:
function Trig_ArmorReduce_Actions takes nothing returns nothing
local unit u
local timer tm
if GetUnitTypeId(GetAttacker()) == 'h01S' || GetUnitTypeId(GetAttacker()) == 'h00F' || GetUnitTypeId(GetAttacker()) == 'h007' then
set u = GetTriggerUnit()
if LoadTimerHandle(Main_Hash,GetHandleId(u),1) == null then
set tm = CreateTimer()
call SaveTimerHandle(Main_Hash,GetHandleId(u),1,tm)
call SaveUnitHandle(Main_Hash, GetHandleId(tm), 2, u)
call TriggerRegisterUnitEvent( gg_trg_Dynamic, u, EVENT_UNIT_DAMAGED )
endif
endif
set u = null
set tm = null
endfunction
function InitTrig_ArmorReduce takes nothing returns nothing
set gg_trg_ArmorReduce = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_ArmorReduce, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddAction( gg_trg_ArmorReduce, function Trig_ArmorReduce_Actions )
endfunction
JASS:
define
B_REDUCE_PER_HIT = 1
HB_REDUCE_PER_HIT = 2
enddefine
function RemoveArmorEffect takes unit u returns nothing
local integer i = 0
loop
exitwhen i > 11
call UnitRemoveAbility(u, ReduceArmor[i])
set i = i + 1
endloop
set u = null
endfunction
function RemoveArmorEffect2 takes nothing returns nothing
call RemoveArmorEffect(LoadUnitHandle(Main_Hash, GetHandleId(GetExpiredTimer()), 2))
call SaveInteger(Main_Hash, GetHandleId(GetExpiredTimer()), 3, 0)
endfunction
function Trig_Dynamic_Actions takes nothing returns nothing
local integer ReduceLocal = 0
local unit u = GetTriggerUnit()
local unit ds = GetEventDamageSource()
local integer reslvl = GetPlayerTechCount(GetOwningPlayer(ds), 'R010', true)
local timer tm
if (GetUnitTypeId(ds) == 'h01S') or (GetUnitTypeId(ds) == 'h00F') or (GetUnitTypeId(ds) == 'h007') then
call RemoveArmorEffect(u)
set tm = LoadTimerHandle(Main_Hash,GetHandleId(u),1)
set ReduceLocal = LoadInteger(Main_Hash, GetHandleId(tm), 3)
if ReduceLocal == 0
if reslvl == 0 || reslvl == 1
ReduceLocal = 0
elseif reslvl == 2
ReduceLocal = 0
endif
endif
if (GetUnitTypeId(ds) == 'h007') or (reslvl == 2) then
call SaveInteger(Main_Hash, GetHandleId(tm), 3, ReduceLocal + HB_REDUCE_PER_HIT)
elseif GetUnitTypeId(ds) == 'h00F' then
call SaveInteger(Main_Hash, GetHandleId(tm), 3, ReduceLocal + HB_REDUCE_PER_HIT)
elseif GetUnitTypeId(ds) == 'h01S' then
call SaveInteger(Main_Hash, GetHandleId(tm), 3, ReduceLocal + B_REDUCE_PER_HIT)
endif
if ReduceLocal >= 2048 then
call UnitAddAbility(u,ReduceArmor[11])
set ReduceLocal = ReduceLocal - 2048
endif
if ReduceLocal >= 1024 then
call UnitAddAbility(u,ReduceArmor[10])
set ReduceLocal = ReduceLocal - 1024
endif
if ReduceLocal >= 512 then
call UnitAddAbility(u,ReduceArmor[9])
set ReduceLocal = ReduceLocal - 512
endif
if ReduceLocal >= 256 then
call UnitAddAbility(u,ReduceArmor[8])
set ReduceLocal = ReduceLocal - 256
endif
if ReduceLocal >= 128 then
call UnitAddAbility(u,ReduceArmor[7])
set ReduceLocal = ReduceLocal - 128
endif
if ReduceLocal >= 64 then
call UnitAddAbility(u,ReduceArmor[6])
set ReduceLocal = ReduceLocal - 64
endif
if ReduceLocal >= 32 then
call UnitAddAbility(u,ReduceArmor[5])
set ReduceLocal = ReduceLocal - 32
endif
if ReduceLocal >= 16 then
call UnitAddAbility(u,ReduceArmor[4])
set ReduceLocal = ReduceLocal - 16
endif
if ReduceLocal >= 8 then
call UnitAddAbility(u,ReduceArmor[3])
set ReduceLocal = ReduceLocal - 8
endif
if ReduceLocal >= 4 then
call UnitAddAbility(u,ReduceArmor[2])
set ReduceLocal = ReduceLocal - 4
endif
if ReduceLocal >= 2 then
call UnitAddAbility(u,ReduceArmor[1])
set ReduceLocal = ReduceLocal - 2
endif
if ReduceLocal >= 1 then
call UnitAddAbility(u,ReduceArmor[0])
set ReduceLocal = ReduceLocal - 1
endif
call TimerStart(tm, 5.00, false, function RemoveArmorEffect2)
endif
set u = null
set ds = null
set tm = null
endfunction
function InitTrig_Dynamic takes nothing returns nothing
set gg_trg_Dynamic = CreateTrigger( )
call TriggerAddAction( gg_trg_Dynamic, function Trig_Dynamic_Actions )
endfunction
JASS:
globals
hashtable Main_Hash
integer array ReduceArmor
endglobals
function Trig_Loading_Actions takes nothing returns nothing
local integer i = 0
set Main_Hash = InitHashtable()
set ReduceArmor[0] = 'A01U'
set ReduceArmor[1] = 'A02Q'
set ReduceArmor[2] = 'A01W'
set ReduceArmor[3] = 'A030'
set ReduceArmor[4] = 'A02Z'
set ReduceArmor[5] = 'A022'
set ReduceArmor[6] = 'A01R'
set ReduceArmor[7] = 'A01C'
set ReduceArmor[8] = 'A01E'
set ReduceArmor[9] = 'A01D'
set ReduceArmor[10] = 'A02Y'
set ReduceArmor[11] = 'A00W'
endfunction
function InitTrig_Loading takes nothing returns nothing
set gg_trg_Loading = CreateTrigger( )
call TriggerAddAction( gg_trg_Loading, function Trig_Loading_Actions )
endfunction
Last edited: