MeleeTournamentFinishNowRuleA
- Parameters
-
multiplier integer
- comment
- patch
1.07
- Source
- Blizzard.j
- return type
nothing
- Source code
function MeleeTournamentFinishNowRuleA takes integer multiplier returns nothing local integer array playerScore local integer array teamScore local force array teamForce local integer teamCount local integer index local player indexPlayer local integer index2 local player indexPlayer2 local integer bestTeam local integer bestScore local boolean draw // Compute individual player scores set index = 0 loop set indexPlayer = Player(index) if MeleeWasUserPlayer(indexPlayer) then set playerScore[index] = GetTournamentScore(indexPlayer) if playerScore[index] <= 0 then set playerScore[index] = 1 endif else set playerScore[index] = 0 endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop // Compute team scores and team forces set teamCount = 0 set index = 0 loop if playerScore[index] != 0 then set indexPlayer = Player(index) set teamScore[teamCount] = 0 set teamForce[teamCount] = CreateForce() set index2 = index loop if playerScore[index2] != 0 then set indexPlayer2 = Player(index2) if PlayersAreCoAllied(indexPlayer, indexPlayer2) then set teamScore[teamCount] = teamScore[teamCount] + playerScore[index2] call ForceAddPlayer(teamForce[teamCount], indexPlayer2) set playerScore[index2] = 0 endif endif set index2 = index2 + 1 exitwhen index2 == bj_MAX_PLAYERS endloop set teamCount = teamCount + 1 endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop // The game is now over set bj_meleeGameOver = true // There should always be at least one team, but continue to work if not if teamCount != 0 then // Find best team score set bestTeam = -1 set bestScore = -1 set index = 0 loop if teamScore[index] > bestScore then set bestTeam = index set bestScore = teamScore[index] endif set index = index + 1 exitwhen index == teamCount endloop // Check whether the best team's score is 'multiplier' times better than // every other team. In the case of multiplier == 1 and exactly equal team // scores, the first team (which was randomly chosen by the server) will win. set draw = false set index = 0 loop if index != bestTeam then if bestScore < (multiplier * teamScore[index]) then set draw = true endif endif set index = index + 1 exitwhen index == teamCount endloop if draw then // Give draw to all players on all teams set index = 0 loop call ForForce(teamForce[index], function MeleeDoDrawEnum) set index = index + 1 exitwhen index == teamCount endloop else // Give defeat to all players on teams other than the best team set index = 0 loop if index != bestTeam then call ForForce(teamForce[index], function MeleeDoDefeatEnum) endif set index = index + 1 exitwhen index == teamCount endloop // Give victory to all players on the best team call ForForce(teamForce[bestTeam], function MeleeDoVictoryEnum) endif endif endfunction