Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if(!game.mods)
- {
- game.mods = {};
- }
- if(!game.mods.sophie)
- {
- game.mods.sophie = {};
- }
- game.mods.sophie.genMyBuildFunction = function ()
- {
- var sFunc = game.time.queue.update.toString();
- var asFunc = sFunc.split("\n");
- var bFlag_el = false;
- var bFlag_controller = false;
- var sParsed = "";
- for(var i=1;i<asFunc.length;i++)
- {
- if(bFlag_el)
- {
- if(bFlag_controller)
- {
- }
- else
- {
- if(asFunc[i].includes("if(!props.controller){"))
- {
- bFlag_controller = true;
- }
- else
- {
- if(asFunc[i].includes(`"invalid queue item:"`))
- {
- sParsed += asFunc[i].replace(`"invalid queue item:"`,
- `"invalid myBuild item:"`)+"\n";
- }
- else if(asFunc[i].includes(`props.controller.build(model, 1);`))
- {
- sParsed += asFunc[i].replace(`props.controller.build(model, 1);`,
- `props.controller.build(model, el.value);`)+"\n";
- }
- else
- {
- sParsed += asFunc[i].replace(`this.game`, `game`)+"\n";
- }
- }
- }
- }
- else
- {
- if(asFunc[i].includes("var el = this.queueItems[0];"))
- {
- bFlag_el = true;
- }
- }
- }
- var sPreText = `
- game.mods.sophie.myBuild = function(sElName, sElType, iValue = 1){
- if(iValue > 1 && game.time.queue.queueNonStackable.includes(sElType) || iValue < 1)
- {
- iValue = 1;
- }
- var el = {"name":sElName, "type":sElType, "value":iValue};
- `;
- var sPostText = `
- if(!props.controller){
- console.error(el.name + " of " + el.type + " no controller found :o");
- return false;
- }
- if(buyItem){
- props.controller.buyItem(model, el.value, function(result) {});
- }
- var changed = false;
- if (Array.isArray(compare)){
- for (var i in compare){
- if (oldVal[compare[i]] != model.metadata[compare[i]]){
- changed = true;
- }
- }
- }else{
- changed = oldVal != model.metadata[compare];
- }
- return changed;
- }
- `;
- var sFinalText = sPreText+sParsed+sPostText;
- eval(sFinalText);
- };
- game.mods.sophie.myGetController = function (sElName, sElType)
- {
- var el = {"name":sElName, "type":sElType};
- switch (el.type){
- case "policies":
- return new classes.ui.PolicyBtnController(game);
- case "tech":
- return new com.nuclearunicorn.game.ui.TechButtonController(game);
- case "buildings":
- var itemMetaRaw = game.getUnlockByName(el.name, el.type);
- var bld = new classes.BuildingMeta(itemMetaRaw).getMeta();
- if (typeof(bld.stages) == "object"){
- return new classes.ui.btn.StagingBldBtnController(game);
- } else {
- return new classes.ui.btn.BuildingBtnModernController(game);
- }
- case "spaceMission":
- return new com.nuclearunicorn.game.ui.SpaceProgramBtnController(game);
- case "spaceBuilding":
- return new classes.ui.space.PlanetBuildingBtnController(game);
- case "chronoforge":
- return new classes.ui.time.ChronoforgeBtnController(game);
- case "voidSpace":
- return new classes.ui.time.VoidSpaceBtnController(game);
- case "zigguratUpgrades":
- return new com.nuclearunicorn.game.ui.ZigguratBtnController(game);
- case "religion":
- return new com.nuclearunicorn.game.ui.ReligionBtnController(game);
- case "transcendenceUpgrades":
- return new classes.ui.TranscendenceBtnController(game);
- case "pacts":
- return new com.nuclearunicorn.game.ui.PactsBtnController(game);
- case "upgrades":
- return new com.nuclearunicorn.game.ui.UpgradeButtonController(game);
- case "zebraUpgrades":
- return new com.nuclearunicorn.game.ui.ZebraUpgradeButtonController(game);
- }
- };
- game.mods.sophie.smartGetController = function (sName)
- {
- var sType = game.mods.sophie.nameToType(sName);
- if(!sType)
- {
- console.error("game.mods.sophie.smartGetController type from item not found in game.mods.sophie.queueLabelsAndValues ", sName);
- }
- else
- {
- return game.mods.sophie.myGetController(sName, sType);
- }
- };
- game.mods.sophie.fillPossibleValues = function ()
- {
- aListOfLabels = Object.keys(game.time.queue.queueLabels);
- game.mods.sophie.queueLabelsAndValues = [];
- for(var i=0;i<aListOfLabels.length;i++)
- {
- var possibleValues = false;
- switch (aListOfLabels[i])
- {
- case "policies":
- possibleValues = game.managers[3].meta[1].meta.map(arr => arr.name);
- break;
- case "tech":
- possibleValues = game.managers[3].meta[0].meta.map(arr => arr.name);
- break;
- case "buildings":
- possibleValues = game.managers[2].meta[0].meta.map(arr => arr.name);
- break;
- case "spaceMission":
- possibleValues = game.managers[6].meta[0].meta.map(arr => arr.name);
- break;
- case "spaceBuilding":
- possibleValues = game.managers[6].meta[1].meta.map(arr => arr.name);
- possibleValues = possibleValues.concat(game.managers[6].meta[2].meta.map(arr => arr.name));
- possibleValues = possibleValues.concat(game.managers[6].meta[3].meta.map(arr => arr.name));
- possibleValues = possibleValues.concat(game.managers[6].meta[4].meta.map(arr => arr.name));
- possibleValues = possibleValues.concat(game.managers[6].meta[5].meta.map(arr => arr.name));
- possibleValues = possibleValues.concat(game.managers[6].meta[6].meta.map(arr => arr.name));
- possibleValues = possibleValues.concat(game.managers[6].meta[7].meta.map(arr => arr.name));
- possibleValues = possibleValues.concat(game.managers[6].meta[8].meta.map(arr => arr.name));
- possibleValues = possibleValues.concat(game.managers[6].meta[9].meta.map(arr => arr.name));
- possibleValues = possibleValues.concat(game.managers[6].meta[10].meta.map(arr => arr.name));
- possibleValues = possibleValues.concat(game.managers[6].meta[11].meta.map(arr => arr.name));
- possibleValues = possibleValues.concat(game.managers[6].meta[12].meta.map(arr => arr.name));
- break;
- case "chronoforge":
- possibleValues = game.managers[7].meta[0].meta.map(arr => arr.name);
- break;
- case "voidSpace":
- possibleValues = game.managers[7].meta[1].meta.map(arr => arr.name);
- break;
- case "zigguratUpgrades":
- possibleValues = game.managers[5].meta[0].meta.map(arr => arr.name);
- break;
- case "religion":
- possibleValues = game.managers[5].meta[1].meta.map(arr => arr.name);
- break;
- case "transcendenceUpgrades":
- possibleValues = game.managers[5].meta[2].meta.map(arr => arr.name);
- break;
- case "pacts":
- possibleValues = game.managers[5].meta[3].meta.map(arr => arr.name);
- break;
- case "upgrades":
- possibleValues = game.managers[0].meta[0].meta.map(arr => arr.name);
- break;
- case "zebraUpgrades":
- possibleValues = game.managers[0].meta[1].meta.map(arr => arr.name);
- break;
- }
- if(possibleValues)
- {
- /*var sSearch = /function\(model\).?{/;
- var sReplace = `function(model, iVal=0) {
- `;*/
- var oController = game.mods.sophie.myGetController(possibleValues[0], aListOfLabels[i]);
- //var sFuncString = oController.getPrices.toString();
- //*sFuncString = sFuncString.replace(`function(model)`, `function(model, iVal=0)`);
- //game.mods.sophie.queueLabelsAndValues.push([aListOfLabels[i], possibleValues, sFuncString]);
- game.mods.sophie.queueLabelsAndValues.push([aListOfLabels[i], possibleValues]);
- }
- else
- {
- console.error("unknow item:", aListOfLabels[i]);
- }
- }
- };
- game.mods.sophie.nameToType = function (sName)
- {
- for(var i=0 ;i<game.mods.sophie.queueLabelsAndValues.length; i++)
- {
- if(game.mods.sophie.queueLabelsAndValues[i][1].includes(sName))
- {
- return game.mods.sophie.queueLabelsAndValues[i][0];
- }
- }
- return false;
- };
- game.mods.sophie.myGetModel = function (sElName, sElType)
- {
- var oController = game.mods.sophie.myGetController(sElName, sElType);
- if(sElType == "buildings")
- {
- var itemMetaRaw = game.getUnlockByName(sElName, sElType);
- var bld = new classes.BuildingMeta(itemMetaRaw).getMeta();
- props = {
- id: bld.name,
- key: bld.name,
- name: bld.label,
- description: bld.description,
- building: bld.name
- };
- return oController.fetchModel(props);
- }
- return oController.fetchModel({"id":sElName});
- };
- game.mods.sophie.smartGetModel = function (sName)
- {
- var sType = game.mods.sophie.nameToType(sName);
- if(!sType)
- {
- console.error("game.mods.sophie.smartGetModel type from item not found in game.mods.sophie.queueLabelsAndValues ", sName);
- return false;
- }
- else
- {
- return game.mods.sophie.myGetModel(sName, sType);
- }
- };
- game.mods.sophie.myGetPrices = function (sName, sType, iAddValue = 0)
- {
- // make a fake model
- var oController = game.mods.sophie.myGetController(sName, sType);
- var oModelSource = game.mods.sophie.myGetModel(sName, sType);
- if(sType == "buildings")
- {
- return game.bld.getPricesWithAccessor(oModelSource.metaAccessor, iAddValue);
- }
- if(game.time.queue.queueNonStackable.includes(sType))
- {
- return oController.getPrices(oModelSource);
- }
- else
- {
- var oFakeModel = {};
- oFakeModel.metadata = {}
- oFakeModel.metadata.prices = oModelSource.metadata.prices;
- oFakeModel.metadata.priceRatio = oModelSource.metadata.priceRatio;
- oFakeModel.metadata.name = oModelSource.metadata.name;
- oFakeModel.metadata.val = oModelSource.metadata.val;
- oFakeModel.metadata.val += iAddValue;
- return oController.getPrices(oFakeModel);
- }
- };
- game.mods.sophie.smartGetPrices = function (sName, iAddValue = 0)
- {
- var sType = game.mods.sophie.nameToType(sName);
- if(!sType)
- {
- console.error("game.mods.sophie.smartGetPrices type from item not found in game.mods.sophie.queueLabelsAndValues ", sName);
- return false;
- }
- else
- {
- return game.mods.sophie.myGetPrices(sName, sType, iAddValue);
- }
- };
- game.mods.sophie.smartGetPricesSum = function (sName, iAddValue = 0)
- {
- var sType = game.mods.sophie.nameToType(sName);
- if(!sType)
- {
- console.error("game.mods.sophie.smartGetPrices type from item not found in game.mods.sophie.queueLabelsAndValues ", sName);
- return false;
- }
- else
- {
- if(game.time.queue.queueNonStackable.includes(sType))
- {
- return game.mods.sophie.myGetPrices(sName, sType);
- }
- var aPricesSum = [];
- var aPricesSum2 = [];
- for(var i=0; i<iAddValue+1; i++)
- {
- var aPrices = game.mods.sophie.myGetPrices(sName, sType, i);
- aPricesSum2.push(aPrices);
- for(var j=0; j<aPrices.length; j++)
- {
- if(!aPricesSum.find(o => o.name === aPrices[j].name))
- {
- aPricesSum.push({"name":aPrices[j].name, "val":0});
- }
- var iIndex = aPricesSum.findIndex(o => o.name === aPrices[j].name) ;
- aPricesSum[iIndex].val += aPrices[j].val;
- }
- }
- return aPricesSum;
- }
- };
- game.mods.sophie.smartBuild = function (sName, iValue = 1)
- {
- var sType = game.mods.sophie.nameToType(sName);
- if(!sType)
- {
- console.error("game.mods.sophie.smartBuild type from item not found in game.mods.sophie.queueLabelsAndValues ", sName);
- return false;
- }
- else
- {
- return game.mods.sophie.myBuild(sName, sType, iValue);
- }
- };
- game.mods.sophie.init = function ()
- {
- if(!game.mods.sophie.myBuild)
- {
- game.mods.sophie.genMyBuildFunction();
- game.mods.sophie.fillPossibleValues();
- }
- };
- game.mods.sophie.init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement