Добавлен M1n3rva
МБ у кого-то завалялась система отлова ударов ( герой каждыe n ударов крит/доп дмг и т.д.(БЕЗ ОРБЫ, на счет баффов не помню)). Валялась и пылилась такая система, случайно удалил( хух... попытался найти, лазил, лазил, чет не нашел. МБ у кого-то есть, желательно c/v Jass
Принятый ответ
сам мана бурн.
globals
boolean DmgBool = true
endglobals
function Player_ManaBurn_Leave takes nothing returns boolean
local TriggerData dd = GetDataBX( GetTriggeringTrigger( ) )
call dd.RemoveTrigger()
call dd.destroy()
return false
endfunction
function Timer_ManaBreak_Actions takes nothing returns nothing
local TriggerData dd = GetDataBX( GetExpiredTimer( ) )
local real mana
local real damage = dd.dmg * dd.c
if IsUnitDead( dd.attacker ) or IsUnitType( dd.attacker, UNIT_TYPE_MAGIC_IMMUNE ) or IsUnitInvulnerable( dd.attacker ) or IsUnitAlly( dd.attacker, GetOwningPlayer( dd.attacked )) or dd.attacker == dd.attacked then
return
endif
if IsUnitType( dd.attacked, UNIT_TYPE_HERO ) or GetUnitState( dd.attacked, UNIT_STATE_MAX_MANA ) > 2.00 then
set mana = GetUnitState( dd.attacker, UNIT_STATE_MANA )
set TempString = "Abilities\\Spells\\Human\\Feedback\\ArcaneTowerAttack.mdl"
if damage > mana then
set damage = mana
endif
if IsUnitIllusion( dd.attacked ) then
call SetUnitState( dd.attacker, UNIT_STATE_MANA, mana - damage * 0.30 )
else
call SetUnitState( dd.attacker, UNIT_STATE_MANA, mana - damage )
endif
endif
if GetUnitAbilityLevel( dd.attacker, 'ANsu' ) > 0 or IsUnitType( dd.attacker, UNIT_TYPE_SUMMONED ) then
set TempString = "Abilities\\Spells\\Human\\Feedback\\SpellBreakerAttack.mdl"
set damage = damage + dd.ExCount * 20.00
endif
if IsUnitIllusion( dd.attacked ) then
set damage = damage * 0.30
endif
call DestroyEffect( AddSpecialEffectTarget( TempString, dd.attacker, "origin" ) )
call UnitDamageTarget( dd.attacked, dd.attacker, damage, false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_LIGHTNING, WEAPON_TYPE_WHOKNOWS )
if damage > 2.00 then
call FloatingTextFadeout( Player( 12 ), dd.attacker, "|cffFF69B4-" + I2S( R2I( damage ) ) + "!|r" )
endif
endfunction
function Timer_Magical_Damage_Actions takes nothing returns nothing
local TriggerData dd = GetDataBX( GetExpiredTimer( ) )
set DmgBool = false
if IsUnitIllusion( dd.attacked ) then
call UnitRemoveAbility( dd.attacked, 'A081' )
call UnitDamageTarget( dd.attacker, dd.attacked, dd.dmg * - 1.34, false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNKNOWN, WEAPON_TYPE_WHOKNOWS )
if GetUnitState( dd.attacked, UNIT_STATE_LIFE ) > 0.405 then
call UnitAddAbility( dd.attacked, 'A081' )
endif
else
call UnitRemoveAbility( dd.attacked, 'A06V' )
call UnitDamageTarget( dd.attacker, dd.attacked, dd.dmg * - 1.34, false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE, WEAPON_TYPE_WHOKNOWS )
call UnitAddAbility( dd.attacked, 'A06V' )
endif
set DmgBool = true
//call FloatingTextFadeout( Player( 12 ), dd.attacked, "|cffFF69B4" + I2S( R2I( -1.34 * dd.dmg ) ) + "!|r" )
endfunction
function Trig_Mana_Burn_Conditions takes nothing returns boolean
if GetTriggerEventId() == EVENT_PLAYER_LEAVE then
return Player_ManaBurn_Leave( )
endif
return DmgBool and GetEventDamage( ) != 0.00 and GetEventDamageSource() != DummyAttacker
endfunction
function Trig_Mana_Burn_Actions takes nothing returns nothing
local TriggerData dd = GetDataBX( GetTriggeringTrigger( ) )
set dd.attacker = GetEventDamageSource( )
set dd.attacked = GetTriggerUnit( )
set dd.dmg = GetEventDamage( )
if dd.dmg < 0.00 then
set dd.hp = GetUnitState( dd.attacked, UNIT_STATE_LIFE )
if dd.hp < GetUnitState( dd.attacked, UNIT_STATE_MAX_LIFE ) then
set dd.hp = dd.hp + dd.dmg
if dd.hp < 0.00 then
set dd.hp = 0.600
endif
endif
call SetUnitState( dd.attacked, UNIT_STATE_LIFE, dd.hp )
call TimerStart( dd.trix, 0.00, false, function Timer_Magical_Damage_Actions )
else
call TimerStart( dd.trix, 0.00, false, function Timer_ManaBreak_Actions )
endif
endfunction
//===========================================================================
function startTrig_Mana_Burn takes nothing returns nothing
local unit Runner = GetLearningUnit( )
local TriggerData dd
local integer level = GetUnitAbilityLevel( Runner, GetLearnedSkill( ) )
local integer id = GetHandleId( Runner )
if level == 1 then
set dd = TriggerData.create( )
set dd.attacked = Runner
set dd.trg = CreateTrigger( )
set dd.trc = TriggerAddCondition( dd.trg, Condition( function Trig_Mana_Burn_Conditions ) )
set dd.tra = TriggerAddAction( dd.trg, function Trig_Mana_Burn_Actions )
set dd.trix = CreateTimer( )
set dd.c = 0.20
call TriggerRegisterUnitEvent( dd.trg, Runner, EVENT_UNIT_DAMAGED )
call TriggerRegisterPlayerEvent( dd.trg, GetOwningPlayer( Runner ), EVENT_PLAYER_LEAVE )
call TriggerRegisterUnitEvent( gg_trg_Summon_Manaburn_Images, Runner, EVENT_UNIT_SUMMON )
call UnitAddAbility( Runner, 'A06V' )
call SetDataBX( dd.trix, dd )
call SetDataBX( dd.trg, dd )
call SaveInteger( gg_htb_HashData, ExManaBreak, id, dd )
else
set dd = LoadInteger( gg_htb_HashData, ExManaBreak, id )
set dd.c = 0.20 * level
set dd.ExCount = level
endif
set Runner = null
endfunction
вспомогательные системы и структуры
library XAT
function XAT_echo takes string s returns nothing
call DisplayTextToPlayer(GetLocalPlayer(),0,0,s)
endfunction
//Q: HOW TO USE THAT IN MY MAP ???
//A: Simply copy this code into your map. thats all.
// the XAT system... using textmacro ti make it more versatile
globals
integer DataBX_tmp=0
integer array DataBX_max
handle array DataBX_hdl0x0
handle array DataBX_hdl0x1
handle array DataBX_hdl0x2
handle array DataBX_hdl0x3
handle array DataBX_hdl0x4
handle array DataBX_hdl0x5
handle array DataBX_hdl0x6
handle array DataBX_hdl0x7
handle array DataBX_hdl0x8
handle array DataBX_hdl0x9
handle array DataBX_hdl0x10
handle array DataBX_hdl0x11
handle array DataBX_hdl0x12
handle array DataBX_hdl0x13
handle array DataBX_hdl0x14
handle array DataBX_hdl0x15
integer array DataBX_xat0x0
integer array DataBX_xat0x1
integer array DataBX_xat0x2
integer array DataBX_xat0x3
integer array DataBX_xat0x4
integer array DataBX_xat0x5
integer array DataBX_xat0x6
integer array DataBX_xat0x7
integer array DataBX_xat0x8
integer array DataBX_xat0x9
integer array DataBX_xat0x10
integer array DataBX_xat0x11
integer array DataBX_xat0x12
integer array DataBX_xat0x13
integer array DataBX_xat0x14
integer array DataBX_xat0x15
endglobals
// function for attaching data to a handle type object
function SetDataBX takes handle h,integer d returns nothing
local integer i=GetHandleId(h)
set i=i-(i/8191)*8191
if DataBX_hdl0x0[i]==h or DataBX_hdl0x0[i]==null then
set DataBX_xat0x0[i]=d
set DataBX_hdl0x0[i]=h
if 1>DataBX_max[i] then
set DataBX_max[i]=1
endif
elseif DataBX_hdl0x1[i]==h or DataBX_hdl0x1[i]==null then
set DataBX_xat0x1[i]=d
set DataBX_hdl0x1[i]=h
if 2>DataBX_max[i] then
set DataBX_max[i]=2
endif
elseif DataBX_hdl0x2[i]==h or DataBX_hdl0x2[i]==null then
set DataBX_xat0x2[i]=d
set DataBX_hdl0x2[i]=h
if 3>DataBX_max[i] then
set DataBX_max[i]=3
endif
elseif DataBX_hdl0x3[i]==h or DataBX_hdl0x3[i]==null then
set DataBX_xat0x3[i]=d
set DataBX_hdl0x3[i]=h
if 4>DataBX_max[i] then
set DataBX_max[i]=4
endif
elseif DataBX_hdl0x4[i]==h or DataBX_hdl0x4[i]==null then
set DataBX_xat0x4[i]=d
set DataBX_hdl0x4[i]=h
if 5>DataBX_max[i] then
set DataBX_max[i]=5
endif
elseif DataBX_hdl0x5[i]==h or DataBX_hdl0x5[i]==null then
set DataBX_xat0x5[i]=d
set DataBX_hdl0x5[i]=h
if 6>DataBX_max[i] then
set DataBX_max[i]=6
endif
elseif DataBX_hdl0x6[i]==h or DataBX_hdl0x6[i]==null then
set DataBX_xat0x6[i]=d
set DataBX_hdl0x6[i]=h
if 7>DataBX_max[i] then
set DataBX_max[i]=7
endif
elseif DataBX_hdl0x7[i]==h or DataBX_hdl0x7[i]==null then
set DataBX_xat0x7[i]=d
set DataBX_hdl0x7[i]=h
if 8>DataBX_max[i] then
set DataBX_max[i]=8
endif
elseif DataBX_hdl0x8[i]==h or DataBX_hdl0x8[i]==null then
set DataBX_xat0x8[i]=d
set DataBX_hdl0x8[i]=h
if 9>DataBX_max[i] then
set DataBX_max[i]=9
endif
elseif DataBX_hdl0x9[i]==h or DataBX_hdl0x9[i]==null then
set DataBX_xat0x9[i]=d
set DataBX_hdl0x9[i]=h
if 10>DataBX_max[i] then
set DataBX_max[i]=10
endif
elseif DataBX_hdl0x10[i]==h or DataBX_hdl0x10[i]==null then
set DataBX_xat0x10[i]=d
set DataBX_hdl0x10[i]=h
if 11>DataBX_max[i] then
set DataBX_max[i]=11
endif
elseif DataBX_hdl0x11[i]==h or DataBX_hdl0x11[i]==null then
set DataBX_xat0x11[i]=d
set DataBX_hdl0x11[i]=h
if 12>DataBX_max[i] then
set DataBX_max[i]=12
endif
elseif DataBX_hdl0x12[i]==h or DataBX_hdl0x12[i]==null then
set DataBX_xat0x12[i]=d
set DataBX_hdl0x12[i]=h
if 13>DataBX_max[i] then
set DataBX_max[i]=13
endif
elseif DataBX_hdl0x13[i]==h or DataBX_hdl0x13[i]==null then
set DataBX_xat0x13[i]=d
set DataBX_hdl0x13[i]=h
if 14>DataBX_max[i] then
set DataBX_max[i]=14
endif
elseif DataBX_hdl0x14[i]==h or DataBX_hdl0x14[i]==null then
set DataBX_xat0x14[i]=d
set DataBX_hdl0x14[i]=h
if 15>DataBX_max[i] then
set DataBX_max[i]=15
endif
elseif DataBX_hdl0x15[i]==h or DataBX_hdl0x15[i]==null then
set DataBX_xat0x15[i]=d
set DataBX_hdl0x15[i]=h
if 16>DataBX_max[i] then
set DataBX_max[i]=16
endif
else
call XAT_echo("|cffff0000I DON'T PLAY SO =/... FUCK OFF !|r")
endif
endfunction
// function for getting attached data
function GetDataBX takes handle h returns integer
local integer i=GetHandleId(h)
set i=i-(i/8191)*8191
if DataBX_hdl0x0[i]==h or DataBX_hdl0x0[i]==null then
return DataBX_xat0x0[i]
elseif DataBX_hdl0x1[i]==h or DataBX_hdl0x1[i]==null then
return DataBX_xat0x1[i]
elseif DataBX_hdl0x2[i]==h or DataBX_hdl0x2[i]==null then
return DataBX_xat0x2[i]
elseif DataBX_hdl0x3[i]==h or DataBX_hdl0x3[i]==null then
return DataBX_xat0x3[i]
elseif DataBX_hdl0x4[i]==h or DataBX_hdl0x4[i]==null then
return DataBX_xat0x4[i]
elseif DataBX_hdl0x5[i]==h or DataBX_hdl0x5[i]==null then
return DataBX_xat0x5[i]
elseif DataBX_hdl0x6[i]==h or DataBX_hdl0x6[i]==null then
return DataBX_xat0x6[i]
elseif DataBX_hdl0x7[i]==h or DataBX_hdl0x7[i]==null then
return DataBX_xat0x7[i]
elseif DataBX_hdl0x8[i]==h or DataBX_hdl0x8[i]==null then
return DataBX_xat0x8[i]
elseif DataBX_hdl0x9[i]==h or DataBX_hdl0x9[i]==null then
return DataBX_xat0x9[i]
elseif DataBX_hdl0x10[i]==h or DataBX_hdl0x10[i]==null then
return DataBX_xat0x10[i]
elseif DataBX_hdl0x11[i]==h or DataBX_hdl0x11[i]==null then
return DataBX_xat0x11[i]
elseif DataBX_hdl0x12[i]==h or DataBX_hdl0x12[i]==null then
return DataBX_xat0x12[i]
elseif DataBX_hdl0x13[i]==h or DataBX_hdl0x13[i]==null then
return DataBX_xat0x13[i]
elseif DataBX_hdl0x14[i]==h or DataBX_hdl0x14[i]==null then
return DataBX_xat0x14[i]
elseif DataBX_hdl0x15[i]==h or DataBX_hdl0x15[i]==null then
return DataBX_xat0x15[i]
endif
return 0
endfunction
// Clever Clean function...
function RemoveDataBX takes handle h returns nothing
local integer i=GetHandleId(h)
set i=i-(i/8191)*8191
if DataBX_max[i]==0 then
return
elseif DataBX_max[i]==1 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=null
set DataBX_xat0x0[i]=0
set DataBX_max[i]=0
else
return
endif
elseif DataBX_max[i]==2 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x1[i]
set DataBX_xat0x0[i]=DataBX_xat0x1[i]
set DataBX_hdl0x1[i]=null
set DataBX_xat0x1[i]=0
set DataBX_max[i]=1
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=null
set DataBX_xat0x1[i]=0
set DataBX_max[i]=1
else
return
endif
elseif DataBX_max[i]==3 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x2[i]
set DataBX_xat0x0[i]=DataBX_xat0x2[i]
set DataBX_hdl0x2[i]=null
set DataBX_xat0x2[i]=0
set DataBX_max[i]=2
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x2[i]
set DataBX_xat0x1[i]=DataBX_xat0x2[i]
set DataBX_hdl0x2[i]=null
set DataBX_xat0x2[i]=0
set DataBX_max[i]=2
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=null
set DataBX_xat0x2[i]=0
set DataBX_max[i]=2
else
return
endif
elseif DataBX_max[i]==4 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x3[i]
set DataBX_xat0x0[i]=DataBX_xat0x3[i]
set DataBX_hdl0x3[i]=null
set DataBX_xat0x3[i]=0
set DataBX_max[i]=3
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x3[i]
set DataBX_xat0x1[i]=DataBX_xat0x3[i]
set DataBX_hdl0x3[i]=null
set DataBX_xat0x3[i]=0
set DataBX_max[i]=3
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x3[i]
set DataBX_xat0x2[i]=DataBX_xat0x3[i]
set DataBX_hdl0x3[i]=null
set DataBX_xat0x3[i]=0
set DataBX_max[i]=3
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=null
set DataBX_xat0x3[i]=0
set DataBX_max[i]=3
else
return
endif
elseif DataBX_max[i]==5 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x4[i]
set DataBX_xat0x0[i]=DataBX_xat0x4[i]
set DataBX_hdl0x4[i]=null
set DataBX_xat0x4[i]=0
set DataBX_max[i]=4
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x4[i]
set DataBX_xat0x1[i]=DataBX_xat0x4[i]
set DataBX_hdl0x4[i]=null
set DataBX_xat0x4[i]=0
set DataBX_max[i]=4
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x4[i]
set DataBX_xat0x2[i]=DataBX_xat0x4[i]
set DataBX_hdl0x4[i]=null
set DataBX_xat0x4[i]=0
set DataBX_max[i]=4
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x4[i]
set DataBX_xat0x3[i]=DataBX_xat0x4[i]
set DataBX_hdl0x4[i]=null
set DataBX_xat0x4[i]=0
set DataBX_max[i]=4
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=null
set DataBX_xat0x4[i]=0
set DataBX_max[i]=4
else
return
endif
elseif DataBX_max[i]==6 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x5[i]
set DataBX_xat0x0[i]=DataBX_xat0x5[i]
set DataBX_hdl0x5[i]=null
set DataBX_xat0x5[i]=0
set DataBX_max[i]=5
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x5[i]
set DataBX_xat0x1[i]=DataBX_xat0x5[i]
set DataBX_hdl0x5[i]=null
set DataBX_xat0x5[i]=0
set DataBX_max[i]=5
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x5[i]
set DataBX_xat0x2[i]=DataBX_xat0x5[i]
set DataBX_hdl0x5[i]=null
set DataBX_xat0x5[i]=0
set DataBX_max[i]=5
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x5[i]
set DataBX_xat0x3[i]=DataBX_xat0x5[i]
set DataBX_hdl0x5[i]=null
set DataBX_xat0x5[i]=0
set DataBX_max[i]=5
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=DataBX_hdl0x5[i]
set DataBX_xat0x4[i]=DataBX_xat0x5[i]
set DataBX_hdl0x5[i]=null
set DataBX_xat0x5[i]=0
set DataBX_max[i]=5
elseif DataBX_hdl0x5[i]==h then
set DataBX_hdl0x5[i]=null
set DataBX_xat0x5[i]=0
set DataBX_max[i]=5
else
return
endif
elseif DataBX_max[i]==7 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x6[i]
set DataBX_xat0x0[i]=DataBX_xat0x6[i]
set DataBX_hdl0x6[i]=null
set DataBX_xat0x6[i]=0
set DataBX_max[i]=6
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x6[i]
set DataBX_xat0x1[i]=DataBX_xat0x6[i]
set DataBX_hdl0x6[i]=null
set DataBX_xat0x6[i]=0
set DataBX_max[i]=6
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x6[i]
set DataBX_xat0x2[i]=DataBX_xat0x6[i]
set DataBX_hdl0x6[i]=null
set DataBX_xat0x6[i]=0
set DataBX_max[i]=6
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x6[i]
set DataBX_xat0x3[i]=DataBX_xat0x6[i]
set DataBX_hdl0x6[i]=null
set DataBX_xat0x6[i]=0
set DataBX_max[i]=6
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=DataBX_hdl0x6[i]
set DataBX_xat0x4[i]=DataBX_xat0x6[i]
set DataBX_hdl0x6[i]=null
set DataBX_xat0x6[i]=0
set DataBX_max[i]=6
elseif DataBX_hdl0x5[i]==h then
set DataBX_hdl0x5[i]=DataBX_hdl0x6[i]
set DataBX_xat0x5[i]=DataBX_xat0x6[i]
set DataBX_hdl0x6[i]=null
set DataBX_xat0x6[i]=0
set DataBX_max[i]=6
elseif DataBX_hdl0x6[i]==h then
set DataBX_hdl0x6[i]=null
set DataBX_xat0x6[i]=0
set DataBX_max[i]=6
else
return
endif
elseif DataBX_max[i]==8 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x7[i]
set DataBX_xat0x0[i]=DataBX_xat0x7[i]
set DataBX_hdl0x7[i]=null
set DataBX_xat0x7[i]=0
set DataBX_max[i]=7
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x7[i]
set DataBX_xat0x1[i]=DataBX_xat0x7[i]
set DataBX_hdl0x7[i]=null
set DataBX_xat0x7[i]=0
set DataBX_max[i]=7
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x7[i]
set DataBX_xat0x2[i]=DataBX_xat0x7[i]
set DataBX_hdl0x7[i]=null
set DataBX_xat0x7[i]=0
set DataBX_max[i]=7
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x7[i]
set DataBX_xat0x3[i]=DataBX_xat0x7[i]
set DataBX_hdl0x7[i]=null
set DataBX_xat0x7[i]=0
set DataBX_max[i]=7
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=DataBX_hdl0x7[i]
set DataBX_xat0x4[i]=DataBX_xat0x7[i]
set DataBX_hdl0x7[i]=null
set DataBX_xat0x7[i]=0
set DataBX_max[i]=7
elseif DataBX_hdl0x5[i]==h then
set DataBX_hdl0x5[i]=DataBX_hdl0x7[i]
set DataBX_xat0x5[i]=DataBX_xat0x7[i]
set DataBX_hdl0x7[i]=null
set DataBX_xat0x7[i]=0
set DataBX_max[i]=7
elseif DataBX_hdl0x6[i]==h then
set DataBX_hdl0x6[i]=DataBX_hdl0x7[i]
set DataBX_xat0x6[i]=DataBX_xat0x7[i]
set DataBX_hdl0x7[i]=null
set DataBX_xat0x7[i]=0
set DataBX_max[i]=7
elseif DataBX_hdl0x7[i]==h then
set DataBX_hdl0x7[i]=null
set DataBX_xat0x7[i]=0
set DataBX_max[i]=7
else
return
endif
elseif DataBX_max[i]==9 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x8[i]
set DataBX_xat0x0[i]=DataBX_xat0x8[i]
set DataBX_hdl0x8[i]=null
set DataBX_xat0x8[i]=0
set DataBX_max[i]=8
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x8[i]
set DataBX_xat0x1[i]=DataBX_xat0x8[i]
set DataBX_hdl0x8[i]=null
set DataBX_xat0x8[i]=0
set DataBX_max[i]=8
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x8[i]
set DataBX_xat0x2[i]=DataBX_xat0x8[i]
set DataBX_hdl0x8[i]=null
set DataBX_xat0x8[i]=0
set DataBX_max[i]=8
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x8[i]
set DataBX_xat0x3[i]=DataBX_xat0x8[i]
set DataBX_hdl0x8[i]=null
set DataBX_xat0x8[i]=0
set DataBX_max[i]=8
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=DataBX_hdl0x8[i]
set DataBX_xat0x4[i]=DataBX_xat0x8[i]
set DataBX_hdl0x8[i]=null
set DataBX_xat0x8[i]=0
set DataBX_max[i]=8
elseif DataBX_hdl0x5[i]==h then
set DataBX_hdl0x5[i]=DataBX_hdl0x8[i]
set DataBX_xat0x5[i]=DataBX_xat0x8[i]
set DataBX_hdl0x8[i]=null
set DataBX_xat0x8[i]=0
set DataBX_max[i]=8
elseif DataBX_hdl0x6[i]==h then
set DataBX_hdl0x6[i]=DataBX_hdl0x8[i]
set DataBX_xat0x6[i]=DataBX_xat0x8[i]
set DataBX_hdl0x8[i]=null
set DataBX_xat0x8[i]=0
set DataBX_max[i]=8
elseif DataBX_hdl0x7[i]==h then
set DataBX_hdl0x7[i]=DataBX_hdl0x8[i]
set DataBX_xat0x7[i]=DataBX_xat0x8[i]
set DataBX_hdl0x8[i]=null
set DataBX_xat0x8[i]=0
set DataBX_max[i]=8
elseif DataBX_hdl0x8[i]==h then
set DataBX_hdl0x8[i]=null
set DataBX_xat0x8[i]=0
set DataBX_max[i]=8
else
return
endif
elseif DataBX_max[i]==10 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x9[i]
set DataBX_xat0x0[i]=DataBX_xat0x9[i]
set DataBX_hdl0x9[i]=null
set DataBX_xat0x9[i]=0
set DataBX_max[i]=9
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x9[i]
set DataBX_xat0x1[i]=DataBX_xat0x9[i]
set DataBX_hdl0x9[i]=null
set DataBX_xat0x9[i]=0
set DataBX_max[i]=9
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x9[i]
set DataBX_xat0x2[i]=DataBX_xat0x9[i]
set DataBX_hdl0x9[i]=null
set DataBX_xat0x9[i]=0
set DataBX_max[i]=9
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x9[i]
set DataBX_xat0x3[i]=DataBX_xat0x9[i]
set DataBX_hdl0x9[i]=null
set DataBX_xat0x9[i]=0
set DataBX_max[i]=9
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=DataBX_hdl0x9[i]
set DataBX_xat0x4[i]=DataBX_xat0x9[i]
set DataBX_hdl0x9[i]=null
set DataBX_xat0x9[i]=0
set DataBX_max[i]=9
elseif DataBX_hdl0x5[i]==h then
set DataBX_hdl0x5[i]=DataBX_hdl0x9[i]
set DataBX_xat0x5[i]=DataBX_xat0x9[i]
set DataBX_hdl0x9[i]=null
set DataBX_xat0x9[i]=0
set DataBX_max[i]=9
elseif DataBX_hdl0x6[i]==h then
set DataBX_hdl0x6[i]=DataBX_hdl0x9[i]
set DataBX_xat0x6[i]=DataBX_xat0x9[i]
set DataBX_hdl0x9[i]=null
set DataBX_xat0x9[i]=0
set DataBX_max[i]=9
elseif DataBX_hdl0x7[i]==h then
set DataBX_hdl0x7[i]=DataBX_hdl0x9[i]
set DataBX_xat0x7[i]=DataBX_xat0x9[i]
set DataBX_hdl0x9[i]=null
set DataBX_xat0x9[i]=0
set DataBX_max[i]=9
elseif DataBX_hdl0x8[i]==h then
set DataBX_hdl0x8[i]=DataBX_hdl0x9[i]
set DataBX_xat0x8[i]=DataBX_xat0x9[i]
set DataBX_hdl0x9[i]=null
set DataBX_xat0x9[i]=0
set DataBX_max[i]=9
elseif DataBX_hdl0x9[i]==h then
set DataBX_hdl0x9[i]=null
set DataBX_xat0x9[i]=0
set DataBX_max[i]=9
else
return
endif
elseif DataBX_max[i]==11 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x10[i]
set DataBX_xat0x0[i]=DataBX_xat0x10[i]
set DataBX_hdl0x10[i]=null
set DataBX_xat0x10[i]=0
set DataBX_max[i]=10
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x10[i]
set DataBX_xat0x1[i]=DataBX_xat0x10[i]
set DataBX_hdl0x10[i]=null
set DataBX_xat0x10[i]=0
set DataBX_max[i]=10
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x10[i]
set DataBX_xat0x2[i]=DataBX_xat0x10[i]
set DataBX_hdl0x10[i]=null
set DataBX_xat0x10[i]=0
set DataBX_max[i]=10
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x10[i]
set DataBX_xat0x3[i]=DataBX_xat0x10[i]
set DataBX_hdl0x10[i]=null
set DataBX_xat0x10[i]=0
set DataBX_max[i]=10
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=DataBX_hdl0x10[i]
set DataBX_xat0x4[i]=DataBX_xat0x10[i]
set DataBX_hdl0x10[i]=null
set DataBX_xat0x10[i]=0
set DataBX_max[i]=10
elseif DataBX_hdl0x5[i]==h then
set DataBX_hdl0x5[i]=DataBX_hdl0x10[i]
set DataBX_xat0x5[i]=DataBX_xat0x10[i]
set DataBX_hdl0x10[i]=null
set DataBX_xat0x10[i]=0
set DataBX_max[i]=10
elseif DataBX_hdl0x6[i]==h then
set DataBX_hdl0x6[i]=DataBX_hdl0x10[i]
set DataBX_xat0x6[i]=DataBX_xat0x10[i]
set DataBX_hdl0x10[i]=null
set DataBX_xat0x10[i]=0
set DataBX_max[i]=10
elseif DataBX_hdl0x7[i]==h then
set DataBX_hdl0x7[i]=DataBX_hdl0x10[i]
set DataBX_xat0x7[i]=DataBX_xat0x10[i]
set DataBX_hdl0x10[i]=null
set DataBX_xat0x10[i]=0
set DataBX_max[i]=10
elseif DataBX_hdl0x8[i]==h then
set DataBX_hdl0x8[i]=DataBX_hdl0x10[i]
set DataBX_xat0x8[i]=DataBX_xat0x10[i]
set DataBX_hdl0x10[i]=null
set DataBX_xat0x10[i]=0
set DataBX_max[i]=10
elseif DataBX_hdl0x9[i]==h then
set DataBX_hdl0x9[i]=DataBX_hdl0x10[i]
set DataBX_xat0x9[i]=DataBX_xat0x10[i]
set DataBX_hdl0x10[i]=null
set DataBX_xat0x10[i]=0
set DataBX_max[i]=10
elseif DataBX_hdl0x10[i]==h then
set DataBX_hdl0x10[i]=null
set DataBX_xat0x10[i]=0
set DataBX_max[i]=10
else
return
endif
elseif DataBX_max[i]==12 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x11[i]
set DataBX_xat0x0[i]=DataBX_xat0x11[i]
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x11[i]
set DataBX_xat0x1[i]=DataBX_xat0x11[i]
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x11[i]
set DataBX_xat0x2[i]=DataBX_xat0x11[i]
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x11[i]
set DataBX_xat0x3[i]=DataBX_xat0x11[i]
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=DataBX_hdl0x11[i]
set DataBX_xat0x4[i]=DataBX_xat0x11[i]
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
elseif DataBX_hdl0x5[i]==h then
set DataBX_hdl0x5[i]=DataBX_hdl0x11[i]
set DataBX_xat0x5[i]=DataBX_xat0x11[i]
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
elseif DataBX_hdl0x6[i]==h then
set DataBX_hdl0x6[i]=DataBX_hdl0x11[i]
set DataBX_xat0x6[i]=DataBX_xat0x11[i]
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
elseif DataBX_hdl0x7[i]==h then
set DataBX_hdl0x7[i]=DataBX_hdl0x11[i]
set DataBX_xat0x7[i]=DataBX_xat0x11[i]
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
elseif DataBX_hdl0x8[i]==h then
set DataBX_hdl0x8[i]=DataBX_hdl0x11[i]
set DataBX_xat0x8[i]=DataBX_xat0x11[i]
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
elseif DataBX_hdl0x9[i]==h then
set DataBX_hdl0x9[i]=DataBX_hdl0x11[i]
set DataBX_xat0x9[i]=DataBX_xat0x11[i]
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
elseif DataBX_hdl0x10[i]==h then
set DataBX_hdl0x10[i]=DataBX_hdl0x11[i]
set DataBX_xat0x10[i]=DataBX_xat0x11[i]
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
elseif DataBX_hdl0x11[i]==h then
set DataBX_hdl0x11[i]=null
set DataBX_xat0x11[i]=0
set DataBX_max[i]=11
else
return
endif
elseif DataBX_max[i]==13 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x12[i]
set DataBX_xat0x0[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x12[i]
set DataBX_xat0x1[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x12[i]
set DataBX_xat0x2[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x12[i]
set DataBX_xat0x3[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=DataBX_hdl0x12[i]
set DataBX_xat0x4[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x5[i]==h then
set DataBX_hdl0x5[i]=DataBX_hdl0x12[i]
set DataBX_xat0x5[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x6[i]==h then
set DataBX_hdl0x6[i]=DataBX_hdl0x12[i]
set DataBX_xat0x6[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x7[i]==h then
set DataBX_hdl0x7[i]=DataBX_hdl0x12[i]
set DataBX_xat0x7[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x8[i]==h then
set DataBX_hdl0x8[i]=DataBX_hdl0x12[i]
set DataBX_xat0x8[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x9[i]==h then
set DataBX_hdl0x9[i]=DataBX_hdl0x12[i]
set DataBX_xat0x9[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x10[i]==h then
set DataBX_hdl0x10[i]=DataBX_hdl0x12[i]
set DataBX_xat0x10[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x11[i]==h then
set DataBX_hdl0x11[i]=DataBX_hdl0x12[i]
set DataBX_xat0x11[i]=DataBX_xat0x12[i]
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
elseif DataBX_hdl0x12[i]==h then
set DataBX_hdl0x12[i]=null
set DataBX_xat0x12[i]=0
set DataBX_max[i]=12
else
return
endif
elseif DataBX_max[i]==14 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x13[i]
set DataBX_xat0x0[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x13[i]
set DataBX_xat0x1[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x13[i]
set DataBX_xat0x2[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x13[i]
set DataBX_xat0x3[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=DataBX_hdl0x13[i]
set DataBX_xat0x4[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x5[i]==h then
set DataBX_hdl0x5[i]=DataBX_hdl0x13[i]
set DataBX_xat0x5[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x6[i]==h then
set DataBX_hdl0x6[i]=DataBX_hdl0x13[i]
set DataBX_xat0x6[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x7[i]==h then
set DataBX_hdl0x7[i]=DataBX_hdl0x13[i]
set DataBX_xat0x7[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x8[i]==h then
set DataBX_hdl0x8[i]=DataBX_hdl0x13[i]
set DataBX_xat0x8[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x9[i]==h then
set DataBX_hdl0x9[i]=DataBX_hdl0x13[i]
set DataBX_xat0x9[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x10[i]==h then
set DataBX_hdl0x10[i]=DataBX_hdl0x13[i]
set DataBX_xat0x10[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x11[i]==h then
set DataBX_hdl0x11[i]=DataBX_hdl0x13[i]
set DataBX_xat0x11[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x12[i]==h then
set DataBX_hdl0x12[i]=DataBX_hdl0x13[i]
set DataBX_xat0x12[i]=DataBX_xat0x13[i]
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
elseif DataBX_hdl0x13[i]==h then
set DataBX_hdl0x13[i]=null
set DataBX_xat0x13[i]=0
set DataBX_max[i]=13
else
return
endif
elseif DataBX_max[i]==15 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x14[i]
set DataBX_xat0x0[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x14[i]
set DataBX_xat0x1[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x14[i]
set DataBX_xat0x2[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x14[i]
set DataBX_xat0x3[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=DataBX_hdl0x14[i]
set DataBX_xat0x4[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x5[i]==h then
set DataBX_hdl0x5[i]=DataBX_hdl0x14[i]
set DataBX_xat0x5[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x6[i]==h then
set DataBX_hdl0x6[i]=DataBX_hdl0x14[i]
set DataBX_xat0x6[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x7[i]==h then
set DataBX_hdl0x7[i]=DataBX_hdl0x14[i]
set DataBX_xat0x7[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x8[i]==h then
set DataBX_hdl0x8[i]=DataBX_hdl0x14[i]
set DataBX_xat0x8[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x9[i]==h then
set DataBX_hdl0x9[i]=DataBX_hdl0x14[i]
set DataBX_xat0x9[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x10[i]==h then
set DataBX_hdl0x10[i]=DataBX_hdl0x14[i]
set DataBX_xat0x10[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x11[i]==h then
set DataBX_hdl0x11[i]=DataBX_hdl0x14[i]
set DataBX_xat0x11[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x12[i]==h then
set DataBX_hdl0x12[i]=DataBX_hdl0x14[i]
set DataBX_xat0x12[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x13[i]==h then
set DataBX_hdl0x13[i]=DataBX_hdl0x14[i]
set DataBX_xat0x13[i]=DataBX_xat0x14[i]
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
elseif DataBX_hdl0x14[i]==h then
set DataBX_hdl0x14[i]=null
set DataBX_xat0x14[i]=0
set DataBX_max[i]=14
else
return
endif
elseif DataBX_max[i]==16 then
if DataBX_hdl0x0[i]==h then
set DataBX_hdl0x0[i]=DataBX_hdl0x15[i]
set DataBX_xat0x0[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x1[i]==h then
set DataBX_hdl0x1[i]=DataBX_hdl0x15[i]
set DataBX_xat0x1[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x2[i]==h then
set DataBX_hdl0x2[i]=DataBX_hdl0x15[i]
set DataBX_xat0x2[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x3[i]==h then
set DataBX_hdl0x3[i]=DataBX_hdl0x15[i]
set DataBX_xat0x3[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x4[i]==h then
set DataBX_hdl0x4[i]=DataBX_hdl0x15[i]
set DataBX_xat0x4[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x5[i]==h then
set DataBX_hdl0x5[i]=DataBX_hdl0x15[i]
set DataBX_xat0x5[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x6[i]==h then
set DataBX_hdl0x6[i]=DataBX_hdl0x15[i]
set DataBX_xat0x6[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x7[i]==h then
set DataBX_hdl0x7[i]=DataBX_hdl0x15[i]
set DataBX_xat0x7[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x8[i]==h then
set DataBX_hdl0x8[i]=DataBX_hdl0x15[i]
set DataBX_xat0x8[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x9[i]==h then
set DataBX_hdl0x9[i]=DataBX_hdl0x15[i]
set DataBX_xat0x9[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x10[i]==h then
set DataBX_hdl0x10[i]=DataBX_hdl0x15[i]
set DataBX_xat0x10[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x11[i]==h then
set DataBX_hdl0x11[i]=DataBX_hdl0x15[i]
set DataBX_xat0x11[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x12[i]==h then
set DataBX_hdl0x12[i]=DataBX_hdl0x15[i]
set DataBX_xat0x12[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x13[i]==h then
set DataBX_hdl0x13[i]=DataBX_hdl0x15[i]
set DataBX_xat0x13[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x14[i]==h then
set DataBX_hdl0x14[i]=DataBX_hdl0x15[i]
set DataBX_xat0x14[i]=DataBX_xat0x15[i]
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
elseif DataBX_hdl0x15[i]==h then
set DataBX_hdl0x15[i]=null
set DataBX_xat0x15[i]=0
set DataBX_max[i]=15
else
return
endif
else
return
endif
endfunction
//#####################################
// CREATE FUNCTION SET
//#####################################
//##########################################
//##########################################
// Intialize function set
// will generate...
// function SetDataBX takes handle h,integer d returns nothing
// h = your object, d = data what you need to attach currently an integer (but you can simple attach something else by intialazing a another textmacro...)
// function GetDataBX takes handle h returns integer
// h = your object will return currently attached data (integer)
// function RemoveDataBX takes handle h returns nothing
// h = your object will clear the data (free slot what can be used (maybe) by other objects) so don't forget to clear it. ;)
function Debug takes string value returns nothing
call DisplayTextToPlayer( DebugPlayer, 0.00, 0.00, value )
endfunction
function I2Sx takes integer id, integer key returns string
return GetAbilityEffectById(id,bj_lastUsedEffect,key)
endfunction
function I2T takes integer TimerId returns timer
call SaveFogStateHandle( gg_htb_HashData,0,0,ConvertFogState( TimerId - offset ) )
return LoadTimerHandle( gg_htb_HashData,0,0 )
endfunction
function DisposeTrigger takes trigger t returns nothing
set nTriggerIndex = nTriggerIndex + 1
set DispTriggers[nTriggerIndex] = t
set Elapsed[nTriggerIndex] = TimerGetElapsed( DispTimer ) + 60
if nTriggerIndex > 8000 then
call BJDebugMsg(DEBUG + I2Sx( 'A05M', 1) )
call BJDebugMsg(INFO)
endif
endfunction
struct DamageData
unit attacker
unit attacked
unit dummy
real dmg
real hp
real c
effect fx
integer id
integer time
real rx
real ry
player pl
group grp
timer trix
boolean IsCheck
method clear takes nothing returns nothing
set this.attacker = null
set this.attacked = null
set this.dummy = null
set this.dmg = 0.00
set this.hp = 0.00
set this.id = 0
set this.time = 0
set this.fx = null
set this.grp = null
set this.trix = null
set this.IsCheck = false
endmethod
endstruct
struct TextTag
texttag tt
player pl
integer Alpha
real tx
real ty
method clear takes nothing returns nothing
set this.tt = null
set this.pl = null
set this.Alpha = 0
set this.tx = 0.00
set this.ty = 0.00
endmethod
endstruct
function TextTagAlpha takes nothing returns nothing
local timer t = GetExpiredTimer( )
local TextTag st = GetDataBX( t )
if IsVisibleToPlayer( st.tx, st.ty, GetLocalPlayer( ) ) then
call SetTextTagVisibility( st.tt, true )
else
call SetTextTagVisibility( st.tt, false )
endif
if ( st.Alpha >= 255 ) then
call PauseTimer( t )
call RemoveDataBX( t )
call DestroyTextTag( st.tt )
call DestroyTimer( t )
call st.clear( )
call st.destroy( )
else
set st.Alpha = st.Alpha + 3
if st.Alpha > 255 then
set st.Alpha = 255
endif
call SetTextTagColor( st.tt, 255, 255, 255, 255 - st.Alpha )
endif
set t = null
endfunction
function FloatingTextFadeout takes player pl, unit whichUnit, string str returns nothing
local timer t = CreateTimer( )
local TextTag st = TextTag.create( )
set st.tt = CreateTextTag( )
set st.tx = GetUnitX( whichUnit )
set st.ty = GetUnitY( whichUnit )
set st.Alpha = 7
set st.pl = pl
call SetDataBX( t, st )
call SetTextTagText( st.tt, str, 0.023 )
call SetTextTagPos( st.tt, st.tx, st.ty, 60.00 )
call SetTextTagVelocity( st.tt, 0.00, 0.035 )
call SetTextTagColor( st.tt, 0, 0, 0, 255 )
call SetTextTagPermanent( st.tt, false )
call SetTextTagVisibility( st.tt, false )
if ( GetLocalPlayer( ) == pl and pl != Player( 12 ) ) then
call SetTextTagVisibility( st.tt, true )
elseif ( pl == Player( 12 ) ) then
call SetTextTagVisibility( st.tt, true )
endif
call TimerStart( t, 0.05, true, function TextTagAlpha )
set t = null
endfunction
struct TriggerData extends DamageData
trigger trg
triggeraction tra
triggercondition trc
integer ExCount
item vial
method RemoveTrigger takes nothing returns nothing
call RemoveDataBX( this.trg )
call RemoveDataBX( this.trix )
if IsTriggerEnabled( this.trg ) then
call DisableTrigger( this.trg )
endif
call TriggerRemoveCondition( this.trg, this.trc )
call TriggerRemoveAction( this.trg, this.tra )
call TriggerClearActions( this.trg )
call TriggerClearConditions( this.trg )
if this.trix != null then
call DestroyTimer( this.trix )
endif
call DisposeTrigger( this.trg )
set this.attacker = null
set this.attacked = null
set this.trg = null
set this.trc = null
set this.tra = null
set this.trix = null
set this.pl = null
set this.dmg = 0.00
set this.c = 0.00
set this.time = 0
return
endmethod
endstruct
endlibrary
'A06V' - способность на основе абилки рунных браслетов, фактор снижени урона от магии 2.
'A081' - способность на основе абилки "Благословение Эллуны", фактор снижения урона от магии тот же, применяется для иллюзий.
'A081' - способность на основе абилки "Благословение Эллуны", фактор снижения урона от магии тот же, применяется для иллюзий.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. quq_CCCP
'A081' - способность на основе абилки "Благословение Эллуны", фактор снижения урона от магии тот же, применяется для иллюзий.
call TriggerRegisterUnitEvent( gg_trg_Summon_Manaburn_Images, Runner, EVENT_UNIT_SUMMON )
И откуда константы типо 1.34 и 0.405?
call TriggerRegisterUnitEvent( gg_trg_Summon_Manaburn_Images, Runner, EVENT_UNIT_SUMMON ) - это для того чтобы в будушем повешать на иллюзиии событие - юнит получает урон, т.к манабурн работает у иллюзий.
1.34 это фактор урона, чтобы получить полный магический урон без учета стандартного маг резиста героя 25%, ибо для работы магического урона как следует, мы блокируем отрецательный урон снижением хп и наносим магический урон, предварительно удалив скилл маг резиста, так же вычитая маг резист, ибо рунные браслеты складываются с базовым маг резистом героя.
0.405 - порог здоровья живого юнита, если у юнита осталось менее чем 0.405 хп после урона, то значит он уже умер, и вручать ему абилку для ослеживания урона бессмыслено да и опасно что либо делать с суммонами,они быстро удаляются из памяти и попытка вручить им способность или что то изменить может закончится фаталом.
Ред. Clamp
С другой стороны, действительно есть момент, что могут быть использованы стандартные способности, тогда сложнее.