@@ -4820,11 +4805,21 @@
// --- MOBILE GHOST LOG FADE IN/OUT ---
let logContainer = document.querySelector('.combat-log-container');
if (logContainer && window.innerWidth <= 950) {
- logContainer.classList.add('active-log');
- if (Gamestate.logFadeTimeout) clearTimeout(Gamestate.logFadeTimeout);
- Gamestate.logFadeTimeout = setTimeout(() => {
- logContainer.classList.remove('active-log');
- }, 4000);
+ // ONLY popup and show text if it is a DIRECTIVE
+ if (logData.message.includes('[ DIRECTIVE ]')) {
+ combatLog.innerHTML = ""; // Clear old text so it's perfectly clean
+ logContainer.classList.add('active-log');
+ if (Gamestate.logFadeTimeout) clearTimeout(Gamestate.logFadeTimeout);
+ Gamestate.logFadeTimeout = setTimeout(() => {
+ logContainer.classList.remove('active-log');
+ }, 4000);
+ } else {
+ // Instantly skip and hide all non-directive messages on mobile
+ this.isLogging = false;
+ logData.resolve();
+ this.processLogQueue();
+ return;
+ }
}
let entry = document.createElement('div');
@@ -4972,132 +4967,139 @@
};
Gamestate.renderInventory = function () {
- const container = document.getElementById('inventory-grid');
- if (!container) return;
+ const container = document.getElementById('inventory-grid');
+ if (!container) return;
- container.innerHTML = ''; // Clear the grid
+ container.innerHTML = ''; // Clear the grid
- let hasActiveItem = false; // We use this to decide if we should pulse
-
- // --- NEW: Check if Fog of War is currently active ---
- const fogEnabled = document.getElementById('opt-fog-of-war') && document.getElementById('opt-fog-of-war').checked;
+ let hasActiveItem = false;
+ const fogEnabled = document.getElementById('opt-fog-of-war') && document.getElementById('opt-fog-of-war').checked;
- // 1. Render ALL 7 Bobbleheads
- if (this.bobbleheads) {
- this.bobbleheads.forEach(item => {
- const btn = document.createElement('button');
- btn.className = 'bobblehead-btn';
+ // 1. Render ALL 7 Bobbleheads
+ if (this.bobbleheads) {
+ this.bobbleheads.forEach(item => {
+ const btn = document.createElement('button');
+ btn.className = 'bobblehead-btn';
- // INCREASED SIZES FOR BOBBLEHEADS
- let innerHTML = `
${item.name}${item.desc}`;
+ let innerHTML = `
${item.name}${item.desc}`;
- // --- NEW OWNERSHIP & FOG LOGIC ---
- if (item.owner === this.player.name) {
- // You own it! Check if it's on cooldown.
- if (item.cooldown > 0) {
- btn.disabled = true;
- btn.classList.add('cooldown');
- innerHTML += `
COOLDOWN: ${item.cooldown}`;
- } else {
- hasActiveItem = true; // Flag for the UI pulse
- btn.disabled = false;
- innerHTML += `
[ READY - ACTIVATE ]`;
+ // --- [ INJECTED PHASE LOCK LOGIC ] ---
+ if (item.owner === this.player.name) {
+ let isLocked = false;
+ if (item.key === 'c' && (this.stage !== "Recruitment" && this.stage !== "Fortify")) isLocked = true;
+ if ((item.key === 's' || item.key === 'l') && (this.stage === "Commander Phase" || this.stage === "Maneuver")) isLocked = true;
- btn.onclick = () => {
- if (this.activateBobblehead) this.activateBobblehead(item.key);
- };
- }
- } else if (item.owner && item.owner !== "none" && !fogEnabled) {
- // Someone else owns it AND Fog of War is OFF
- btn.disabled = true;
- innerHTML += `
[ HELD BY ${item.owner.toUpperCase()} ]`;
- } else {
- // Either it's truly not found, OR someone else owns it but Fog of War is hiding the intel!
- btn.disabled = true;
- innerHTML += `
[ NOT FOUND ]`;
- }
-
- btn.innerHTML = innerHTML;
- container.appendChild(btn);
- });
+ if (item.cooldown > 0) {
+ btn.disabled = true;
+ btn.classList.add('cooldown');
+ innerHTML += `
COOLDOWN: ${item.cooldown}`;
+ } else if (isLocked) {
+ btn.disabled = false;
+ innerHTML += `
[ PHASE LOCKED ]`;
+ btn.onclick = () => {
+ this.showToast("Cannot use during this phase!", "red");
+ };
+ } else {
+ hasActiveItem = true;
+ btn.disabled = false;
+ innerHTML += `
[ READY - ACTIVATE ]`;
+ btn.onclick = () => {
+ if (this.activateBobblehead) this.activateBobblehead(item.key);
+ };
}
+ } else if (item.owner && item.owner !== "none" && !fogEnabled) {
+ btn.disabled = true;
+ innerHTML += `
[ HELD BY ${item.owner.toUpperCase()} ]`;
+ } else {
+ btn.disabled = true;
+ innerHTML += `
[ NOT FOUND ]`;
+ }
- // 2. Render Stimpak Card (Only if Commanders are active)
- if (this.commandersEnabled && this.player && this.player.commander) {
- const stimpakBtn = document.createElement('button');
- stimpakBtn.className = 'bobblehead-btn';
+ btn.innerHTML = innerHTML;
+ container.appendChild(btn);
+ });
+ }
- let stimpakCount = this.player.commander.stimpaks || 0;
+ // 2. Render Stimpak Card (Preserving all your HP/AP checking logic)
+ if (this.commandersEnabled && this.player && this.player.commander) {
+ const stimpakBtn = document.createElement('button');
+ stimpakBtn.className = 'bobblehead-btn';
+ let stimpakCount = this.player.commander.stimpaks || 0;
+ let innerHTML = `
STIMPAKSRestores 20 HP to your Commander.`;
- // INCREASED SIZES FOR STIMPAK
- let innerHTML = `
STIMPAKSRestores 20 HP to your Commander.`;
+ if (stimpakCount <= 0) {
+ stimpakBtn.disabled = true;
+ innerHTML += `
[ EMPTY ]`;
+ } else {
+ const isStimpakUsable = (this.stage === "Commander Phase" && this.player.commander.ap > 0 && this.player.commander.hp < 100);
+ if (stimpakCount > 0) {
+ hasActiveItem = true;
+ }
+ if (!isStimpakUsable) {
+ stimpakBtn.disabled = true;
+ stimpakBtn.style.opacity = '0.7';
+ innerHTML += `
x${stimpakCount}`;
+ let reason = "UNAVAILABLE";
+ if (this.stage !== "Commander Phase") reason = "WRONG PHASE";
+ else if (this.player.commander.ap <= 0) reason = "OUT OF AP";
+ else if (this.player.commander.hp >= 100) reason = "MAX HEALTH";
+ innerHTML += `
[ ${reason} ]`;
+ } else {
+ stimpakBtn.disabled = false;
+ innerHTML += `
x${stimpakCount}`;
+ innerHTML += `
[ USE STIMPAK ]`;
+ stimpakBtn.onclick = () => {
+ if (this.useStimpak) this.useStimpak();
+ };
+ }
+ }
+ stimpakBtn.innerHTML = innerHTML;
+ container.appendChild(stimpakBtn);
+ }
- if (stimpakCount <= 0) {
- stimpakBtn.disabled = true;
- innerHTML += `
[ EMPTY ]`;
- } else {
- // ---> CHANGED: Stricter check for when a Stimpak is actually usable
- const isStimpakUsable = (this.stage === "Commander Phase" && this.player.commander.ap > 0 && this.player.commander.hp < 100);
-
- if (stimpakCount > 0) {
- hasActiveItem = true; // This is now only used to keep the button from being fully disabled, not for pulsing.
- }
+ // --- [ UPDATED PULSE LOGIC ] ---
+ const navInv = document.getElementById('nav-inv');
+ if (navInv) {
+ const isStimpakReady = this.commandersEnabled && this.player.commander && this.player.commander.stimpaks > 0 && this.player.commander.hp < 100 && this.player.commander.ap > 0 && this.stage === 'Commander Phase';
+
+ // This line now correctly checks for phase-locks before pulsing the INV tab
+ const isBobbleheadReady = this.bobbleheads && this.bobbleheads.some(b => {
+ if (b.owner !== this.player.name || b.cooldown > 0) return false;
+ if (b.key === 'c' && (this.stage !== "Recruitment" && this.stage !== "Fortify")) return false;
+ if ((b.key === 's' || b.key === 'l') && (this.stage === "Commander Phase" || this.stage === "Maneuver")) return false;
+ return true;
+ });
+ if (isStimpakReady || isBobbleheadReady) {
+ navInv.classList.add('inv-pulse');
+ } else {
+ navInv.classList.remove('inv-pulse');
+ }
+ }
+ // 2. Render RELICS Section
+ const relicContainer = document.getElementById('relics-grid');
+ const relicHeader = document.getElementById('relics-header');
+ if (relicContainer) {
+ relicContainer.innerHTML = '';
+ const myRelics = this.player.relics || [];
+
+ if (myRelics.length > 0) {
+ if (relicHeader) relicHeader.style.display = 'block';
+ myRelics.forEach(relic => {
+ const btn = document.createElement('button');
+ btn.className = 'bobblehead-btn';
+ btn.style.borderColor = 'var(--pip-color)';
+ btn.innerHTML = `
${relic.name}${relic.desc}`;
+ btn.onclick = () => { this.activateRelic(relic); };
+ relicContainer.appendChild(btn);
+ });
+ } else {
+ if (relicHeader) relicHeader.style.display = 'none';
+ }
+ }
+};
- if (!isStimpakUsable) {
- stimpakBtn.disabled = true;
- stimpakBtn.style.opacity = '0.7';
-
- innerHTML += `
x${stimpakCount}`;
-
- let reason = "UNAVAILABLE";
- if (this.stage !== "Commander Phase") reason = "WRONG PHASE";
- else if (this.player.commander.ap <= 0) reason = "OUT OF AP";
- else if (this.player.commander.hp >= 100) reason = "MAX HEALTH";
-
- innerHTML += `
[ ${reason} ]`;
- } else {
- stimpakBtn.disabled = false;
- innerHTML += `
x${stimpakCount}`;
- innerHTML += `
[ USE STIMPAK ]`;
-
- stimpakBtn.onclick = () => {
- if (this.useStimpak) this.useStimpak();
- };
- }
- }
- stimpakBtn.innerHTML = innerHTML;
- container.appendChild(stimpakBtn);
- }
-
- // --- NEW: Stricter "Usable Item" check for the pulse ---
- let isAnyItemUsable = false;
- const isStimpakReady = this.commandersEnabled && this.player.commander && this.player.commander.stimpaks > 0 && this.player.commander.hp < 100 && this.player.commander.ap > 0 && this.stage === 'Commander Phase';
- const isBobbleheadReady = this.bobbleheads && this.bobbleheads.some(b => b.owner === this.player.name && b.cooldown <= 0);
-
- if (isStimpakReady || isBobbleheadReady) {
- isAnyItemUsable = true;
- }
- // --- END NEW LOGIC ---
-
- // 3. Control the INV Pulse based on what we found
- const navInv = document.getElementById('nav-inv');
- if (navInv) {
- const isStimpakReady = this.commandersEnabled && this.player.commander && this.player.commander.stimpaks > 0 && this.player.commander.hp < 100 && this.player.commander.ap > 0 && this.stage === 'Commander Phase';
- const isBobbleheadReady = this.bobbleheads && this.bobbleheads.some(b => b.owner === this.player.name && b.cooldown <= 0);
-
- // The INV tab should ONLY pulse if an item is immediately usable.
- if (isStimpakReady || isBobbleheadReady) {
- navInv.classList.add('inv-pulse');
- } else {
- navInv.classList.remove('inv-pulse');
- }
- // We no longer add or remove the 'active' class here.
- }
-
-
- };
Gamestate.populateFactionDropdown = function () {
const themeDropdown = document.getElementById('chosen-theme');
@@ -5146,57 +5148,7 @@ Gamestate.renderInventory = function () {
if (helpModal) helpModal.style.display = 'none';
});
- document.getElementById('secret-dev-key')?.addEventListener('click', (e) => {
- e.stopPropagation();
- let devModal = document.getElementById('dev-modal');
- if (devModal) devModal.style.display = 'flex';
-
- // --- DIRECT BRUTE-FORCE LOCKOUT ---
- // Checks the Gamestate first, then falls back to checking the start menu checkboxes
- let cmdrOn = Gamestate.commandersEnabled || document.getElementById('opt-commander')?.checked;
- let nukesOn = Gamestate.nukesEnabled || document.getElementById('opt-nukes')?.checked;
- let stormsOn = Gamestate.weatherEnabled || Gamestate.radstormsEnabled || document.getElementById('opt-radstorms')?.checked;
-
- let btnHeal = document.getElementById('dev-heal');
- if (btnHeal) { btnHeal.disabled = !cmdrOn; btnHeal.style.opacity = cmdrOn ? "1" : "0.2"; btnHeal.style.pointerEvents = cmdrOn ? "auto" : "none"; }
-
- let btnStimpak = document.getElementById('dev-stimpak');
- if (btnStimpak) { btnStimpak.disabled = !cmdrOn; btnStimpak.style.opacity = cmdrOn ? "1" : "0.2"; btnStimpak.style.pointerEvents = cmdrOn ? "auto" : "none"; }
-
- let btnCode = document.getElementById('dev-code');
- if (btnCode) { btnCode.disabled = !nukesOn; btnCode.style.opacity = nukesOn ? "1" : "0.2"; btnCode.style.pointerEvents = nukesOn ? "auto" : "none"; }
-
- let btnStorm = document.getElementById('dev-storm');
- if (btnStorm) { btnStorm.disabled = !stormsOn; btnStorm.style.opacity = stormsOn ? "1" : "0.2"; btnStorm.style.pointerEvents = stormsOn ? "auto" : "none"; }
-
- if (typeof Gamestate.showToast === 'function') {
- Gamestate.showToast("ACCESS GRANTED: OVERSEER OVERRIDE", "var(--vip-color)");
- }
- });
-
- // --- FIX: ADDS THE BACK BUTTON FROM DEVELOPER MODE TO SURVIVAL GUIDE ---
- document.getElementById('dev-back-btn')?.addEventListener('click', () => {
- document.getElementById('dev-modal').style.display = 'none';
- if (helpModal) helpModal.style.display = 'block';
- });
- // --- NEW DEV GOD MODE BUTTON ---
- const godModeBtn = document.getElementById('dev-godmode');
- if (godModeBtn) {
- godModeBtn.addEventListener('click', (e) => {
- Gamestate.godMode = !Gamestate.godMode;
-
- // Dynamically update the button text!
- e.target.textContent = Gamestate.godMode ? "TURN GM OFF" : "TURN GM ON";
-
- if (Gamestate.showToast) {
- Gamestate.showToast(`Dev: AI Ignore is now ${Gamestate.godMode ? 'ON' : 'OFF'}`, Gamestate.godMode ? "#ff3333" : "grey");
- }
- if (Gamestate.logAction) {
- Gamestate.logAction(`[ OVERSEER ] AI Ignore Protocol: ${Gamestate.godMode ? 'ENGAGED' : 'DISABLED'}.`, true);
- }
- });
- }
@@ -5223,10 +5175,17 @@ Gamestate.renderInventory = function () {
document.body.classList.remove('turbo-active');
}
});
+
+ // --- NEW: FORCE TURBO ON FOR MOBILE ---
+ if (window.innerWidth <= 950) {
+ turboToggleBtn.checked = true;
+ document.body.classList.add('turbo-active');
+ }
}
document.getElementById('view-cards-btn')?.addEventListener('click', () => {
+
if (this.wastelandEconomyActive) {
this.showRecruitmentModal();
} else {
@@ -5326,29 +5285,30 @@ Gamestate.renderInventory = function () {
});
-// --- NEW DEV PERK BUTTON ---
- document.getElementById('dev-perk')?.addEventListener('click', () => {
- if (!Gamestate.bobbleheads) return;
- let unfoundItems = Gamestate.bobbleheads.filter(item => !item.found);
- if (unfoundItems.length > 0) {
- let foundItem = unfoundItems[Math.floor(Math.random() * unfoundItems.length)];
-
- foundItem.found = true;
- foundItem.owner = Gamestate.player.name; // --- NEW: You officially own the dev item! ---
-
+ // --- NEW BOBBLEHEAD INJECTION ---
+ document.getElementById('dev-bobble-btn')?.addEventListener('click', () => {
+ const key = document.getElementById('dev-bobble-select').value;
+ if (!key || !this.bobbleheads) return;
+ const item = this.bobbleheads.find(b => b.key === key);
+ if (item) {
+ item.found = true;
+ item.owner = this.player.name;
+ this.showToast(`Dev: Granted ${item.name}`);
+ if (this.renderInventory) this.renderInventory();
let navInv = document.getElementById('nav-inv');
- if (navInv) navInv.classList.add('inv-pulse');
-
- if (Gamestate.showToast) Gamestate.showToast(`Dev: Granted '${foundItem.name}'`);
- if (Gamestate.stage !== undefined && Gamestate.logAction) {
- Gamestate.logAction(`[ OVERSEER ] A '${foundItem.name}' has been added to your inventory.`, true);
- }
- if (Gamestate.renderInventory) Gamestate.renderInventory();
- } else {
- if (Gamestate.showToast) Gamestate.showToast("Dev: All Bobbleheads already found.");
+ if (navInv) navInv.classList.add('inv-pulse');
}
});
+ // --- NEW RELIC INJECTION ---
+ document.getElementById('dev-relic-btn')?.addEventListener('click', () => {
+ const relicId = document.getElementById('dev-relic-select').value;
+ if (!relicId) return;
+ const relic = this.RelicDatabase.find(r => r.id === relicId);
+ if (relic) this.grantRelic(this.player, relic);
+ });
+
+
// --- DEV TOOL: FORCE UI THEME SWAP ---
document.getElementById('dev-theme-override')?.addEventListener('change', function (e) {
@@ -5483,16 +5443,524 @@ Gamestate.renderInventory = function () {
}
}
+ // --- MASTER RELIC REGISTRY (Step 1 of Item System) ---
+ Gamestate.RelicDatabase = [
+ { id: 'geck', name: 'G.E.C.K.', desc: 'Restores a Crater/Radstorm tile to lush land and spawns troops.', type: 'Targeted', consumed: true },
+ { id: 'fatman', name: 'Fat Man', desc: 'Devastating mini-nuke strike. High damage, high friendly fire.', type: 'Targeted', consumed: true },
+ { id: 'stealthboy', name: 'Stealth Boy', desc: 'Hide your movements and territories from enemies for 2 turns.', type: 'Instant', consumed: true },
+ { id: 'capmine', name: 'Bottlecap Mine', desc: 'Trap a friendly territory. Explodes when an enemy attacks.', type: 'Targeted', consumed: true },
+ { id: 'cryolator', name: 'Cryolator', desc: 'Freeze an enemy territory, preventing all actions for 1 turn.', type: 'Targeted', consumed: true },
+ { id: 'lunchbox', name: 'Vault-Tec Lunchbox', desc: 'A random assortment of Caps, Troops, or a Bobblehead.', type: 'Instant', consumed: true },
+ { id: 'superstimpak', name: 'Super Stimpak', desc: 'Heals Commander AoE or auto-revives you on fatal damage.', type: 'Instant', consumed: true },
+ { id: 'jet', name: 'Jet', desc: 'Slows time. Immediately take a second turn after this one ends.', type: 'Instant', consumed: true },
+ { id: 'radaway', name: 'RadAway', desc: 'Grants total immunity to Radstorms for 3 turns.', type: 'Instant', consumed: true },
+ { id: 'x01armor', name: 'X-01 Power Armor', desc: 'Permanent Commander Buff: +50 Armor, +15% Tile Defense.', type: 'Equip', consumed: false },
+ { id: 'shroudcard', name: 'Silver Shroud Card', desc: 'Blockade an enemy land. No reinforcements allowed for 3 turns.', type: 'Targeted', consumed: true },
+ { id: 'survivalguide', name: 'Wasteland Survival Guide', desc: 'Auto-completes all active Map Events/Vaults instantly.', type: 'Instant', consumed: true }
+ ];
+
+ // This will hold the 6 active items for the current match
+ Gamestate.activeRelicPool = [];
+ // ==========================================
+ // --- LEVELING SYSTEM: PERK DATABASE ---
+ // ==========================================
+ Gamestate.PerkDatabase = {
+ tier1: [
+ { id: 'bloodyMess', name: 'Bloody Mess', type: 'Combat', description: '+5% V.A.T.S. win chance on all attacks.', stackable: true },
+ { id: 'toughness', name: 'Toughness', type: 'Combat', description: '+5% V.A.T.S. win chance when defending.', stackable: true },
+ { id: 'ghoulSlayer', name: 'Ghoul Slayer', type: 'Combat', description: '+15% V.A.T.S. win chance specifically against "Wasteland Horrors".', stackable: false },
+ { id: 'sniper', name: 'Sniper', type: 'Immunity', description: 'Your troops are immune to "Friendly Fire" damage from AoE items.', stackable: false },
+ { id: 'adamantiumSkeleton', name: 'Adamantium Skeleton', type: 'Resistance', description: 'Radstorms and "Glowing Sea" deal 50% less damage.', stackable: false },
+ { id: 'demolitionExpert', name: 'Demolition Expert', type: 'Penetration', description: 'Ignore enemy fortification bonuses (Silos/Ranger Network).', stackable: false },
+ { id: 'commando', name: 'Commando', type: 'Strike', description: 'Attacking with 10+ troops automatically kills 1 enemy before rolls.', stackable: false },
+ { id: 'rooted', name: 'Rooted', type: 'Defense', description: 'Defending gain +10% win chance if no movement last turn.', stackable: false }
+ ],
+ tier2: [
+ { id: 'fortuneFinder', name: 'Fortune Finder', type: 'Economy', description: '+3 Bottle Caps automatically added every turn.', stackable: true },
+ { id: 'scrounger', name: 'Scrounger', type: 'Economy', description: '+2 free Troops automatically added to reserves every turn.', stackable: true },
+ { id: 'capCollector', name: 'Cap Collector', type: 'Economy', description: 'Permanently reduces standard recruitment cost to 4 Caps.', stackable: false },
+ { id: 'actionBoy', name: 'Action Boy / Girl', type: 'Maneuver', description: 'Grants +1 extra troop movement during Maneuver Phase.', stackable: true },
+ { id: 'scavenger', name: 'Scavenger', type: 'Loot', description: 'Increases chance to find Relics, Stimpaks, Codes by +10%.', stackable: true },
+ { id: 'localLeader', name: 'Local Leader', type: 'Economy', description: 'Continent Bonuses pay out an additional +2 Troops and +2 Caps.', stackable: true },
+ { id: 'inspirational', name: 'Inspirational', type: 'Diplomacy', description: 'Earn double Reputation points when bribing or gifting Caps.', stackable: false },
+ { id: 'gunNut', name: 'Gun Nut', type: 'Economy', description: 'Reduces cost of hiring unique Mercenaries to 15 Caps.', stackable: false }
+ ],
+ tier3: [
+ { id: 'lifeGiver', name: 'Life Giver', type: 'Stats', description: "Increases Commander's maximum health by +25 HP.", stackable: true },
+ { id: 'solarPowered', name: 'Solar Powered', type: 'Healing', description: 'Commander automatically heals +10 HP every turn.', stackable: true },
+ { id: 'movingTarget', name: 'Moving Target', type: 'Defense', description: 'Commander grants +15% defense if they moved last turn.', stackable: false },
+ { id: 'medic', name: 'Medic', type: 'Healing', description: 'Stimpaks now heal Commander for 40 HP instead of 20.', stackable: false },
+ { id: 'blitz', name: 'Blitz', type: 'Stats', description: 'Gains +1 Max AP (allowing 3 actions per turn).', stackable: true },
+ { id: 'ninja', name: 'Ninja', type: 'Stealth', description: 'Commander movements no longer trigger "Sensor Anomalies".', stackable: false },
+ { id: 'refractor', name: 'Refractor', type: 'Resistance', description: 'Commander takes 50% less damage from assassination items.', stackable: false },
+ { id: 'infiltrator', name: 'Infiltrator', type: 'Subversion', description: 'Converting an enemy territory takes 1 less turn.', stackable: false }
+ ],
+ tier4: [
+ { id: 'mercenaryReinforcements', name: 'Mercenary Reinforcements', type: 'Instant', description: 'Instantly gain 30 Troops to your reserve pool.', stackable: false },
+ { id: 'buriedTreasure', name: 'Buried Treasure', type: 'Instant', description: 'Instantly gain 40 Bottle Caps.', stackable: false },
+ { id: 'preWarRelic', name: 'Pre-War Relic', type: 'Instant', description: 'Instantly spawns 1 Seeded Relic into your inventory.', stackable: false },
+ { id: 'encryptedData', name: 'Encrypted Data', type: 'Instant', description: 'Instantly gain +1 Nuclear Launch Code.', stackable: false },
+ { id: 'wastelandMedic', name: 'Wasteland Medic', type: 'Instant', description: 'Instantly restore Commander to Max HP and gain 1 Stimpak.', stackable: false },
+ { id: 'mysteriousBroadcast', name: 'Mysterious Broadcast', type: 'Instant', description: 'Lifts Fog of War across the map for 3 turns.', stackable: false },
+ { id: 'massEvacuation', name: 'Mass Evacuation', type: 'Instant', description: 'Teleport up to 20 troops from a territory to Reserve Pool.', stackable: false },
+ { id: 'orbitalStrike', name: 'Orbital Strike', type: 'Instant', description: 'Target any enemy territory and wipe out 50% of garrison.', stackable: false }
+ ]
+ };
+
+ // --- CORE XP ENGINE ---
+ Gamestate.addXP = function (player, amount) {
+ if (!this.levelingEnabled || !player || player.isNeutral) return;
+
+ player.xp += amount;
+
+ // Carryover math: 100 XP threshold
+ while (player.xp >= 100) {
+ player.xp -= 100;
+ player.level++;
+ this.triggerLevelUp(player);
+ }
+
+ if (player.isPlayer) this.updateXPBar();
+ };
+
+ Gamestate.grantRelic = function (player, relic) {
+ if (!player.relics) player.relics = [];
+
+ // Add to inventory
+ player.relics.push({...relic});
+
+ // Mark as "Found" globally so it doesn't drop again until used
+ relic.found = true;
+
+ if (player.isPlayer) {
+ this.showToast(`RELIC RECOVERED: ${relic.name}`, "var(--pip-color)");
+ if (this.renderInventory) this.renderInventory();
+ } else {
+ this.logAction(`[ INTEL ] Reports indicate ${player.name} has secured a Pre-War artifact.`);
+ // AI immediate use check (we will build this in Phase 4)
+ }
+ };
+
+ Gamestate.activateRelic = function (relic) {
+ // Close the inventory modal first
+ document.getElementById('inventory-modal').style.display = 'none';
+
+ if (relic.type === 'Instant') {
+ this.applyRelicEffect(relic);
+ } else if (relic.type === 'Equip') {
+ this.equipRelic(relic);
+ } else if (relic.type === 'Targeted') {
+ this.enterRelicTargeting(relic);
+ }
+ };
+
+ Gamestate.enterRelicTargeting = function (relic) {
+ this.pendingRelic = relic;
+ this.targetingMode = 'relic';
+ this.showToast(`TARGETING: Select territory for ${relic.name}`, "var(--pip-color)");
+
+ // Change cursor to crosshair
+ document.body.style.cursor = 'crosshair';
+ this.updateInfo();
+ };
+
+ Gamestate.applyRelicEffect = async function (relic, target = null) {
+ let success = false;
+
+ switch (relic.id) {
+ case 'jet':
+ this.player.extraTurn = true;
+ await this.logAction("[ CHEMICALS ] Jet consumed. Reflexes heightened. Extra turn granted.", true);
+ success = true;
+ break;
+
+ case 'stealthboy':
+ this.player.stealthActive = 2; // Duration in turns
+ await this.logAction("[ STEALTH ] Stealth Boy activated. You are invisible to enemy radar for 2 turns.", true);
+ success = true;
+ break;
+
+ case 'lunchbox':
+ let troops = 10; let caps = 20;
+ this.player.reserve += troops; this.player.caps += caps;
+ await this.logAction(`[ LUNCHBOX ] You found ${troops} troops and ${caps} Caps! Wowie!`, true);
+ success = true;
+ break;
+ case 'fatman':
+ if (target.owner === this.player.name) {
+ this.showToast("Cannot target own territory!", "red");
+ return;
+ }
+ const losses = Math.floor(target.army * 0.6);
+ target.army -= losses;
+ const targetPlayer = this.players.find(p => p.name === target.owner);
+ if (targetPlayer) targetPlayer.army -= losses;
+ await this.logAction(`[ NUCLEAR ] Fat Man detonated at ${formatTerritoryName(target.name)}. ${losses} enemy troops vaporized.`, true);
+ success = true;
+ break;
+
+ case 'geck':
+ // Check if it's a Crater (from a previous Nuke)
+ if (target.isCrater || target.hasRadstorm) {
+ target.isCrater = false;
+ target.hasRadstorm = false;
+ target.army += 15; this.player.army += 15;
+ target.owner = this.player.name;
+ target.color = this.player.color;
+ await this.logAction(`[ TERRAFORM ] G.E.C.K. deployed. ${formatTerritoryName(target.name)} has been restored to lush wasteland.`, true);
+ success = true;
+ } else {
+ this.showToast("Target must be a Crater or Radstorm!", "red");
+ return;
+ }
+ break;
+
+ case 'cryolator':
+ if (target.owner === this.player.name) {
+ this.showToast("Cannot target own territory!", "red"); return;
+ }
+ target.isFrozen = 2; // Freeze for 2 turns
+ await this.logAction(`[ CRYOGENIC ] ${formatTerritoryName(target.name)} has been frozen solid. All actions blocked.`, true);
+ success = true;
+ break;
+
+ case 'capmine':
+ if (target.owner !== this.player.name) {
+ this.showToast("Can only mine friendly territory!", "red"); return;
+ }
+ target.hasMine = true;
+ await this.logAction(`[ DEFENSE ] Bottlecap Mine planted at ${formatTerritoryName(target.name)}.`, true);
+ success = true;
+ break;
+
+ case 'radaway':
+ this.player.radImmunity = 3;
+ await this.logAction("[ MEDICAL ] RadAway consumed. You are immune to Radstorms for 3 turns.", true);
+ success = true;
+ break;
+
+ case 'shroudcard':
+ if (target.owner === this.player.name) {
+ this.showToast("Cannot target own territory!", "red"); return;
+ }
+ target.isBlockaded = 3;
+ await this.logAction(`[ BLOCKADE ] Silver Shroud Card left at ${formatTerritoryName(target.name)}. Territory is blockaded.`, true);
+ success = true;
+ break;
+
+ case 'survivalguide':
+ // Search map for any active Vaults/Radio Signals and resolve them instantly
+ const encounters = this.countries.filter(c => c.isExploring || c.encounterType);
+ if (encounters.length > 0) {
+ for (let c of encounters) await this.resolveExplorationOutcome(c);
+ await this.logAction("[ KNOWLEDGE ] Survival Guide used. All wasteland expeditions completed successfully.", true);
+ success = true;
+ } else {
+ this.showToast("No active expeditions to complete!", "red"); return;
+ }
+ break;
+
+
+ }
+
+ if (success && relic.consumed) {
+ this.player.relics = this.player.relics.filter(r => r.id !== relic.id);
+ relic.found = false; // Put it back in the pool for others to find
+ this.renderInventory();
+ }
+ this.updateInfo();
+ };
+
+ Gamestate.equipRelic = function (relic) {
+ if (!this.player.activeBuffs) this.player.activeBuffs = {};
+
+ if (relic.id === 'x01armor') {
+ this.player.activeBuffs.x01armor = true;
+ this.showToast("X-01 POWER ARMOR EQUIPPED", "var(--pip-color)");
+ this.logAction("[ EQUIPMENT ] Commander has donned X-01 Power Armor. Armor and Defense boosted.", true);
+
+ // Remove from inventory grid but keep in player.relics (as equipped)
+ relic.isEquipped = true;
+ if (this.renderInventory) this.renderInventory();
+ }
+ };
+
+ Gamestate.aiRelicCheck = async function (aiPlayer) {
+ if (!aiPlayer.relics || aiPlayer.relics.length === 0) return;
+
+ for (let i = aiPlayer.relics.length - 1; i >= 0; i--) {
+ let relic = aiPlayer.relics[i];
+ let used = false;
+
+ // AI Logic for specific items
+ if (relic.id === 'jet' || relic.id === 'lunchbox' || relic.id === 'x01armor') {
+ // Instant use items
+ await this.applyRelicEffect(relic);
+ used = true;
+ } else if (relic.id === 'fatman') {
+ // Target strongest enemy border
+ let target = this.getStrongestEnemyBorder(aiPlayer);
+ if (target) {
+ await this.applyRelicEffect(relic, target);
+ used = true;
+ }
+ }
+
+ if (used) aiPlayer.relics.splice(i, 1);
+ }
+ };
+
+ Gamestate.getStrongestEnemyBorder = function (aiPlayer) {
+ let bestTarget = null;
+ let maxTroops = -1;
+
+ aiPlayer.areas.forEach(areaName => {
+ const country = this.countries.find(c => c.name === areaName);
+ country.neighbours.forEach(neighborName => {
+ const neighbor = this.countries.find(c => c.name === neighborName);
+ // If it's an enemy and has a lot of troops
+ if (neighbor.owner !== aiPlayer.name && !this.areAllies(aiPlayer.name, neighbor.owner)) {
+ if (neighbor.army > maxTroops) {
+ maxTroops = neighbor.army;
+ bestTarget = neighbor;
+ }
+ }
+ });
+ });
+ return bestTarget;
+ };
+
+
+ Gamestate.aiLevelUp = function (player) {
+ if (!this.levelingEnabled || !player || player.isPlayer) return;
+
+ // Determine tier pool based on AI level
+ let pool = [];
+ if (player.level >= 13) pool = [...this.PerkDatabase.tier1, ...this.PerkDatabase.tier2, ...this.PerkDatabase.tier3, ...this.PerkDatabase.tier4];
+ else if (player.level >= 9) pool = [...this.PerkDatabase.tier1, ...this.PerkDatabase.tier2, ...this.PerkDatabase.tier3];
+ else if (player.level >= 5) pool = [...this.PerkDatabase.tier1, ...this.PerkDatabase.tier2];
+ else pool = [...this.PerkDatabase.tier1];
+
+ // AI picks 1 random perk from the available tiers
+ const perk = pool[Math.floor(Math.random() * pool.length)];
+
+ // Apply the perk to the AI's buffs
+ if (!player.activeBuffs[perk.id]) player.activeBuffs[perk.id] = 0;
+ player.activeBuffs[perk.id]++;
+
+ // Report the event in the Vault-Tec Action Log
+ this.logAction(`[ INTEL ] Reports indicate ${player.name} has reached Level ${player.level} and acquired the '${perk.name}' perk.`);
+ };
+
+ Gamestate.updateXPBar = function() {
+ const bar = document.getElementById('xp-bar-container');
+ const label = document.getElementById('level-label');
+ if (!bar || !label) return;
+
+ if (this.levelingEnabled || this.wastelandEconomyActive) {
+ bar.style.display = 'block';
+ label.style.display = 'block';
+
+ const p = this.player;
+ if (!p) return;
+
+ const xpFill = document.getElementById('xp-fill');
+ const lvlText = document.getElementById('player-level');
+ if (xpFill) xpFill.style.width = `${p.xp}%`;
+ if (lvlText) lvlText.textContent = p.level;
+ } else {
+ bar.style.display = 'none';
+ label.style.display = 'none';
+ }
+ };
+
+
+
+
+ Gamestate.applyInstantPerk = async function (player, perk) {
+ if (!player.isPlayer) {
+ // AI Instant Perk Logic (Simpler version)
+ if (perk.id === 'buriedTreasure') player.caps += 40;
+ if (perk.id === 'mercenaryReinforcements') player.reserve += 30;
+ return;
+ }
+
+ switch (perk.id) {
+ case 'mercenaryReinforcements':
+ player.reserve += 30;
+ this.showToast("REINFORCEMENTS ARRIVED: +30 Troops!", "var(--pip-color)");
+ break;
+ case 'buriedTreasure':
+ player.caps += 40;
+ this.showToast("TREASURE FOUND: +40 Caps!", "var(--pip-color)");
+ break;
+ case 'encryptedData':
+ player.codes = (player.codes || 0) + 1;
+ this.showToast("DATA DECRYPTED: +1 Launch Code!", "var(--pip-color)");
+ break;
+ case 'wastelandMedic':
+ const maxHP = 100 + (player.activeBuffs.lifeGiver || 0) * 25;
+ player.commander.hp = maxHP;
+ player.commander.stimpaks = (player.commander.stimpaks || 0) + 1;
+ this.showToast("COMMANDER RESTORED!", "var(--pip-color)");
+ break;
+ case 'mysteriousBroadcast':
+ this.showToast("SIGNAL DETECTED: Fog of War lifted!", "var(--pip-color)");
+ this.fogOfWarActive = false;
+ setTimeout(() => { this.fogOfWarActive = document.getElementById('opt-fog-of-war').checked; this.updateInfo(); }, 30000); // 30 seconds of clarity
+ break;
+ case 'orbitalStrike':
+ this.showToast("SATELLITE ONLINE: Select an enemy to strike!", "red");
+ this.stage = "Frenzy Targeting"; // Re-using targeting logic
+ this.activeNuke = { type: 'Orbital', launcher: player.name };
+ break;
+ }
+ this.updateInfo();
+ };
+
+
+ Gamestate.triggerLevelUp = function (player) {
+ if (!this.levelingEnabled) return;
+ if (player.isPlayer) {
+ this.showLevelUpModal(player);
+ } else {
+ this.aiLevelUp(player);
+ }
+ };
+
+ Gamestate.showLevelUpModal = async function (player) {
+ this.modalIsOpen = true;
+
+ // 1. Gather all eligible perks based on player level
+ let allPerks = [];
+ if (player.level >= 13) allPerks = [...this.PerkDatabase.tier1, ...this.PerkDatabase.tier2, ...this.PerkDatabase.tier3, ...this.PerkDatabase.tier4];
+ else if (player.level >= 9) allPerks = [...this.PerkDatabase.tier1, ...this.PerkDatabase.tier2, ...this.PerkDatabase.tier3];
+ else if (player.level >= 5) allPerks = [...this.PerkDatabase.tier1, ...this.PerkDatabase.tier2];
+ else allPerks = [...this.PerkDatabase.tier1];
+
+ // --- [ NEW: SMART FILTERING ] ---
+ // Filter out perks that are useless in the current game mode
+ const hasHorrors = this.players.some(p => p.isNeutral && p.alive);
+ const fogOfWar = document.getElementById('opt-fog-of-war') && document.getElementById('opt-fog-of-war').checked;
+ allPerks = allPerks.filter(perk => {
+ // Filter out Ghoul Slayer if there are no Horrors on the map
+ if (perk.id === 'ghoulSlayer' && !hasHorrors) return false;
+
+ // Filter out hazard protection if Radstorms are off
+ if (perk.id === 'adamantiumSkeleton' && !this.hazardsEnabled) return false;
+
+ // Filter out Scavenger if Encounters are off
+ if (perk.id === 'scavenger' && !this.encountersEnabled) return false;
+
+ // Filter out Commander-only perks if Commanders are disabled
+ const commanderPerks = ['lifeGiver', 'solarPowered', 'movingTarget', 'medic', 'refractor', 'infiltrator', 'ninja'];
+ if (commanderPerks.includes(perk.id) && !this.commandersEnabled) return false;
+
+ // Filter out Ninja if Fog of War is off (since it hides movement)
+ if (perk.id === 'ninja' && !fogOfWar) return false;
+ return true;
+ });
+ // --- [ END FILTERING ] ---
+
+ // 2. Randomize and pick 3 unique options
+ let choices = allPerks.sort(() => 0.5 - Math.random()).slice(0, 3);
+
+ const title = `LEVEL UP: ${player.level}`;
+ let message = `You have reached a new level of wasteland expertise! Select a permanent perk to enhance your faction's capabilities.`;
+
+ let modalChoices = choices.map(perk => ({
+ id: perk.id,
+ text: `
[ ${perk.name.toUpperCase()} ]
${perk.description}
`
+ }));
+
+
+
+ // 3. Display the modal and wait for user selection
+ await this.showEncounterModal(title, message, modalChoices, (perkId) => {
+ const selected = choices.find(c => c.id === perkId);
+
+ // Apply perk (Instant vs Permanent)
+ if (selected.type === 'Instant') {
+ this.applyInstantPerk(player, selected);
+ } else {
+ if (!player.activeBuffs[selected.id]) player.activeBuffs[selected.id] = 0;
+ player.activeBuffs[selected.id]++;
+ }
+
+ this.logAction(`[ LEVEL UP ] You acquired the '${selected.name}' perk!`, true);
+ return null;
+ });
+
+ this.modalIsOpen = false;
+ this.updateInfo();
+ };
+
+ Gamestate.applyInstantPerk = function(player, perk) {
+ if (!player) return;
+ switch(perk.id) {
+ case 'mercenaryReinforcements':
+ player.reserve += 30; break;
+ case 'buriedTreasure':
+ player.caps += 40; break;
+ case 'encryptedData':
+ player.codes = (player.codes || 0) + 1; break;
+ case 'wastelandMedic':
+ if (player.commander) {
+ player.commander.hp = player.commander.maxHp || 100;
+ player.commander.stimpaks = Math.min(3, (player.commander.stimpaks || 0) + 1);
+ }
+ break;
+ case 'preWarRelic':
+ let unfound = this.bobbleheads.filter(b => !b.found);
+ if (unfound.length > 0) {
+ let found = unfound[Math.floor(Math.random() * unfound.length)];
+ found.found = true; found.owner = player.name;
+ }
+ break;
+ case 'mysteriousBroadcast':
+ // Lifts Fog of War for 3 turns (assumes perceptionTimer logic exists)
+ this.perceptionTimer = 3;
+ this.logAction("[ BROADCAST ] Satellite link established. Fog of War lifted for 3 turns.", true);
+ break;
+ case 'massEvacuation':
+ // Simply adds 20 troops to reserve (representing an extraction from the field)
+ player.reserve += 20;
+ this.logAction("[ EVACUATION ] 20 troops were extracted to the reserve pool.", true);
+ break;
+ case 'orbitalStrike':
+ // Instantly wipes 50% of the strongest enemy territory's garrison
+ let targets = this.countries.filter(c => c.owner !== player.name && c.army > 1);
+ targets.sort((a, b) => b.army - a.army);
+ if (targets.length > 0) {
+ let victim = targets[0];
+ let losses = Math.floor(victim.army * 0.5);
+ victim.army -= losses;
+ this.logAction(`[ ORBITAL STRIKE ] High-yield kinetic impact detected in ${victim.name}! -${losses} casualties.`, true);
+ }
+ break;
+ }
+ this.updateInfo();
+ this.drawMapText();
+ };
+
Gamestate.start = async function () {
+ // --- NEW: REQUEST FULL SCREEN ON START (MOBILE ONLY) ---
+ if (window.innerWidth <= 950) {
+ let elem = document.documentElement;
+ if (elem.requestFullscreen) { elem.requestFullscreen().catch(e => console.log(e)); }
+ else if (elem.webkitRequestFullscreen) { elem.webkitRequestFullscreen().catch(e => console.log(e)); }
+ }
+
// --- APPLY VISUAL THEME AT GAME START ---
Gamestate.applyUITheme();
+
// --- NEW: SET INITIAL RADIO TRACK BASED ON THEME ---
const themeDropdown = document.getElementById('chosen-theme');
const selectedTheme = themeDropdown ? themeDropdown.value : "fo3";
@@ -5516,6 +5984,11 @@ Gamestate.renderInventory = function () {
this.wastelandEconomyActive = this.perksEnabled || this.nukesEnabled || this.commandersEnabled ||
this.hazardsEnabled || this.encountersEnabled;
+// --- NEW: LEVELING SYSTEM GATE ---
+// The Leveling System runs if anything other than classic mode is enabled.
+this.levelingEnabled = this.wastelandEconomyActive;
+
+
// --- NEW: CLASSIC MODE UI & LOOT OVERRIDES ---
// Save a master copy of the bobbleheads so they aren't permanently deleted upon reboot
if (!this.masterBobbleheads) {
@@ -5732,17 +6205,7 @@ let navInv = document.getElementById('nav-inv');
// Finalize player UI text
if (playerName) playerName.textContent = this.players.find(p => p.isPlayer).name;
if (playerCountry) playerCountry.textContent = this.players.find(p => p.isPlayer).country;
- // --- CORRECTED OVERSEER KEY REVEAL ---
- let devKey = document.getElementById('secret-dev-key');
- if (devKey) {
- // Check the name property of the human player object.
- const humanPlayer = this.players.find(p => p.isPlayer);
- if (humanPlayer && humanPlayer.name.toLowerCase() === "overseer") {
- devKey.style.display = "block";
- } else {
- devKey.style.display = "none";
- }
- }
+
// Add neutral Horrors faction if needed
if (document.getElementById('opt-horrors')?.checked || this.nukesEnabled) {
this.players.push({
@@ -5766,9 +6229,16 @@ let navInv = document.getElementById('nav-inv');
}
// --- REPUTATION SETUP ---
this.players.forEach(p1 => {
+ // --- NEW: LEVELING SYSTEM DATA ---
+ p1.xp = 0;
+ p1.level = 1;
+ p1.activeBuffs = {};
+ // ---------------------------------
+
this.diplomacy.betrayalTax[p1.name] = 0;
this.diplomacy.grudges[p1.name] = [];
this.diplomacy.reputation[p1.name] = {};
+
this.players.forEach(p2 => {
this.diplomacy.reputation[p1.name][p2.name] = 0;
});
@@ -5980,6 +6450,15 @@ let navInv = document.getElementById('nav-inv');
this.drawMapText();
this.updateInfo();
this.startIntelAnimation();
+ // --- CRITICAL: WAKE UP THE XP BAR ---
+ this.updateXPBar();
+
+ // Seed the Match Relics (Pick 6 of 12)
+ const shuffled = [...this.RelicDatabase].sort(() => 0.5 - Math.random());
+ this.activeRelicPool = shuffled.slice(0, 6);
+ console.log("Match Seeded with Relics:", this.activeRelicPool.map(r => r.name));
+
+
await this.logAction("> ROBCO INDUSTRIES (TM) Termlink Protocol active.", true);
// --- NEW: IN-LOG MISSION BRIEFING ---
@@ -7300,6 +7779,20 @@ Gamestate.handleClick = function (e) {
}
}
+ // --- RELIC TARGETING HANDLER ---
+ if (this.targetingMode === 'relic' && this.pendingRelic) {
+ const countryId = e.target.id;
+ const country = this.countries.find(c => c.name === countryId);
+ if (country) {
+ this.applyRelicEffect(this.pendingRelic, country);
+ this.targetingMode = null;
+ this.pendingRelic = null;
+ document.body.style.cursor = 'default';
+ return; // Block other map actions while targeting
+ }
+ }
+
+
if (this.stage === "Fortify") {
this.addArmy(e);
} else if (this.stage === "Battle" || this.stage === "Frenzy Targeting") {
@@ -7471,7 +7964,11 @@ Gamestate.restart = function () {
const hasIntel = !fogEnabled || player.name === this.player.name || iBobbleActive || (this.isAllianceMode && player.team === this.player.team) || (this.diplomacy.reputation[player.name] && this.diplomacy.reputation[player.name][this.player.name] >= 10);
// --- Player Name (Bold) ---
- if (leaderEl) leaderEl.innerHTML = player.name;
+ if (leaderEl) {
+ let levelSuffix = (this.levelingEnabled && player.level) ? `
(Lvl ${player.level})` : "";
+ leaderEl.innerHTML = player.name + levelSuffix;
+ }
+
// --- Faction Name & Reputation ---
if (countryEl) {
@@ -7508,6 +8005,13 @@ Gamestate.restart = function () {
countryEl.innerHTML = countryHtml;
+
+ // --- NEW: HIDE AI FACTION NAME ON MOBILE ---
+ if (window.innerWidth <= 950 && !player.isPlayer) {
+ countryEl.style.display = "none";
+ } else {
+ countryEl.style.display = "block";
+ }
}
@@ -7584,13 +8088,59 @@ Gamestate.restart = function () {
barEl.style.marginTop = '12px'; // Double space
}
+ // --- NEW: PLAYER COLOR IDENTIFIER & ALLIANCE STATUS ---
+ let colorBar = infoBox.querySelector('.player-color-bar');
+ if (!colorBar) {
+ colorBar = document.createElement('div');
+ // Give it the exact same CSS class as the standard buttons!
+ colorBar.className = 'btn-diplomacy player-color-bar';
+ infoBox.appendChild(colorBar);
+ }
+
+ if (player.name === this.player.name) {
+ colorBar.style.display = "block";
+ colorBar.style.backgroundColor = player.color;
+ colorBar.style.color = "#000";
+ colorBar.style.border = "1px solid var(--pip-color)";
+ colorBar.style.pointerEvents = "none"; // Make it non-clickable
+
+ // Keep text to one line safely
+ colorBar.style.whiteSpace = "nowrap";
+ colorBar.style.overflow = "hidden";
+ colorBar.style.textOverflow = "ellipsis";
+
+ let statusText = "NO ALLIANCES";
+ if (this.isAllianceMode) {
+ let ally = this.players.find(p => p.team === this.player.team && p.name !== this.player.name && !p.isNeutral);
+ if (ally && ally.alive) {
+ statusText = `ALLIED: ${ally.name}`;
+ } else {
+ statusText = `ALLIANCE SEVERED`;
+ }
+ } else {
+ let myTruce = this.diplomacy.truces.find(t => t.f1 === this.player.name || t.f2 === this.player.name);
+ if (myTruce) {
+ let allyName = myTruce.f1 === this.player.name ? myTruce.f2 : myTruce.f1;
+ statusText = `TRUCE: ${allyName} (${myTruce.turns}T)`;
+ }
+ }
+
+ colorBar.textContent = statusText;
+ } else {
+ colorBar.style.display = "none";
+ }
+
+
// --- FINAL BUTTON LOGIC FOR DIPLOMACY & ALLIANCE ---
- let dipBtn = infoBox.querySelector('.btn-diplomacy');
+ // FIX: Specify 'button' so it doesn't accidentally grab our new color bar!
+ let dipBtn = infoBox.querySelector('button.btn-diplomacy');
// First, a universal rule: no buttons for the player, dead/neutral factions.
if ((player.name === this.player.name) || player.isNeutral || player.areas.length === 0) {
if (dipBtn) dipBtn.style.display = "none";
}
+
+
// If we are in Alliance Mode...
else if (this.isAllianceMode) {
// And this player is our ally...
@@ -8455,6 +9005,40 @@ Gamestate.restart = function () {
});
}
+ Gamestate.checkAutoPhaseAdvance = function() {
+ if (this.aiTurn || this.modalIsOpen) return;
+
+ let shouldAdvance = false;
+ let reason = "OUT OF AP";
+
+ if (this.stage === "Commander Phase" && this.commandersEnabled && this.player.commander) {
+ if (this.player.commander.ap <= 0) shouldAdvance = true;
+ } else if (this.stage === "Maneuver") {
+ if (this.player.maneuverPoints <= 0) {
+ shouldAdvance = true;
+ reason = "OUT OF MANEUVERS";
+ }
+ }
+
+ if (shouldAdvance) {
+ const endBtn = document.getElementById('end');
+ if (endBtn) {
+ endBtn.classList.add('btn-flash');
+ endBtn.textContent = `${reason} - ADVANCING...`;
+ endBtn.style.pointerEvents = "none";
+ endBtn.style.opacity = "0.7";
+
+ setTimeout(() => {
+ endBtn.classList.remove('btn-flash');
+ endBtn.style.pointerEvents = "auto";
+ endBtn.style.opacity = "1";
+ this.handleEndTurn();
+ }, 1200);
+ }
+ }
+ };
+
+
Gamestate.handleEndTurn = async function () {
if (this.aiTurn) { // --- FIX: Removed the global reserve lock!
return;
@@ -8462,6 +9046,30 @@ Gamestate.restart = function () {
// --- FORTIFY / RECRUITMENT -> BATTLE BRIDGE ---
if (this.stage === "Fortify" || this.stage === "Recruitment") {
+ // Modal confirmation for unspent Caps
+ // Unified Recruitment Confirmation
+ if (this.stage === "Recruitment" && !this.aiTurn) {
+ const hasCharisma = this.bobbleheads && this.bobbleheads.find(b => b.key === 'c' && b.active && b.owner === this.player.name);
+ const troopCost = hasCharisma ? 3 : (this.player.activeBuffs.capCollector ? 4 : 5);
+
+ if (this.player.caps >= troopCost) {
+ const confirmed = await new Promise(resolve => {
+ this.showEncounterModal(
+ "RECRUITMENT NOTICE",
+ `You still have enough Caps to recruit ${Math.floor(this.player.caps / troopCost)} more troops. Are you sure you want to proceed to combat without reinforcements?`,
+ [
+ { id: 'skip', text: "[ YES ] PROCEED TO COMBAT" },
+ { id: 'cancel', text: "[ NO ] REMAIN IN RECRUITMENT" }
+ ],
+ (choice) => resolve(choice === 'skip')
+ );
+ });
+
+ // If they chose NO, exit the end-turn sequence
+ if (!confirmed) return;
+ }
+ }
+
// FIX: Now checks for airborne troops as well!
if (this.player.reserve > 0 || (this.player.airborneTroops && this.player.airborneTroops > 0)) {
if (this.showToast) this.showToast("You must deploy all your reserve troops before ending the phase.", "red");
@@ -8495,7 +9103,10 @@ if (this.stage === "Fortify" || this.stage === "Recruitment") {
this.prevTarget = null;
this.stage = "Commander Phase";
- if (!this.player.commander.isConverting) this.player.commander.ap = 2;
+ if (!this.player.commander.isConverting) {
+ this.player.commander.ap = 2 + (this.player.activeBuffs.blitz || 0);
+ }
+
this.player.commander.hasFought = false;
this.aiTurn = false;
this.updateButtonText();
@@ -8730,6 +9341,36 @@ if (this.stage === "Fortify" || this.stage === "Recruitment") {
};
+ Gamestate.checkAutoPhaseAdvance = function() {
+ if (this.aiTurn || this.modalIsOpen) return;
+
+ let shouldAdvance = false;
+ let reason = "OUT OF AP";
+
+ if (this.stage === "Commander Phase" && this.commandersEnabled && this.player.commander) {
+ if (this.player.commander.ap <= 0) shouldAdvance = true;
+ } else if (this.stage === "Maneuver") {
+ if (this.player.maneuverPoints <= 0) {
+ shouldAdvance = true;
+ reason = "OUT OF MANEUVERS";
+ }
+ }
+
+ if (shouldAdvance) {
+ const endBtn = document.getElementById('end');
+ if (endBtn) {
+ endBtn.textContent = `${reason} - ADVANCING...`;
+ endBtn.style.pointerEvents = "none"; // Stop double-clicking
+ endBtn.style.opacity = "0.7";
+
+ setTimeout(() => {
+ endBtn.style.pointerEvents = "auto";
+ endBtn.style.opacity = "1";
+ this.handleEndTurn();
+ }, 1200);
+ }
+ }
+ };
@@ -9220,6 +9861,8 @@ if (this.stage === "Fortify" || this.stage === "Recruitment") {
this.player.commander.ap -= 1;
this.player.commander.siegeTurns = 0;
await this.logAction(`COMMANDER MOVEMENT: Commander relocated to ${formatTerritoryName(country.name)}.`);
+ this.checkAutoPhaseAdvance();
+
}
this.updateInfo();
}
@@ -9528,7 +10171,10 @@ if (this.stage === "Fortify" || this.stage === "Recruitment") {
// --- END PERK LOGIC ---
// FIX: Agility Bobblehead integration
- this.player.maneuverPoints -= 1;
+ this.player.maneuverPoints -= 1;
+this.updateInfo();
+this.checkAutoPhaseAdvance();
+
if (this.player.maneuverPoints <= 0) {
this.handleEndTurn();
} else {
@@ -9568,13 +10214,24 @@ if (this.stage === "Fortify" || this.stage === "Recruitment") {
Gamestate.useStimpak = async function () {
if (this.stage !== "Commander Phase" || !this.commandersEnabled || !this.player.commander) return;
- if (this.player.commander.ap <= 0 || this.player.commander.stimpaks <= 0 || this.player.commander.hp >= 100) return;
- this.player.commander.stimpaks -= 1; this.player.commander.ap -= 1; this.player.commander.hp = Math.min(100, this.player.commander.hp + 20);
- await this.logAction("[ MEDICAL ] Commander injected a Stimpak. Recovered 20 HP.", true);
+
+ // Smart Max HP check
+ const maxHP = 100 + (this.player.activeBuffs.lifeGiver || 0) * 25;
+ const healAmount = this.player.activeBuffs.medic ? 40 : 20;
+
+ if (this.player.commander.ap <= 0 || this.player.commander.stimpaks <= 0 || this.player.commander.hp >= maxHP) return;
+
+ this.player.commander.stimpaks -= 1;
+ this.player.commander.ap -= 1;
+ this.player.commander.hp = Math.min(maxHP, this.player.commander.hp + healAmount);
+
+ await this.logAction(`[ MEDICAL ] Commander used a Stimpak. Recovered ${healAmount} HP.`, true);
if (this.renderInventory) this.renderInventory();
this.updateInfo();
+ this.checkAutoPhaseAdvance();
}
+
Gamestate.activateBobblehead = async function (itemKey) {
if (!this.bobbleheads) return;
const item = this.bobbleheads.find(i => i.key === itemKey);
@@ -9778,6 +10435,16 @@ if (this.stage === "Fortify" || this.stage === "Recruitment") {
Gamestate.killCommander = async function (player, killer = null) { // Added killer parameter
+ // --- AUTO-REVIVE CHECK ---
+ const stimIdx = player.relics ? player.relics.findIndex(r => r.id === 'superstimpak') : -1;
+ if (stimIdx > -1) {
+ player.relics.splice(stimIdx, 1);
+ player.commander.hp = 50;
+ await this.logAction(`[ EMERGENCY ] ${player.name}'s Commander used a Super Stimpak to avoid death!`, true);
+ if (player.isPlayer && this.renderInventory) this.renderInventory();
+ return; // Stop the death logic
+ }
+
if (!player.alive) return;
await this.logAction(`[ FACTION ELIMINATED ] ${player.name}'s Commander has been killed! Their forces scatter...`, true, true);
player.alive = false;
@@ -10180,6 +10847,29 @@ if (this.stage === "Fortify" || this.stage === "Recruitment") {
// Apply Caps
this.player.caps += totalIncome;
+ // --- NEW: LEVELING SYSTEM TURN-START BONUSES ---
+ if (this.levelingEnabled) {
+ // Fortune Finder (+3 Caps)
+ if (this.player.activeBuffs.fortuneFinder) {
+ const ffBonus = this.player.activeBuffs.fortuneFinder * 3;
+ this.player.caps += ffBonus;
+ await this.logAction(`[ FORTUNE FINDER ] Scavenged +${ffBonus} Caps!`, true);
+ }
+ // Scrounger (+2 Troops)
+ if (this.player.activeBuffs.scrounger) {
+ const scBonus = this.player.activeBuffs.scrounger * 2;
+ this.player.reserve += scBonus;
+ await this.logAction(`[ SCROUNGER ] Found +${scBonus} extra reinforcements!`, true);
+ }
+ // Solar Powered (+10 HP)
+ if (this.player.activeBuffs.solarPowered && this.player.commander) {
+ const heal = this.player.activeBuffs.solarPowered * 10;
+ this.player.commander.hp = Math.min(this.player.commander.maxHp || 100, this.player.commander.hp + heal);
+ await this.logAction(`[ SOLAR POWERED ] Photosynthesis healed you for +${heal} HP.`, true);
+ }
+ }
+
+
// --- NEW: EXPLICIT BEFORE/AFTER LOGGING ---
if (totalIncome > 0) {
if (nukaBonus > 0) {
@@ -10617,7 +11307,7 @@ if (this.bobbleheads) {
// AI decides how many troops to buy (they will spend between 50% and 100% of their caps)
let hasCharisma = this.bobbleheads && this.bobbleheads.find(b => b.key === 'c' && b.active && b.owner === this.players[i].name);
- const troopCost = hasCharisma ? 3 : 5;
+ const troopCost = hasCharisma ? 3 : (this.players[i].activeBuffs.capCollector ? 4 : 5);
const spendingPercentage = (Math.random() * 0.5) + 0.5;
const affordableTroops = Math.floor(this.players[i].caps / troopCost);
@@ -10871,6 +11561,8 @@ if (this.bobbleheads) {
this.players[i].commander.ap = 2;
}
this.updateInfo();
+ await this.aiRelicCheck(this.players[i]);
+
}
}
}
@@ -11261,58 +11953,7 @@ if (this.bobbleheads) {
}
- // --- 1. ACTIVATE THE STIMPAK BUTTON ---
- document.getElementById('dev-stimpak').onclick = () => {
- if (Gamestate.player && Gamestate.player.commander) {
- Gamestate.player.commander.stimpaks++;
- Gamestate.updateInfo();
- if (Gamestate.logAction) Gamestate.logAction("OVERSEER OVERRIDE: +1 Stimpak added to inventory.");
-
- // NEW: Tell the inventory tab to pulse and update the screen
- let navInv = document.getElementById('nav-inv');
- if (navInv) navInv.classList.add('inv-pulse');
- if (Gamestate.renderInventory) Gamestate.renderInventory();
- }
- };
-
-
- // --- 2. DYNAMIC DEV MENU LOCKOUTS ---
- // Call this function right before you open your Dev Modal!
- Gamestate.refreshDevMenuStatus = function () {
- let btnHeal = document.getElementById('dev-heal');
- let btnStimpak = document.getElementById('dev-stimpak');
- let btnCode = document.getElementById('dev-code');
- let btnStorm = document.getElementById('dev-storm');
-
- // 1. DIRECTLY READ THE START MENU CHECKBOXES
- let cmdrOn = document.getElementById('opt-commander') ? document.getElementById('opt-commander').checked : false;
- let nukesOn = document.getElementById('opt-nukes') ? document.getElementById('opt-nukes').checked : false;
- let stormsOn = document.getElementById('opt-radstorms') ? document.getElementById('opt-radstorms').checked : false;
-
- // 2. HANDLE COMMANDER BUTTONS
- if (cmdrOn) {
- if (btnHeal) { btnHeal.disabled = false; btnHeal.style.opacity = "1"; btnHeal.style.cursor = "pointer"; btnHeal.style.pointerEvents = "auto"; }
- if (btnStimpak) { btnStimpak.disabled = false; btnStimpak.style.opacity = "1"; btnStimpak.style.cursor = "pointer"; btnStimpak.style.pointerEvents = "auto"; }
- } else {
- if (btnHeal) { btnHeal.disabled = true; btnHeal.style.opacity = "0.2"; btnHeal.style.cursor = "not-allowed"; btnHeal.style.pointerEvents = "none"; }
- if (btnStimpak) { btnStimpak.disabled = true; btnStimpak.style.opacity = "0.2"; btnStimpak.style.cursor = "not-allowed"; btnStimpak.style.pointerEvents = "none"; }
- }
-
- // 3. HANDLE NUKE BUTTON
- if (nukesOn) {
- if (btnCode) { btnCode.disabled = false; btnCode.style.opacity = "1"; btnCode.style.cursor = "pointer"; btnCode.style.pointerEvents = "auto"; }
- } else {
- if (btnCode) { btnCode.disabled = true; btnCode.style.opacity = "0.2"; btnCode.style.cursor = "not-allowed"; btnCode.style.pointerEvents = "none"; }
- }
-
- // 4. HANDLE RADSTORM BUTTON
- if (stormsOn) {
- if (btnStorm) { btnStorm.disabled = false; btnStorm.style.opacity = "1"; btnStorm.style.cursor = "pointer"; btnStorm.style.pointerEvents = "auto"; }
- } else {
- if (btnStorm) { btnStorm.disabled = true; btnStorm.style.opacity = "0.2"; btnStorm.style.cursor = "not-allowed"; btnStorm.style.pointerEvents = "none"; }
- }
- };
}
@@ -11522,6 +12163,10 @@ if (this.bobbleheads) {
}
}
if (country.army <= 1 && opponent.army > 0) {
+ // --- NEW: XP FOR DEFENSE ---
+// NEW BALANCED VALUE: 4 XP for a successful defense
+if (opp && !opp.isNeutral) this.addXP(opp, 4);
+
const attackerLosses = originalAttackerArmy - country.army;
const defenderLosses = originalDefenderArmy - opponent.army; // --- NEW: Track defender losses
@@ -11569,6 +12214,32 @@ if (this.bobbleheads) {
}
}
+ // --- [ COMPLETED LEVELING PERKS COMBAT MODIFIERS ] ---
+ if (this.levelingEnabled) {
+ // 1. Bloody Mess: +5% per stack on all attacks
+ if (player.activeBuffs.bloodyMess) attackerWinChance += (player.activeBuffs.bloodyMess * 0.05);
+
+ // 2. Toughness: +5% per stack on all defense
+ if (opp.activeBuffs.toughness) attackerWinChance -= (opp.activeBuffs.toughness * 0.05);
+
+ // 3. Ghoul Slayer: Massive +15% against Wasteland Horrors
+ if (player.activeBuffs.ghoulSlayer && opp.name === "Wasteland Horrors") attackerWinChance += 0.15;
+
+ // 4. Commando: Pre-emptive strike (Attacking with 10+ kills 1 defender instantly)
+ if (player.activeBuffs.commando && attackerArmy >= 10) {
+ opponent.army -= 1;
+ this.logAction(`[ COMMANDO ] Pre-emptive strike eliminated 1 defender before the roll.`);
+ }
+
+ // 5. Rooted: +10% defense if territory hasn't moved troops recently
+ // (Checks if the territory was 'locked down' or just not touched)
+ if (opp.activeBuffs.rooted && !opponent.wasManeuveredThisTurn) {
+ attackerWinChance -= 0.10;
+ }
+ }
+
+
+
// --- NEW: Universal Synth Recovery (Failed Attack) ---
if (player.perk?.id === 'synth_replacements' && attackerLosses > 0) {
let synths = 0;
@@ -11596,6 +12267,12 @@ if (this.bobbleheads) {
isVictory = true;
player.conqueredThisTurn = true;
+// NEW BALANCED VALUES: 8 XP for land, 12 XP for Horror nests
+let xpReward = (originalOwner === "Wasteland Horrors") ? 12 : 8;
+this.addXP(player, xpReward);
+
+
+
// --- NEW: EXPEDITION WIPED OUT CHECK ---
if (opponent.isExploring) {
// Only show the modal if the HUMAN player's expedition was destroyed
@@ -11800,7 +12477,11 @@ if (this.bobbleheads) {
if (opp.areas && opp.areas.length === 0 && (!this.commandersEnabled || !opp.commander || opp.commander.hp <= 0)) {
if (opp.name !== "none") {
opp.alive = false;
-
+
+ // --- NEW: XP FOR ELIMINATION ---
+ this.addXP(player, 40);
+
+
// ---> CHANGED: Transfer Stimpaks and Bobbleheads to the Conqueror
if (this.commandersEnabled && opp.commander && opp.commander.stimpaks > 0) {
if (player.commander) player.commander.stimpaks += opp.commander.stimpaks;
@@ -12099,7 +12780,8 @@ if (this.bobbleheads) {
choices.forEach(choice => {
const button = document.createElement('button');
- button.textContent = choice.text;
+ button.innerHTML = choice.text;
+
button.onclick = async () => {
// If an onChoice function is provided, execute it and get the result message
if (onChoice) {
@@ -12146,7 +12828,7 @@ if (this.bobbleheads) {
// --- BOBBLEHEAD MODIFIER (CHARISMA) ---
let hasCharisma = this.bobbleheads && this.bobbleheads.find(b => b.key === 'c' && b.active && b.owner === this.player.name);
- const troopCost = hasCharisma ? 3 : 5;
+ const troopCost = hasCharisma ? 3 : (this.player.activeBuffs.capCollector ? 4 : 5);
const maxTroops = Math.floor(this.player.caps / troopCost);
// Update UI text to reflect discount
@@ -12157,9 +12839,12 @@ if (this.bobbleheads) {
pTags.forEach(p => { if (p.textContent.includes("Purchase troops")) costDesc = p; });
}
if (costDesc) {
- costDesc.innerHTML = hasCharisma
- ? `Purchase troops to add to your reserves. Cost:
3 Caps (Charisma Active)`
+ let displayCost = troopCost;
+ let reason = hasCharisma ? "Charisma Active" : (this.player.activeBuffs.capCollector ? "Cap Collector Active" : "");
+ costDesc.innerHTML = reason
+ ? `Purchase troops to add to your reserves. Cost:
${displayCost} Caps (${reason})`
: `Purchase troops to add to your reserves. Cost: 5 Caps per troop.`;
+
}
capsDisplay.textContent = this.player.caps;
@@ -12304,9 +12989,22 @@ if (this.bobbleheads) {
// Player wins ties (army >= threat)
if (army >= threat) {
+ // --- NEW: XP FOR CREATURE KILL ---
+ this.addXP(this.player, 15);
+
let lootText = "";
let logText = "";
let roll = Math.random();
+
+ // --- NEW: RELIC DISCOVERY CHANCE (Creature Dens) ---
+ if (Math.random() < 0.10) { // 10% fixed chance for creatures
+ const available = this.activeRelicPool.filter(r => !r.found);
+ if (available.length > 0) {
+ const relic = available[Math.floor(Math.random() * available.length)];
+ this.grantRelic(this.player, relic);
+ }
+ }
+
// Hostage Reward for Humanoids
if (creature.isHumanoid && roll < 0.40) {
@@ -12421,6 +13119,9 @@ if (this.bobbleheads) {
};
Gamestate.resolveExplorationOutcome = async function (territory) {
+ // --- NEW: XP FOR ENCOUNTER ---
+ this.addXP(this.player, 20);
+
if (this.modalIsOpen) return;
this.modalIsOpen = true;
@@ -12432,6 +13133,17 @@ if (this.bobbleheads) {
const roll = Math.random();
+ // --- NEW: RELIC DISCOVERY CHANCE (Expeditions) ---
+ let relicChance = 0.20 + (this.player.activeBuffs.scavenger ? 0.10 : 0);
+ if (Math.random() < relicChance) {
+ const available = this.activeRelicPool.filter(r => !r.found);
+ if (available.length > 0) {
+ const relic = available[Math.floor(Math.random() * available.length)];
+ this.grantRelic(this.player, relic);
+ }
+ }
+
+
// 30% Chance for High Value Loot (Caps or Units)
if (roll < 0.30) {
let capsFound = Math.floor(Math.random() * 15) + 10;
@@ -12798,7 +13510,15 @@ Gamestate.triggerEncounterCheck = async function (triggerType, territoryName = n
// --- FIX: Tell the function to accept the 'jsonString' we pass from the file button ---
Gamestate.loadGame = async function (jsonString) {
try {
+ // --- NEW: REQUEST FULL SCREEN ON LOAD (MOBILE ONLY) ---
+ if (window.innerWidth <= 950) {
+ let elem = document.documentElement;
+ if (elem.requestFullscreen) { elem.requestFullscreen().catch(e => console.log(e)); }
+ else if (elem.webkitRequestFullscreen) { elem.webkitRequestFullscreen().catch(e => console.log(e)); }
+ }
+
// 1. Check if we actually received file data
+
if (!jsonString) {
if (this.showToast) this.showToast("Error: No save data found in file.", "red");
return false;
@@ -12853,6 +13573,10 @@ Gamestate.triggerEncounterCheck = async function (triggerType, territoryName = n
this.updateButtonText();
this.updateInfo();
+ // --- NEW: Refresh Leveling UI on Startup ---
+ this.updateXPBar();
+
+
// 9. Special rule for loading into the Recruitment stage
if (this.wastelandEconomyActive && this.stage === 'Recruitment' && this.player.reserve === 0) {
const troopCost = 5;
@@ -12893,6 +13617,12 @@ Gamestate.updateInfo = function () {
let phaseName = this.stage.toUpperCase().replace(" PHASE", "");
let fullText = `${phaseName} PHASE: ${rawText}`;
+ // --- NEW: INJECT INTO GHOST LOG ON MOBILE ---
+ if (window.innerWidth <= 950) {
+ this.logAction(`[ DIRECTIVE ] ${fullText}`, true);
+ }
+ // --- END NEW LOGIC ---
+
// Stop any old typing immediately
if (this.typewriterInterval) {
clearInterval(this.typewriterInterval);
@@ -12915,7 +13645,7 @@ Gamestate.updateInfo = function () {
}, typingSpeed);
}
}
- }
+
// --- FINAL, DEFINITIVE INV PULSE LOGIC ---
const navInv = document.getElementById('nav-inv');
@@ -12946,7 +13676,7 @@ Gamestate.updateInfo = function () {
}
}
// --- END OF FIX ---
-
+}
// --- BULLETPROOF SVG OVERLAP FIX (V2) ---
@@ -12987,6 +13717,7 @@ Gamestate.updateInfo = function () {
`
> HOW TO PLAY (Learn basics of claiming land, resources, and combat)` +
`
> V.A.T.S. TARGETING (Understand how difficulty changes combat odds)` +
`
> FACTIONS & PERKS (Discover unique abilities and advantages per faction)` +
+`
> LEVELING & PROGRESSION (Earn XP and unlock powerful perks)` +
`
> MAKING FRIENDS (DIPLOMACY) (How to form temporary truces or backstab rivals)` +
`
> STORMS & GHOULS (Learn to survive hazards and fend off neutral hordes)` +
`
> WASTELAND ENCOUNTERS (Learn about random events, ambushes, and hidden loot)` +
@@ -12999,7 +13730,7 @@ Gamestate.updateInfo = function () {
adminLink +
`
> LOG OFF THE GUIDE`;
},
-"page-status": () => {
+ "page-status": () => {
// --- DYNAMIC PRESET MATCHER ---
let getMatchedPreset = () => {
let p = Gamestate.perksEnabled;
@@ -13022,22 +13753,100 @@ Gamestate.updateInfo = function () {
return "CUSTOM";
};
- let pName = Gamestate.player ? Gamestate.player.name : "UNKNOWN";
- let pFaction = Gamestate.player ? Gamestate.player.country : "UNKNOWN";
- let pPreset = getMatchedPreset();
+ const p = Gamestate.player;
+ if (!p) return "NO ACTIVE SESSION DATA FOUND.";
- let html = `> CURRENT MISSION DATA
`;
- html += `STATUS: MONITORING ACTIVE WASTELAND THEATER
`;
+ const pName = p.name ? p.name.toUpperCase() : "UNKNOWN";
+ const pFaction = p.country ? p.country.toUpperCase() : "UNKNOWN";
+ const pPreset = getMatchedPreset();
+
+ // --- PORTRAIT SELECTION LOGIC ---
+ const img1 = "data:image/png;base64,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"; // Healthy (HP 71+ / Strength 51%+)
+ const img2 = "data:image/png;base64,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"; // Hurt (HP 41-70 / Strength 21-50%)
+ const img3 = "data:image/png;base64,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"; // Injured (HP 40- / Strength 20%-)
+ let activeImg = img1;
+ if (Gamestate.commandersEnabled && p.commander) {
+ const hp = p.commander.hp;
+ if (hp <= 30) activeImg = img3;
+ else if (hp <= 70) activeImg = img2;
+ else activeImg = img1;
+ } else {
+ // CLASSIC MODE: 21% and 65% thresholds
+ const strength = (p.areas.length / 24) * 100;
+ if (strength <= 21) activeImg = img3;
+ else if (strength <= 65) activeImg = img2;
+ else activeImg = img1;
+ }
+if (!Gamestate.turn || Gamestate.turn <= 1) activeImg = img1; // --- HTML CONSTRUCTION ---
+ // Start with the Header Text
+ let html = `> CURRENT MISSION DATA
`;
+
+ // Create the Two-Column Layout (Image Left, Profile Right)
+ html += `
`;
+
+ // Left Column: The Portrait
+
+html += `
+
`;
+
+ // Right Column: Operator Profile
+ html += `
`;
html += `-- OPERATOR PROFILE --
`;
html += `NAME: ${pName}
`;
- html += `FACTION: ${pFaction}
`;
-
- if (Gamestate.perksEnabled && Gamestate.player && Gamestate.player.perk && Gamestate.player.perk.id !== "none") {
- html += `FACTION PERK: ${Gamestate.player.perk.name} - ${Gamestate.player.perk.description}
`;
+ let displayHealth = 100;
+ if (Gamestate.turn > 1) {
+ let rawHealth = (Gamestate.commandersEnabled && p.commander) ? p.commander.hp : Math.round((p.areas.length / 24) * 100);
+ displayHealth = Math.min(100, rawHealth);
}
- html += `
-- ACTIVE SIMULATION PARAMETERS --
`;
+ html += `HEALTH: ${displayHealth}%
`;
+ html += `FACTION: ${pFaction}
`;
+
+ if (Gamestate.levelingEnabled) {
+ const totalXp = ((p.level - 1) * 100) + Math.floor(p.xp || 0);
+ html += `LEVEL: ${p.level}
`;
+ html += `EXPERIENCE: ${totalXp} XP
`;
+ }
+
+ if (Gamestate.perksEnabled && p.perk && p.perk.id !== "none") {
+ html += `FACTION PERK: ${p.perk.name}
`;
+ }
+
+ // Add Active Progression Perks if they exist
+ if (Gamestate.levelingEnabled && p.activeBuffs) {
+ let perksList = [];
+ const allPerks = [...Gamestate.PerkDatabase.tier1, ...Gamestate.PerkDatabase.tier2, ...Gamestate.PerkDatabase.tier3, ...Gamestate.PerkDatabase.tier4];
+ for (let id in p.activeBuffs) {
+ if (p.activeBuffs[id] > 0) {
+ let pDef = allPerks.find(item => item.id === id);
+ if (pDef) {
+ let count = p.activeBuffs[id];
+ perksList.push(`${pDef.name.toUpperCase()}${count > 1 ? " x" + count : ""}`);
+ }
+ }
+ }
+ if (perksList.length > 0) {
+ html += `
-- ACTIVE PERKS (PROGRESSION) --
${perksList.join("
")}
`;
+ }
+ }
+ html += `
`; // Close Right Column and Flex Header Container
+
+ html += `-- ACTIVE SIMULATION PARAMETERS --
`;
let diff = Gamestate.difficulty || "NORMAL";
html += `DIFFICULTY: ${diff.toUpperCase()}
`;
@@ -13175,6 +13984,72 @@ Gamestate.updateInfo = function () {
"page-factions-6": "> FACTIONS & PERKS (Part 6/6)
THE GUNNERS [Mercenary Contracts]
\"Spend 20 Caps during your turn to instantly deploy 6-12 elite troops to your reserves, PLUS 1 extra troop for every 2 territories you own. (1 Turn Cooldown)\"- EXPLANATION: Very similar to the Minutemen, but with a drastically lower cooldown, letting you buy emergency troops almost every single turn.NUKA-WORLD RAIDERS [Tribute Chest]
\"At the start of your turn, you gain +10 Bottle Caps for every continent you fully control.\"- EXPLANATION: Hold entire continents to get incredibly rich, allowing you to buy more troops from the shop than anyone else.CUSTOM FACTION [Mysterious Stranger]
\"When you are losing a battle, the Stranger may appear to grant a sudden +25% combat bonus.\"- EXPLANATION: Your custom player faction has a guardian angel. Sometimes, when you are projected to lose a fight, the Stranger bails you out and grants a massive hit chance boost.> PREVIOUS PAGE",
+"page-leveling": () => {
+ return `> LEVELING & PROGRESSION
` +
+ `The simulation now tracks your tactical performance via XP. Earn 100 XP to Level Up and receive a permanent ability.
` +
+ `-- XP Payouts --
` +
+ `- Conquering Land: +8 XP
` +
+ `- Clearing Horrors: +12 XP
` +
+ `- Defending Land: +4 XP
` +
+ `- Map Encounters: +15 XP
` +
+ `- Eliminating Rivals: +40 XP
` +
+ `-- Perk Database --
` +
+ `
> TIER 1: COMBAT & SURVIVAL (LVL 1+)` +
+ `
> TIER 2: ECONOMY & EMPIRE (LVL 5+)` +
+ `
> TIER 3: COMMANDER TACTICS (LVL 9+)` +
+ `
> TIER 4: INSTANT ACTIONS (LVL 13+)` +
+ `
< BACK TO MAIN MENU`;
+},
+"page-tier1": () => {
+ return `> PERKS: TIER 1 (COMBAT & SURVIVAL)
` +
+ `- Bloody Mess: Your attacks are 5% more likely to succeed.
` +
+ `- Toughness: Defending your land is 5% more likely to succeed.
` +
+ `- Ghoul Slayer: Grants a massive combat advantage against Ghouls.
` +
+ `- Sniper: Your troops won't die from your own explosives/AoE items.
` +
+ `- Adamantium Skeleton: Radstorms deal 50% less damage to your troops.
` +
+ `- Demolition Expert: Your attacks ignore enemy Silo/Ranger defenses.
` +
+ `- Commando: Large armies (10+) automatically kill 1 enemy for free.
` +
+ `- Rooted: +10% defense bonus if your troops didn't move recently.
` +
+ `
< BACK TO LEVELING GUIDE`;
+},
+"page-tier2": () => {
+ return `> PERKS: TIER 2 (ECONOMY & EMPIRE)
` +
+ `- Fortune Finder: Earn 3 extra Caps at the start of every turn.
` +
+ `- Scrounger: Get 2 extra free Troops in your reserves every turn.
` +
+ `- Cap Collector: Recruiting troops is cheaper (4 Caps instead of 5).
` +
+ `- Action Boy: Move your troops 1 extra time during the Maneuver Phase.
` +
+ `- Scavenger: Find Bobbleheads and Launch Codes more often.
` +
+ `- Local Leader: Double the rewards for holding an entire Continent.
` +
+ `- Inspirational: Double reputation earned from bribes and gifts.
` +
+ `- Gun Nut: Hiring special Mercenaries is 5 Caps cheaper.
` +
+ `
< BACK TO LEVELING GUIDE`;
+},
+"page-tier3": () => {
+ return `> PERKS: TIER 3 (COMMANDER TACTICS)
` +
+ `- Life Giver: Increases your Commander's maximum health by +25 HP.
` +
+ `- Solar Powered: Your Commander heals +10 HP automatically every turn.
` +
+ `- Moving Target: +15% Commander defense if they moved last turn.
` +
+ `- Medic: Stimpaks now heal your Commander twice as much (40 HP).
` +
+ `- Blitz: Your Commander can take 3 actions per turn instead of 2.
` +
+ `- Ninja: Move through Fog of War without being spotted.
` +
+ `- Refractor: Take half damage from direct "Assassination" items.
` +
+ `- Infiltrator: Take 1 less turn to "siege" or convert an enemy land.
` +
+ `
< BACK TO LEVELING GUIDE`;
+},
+"page-tier4": () => {
+ return `> PERKS: TIER 4 (INSTANT ACTIONS)
` +
+ `- Merc Reinforcements: Instantly gain 30 troops in your reserves.
` +
+ `- Buried Treasure: Instantly gain 40 Bottle Caps.
` +
+ `- Pre-War Relic: Instantly receive a random Bobblehead item.
` +
+ `- Encrypted Data: Instantly gain one Nuclear Launch Code.
` +
+ `- Wasteland Medic: Full Commander heal + gain one extra Stimpak.
` +
+ `- Mysterious Broadcast: Reveals the entire map and removes Fog.
` +
+ `- Mass Evacuation: Save troops by teleporting them back to reserves.
` +
+ `- Orbital Strike: Vaporize 50% of an enemy's troops instantly.
` +
+ `
< BACK TO LEVELING GUIDE`;
+},
+
+
"page-diplomacy": "> DIPLOMACY & REPUTATION (Part 1/3)
In the wasteland, bullets aren't your only weapon. Click the 'Initiate Trade/Truce' button on an opponent's leaderboard card to open negotiations.
THE REPUTATION SCALEYour success depends entirely on your Reputation with that specific faction:
* IDOLIZED / LIKED: Factions will gladly accept fair trades and truces.
* NEUTRAL: The default state. They will accept deals that directly benefit them.
* VILIFIED / HATED: They will outright refuse to negotiate with you, unless you terrify them with an overwhelming army.
> NEXT PAGE (Negotiations & Bribes)",
"page-diplomacy-2": "> DIPLOMACY & REPUTATION (Part 2/3)
NEGOTIATING DEALSWhen sending an Envoy, you can offer Caps or Troops in exchange for Caps or a Ceasefire. The computer will analyze your offer in real-time and tell you if they will accept it.
BUYING REPUTATION (GIFTS)If your Reputation is in the gutter, you can buy forgiveness. Send an Envoy offering Caps or Troops, but ask for NOTHING in return.
Every 1 Cap of value you gift them increases your Reputation by +3. This is the best way to make a hostile faction willing to talk to you again.
> NEXT PAGE (Truces & Betrayal)> PREVIOUS PAGE",
@@ -13242,6 +14117,13 @@ Gamestate.updateInfo = function () {
"page-about": "> SYSTEM CREDITS & LEGAL
SYSTEM VERSION: 2.1
> View Update History (Patch Notes)Check for Latest UpdatesORIGINAL ENGINE ARCHITECTURE:This simulation was heavily modified from the original Risk framework created by Vinayak Vedantam (
https://github.com/vvedanta).
PORTABLE DEPLOYMENT:Players can download the self-contained game as a .html file. To download: Save this webpage (Ctrl+S) as a single HTML file. (The playable music is not included).
SUPPORT THE DEVELOPER:Support my work by buying my book,
SurvivalSOS: Fundamentals of Survival Available on AmazonFEEDBACK:Submit Bug Report / SuggestionDISCLAIMER:This is an independent, fan-made project and is not affiliated with or endorsed by Bethesda Softworks, ZeniMax Media, or Microsoft. All Fallout-related intellectual property belongs to its respective owners. No copyright or trademark infringement is intended.",
"page-patch-notes": "> UPDATE HISTORY (PATCH NOTES)
" +
+"
v2.3 [LEVELING & MOBILE UPDATE]" +
+"- Leveling System: Implemented a new player progression system featuring uncapped XP for continuous character growth.
" +
+"- Enhanced Phone Mode: Completely overhauled the mobile interface with adaptive UI scaling and a dedicated mission log for small screens.
" +
+"- Expanded Misc Items: Integrated Bobbleheads and Relics into the core simulation with active perks and inventory tracking.
" +
+"- New Health Portrait: Added a Vault-Boy biometric monitor to the terminal that visually updates based on the commander's health.
" +
+"- System Stability: Resolved several critical logic bugs including AI turn lockups, SVG map layering, and UI script crashes.
" +
+"- Simulation Parity: Balanced specialized mechanics like Nukes and Radstorms to ensure consistency across all game modes.
" +
"
v2.2 [SYSTEM HOTFIXES & UI POLISH]" +
"- Fixed a critical open stash bug in Classic mode.
" +
"- Added a ping function to the AP bar to locate valid territories.
" +
@@ -13361,26 +14243,44 @@ Gamestate.updateInfo = function () {
return `
`;
}
- // --- Bobblehead section (disabled but visible in Classic) ---
- let bhHTML = '';
- if (Gamestate.bobbleheads) {
- bhHTML += `
BOBBLEHEAD INJECTION`;
- if (isClassic) bhHTML += `
[LOCKED] Requires Wasteland Economy mode.
`;
- bhHTML += `
`;
- Gamestate.bobbleheads.forEach(bh => {
- let owned = bh.owner === pName;
- let other = bh.owner && !owned;
- let bc = isClassic ? '#333' : (owned ? '#00ff00' : (other ? '#ff4444' : 'var(--pip-color))'));
- let tc = isClassic ? '#444' : (owned ? '#00ff00' : (other ? '#ff4444' : 'var(--pip-color))'));
- let st = isClassic ? 'not-allowed' : 'pointer';
- let lbl = other ? bh.owner.toUpperCase().substring(0,8) : (owned ? 'OWNED' : 'INJECT');
- let da = (isClassic || owned) ? 'disabled' : '';
- let oc = (isClassic || owned) ? '' : `onclick="let bx=Gamestate.bobbleheads.find(x=>x.key==='${bh.key}');bx.owner='${pName}';bx.found=true;if(bx.cooldown===undefined)bx.cooldown=0;Gamestate.updateInfo();${R}Gamestate.showToast('${bh.name} ACQUIRED','var(--pip-color)');"`;
- bhHTML += ``;
- });
- bhHTML += `
`;
+ // --- Combined Injection Section (With Ownership Checking) ---
+ let bhHTML = "";
+ if (!isClassic) {
+ bhHTML = `
ARTIFACT INJECTION
+
+
+
+
+
+
+
+
+
+
+
+
`;
}
+
+
return `
> TERMINAL OVERRIDE: CORE LOGIC ACCESS
Toggles lit in green are ACTIVE. Dimmed buttons require a disabled mechanic.
@@ -13422,9 +14322,10 @@ ${b(hasStorm ? 'CLEAR STORM' : 'TRIGGER STORM', hasStorm ? "Gamestate.activeRads
${b('SKIP THIS AI TURN', "if(Gamestate.aiTurn){Gamestate.aiTurn=false;let m=document.getElementById('map');if(m)m.style.pointerEvents='auto';Gamestate.updateInfo();Gamestate.showToast('AI TURN SKIPPED','var(--pip-color)');"+R+"}else{Gamestate.showToast('Not AI turn','#ff4444');}")}
-${b('+5 REP ALL', "if(hasDiplomacy||Gamestate.diplomacy){let rep=Gamestate.diplomacy.reputation;let pn=Gamestate.player.name;if(rep&&rep[pn]){Object.keys(rep[pn]).forEach(k=>{rep[pn][k]=Math.min(100,rep[pn][k]+5);});Gamestate.showToast('+5 REP with all factions','var(--pip-color)');"+R+"}else{Gamestate.showToast('No rep data','#ff4444');}}", hasDiplomacy ? '' : 'off')}
-${b('ELIMINATE ALL AI', "if(confirm('WARNING: Eliminate all AI factions? This cannot be undone.')){Gamestate.players.forEach(function(pl){if(pl!==Gamestate.player&&pl.alive&&!pl.isNeutral){pl.alive=false;pl.areas.forEach(function(a){let c=Gamestate.countries.find(x=>x.name===a);if(c){c.owner=Gamestate.player.name;c.army=1;}});pl.areas=[];}});if(Gamestate.updateInfo)Gamestate.updateInfo();Gamestate.showToast('ALL AI ELIMINATED','#ff4444');"+R+"}")}
+${b('+5 REP ALL', "if(Gamestate.diplomacy && Gamestate.diplomacy.reputation){let rep=Gamestate.diplomacy.reputation; let pn=Gamestate.player.name; Object.keys(rep).forEach(other=>{if(rep[other] && rep[other][pn]!==undefined){rep[other][pn]=Math.min(100, rep[other][pn]+5);}}); Gamestate.showToast('+5 Reputation with all factions','var(--pip-color)');" + R + "}else{Gamestate.showToast('No rep data','#ff4444');}", Gamestate.diplomacy && Gamestate.diplomacy.reputation ? '' : 'off')}
+${b('ELIMINATE ALL AI', "if(confirm('WARNING: Eliminate all AI factions?')){Gamestate.players.forEach(function(pl){if(pl!==Gamestate.player&&pl.alive&&!pl.isNeutral){pl.alive=false;pl.areas.forEach(function(a){let c=Gamestate.countries.find(x=>x.name===a);if(c){c.owner=Gamestate.player.name;c.army=1;}});pl.areas=[];}}); Gamestate.updateInfo(); Gamestate.showToast('ALL AI ELIMINATED','#ff4444');" + R + "}")}
+
${bhHTML}
@@ -13567,6 +14468,23 @@ document.getElementById('help-os-screen').addEventListener('click', function(e)
});
}
+ // --- NEW: AUTO-RESUME FULL SCREEN ON MOBILE TAP ---
+ document.body.addEventListener('click', () => {
+ // Check if it's a mobile screen in landscape
+ if (window.innerWidth <= 950 && window.innerWidth > window.innerHeight) {
+ let startModal = document.getElementById('start-modal');
+ // Only trigger if the game has actually started (modal is hidden)
+ if (startModal && startModal.style.display === 'none') {
+ // Check if we accidentally dropped out of full screen
+ if (!document.fullscreenElement && !document.webkitFullscreenElement) {
+ let elem = document.documentElement;
+ if (elem.requestFullscreen) { elem.requestFullscreen().catch(e => {}); }
+ else if (elem.webkitRequestFullscreen) { elem.webkitRequestFullscreen().catch(e => {}); }
+ }
+ }
+ }
+ });
+
// Then boot the game!
Gamestate.init();