Jass:MeleeInitVictoryDefeat
Aus Mappedia
| Funktion: MeleeInitVictoryDefeat | |
|---|---|
| Parameter: | nothing |
| Rückgabewert: | nothing |
| Autor: | Blizzard |
| Quelle: | Blizzard.j |
| Synchron: | Unbekannt |
Code
function MeleeInitVictoryDefeat takes nothing returns nothing local trigger trig local integer index local player indexPlayer // Create a timer window for the "finish soon" timeout period, it has no timer // because it is driven by real time (outside of the game state to avoid desyncs) set bj_finishSoonTimerDialog = CreateTimerDialog(null) // Set a trigger to fire when we receive a "finish soon" game event set trig = CreateTrigger() call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_SOON) call TriggerAddAction(trig, function MeleeTriggerTournamentFinishSoon) // Set a trigger to fire when we receive a "finish now" game event set trig = CreateTrigger() call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_NOW) call TriggerAddAction(trig, function MeleeTriggerTournamentFinishNow) // Set up each player's mortality code. set index = 0 loop set indexPlayer = Player(index) // Make sure this player slot is playing. if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then set bj_meleeDefeated[index] = false set bj_meleeVictoried[index] = false // Create a timer and timer window in case the player is crippled. set bj_playerIsCrippled[index] = false set bj_playerIsExposed[index] = false set bj_crippledTimer[index] = CreateTimer() set bj_crippledTimerWindows[index] = CreateTimerDialog(bj_crippledTimer[index]) call TimerDialogSetTitle(bj_crippledTimerWindows[index], MeleeGetCrippledTimerMessage(indexPlayer)) // Set a trigger to fire whenever a building is cancelled for this player. set trig = CreateTrigger() call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_CANCEL, null) call TriggerAddAction(trig, function MeleeTriggerActionConstructCancel) // Set a trigger to fire whenever a unit dies for this player. set trig = CreateTrigger() call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_DEATH, null) call TriggerAddAction(trig, function MeleeTriggerActionUnitDeath) // Set a trigger to fire whenever a unit begins construction for this player set trig = CreateTrigger() call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_START, null) call TriggerAddAction(trig, function MeleeTriggerActionUnitConstructionStart) // Set a trigger to fire whenever this player defeats-out set trig = CreateTrigger() call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_DEFEAT) call TriggerAddAction(trig, function MeleeTriggerActionPlayerDefeated) // Set a trigger to fire whenever this player leaves set trig = CreateTrigger() call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE) call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft) // Set a trigger to fire whenever this player changes his/her alliances. set trig = CreateTrigger() call TriggerRegisterPlayerAllianceChange(trig, indexPlayer, ALLIANCE_PASSIVE) call TriggerRegisterPlayerStateEvent(trig, indexPlayer, PLAYER_STATE_ALLIED_VICTORY, EQUAL, 1) call TriggerAddAction(trig, function MeleeTriggerActionAllianceChange) else set bj_meleeDefeated[index] = true set bj_meleeVictoried[index] = false // Handle leave events for observers if (IsPlayerObserver(indexPlayer)) then // Set a trigger to fire whenever this player leaves set trig = CreateTrigger() call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE) call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft) endif endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop // Test for victory / defeat at startup, in case the user has already won / lost. // Allow for a short time to pass first, so that the map can finish loading. call TimerStart(CreateTimer(), 2.0, false, function MeleeTriggerActionAllianceChange) endfunction
