forked from 0ad/0ad
leper
f6e0c4c5a4
Replace buggy hasAllies with the inlined check if we have a team at all.
Fix setting of starting resources (broken in 58fa0c7c58
).
This was SVN commit r13620.
91 lines
2.7 KiB
JavaScript
91 lines
2.7 KiB
JavaScript
function Cheat(input)
|
|
{
|
|
var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
|
|
if (!cmpPlayerManager || input.player < 0)
|
|
return;
|
|
var playerEnt = cmpPlayerManager.GetPlayerByID(input.player);
|
|
if (playerEnt == INVALID_ENTITY)
|
|
return;
|
|
var cmpPlayer = Engine.QueryInterface(playerEnt, IID_Player);
|
|
if (!cmpPlayer)
|
|
return;
|
|
|
|
var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
|
|
if (!cmpPlayer.GetCheatsEnabled())
|
|
{
|
|
cmpGuiInterface.PushNotification({"type": "chat", "player": input.player, "message": "Cheats are disbaled in this match"});
|
|
return;
|
|
}
|
|
|
|
switch(input.action)
|
|
{
|
|
case "addresource":
|
|
cmpPlayer.AddResource(input.text, input.number);
|
|
break;
|
|
case "revealmap":
|
|
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
|
|
cmpRangeManager.SetLosRevealAll(-1, true);
|
|
break;
|
|
case "maxpopulation":
|
|
cmpPlayer.popBonuses += 500;
|
|
break;
|
|
case "changemaxpopulation":
|
|
cmpPlayer.maxPop = 500;
|
|
break;
|
|
case "convertunit":
|
|
for each (var ent in input.selected)
|
|
{
|
|
var cmpOwnership = Engine.QueryInterface(ent, IID_Ownership);
|
|
cmpOwnership.SetOwner(cmpPlayer.GetPlayerID());
|
|
}
|
|
break;
|
|
case "killunits":
|
|
for each (var ent in input.selected)
|
|
{
|
|
var cmpHealth = Engine.QueryInterface(ent, IID_Health);
|
|
if (cmpHealth)
|
|
cmpHealth.Kill();
|
|
else
|
|
Engine.DestroyEntity(ent);
|
|
}
|
|
break;
|
|
case "defeatplayer":
|
|
var playerEnt = cmpPlayerManager.GetPlayerByID(input.number);
|
|
if (playerEnt == INVALID_ENTITY)
|
|
return;
|
|
Engine.PostMessage(playerEnt, MT_PlayerDefeated, { "playerId": input.number } );
|
|
break;
|
|
case "createunits":
|
|
if (!input.selected[0])
|
|
{
|
|
cmpGuiInterface.PushNotification({"type": "notification", "player": input.player, "message": "You need to select a building that trains units."});
|
|
return;
|
|
}
|
|
|
|
var cmpProductionQueue = Engine.QueryInterface(input.selected[0], IID_ProductionQueue);
|
|
if (!cmpProductionQueue)
|
|
{
|
|
cmpGuiInterface.PushNotification({"type": "notification", "player": input.player, "message": "You need to select a building that trains units."});
|
|
return;
|
|
}
|
|
for (var i = 0; i < input.number; i++)
|
|
cmpProductionQueue.SpawnUnits (input.templates[i%(input.templates.length)],1, null);
|
|
break;
|
|
case "fastactions":
|
|
cmpPlayer.SetCheatTimeMultiplier((cmpPlayer.GetCheatTimeMultiplier() == 1) ? 0.01 : 1);
|
|
break;
|
|
case "changespeed":
|
|
cmpPlayer.SetCheatTimeMultiplier(input.number);
|
|
break;
|
|
default:
|
|
warn("Cheat '" + input.action + "' is not implemented");
|
|
break;
|
|
}
|
|
|
|
// Brand the player
|
|
if (cmpPlayer.name.indexOf(" the Cheater") == -1)
|
|
cmpPlayer.name = cmpPlayer.name + " the Cheater";
|
|
}
|
|
|
|
Engine.RegisterGlobal("Cheat", Cheat);
|