1
0
forked from 0ad/0ad
0ad/binaries/data/mods/public/simulation/helpers/Cheat.js
Spahbod 202a02568b Cheats ... fixes #1555.
This was SVN commit r12284.
2012-08-05 14:01:05 +00:00

113 lines
3.0 KiB
JavaScript

function Cheat(input)
{
//computing the neccessary components
var cmpPlayerMan = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
if (!cmpPlayerMan || input.player < 0)
return;
var playerEnt = cmpPlayerMan.GetPlayerByID(input.player);
if (playerEnt == INVALID_ENTITY)
return;
var cmpPlayer = Engine.QueryInterface(playerEnt, IID_Player);
if (!cmpPlayer)
return;
if (cmpPlayer.GetCheatEnabled())
{
if (input.action == "addfood")
{
cmpPlayer.AddResource("food", input.number);
}
else if (input.action == "addwood")
{
cmpPlayer.AddResource("wood", input.number);
}
else if (input.action == "addmetal")
{
cmpPlayer.AddResource("metal", input.number);
}
else if (input.action == "addstone")
{
cmpPlayer.AddResource("stone", input.number);
}
else if (input.action == "revealmap")
{
var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
cmpRangeManager.SetLosRevealAll(-1, true);
}
else if (input.action == "maxpopulation")
{
cmpPlayer.popBonuses += 500;
}
else if (input.action == "changemaxpopulation")
{
//this changes the max population limit
cmpPlayer.maxPop = 500;
}
else if (input.action == "convertunit")
{
for each (var ent in input.selected)
{
var cmpOwnership = Engine.QueryInterface(ent, IID_Ownership);
cmpOwnership.SetOwner(cmpPlayer.playerID);
}
}
else if (input.action == "killunits")
{
for each (var ent in input.selected)
{
var cmpHealth = Engine.QueryInterface(ent, IID_Health);
if (cmpHealth)
cmpHealth.Kill();
else
Engine.DestroyEntity(ent);
}
}
else if (input.action == "defeatplayer")
{
var cmpPlayerMan = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
if (!cmpPlayerMan)
return;
var playerEnt = cmpPlayerMan.GetPlayerByID(input.number);
if (playerEnt == INVALID_ENTITY)
return;
Engine.PostMessage(playerEnt, MT_PlayerDefeated, { "playerId": input.number } );
}
else if (input.action == "createunits")
{
//the player must select a building that can train units for this.
var cmpProductionQueue = Engine.QueryInterface(input.selected[0], IID_ProductionQueue);
if (!cmpProductionQueue)
return;
for (var i = 0; i < input.number; i++)
{
cmpProductionQueue.SpawnUnits (input.templates[i%(input.templates.length)],1, null);
}
}
else if (input.action == "fastactions")
{
if (cmpPlayer.cheatTimeMultiplier == 1)
{
cmpPlayer.cheatTimeMultiplier = 0.01;
}
else
{
cmpPlayer.cheatTimeMultiplier = 1;
}
}
//AI only
else if (input.action == "changespeed")
{
cmpPlayer.cheatTimeMultiplier = input.number;
}
if (cmpPlayer.name.indexOf(" the Cheater")==-1)
cmpPlayer.name = cmpPlayer.name + " the Cheater";
}
else
{
var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
cmpGuiInterface.PushNotification({"type": "chat", "player": input.player, "message": "Cheats are disbaled in this match"});
}
}
Engine.RegisterGlobal("Cheat", Cheat);