mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-07-28 01:52:16 +00:00
Survival of the fittest cleanup. Based on patch by bb, refs #3102.
Show notificaiton to all players and observers. Whitespace fixes. let instead of var. This was SVN commit r18430.
This commit is contained in:
@@ -87,32 +87,32 @@ var attackerEntityTemplates =
|
|||||||
|
|
||||||
Trigger.prototype.StartAnEnemyWave = function()
|
Trigger.prototype.StartAnEnemyWave = function()
|
||||||
{
|
{
|
||||||
var cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
|
let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);
|
||||||
var attackerEntities = attackerEntityTemplates[Math.floor(Math.random() * attackerEntityTemplates.length)];
|
let attackerEntities = attackerEntityTemplates[Math.floor(Math.random() * attackerEntityTemplates.length)];
|
||||||
// A soldier for each 2-3 minutes of the game. Should be waves of 20 soldiers after an hour
|
// A soldier for each 2-3 minutes of the game. Should be waves of 20 soldiers after an hour
|
||||||
var nextTime = Math.round(120000 + Math.random() * 60000);
|
let nextTime = Math.round(120000 + Math.random() * 60000);
|
||||||
var attackerCount = Math.round(cmpTimer.GetTime() / nextTime / attackerEntities.length);
|
let attackerCount = Math.round(cmpTimer.GetTime() / nextTime / attackerEntities.length);
|
||||||
|
|
||||||
// spawn attackers
|
// spawn attackers
|
||||||
var attackers = [];
|
let attackers = [];
|
||||||
for (let attackerEntity of attackerEntities)
|
for (let attackerEntity of attackerEntities)
|
||||||
attackers.push(TriggerHelper.SpawnUnitsFromTriggerPoints("A", attackerEntity, attackerCount, 0));
|
attackers.push(TriggerHelper.SpawnUnitsFromTriggerPoints("A", attackerEntity, attackerCount, 0));
|
||||||
|
|
||||||
for (var entityType of attackers)
|
for (let entityType of attackers)
|
||||||
{
|
{
|
||||||
for (var origin in entityType)
|
for (let origin in entityType)
|
||||||
{
|
{
|
||||||
var cmpPlayer = QueryOwnerInterface(+origin, IID_Player);
|
let cmpPlayer = QueryOwnerInterface(+origin, IID_Player);
|
||||||
if (cmpPlayer.GetState() != "active")
|
if (cmpPlayer.GetState() != "active")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var cmpPosition = Engine.QueryInterface(this.playerCivicCenter[cmpPlayer.GetPlayerID()], IID_Position);
|
let cmpPosition = Engine.QueryInterface(this.playerCivicCenter[cmpPlayer.GetPlayerID()], IID_Position);
|
||||||
// this shouldn't happen if the player is still active
|
// this shouldn't happen if the player is still active
|
||||||
if (!cmpPosition || !cmpPosition.IsInWorld)
|
if (!cmpPosition || !cmpPosition.IsInWorld)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// store the x and z coordinates in the command
|
// store the x and z coordinates in the command
|
||||||
var cmd = cmpPosition.GetPosition();
|
let cmd = cmpPosition.GetPosition();
|
||||||
cmd.type = "attack-walk";
|
cmd.type = "attack-walk";
|
||||||
cmd.entities = entityType[origin];
|
cmd.entities = entityType[origin];
|
||||||
cmd.queued = true;
|
cmd.queued = true;
|
||||||
@@ -122,9 +122,8 @@ Trigger.prototype.StartAnEnemyWave = function()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
|
let cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
|
||||||
cmpGUIInterface.PushNotification({
|
cmpGUIInterface.PushNotification({
|
||||||
"players": [1,2,3,4,5,6,7,8],
|
|
||||||
"message": markForTranslation("An enemy wave is attacking!"),
|
"message": markForTranslation("An enemy wave is attacking!"),
|
||||||
"translateMessage": true
|
"translateMessage": true
|
||||||
});
|
});
|
||||||
@@ -133,13 +132,13 @@ Trigger.prototype.StartAnEnemyWave = function()
|
|||||||
|
|
||||||
Trigger.prototype.InitGame = function()
|
Trigger.prototype.InitGame = function()
|
||||||
{
|
{
|
||||||
var numberOfPlayers = TriggerHelper.GetNumberOfPlayers();
|
let numberOfPlayers = TriggerHelper.GetNumberOfPlayers();
|
||||||
// Find all of the civic centers, disable some structures
|
// Find all of the civic centers, disable some structures
|
||||||
for (var i = 1; i < numberOfPlayers; ++i)
|
for (let i = 1; i < numberOfPlayers; ++i)
|
||||||
{
|
{
|
||||||
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
|
let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
|
||||||
var playerEntities = cmpRangeManager.GetEntitiesByPlayer(i); // Get all of each player's entities
|
let playerEntities = cmpRangeManager.GetEntitiesByPlayer(i); // Get all of each player's entities
|
||||||
|
|
||||||
for (let entity of playerEntities)
|
for (let entity of playerEntities)
|
||||||
if (TriggerHelper.EntityHasClass(entity, "CivilCentre"))
|
if (TriggerHelper.EntityHasClass(entity, "CivilCentre"))
|
||||||
cmpTrigger.playerCivicCenter[i] = entity;
|
cmpTrigger.playerCivicCenter[i] = entity;
|
||||||
@@ -147,26 +146,26 @@ Trigger.prototype.InitGame = function()
|
|||||||
|
|
||||||
// Fix alliances
|
// Fix alliances
|
||||||
/* Until we can do something about limiting the victory conditions available for this map to "None"
|
/* Until we can do something about limiting the victory conditions available for this map to "None"
|
||||||
for (var i = 1; i < numberOfPlayers; ++i)
|
for (let i = 1; i < numberOfPlayers; ++i)
|
||||||
{
|
{
|
||||||
var cmpPlayer = QueryPlayerIDInterface(i);
|
let cmpPlayer = QueryPlayerIDInterface(i);
|
||||||
for (var j = 1; j < numberOfPlayers; ++j)
|
for (let j = 1; j < numberOfPlayers; ++j)
|
||||||
if (i != j)
|
if (i != j)
|
||||||
cmpPlayer.SetAlly(j);
|
cmpPlayer.SetAlly(j);
|
||||||
cmpPlayer.SetLockTeams(true);
|
cmpPlayer.SetLockTeams(true);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
// Make gaia black
|
// Make gaia black
|
||||||
QueryPlayerIDInterface(0).SetColor(0, 0, 0);
|
QueryPlayerIDInterface(0).SetColor(0, 0, 0);
|
||||||
|
|
||||||
// Place the treasures
|
// Place the treasures
|
||||||
this.PlaceTreasures();
|
this.PlaceTreasures();
|
||||||
|
|
||||||
// Disable farms, civic centers and walls for all players
|
// Disable farms, civic centers and walls for all players
|
||||||
for (var i = 1; i < numberOfPlayers; ++i)
|
for (let i = 1; i < numberOfPlayers; ++i)
|
||||||
{
|
{
|
||||||
let cmpPlayer = QueryPlayerIDInterface(i);
|
let cmpPlayer = QueryPlayerIDInterface(i);
|
||||||
var civ = cmpPlayer.GetCiv();
|
let civ = cmpPlayer.GetCiv();
|
||||||
cmpPlayer.SetDisabledTemplates([
|
cmpPlayer.SetDisabledTemplates([
|
||||||
"structures/" + civ + "_field",
|
"structures/" + civ + "_field",
|
||||||
"structures/" + civ + "_corral",
|
"structures/" + civ + "_corral",
|
||||||
@@ -175,16 +174,16 @@ Trigger.prototype.InitGame = function()
|
|||||||
"structures/" + civ + "_wallset_stone",
|
"structures/" + civ + "_wallset_stone",
|
||||||
"other/wallset_palisade"
|
"other/wallset_palisade"
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Trigger.prototype.PlaceTreasures = function()
|
Trigger.prototype.PlaceTreasures = function()
|
||||||
{
|
{
|
||||||
let point = ["B", "C", "D"][Math.floor(Math.random() * 3)];
|
let point = ["B", "C", "D"][Math.floor(Math.random() * 3)];
|
||||||
var triggerPoints = cmpTrigger.GetTriggerPoints(point);
|
let triggerPoints = cmpTrigger.GetTriggerPoints(point);
|
||||||
for (var point of triggerPoints)
|
for (let point of triggerPoints)
|
||||||
{
|
{
|
||||||
var template = treasures[Math.floor(Math.random() * treasures.length)]
|
let template = treasures[Math.floor(Math.random() * treasures.length)]
|
||||||
TriggerHelper.SpawnUnits(point, template, 1, 0);
|
TriggerHelper.SpawnUnits(point, template, 1, 0);
|
||||||
}
|
}
|
||||||
cmpTrigger.DoAfterDelay(4*60*1000, "PlaceTreasures", {}); //Place more treasures after 4 minutes
|
cmpTrigger.DoAfterDelay(4*60*1000, "PlaceTreasures", {}); //Place more treasures after 4 minutes
|
||||||
@@ -192,10 +191,9 @@ Trigger.prototype.PlaceTreasures = function()
|
|||||||
|
|
||||||
Trigger.prototype.InitializeEnemyWaves = function()
|
Trigger.prototype.InitializeEnemyWaves = function()
|
||||||
{
|
{
|
||||||
var time = (5 + Math.round(Math.random() * 10)) * 60 * 1000;
|
let time = (5 + Math.round(Math.random() * 10)) * 60 * 1000;
|
||||||
var cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
|
let cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
|
||||||
cmpGUIInterface.AddTimeNotification({
|
cmpGUIInterface.AddTimeNotification({
|
||||||
"players": [1,2,3,4,5,6,7,8],
|
|
||||||
"message": markForTranslation("The first wave will start in %(time)s!"),
|
"message": markForTranslation("The first wave will start in %(time)s!"),
|
||||||
"translateMessage": true
|
"translateMessage": true
|
||||||
}, time);
|
}, time);
|
||||||
@@ -208,12 +206,12 @@ Trigger.prototype.DefeatPlayerOnceCCIsDestroyed = function(data)
|
|||||||
if (data.entity == cmpTrigger.playerCivicCenter[data.from])
|
if (data.entity == cmpTrigger.playerCivicCenter[data.from])
|
||||||
{
|
{
|
||||||
TriggerHelper.DefeatPlayer(data.from);
|
TriggerHelper.DefeatPlayer(data.from);
|
||||||
|
|
||||||
// Check if only one player remains. He will be the winner.
|
// Check if only one player remains. He will be the winner.
|
||||||
var lastPlayerStanding = 0;
|
let lastPlayerStanding = 0;
|
||||||
var numPlayersStanding = 0;
|
let numPlayersStanding = 0;
|
||||||
var numberOfPlayers = TriggerHelper.GetNumberOfPlayers();
|
let numberOfPlayers = TriggerHelper.GetNumberOfPlayers();
|
||||||
for (var i = 1; i < numberOfPlayers; ++i)
|
for (let i = 1; i < numberOfPlayers; ++i)
|
||||||
{
|
{
|
||||||
if (QueryPlayerIDInterface(i).GetState() == "active")
|
if (QueryPlayerIDInterface(i).GetState() == "active")
|
||||||
{
|
{
|
||||||
@@ -228,7 +226,7 @@ Trigger.prototype.DefeatPlayerOnceCCIsDestroyed = function(data)
|
|||||||
|
|
||||||
var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
|
var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
|
||||||
cmpTrigger.playerCivicCenter = {};
|
cmpTrigger.playerCivicCenter = {};
|
||||||
cmpTrigger.DoAfterDelay(0, "InitGame", {});
|
cmpTrigger.DoAfterDelay(0, "InitGame", {});
|
||||||
cmpTrigger.DoAfterDelay(1000, "InitializeEnemyWaves", {});
|
cmpTrigger.DoAfterDelay(1000, "InitializeEnemyWaves", {});
|
||||||
|
|
||||||
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "DefeatPlayerOnceCCIsDestroyed", {"enabled": true});
|
cmpTrigger.RegisterTrigger("OnOwnershipChanged", "DefeatPlayerOnceCCIsDestroyed", { "enabled": true });
|
||||||
|
|||||||
Reference in New Issue
Block a user