Name | Type | is_array | initial_value |
BB_Angle | real | Yes | |
BB_Caster | unit | Yes | |
BB_Check | boolean | Yes | |
BB_Damage | real | Yes | |
BB_Distance | real | Yes | |
BB_Integers | integer | Yes | |
BB_Interval | real | Yes | |
BB_Speed | real | Yes | |
BB_Timer | real | Yes | |
CreateNewUnit | boolean | No | |
currentAbilityLevel | integer | No | |
currentCastingPlayer | player | No | |
currentCastingUnit | unit | No | |
currentHeroAbility | abilcode | No | |
currentHeroAbilityLevel | integer | No | |
CurrentHeroExperience | integer | No | |
currentHeroLevel | integer | No | |
currentLearnedAbility | abilcode | No | |
currentShiftUnit | unit | No | |
CurrentSpecialNumber | integer | No | |
CurrentUnitHPMP | real | No | |
ForceFour | force | No | |
ForceOne | force | No | |
ForceThree | force | No | |
ForceTwo | force | No | |
GC_AOE | real | Yes | |
GC_Caster | unit | Yes | |
GC_Check | boolean | Yes | |
GC_Counter | real | Yes | |
GC_Damage | real | Yes | |
GC_Delay | real | Yes | |
GC_Dummy | unit | Yes | |
GC_Group | group | No | |
GC_Integers | integer | Yes | |
GC_Speed | real | Yes | |
HCS_Ange | real | Yes | |
HCS_Caster | unit | Yes | |
HCS_Check | boolean | Yes | |
HCS_Damage | real | Yes | |
HCS_Distance | real | Yes | |
HCS_Integers | integer | Yes | |
HCS_Interval | real | Yes | |
HCS_Speed | real | Yes | |
HCS_Timer | real | Yes | |
isAbility | boolean | No | |
KillTotals | integer | Yes | |
KS_AOE | real | Yes | |
KS_Caster | unit | Yes | |
KS_Damage | real | Yes | |
KS_Dummy | unit | Yes | |
KS_Duration | real | Yes | |
KS_Group | group | No | |
KS_Integers | integer | Yes | |
KS_Interval | real | Yes | |
KS_Timer | real | Yes | |
LeaderBoard | leaderboard | No | |
MVC_PickGroup | group | No | |
MVC_Point | location | Yes | |
MVC_UnitType | unitcode | Yes | |
NUM_HEROES | integer | No | 20 |
pocSkillPointCount | integer | No | |
powerOfChaosLvl2 | boolean | No | |
RA_Color | real | Yes | |
RA_Counter | real | Yes | |
RA_Dummy | unit | Yes | |
RA_Duration | real | Yes | |
RA_HeightInc | boolean | Yes | |
RA_Integers | integer | Yes | |
RANDOM_HERO_ARRAY | unitcode | Yes | |
randomType | unitcode | No | |
RAS_Color | real | No | |
RAS_Dummy | unit | No | |
RAS_Duration | real | No | |
RAS_HeightInc | boolean | No | |
SB_Angle | real | Yes | |
SB_Caster | unit | Yes | |
SB_Check | boolean | Yes | |
SB_CountMove | real | Yes | |
SB_Damage | real | Yes | |
SB_Distance | real | Yes | |
SB_Integers | integer | Yes | |
SB_Interval | real | Yes | |
SB_Point | location | Yes | |
SB_Speed | real | Yes | |
SB_Timer | real | Yes | |
shadowShifterAbilityEarthLevel | integer | Yes | |
shadowShifterAbilitySeaLevel | integer | Yes | |
shadowShifterAbilityStarLevel | integer | Yes | |
shadowShifterInUltimate | boolean | Yes | |
shadowShifterLevelsUp | integer | Yes | |
TargetType | unitcode | No |
function Trig_Power_of_Chaos_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00O' ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Func017C takes nothing returns boolean
if ( not ( CountUnitsInGroup(GetUnitsOfPlayerAndTypeId(GetOwningPlayer(GetTriggerUnit()), 'o00C')) >= 2 ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Func019C takes nothing returns boolean
if ( not ( CountUnitsInGroup(GetUnitsOfPlayerAndTypeId(GetOwningPlayer(GetTriggerUnit()), 'o00C')) >= 3 ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Func021C takes nothing returns boolean
if ( not ( CountUnitsInGroup(GetUnitsOfPlayerAndTypeId(GetOwningPlayer(GetTriggerUnit()), 'o00C')) >= 4 ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Func023C takes nothing returns boolean
if ( not ( CountUnitsInGroup(GetUnitsOfPlayerAndTypeId(GetOwningPlayer(GetTriggerUnit()), 'o00B')) == 1 ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Func025001 takes nothing returns boolean
return ( IsUnitSelected(GetTriggerUnit(), GetOwningPlayer(GetTriggerUnit())) == true )
endfunction
function Trig_Power_of_Chaos_Func028C takes nothing returns boolean
if ( not ( udg_powerOfChaosLvl2 == true ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Func030Func001C takes nothing returns boolean
if ( not ( IsUnitDeadBJ(GetEnumUnit()) == true ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Func030A takes nothing returns nothing
if ( Trig_Power_of_Chaos_Func030Func001C() ) then
call ReviveHeroLoc( GetEnumUnit(), GetRectCenter(GetPlayableMapRect()), false )
else
call DoNothing( )
endif
call ShowUnitHide( GetEnumUnit() )
call SetUnitOwner( GetEnumUnit(), Player(PLAYER_NEUTRAL_PASSIVE), false )
endfunction
function Trig_Power_of_Chaos_Func031Func001C takes nothing returns boolean
if ( not ( IsUnitDeadBJ(GetEnumUnit()) == true ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Func031A takes nothing returns nothing
if ( Trig_Power_of_Chaos_Func031Func001C() ) then
call ReviveHeroLoc( GetEnumUnit(), GetRectCenter(GetPlayableMapRect()), false )
else
call DoNothing( )
endif
call ShowUnitHide( GetEnumUnit() )
call SetUnitOwner( GetEnumUnit(), Player(PLAYER_NEUTRAL_PASSIVE), false )
endfunction
function Trig_Power_of_Chaos_Func032Func001C takes nothing returns boolean
if ( not ( IsUnitDeadBJ(GetEnumUnit()) == true ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Func032A takes nothing returns nothing
if ( Trig_Power_of_Chaos_Func032Func001C() ) then
call ReviveHeroLoc( GetEnumUnit(), GetRectCenter(GetPlayableMapRect()), false )
else
call DoNothing( )
endif
call ShowUnitHide( GetEnumUnit() )
call SetUnitOwner( GetEnumUnit(), Player(PLAYER_NEUTRAL_PASSIVE), false )
endfunction
function Trig_Power_of_Chaos_Func039C takes nothing returns boolean
if ( not ( udg_shadowShifterAbilityStarLevel[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] > 0 ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Func042C takes nothing returns boolean
if ( not ( udg_shadowShifterAbilityEarthLevel[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] > 0 ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Func045C takes nothing returns boolean
if ( not ( udg_shadowShifterAbilitySeaLevel[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] > 0 ) ) then
return false
endif
return true
endfunction
function Trig_Power_of_Chaos_Actions takes nothing returns nothing
local integer udg_pocSkillPointCount
local integer udg_currentAbilityLevel
local integer udg_currentHeroLevel
local unit udg_currentShiftUnit
set udg_powerOfChaosLvl2 = false
set udg_currentShiftUnit = GetTriggerUnit()
set udg_currentHeroLevel = GetHeroLevel(GetTriggerUnit())
set udg_shadowShifterInUltimate[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = true
set udg_pocSkillPointCount = GetHeroSkillPoints(GetTriggerUnit())
call ModifyHeroSkillPoints( GetTriggerUnit(), bj_MODIFYMETHOD_SET, 0 )
// Disable Shapeshifting
call UnitRemoveAbilityBJ( 'A00S', GetTriggerUnit() )
call UnitRemoveAbilityBJ( 'A00T', GetTriggerUnit() )
call UnitRemoveAbilityBJ( 'A00P', GetTriggerUnit() )
call ConditionalTriggerExecute( gg_trg_TriggerToVariable )
// Unhide or Create Earth Form
if ( Trig_Power_of_Chaos_Func017C() ) then
set udg_TargetType = 'N010'
call TriggerExecute( gg_trg_CreateOrUnhide )
else
endif
// Unhide or Create Sea Form
if ( Trig_Power_of_Chaos_Func019C() ) then
set udg_TargetType = 'H00K'
call TriggerExecute( gg_trg_CreateOrUnhide )
else
endif
// Unhide or Create Star Form
if ( Trig_Power_of_Chaos_Func021C() ) then
set udg_TargetType = 'U008'
call TriggerExecute( gg_trg_CreateOrUnhide )
else
endif
// Check for Power of Chaos (lvl2)
if ( Trig_Power_of_Chaos_Func023C() ) then
set udg_powerOfChaosLvl2 = true
else
endif
// Reselect the units
if ( Trig_Power_of_Chaos_Func025001() ) then
call SelectUnitForPlayerSingle( GetEnumUnit(), GetOwningPlayer(GetTriggerUnit()) )
else
call DoNothing( )
endif
call TriggerSleepAction( 31.00 )
// If level 2, then wait longer.
if ( Trig_Power_of_Chaos_Func028C() ) then
call PolledWait( 29.00 )
else
call DoNothing( )
endif
// Remove Units
call ForGroupBJ( GetUnitsOfPlayerAndTypeId(GetOwningPlayer(GetTriggerUnit()), 'U008'), function Trig_Power_of_Chaos_Func030A )
call ForGroupBJ( GetUnitsOfPlayerAndTypeId(GetOwningPlayer(GetTriggerUnit()), 'H00K'), function Trig_Power_of_Chaos_Func031A )
call ForGroupBJ( GetUnitsOfPlayerAndTypeId(GetOwningPlayer(GetTriggerUnit()), 'N010'), function Trig_Power_of_Chaos_Func032A )
// This is done to allow level-ups during the Ultimate
call ModifyHeroSkillPoints( GetTriggerUnit(), bj_MODIFYMETHOD_SET, udg_pocSkillPointCount )
call ModifyHeroSkillPoints( GetTriggerUnit(), bj_MODIFYMETHOD_ADD, udg_shadowShifterLevelsUp[GetConvertedPlayerId(udg_currentCastingPlayer)] )
set udg_shadowShifterLevelsUp[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = 0
// Re-enable Shapeshifting
set udg_currentAbilityLevel = udg_shadowShifterAbilityStarLevel[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))]
if ( Trig_Power_of_Chaos_Func039C() ) then
call UnitAddAbilityBJ( 'A00P', GetTriggerUnit() )
set udg_shadowShifterAbilityStarLevel[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = 1
else
call DoNothing( )
endif
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = ( udg_currentAbilityLevel - 1 )
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
call ModifyHeroSkillPoints( GetTriggerUnit(), bj_MODIFYMETHOD_ADD, 1 )
call SelectHeroSkill(GetTriggerUnit(), 'A00P' )
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
set udg_currentAbilityLevel = udg_shadowShifterAbilityEarthLevel[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))]
if ( Trig_Power_of_Chaos_Func042C() ) then
call UnitAddAbilityBJ( 'A00S', GetTriggerUnit() )
set udg_shadowShifterAbilityEarthLevel[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = 1
else
call DoNothing( )
endif
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = ( udg_currentAbilityLevel - 1 )
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
call ModifyHeroSkillPoints( GetTriggerUnit(), bj_MODIFYMETHOD_ADD, 1 )
call SelectHeroSkill( GetTriggerUnit(), 'A00S' )
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
set udg_currentAbilityLevel = udg_shadowShifterAbilitySeaLevel[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))]
if ( Trig_Power_of_Chaos_Func045C() ) then
call UnitAddAbilityBJ( 'A00T', GetTriggerUnit() )
set udg_shadowShifterAbilitySeaLevel[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = 1
else
call DoNothing( )
endif
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = ( udg_currentAbilityLevel - 1 )
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
call ModifyHeroSkillPoints( GetTriggerUnit(), bj_MODIFYMETHOD_ADD, 1 )
call SelectHeroSkill(GetTriggerUnit(), 'A00T' )
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
set udg_shadowShifterInUltimate[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = false
endfunction
//===========================================================================
function InitTrig_Power_of_Chaos takes nothing returns nothing
set gg_trg_Power_of_Chaos = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Power_of_Chaos, EVENT_PLAYER_UNIT_SPELL_FINISH )
call TriggerAddCondition( gg_trg_Power_of_Chaos, Condition( function Trig_Power_of_Chaos_Conditions ) )
call TriggerAddAction( gg_trg_Power_of_Chaos, function Trig_Power_of_Chaos_Actions )
endfunction