Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/binaries/data/mods/public/simulation/helpers/Cheat.js
Show First 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | case "killunits": | ||||
} | } | ||||
return; | return; | ||||
case "defeatplayer": | case "defeatplayer": | ||||
cmpPlayer = QueryPlayerIDInterface(input.parameter); | cmpPlayer = QueryPlayerIDInterface(input.parameter); | ||||
if (cmpPlayer) | if (cmpPlayer) | ||||
cmpPlayer.SetState("defeated", markForTranslation("%(player)s has been defeated (cheat).")); | cmpPlayer.SetState("defeated", markForTranslation("%(player)s has been defeated (cheat).")); | ||||
return; | return; | ||||
case "createunits": | case "createunits": | ||||
var cmpProductionQueue = input.selected.length && Engine.QueryInterface(input.selected[0], IID_ProductionQueue); | { | ||||
if (!cmpProductionQueue) | const cmpTrainer = input.selected.length && Engine.QueryInterface(input.selected[0], IID_Trainer); | ||||
if (!cmpTrainer) | |||||
{ | { | ||||
cmpGuiInterface.PushNotification({ | cmpGuiInterface.PushNotification({ | ||||
"type": "text", | "type": "text", | ||||
"players": [input.player], | "players": [input.player], | ||||
"message": markForTranslation("You need to select a building that trains units."), | "message": markForTranslation("You need to select a building that trains units."), | ||||
"translateMessage": true | "translateMessage": true | ||||
}); | }); | ||||
return; | return; | ||||
} | } | ||||
let owner = input.player; | let owner = input.player; | ||||
let cmpOwnership = Engine.QueryInterface(input.selected[0], IID_Ownership); | const cmpOwnership = Engine.QueryInterface(input.selected[0], IID_Ownership); | ||||
if (cmpOwnership) | if (cmpOwnership) | ||||
owner = cmpOwnership.GetOwner(); | owner = cmpOwnership.GetOwner(); | ||||
for (let i = 0; i < Math.min(input.parameter, cmpPlayer.GetMaxPopulation() - cmpPlayer.GetPopulationCount()); ++i) | for (let i = 0; i < Math.min(input.parameter, cmpPlayer.GetMaxPopulation() - cmpPlayer.GetPopulationCount()); ++i) | ||||
cmpProductionQueue.SpawnUnits({ | { | ||||
"player": owner, | const batch = new cmpTrainer.Item(input.templates[i % input.templates.length], 1, input.selected[0], null); | ||||
"metadata": null, | batch.player = owner; | ||||
"entity": { | batch.Finish(); | ||||
"template": input.templates[i % input.templates.length], | // ToDo: If not able to spawn, cancel the batch. | ||||
"count": 1 | |||||
} | } | ||||
}); | |||||
return; | return; | ||||
} | |||||
case "fastactions": | case "fastactions": | ||||
{ | { | ||||
let cmpModifiersManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_ModifiersManager); | let cmpModifiersManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_ModifiersManager); | ||||
if (cmpModifiersManager.HasAnyModifier("cheat/fastactions", playerEnt)) | if (cmpModifiersManager.HasAnyModifier("cheat/fastactions", playerEnt)) | ||||
cmpModifiersManager.RemoveAllModifiers("cheat/fastactions", playerEnt); | cmpModifiersManager.RemoveAllModifiers("cheat/fastactions", playerEnt); | ||||
else | else | ||||
cmpModifiersManager.AddModifiers("cheat/fastactions", { | cmpModifiersManager.AddModifiers("cheat/fastactions", { | ||||
"Cost/BuildTime": [{ "affects": [["Structure"], ["Unit"]], "multiply": 0.01 }], | "Cost/BuildTime": [{ "affects": [["Structure"], ["Unit"]], "multiply": 0.01 }], | ||||
"ResourceGatherer/BaseSpeed": [{ "affects": [["Structure"], ["Unit"]], "multiply": 1000 }], | "ResourceGatherer/BaseSpeed": [{ "affects": [["Structure"], ["Unit"]], "multiply": 1000 }], | ||||
"Pack/Time": [{ "affects": [["Structure"], ["Unit"]], "multiply": 0.01 }], | "Pack/Time": [{ "affects": [["Structure"], ["Unit"]], "multiply": 0.01 }], | ||||
"Upgrade/Time": [{ "affects": [["Structure"], ["Unit"]], "multiply": 0.01 }], | "Upgrade/Time": [{ "affects": [["Structure"], ["Unit"]], "multiply": 0.01 }], | ||||
"ProductionQueue/TechCostMultiplier/time": [{ "affects": [["Structure"], ["Unit"]], "multiply": 0.01 }] | "Researcher/TechCostMultiplier/time": [{ "affects": [["Structure"], ["Unit"]], "multiply": 0.01 }] | ||||
}, playerEnt); | }, playerEnt); | ||||
return; | return; | ||||
} | } | ||||
case "changephase": | case "changephase": | ||||
var cmpTechnologyManager = Engine.QueryInterface(playerEnt, IID_TechnologyManager); | var cmpTechnologyManager = Engine.QueryInterface(playerEnt, IID_TechnologyManager); | ||||
if (!cmpTechnologyManager) | if (!cmpTechnologyManager) | ||||
return; | return; | ||||
Show All 9 Lines | case "changephase": | ||||
if (TechnologyTemplates.Has(parameter + "_" + cmpPlayer.civ)) | if (TechnologyTemplates.Has(parameter + "_" + cmpPlayer.civ)) | ||||
parameter += "_" + cmpPlayer.civ; | parameter += "_" + cmpPlayer.civ; | ||||
else | else | ||||
parameter += "_generic"; | parameter += "_generic"; | ||||
Cheat({ "player": input.player, "action": "researchTechnology", "parameter": parameter, "selected": input.selected }); | Cheat({ "player": input.player, "action": "researchTechnology", "parameter": parameter, "selected": input.selected }); | ||||
return; | return; | ||||
case "researchTechnology": | case "researchTechnology": | ||||
{ | |||||
if (!input.parameter.length) | if (!input.parameter.length) | ||||
return; | return; | ||||
var techname = input.parameter; | var techname = input.parameter; | ||||
var cmpTechnologyManager = Engine.QueryInterface(playerEnt, IID_TechnologyManager); | var cmpTechnologyManager = Engine.QueryInterface(playerEnt, IID_TechnologyManager); | ||||
if (!cmpTechnologyManager) | if (!cmpTechnologyManager) | ||||
return; | return; | ||||
// check, if building is selected | // check, if building is selected | ||||
if (input.selected[0]) | if (input.selected[0]) | ||||
{ | { | ||||
var cmpProductionQueue = Engine.QueryInterface(input.selected[0], IID_ProductionQueue); | const cmpResearcher = Engine.QueryInterface(input.selected[0], IID_Researcher); | ||||
if (cmpProductionQueue) | if (cmpResearcher) | ||||
{ | { | ||||
// try to spilt the input | // try to spilt the input | ||||
var tmp = input.parameter.split(/\s+/); | var tmp = input.parameter.split(/\s+/); | ||||
var number = +tmp[0]; | var number = +tmp[0]; | ||||
var pair = tmp.length > 1 && (tmp[1] == "top" || tmp[1] == "bottom") ? tmp[1] : "top"; // use top as default value | var pair = tmp.length > 1 && (tmp[1] == "top" || tmp[1] == "bottom") ? tmp[1] : "top"; // use top as default value | ||||
// check, if valid number was parsed. | // check, if valid number was parsed. | ||||
if (number || number === 0) | if (number || number === 0) | ||||
{ | { | ||||
// get name of tech | // get name of tech | ||||
var techs = cmpProductionQueue.GetTechnologiesList(); | const techs = cmpResearcher.GetTechnologiesList(); | ||||
if (number > 0 && number <= techs.length) | if (number > 0 && number <= techs.length) | ||||
{ | { | ||||
var tech = techs[number-1]; | var tech = techs[number-1]; | ||||
if (!tech) | if (!tech) | ||||
return; | return; | ||||
// get name of tech | // get name of tech | ||||
if (tech.pair) | if (tech.pair) | ||||
techname = tech[pair]; | techname = tech[pair]; | ||||
else | else | ||||
techname = tech; | techname = tech; | ||||
} | } | ||||
else | else | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
if (TechnologyTemplates.Has(techname) && | if (TechnologyTemplates.Has(techname) && | ||||
!cmpTechnologyManager.IsTechnologyResearched(techname)) | !cmpTechnologyManager.IsTechnologyResearched(techname)) | ||||
cmpTechnologyManager.ResearchTechnology(techname); | cmpTechnologyManager.ResearchTechnology(techname); | ||||
return; | return; | ||||
} | |||||
case "metaCheat": | case "metaCheat": | ||||
for (let resource of Resources.GetCodes()) | for (let resource of Resources.GetCodes()) | ||||
Cheat({ "player": input.player, "action": "addresource", "text": resource, "parameter": input.parameter }); | Cheat({ "player": input.player, "action": "addresource", "text": resource, "parameter": input.parameter }); | ||||
Cheat({ "player": input.player, "action": "maxpopulation" }); | Cheat({ "player": input.player, "action": "maxpopulation" }); | ||||
Cheat({ "player": input.player, "action": "changemaxpopulation" }); | Cheat({ "player": input.player, "action": "changemaxpopulation" }); | ||||
Cheat({ "player": input.player, "action": "fastactions" }); | Cheat({ "player": input.player, "action": "fastactions" }); | ||||
for (let i=0; i<2; ++i) | for (let i=0; i<2; ++i) | ||||
Cheat({ "player": input.player, "action": "changephase", "selected": input.selected }); | Cheat({ "player": input.player, "action": "changephase", "selected": input.selected }); | ||||
Show All 18 Lines |
Wildfire Games · Phabricator