Skip to content
Snippets Groups Projects
Commit 191ed691 authored by Pregmodder's avatar Pregmodder
Browse files

Merge branch 'remove-discount-global' into 'pregmod-master'

Bulk slave work

See merge request pregmodfan/fc-pregmod!8132
parents ebbf2a84 5a953886
No related branches found
No related tags found
No related merge requests found
App.Markets.bulkSlaveIntro = function() {
const el = new DocumentFragment();
const r = [];
const discount = getDiscount();
let seed;
let p;
let spent;
if (V.market.newSlaves.length === 0) {
bulkSlaveGenerate();
}
if (!V.market.introType || V.market.newSlaves.length === 0) {
V.market.introType = "";
}
......@@ -34,23 +41,23 @@ App.Markets.bulkSlaveIntro = function() {
}
if (V.market.slaveMarket === "TFS") {
/* Put line about The Futanari Sisters discount & pricing */
} else if (V.discount === 475) {
} else if (discount === 475) {
r.push(`Your bulk delivery came with a <span class="yellowgreen">5%</span> discount.`);
} else {
r.push(`With all your discounts factored in you got a <span class="yellowgreen">${(500 - V.discount) / 5}%</span> discount;`);
r.push(`With all your discounts factored in you got a <span class="yellowgreen">${(500 - discount) / 5}%</span> discount;`);
}
r.push(`You spent <span class="yellowgreen">${cashFormat(V.spent)}</span> on your new slaves.`);
r.push(`You spent <span class="yellowgreen">${cashFormat(spent)}</span> on your new slaves.`);
break;
case "inStock":
r.push(`You clear out ${App.Markets.marketName(V.market.slaveMarket, V.market.numArcology)} of its stock of ${V.market.newSlaves.length} slaves.`);
if (V.market.slaveMarket === "TFS") {
/* Put line about The Futanari Sisters discount & pricing */
} else if (V.discount === 475) {
} else if (discount === 475) {
r.push(`Your bulk delivery came with a <span class="yellowgreen">5%</span> discount.`);
} else {
r.push(`With all your discounts factored in you got a <span class="yellowgreen">${(500 - V.discount) / 5}%</span> discount`);
r.push(`With all your discounts factored in you got a <span class="yellowgreen">${(500 - discount) / 5}%</span> discount`);
}
r.push(`You spent <span class="yellowgreen">${cashFormat(V.spent)}</span> on your new slaves.`);
r.push(`You spent <span class="yellowgreen">${cashFormat(spent)}</span> on your new slaves.`);
break;
case "liquidator":
r.push(`Your new pair of slaves look frightened and uncertain, but seem encouraged by each other's presence.`);
......@@ -118,4 +125,163 @@ App.Markets.bulkSlaveIntro = function() {
V.market.newSlaveIndex++;
return el;
function bulkSlaveGenerate() {
V.market.newSlaves = [];
V.market.newSlavesDone = 0;
V.market.newSlaveIndex = 0;
V.market.introType = "bulk";
let _slaveCost;
if (!V.market.numSlaves) {
V.market.numSlaves = 5;
}
for (let _i = 0; _i < V.market.numSlaves; _i++) {
let slave = (generateMarketSlave(V.market.slaveMarket, V.market.numArcology)).slave;
V.slavesSeen++;
if (App.Data.misc.lawlessMarkets.includes(V.market.slaveMarket)) {
_slaveCost = slaveCost(slave);
} else {
const _backup = slave; /* backup newly generated slave */
App.Desc.lawCompliance(slave, V.market.slaveMarket); /* includes CheckForGingering — slave stats may change, affecting price */
_slaveCost = slaveCost(slave);
removeGingering(); /* remove gingered state, if applied, so we can apply it again later */
slave = _backup; /* restore backup so we can apply Law Compliance again later */
}
/* Adjust _slaveCost according to V.slavesSeen */
if (V.slavesSeen > V.slaveMarketLimit) {
_slaveCost += _slaveCost*((V.slavesSeen-V.slaveMarketLimit)*0.1);
if (V.market.introType === "inStock") {
break;
}
}
/* Apply discount modifier */
_slaveCost = discount*Math.trunc(_slaveCost/500);
/* Charge the Player for the slave, or break out if cannot afford */
if (V.cash < _slaveCost) {
_i = V.market.numSlaves;
break;
} else {
cashX(forceNeg(_slaveCost), "slaveTransfer", slave);
V.market.newSlaves.push(slave);
spent += _slaveCost;
}
}
/* Max Buy clean-up */
if (V.market.numSlaves === 9999) {
V.market.numSlaves = V.market.newSlaves.length;
}
/* increment Slave school purchase counts if needed */
switch (V.market.slaveMarket) {
case "TSS":
V.TSS.studentsBought += V.market.newSlaves.length;
break;
case "TUO":
V.TUO.studentsBought += V.market.newSlaves.length;
break;
case "GRI":
V.GRI.studentsBought += V.market.newSlaves.length;
break;
case "SCP":
V.SCP.studentsBought += V.market.newSlaves.length;
break;
case "LDE":
V.LDE.studentsBought += V.market.newSlaves.length;
break;
case "TGA":
V.TGA.studentsBought += V.market.newSlaves.length;
break;
case "HA":
V.HA.studentsBought += V.market.newSlaves.length;
break;
case "TCR":
V.TCR.studentsBought += V.market.newSlaves.length;
break;
case "TFS":
V.TFS.studentsBought += V.market.newSlaves.length;
break;
case "NUL":
V.NUL.studentsBought += V.market.newSlaves.length;
break;
}
}
function getDiscount() {
/* Discount calculation. Gives 5% on top of slave school discount */
let discount = 475;
let opinion;
switch (V.market.slaveMarket) {
case "TSS":
if (V.TSS.schoolUpgrade !== 0) {
discount = 375;
}
break;
case "TUO":
if (V.TUO.schoolUpgrade !== 0) {
discount = 375;
}
break;
case "GRI":
if (V.GRI.schoolUpgrade !== 0) {
discount = 375;
}
break;
case "SCP":
if (V.SCP.schoolUpgrade !== 0) {
discount = 375;
}
break;
case "LDE":
if (V.LDE.schoolUpgrade !== 0) {
discount = 375;
}
break;
case "TGA":
if (V.TGA.schoolUpgrade !== 0) {
discount = 375;
}
break;
case "HA":
if (V.HA.schoolUpgrade !== 0) {
discount = 375;
}
break;
case "NUL":
if (V.NUL.schoolUpgrade !== 0) {
discount = 375;
}
break;
case "TCR":
if (V.TCR.schoolUpgrade !== 0) {
discount = 375;
}
break;
case "TFS":
if (V.TFS.schoolUpgrade !== 0) {
discount = 300;
} else {
discount = 380;
}
break;
case "corporate":
if (V.corp.Market === 1) {
discount = 350;
}
break;
case "neighbor":
if (V.market.numArcology >= V.arcologies.length) {
V.market.numArcology = 1;
}
opinion = App.Neighbor.opinion(0, V.market.numArcology);
opinion = Math.clamp(Math.trunc(opinion/20), -10, 10);
discount -= (opinion * 25);
break;
}
return discount;
}
};
......@@ -162,7 +162,7 @@ App.UI.buySlaves = function() {
V.market.numSlaves = 5;
},
[],
`Bulk Slave Generate`
`Bulk Slave Intro`
)
);
}
......@@ -177,7 +177,7 @@ App.UI.buySlaves = function() {
V.market.numSlaves = 10;
},
[],
`Bulk Slave Generate`
`Bulk Slave Intro`
)
);
}
......
......@@ -34,10 +34,10 @@ There is quite the selection of refreshments available, you could always shift y
A convoy of scientists from the banned wetware CPU project are present and selling their leftover wares.
[[Browse CPUs|Slave Markets][$market.slaveMarket = "wetware", $slavesSeen += 1]] |
<<if $cash > _minimumFive>>
[[(x5)|Bulk Slave Generate][$market.slaveMarket = "wetware", $market.introType = "bulk", $market.numSlaves = 5]] |
[[(x5)|Bulk Slave Intro][$market.slaveMarket = "wetware", $market.introType = "bulk", $market.numSlaves = 5]] |
<</if>>
<<if $cash > _minimumTen>>
[[(x10)|Bulk Slave Generate][$market.slaveMarket = "wetware", $market.introType = "bulk", $market.numSlaves = 10]] |
[[(x10)|Bulk Slave Intro][$market.slaveMarket = "wetware", $market.introType = "bulk", $market.numSlaves = 10]] |
<</if>>
<</if>>
*/
......
:: Bulk Slave Generate [nobr]
<<set $returnTo = "Main", $market.newSlaves = [], $market.newSlavesDone = 0, $market.newSlaveIndex = 0, $market.introType = "bulk", $spent = 0>>
<<if ndef $market.numSlaves>>
<<set $market.numSlaves = 5>>
<</if>>
/* Discount calculation. Gives 5% on top of slave school discount */
<<set $discount = 475>>
<<switch $market.slaveMarket>>
<<case "TSS">>
<<if $TSS.schoolUpgrade != 0>>
<<set $discount = 375>>
<</if>>
<<case "TUO">>
<<if $TUO.schoolUpgrade != 0>>
<<set $discount = 375>>
<</if>>
<<case "GRI">>
<<if $GRI.schoolUpgrade != 0>>
<<set $discount = 375>>
<</if>>
<<case "SCP">>
<<if $SCP.schoolUpgrade != 0>>
<<set $discount = 375>>
<</if>>
<<case "LDE">>
<<if $LDE.schoolUpgrade != 0>>
<<set $discount = 375>>
<</if>>
<<case "TGA">>
<<if $TGA.schoolUpgrade != 0>>
<<set $discount = 375>>
<</if>>
<<case "HA">>
<<if $HA.schoolUpgrade != 0>>
<<set $discount = 375>>
<</if>>
<<case "NUL">>
<<if $NUL.schoolUpgrade != 0>>
<<set $discount = 375>>
<</if>>
<<case "TCR">>
<<if $TCR.schoolUpgrade != 0>>
<<set $discount = 375>>
<</if>>
<<case "TFS">>
<<if $TFS.schoolUpgrade != 0>>
<<set $discount = 300>>
<<else>>
<<set $discount = 380>>
<</if>>
<<case "corporate">>
<<if $corp.Market == 1>>
<<set $discount = 350>>
<</if>>
<<case "neighbor">>
<<if $market.numArcology >= $arcologies.length>>
<<set $market.numArcology = 1>>
<</if>>
<<set _opinion = App.Neighbor.opinion(0, $market.numArcology)>>
<<set _opinion = Math.clamp(Math.trunc(_opinion/20), -10, 10)>>
<<set $discount -= (_opinion * 25)>>
<</switch>>
<<for _i = 0; _i < $market.numSlaves; _i++>>
<<set $activeSlave = (generateMarketSlave($market.slaveMarket, $market.numArcology)).slave>>
<<set $slavesSeen++>>
<<if App.Data.misc.lawlessMarkets.includes($market.slaveMarket)>>
<<set _slaveCost = slaveCost($activeSlave)>>
<<else>>
<<set _backup = $activeSlave>> /* backup newly generated slave */
<<run App.Desc.lawCompliance($activeSlave, $market.slaveMarket)>> /* includes CheckForGingering — slave stats may change, affecting price */
<<set _slaveCost = slaveCost($activeSlave)>>
<<run removeGingering()>> /* remove gingered state, if applied, so we can apply it again later */
<<set $activeSlave = _backup>> /* restore backup so we can apply Law Compliance again later */
<</if>>
/* Adjust _slaveCost according to $slavesSeen */
<<if $slavesSeen > $slaveMarketLimit>>
<<set _slaveCost += _slaveCost*(($slavesSeen-$slaveMarketLimit)*0.1)>>
<<if $market.introType == "inStock">>
<<break>>
<</if>>
<</if>>
/* Apply discount modifier */
<<set _slaveCost = $discount*Math.trunc(_slaveCost/500)>>
/* Charge the Player for the slave, or break out if cannot afford */
<<if $cash < _slaveCost>>
<<set _i = $market.numSlaves>>
<<break>>
<<else>>
<<run cashX(forceNeg(_slaveCost), "slaveTransfer", $activeSlave)>>
<<set $market.newSlaves.push($activeSlave)>>
<<set $spent += _slaveCost>>
<</if>>
<</for>>
/* Max Buy clean-up */
<<if $market.numSlaves == 9999>>
<<set $market.numSlaves = $market.newSlaves.length>>
<</if>>
/* increment Slave school purchase counts if needed */
<<switch $market.slaveMarket>>
<<case "TSS">>
<<set $TSS.studentsBought += $market.newSlaves.length>>
<<case "TUO">>
<<set $TUO.studentsBought += $market.newSlaves.length>>
<<case "GRI">>
<<set $GRI.studentsBought += $market.newSlaves.length>>
<<case "SCP">>
<<set $SCP.studentsBought += $market.newSlaves.length>>
<<case "LDE">>
<<set $LDE.studentsBought += $market.newSlaves.length>>
<<case "TGA">>
<<set $TGA.studentsBought += $market.newSlaves.length>>
<<case "HA">>
<<set $HA.studentsBought += $market.newSlaves.length>>
<<case "TCR">>
<<set $TCR.studentsBought += $market.newSlaves.length>>
<<case "TFS">>
<<set $TFS.studentsBought += $market.newSlaves.length>>
<<case "NUL">>
<<set $NUL.studentsBought += $market.newSlaves.length>>
<</switch>>
<<goto "Bulk Slave Intro">>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment