fixed temporary evaluation of MAX and PROD

This commit is contained in:
Luca Montagna 2022-01-22 13:32:35 +01:00
parent 07fe3c1906
commit bfa271881b
3 changed files with 10 additions and 7 deletions

@ -109,8 +109,8 @@ export function SellMaterial(mat: Material, amt: string, price: string): void {
if (amt.includes("MAX") || amt.includes("PROD")) { if (amt.includes("MAX") || amt.includes("PROD")) {
let q = amt.replace(/\s+/g, ""); let q = amt.replace(/\s+/g, "");
q = q.replace(/[^-()\d/*+.MAXPROD]/g, ""); q = q.replace(/[^-()\d/*+.MAXPROD]/g, "");
let tempQty = q.replace(/MAX/g, "1"); let tempQty = q.replace(/MAX/g, mat.maxsll.toString());
tempQty = tempQty.replace(/PROD/g, "1"); tempQty = tempQty.replace(/PROD/g, mat.prd.toString());
try { try {
tempQty = eval(tempQty); tempQty = eval(tempQty);
} catch (e) { } catch (e) {

@ -828,7 +828,7 @@ export class Industry implements IIndustry {
} }
} }
const maxSell = mat.maxsll =
(mat.qlt + 0.001) * (mat.qlt + 0.001) *
marketFactor * marketFactor *
markup * markup *
@ -839,7 +839,7 @@ export class Industry implements IIndustry {
let sellAmt; let sellAmt;
if (isString(mat.sllman[1])) { if (isString(mat.sllman[1])) {
//Dynamically evaluated //Dynamically evaluated
let tmp = (mat.sllman[1] as string).replace(/MAX/g, (maxSell + "").toUpperCase()); let tmp = (mat.sllman[1] as string).replace(/MAX/g, (mat.maxsll + "").toUpperCase());
tmp = tmp.replace(/PROD/g, mat.prd + ""); tmp = tmp.replace(/PROD/g, mat.prd + "");
try { try {
sellAmt = eval(tmp); sellAmt = eval(tmp);
@ -856,13 +856,13 @@ export class Industry implements IIndustry {
); );
sellAmt = 0; sellAmt = 0;
} }
sellAmt = Math.min(maxSell, sellAmt); sellAmt = Math.min(mat.maxsll, sellAmt);
} else if (mat.sllman[1] === -1) { } else if (mat.sllman[1] === -1) {
//Backwards compatibility, -1 = MAX //Backwards compatibility, -1 = MAX
sellAmt = maxSell; sellAmt = mat.maxsll;
} else { } else {
//Player's input value is just a number //Player's input value is just a number
sellAmt = Math.min(maxSell, mat.sllman[1] as number); sellAmt = Math.min(mat.maxsll, mat.sllman[1] as number);
} }
sellAmt = sellAmt * CorporationConstants.SecsPerMarketCycle * marketCycles; sellAmt = sellAmt * CorporationConstants.SecsPerMarketCycle * marketCycles;

@ -62,6 +62,9 @@ export class Material {
marketTa2 = false; marketTa2 = false;
marketTa2Price = 0; marketTa2Price = 0;
// Determines the maximum amount of this material that can be sold in one market cycle
maxsll = 0;
constructor(params: IConstructorParams = {}) { constructor(params: IConstructorParams = {}) {
if (params.name) { if (params.name) {
this.name = params.name; this.name = params.name;