diff --git a/src/markets/bulkSlave/bulkSlaveIntro.js b/src/markets/bulkSlave/bulkSlaveIntro.js index fd78303482ec59c9370a430d26d067a6a9c50822..478010e09e481ba5e3028b709a452c5e52429f81 100644 --- a/src/markets/bulkSlave/bulkSlaveIntro.js +++ b/src/markets/bulkSlave/bulkSlaveIntro.js @@ -1,8 +1,15 @@ 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; + } }; diff --git a/src/markets/theMarket/buySlaves.js b/src/markets/theMarket/buySlaves.js index b224e3918d7d1728380d0ce4fa3c986fed95e52d..707e6052026657593001a07ba7043242131834fc 100644 --- a/src/markets/theMarket/buySlaves.js +++ b/src/markets/theMarket/buySlaves.js @@ -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` ) ); } diff --git a/src/pregmod/theBlackMarket.tw b/src/pregmod/theBlackMarket.tw index 9ea2771d5d384abacb409334012b8d5bb9237ff3..19d24e97cc8d0150e12df67a2cd6134916783c29 100644 --- a/src/pregmod/theBlackMarket.tw +++ b/src/pregmod/theBlackMarket.tw @@ -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>> */ diff --git a/src/uncategorized/bulkSlaveGenerate.tw b/src/uncategorized/bulkSlaveGenerate.tw deleted file mode 100644 index df6d83a2b8f26483ff93809778375f3ec1c00f04..0000000000000000000000000000000000000000 --- a/src/uncategorized/bulkSlaveGenerate.tw +++ /dev/null @@ -1,143 +0,0 @@ -:: 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">>