Clean up cheat handling a bit. Use setter and getter for cheatTimeMultiplier.
This was SVN commit r13526.
This commit is contained in:
parent
78d4a24fba
commit
24b6fb7c3e
@ -238,7 +238,14 @@ function submitChatInput()
|
||||
number = cheat.DefaultNumber;
|
||||
}
|
||||
|
||||
Engine.PostNetworkCommand({"type": "cheat", "action": cheat.Action, "number": number, "selected": g_Selection.toList(), "templates": cheat.Templates, "player": Engine.GetPlayerID()});
|
||||
Engine.PostNetworkCommand({
|
||||
"type": "cheat",
|
||||
"action": cheat.Action,
|
||||
"number": number,
|
||||
"text": cheat.Type,
|
||||
"selected": g_Selection.toList(),
|
||||
"templates": cheat.Templates,
|
||||
"player": Engine.GetPlayerID()});
|
||||
isCheat = true;
|
||||
break;
|
||||
}
|
||||
|
@ -555,11 +555,21 @@ Player.prototype.SetCheatEnabled = function(flag)
|
||||
this.cheatsEnabled = flag;
|
||||
};
|
||||
|
||||
Player.prototype.GetCheatEnabled = function(flag)
|
||||
Player.prototype.GetCheatEnabled = function()
|
||||
{
|
||||
return this.cheatsEnabled;
|
||||
};
|
||||
|
||||
Player.prototype.SetCheatTimeMultiplier = function(time)
|
||||
{
|
||||
this.cheatTimeMultiplier = time;
|
||||
};
|
||||
|
||||
Player.prototype.GetCheatTimeMultiplier = function()
|
||||
{
|
||||
return this.cheatTimeMultiplier;
|
||||
};
|
||||
|
||||
Player.prototype.TributeResource = function(player, amounts)
|
||||
{
|
||||
var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
|
||||
|
@ -244,7 +244,7 @@ ProductionQueue.prototype.AddBatch = function(templateName, type, count, metadat
|
||||
if (!template)
|
||||
return;
|
||||
var cmpPlayer = QueryOwnerInterface(this.entity, IID_Player);
|
||||
var time = template.researchTime * cmpPlayer.cheatTimeMultiplier;
|
||||
var time = template.researchTime * cmpPlayer.GetCheatTimeMultiplier();
|
||||
|
||||
var cost = {};
|
||||
for each (var r in ["food", "wood", "stone", "metal"])
|
||||
@ -408,7 +408,7 @@ ProductionQueue.prototype.GetBatchTime = function(batchSize)
|
||||
var batchTimeModifier = ApplyTechModificationsToEntity("ProductionQueue/BatchTimeModifier", +this.template.BatchTimeModifier, this.entity);
|
||||
|
||||
// TODO: work out what equation we should use here.
|
||||
return Math.pow(batchSize, batchTimeModifier) * cmpPlayer.cheatTimeMultiplier;
|
||||
return Math.pow(batchSize, batchTimeModifier) * cmpPlayer.GetCheatTimeMultiplier();
|
||||
};
|
||||
|
||||
ProductionQueue.prototype.OnOwnershipChanged = function(msg)
|
||||
|
@ -250,11 +250,11 @@ ResourceGatherer.prototype.GetTargetGatherRate = function(target)
|
||||
var rate;
|
||||
if (type.specific && rates[type.generic+"."+type.specific])
|
||||
{
|
||||
rate = rates[type.generic+"."+type.specific] / cmpPlayer.cheatTimeMultiplier;
|
||||
rate = rates[type.generic+"."+type.specific] / cmpPlayer.GetCheatTimeMultiplier();
|
||||
}
|
||||
else if (type.generic && rates[type.generic])
|
||||
{
|
||||
rate = rates[type.generic] / cmpPlayer.cheatTimeMultiplier;
|
||||
rate = rates[type.generic] / cmpPlayer.GetCheatTimeMultiplier();
|
||||
}
|
||||
|
||||
return (rate || 0);
|
||||
|
@ -3,25 +3,29 @@
|
||||
[
|
||||
{
|
||||
"Name": "i want pizza",
|
||||
"Action": "addfood",
|
||||
"Action": "addresource",
|
||||
"Type": "food",
|
||||
"IsNumeric": true,
|
||||
"DefaultNumber": 1000
|
||||
},
|
||||
{
|
||||
"Name": "bring me my axe",
|
||||
"Action": "addwood",
|
||||
"Action": "addresource",
|
||||
"Type": "wood",
|
||||
"IsNumeric": true,
|
||||
"DefaultNumber": 1000
|
||||
},
|
||||
{
|
||||
"Name": "your money or your life",
|
||||
"Action": "addmetal",
|
||||
"Action": "addresource",
|
||||
"Type": "metal",
|
||||
"IsNumeric": true,
|
||||
"DefaultNumber": 1000
|
||||
},
|
||||
{
|
||||
"Name": "i see a mountain here",
|
||||
"Action": "addstone",
|
||||
"Action": "addresource",
|
||||
"Type": "stone",
|
||||
"IsNumeric": true,
|
||||
"DefaultNumber": 1000
|
||||
},
|
||||
|
@ -1,113 +1,90 @@
|
||||
|
||||
|
||||
function Cheat(input)
|
||||
{
|
||||
//computing the neccessary components
|
||||
var cmpPlayerMan = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
|
||||
if (!cmpPlayerMan || input.player < 0)
|
||||
var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
|
||||
if (!cmpPlayerManager || input.player < 0)
|
||||
return;
|
||||
var playerEnt = cmpPlayerMan.GetPlayerByID(input.player);
|
||||
var playerEnt = cmpPlayerManager.GetPlayerByID(input.player);
|
||||
if (playerEnt == INVALID_ENTITY)
|
||||
return;
|
||||
var cmpPlayer = Engine.QueryInterface(playerEnt, IID_Player);
|
||||
if (!cmpPlayer)
|
||||
return;
|
||||
if (cmpPlayer.GetCheatEnabled())
|
||||
|
||||
var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
|
||||
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"});
|
||||
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);
|
||||
Engine.RegisterGlobal("Cheat", Cheat);
|
||||
|
Loading…
Reference in New Issue
Block a user