From d40f161436a90f7d43170d06b013ab7adc9cc477 Mon Sep 17 00:00:00 2001 From: Svornost <11434-svornost@users.noreply.gitgud.io> Date: Mon, 12 Sep 2022 18:39:48 -0400 Subject: [PATCH] Remove direction bias from neighbor FS adoption. --- src/endWeek/economics/neighborsDevelopment.js | 59 ++++++++++--------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/src/endWeek/economics/neighborsDevelopment.js b/src/endWeek/economics/neighborsDevelopment.js index aaeba25ae78..8081f9f1480 100644 --- a/src/endWeek/economics/neighborsDevelopment.js +++ b/src/endWeek/economics/neighborsDevelopment.js @@ -2531,52 +2531,57 @@ App.EndWeek.neighborsDevelopment = function() { } /* NEIGHBOR ADOPTION*/ + const influencedBy = []; + const aligned = []; + const opposed = []; + const usableCandidates = []; for (const arc2 of V.arcologies) { if (arc.direction !== arc2.direction) { let influenceBonus = 0; if (arc.direction === arc2.influenceTarget) { - r.push(`${arc2.name}'s directed cultural influence gives it some input over ${arc.name}'s choice of direction.`); + influencedBy.push(arc2.name); influenceBonus = 20; } const opinion = App.Neighbor.opinion(arc, arc2); if (opinion >= 50) { - r.push(`${arc.name} is aligned with ${arc2.name} socially, encouraging it to consider adopting all its cultural values.`); + aligned.push(arc2.name); influenceBonus += opinion - 50; } else if (opinion <= -50) { - r.push(`${arc.name} is culturally opposed to ${arc2.name}, encouraging it to resist adopting its cultural values.`); + opposed.push(arc2.name); influenceBonus += opinion + 50; } for (const candidate of validFSes) { - if (candidate === "FSSubjugationist") { - if ((arc.FSSupremacist === "unset") || (arc.FSSupremacistRace !== arc2.FSSubjugationistRace)) { - if (arc2.FSSubjugationist > random(0, 200) - influenceBonus) { - r.push(`It <span class="yellow">adopts ${arc2.FSSubjugationistRace} Subjugation</span> due to influence from its trading partner ${arc2.name}.`); - arc.FSSubjugationist = 5; - arc.FSSubjugationistRace = arc2.FSSubjugationistRace; - return; - } - } - } else if (candidate === "FSSupremacist") { - if ((arc.FSSubjugationist === "unset") || (arc.FSSubjugationistRace !== arc2.FSSupremacistRace)) { - if (arc2.FSSupremacist > random(0, 200) - influenceBonus) { - r.push(`It <span class="yellow">adopts ${arc2.FSSupremacistRace} Supremacy</span> due to influence from its trading partner ${arc2.name}.`); - arc.FSSupremacist = 5; - arc.FSSupremacistRace = arc2.FSSupremacistRace; - return; - } - } - } else { - if (arc2[candidate] > random(0, 200) - influenceBonus) { - r.push(`It <span class="yellow">adopts ${FutureSocieties.displayName(candidate)}</span> due to influence from its trading partner ${arc2.name}.`); - arc[candidate] = 5; - return; - } + if (arc2[candidate] > random(0, 200) - influenceBonus) { + usableCandidates.push({arc2, candidate}); } } } } + if (influencedBy.length > 0) { + r.push(`Directed cultural influence from ${toSentence(influencedBy)} gives ${influencedBy.length > 1 ? 'them' : 'it'} some input over ${arc.name}'s choice of direction.`); + } + if (aligned.length > 0) { + r.push(`${arc.name} is aligned with ${toSentence(aligned)} socially, encouraging it to consider adopting more of ${aligned.length > 1 ? 'their' : 'its'} cultural values.`); + } + if (opposed.length > 0) { + r.push(`${arc.name} is culturally opposed with ${toSentence(opposed)} socially, encouraging it to resist adopting ${opposed.length > 1 ? 'their' : 'its'} cultural values.`); + } + const chosen = usableCandidates.random(); + if (chosen.candidate === "FSSubjugationist") { + r.push(`It <span class="yellow">adopts ${chosen.arc2.FSSubjugationistRace} Subjugation</span> due to influence from its trading partner ${chosen.arc2.name}.`); + arc.FSSubjugationist = 5; + arc.FSSubjugationistRace = chosen.arc2.FSSubjugationistRace; + } else if (chosen.candidate === "FSSupremacist") { + r.push(`It <span class="yellow">adopts ${chosen.arc2.FSSupremacistRace} Supremacy</span> due to influence from its trading partner ${chosen.arc2.name}.`); + arc.FSSupremacist = 5; + arc.FSSupremacistRace = chosen.arc2.FSSupremacistRace; + } else { + r.push(`It <span class="yellow">adopts ${FutureSocieties.displayName(chosen.candidate)}</span> due to influence from its trading partner ${chosen.arc2.name}.`); + arc[chosen.candidate] = 5; + return; + } /* RANDOM ADOPTION*/ if (random(0, 4) === 1) { -- GitLab