forked from 0ad/0ad
113 lines
3.0 KiB
JavaScript
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); |