Name | Type | is_array | initial_value |
Alive | force | No | |
AttackBy | integer | Yes | |
AttackerCreep | player | Yes | |
AttackTaget | integer | Yes | |
Builder | unit | Yes | |
Color | string | Yes | |
Colors | integer | Yes | |
CreatureLevel | unitcode | Yes | |
CreatureLevelName | string | Yes | |
Creepcount | integer | Yes | 0 |
CreepLevel | integer | Yes | |
Creeps | group | No | |
CreepSpawned | integer | Yes | |
CreepSpawners | trigger | Yes | |
CreepSpawnTimer | timer | No | |
CreepSpawnTimerWindow | timerdialog | No | |
Facing | real | Yes | 0.00 |
FrostLevel | integer | Yes | 1 |
fullArea | rect | Yes | |
GoPoints | location | Yes | |
Hint | integer | No | 0 |
Hints | string | Yes | |
IncomeLevel | integer | Yes | |
Leaderboard | multiboard | No | |
MaxCreeps | integer | Yes | 10 |
Moneytowerincome | integer | Yes | 1 |
NightStalker | force | No | |
NotKicked | boolean | Yes | true |
Ongoing | boolean | No | true |
PlayerNumber | integer | No | 6 |
TempInt | integer | No | |
TempPG | force | No | |
TempPlayer | player | No | |
TempPoint | location | No | |
TempString | string | No | |
TempUG | group | No | |
TempUnit | unit | No | |
Winner | player | No |
globals
multiboarditem array udg_PlayerCountMBitem
endglobals
function TriggerRegisterAnyUnitEvent takes trigger trig, playerunitevent whichEvent returns nothing
local integer index = 0
loop
call TriggerRegisterPlayerUnitEvent( trig, Player(index), whichEvent, null )
set index = index + 1
exitwhen index >= udg_PlayerNumber
endloop
endfunction
function TriggerRegisterAnyCreepEvent takes trigger trig, playerunitevent whichEvent returns nothing
local integer index = udg_PlayerNumber
local integer max = udg_PlayerNumber*2
loop
call TriggerRegisterPlayerUnitEvent( trig, Player(index), whichEvent, null )
set index = index + 1
exitwhen index >= max
endloop
endfunction
function TriggerRegisterAnyPlayerEvent takes trigger trig, playerevent whichEvent returns nothing
local integer index = 0
loop
call TriggerRegisterPlayerEvent( trig, Player(index), whichEvent )
set index = index + 1
exitwhen index >= udg_PlayerNumber
endloop
endfunction
function TriggerRegisterAnyPlayerChatEvent takes trigger trig, string MessageToDetect, boolean exactMatch returns nothing
local integer index = 0
loop
call TriggerRegisterPlayerChatEvent( trig, Player(index), MessageToDetect, exactMatch )
set index = index + 1
exitwhen index >= udg_PlayerNumber
endloop
endfunction
function QuestMessagePlayer takes player toPlayer, integer messageType, string message returns nothing
local real Duration
local sound QuestSound
if messageType == bj_QUESTMESSAGE_DISCOVERED then
set Duration = bj_TEXT_DELAY_QUEST
set QuestSound = bj_questDiscoveredSound
elseif messageType == bj_QUESTMESSAGE_UPDATED then
set Duration = bj_TEXT_DELAY_QUESTUPDATE
set QuestSound = bj_questUpdatedSound
elseif messageType == bj_QUESTMESSAGE_COMPLETED then
set Duration = bj_TEXT_DELAY_QUESTDONE
set QuestSound = bj_questCompletedSound
elseif messageType == bj_QUESTMESSAGE_FAILED then
set Duration = bj_TEXT_DELAY_QUESTFAILED
set QuestSound = bj_questFailedSound
elseif messageType == bj_QUESTMESSAGE_MISSIONFAILED then
set Duration = bj_TEXT_DELAY_MISSIONFAILED
set QuestSound = bj_questFailedSound
elseif messageType == bj_QUESTMESSAGE_HINT then
set Duration = bj_TEXT_DELAY_HINT
set QuestSound = bj_questHintSound
elseif messageType == bj_QUESTMESSAGE_ALWAYSHINT then
set Duration = bj_TEXT_DELAY_ALWAYSHINT
set QuestSound = bj_questHintSound
elseif messageType == bj_QUESTMESSAGE_SECRET then
set Duration = bj_TEXT_DELAY_SECRET
set QuestSound = bj_questSecretSound
elseif messageType == bj_QUESTMESSAGE_UNITACQUIRED then
set Duration = bj_TEXT_DELAY_UNITACQUIRED
set QuestSound = bj_questHintSound
elseif messageType == bj_QUESTMESSAGE_UNITAVAILABLE then
set Duration = bj_TEXT_DELAY_UNITAVAILABLE
set QuestSound = bj_questHintSound
elseif messageType == bj_QUESTMESSAGE_ITEMACQUIRED then
set Duration = bj_TEXT_DELAY_ITEMACQUIRED
set QuestSound = bj_questItemAcquiredSound
elseif messageType == bj_QUESTMESSAGE_WARNING then
set Duration = bj_TEXT_DELAY_WARNING
set QuestSound = bj_questWarningSound
else
return
endif
call DisplayTimedTextToPlayer( toPlayer, 0, 0, Duration, " " )
call DisplayTimedTextToPlayer( toPlayer, 0, 0, Duration, message )
call StartSound(QuestSound)
set QuestSound = null
endfunction
//call CreateTextTagUnitBJ( (s, loc, zOffset, size, red, green, blue, transparency)
//call CreateTextTagLocBJ( (s, loc, zOffset, size, red, green, blue, transparency)
//call SetTextTagLifespanBJ( GetLastCreatedTextTag(), lifespan )
//call SetTextTagFadepointBJ( GetLastCreatedTextTag(), fadepoint )
//call SetTextTagVelocityBJ( GetLastCreatedTextTag(), speed, angle )
//call SetTextTagPermanentBJ( GetLastCreatedTextTag(), flag )
function CreateTextTagUnit takes string s, unit whichUnit, real zOffset, real size, real red, real green, real blue, real transparency, real lifespan, real fadepoint, real speed, real angle, boolean flag returns nothing
local texttag tt = CreateTextTag()
local real vel = speed * 0.071 / 128
call SetTextTagText( tt, s, size * 0.023 / 10 )
call SetTextTagPosUnit( tt, whichUnit, zOffset )
call SetTextTagColor( tt, PercentToInt( red, 255 ), PercentToInt( green, 255 ), PercentToInt( blue, 255 ), PercentToInt( 100.0-transparency, 255 ) )
call SetTextTagLifespan( tt, lifespan )
call SetTextTagFadepoint( tt, fadepoint )
call SetTextTagVelocity( tt, vel * Cos( Deg2Rad(angle) ), vel * Sin( Deg2Rad(angle) ) )
call SetTextTagPermanent( tt, flag )
set tt = null
endfunction
function CreateTextTagLoc takes string s, location loc, real zOffset, real size, real red, real green, real blue, real transparency, real lifespan, real fadepoint, real speed, real angle, boolean flag returns nothing
local texttag tt = CreateTextTag()
local real vel = speed * 0.071 / 128
call SetTextTagText( tt, s, size * 0.023 / 10 )
call SetTextTagPos( tt, GetLocationX(loc), GetLocationY(loc), zOffset )
call SetTextTagColor( tt, PercentToInt( red, 255 ), PercentToInt( green, 255 ), PercentToInt( blue, 255 ), PercentToInt( 100.0-transparency, 255 ) )
call SetTextTagLifespan( tt, lifespan )
call SetTextTagFadepoint( tt, fadepoint )
call SetTextTagVelocity( tt, vel * Cos( Deg2Rad(angle) ), vel * Sin( Deg2Rad(angle) ) )
call SetTextTagPermanent( tt, flag )
set tt = null
endfunction
function NewTagets takes integer iplayer returns nothing
set udg_AttackBy[udg_AttackTaget[iplayer]] = udg_AttackBy[iplayer]
set udg_AttackTaget[udg_AttackBy[iplayer]] = udg_AttackTaget[iplayer]
call QuestMessageBJ( udg_NightStalker, bj_QUESTMESSAGE_UPDATED, "|cff32cd32" + GetPlayerName( Player( udg_AttackTaget[iplayer] ) ) + " is going to be attacked by " + GetPlayerName( Player( udg_AttackBy[iplayer] ) ) + "|r" )
set udg_AttackTaget[iplayer] = iplayer
set udg_AttackBy[iplayer] = iplayer
endfunction
function GetPlayerForce takes nothing returns nothing
set udg_Winner = GetEnumPlayer()
endfunction
function Win takes nothing returns nothing
if CountPlayersInForceBJ(udg_Alive) == 1 then
call ForForce( udg_Alive, function GetPlayerForce )
set udg_Ongoing = false
call DisableTrigger(gg_trg_SpawnTimer)
call TriggerExecute(gg_trg_LastMin)
endif
endfunction
function RemoveUnitEnum takes nothing returns nothing
call RemoveUnit( GetEnumUnit() )
endfunction
function RemoveUnits takes integer iplayer returns nothing
local group ug = CreateGroup()
call GroupEnumUnitsInRect( ug, udg_fullArea[iplayer], null )
call ForGroup( ug, function RemoveUnitEnum )
call DestroyGroup(ug)
set ug = null
endfunction
function Lost takes player whichplayer returns nothing
local integer iplayer = GetPlayerId(whichplayer)
call DisableTrigger( udg_CreepSpawners[iplayer] )
call NewTagets(iplayer)
call ForceRemovePlayer( udg_Alive, whichplayer )
call RemoveUnits(iplayer)
call Win()
call QuestMessageBJ( udg_NightStalker, bj_QUESTMESSAGE_UPDATED, GetPlayerName(whichplayer) + " |cffFFC125 lost! (More than 50 creeps entered his circle)|r" )
call QuestMessagePlayer( whichplayer, bj_QUESTMESSAGE_UPDATED, "|cffFFFF55Stay and watch the game, or leave as you like!|r" )
call MultiboardSetItemValue( udg_PlayerCountMBitem[iplayer], "--lost--" )
endfunction
function Left takes player whichplayer returns nothing
local integer iplayer = GetPlayerId(whichplayer)
local integer red = udg_Colors[24]/0x10000
local integer green = udg_Colors[24]/0x100 - red * 0x100
local integer blue = udg_Colors[24] - red * 0x10000 - green * 0x100
local multiboarditem mbitem = MultiboardGetItem( udg_Leaderboard, iplayer, 0 )
call MultiboardSetItemValueColor( mbitem, red*2, green*2, blue*2, 0xff )
call MultiboardReleaseItem(mbitem)
call MultiboardSetItemValueColor( udg_PlayerCountMBitem[iplayer], red*2, green*2, blue*2, 0xff )
if ( BlzForceHasPlayer( udg_Alive, whichplayer ) ) then
call DisableTrigger( udg_CreepSpawners[iplayer] )
call NewTagets(iplayer)
call ForceRemovePlayer( udg_Alive, whichplayer )
call RemoveUnits(iplayer)
call Win()
endif
call QuestMessageBJ( udg_NightStalker, bj_QUESTMESSAGE_UPDATED, GetPlayerName(whichplayer) + " has left the game")
if udg_NotKicked[iplayer] then
call MultiboardSetItemValue( udg_PlayerCountMBitem[iplayer], "--Has left--" )
endif
set mbitem = null
endfunction
function UnitTypeFilter takes nothing returns boolean
return GetUnitTypeId( GetFilterUnit() ) == bj_groupEnumTypeId
endfunction
function IncreaseAbilityLevel takes integer iplayer, integer UnitType, integer abilcode, integer level returns nothing
local unit u
local group ug = CreateGroup()
set bj_groupEnumTypeId = UnitType
call GroupEnumUnitsOfPlayer( ug, Player(iplayer), Filter(function UnitTypeFilter) )
set u = FirstOfGroup(ug)
if u != null then
loop
call SetUnitAbilityLevel( u, abilcode, level )
call GroupRemoveUnit( ug, u )
set u = FirstOfGroup(ug)
exitwhen u == null
endloop
endif
call DestroyGroup(ug)
set ug = null
set u = null
endfunction
function FrostAura takes integer iplayer, integer increase returns nothing
local string s1 = "|cff00FF00Slows enemy units by <CU" + I2S( iplayer + 20 ) + ",DataA1,%%>%% and deals <FA"
local string s2 = "|cff00FF00Slows enemy units by <CU" + I2S( iplayer + 20 ) + ",DataA2,%%>%% and deals <FA"
set udg_FrostLevel[iplayer] = udg_FrostLevel[iplayer] + increase
call IncreaseAbilityLevel( iplayer, 'ub09', 'CU19', udg_FrostLevel[iplayer] )
if udg_FrostLevel[iplayer] >= 10 then
set s1 = s1 + I2S( udg_FrostLevel[iplayer] ) + ",DataA1> damge.|r"
set s2 = s2 + I2S( udg_FrostLevel[iplayer] ) + ",DataA1> damge.|r"
else
set s1 = s1 + "0" + I2S( udg_FrostLevel[iplayer] ) + ",DataA1> damge.|r"
set s2 = s2 + "0" + I2S( udg_FrostLevel[iplayer] ) + ",DataA1> damge.|r"
endif
call BlzSetAbilityExtendedTooltip( 'CU20' + iplayer, s1, 0 )
call BlzSetAbilityExtendedTooltip( 'CU20' + iplayer, s2, 1 )
endfunction
function CreepSpawner takes integer iplayer returns nothing
local unit u
if ( udg_CreepSpawned[iplayer] < udg_MaxCreeps[udg_AttackBy[iplayer]] and udg_Ongoing ) then
// call CreateNUnitsAtLoc( 1, udg_CreatureLevel[udg_CreepLevel[udg_AttackBy[0]]], Player( udg_AttackBy[0] ), udg_GoPoints[0], udg_Facing[0] )
// set bj_lastCreatedUnit = CreateUnitAtLoc( Player( udg_AttackBy[0] ), udg_CreatureLevel[udg_CreepLevel[udg_AttackBy[0]]], udg_GoPoints[0], udg_Facing[0] )
// call SetUnitOwner( CreateUnitAtLoc( Player( udg_AttackBy[0] ), udg_CreatureLevel[udg_CreepLevel[udg_AttackBy[0]]], udg_GoPoints[0], udg_Facing[0] ), udg_AttackerCreep[udg_AttackBy[0]], false )
set u = CreateUnitAtLoc( udg_AttackerCreep[udg_AttackBy[iplayer]], udg_CreatureLevel[udg_CreepLevel[udg_AttackBy[iplayer]]], udg_GoPoints[iplayer*5], udg_Facing[iplayer] )
set udg_CreepSpawned[iplayer] = udg_CreepSpawned[iplayer] + 1
set udg_Creepcount[iplayer] = udg_Creepcount[iplayer] + 1
call MultiboardSetItemValue( udg_PlayerCountMBitem[iplayer], I2S( udg_Creepcount[iplayer] ) )
if udg_Creepcount[iplayer] > 50 then
call Lost( Player(iplayer) )
endif
else
call DisableTrigger( udg_CreepSpawners[iplayer] )
endif
set u = null
endfunction
function CheckPlayer takes nothing returns nothing
if GetPlayerSlotState( GetEnumPlayer() ) != PLAYER_SLOT_STATE_PLAYING then
call Left( GetEnumPlayer() )
endif
endfunction
function Trig_Remove_unused_Units_Actions takes nothing returns nothing
call ForForce( udg_NightStalker, function CheckPlayer )
endfunction
//===========================================================================
function InitTrig_Remove_unused_Units takes nothing returns nothing
set gg_trg_Remove_unused_Units = CreateTrigger()
// call TriggerRegisterTimerEventSingle( gg_trg_Remove_unused_Units, 4.00 )
call TriggerRegisterTimerEvent( gg_trg_Remove_unused_Units, 3, false )
call TriggerAddAction( gg_trg_Remove_unused_Units, function Trig_Remove_unused_Units_Actions )
endfunction
function PlayerFlag takes nothing returns nothing
// call SetPlayerFlagBJ( PLAYER_STATE_GIVES_BOUNTY, true, GetEnumPlayer() )
call SetPlayerState( GetEnumPlayer(), PLAYER_STATE_GIVES_BOUNTY, 1 )
endfunction
function Trig_Initialize_Actions takes nothing returns nothing
local integer i = 0
local integer j = 0
local player p
call ForForce( bj_FORCE_ALL_PLAYERS, function PlayerFlag )
loop
set p = Player(i)
call ForceAddPlayer( udg_NightStalker, p )
call ForceAddPlayer( udg_Alive, p )
call SetPlayerAllianceStateBJ( p, Player(PLAYER_NEUTRAL_PASSIVE), bj_ALLIANCE_UNALLIED )
// call SetPlayerStateBJ( p, PLAYER_STATE_RESOURCE_GOLD, 75 )
call SetPlayerState( p, PLAYER_STATE_GOLD_GATHERED, 75 )
call SetPlayerState( p, PLAYER_STATE_RESOURCE_GOLD, 75 )
// call SetPlayerStateBJ( p, PLAYER_STATE_RESOURCE_FOOD_CAP, 5 )
call SetPlayerState( p, PLAYER_STATE_RESOURCE_FOOD_CAP, 5 )
// call SetPlayerAbilityAvailableBJ( false, 'CU19', udg_TempPlayer )
call SetPlayerAbilityAvailable( p, 'CU19', false )
loop
if j != i then
call SetPlayerAbilityAvailable( p, 'CU20' + j, false )
endif
set j = j + 1
exitwhen j >= udg_PlayerNumber
endloop
set udg_AttackTaget[i] = ModuloInteger( i + 1 , udg_PlayerNumber )
set udg_AttackBy[i] = ModuloInteger( i + udg_PlayerNumber - 1, udg_PlayerNumber )
set udg_AttackerCreep[i] = Player( i + udg_PlayerNumber )
set j = GetPlayerStartLocation(p)
set udg_Builder[i] = BlzCreateUnitWithSkin( p, 'u000', GetStartLocationX(j), GetStartLocationY(j), 270, 'u000' )
set j = 0
set i = i + 1
exitwhen i >= udg_PlayerNumber
endloop
call SuspendTimeOfDay(true)
call TriggerExecute( gg_trg_Lists )
call TriggerExecute( gg_trg_QuestText )
set p = null
endfunction
//===========================================================================
function InitTrig_Initialize takes nothing returns nothing
set gg_trg_Initialize = CreateTrigger()
call TriggerAddAction( gg_trg_Initialize, function Trig_Initialize_Actions )
endfunction
function Trig_MakeTimer_Actions takes nothing returns nothing
// call CreateTimerDialogBJ( udg_CreepSpawnTimer, "TRIGSTR_1846" )
set udg_CreepSpawnTimerWindow = CreateTimerDialog(udg_CreepSpawnTimer)
call TimerDialogSetTitle( udg_CreepSpawnTimerWindow, "|cff33cc00Incoming:|r" )
call TimerDialogDisplay( udg_CreepSpawnTimerWindow, true )
call TriggerSleepAction(6)
// call StartTimerBJ( udg_CreepSpawnTimer, true, 25.00 )
call TimerStart( udg_CreepSpawnTimer, 25, true, null )
endfunction
//===========================================================================
function InitTrig_MakeTimer takes nothing returns nothing
set gg_trg_MakeTimer = CreateTrigger()
call TriggerRegisterTimerEvent( gg_trg_MakeTimer, 1, false )
call TriggerAddAction( gg_trg_MakeTimer, function Trig_MakeTimer_Actions )
endfunction
function Trig_Lists_Actions takes nothing returns nothing
local integer i = 0
local player p = Player(PLAYER_NEUTRAL_PASSIVE)
local unit u
loop
set udg_CreatureLevel[i] = 'c001' + i
set udg_CreatureLevelName[i] = GetObjectName( udg_CreatureLevel[i] )
set udg_IncomeLevel[i] = GetUnitPointValueByType( udg_CreatureLevel[i] )
if i < 28 then
set u = BlzCreateUnitWithSkin( p, udg_CreatureLevel[i], -7080 + 205*i, -130, 270, udg_CreatureLevel[i] )
endif
set i = i + 1
exitwhen i >= 29
endloop
set udg_GoPoints[0] = GetRectCenter(gg_rct_Player1spawnArea)
set udg_GoPoints[1] = GetRectCenter(gg_rct_Player1maze1)
set udg_GoPoints[2] = GetRectCenter(gg_rct_Player1maze2)
set udg_GoPoints[3] = GetRectCenter(gg_rct_Player1maze3)
set udg_GoPoints[4] = GetRectCenter(gg_rct_Player1maze4)
set udg_GoPoints[5] = GetRectCenter(gg_rct_Player2spawnArea)
set udg_GoPoints[6] = GetRectCenter(gg_rct_Player2maze1)
set udg_GoPoints[7] = GetRectCenter(gg_rct_Player2maze2)
set udg_GoPoints[8] = GetRectCenter(gg_rct_Player2maze3)
set udg_GoPoints[9] = GetRectCenter(gg_rct_Player2maze4)
set udg_GoPoints[10] = GetRectCenter(gg_rct_Player3spawnArea)
set udg_GoPoints[11] = GetRectCenter(gg_rct_Player3maze1)
set udg_GoPoints[12] = GetRectCenter(gg_rct_Player3maze2)
set udg_GoPoints[13] = GetRectCenter(gg_rct_Player3maze3)
set udg_GoPoints[14] = GetRectCenter(gg_rct_Player3maze4)
set udg_GoPoints[15] = GetRectCenter(gg_rct_Player4spawnArea)
set udg_GoPoints[16] = GetRectCenter(gg_rct_Player4maze1)
set udg_GoPoints[17] = GetRectCenter(gg_rct_Player4maze2)
set udg_GoPoints[18] = GetRectCenter(gg_rct_Player4maze3)
set udg_GoPoints[19] = GetRectCenter(gg_rct_Player4maze4)
set udg_GoPoints[20] = GetRectCenter(gg_rct_Player5spawnArea)
set udg_GoPoints[21] = GetRectCenter(gg_rct_Player5maze1)
set udg_GoPoints[22] = GetRectCenter(gg_rct_Player5maze2)
set udg_GoPoints[23] = GetRectCenter(gg_rct_Player5maze3)
set udg_GoPoints[24] = GetRectCenter(gg_rct_Player5maze4)
set udg_GoPoints[25] = GetRectCenter(gg_rct_Player6spawnArea)
set udg_GoPoints[26] = GetRectCenter(gg_rct_Player6maze1)
set udg_GoPoints[27] = GetRectCenter(gg_rct_Player6maze2)
set udg_GoPoints[28] = GetRectCenter(gg_rct_Player6maze3)
set udg_GoPoints[29] = GetRectCenter(gg_rct_Player6maze4)
set udg_fullArea[0] = gg_rct_Player1fullArea
set udg_fullArea[1] = gg_rct_Player2fullArea
set udg_fullArea[2] = gg_rct_Player3fullArea
set udg_fullArea[3] = gg_rct_Player4fullArea
set udg_fullArea[4] = gg_rct_Player5fullArea
set udg_fullArea[5] = gg_rct_Player6fullArea
set udg_Facing[0] = 0.00
set udg_Facing[1] = 270.00
set udg_Facing[2] = 180.00
set udg_Facing[3] = 0.00
set udg_Facing[4] = 90.00
set udg_Facing[5] = 180.00
set udg_Color[0] = "red"
set udg_Color[1] = "blue"
set udg_Color[2] = "teal"
set udg_Color[3] = "purple"
set udg_Color[4] = "yellow"
set udg_Color[5] = "orange"
set udg_Color[6] = "green"
set udg_Color[7] = "pink"
set udg_Color[8] = "gray"
set udg_Color[9] = "light blue"
set udg_Color[10] = "dark green"
set udg_Color[11] = "brown"
set udg_Color[12] = "maroon"
set udg_Color[13] = "navy"
set udg_Color[14] = "turquoise"
set udg_Color[15] = "violet"
set udg_Color[16] = "wheat"
set udg_Color[17] = "peach"
set udg_Color[18] = "mint"
set udg_Color[19] = "lavender"
set udg_Color[20] = "coal"
set udg_Color[21] = "snow"
set udg_Color[22] = "emerald"
set udg_Color[23] = "peanut"
set udg_Color[24] = "neutral"
set udg_Colors[0] = 0xff0303
set udg_Colors[1] = 0x0042ff
set udg_Colors[2] = 0x1be7ba
set udg_Colors[3] = 0x550081
set udg_Colors[4] = 0xfefc00
set udg_Colors[5] = 0xfe890d
set udg_Colors[6] = 0x21bf00
set udg_Colors[7] = 0xe45caf
set udg_Colors[8] = 0x939596
set udg_Colors[9] = 0x7ebff1
set udg_Colors[10] = 0x106247
set udg_Colors[11] = 0x4f2b05
set udg_Colors[12] = 0x9c0000
set udg_Colors[13] = 0x0000c3
set udg_Colors[14] = 0x00ebff
set udg_Colors[15] = 0xbd00ff
set udg_Colors[16] = 0xecce87
set udg_Colors[17] = 0xf7a58b
set udg_Colors[18] = 0xbfff81
set udg_Colors[19] = 0xdbb8eb
set udg_Colors[20] = 0x4f5055
set udg_Colors[21] = 0xecf0ff
set udg_Colors[22] = 0x00781e
set udg_Colors[23] = 0xa56f34
set udg_Colors[24] = 0x2e2d2e
set udg_Hints[0] = "|cff32cd32The creeps you are fighting now are sent by another player!|r"
set udg_Hints[1] = "|cff995500You|r |cff32cd32are also sending creeps to another player! (every 25 seconds!)|r"
set udg_Hints[2] = "You gain gold when a player kills |cff32cd32your creeps!|r\nTherefore: |cff32cd32sending more creeps means more gold for you!|r |cff32cd32Better creeptypes are worth more!|r"
set udg_Hints[3] = "Another nice way to earn gold is to get some |cff32cd32Money towers|r."
set udg_Hints[4] = "|cff995500Hint:|r You earn more money from being offensive than being defensive."
set udg_Hints[5] = "|cff32cd32Dont forget to Upgrade your creeps|r. Its a great way to earn |cff32cd32More Gold|r! and to |c00ff2f2fkill|r your opponents"
set udg_Hints[6] = "|c00ff2f2fIt's a good idea to keep an eye on other players creeps!\nWhen someone is defeated, their attackers creeps are sent to the next available player instead.|r"
set udg_Hints[7] = "If you still dont understand how to play this TD, ask the other players. Remember they where ALL noobs once too :)\nAlso you will find some explanation if you press 'F9'."
set p = null
set u = null
endfunction
//===========================================================================
function InitTrig_Lists takes nothing returns nothing
set gg_trg_Lists = CreateTrigger()
call TriggerAddAction( gg_trg_Lists, function Trig_Lists_Actions )
endfunction
function VisibilityEnemifying takes nothing returns nothing
// call CreateFogModifierRectBJ( true, GetEnumPlayer(), FOG_OF_WAR_VISIBLE, GetEntireMapRect() )
call FogModifierStart( CreateFogModifierRect( GetEnumPlayer(), FOG_OF_WAR_VISIBLE, GetWorldBounds(), true, false ) )
endfunction
function Trig_Visibility_and_Enemifying_Actions takes nothing returns nothing
call SetForceAllianceStateBJ( bj_FORCE_ALL_PLAYERS, bj_FORCE_ALL_PLAYERS, bj_ALLIANCE_UNALLIED )
call ForForce( udg_NightStalker, function VisibilityEnemifying )
endfunction
//===========================================================================
function InitTrig_Visibility_and_Enemifying takes nothing returns nothing
set gg_trg_Visibility_and_Enemifying = CreateTrigger()
call TriggerRegisterTimerEvent( gg_trg_Visibility_and_Enemifying, 1, false )
call TriggerAddAction( gg_trg_Visibility_and_Enemifying, function Trig_Visibility_and_Enemifying_Actions )
endfunction
function SpawnManager takes nothing returns nothing
local player p = GetEnumPlayer()
local integer i = GetPlayerId(p)
set udg_CreepSpawned[i] = 0
call EnableTrigger( udg_CreepSpawners[i] )
// call QuestMessageBJ( bj_FORCE_PLAYER[0], bj_QUESTMESSAGE_UPDATED, "|c00ff2f2fYou are sending " + I2S( udg_MaxCreeps[i] ) + " " + udg_CreatureLevelName[udg_CreepLevel[i]] + " to " + GetPlayerName( Player( udg_AttackTaget[i] ) ) + "|r" )
call QuestMessagePlayer( p, bj_QUESTMESSAGE_UPDATED, "|cff88FF55You are sending|r |cffFFC125" + I2S( udg_MaxCreeps[i] ) + "|r |cff88FF55" + udg_CreatureLevelName[udg_CreepLevel[i]] + "|r |cffFFC125(Level " + I2S(udg_CreepLevel[i] + 1) + ")|r |cff88FF55to|r |cffFFC125" + GetPlayerName( Player( udg_AttackTaget[i] ) ) + "|r" )
// call QuestMessageBJ( bj_FORCE_PLAYER[0], bj_QUESTMESSAGE_UPDATED, "|cff32cd32You are attacked by " + GetPlayerName(Player( udg_AttackBy[0] ) + "|r" )
call QuestMessagePlayer( p, bj_QUESTMESSAGE_UPDATED, "|cffFF5555You are attacked by|r |cffFFC125" + GetPlayerName(Player( udg_AttackBy[i] ) ) + "|r |cffFF5555with |cffFFC125" + I2S( udg_MaxCreeps[udg_AttackBy[i]] ) + "|r |cffFF5555" + udg_CreatureLevelName[udg_CreepLevel[udg_AttackBy[i]]] + "|r |cffFFC125(Level " + I2S(udg_CreepLevel[udg_AttackBy[i]] + 1) + ")|r" )
// Will look like this (example) :
// Sending a wave of 10 Papa-skelly to SomePlayer
// Incoming wave of attackers from SomeOtherPlayer
set p = null
endfunction
function Trig_SpawnTimer_Actions takes nothing returns nothing
call ForForce( udg_Alive, function SpawnManager )
endfunction
//===========================================================================
function InitTrig_SpawnTimer takes nothing returns nothing
set gg_trg_SpawnTimer = CreateTrigger()
call TriggerRegisterTimerExpireEvent( gg_trg_SpawnTimer, udg_CreepSpawnTimer )
call TriggerAddAction( gg_trg_SpawnTimer, function Trig_SpawnTimer_Actions )
endfunction
function Trig_CreepSpawner1_Actions takes nothing returns nothing
call CreepSpawner(0)
endfunction
function Trig_CreepSpawner2_Actions takes nothing returns nothing
call CreepSpawner(1)
endfunction
function Trig_CreepSpawner3_Actions takes nothing returns nothing
call CreepSpawner(2)
endfunction
function Trig_CreepSpawner4_Actions takes nothing returns nothing
call CreepSpawner(3)
endfunction
function Trig_CreepSpawner5_Actions takes nothing returns nothing
call CreepSpawner(4)
endfunction
function Trig_CreepSpawner6_Actions takes nothing returns nothing
call CreepSpawner(5)
endfunction
//===========================================================================
function InitTrig_CreepSpawner takes nothing returns nothing
local integer i = 0
loop
set udg_CreepSpawners[i] = CreateTrigger()
call DisableTrigger( udg_CreepSpawners[i] )
call TriggerRegisterTimerEvent( udg_CreepSpawners[i], 0.5, true )
set i = i + 1
exitwhen i >= udg_PlayerNumber
endloop
call TriggerAddAction( udg_CreepSpawners[0], function Trig_CreepSpawner1_Actions )
call TriggerAddAction( udg_CreepSpawners[1], function Trig_CreepSpawner2_Actions )
call TriggerAddAction( udg_CreepSpawners[2], function Trig_CreepSpawner3_Actions )
call TriggerAddAction( udg_CreepSpawners[3], function Trig_CreepSpawner4_Actions )
call TriggerAddAction( udg_CreepSpawners[4], function Trig_CreepSpawner5_Actions )
call TriggerAddAction( udg_CreepSpawners[5], function Trig_CreepSpawner6_Actions )
endfunction
function Trig_Help_Actions takes nothing returns nothing
local player p = GetTriggerPlayer()
call DisplayTimedTextToPlayer( p, 0, 0, 10.00, "In this TD your creeps are automatically spawned to the next player ( 1 to 2; 2 to 3 ... 6 to 1)" )
call TriggerSleepAction(10.50)
call DisplayTimedTextToPlayer( p, 0, 0, 15.00, "So your have to Defened the creeps from another Player.\nIf over 50 (51 & more) creeps are in your area you loss." )
call TriggerSleepAction(15.50)
call DisplayTimedTextToPlayer( p, 0, 0, 25.00, "If a Player are defeated (e.g. Player 2) the creeps from Player before the defeated Player (Player 1) goes to the Player after the defeated Player (Player 3).\nSo be carfull & look at other Player, too." )
set p = null
endfunction
//===========================================================================
function InitTrig_Help takes nothing returns nothing
set gg_trg_Help = CreateTrigger()
// call TriggerRegisterPlayerChatEvent( gg_trg_Help, Player(0), "help", false )
call TriggerRegisterAnyPlayerChatEvent( gg_trg_Help, "help", false )
call TriggerAddAction( gg_trg_Help, function Trig_Help_Actions )
endfunction
function Trig_NoHintChooser_Actions takes nothing returns nothing
call SetPlayerAllianceStateBJ( GetTriggerPlayer(), Player(PLAYER_NEUTRAL_PASSIVE), bj_ALLIANCE_NEUTRAL )
endfunction
//===========================================================================
function InitTrig_NoHintChooser takes nothing returns nothing
set gg_trg_NoHintChooser = CreateTrigger()
// call TriggerRegisterPlayerChatEvent( gg_trg_NoHintChooser, Player(0), "nohint", false )
call TriggerRegisterAnyPlayerChatEvent( gg_trg_NoHintChooser, "nohint", false )
call TriggerAddAction( gg_trg_NoHintChooser, function Trig_NoHintChooser_Actions )
endfunction
function Trig_Leaderboard_Actions takes nothing returns nothing
local integer i = 0
local integer red = 0
local integer green = 0
local integer blue = 0
local multiboarditem mbitem
set udg_Leaderboard = CreateMultiboard()
call MultiboardSetTitleText( udg_Leaderboard, "|cff55FF00Number of creeps:|r" )
call MultiboardSetColumnCount( udg_Leaderboard, 2 )
call MultiboardSetRowCount( udg_Leaderboard, udg_PlayerNumber + 1 )
call MultiboardSetItemsStyle( udg_Leaderboard, true, false )
call MultiboardSetItemsValue( udg_Leaderboard, "0" )
loop
set red = udg_Colors[i]/0x10000
set green = udg_Colors[i]/0x100 - red * 0x100
set blue = udg_Colors[i] - red * 0x10000 - green * 0x100
//Set Player field
set mbitem = MultiboardGetItem( udg_Leaderboard, i, 0 )
call MultiboardSetItemWidth( mbitem, 12.4/100.0 )
call MultiboardSetItemValue( mbitem, GetPlayerName( Player(i) ) )
call MultiboardSetItemValueColor( mbitem, red, green, blue, 0xff )
call MultiboardReleaseItem(mbitem)
//Set Score field
set udg_PlayerCountMBitem[i] = MultiboardGetItem( udg_Leaderboard, i, 1 )
call MultiboardSetItemWidth( udg_PlayerCountMBitem[i], 5.4/100.0 )
call MultiboardSetItemValueColor( udg_PlayerCountMBitem[i], red, green, blue, 0xff )
set i = i + 1
exitwhen i >= udg_PlayerNumber
endloop
set red = udg_Colors[udg_PlayerNumber]/0x10000
set green = udg_Colors[udg_PlayerNumber]/0x100 - red * 0x100
set blue = udg_Colors[udg_PlayerNumber] - red * 0x10000 - green * 0x100
//Set Last field
set mbitem = MultiboardGetItem( udg_Leaderboard, udg_PlayerNumber, 0 )
call MultiboardSetItemWidth( mbitem, 12.4/100.0 )
call MultiboardSetItemValue( mbitem, "Don't go above" )
call MultiboardSetItemValueColor( mbitem, red, green, blue, 0xff )
call MultiboardSetItemStyle( mbitem, true, false )
call MultiboardReleaseItem(mbitem)
//Set MaxCreep field
set mbitem = MultiboardGetItem( udg_Leaderboard, udg_PlayerNumber, 1 )
call MultiboardSetItemWidth( mbitem, 5.4/100.0 )
call MultiboardSetItemValue( mbitem, "50" )
call MultiboardSetItemValueColor( mbitem, red, green, blue, 0xff )
call MultiboardSetItemStyle( mbitem, true, false )
call MultiboardReleaseItem(mbitem)
call MultiboardMinimize( udg_Leaderboard, true )
call MultiboardMinimize( udg_Leaderboard, false )
call MultiboardDisplay( udg_Leaderboard, true )
set mbitem = null
endfunction
//===========================================================================
function InitTrig_Leaderboard takes nothing returns nothing
set gg_trg_Leaderboard = CreateTrigger()
call TriggerRegisterTimerEvent( gg_trg_Leaderboard, 5, false )
call TriggerAddAction( gg_trg_Leaderboard, function Trig_Leaderboard_Actions )
endfunction
function Trig_Left_Actions takes nothing returns nothing
call Left( GetTriggerPlayer() )
endfunction
//===========================================================================
function InitTrig_Left takes nothing returns nothing
set gg_trg_Left = CreateTrigger()
// call TriggerRegisterPlayerEventLeave( gg_trg_Left, Player(0) )
// call TriggerRegisterPlayerEvent( gg_trg_Left, Player(0), EVENT_PLAYER_LEAVE )
call TriggerRegisterAnyPlayerEvent( gg_trg_Left, EVENT_PLAYER_LEAVE )
call TriggerAddAction( gg_trg_Left, function Trig_Left_Actions )
endfunction
function KickPlayer takes nothing returns nothing
local player p = GetEnumPlayer()
local integer i = GetPlayerId(p)
local string s = GetEventPlayerChatString()
if ( s == ( "-kick " + udg_Color[i] ) or s == ( "-kick " + I2S( i + 1 ) ) or s == "-kick all" ) then
set udg_NotKicked[i] = false
call CustomDefeatBJ( p, "Kicked!" )
call QuestMessageBJ( udg_NightStalker, bj_QUESTMESSAGE_UPDATED, GetPlayerName(p) + " was kicked from the game")
call MultiboardSetItemValue( udg_PlayerCountMBitem[i], "--Kicked--" )
call Left(p)
else
endif
set p = null
endfunction
function Trig_Kick_Actions takes nothing returns nothing
call ForForce( udg_Alive, function KickPlayer )
endfunction
//===========================================================================
function InitTrig_Kick takes nothing returns nothing
set gg_trg_Kick = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Kick, Player(0), "-kick", false )
call TriggerAddAction( gg_trg_Kick, function Trig_Kick_Actions )
endfunction
function Trig_SellTower_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'SELL'
endfunction
function Trig_SellTower_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local integer val = GetUnitPointValue(u)
local player p = GetOwningPlayer(u)
local location l = GetUnitLoc(u)
// call AddSpecialEffectLocBJ( l, "Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl" )
local effect e = AddSpecialEffectLoc( "Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl" , l )
call DestroyEffect(e)
call CreateTextTagLoc( "+" + I2S( val ), l, 10, 10, 50, 100, 0, 40, 2, 0, 64, 90, false )
call RemoveUnit(u)
// call AdjustPlayerStateBJ( GetUnitPointValue(GetTriggerUnit()), udg_TempPlayer, PLAYER_STATE_RESOURCE_GOLD )
call SetPlayerState( p, PLAYER_STATE_GOLD_GATHERED, GetPlayerState( p, PLAYER_STATE_GOLD_GATHERED ) + val )
call SetPlayerState( p, PLAYER_STATE_RESOURCE_GOLD, GetPlayerState( p, PLAYER_STATE_RESOURCE_GOLD ) + val )
call RemoveLocation(l)
set u = null
set p = null
set l = null
set e = null
endfunction
//===========================================================================
function InitTrig_SellTower takes nothing returns nothing
set gg_trg_SellTower = CreateTrigger()
call TriggerRegisterAnyUnitEvent( gg_trg_SellTower, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_SellTower, Condition( function Trig_SellTower_Conditions ) )
call TriggerAddAction( gg_trg_SellTower, function Trig_SellTower_Actions )
endfunction
function Trig_CreepMoney_Actions takes nothing returns nothing
local integer iplayer = GetPlayerId( GetOwningPlayer( GetKillingUnit() ) )
local player p = Player( udg_AttackBy[iplayer] )
local integer val = GetUnitPointValue( GetTriggerUnit() )
local location l = GetUnitLoc( udg_Builder[udg_AttackBy[iplayer]] )
set udg_Creepcount[iplayer] = udg_Creepcount[iplayer] - 1
call MultiboardSetItemValue( udg_PlayerCountMBitem[iplayer], I2S( udg_Creepcount[iplayer] ) )
call CreateTextTagLoc( "+" + I2S( val ), l, 0, 15, 100, 100, 0, 30, 3, 0, 64, 90, false )
// call AdjustPlayerStateBJ( GetUnitPointValue(GetTriggerUnit()), p, PLAYER_STATE_RESOURCE_GOLD )
call SetPlayerState( p, PLAYER_STATE_GOLD_GATHERED, GetPlayerState( p, PLAYER_STATE_GOLD_GATHERED ) + val )
call SetPlayerState( p, PLAYER_STATE_RESOURCE_GOLD, GetPlayerState( p, PLAYER_STATE_RESOURCE_GOLD ) + val )
call RemoveLocation(l)
set p = null
set l = null
endfunction
//===========================================================================
function InitTrig_CreepMoney takes nothing returns nothing
set gg_trg_CreepMoney = CreateTrigger()
call TriggerRegisterAnyCreepEvent( gg_trg_CreepMoney, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddAction( gg_trg_CreepMoney, function Trig_CreepMoney_Actions )
endfunction
function Trig_MoneyTowers_Conditions takes nothing returns boolean
return GetUnitTypeId( GetAttacker() ) == 'ub01'
endfunction
function Trig_MoneyTowers_Actions takes nothing returns nothing
local unit u = GetAttacker()
local player p = GetOwningPlayer(u)
local integer i = GetPlayerId(p)
local location l = GetUnitLoc(u)
call CreateTextTagLoc( "+" + I2S( udg_Moneytowerincome[i] ), l, 10, 10, 50, 100, 0, 40, 2, 0, 64, 90, false )
// call AdjustPlayerStateBJ( udg_Moneytowerincome[udg_TempInt], udg_TempPlayer, PLAYER_STATE_RESOURCE_GOLD )
call SetPlayerState( p, PLAYER_STATE_GOLD_GATHERED, GetPlayerState( p, PLAYER_STATE_GOLD_GATHERED ) + udg_Moneytowerincome[i] )
call SetPlayerState( p, PLAYER_STATE_RESOURCE_GOLD, GetPlayerState( p, PLAYER_STATE_RESOURCE_GOLD ) + udg_Moneytowerincome[i] )
call RemoveLocation(l)
set u = null
set p = null
set l = null
endfunction
//===========================================================================
function InitTrig_MoneyTowers takes nothing returns nothing
set gg_trg_MoneyTowers = CreateTrigger()
call TriggerRegisterAnyCreepEvent( gg_trg_MoneyTowers, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_MoneyTowers, Condition( function Trig_MoneyTowers_Conditions ) )
call TriggerAddAction( gg_trg_MoneyTowers, function Trig_MoneyTowers_Actions )
endfunction
function Trig_ReseachUpgrades_Actions takes nothing returns nothing
local player p = GetOwningPlayer( GetTriggerUnit() )
local integer i = GetPlayerId(p)
local integer r = GetResearched()
if r == 'R001' then //Upgrade Creeptype
set udg_CreepLevel[i] = udg_CreepLevel[i] + 1
call AddPlayerTechResearched( udg_AttackerCreep[i], r, 1 )
elseif r == 'R003' then //Call Reinforcements
set udg_MaxCreeps[i] = udg_MaxCreeps[i] + 2
call AddPlayerTechResearched( udg_AttackerCreep[i], r, 1 )
elseif r == 'R00F' then //Creeps Health
call AddPlayerTechResearched( udg_AttackerCreep[i], r, 1 )
elseif r == 'R002' then //Creeps Speed
call AddPlayerTechResearched( udg_AttackerCreep[i], r, 1 )
elseif r == 'R00G' then //Creeps Armor
call AddPlayerTechResearched( udg_AttackerCreep[i], r, 1 )
elseif ( r == 'R00C' or r == 'R00D' ) then //More Damage! (All Towertypes) and More Speed! (All Towertypes)
call FrostAura( i, 1 )
elseif r == 'R009' then //More Gold! (Money Towers)
set udg_Moneytowerincome[i] = udg_Moneytowerincome[i] + 1
elseif r == 'R00B' then //More Speed! (Frosttowers)
call FrostAura( i, 4 )
elseif r == 'R00E' then //Advanced Trowerbuilding
call AddPlayerTechResearched( p, 'RD00', 1 )
call AddPlayerTechResearched( p, 'RD01', 1 )
if GetPlayerTechCount( p, 'R00E', true ) >= 2 then
call FrostAura( i, 4 )
endif
endif
set p = null
endfunction
//===========================================================================
function InitTrig_ReseachUpgrades takes nothing returns nothing
set gg_trg_ReseachUpgrades = CreateTrigger()
call TriggerRegisterAnyUnitEvent( gg_trg_ReseachUpgrades, EVENT_PLAYER_UNIT_RESEARCH_FINISH )
call TriggerAddAction( gg_trg_ReseachUpgrades, function Trig_ReseachUpgrades_Actions )
endfunction
function Trig_AuraFrostTower_Conditions takes nothing returns boolean
return GetUnitTypeId( GetTriggerUnit() ) == 'ub09'
endfunction
function Trig_AuraFrostTower_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
call SetUnitAbilityLevel( u, 'CU19', udg_FrostLevel[GetPlayerId( GetOwningPlayer(u) )] )
set u = null
endfunction
//===========================================================================
function InitTrig_AuraFrostTower takes nothing returns nothing
set gg_trg_AuraFrostTower = CreateTrigger()
// call TriggerRegisterAnyUnitEventBJ( gg_trg_AuraFrostTower, EVENT_PLAYER_UNIT_CONSTRUCT_FINISH )
call TriggerRegisterAnyUnitEvent( gg_trg_AuraFrostTower, EVENT_PLAYER_UNIT_UPGRADE_FINISH )
call TriggerAddCondition( gg_trg_AuraFrostTower, Condition( function Trig_AuraFrostTower_Conditions ) )
call TriggerAddAction( gg_trg_AuraFrostTower, function Trig_AuraFrostTower_Actions )
endfunction