function H2I takes handle h returns integer
return h
return 0
endfunction
// ===========================
function LocalVars takes nothing returns gamecache
if udg_cache == null then
call FlushGameCache(InitGameCache("cache"))
set udg_cache=InitGameCache("cache")
endif
return udg_cache
endfunction
function SetHandleHandle takes handle subject, string name, handle value returns nothing
if value==null then
call FlushStoredInteger(LocalVars(),I2S(H2I(subject)),name)
else
call StoreInteger(LocalVars(), I2S(H2I(subject)), name, H2I(value))
endif
endfunction
function SetHandleBoolean takes handle subject, string name, boolean value returns nothing
if value==null then
call FlushStoredBoolean(LocalVars(),I2S(H2I(subject)),name)
else
call StoreBoolean(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction
function SetHandleInt takes handle subject, string name, integer value returns nothing
if value==0 then
call FlushStoredInteger(LocalVars(),I2S(H2I(subject)),name)
else
call StoreInteger(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction
function SetHandleReal takes handle subject, string name, real value returns nothing
if value==0 then
call FlushStoredReal(LocalVars(), I2S(H2I(subject)), name)
else
call StoreReal(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction
function SetHandleString takes handle subject, string name, string value returns nothing
if value==null then
call FlushStoredString(LocalVars(), I2S(H2I(subject)), name)
else
call StoreString(LocalVars(), I2S(H2I(subject)), name, value)
endif
endfunction
function GetHandleHandle takes handle subject, string name returns handle
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleBoolean takes handle subject, string name returns boolean
return GetStoredBoolean(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleInt takes handle subject, string name returns integer
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleReal takes handle subject, string name returns real
return GetStoredReal(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleString takes handle subject, string name returns string
return GetStoredString(LocalVars(), I2S(H2I(subject)), name)
endfunction
function GetHandleUnit takes handle subject, string name returns unit
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleTimer takes handle subject, string name returns timer
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleTrigger takes handle subject, string name returns trigger
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleEffect takes handle subject, string name returns effect
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleGroup takes handle subject, string name returns group
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandleTextTag takes handle subject, string name returns texttag
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function GetHandlePlayer takes handle subject, string name returns player
return GetStoredInteger(LocalVars(), I2S(H2I(subject)), name)
return null
endfunction
function FlushHandleLocals takes handle subject returns nothing
call FlushStoredMission(LocalVars(), I2S(H2I(subject)) )
endfunction
function JumpParabola takes real dist, real maxdist,real curve returns real
local real t = (dist*2)/maxdist-1
return (-t*t+1)*(maxdist/curve)
endfunction
function MoveLoop takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit jumper = GetHandleUnit( t, "jumper" )
local real timeleft = GetHandleReal( t, "time" ) - 0.01
local real time = GetHandleReal( t, "maxtime" )
local real dist = GetHandleReal( t, "dist" )
local location whereto = PolarProjectionBJ( GetUnitLoc( jumper ), ( 0.01*dist/time ), GetUnitFacing( jumper ) )
local real Dist2 = GetHandleReal( t, "Dist2" ) + ( 0.01* ( dist / time ) )
call SetUnitX( jumper, GetLocationX( whereto ) )
call SetUnitY( jumper, GetLocationY( whereto ) )
call SetUnitFlyHeight( jumper, JumpParabola( Dist2, dist, 1.8 ), 0 )
if timeleft == 0.00 then
call PauseTimer( t )
call UnitRemoveAbility( jumper, 'Amrf' )
call PauseUnit( jumper, false )
call SetUnitInvulnerable( jumper, false )
call SetUnitPathing( jumper, true )
call FlushHandleLocals( t )
call DestroyTimer( t )
endif
call SetHandleReal( t, "time", timeleft )
call SetHandleReal( t, "Dist2", Dist2 )
call RemoveLocation( whereto )
set t = null
set jumper = null
set whereto = null
endfunction
function Jump takes unit whichUnit, real dist, real time returns nothing
local timer t = CreateTimer()
if dist >= 25 then
call SetUnitPathing( whichUnit, false )
call UnitAddAbility( whichUnit, 'Amrf' )
call SetUnitInvulnerable( whichUnit, true )
call PauseUnit( whichUnit, true )
call SetHandleHandle( t, "jumper", whichUnit )
call SetHandleReal( t, "dist", dist )
call SetHandleReal( t, "Dist2", 0.00 )
call SetHandleReal( t, "maxtime", time )
call SetHandleReal( t, "time", time )
call TimerStart( t, 0.01, true, function MoveLoop )
endif
set t = null
endfunction
function Bounty takes player whichplayer, integer bounty, real x, real y returns nothing
local texttag t=CreateTextTag()
local string s="+"
call AdjustPlayerStateBJ( bounty, whichplayer, PLAYER_STATE_RESOURCE_GOLD )
if bounty<0 then
set s=""
endif
call SetTextTagText(t,s+I2S(bounty),0.025)
call SetTextTagPos(t,x,y, 0.00)
call SetTextTagColor(t,255,220,0,255)
call SetTextTagVelocity(t,0,0.03)
if (GetLocalPlayer()==whichplayer) then
call SetTextTagVisibility(t,true)
set s="UI\\Feedback\\GoldCredit\\GoldCredit.mdl"
else
call SetTextTagVisibility(t,false)
set s=""
endif
call DestroyEffect(AddSpecialEffect(s,x,y))
call SetTextTagFadepoint(t,2)
call SetTextTagLifespan(t,3)
call SetTextTagPermanent(t,false)
set t=null
endfunction
function BountyLoc takes player whichPlayer, integer bounty, location loc returns nothing
call Bounty(whichPlayer,bounty,GetLocationX(loc),GetLocationY(loc))
endfunction
function PolarProjectionX takes real source, real dist, real angle returns real
return source + dist * Cos(angle * bj_DEGTORAD)
endfunction
function PolarProjectionY takes real source, real dist, real angle returns real
return source + dist * Sin(angle * bj_DEGTORAD)
endfunction
function WhirlLoop takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit whirl = GetHandleUnit( t, "whirl" )
local real dmg = GetHandleReal( t, "dmg" )
local real AOE = GetHandleReal( t, "AOE" )
local real dist = GetHandleReal( t, "dist" )
local real time = GetHandleReal( t, "time" )
local real timeleft = GetHandleReal( t, "timeleft" ) - 0.01
local group g = CreateGroup()
local unit u
local real x = PolarProjectionX( GetUnitX( whirl ), dist/( 100*time ), GetUnitFacing( whirl ) )
local real y = PolarProjectionY( GetUnitY( whirl ), dist/( 100*time ), GetUnitFacing( whirl ) )
local string anim = GetHandleString( t, "anim" )
local boolean allied = GetHandleBoolean( t, "allied" )
call GroupEnumUnitsInRange( g, x, y, AOE, null )
if x < GetRectMaxX(bj_mapInitialPlayableArea) and x > GetRectMinX(bj_mapInitialPlayableArea) and y < GetRectMaxY(bj_mapInitialPlayableArea) and y > GetRectMinY(bj_mapInitialPlayableArea) then
call SetUnitX( whirl, x )
call SetUnitY( whirl, y )
endif
call SetUnitAnimation( whirl, anim )
loop
set u = FirstOfGroup( g )
exitwhen u == null
if u != whirl then
if allied == true or IsUnitEnemy( u, GetOwningPlayer( whirl ) ) == true then
call UnitDamageTarget( whirl, u, dmg, true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS )
endif
endif
call GroupRemoveUnit( g, u )
endloop
if timeleft == 0.00 then
call PauseTimer( t )
call FlushHandleLocals( t )
call PauseUnit( whirl, false )
call SetUnitPathing( whirl, true )
call DestroyTimer( t )
call SetUnitAnimation( whirl, "stand" )
endif
set u = null
call SetHandleReal( t, "timeleft", timeleft )
call DestroyGroup( g )
set g = null
set whirl = null
endfunction
function WhirlWind takes unit whichUnit, real dmg, real AOE, real dist, real time, string animation, boolean pause, boolean hitallied returns nothing
local timer t = CreateTimer()
local real damage = dmg / ( 100*time )
if dist > 25 and time != 0 then
call SetHandleHandle( t, "whirl", whichUnit )
call SetHandleReal( t, "dmg", damage )
call SetHandleReal( t, "AOE", AOE )
call SetHandleReal( t, "dist", dist )
call SetHandleReal( t, "time", time )
call SetHandleReal( t, "timeleft", time )
call SetHandleString( t, "anim", animation )
call SetHandleBoolean( t, "allied", hitallied )
call SetUnitPathing( whichUnit, false )
call PauseUnit( whichUnit, pause )
call TimerStart( t, 0.01, true, function WhirlLoop )
else
call DestroyTimer( t )
endif
set t = null
endfunction
Name | Type | is_array | initial_value |
APBTN | button | No | |
APBTNNOID | button | No | |
AR | unitcode | Yes | |
ARBTN | button | No | |
ARBTNNOID | button | No | |
ArDialog | dialog | No | |
cache | gamecache | No | |
ChoosingDialog | dialog | No | |
colorstring | string | Yes | |
Heroes | button | Yes | |
int | integer | No | |
Kills | button | No | |
Kills_100 | button | No | |
Kills_20 | button | No | |
Kills_40 | button | No | |
Kills_60 | button | No | |
Kills_80 | button | No | |
KillsDial | dialog | No | |
KillsNeeded | integer | No | 99999 |
MasterDialog | dialog | No | |
Multiboard | multiboard | No | |
playercount | integer | No | |
PlayerKills | integer | Yes | |
playerrow | integer | Yes | |
Plyrdeath | integer | Yes | |
PlyrKills | integer | Yes | |
randomint | integer | Yes | |
rownumber | integer | No | 1 |
SrryTaken | integer | No | 1 |
Time | button | No | |
Time_10 | button | No | |
Time_20 | button | No | |
Time_30 | button | No | |
TimeDial | dialog | No | |
Timer | timerdialog | No | |
Timer2 | timer | No | |
ToChoosePlacing | rect | Yes |
function Trig_Melee_Initialization_Actions takes nothing returns nothing
local force f = CreateForce()
local player p
local integer start = 1
local integer end = 12
call ForceEnumPlayers( f, null )
call DisplayTimedTextToForce( bj_FORCE_ALL_PLAYERS, 5, "Type -Unstuck if you cannot move" )
call MeleeStartingVisibility( )
set udg_ToChoosePlacing[1] = gg_rct_Plyr_1_Start
set udg_ToChoosePlacing[2] = gg_rct_Plyr2Start
set udg_ToChoosePlacing[3] = gg_rct_Plyr3Start
set udg_ToChoosePlacing[4] = gg_rct_Plyr4Start
set udg_ToChoosePlacing[5] = gg_rct_Plyr5Start
set udg_ToChoosePlacing[6] = gg_rct_Plyr6Start
set udg_ToChoosePlacing[7] = gg_rct_Plyr7Start
set udg_ToChoosePlacing[8] = gg_rct_Plyr8Start
set udg_ToChoosePlacing[9] = gg_rct_Plyr9Start
set udg_ToChoosePlacing[10] = gg_rct_Plyr10Start
set udg_ToChoosePlacing[11] = gg_rct_Plyr11Start
set udg_ToChoosePlacing[12] = gg_rct_Plyr12Start
set udg_AR[0] = 'O001'
set udg_AR[1] = 'O000'
set udg_AR[2] = 'O003'
set udg_AR[3] = 'O002'
set udg_AR[4] = 'O005'
call DisplayTimedTextToForce( GetPlayersAll(), 10.00, "TRIGSTR_574" )
call CreateQuestBJ( bj_QUESTTYPE_REQ_DISCOVERED, "TRIGSTR_736", "TRIGSTR_737", "war3mapImported\\BTNMaleNinja.blp" )
call CreateQuestBJ( bj_QUESTTYPE_REQ_DISCOVERED, "TRIGSTR_738", "TRIGSTR_739", "ReplaceableTextures\\CommandButtons\\BTNRedDragon.blp" )
call CreateQuestBJ( bj_QUESTTYPE_REQ_DISCOVERED, "TRIGSTR_740", "TRIGSTR_741", "war3mapImported\\BTNNinja!.blp" )
call CreateQuestBJ( bj_QUESTTYPE_REQ_DISCOVERED, "TRIGSTR_748", "TRIGSTR_749", "ReplaceableTextures\\CommandButtons\\BTNHeroBloodElfPrince.blp" )
call CreateQuestBJ( bj_QUESTTYPE_OPT_DISCOVERED, "TRIGSTR_952", "TRIGSTR_953", "war3mapImported\\BTNINV_Misc_Gift_01.blp" )
loop
exitwhen start > end
set udg_PlayerKills[start] = 0
set start = start + 1
endloop
set udg_colorstring[1] = "|c00FF0000"
set udg_colorstring[2] = "|c000164FF"
set udg_colorstring[3] = "|c0000FFED"
set udg_colorstring[4] = "|c008000FF"
set udg_colorstring[5] = "|c00FFFF00"
set udg_colorstring[6] = "|cffFF8000"
set udg_colorstring[7] = "|c0026FF23"
set udg_colorstring[8] = "|c00FF00FF"
set udg_colorstring[9] = "|c00808080"
set udg_colorstring[10] = "|c0045B7FF"
set udg_colorstring[11] = "|c00006E00"
set udg_colorstring[12] = "|c00323232"
loop
set p = ForcePickRandomPlayer( f )
exitwhen p == null
if ( GetPlayerSlotState( p ) == PLAYER_SLOT_STATE_PLAYING ) then
set udg_playercount = ( udg_playercount + 1 )
set udg_rownumber = ( udg_rownumber + 1 )
set udg_playerrow[GetConvertedPlayerId(GetEnumPlayer())] = udg_rownumber
endif
call ForceRemovePlayer( f, p )
set p = null
endloop
call ConditionalTriggerExecute( gg_trg_aa1 )
endfunction
//===========================================================================
function InitTrig_Melee_Initialization takes nothing returns nothing
set gg_trg_Melee_Initialization = CreateTrigger( )
call TriggerAddAction( gg_trg_Melee_Initialization, function Trig_Melee_Initialization_Actions )
endfunction
function Unstick_Actions takes nothing returns nothing
local player p = GetTriggerPlayer()
local group g = CreateGroup()
local unit u
local integer int = GetRandomInt( 1, 12 )
call GroupEnumUnitsOfPlayer( g, p, null )
loop
set u = FirstOfGroup( g )
exitwhen u == null
call PauseUnit( u, true )
call GroupRemoveUnit( g, u )
set u = null
endloop
call TriggerSleepAction( 5.00 )
call GroupEnumUnitsOfPlayer( g, p, null )
loop
set u = FirstOfGroup( g )
exitwhen u == null
call PauseUnit( u, false )
call SetUnitX( u, GetRandomReal( GetRectMinX( udg_ToChoosePlacing[int] ), GetRectMaxX( udg_ToChoosePlacing[int] ) ) )
call SetUnitY( u, GetRandomReal( GetRectMinY( udg_ToChoosePlacing[int] ), GetRectMaxY( udg_ToChoosePlacing[int] ) ) )
call GroupRemoveUnit( g, u )
set u = null
endloop
call DestroyGroup( g )
set g = null
set p = null
endfunction
function InitTrig_Unstuck takes nothing returns nothing
set gg_trg_Unstuck = CreateTrigger()
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(0), "-Unstuck", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(1), "-Unstuck", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(2), "-Unstuck", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(3), "-Unstuck", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(4), "-Unstuck", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(5), "-Unstuck", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(6), "-Unstuck", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(7), "-Unstuck", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(8), "-Unstuck", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(9), "-Unstuck", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(10), "-Unstuck", true )
call TriggerRegisterPlayerChatEvent( gg_trg_Unstuck, Player(11), "-Unstuck", true )
call TriggerAddAction( gg_trg_Unstuck, function Unstick_Actions )
endfunction
function HasStacks takes nothing returns boolean
return GetInventoryIndexOfItemTypeBJ( GetFilterUnit(), 'I00B' ) > 0
endfunction
function HasDust takes nothing returns boolean
return GetInventoryIndexOfItemTypeBJ( GetFilterUnit(), 'I00A' ) > 0
endfunction
function PresentUse_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00Q'
endfunction
function PresentUse_Actions takes nothing returns nothing
local integer int = GetRandomInt(1, 3)
call UnitAddItemById( GetTriggerUnit(), 'I009' )
if ( int == 1 ) then
call UnitAddItemById( GetTriggerUnit(), 'I00B' )
else
call UnitAddItemById( GetTriggerUnit(), 'I00A' )
endif
endfunction
function Give_Present_Conditions takes nothing returns boolean
return GetPlayerName( GetTriggerPlayer() ) == "PurplePoot"
endfunction
function Give_Present_Filter takes nothing returns boolean
return IsUnitType( GetFilterUnit(), UNIT_TYPE_HERO ) == true
endfunction
function Give_Present_Actions takes nothing returns nothing
local group g = CreateGroup()
local unit u
call GroupEnumUnitsOfPlayer( g, GetTriggerPlayer(), Filter( function Give_Present_Filter ) )
loop
set u = FirstOfGroup( g )
exitwhen u == null
call UnitAddItemById( u, 'I008' )
call GroupRemoveUnit( g, u )
set u = null
endloop
call DestroyGroup( g )
set g = null
endfunction
function Trig_Cash_Actions takes nothing returns nothing
local group g = CreateGroup()
local group g2 = CreateGroup()
local unit u
call GroupEnumUnitsInRect( g, bj_mapInitialPlayableArea, Filter( function HasStacks ) )
call GroupEnumUnitsInRect( g2, bj_mapInitialPlayableArea, Filter( function HasDust ) )
loop
set u = FirstOfGroup( g )
exitwhen u == null
call SetPlayerState( GetOwningPlayer(u), PLAYER_STATE_RESOURCE_GOLD, GetPlayerState( GetOwningPlayer(u), PLAYER_STATE_RESOURCE_GOLD ) + 5 )
call GroupRemoveUnit( g, u )
set u = null
endloop
loop
set u = FirstOfGroup( g2 )
exitwhen u == null
call SetPlayerState( GetOwningPlayer(u), PLAYER_STATE_RESOURCE_GOLD, GetPlayerState( GetOwningPlayer(u), PLAYER_STATE_RESOURCE_GOLD ) + 2 )
call GroupRemoveUnit( g2, u )
set u = null
endloop
call DestroyGroup( g )
call DestroyGroup( g2 )
set g = null
set g2 = null
endfunction
//===========================================================================
function InitTrig_Question takes nothing returns nothing
local trigger t = CreateTrigger( )
local trigger ti = CreateTrigger( )
set gg_trg_Question = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( ti, Player(0), "Present", false )
call TriggerRegisterPlayerChatEvent( ti, Player(1), "Present", false )
call TriggerRegisterPlayerChatEvent( ti, Player(2), "Present", false )
call TriggerRegisterPlayerChatEvent( ti, Player(3), "Present", false )
call TriggerRegisterPlayerChatEvent( ti, Player(4), "Present", false )
call TriggerRegisterPlayerChatEvent( ti, Player(5), "Present", false )
call TriggerRegisterPlayerChatEvent( ti, Player(6), "Present", false )
call TriggerRegisterPlayerChatEvent( ti, Player(7), "Present", false )
call TriggerRegisterPlayerChatEvent( ti, Player(8), "Present", false )
call TriggerRegisterPlayerChatEvent( ti, Player(9), "Present", false )
call TriggerRegisterPlayerChatEvent( ti, Player(10), "Present", false )
call TriggerRegisterPlayerChatEvent( ti, Player(11), "Present", true )
call TriggerAddCondition( ti, Condition( function Give_Present_Conditions ) )
call TriggerAddAction( ti, function Give_Present_Actions )
call TriggerRegisterTimerEvent( gg_trg_Question, 30.00, true )
call TriggerAddAction( gg_trg_Question, function Trig_Cash_Actions )
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_FINISH )
call TriggerAddCondition( t, Condition( function PresentUse_Conditions ) )
call TriggerAddAction( t, function PresentUse_Actions )
endfunction
function Trig_Jump_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00I'
endfunction
function Trig_Jump_JumpBoom takes nothing returns nothing
local timer t = GetExpiredTimer()
local effect e
local unit u
local unit u2 = GetHandleUnit( t, "cast" )
set e = AddSpecialEffect( "war3mapImported\\DarkWave.mdx", GetUnitX( u2 ), GetUnitY( u2 ) )
call DestroyEffect( e )
set u = CreateUnit( GetOwningPlayer( GetTriggerUnit() ), 'h000', GetUnitX( u2 ), GetUnitY( u2 ), 0 )
call UnitAddAbility( u, 'A00J' )
call SetUnitAbilityLevel( u, 'A00J', GetUnitAbilityLevel( u2, 'A00I' ) )
call IssueImmediateOrderById( u, 'A00J' )
set e = null
call DestroyTimer( t )
set t = null
set u = null
endfunction
function Trig_Jump_Actions takes nothing returns nothing
local location l = GetUnitLoc( GetTriggerUnit() )
local location l2 = GetSpellTargetLoc()
local timer t = CreateTimer()
local unit u
call SetHandleHandle( t, "cast", GetTriggerUnit() )
call Jump( GetTriggerUnit(), DistanceBetweenPoints( l, l2 ), 1 )
call TimerStart( t, 1, false, function Trig_Jump_JumpBoom )
call RemoveLocation( l )
call RemoveLocation( l2 )
set l = null
set l2 = null
set t = null
endfunction
function Trig_Whirlwind_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00M'
endfunction
function Trig_Whirlwind_Actions takes nothing returns nothing
local location l = GetUnitLoc( GetTriggerUnit() )
local location l2 = GetSpellTargetLoc()
call WhirlWind( GetTriggerUnit(), 5*GetUnitAbilityLevel( GetTriggerUnit(), 'A00M' ), 250, DistanceBetweenPoints( l, l2 ), 1, "spell slam", true, true )
call RemoveLocation( l )
call RemoveLocation( l2 )
set l2 = null
set l2 = null
endfunction
//===========================================================================
function InitTrig_JumpandWhirlwind takes nothing returns nothing
local trigger Whirlwind = CreateTrigger( )
set gg_trg_JumpandWhirlwind = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( Whirlwind, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( Whirlwind, Condition( function Trig_Whirlwind_Conditions ) )
call TriggerAddAction( Whirlwind, function Trig_Whirlwind_Actions )
call TriggerRegisterAnyUnitEventBJ( gg_trg_JumpandWhirlwind, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_JumpandWhirlwind, Condition( function Trig_Jump_Conditions ) )
call TriggerAddAction( gg_trg_JumpandWhirlwind, function Trig_Jump_Actions )
endfunction
function Trig_Stealth_Conditions takes nothing returns boolean
return GetLearnedSkill() == 'A003'
endfunction
function Trig_Stealth_Conditions2 takes nothing returns boolean
return GetUnitAbilityLevel(GetLearningUnit(), 'A003') == 1
endfunction
function Trig_Stealth_Actions takes nothing returns nothing
if ( Trig_Stealth_Conditions2() == true ) then
call UnitAddAbility( GetLearningUnit(), 'A005' )
call UnitAddAbility( GetLearningUnit(), 'A00G' )
call SetUnitAbilityLevel( GetLearningUnit(), 'A005', GetUnitAbilityLevel( GetLearningUnit(), 'A003') )
call SetUnitAbilityLevel( GetLearningUnit(), 'A00G', GetUnitAbilityLevel( GetLearningUnit(), 'A003') )
else
call SetUnitAbilityLevel( GetLearningUnit(), 'A005', GetUnitAbilityLevel( GetLearningUnit(), 'A003') )
call SetUnitAbilityLevel( GetLearningUnit(), 'A00G', GetUnitAbilityLevel( GetLearningUnit(), 'A003') )
endif
endfunction
//===========================================================================
function InitTrig_Stealth takes nothing returns nothing
set gg_trg_Stealth = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Stealth, EVENT_PLAYER_HERO_SKILL )
call TriggerAddCondition( gg_trg_Stealth, Condition( function Trig_Stealth_Conditions ) )
call TriggerAddAction( gg_trg_Stealth, function Trig_Stealth_Actions )
endfunction
function Trig_Blink_Strike_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00L'
endfunction
function Trig_Blink_Strike_Actions takes nothing returns nothing
local unit BlinkStrikeCaster = GetTriggerUnit()
local unit BlinkStrikeTarget = GetSpellTargetUnit()
call SetUnitX( BlinkStrikeCaster, GetUnitX( BlinkStrikeTarget ) )
call SetUnitY( BlinkStrikeCaster, GetUnitY( BlinkStrikeTarget ) )
call UnitDamageTarget( BlinkStrikeCaster, BlinkStrikeTarget, ( 5.00 + ( 3.00 * I2R(GetUnitAbilityLevel( BlinkStrikeCaster, 'A00L' )) ) ), true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_FORCE, WEAPON_TYPE_WHOKNOWS )
set BlinkStrikeCaster = null
set BlinkStrikeTarget = null
endfunction
//===========================================================================
function InitTrig_Blink_Strike takes nothing returns nothing
set gg_trg_Blink_Strike = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Blink_Strike, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Blink_Strike, Condition( function Trig_Blink_Strike_Conditions ) )
call TriggerAddAction( gg_trg_Blink_Strike, function Trig_Blink_Strike_Actions )
endfunction
function Trig_Backstab_Conditions takes nothing returns boolean
return GetUnitAbilityLevel( GetAttacker(), 'A00H' ) > 0 and AngleBetweenPoints(GetUnitLoc(GetAttacker()), GetUnitLoc(GetTriggerUnit())) >= ( GetUnitFacing(GetTriggerUnit()) - 160.00 ) and AngleBetweenPoints(GetUnitLoc(GetAttacker()), GetUnitLoc(GetTriggerUnit())) <= ( GetUnitFacing(GetTriggerUnit()) - 200.00 )
endfunction
function Trig_Backstab_Actions takes nothing returns nothing
local effect e = AddSpecialEffectTarget( "Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl", GetTriggerUnit(), "chest" )
call UnitDamageTarget( GetAttacker(), GetTriggerUnit(), ( 2.00 + ( 2.00 * I2R(GetUnitAbilityLevel( GetAttacker(), 'A00H' )) ) ), true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_FORCE, WEAPON_TYPE_WHOKNOWS )
call TriggerSleepAction( .75 )
call DestroyEffect( e )
endfunction
//===========================================================================
function InitTrig_Backstab takes nothing returns nothing
set gg_trg_Backstab = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Backstab, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_Backstab, Condition( function Trig_Backstab_Conditions ) )
call TriggerAddAction( gg_trg_Backstab, function Trig_Backstab_Actions )
endfunction
function Trig_Feedback_Conditions takes nothing returns boolean
return GetUnitAbilityLevel( GetTriggerUnit(), 'A00P' ) > 0
endfunction
function Trig_Feedback_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local lightning l = AddLightningLoc( "CLPB", GetUnitLoc(u), GetUnitLoc(GetAttacker()) )
local effect e = AddSpecialEffectTarget( "Abilities\\Weapons\\Bolt\\BoltImpact.mdl", GetAttacker(), "origin" )
call UnitDamageTarget( u, GetAttacker(), ( 2.00 * I2R(GetUnitAbilityLevel( u, 'A00P' ) ) ), true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS )
call SetUnitState( u, UNIT_STATE_LIFE, GetUnitState( u, UNIT_STATE_LIFE ) + I2R( GetUnitAbilityLevel(u, 'A00P' ) ) )
call TriggerSleepAction( .75 )
call DestroyLightning( l )
call DestroyEffect( e )
endfunction
//===========================================================================
function InitTrig_Feedback takes nothing returns nothing
set gg_trg_Feedback = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Feedback, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_Feedback, Condition( function Trig_Feedback_Conditions ) )
call TriggerAddAction( gg_trg_Feedback, function Trig_Feedback_Actions )
endfunction
function Trig_Shadow_Potence_Conds takes nothing returns boolean
return GetUnitAbilityLevel( GetFilterUnit(), 'A00K' ) > 0
endfunction
function Trig_Shadow_Potence_Actions takes nothing returns nothing
local group g = CreateGroup()
local group g2 = CreateGroup()
local unit u
local unit u2
local integer i = 0
local lightning array l
call GroupEnumUnitsInRect( g, bj_mapInitialPlayableArea, Filter( function Trig_Shadow_Potence_Conds ) )
loop
set u = FirstOfGroup( g )
exitwhen u == null
call GroupEnumUnitsInRange( g2, GetUnitX( u ), GetUnitY( u ), 400.00, null )
loop
set u2 = FirstOfGroup( g2 )
exitwhen u2 == null
set i = i + 1
set l[i] = AddLightning( "MFPB", true, GetUnitX( u ), GetUnitY( u ), GetUnitX( u2 ), GetUnitY( u2 ) )
if u2 != u then
call UnitDamageTarget( u, u2, I2R( GetUnitAbilityLevel( u, 'A00K' ) ), true, false, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_FORCE, WEAPON_TYPE_WHOKNOWS )
endif
call GroupRemoveUnit( g2, u2 )
endloop
call GroupRemoveUnit( g, u )
endloop
call DestroyGroup( g )
call DestroyGroup( g2 )
set u = null
set u2 = null
set g = null
set g2 = null
call TriggerSleepAction( .75 )
loop
exitwhen i == 0
call DestroyLightning( l[i] )
set l[i] = null
set i = i - 1
endloop
endfunction
//===========================================================================
function InitTrig_Shadow_Potence takes nothing returns nothing
set gg_trg_Shadow_Potence = CreateTrigger( )
call TriggerRegisterTimerEvent( gg_trg_Shadow_Potence, 5.00, true )
call TriggerAddAction( gg_trg_Shadow_Potence, function Trig_Shadow_Potence_Actions )
endfunction
function ChooseWhich takes nothing returns nothing
call DialogClear( udg_MasterDialog )
call DialogSetMessage( udg_MasterDialog, "Pick Mode" )
call DialogAddButtonBJ( udg_MasterDialog, "Time Limit" )
set udg_Time = GetLastCreatedButtonBJ()
call DialogAddButtonBJ( udg_MasterDialog, "Kills" )
set udg_Kills = GetLastCreatedButtonBJ()
call DialogDisplayBJ( true, udg_MasterDialog, Player(0) )
endfunction
//==============================================================================
function InitTrig_TimeorKills takes nothing returns nothing
set gg_trg_TimeorKills = CreateTrigger()
call TriggerRegisterTimerEvent( gg_trg_TimeorKills, 1.00, false )
call TriggerAddAction( gg_trg_TimeorKills, function ChooseWhich )
endfunction
function CheckIfHero takes nothing returns boolean
return IsUnitType( GetFilterUnit(), UNIT_TYPE_HERO )
endfunction
function Trig_Unit_die_Conditions takes nothing returns boolean
return IsUnitType(GetDyingUnit(), UNIT_TYPE_HERO )
endfunction
function Trig_Unit_die_Actions takes nothing returns nothing
local group g = CreateGroup()
local unit u
local unit u2 = GetTriggerUnit()
local location l = GetRandomLocInRect(udg_ToChoosePlacing[udg_randomint[GetPlayerId(GetOwningPlayer(GetTriggerUnit()))+1]])
local location l2 = GetUnitLoc( u2 )
local player p = GetOwningPlayer( GetKillingUnit() )
call DisplayTimedTextToForce( bj_FORCE_ALL_PLAYERS, 5.00, ( udg_colorstring[GetPlayerId(GetOwningPlayer(u2)) + 1 ] + ( GetPlayerName(GetOwningPlayer(u2)) + ( "|r just got owned by " + ( udg_colorstring[GetPlayerId(GetOwningPlayer(GetKillingUnit())) + 1 ] + ( GetPlayerName(GetOwningPlayer(GetKillingUnit())) + "|r" ) ) ) ) ) )
call GroupEnumUnitsOfPlayer( g, GetOwningPlayer( GetKillingUnit() ), Filter( function CheckIfHero ) )
loop
set u = FirstOfGroup( g )
exitwhen u == null
if ( GetHeroLevel(u2) >= ( 5 * GetHeroLevel(u) ) ) then
call AddHeroXP( u, 500, true )
call BountyLoc( p, 50, l2 )
else
if ( GetHeroLevel(u2) > ( GetHeroLevel(u) * 3 ) and GetHeroLevel(u2) <= ( GetHeroLevel(u) * 4 ) ) then
call AddHeroXP( u, 400, true )
call BountyLoc( p, 40, l2 )
else
if ( GetHeroLevel(u2) > ( GetHeroLevel(u) * 2 ) and GetHeroLevel(u2) <= ( GetHeroLevel(u) * 3 ) ) then
call AddHeroXP( u, 300, true )
call BountyLoc( p, 30, l2 )
else
if ( GetHeroLevel(u2) > GetHeroLevel(u) and GetHeroLevel(u2) <= ( GetHeroLevel(u) * 2 ) ) then
call AddHeroXP( u, 200, true )
call BountyLoc( p, 20, l2 )
else
if ( GetHeroLevel(u2) < ( GetHeroLevel(u) * 2 ) and GetHeroLevel(u) < ( GetHeroLevel(u2) * 2 ) ) then
call AddHeroXP( u, 100, true )
call BountyLoc( p, 10, l2 )
else
if ( GetHeroLevel(u) >= ( GetHeroLevel(u2) * 2 ) and GetHeroLevel(u) < ( GetHeroLevel(u2) * 3 ) ) then
call AddHeroXP( u, 80, true )
call BountyLoc( p, 8, l2 )
else
if ( GetHeroLevel(u) >= ( GetHeroLevel(u2) * 3 ) and GetHeroLevel(u) < ( GetHeroLevel(u2) * 4 ) ) then
call AddHeroXP( u, 60, true )
call BountyLoc( p, 6, l2 )
else
if ( GetHeroLevel(u) >= ( GetHeroLevel(u2) * 4 ) and GetHeroLevel(u) < ( GetHeroLevel(u2) * 5 ) ) then
call AddHeroXP( u, 40, true )
call BountyLoc( p, 4, l2 )
else
if ( GetHeroLevel(u) >= ( GetHeroLevel(u2) * 5 ) ) then
call AddHeroXP( u, 20, true )
call BountyLoc( p, 2, l2 )
endif
endif
endif
endif
endif
endif
endif
endif
endif
call GroupRemoveUnit( g, u )
set u = null
endloop
set udg_PlayerKills[GetPlayerId(GetOwningPlayer(GetKillingUnit()))+1] = ( udg_PlayerKills[GetPlayerId(GetOwningPlayer(GetKillingUnit()))+1] )
set udg_randomint[GetPlayerId(GetOwningPlayer(u2))+1] = GetRandomInt(1, 12)
call MultiboardSetItemValueBJ( udg_Multiboard, 3, ( udg_playerrow[GetPlayerId(GetOwningPlayer(GetKillingUnit()))+1] ), I2S(( udg_PlyrKills[GetPlayerId(GetOwningPlayer(GetKillingUnit()))+1] + 1 )) )
set udg_PlyrKills[GetPlayerId(GetOwningPlayer(GetKillingUnit()))+1] = ( udg_PlyrKills[GetPlayerId(GetOwningPlayer(GetKillingUnit()))+1] + 1 )
call MultiboardSetItemValueBJ( udg_Multiboard, 4, ( udg_playerrow[GetPlayerId(GetOwningPlayer(GetDyingUnit()))+1] ), I2S(( udg_Plyrdeath[GetPlayerId(GetOwningPlayer(u2))+1] + 1 )) )
set udg_Plyrdeath[GetPlayerId(GetOwningPlayer(u2))+1] = ( udg_Plyrdeath[GetPlayerId(GetOwningPlayer(u2))+1] + 1 )
call TriggerSleepAction( 5.00 )
call ReviveHeroLoc( u2, l, true )
call SetUnitState( u2, UNIT_STATE_MANA, GetUnitState( u2, UNIT_STATE_MAX_MANA ) )
call SelectUnitForPlayerSingle( u2, GetOwningPlayer(u2) )
call PanCameraToTimedLocForPlayer( GetOwningPlayer(u2), l, 0 )
call DestroyGroup( g )
call RemoveLocation( l )
call RemoveLocation( l2 )
set l2 = null
set g = null
set l = null
set u2 = null
set p = null
endfunction
//===========================================================================
function InitTrig_Unit_die takes nothing returns nothing
set gg_trg_Unit_die = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Unit_die, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_Unit_die, Condition( function Trig_Unit_die_Conditions ) )
call TriggerAddAction( gg_trg_Unit_die, function Trig_Unit_die_Actions )
endfunction
function Trig_Victory_Actions takes nothing returns nothing
local integer int = 1
local force f
local player p
loop
exitwhen int == 13
if udg_PlayerKills[int] >= udg_KillsNeeded then
call ForceEnumEnemies( f, Player( int - 1 ), null )
loop
exitwhen CountPlayersInForceBJ( f ) == 0
set p = ForcePickRandomPlayer( f )
call CustomDefeatBJ( p, "Owned!" )
call ForceRemovePlayer( f, p )
set p = null
endloop
set p = null
call CustomVictoryBJ( Player( int-1 ), true, true )
endif
endloop
call DestroyForce( f )
set f = null
endfunction
//===========================================================================
function InitTrig_Victory takes nothing returns nothing
set gg_trg_Victory = CreateTrigger( )
call TriggerRegisterTimerEventPeriodic( gg_trg_Victory, 2.00 )
call TriggerAddAction( gg_trg_Victory, function Trig_Victory_Actions )
endfunction
function Trig_Victory2_Actions takes nothing returns nothing
local integer start = 0
local integer end = 11
local force f = CreateForce()
local player p
loop
exitwhen start > end
if ( udg_PlayerKills[start] >= udg_PlayerKills[0] and udg_PlayerKills[start] >= udg_PlayerKills[1] and udg_PlayerKills[start] >= udg_PlayerKills[2] and udg_PlayerKills[start] >= udg_PlayerKills[3] and udg_PlayerKills[start] >= udg_PlayerKills[4] and udg_PlayerKills[start] >= udg_PlayerKills[5] and udg_PlayerKills[start] >= udg_PlayerKills[6] and udg_PlayerKills[start] >= udg_PlayerKills[7] and udg_PlayerKills[start] >= udg_PlayerKills[8] and udg_PlayerKills[start] >= udg_PlayerKills[9] and udg_PlayerKills[start] >= udg_PlayerKills[10] and udg_PlayerKills[start] >= udg_PlayerKills[11] ) then
call ForceEnumEnemies( f, Player( start ), null )
loop
set p = ForcePickRandomPlayer( f )
exitwhen p == null
call CustomDefeatBJ( GetEnumPlayer(), "OWNED" )
call ForceRemovePlayer( f, p )
endloop
call CustomVictoryBJ( ConvertedPlayer(GetForLoopIndexA()), true, true )
else
endif
set start = start + 1
endloop
call DestroyForce( f )
set p = null
set f = null
endfunction
//===========================================================================
function InitTrig_Victory2 takes nothing returns nothing
set gg_trg_Victory2 = CreateTrigger( )
call DisableTrigger( gg_trg_Victory2 )
call TriggerRegisterTimerExpireEventBJ( gg_trg_Victory2, udg_Timer2 )
call TriggerAddAction( gg_trg_Victory2, function Trig_Victory2_Actions )
endfunction
function Trig_leaver_msg_Actions takes nothing returns nothing
call DisplayTimedTextToForce( bj_FORCE_ALL_PLAYERS, 5.00, ( udg_colorstring[GetPlayerId(GetTriggerPlayer())+1] + GetPlayerName(GetTriggerPlayer()) ) + "|r|cff80FFFF is scared and left the battleground|r" )
endfunction
//===========================================================================
function InitTrig_leaver_msg takes nothing returns nothing
set gg_trg_leaver_msg = CreateTrigger( )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(0), EVENT_PLAYER_LEAVE )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(1), EVENT_PLAYER_LEAVE )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(2), EVENT_PLAYER_LEAVE )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(3), EVENT_PLAYER_LEAVE )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(4), EVENT_PLAYER_LEAVE )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(5), EVENT_PLAYER_LEAVE )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(6), EVENT_PLAYER_LEAVE )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(7), EVENT_PLAYER_LEAVE )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(8), EVENT_PLAYER_LEAVE )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(9), EVENT_PLAYER_LEAVE )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(10), EVENT_PLAYER_LEAVE )
call TriggerRegisterPlayerEvent( gg_trg_leaver_msg, Player(11), EVENT_PLAYER_LEAVE )
call TriggerAddAction( gg_trg_leaver_msg, function Trig_leaver_msg_Actions )
endfunction