diff --git a/src/ui.ts b/src/ui.ts
index e06f3d5..b7c7efb 100644
--- a/src/ui.ts
+++ b/src/ui.ts
@@ -168,11 +168,17 @@ function renderUpgrades(state: State): void {
}).join('');
}
+let lastLogLength = 0;
+
function renderLog(state: State): void {
const log = document.getElementById('log')!;
+ if (state.log.length === lastLogLength) return;
+ lastLogLength = state.log.length;
+ // state.log is newest-first (unshift); render as-is, scroll to top
log.innerHTML = state.log.map(e =>
`
${e.text}
`
).join('');
+ log.scrollTop = 0;
}
function showOverlay(state: State): void {
diff --git a/src/upgrades.ts b/src/upgrades.ts
index 301d966..b180beb 100644
--- a/src/upgrades.ts
+++ b/src/upgrades.ts
@@ -13,11 +13,11 @@ export interface Upgrade {
export const UPGRADES: Upgrade[] = [
{
id: 'recruit_neighbor',
- name: 'Rekrytera en granne',
+ name: 'Rekrytera en troende',
desc: '+1 Troende. De undrade varför källarlamporna flimrade. Nu vet de.',
cost: { andakt: 20 },
- effect: s => { s.troende += 1; },
- available: s => !s.upgrades.has('first_meeting'),
+ effect: s => { s.troende += 1; s.andakt = Math.max(0, s.andakt - 20 * Math.max(1, s.troende - 2)); },
+ available: s => s.troende < 12,
once: false,
},
{
@@ -56,15 +56,6 @@ export const UPGRADES: Upgrade[] = [
available: s => s.upgrades.has('idol_under_bridge') && s.dread >= 50 && !s.upgrades.has('varnhem_circle'),
once: true,
},
- {
- id: 'recruit_2',
- name: 'Rekrytera ytterligare troende',
- desc: '+2 Troende. Ryktet sprids längs de rätta kanalerna.',
- cost: { andakt: 150 },
- effect: s => { s.troende += 2; s.andaktRate += 0.5; },
- available: s => s.upgrades.has('first_meeting') && s.troende < 8,
- once: false,
- },
{
id: 'torso_beacon',
name: 'Altaret vid Turning Torso',