JavaScript must be enabled to play.
Browser lacks capabilities required to play.
Upgrade or switch to another browser.
Loading…
<<nobr>> <style> body { background-color: #020502; margin: 0; padding: 0; } .boot-container { display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100vw; height: 100vh; background: #020502; color: #00ff00; font-family: 'Courier New', monospace; text-shadow: 0 0 10px #00ff00; position: fixed; top: 0; left: 0; z-index: 10; } .glitch-anim { animation: glitch-anim-heavy 0.15s infinite; } @keyframes glitch-anim-heavy { 0% { transform: translate(0) skew(0deg); filter: hue-rotate(0deg); } 20% { transform: translate(-5px, 5px) skew(-10deg); filter: hue-rotate(90deg); } 40% { transform: translate(-5px, -5px) skew(10deg); filter: hue-rotate(0deg); } 60% { transform: translate(5px, 5px) skew(-5deg); filter: hue-rotate(180deg); } 80% { transform: translate(5px, -5px) skew(5deg); filter: hue-rotate(0deg); } 100% { transform: translate(0) skew(0deg); filter: hue-rotate(0deg); } } .ashen-veil-world { background: linear-gradient(rgba(0, 5, 0, 0.8), rgba(0, 10, 5, 0.95)), url('images/locations/The_Outskirts.jpg') center/cover no-repeat; min-height: 100vh; display: flex; flex-direction: row; justify-content: space-between; align-items: stretch; width: 100%; margin: 0; padding: 0; animation: fadeInBlur 0.5s ease-in forwards; } @keyframes fadeInBlur { 0% { opacity: 0; filter: blur(10px) brightness(2); } 100% { opacity: 1; filter: blur(0) brightness(1); } } .ad-banner { flex: 0 0 160px; width: 160px; background: rgba(5, 10, 5, 0.9); border-left: 1px dashed #334155; border-right: 1px dashed #334155; display: flex; flex-direction: column; justify-content: center; align-items: center; color: #475569; font-family: 'Courier New', monospace; text-align: center; padding: 15px; position: relative; box-shadow: 0 0 15px rgba(0,0,0,0.8); } .ad-banner::before { content: "ADVERTISEMENT"; font-size: 0.7rem; letter-spacing: 2px; position: absolute; top: 15px; width: 100%; text-align: center; color: #334155; } .terminal-wide-core { flex: 1; background: linear-gradient(rgba(5, 15, 5, 0.88), rgba(5, 15, 5, 0.96)), url('images/locations/sanctuary_level_1.jpg') center/cover no-repeat; border-left: 2px solid #00ff00; border-right: 2px solid #00ff00; padding: 50px 80px; font-family: 'Courier New', monospace; box-shadow: 0 0 50px rgba(0, 255, 0, 0.15), inset 0 0 30px rgba(0, 255, 0, 0.05); display: flex; flex-direction: column; justify-content: space-between; box-sizing: border-box; overflow-y: auto; } .login-btn-container a { display: block; width: 100%; background: rgba(0, 255, 0, 0.1); border: 2px solid #00ff00; color: #00ff00 !important; padding: 16px; font-size: 1.2rem; font-weight: bold; letter-spacing: 3px; text-decoration: none !important; border-radius: 4px; box-shadow: 0 0 15px rgba(0, 255, 0, 0.3); transition: all 0.3s ease; text-align: center; box-sizing: border-box; margin-bottom: 10px; } .login-btn-container a:hover { background: #00ff00; color: #000 !important; box-shadow: 0 0 35px rgba(0, 255, 0, 0.8); transform: scale(1.01); } .btn-register { background: rgba(56, 189, 248, 0.1) !important; border: 2px solid #38bdf8 !important; color: #38bdf8 !important; } .btn-register:hover { background: #38bdf8 !important; color: #000 !important; } .terminal-input input[type="text"], .terminal-input input[type="password"] { background: rgba(0,0,0,0.8); border: 1px solid #00ff00; color: #00ff00; padding: 14px; font-family: 'Courier New', monospace; font-size: 1.3rem; text-align: center; width: 100%; max-width: 500px; letter-spacing: 2px; box-sizing: border-box; box-shadow: inset 0 0 10px rgba(0,255,0,0.2); } .terminal-input input[type="text"]:focus, .terminal-input input[type="password"]:focus { outline: none; box-shadow: 0 0 25px rgba(0, 255, 0, 0.6); background: #000; } .glitch-text { position: relative; display: inline-block; color: #00ff00; animation: glitch-skew 1s infinite linear alternate-reverse; } </style> <span id="screen-container"> <div id="boot-sequence" class="boot-container"> <h1 style="font-size: 2.5rem; letter-spacing: 5px; border-bottom: 2px solid #00ff00; padding-bottom: 10px; margin-bottom: 20px;">[ SYSTEM REBOOT ]</h1> <div id="boot-logs" style="text-align: left; width: 400px; font-size: 1.2rem; line-height: 1.8;"></div> </div> </span> <<timed 0.6s>> <<append "#boot-logs">><div style="margin-bottom:8px;">> COLD BOOT INITIATED...</div><</append>> <<next 0.5s>> <<append "#boot-logs">><div style="margin-bottom:8px;">> MEMORY ALLOCATION: OK</div><</append>> <<next 0.5s>> <<append "#boot-logs">><div style="margin-bottom:8px;">> NEURAL LINK: STANDBY</div><</append>> <<next 0.6s>> <<append "#boot-logs">><div style="margin-bottom:8px;">> BYPASSING SECURITY...</div><</append>> <<next 0.5s>> <<append "#boot-logs">><div style="margin-bottom:8px; color:#ef4444; text-shadow: 0 0 10px #ef4444;">> CONNECTION ESTABLISHED.</div><</append>> <<next 0.4s>> <<addclass "#boot-sequence" "glitch-anim">> <<next 0.2s>> <<replace "#screen-container">> <div class="ashen-veil-world"> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div></div> <div class="terminal-wide-core"> <div> <div style="text-align: center; border-bottom: 1px dashed rgba(0, 255, 0, 0.5); padding-bottom: 20px; margin-bottom: 30px;"> <h2 class="glitch-text" data-text="[ ASHEN VEIL OS v4.02 ]" style="margin: 0; letter-spacing: 8px; text-shadow: 0 0 12px #00ff00; font-size: 2.5rem;">[ ASHEN VEIL OS v4.02 ]</h2> <div style="margin-top: 15px; font-size: 1rem; color: #888; letter-spacing: 3px;">SECURE MILITARY-GRADE TERMINAL INTERFACE</div> </div> <div style="color: #ccc; font-size: 1.1rem; line-height: 1.8; margin-bottom: 30px; padding-left: 15px; border-left: 3px solid #00ff00;"> <p style="color: #00ff00; margin: 6px 0; text-shadow: 0 0 5px rgba(0,255,0,0.5);">> INITIALIZING SYSTEM KERNEL...</p> <p style="color: #00ff00; margin: 6px 0; text-shadow: 0 0 5px rgba(0,255,0,0.5);">> BIOMETRIC SENSORS: ONLINE</p> <p style="color: #38bdf8; margin: 6px 0; text-shadow: 0 0 5px rgba(56,189,248,0.5);">> WARNING: SECTOR ATMOSPHERE TOXIC.</p> </div> </div> <div style="background: rgba(0,255,0,0.02); border: 1px solid rgba(0,255,0,0.3); padding: 30px 40px; border-radius: 4px; text-align: center; margin: 15px 0; box-shadow: inset 0 0 20px rgba(0,255,0,0.05);"> <div style="color: #00ff00; font-weight: bold; margin-bottom: 10px; font-size: 1.2rem; letter-spacing: 3px;">> ENTER OPERATOR ID:</div> <div class="terminal-input" style="margin-bottom: 20px;"> <input type="text" id="gameUsername" autocomplete="off"> </div> <div style="color: #00ff00; font-weight: bold; margin-bottom: 10px; font-size: 1.2rem; letter-spacing: 3px;">> PASSWORD:</div> <div class="terminal-input" style="margin-bottom: 20px;"> <input type="password" id="gamePassword"> </div> <div id="login-error" style="color: #ef4444; font-weight: bold; font-size: 0.9rem; margin-bottom: 20px; min-height: 20px; letter-spacing: 1px;"></div> <div class="login-btn-container"> <a href="javascript:void(0);" id="btn-authenticate">AUTHENTICATE (LOGIN)</a> <a href="javascript:void(0);" id="btn-register" class="btn-register">INITIALIZE NEW ID (REGISTER)</a> </div> </div> </div> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div></div> </div> <</replace>> <</timed>> <<script>> const API_URL = "https://api.ashenveilgame.com"; $(document).off('click', '#btn-authenticate').on('click', '#btn-authenticate', async function() { var userVal = $('#gameUsername').val().trim(); var passVal = $('#gamePassword').val().trim(); var errDiv = $('#login-error'); if (userVal === "" || passVal === "") { errDiv.css('color', '#ef4444').text("ERROR: CREDENTIALS MISSING."); return; } errDiv.css('color', '#38bdf8').text("> VERIFYING ENCRYPTION KEYS..."); try { const response = await fetch(API_URL + "/api/login", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ username: userVal, password: passVal }) }); const data = await response.json(); if (response.ok) { errDiv.css('color', '#10b981').text("> ACCESS GRANTED. INITIALIZING..."); State.variables.playerName = data.username; State.variables.isVIP = data.isVIP; State.variables.day = 1; State.variables.hp = 100; State.variables.maxHp = 100; State.variables.stamina = 100; State.variables.maxStamina = 100; State.variables.hunger = 100; State.variables.materials = { scrap: 0, wood: 0, cloth: 0, iron: 0, medicine: 0, food: 3, rawMeat: 0, berries: 0, water: 0, ammo: 0, scrip: 0, rope: 0, techData: 0 }; State.variables.equipment = { headgear: "None", chest: "None", legs: "None", boots: "None", gloves: "None", rightHand: "None", offHand: "None" }; State.variables.level = 1; State.variables.xp = 0; State.variables.xpMax = 100; State.variables.skillPoints = 0; State.variables.activeQuest = "None"; State.variables.questProgress = 0; setTimeout(function() { Engine.play("Character Creation"); }, 1500); } else { errDiv.css('color', '#ef4444').text("> ACCESS DENIED: " + data.message.toUpperCase()); } } catch (err) { errDiv.css('color', '#ef4444').text("> FATAL ERROR: SERVER OFFLINE OR BLOCKED."); } }); $(document).off('click', '#btn-register').on('click', '#btn-register', async function() { var userVal = $('#gameUsername').val().trim(); var passVal = $('#gamePassword').val().trim(); var errDiv = $('#login-error'); if (userVal === "" || passVal === "") { errDiv.css('color', '#ef4444').text("ERROR: CREDENTIALS MISSING."); return; } errDiv.css('color', '#38bdf8').text("> REGISTERING NEW OPERATOR ID..."); try { const response = await fetch(API_URL + "/api/register", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ username: userVal, password: passVal }) }); const data = await response.json(); if (response.ok) { errDiv.css('color', '#10b981').text("> ID CREATED. NOW AUTHENTICATING..."); setTimeout(async function() { $('#btn-authenticate').click(); }, 1000); } else { errDiv.css('color', '#ef4444').text("> REGISTRATION FAILED: " + data.message.toUpperCase()); } } catch (err) { errDiv.css('color', '#ef4444').text("> FATAL ERROR: SERVER OFFLINE OR BLOCKED."); } }); $(document).off('keypress', '#gamePassword').on('keypress', '#gamePassword', function (e) { if (e.key === 'Enter') { $('#btn-authenticate').click(); } }); <</script>> <</nobr>>
<<nobr>> <!-- OYUNCU TEMEL BİLGİLERİ --> <<set $playerName to "Nakman", $playerGender to "Male", $playerAge to 24, $playerBackground to "Unknown">> <<set $playerClass to "None">> <<set $talents to []>> <!-- VİTAL BULGULAR VE İLERLEME --> <<set $hp to 100, $maxHp to 100>> <<set $stamina to 100, $maxStamina to 100>> <<set $hunger to 100>> <<set $day to 1, $weather to "Clear">> <<set $baseRep to 0, $threat to 0>> <<set $level to 1, $xp to 0, $xpMax to 100, $skillPoints to 0>> <<set $startingCity to "Katowice">> <<set $tutorialStep to 1>> <!-- TEMEL KAYNAKLAR --> <<set $materials to { scrap: 10, wood: 10, cloth: 10, iron: 5, caps: 0, techData: 0, medicine: 0, food: 5, rawMeat: 0, berries: 0, water: 5, ammo: 10, rope: 2, scrip: 0 }>> <!-- KOLONİ VE İŞÇİ YÖNETİMİ --> <<set $survivors to 5>> <<set $laborScrap to 0>> <<set $laborWood to 0>> <<set $laborCloth to 0>> <<set $laborHunters to 0>> <<set $laborForagers to 0>> <<set $laborMedics to 0>> <!-- ÜS VE EŞYALAR --> <<set $hasSanctuary to false>> <<set $sanctuaryLevels to { workshop: 1, greenhouse: 1, pit: 1, walls: 1 }>> <<set $equipment to { headgear: 'None', chest: 'None', legs: 'None', boots: 'None', gloves: 'None', rightHand: 'None', offHand: 'None' }>> <<set $gearInventory to []>> /* --- İTEM LİSTELERİ VE RARITY SİSTEMİ --- */ <<set $rarities to { "Common": { mult: 1.0, color: "#9ca3af" }, "Uncommon": { mult: 1.3, color: "#34d399" }, "Rare": { mult: 1.6, color: "#38bdf8" }, "Epic": { mult: 2.0, color: "#c084fc" }, "Legendary": { mult: 2.5, color: "#fbbf24" } }>> <<set $itemDatabase to { headgear: ["Scrap Helmet", "Leather Cap", "Tactical Goggles", "Reinforced Mask", "Gas Mask", "Steel Helm", "Riot Visor", "Cybernetic Optic", "Power Hood", "Apex Crown"], chest: ["Ragged Shirt", "Leather Vest", "Scrap Armor", "Tactical Rig", "Kevlar Vest", "Combat Plate", "Hazmat Suit", "Composite Armor", "Exo-Plating", "Juggernaut Shell"], legs: ["Torn Pants", "Leather Trousers", "Cargo Pants", "Scrap Legguards", "Combat Leggings", "Tactical Pants", "Plated Cuisses", "Exo-Legs", "Enforcer Pants", "Wasteland Lord Tassets"], boots: ["Worn Boots", "Leather Boots", "Scrap Boots", "Steel-Toed Boots", "Tactical Boots", "Combat Boots", "Stalker Boots", "Exo-Striders", "Ghost Stompers", "Titan Treads"], gloves: ["Fingerless Gloves", "Leather Gloves", "Work Gloves", "Reinforced Gloves", "Combat Gloves", "Tactical Wraps", "Shock Gloves", "Exo-Gloves", "Assault Bracers", "Overlord Grips"], rightHand: ["Combat Knife", "Pipe Pistol", "Scrap Launcher", "Revolver", "Hunting Rifle", "Submachine Gun", "Combat Shotgun", "Assault Rifle", "Plasma Cutter", "Gauss Cannon"], offHand: ["Makeshift Shield", "Combat Knife", "Flashlight", "Stun Baton", "Energy Shield", "Tactical Radio", "Signal Jammer", "Advanced Shield", "Nano Barrier", "Aegis Core"] }>> /* ========================================= */ /* DİNAMİK STAT (ÖZELLİK) HESAPLAMA MOTORU */ /* ========================================= */ <<script>> setup.getItemStats = function(fullName) { if (!fullName || fullName === "None") return { dmg: 0, armor: 0, hp: 0, stamina: 0 }; let rarity = "Common"; let mult = 1.0; let rarities = State.variables.rarities; for (let r in rarities) { if (fullName.includes(r)) { rarity = r; mult = rarities[r].mult; break; } } let baseName = fullName.replace(rarity + " ", ""); let db = State.variables.itemDatabase; let slot = "rightHand"; let tier = 1; for (let key in db) { if (db[key].includes(baseName)) { slot = key; tier = db[key].indexOf(baseName) + 1; break; } } let stats = { dmg: 0, armor: 0, hp: 0, stamina: 0 }; if (slot === "rightHand") { stats.dmg = Math.round(tier * 6 * mult); } else if (slot === "headgear") { stats.armor = Math.round(tier * 2 * mult); stats.hp = Math.round(tier * 5 * mult); } else if (slot === "chest") { stats.armor = Math.round(tier * 4 * mult); stats.hp = Math.round(tier * 10 * mult); } else if (slot === "legs") { stats.armor = Math.round(tier * 3 * mult); stats.stamina = Math.round(tier * 8 * mult); } else if (slot === "boots") { stats.armor = Math.round(tier * 2 * mult); stats.stamina = Math.round(tier * 5 * mult); } else if (slot === "gloves") { stats.armor = Math.round(tier * 1 * mult); stats.dmg = Math.round(tier * 2 * mult); } else if (slot === "offHand") { stats.armor = Math.round(tier * 5 * mult); stats.hp = Math.round(tier * 5 * mult); } if (baseName === "Scrap Launcher") { stats.dmg = Math.round(55 * mult); } return stats; }; setup.recalcStats = function() { let v = State.variables; let baseMaxHp = 100 + ((v.level - 1) * 5); let baseMaxStam = 100 + ((v.level - 1) * 5); if (v.playerBackground === "Mercenary") baseMaxHp += 20; if (v.playerBackground === "Mutated Anomaly") { baseMaxHp -= 40; baseMaxStam += 40; } if (v.perkNanites) baseMaxHp += 10; if (v.perkIronPump) baseMaxHp += (v.perkIronPump * 20); if (v.perkEndurance) baseMaxStam += (v.perkEndurance * 20); let tArmor = 0, tDmg = 0, gHp = 0, gStam = 0; for (let slot in v.equipment) { let item = v.equipment[slot]; let st = setup.getItemStats(item); gHp += st.hp; gStam += st.stamina; tArmor += st.armor; tDmg += st.dmg; } let oldMaxHp = v.maxHp || baseMaxHp; let oldMaxStam = v.maxStamina || baseMaxStam; v.maxHp = baseMaxHp + gHp; v.maxStamina = baseMaxStam + gStam; v.playerArmor = tArmor; v.playerDmgBonus = tDmg; if (v.hp > v.maxHp) v.hp = v.maxHp; if (v.stamina > v.maxStamina) v.stamina = v.maxStamina; if (v.maxHp > oldMaxHp) v.hp += (v.maxHp - oldMaxHp); if (v.maxStamina > oldMaxStam) v.stamina += (v.maxStamina - oldMaxStam); }; <</script>> <</nobr>>
<<nobr>> <style> .neon-panel { background-color: #050a05; padding: 30px; border: 2px solid #00ff66; border-radius: 8px; font-family: 'Courier New', monospace; box-shadow: 0 0 25px rgba(0, 255, 102, 0.15), inset 0 0 20px rgba(0, 255, 102, 0.05); color: #00ff66; } .neon-header { text-align: center; margin-bottom: 25px; border-bottom: 1px dashed #00ff66; padding-bottom: 15px; } .neon-section { margin-bottom: 25px; background: rgba(0, 20, 10, 0.6); padding: 20px; border: 1px solid #115e59; border-radius: 4px; box-shadow: inset 0 0 15px rgba(0,0,0,0.8); } /* SugarCube input stilleri sorunsuz giydirildi */ input[type="text"], input[type="number"], select { background: rgba(0,0,0,0.9) !important; border: 1px solid #34d399 !important; color: #34d399 !important; padding: 10px !important; font-family: 'Courier New', monospace !important; border-radius: 2px; box-shadow: 0 0 10px rgba(52, 211, 153, 0.2); } input[type="text"]:focus, input[type="number"]:focus, select:focus { outline: none; box-shadow: 0 0 20px rgba(52, 211, 153, 0.6); background: #000 !important; } .class-card { cursor: pointer; padding: 15px; border: 1px solid #334155; border-radius: 6px; background: rgba(0,0,0,0.7); transition: all 0.3s ease; position: relative; overflow: hidden; } .class-card:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(0,0,0,0.5); } .card-scavenger { border-left: 4px solid #10b981; } .card-scavenger:hover { background: rgba(16, 185, 129, 0.1); border-color: #10b981; box-shadow: 0 0 15px rgba(16,185,129,0.3); } .card-mercenary { border-left: 4px solid #ef4444; } .card-mercenary:hover { background: rgba(239, 68, 68, 0.1); border-color: #ef4444; box-shadow: 0 0 15px rgba(239,68,68,0.3); } .card-techie { border-left: 4px solid #3b82f6; } .card-techie:hover { background: rgba(59, 130, 246, 0.1); border-color: #3b82f6; box-shadow: 0 0 15px rgba(59,130,246,0.3); } .card-medic { border-left: 4px solid #f8fafc; } .card-medic:hover { background: rgba(248, 250, 252, 0.1); border-color: #f8fafc; box-shadow: 0 0 15px rgba(248,250,252,0.3); } .card-smuggler { border-left: 4px solid #f59e0b; } .card-smuggler:hover { background: rgba(245, 158, 11, 0.1); border-color: #f59e0b; box-shadow: 0 0 15px rgba(245,158,11,0.3); } .card-heavy { border-left: 4px solid #a855f7; } .card-heavy:hover { background: rgba(168, 85, 247, 0.1); border-color: #a855f7; box-shadow: 0 0 15px rgba(168,85,247,0.3); } .card-botanist { border-left: 4px solid #22c55e; } .card-botanist:hover { background: rgba(34, 197, 94, 0.1); border-color: #22c55e; box-shadow: 0 0 15px rgba(34,197,94,0.3); } .card-broadcaster { border-left: 4px solid #f97316; } .card-broadcaster:hover { background: rgba(249, 115, 22, 0.1); border-color: #f97316; box-shadow: 0 0 15px rgba(249,115,22,0.3); } .card-nomad { border-left: 4px solid #94a3b8; } .card-nomad:hover { background: rgba(148, 163, 184, 0.1); border-color: #94a3b8; box-shadow: 0 0 15px rgba(148,163,184,0.3); } .card-mutated { border-left: 4px solid #84cc16; } .card-mutated:hover { background: rgba(132, 204, 22, 0.1); border-color: #84cc16; box-shadow: 0 0 15px rgba(132,204,22,0.3); } .deploy-btn { display: block; width: 100%; background: rgba(0, 255, 102, 0.1); border: 2px solid #00ff66; color: #00ff66 !important; padding: 18px; font-size: 1.3rem; font-weight: bold; letter-spacing: 4px; text-decoration: none !important; border-radius: 4px; box-shadow: 0 0 15px rgba(0, 255, 102, 0.3); transition: all 0.3s ease; text-align: center; } .deploy-btn:hover { background: #00ff66; color: #000 !important; box-shadow: 0 0 35px rgba(0, 255, 102, 0.8); } </style> <div class="neon-panel"> <div class="neon-header"> <h2 style="color: #00ff66; margin: 0; letter-spacing: 4px; text-shadow: 0 0 15px rgba(0,255,102,0.8); font-size: 2rem;">[ NEW OPERATOR REGISTRATION ]</h2> <div style="color: #fbbf24; font-size: 1rem; margin-top: 10px; letter-spacing: 2px;">ENTER PERSONAL IDENTIFICATION DATA.</div> </div> <!-- KİMLİK BİLGİLERİ --> <div class="neon-section" style="border-left: 4px solid #00ff66;"> <strong style="color: #00ff66; font-size: 1.2rem; text-shadow: 0 0 8px #00ff66;">> INPUT DEMOGRAPHICS:</strong> <div style="display: flex; flex-wrap: wrap; gap: 25px; margin-top: 20px;"> <div style="display: flex; flex-direction: column; flex: 1; min-width: 200px;"> <span style="color:#34d399; font-size:0.9rem; margin-bottom:8px; font-weight:bold;">DESIGNATION (NAME)</span> <<textbox "$playerName" "">> </div> <div style="display: flex; flex-direction: column; width: 150px;"> <span style="color:#34d399; font-size:0.9rem; margin-bottom:8px; font-weight:bold;">GENDER</span> <<listbox "$playerGender">> <<option "Male">> <<option "Female">> <<option "Classified">> <</listbox>> </div> <div style="display: flex; flex-direction: column; width: 100px;"> <span style="color:#34d399; font-size:0.9rem; margin-bottom:8px; font-weight:bold;">AGE (18+)</span> <<numberbox "$playerAge" 24>> </div> </div> </div> <!-- GOOGLE MAPS LOKASYON SEÇİMİ --> <div class="neon-section" style="border-left: 4px solid #3b82f6;"> <strong style="color: #38bdf8; font-size: 1.2rem; text-shadow: 0 0 8px #38bdf8;">> DEPLOYMENT ZONE (REAL-WORLD LINK):</strong> <p style="color: #94a3b8; font-size: 0.95rem; margin-bottom: 15px; margin-top: 10px;">Enter your target city or region to initiate a satellite scan.</p> <div style="display: flex; gap: 15px; margin-bottom: 20px; align-items: center; flex-wrap: wrap;"> <span style="color:#38bdf8; font-family:monospace; font-weight:bold;">CITY/REGION:</span> <<textbox "$startingCity" "Katowice">> @@color:#0f172a;background:#38bdf8;border:none;padding:10px 20px;font-weight:bold;cursor:pointer;border-radius:2px;box-shadow:0 0 15px rgba(56,189,248,0.5);<<button "SCAN COORDINATES">> <<set _mapUrl to "https://maps.google.com/maps?q=" + $startingCity + "&t=k&z=10&ie=UTF8&iwloc=&output=embed">> <<replace "#map-container">> <iframe width="100%" height="300" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" @src="_mapUrl" style="filter: contrast(120%) saturate(120%);"></iframe> <</replace>> <</button>>@@ </div> <div id="map-container" style="border: 2px solid #38bdf8; padding: 2px; background: #000; box-shadow: 0 0 20px rgba(56,189,248,0.3); border-radius: 4px; overflow:hidden;"> <iframe width="100%" height="300" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" style="filter: contrast(120%) saturate(120%);" src="https://maps.google.com/maps?q=Katowice&t=k&z=10&ie=UTF8&iwloc=&output=embed"></iframe> </div> </div> <!-- GEÇMİŞ (SINIF) SEÇİMİ VE PERK AÇIKLAMALARI --> <div class="neon-section" style="border-left: 4px solid #f59e0b; background: rgba(20, 10, 0, 0.4);"> <strong style="color: #fbbf24; font-size: 1.2rem; text-shadow: 0 0 8px #fbbf24;">> SELECT FORMER OCCUPATION:</strong> <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 15px; margin-top: 20px;"> <label class="class-card card-scavenger"> <<radiobutton "$playerBackground" "Scavenger" checked>> <strong style="color:#10b981; font-size:1.15rem; text-shadow: 0 0 5px rgba(16,185,129,0.5);">The Scavenger</strong> <div style="margin-top:10px; font-size:0.95rem; color:#cbd5e1; font-weight:bold;">+20 Scrap, +10 Wood.</div> <div style="margin-top:10px; padding-top:10px; border-top: 1px dashed #334155; font-size:0.85rem; color:#34d399; line-height: 1.5;"><strong>[PERK: Expert Forager]</strong><br><span style="color:#94a3b8;">Free Camp Foraging grants +1 extra item. Outer Map Encounters grant +1 extra loot.</span></div> </label> <label class="class-card card-mercenary"> <<radiobutton "$playerBackground" "Mercenary">> <strong style="color:#ef4444; font-size:1.15rem; text-shadow: 0 0 5px rgba(239,68,68,0.5);">The Mercenary</strong> <div style="margin-top:10px; font-size:0.95rem; color:#cbd5e1; font-weight:bold;">+20 Max HP, Combat Knife.</div> <div style="margin-top:10px; padding-top:10px; border-top: 1px dashed #334155; font-size:0.85rem; color:#fca5a5; line-height: 1.5;"><strong>[PERK: Tactical Retreat]</strong><br><span style="color:#94a3b8;">100% Safe Flee chance in combat, no HP penalty.</span></div> </label> <label class="class-card card-techie"> <<radiobutton "$playerBackground" "Techie">> <strong style="color:#3b82f6; font-size:1.15rem; text-shadow: 0 0 5px rgba(59,130,246,0.5);">The Techie</strong> <div style="margin-top:10px; font-size:0.95rem; color:#cbd5e1; font-weight:bold;">+20 Max Stamina, +5 Tech Data.</div> <div style="margin-top:10px; padding-top:10px; border-top: 1px dashed #334155; font-size:0.85rem; color:#7dd3fc; line-height: 1.5;"><strong>[PERK: Master Crafter]</strong><br><span style="color:#94a3b8;">Crafts items at +1 Base Rarity. Unlocks exclusive RED 'Godlike' tier.</span></div> </label> <label class="class-card card-medic"> <<radiobutton "$playerBackground" "Field Medic">> <strong style="color:#f8fafc; font-size:1.15rem; text-shadow: 0 0 5px rgba(248,250,252,0.5);">The Field Medic</strong> <div style="margin-top:10px; font-size:0.95rem; color:#cbd5e1; font-weight:bold;">+5 Medicine, +10 Cloth.</div> <div style="margin-top:10px; padding-top:10px; border-top: 1px dashed #334155; font-size:0.85rem; color:#e2e8f0; line-height: 1.5;"><strong>[PERK: Safe Flee]</strong><br><span style="color:#94a3b8;">Always able to retreat from hostile encounters without taking damage.</span></div> </label> <label class="class-card card-smuggler"> <<radiobutton "$playerBackground" "Smuggler">> <strong style="color:#f59e0b; font-size:1.15rem; text-shadow: 0 0 5px rgba(245,158,11,0.5);">The Smuggler</strong> <div style="margin-top:10px; font-size:0.95rem; color:#cbd5e1; font-weight:bold;">+50 Scrip, +10 Max Stamina.</div> <div style="margin-top:10px; padding-top:10px; border-top: 1px dashed #334155; font-size:0.85rem; color:#fde047; line-height: 1.5;"><strong>[PERK: Human Trafficker]</strong><br><span style="color:#94a3b8;">Finds double survivors on missions. 50% Off Black Market recipes.</span></div> </label> <label class="class-card card-heavy"> <<radiobutton "$playerBackground" "Heavy Gunner">> <strong style="color:#a855f7; font-size:1.15rem; text-shadow: 0 0 5px rgba(168,85,247,0.5);">The Heavy Gunner</strong> <div style="margin-top:10px; font-size:0.95rem; color:#cbd5e1; font-weight:bold;">Scrap Launcher, +15 Scrap.</div> <div style="margin-top:10px; padding-top:10px; border-top: 1px dashed #334155; font-size:0.85rem; color:#d8b4fe; line-height: 1.5;"><strong>[PERK: Scrap Artillery]</strong><br><span style="color:#94a3b8;">Scrap Launcher uses 1 Scrap per shot. 50% chance to hit for massive dmg.</span></div> </label> <label class="class-card card-botanist"> <<radiobutton "$playerBackground" "Botanist">> <strong style="color:#22c55e; font-size:1.15rem; text-shadow: 0 0 5px rgba(34,197,94,0.5);">The Botanist</strong> <div style="margin-top:10px; font-size:0.95rem; color:#cbd5e1; font-weight:bold;">+15 Food, +15 Water.</div> <div style="margin-top:10px; padding-top:10px; border-top: 1px dashed #334155; font-size:0.85rem; color:#86efac; line-height: 1.5;"><strong>[PERK: Green Thumb]</strong><br><span style="color:#94a3b8;">Starts the game with the Sanctuary Greenhouse already unlocked.</span></div> </label> <label class="class-card card-broadcaster"> <<radiobutton "$playerBackground" "Broadcaster">> <strong style="color:#f97316; font-size:1.15rem; text-shadow: 0 0 5px rgba(249,115,22,0.5);">The Broadcaster</strong> <div style="margin-top:10px; font-size:0.95rem; color:#cbd5e1; font-weight:bold;">+10 Tech Data, +20 Scrip.</div> <div style="margin-top:10px; padding-top:10px; border-top: 1px dashed #334155; font-size:0.85rem; color:#fdba74; line-height: 1.5;"><strong>[PERK: Signal Intercept]</strong><br><span style="color:#94a3b8;">Generates +1 Tech Data daily. Access to hidden frequencies.</span></div> </label> <label class="class-card card-nomad"> <<radiobutton "$playerBackground" "Nomad">> <strong style="color:#94a3b8; font-size:1.15rem; text-shadow: 0 0 5px rgba(148,163,184,0.5);">The Nomad</strong> <div style="margin-top:10px; font-size:0.95rem; color:#cbd5e1; font-weight:bold;">+30 Max Stamina, +5 Cloth.</div> <div style="margin-top:10px; padding-top:10px; border-top: 1px dashed #334155; font-size:0.85rem; color:#e2e8f0; line-height: 1.5;"><strong>[PERK: Wasteland Walker]</strong><br><span style="color:#94a3b8;">Map exploration and outside actions cost 50% less Stamina.</span></div> </label> <label class="class-card card-mutated"> <<radiobutton "$playerBackground" "Mutated Anomaly">> <strong style="color:#84cc16; font-size:1.15rem; text-shadow: 0 0 5px rgba(132,204,22,0.5);">The Mutated</strong> <div style="margin-top:10px; font-size:0.95rem; color:#cbd5e1; font-weight:bold;">-40 Max HP, +40 Max Stamina.</div> <div style="margin-top:10px; padding-top:10px; border-top: 1px dashed #334155; font-size:0.85rem; color:#d9f99d; line-height: 1.5;"><strong>[PERK: Toxic Blood]</strong><br><span style="color:#94a3b8;">Inflicts passive Toxic damage over time. 100% Safe Flee.</span></div> </label> </div> </div> <!-- OYUNA BAŞLAMA BUTONU --> <div style="text-align: center; margin-top: 40px;"> <div id="char-error" style="color: #ef4444; font-weight: bold; font-size: 1rem; margin-bottom: 15px; height: 20px; text-shadow: 0 0 5px #ef4444;"></div> <<link '<span class="deploy-btn">DEPLOY TO SECTOR</span>'>> <<if $playerName.trim() eq "">> <<replace "#char-error">>ERROR: DESIGNATION (NAME) REQUIRED.<</replace>> <<elseif $startingCity.trim() eq "">> <<replace "#char-error">>ERROR: DEPLOYMENT ZONE REQUIRED.<</replace>> <<else>> <<if $playerAge lt 18>><<set $playerAge to 18>><</if>> <<if $playerBackground eq "Scavenger">> <<set $materials.scrap += 20, $materials.wood += 10, $playerClass to "The Scavenger">> <<elseif $playerBackground eq "Mercenary">> <<set $maxHp += 20, $hp += 20, $equipment.rightHand to "Common Combat Knife", $playerClass to "The Mercenary">> <<elseif $playerBackground eq "Techie">> <<set $materials.techData += 5, $maxStamina += 20, $stamina += 20, $playerClass to "The Techie">> <<elseif $playerBackground eq "Field Medic">> <<set $materials.medicine += 5, $materials.cloth += 10, $playerClass to "The Field Medic">> <<elseif $playerBackground eq "Smuggler">> <<set $materials.scrip += 50, $maxStamina += 10, $stamina += 10, $playerClass to "The Smuggler">> <<elseif $playerBackground eq "Heavy Gunner">> <<set $equipment.rightHand to "Common Scrap Launcher", $materials.scrap += 15, $playerClass to "The Heavy Gunner">> <<elseif $playerBackground eq "Botanist">> <<set $materials.food += 15, $materials.water += 15, $playerClass to "The Botanist">> <<elseif $playerBackground eq "Broadcaster">> <<set $materials.techData += 10, $materials.scrip += 20, $playerClass to "The Broadcaster">> <<elseif $playerBackground eq "Nomad">> <<set $maxStamina += 30, $stamina += 30, $materials.cloth += 5, $playerClass to "The Nomad">> <<elseif $playerBackground eq "Mutated Anomaly">> <<set $maxHp -= 40, $hp -= 40, $maxStamina += 40, $stamina += 40, $materials.rawMeat += 5, $playerClass to "The Mutated">> <</if>> <<set $hasSanctuary to false>> <<run window.setup.updateSidebar()>> <<goto "Prologue">> <<endif>> <</link>> </div> </div> <</nobr>>
<<nobr>> <div style="background-color: #050a05; padding: 25px; border: 2px solid #ffaa00; border-radius: 8px; font-family: 'Courier New', monospace; box-shadow: 0 0 20px rgba(255, 170, 0, 0.1); max-width: 700px; margin: 5vh auto;"> <div style="text-align: center; border-bottom: 1px dashed #ffaa00; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #ffaa00; margin: 0; letter-spacing: 3px; text-shadow: 0 0 10px rgba(255,170,0,0.5);">[ SYSTEM BOOT SEQUENCE ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #aaa;">NEURAL LINK ESTABLISHED</div> </div> <div style="color: #ddd; font-size: 1rem; line-height: 1.6; margin-bottom: 20px;"> <p>Wake up, Operator <span style="color:#00ff00; font-weight:bold;"><<print $playerName>></span>.</p> <p>The world as you knew it is gone. You are standing on the edge of the <span style="color:#3498db; font-weight:bold;"><<print $startingCity>></span> sector. The air is toxic, and resources are scarce.</p> <strong style="color: #ffaa00; font-size: 1.1rem; display:block; margin-top: 20px; border-left: 3px solid #ffaa00; padding-left: 10px;">> BASIC PROTOCOLS:</strong> <ul style="margin-top: 10px; color: #aaa; font-family: 'Segoe UI', sans-serif;"> <li style="margin-bottom: 8px;">Your <strong style="color:#f87171;">HP (Health)</strong> determines your life. Permadeath is active.</li> <li style="margin-bottom: 8px;">Actions consume <strong style="color:#38bdf8;">STAMINA</strong>. When it hits zero, you must rest.</li> <li style="margin-bottom: 8px;">Starvation will slowly kill you. You need <strong style="color:#fbbf24;">FOOD</strong> to survive.</li> </ul> </div> <div style="text-align: center; margin-top: 30px; padding: 12px; border: 1px solid #ffaa00; background: rgba(255, 170, 0, 0.15); border-radius: 4px; box-shadow: 0 0 10px rgba(255, 170, 0, 0.2);"> <<link '<span style="color:#ffaa00; font-weight:bold; letter-spacing:2px; text-decoration:none;">ACKNOWLEDGE PROTOCOLS</span>' "Tutorial 1">><</link>> </div> </div> <</nobr>>
<<nobr>> <<set $currentMenu to "Camp">> <<run window.setup.updateSidebar()>><<run setup.recalcStats()>> <<if ndef $storyStage>><<set $storyStage to 1>><</if>><<if ndef $startingCity>><<set $startingCity to "Katowice">><</if>><<if ndef $campLevel>><<set $campLevel to 1>><</if>> <<set _bgUrl to "images/locations/sanctuary_level_" + $campLevel + ".jpg">> <<set _bgStyle to "background: linear-gradient(rgba(0, 5, 0, 0.5), rgba(0, 10, 5, 0.98)), url('" + _bgUrl + "') center/cover no-repeat;">> <<set _coreClass to "camp-core">> <<if $storyStage eq 1>> <<set _coreClass to "camp-core camp-core-alarm">> <<elseif ndef $tutorialRope or $tutorialRope eq false>> <<set _coreClass to "camp-core camp-core-grom">> <</if>> <style> .ashen-veil-world { min-height: 100vh; display: flex; flex-direction: row; justify-content: space-between; align-items: stretch; gap: 20px; padding: 20px; border-radius: 8px; box-sizing: border-box; width: 100%; margin: 0; } .ad-banner { flex: 0 0 160px; width: 160px; background: rgba(5, 10, 5, 0.9); border-left: 1px dashed #334155; border-right: 1px dashed #334155; display: flex; flex-direction: column; justify-content: center; align-items: center; color: #475569; font-family: 'Courier New', monospace; text-align: center; padding: 15px; position: relative; } .ad-banner::before { content: "ADVERTISEMENT"; font-size: 0.7rem; letter-spacing: 2px; position: absolute; top: 15px; width: 100%; text-align: center; color: #334155; } .camp-core { flex: 1; background: rgba(5, 15, 5, 0.88); border-left: 2px solid #34d399; border-right: 2px solid #34d399; padding: 40px; font-family: 'Courier New', monospace; display: flex; flex-direction: column; overflow-y: auto; } .camp-core-alarm { border-color: #ef4444; background: rgba(20, 5, 5, 0.92); box-shadow: 0 0 50px rgba(239, 68, 68, 0.2), inset 0 0 30px rgba(0,0,0,0.8); } .camp-core-grom { border-color: #fbbf24; background: rgba(20, 15, 5, 0.92); box-shadow: 0 0 50px rgba(251, 191, 36, 0.15), inset 0 0 30px rgba(0,0,0,0.8); } </style> <div class="ashen-veil-world" @style="_bgStyle"> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div></div> <div @class="_coreClass"> <div style="text-align: center; border-bottom: 1px dashed <<if $storyStage eq 1>>#ef4444<<elseif ndef $tutorialRope or $tutorialRope eq false>>#fbbf24<<else>>#047857<</if>>; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: <<if $storyStage eq 1>>#ef4444<<elseif ndef $tutorialRope or $tutorialRope eq false>>#fbbf24<<else>>#34d399<</if>>; margin: 0; letter-spacing: 5px;">[ <<if $storyStage eq 1>>⚠️ NETWORK OVERRIDE DETECTED ⚠️<<elseif ndef $tutorialRope or $tutorialRope eq false>>INCOMING TRANSMISSION<<else>>S.A.N.C.T.U.A.R.Y. COMMAND<</if>> ]</h2> <div style="margin-top: 10px; font-size: 0.95rem; color: <<if $storyStage eq 1>>#fca5a5<<elseif ndef $tutorialRope or $tutorialRope eq false>>#fcd34d<<else>>#a3e635<</if>>; letter-spacing: 2px;"><<if $storyStage eq 1>>UNKNOWN FREQUENCY INTERCEPTION<<elseif ndef $tutorialRope or $tutorialRope eq false>>LOCAL RADIO UPLINK<<else>>LEVEL <<print $campLevel>> UNDERGROUND BUNKER<</if>></div> </div> <<if $storyStage eq 1>> <div style="background: rgba(0, 0, 0, 0.8); border: 1px solid #ef4444; padding: 30px; border-radius: 6px; margin-bottom: 25px;"> <div style="color: #ef4444; font-weight: bold; font-size: 1.2rem; margin-bottom: 20px; letter-spacing: 2px;">> INCOMING ENCRYPTED TRANSMISSION...</div> <div style="color: #cbd5e1; font-size: 1.05rem; line-height: 1.8; margin-bottom: 25px; border-left: 4px solid #ef4444; padding-left: 20px;"> "I don't know who you are, but firing up those old military generators just punched a hole straight through the cold-bloods' (Reptilians) core frequency grid. Hell of a move, but right now you're glowing like a flare on their long-range radars.<br><br>If you think those steel doors are going to protect you when they come to melt 'em down with acid, you're in for a nasty surprise. If you want to stay breathing, drop down into the old <span style="color:#ef4444; font-weight:bold;"><<print $startingCity>></span> rail tunnels and meet me at the coordinates attached. Come alone. Make sure nobody's trailing your signal." </div> <div style="text-align: right; color: #f87171; font-weight: bold; font-style: italic; margin-bottom: 30px; font-size: 1.1rem;">— Cipher</div> <div style="text-align: center; border: 2px solid #ef4444; background: rgba(239,68,68,0.1); border-radius: 4px; padding: 15px;"> @@color:#ef4444;font-weight:bold;letter-spacing:3px;font-size:1.3rem;text-transform:uppercase;<<link "ACCEPT TRANSMISSION & INITIALIZE SANCTUARY" "Camp">> <<set $storyStage to 2>><<set $activeQuest to "Meet Cipher">><<run window.setup.updateSidebar()>> <</link>>@@ </div> </div> <<elseif ndef $tutorialRope or $tutorialRope eq false>> <div style="background: rgba(10, 5, 0, 0.8); border: 1px solid #fbbf24; border-radius: 8px; padding: 30px; margin-bottom: 25px;"> <div style="color: #fbbf24; font-weight: 900; font-size: 1.2rem; letter-spacing: 3px; margin-bottom: 20px; border-bottom: 1px dashed #fbbf24; padding-bottom: 15px;">[ GROM, THE PIT MASTER ]</div> <div style="color: #cbd5e1; font-size: 1.05rem; line-height: 1.8; margin-bottom: 20px; min-height: 100px;"> <div style="float: left; margin-right: 20px; margin-bottom: 10px; width: 100px; height: 100px; background-image: url('images/npcs/all/enemy_grom.jpg'); background-size: cover; background-position: center; border: 2px solid #fbbf24; border-radius: 4px;"></div> <span style="color: #fbbf24; font-weight: bold; font-size: 1.1rem;">"Hey boss."</span> The raspy voice crackles over the local radio. <br><br> "Now that the Sanctuary is running, you need to think bigger. Don't just slaughter every Vanguard Reptilian or hostile Raider you see.<br><br> Go to the <strong style="color: #38bdf8;">Sanctuary Hub</strong> and check the Workshop to craft some <strong style="color: #fbbf24;">Reinforced Rope</strong>. When an enemy is bleeding out and drops below 15 HP, throw the rope and <strong style="color:#ef4444;">CAPTURE</strong> them alive! I left one rope in your stash. Make it count." <div style="clear:both;"></div> </div> <div style="text-align: center; margin-top: 30px; background: rgba(251, 191, 36, 0.1); border: 2px solid #fbbf24; border-radius: 4px; padding: 15px;"> @@color:#fbbf24;font-weight:bold;letter-spacing:3px;font-size:1.3rem;<<link "UNDERSTOOD. TRANSMISSION CLOSED." "Camp">> <<set $tutorialRope to true>><<if ndef $materials.rope>><<set $materials.rope to 0>><</if>><<set $materials.rope += 1>><<set $hasSanctuary to true>><<run window.setup.updateSidebar()>> <</link>>@@ </div> </div> <<else>> <div style="display: flex; flex-wrap: wrap; gap: 20px; margin-bottom: 30px; justify-content: flex-start;"> <!-- 1. SANCTUARY HUB (ANA MERKEZ) --> <div style="background: rgba(5, 40, 25, 0.9); border: 2px solid #10b981; border-radius: 6px; padding: 20px; text-align: center; width: 220px; box-shadow: 0 0 15px rgba(16, 185, 129, 0.3);"> <div style="color: #34d399; font-size: 1.1rem; font-weight: bold; margin-bottom: 10px;">🏰 SANCTUARY HUB</div> @@color:#34d399;font-weight:bold;<<link "OPEN MANAGEMENT" "Sanctuary Hub">><</link>>@@ </div> <!-- 2. WASTELAND GATES --> <div style="background: rgba(0, 0, 0, 0.85); border: 1px solid #047857; border-radius: 6px; padding: 20px; text-align: center; width: 220px;"> <div style="color: #34d399; font-size: 1.1rem; font-weight: bold; margin-bottom: 10px;">🗺️ WASTELAND GATES</div> @@color:#34d399;font-weight:bold;<<link "OPEN GATES (MAP)" "Map">><</link>>@@ </div> <!-- 3. REST QUARTERS --> <div style="background: rgba(0, 0, 0, 0.85); border: 1px solid #d97706; border-radius: 6px; padding: 20px; text-align: center; width: 220px;"> <div style="color: #fbbf24; font-size: 1.1rem; font-weight: bold; margin-bottom: 10px;">🛌 REST QUARTERS</div> @@color:#fbbf24;font-weight:bold;<<link "ENTER QUARTERS" "Rest">><</link>>@@ </div> <!-- 4. COMM-SERVER --> <div style="background: rgba(0, 0, 0, 0.85); border: 1px solid #7e22ce; border-radius: 6px; padding: 20px; text-align: center; width: 220px;"> <div style="color: #c084fc; font-size: 1.1rem; font-weight: bold; margin-bottom: 10px;">📡 COMM-SERVER</div> @@color:#c084fc;font-weight:bold;<<link "ACCESS TERMINAL" "Comms">><</link>>@@ </div> </div> <!-- GÜVENLİ FORAGING KUTUSU --> <div style="background: rgba(6, 78, 59, 0.4); border: 1px solid #059669; border-radius: 6px; padding: 25px;"> <div style="color: #34d399; font-size: 1.1rem; font-weight: bold;">🌿 SAFE ZONE FORAGING</div> <div style="padding: 12px; border: 1px solid #10b981; background: rgba(16, 185, 129, 0.2); text-align: center; margin-top: 15px;"> @@color:#34d399;font-weight:bold;<<link "SEARCH CAMP PERIMETER">> <<set _roll to random(1, 4)>><<set _extra to "">><<set _amt to 1>> <<if $perkScavengerClass is true>><<set _extra to " <span style='color:#a3e635;'>(+1 Scavenger Bonus)</span>"><<set _amt to 2>><</if>> <<if _roll eq 1>> <<set $materials.scrap += _amt>> <<set _log to "You slowly push aside a collapsed concrete pillar near the perimeter fence. Hidden beneath the irradiated rubble, you discover " + _amt + " usable piece(s) of Scrap metal." + _extra>> <<elseif _roll eq 2>> <<set $materials.wood += _amt>> <<set _log to "Navigating through the toxic mist, you find a withered, dead tree that hasn't completely rotted. You chop it down and salvage " + _amt + " block(s) of Wood." + _extra>> <<elseif _roll eq 3>> <<set $materials.water += _amt>> <<set _log to "You locate an old rusted pipe slowly leaking clear liquid. After testing it for radiation, you successfully collect " + _amt + " flask(s) of clean Water." + _extra>> <<else>> <<set $materials.berries += _amt>> <<set _log to "Deep in the shadows of the bunker's exterior, you spot a strange glowing bush. You carefully harvest " + _amt + " handful(s) of edible Berries." + _extra>> <<endif>> <<run window.setup.updateSidebar()>> <<run Dialog.setup("FORAGING RESULT")>> <<run Dialog.wiki("<div style='display:flex; justify-content:center; align-items:center; gap:20px; padding:10px;'><div style='width:160px; height:160px; background:#1e293b; border:1px dashed #475569; display:flex; align-items:center; justify-content:center; color:#64748b; font-size:0.8rem;'>[160x160 AD]</div><div style='flex:1; max-width:400px; padding:20px; text-align:justify; color:#d1d5db; font-family:monospace; line-height:1.6; border:1px solid #059669; background:rgba(0,0,0,0.8); border-left:4px solid #34d399;'>" + _log + "</div><div style='width:160px; height:160px; background:#1e293b; border:1px dashed #475569; display:flex; align-items:center; justify-content:center; color:#64748b; font-size:0.8rem;'>[160x160 AD]</div></div><div style='text-align:center; margin-top:15px;'><span id='safe-close-wrapper'></span></div>")>> <<run Dialog.open()>> <<script>> setTimeout(function() { let $wrap = document.getElementById('safe-close-wrapper'); if ($wrap) { jQuery($wrap).empty().wiki('@@color:#fff;font-weight:bold;background:#059669;padding:8px 20px;border-radius:4px;cursor:pointer;display:inline-block;<<link "CONTINUE">><<run Dialog.close()>><</link>>@@'); } }, 50); <</script>> <</link>>@@ </div> </div> <<endif>> </div> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div></div> </div> <</nobr>>
<<nobr>> <<if ndef $materials>><<set $materials to { scrap: 0, wood: 0, cloth: 0, iron: 0, medicine: 0, food: 0, rawMeat: 0, berries: 0, water: 0, ammo: 0, rope: 0, scrip: 0 }>><</if>> <<if ndef $equipment>><<set $equipment to { headgear: 'None', chest: 'None', legs: 'None', boots: 'None', gloves: 'None', rightHand: 'None', offHand: 'None', leftHand: 'None' }>><</if>> <<if ndef $level>><<set $level to 1>><</if>> <<if ndef $xp>><<set $xp to 0>><</if>> <<if ndef $xpMax>><<set $xpMax to 100>><</if>> <<if ndef $hasSanctuary>><<set $hasSanctuary to false>><</if>> <div style="margin-bottom: 20px; border: 2px dashed #ef4444; background: rgba(239, 68, 68, 0.15); padding: 15px; text-align: center; border-radius: 6px;"> <div style="color: #ef4444; font-weight: 900; font-size: 0.9rem; margin-bottom: 10px; letter-spacing: 2px;">[ DEV TOOLS ]</div> <div style="background: #ef4444; padding: 10px; border-radius: 4px;"> <<link '<span style="color: #000000; font-weight: 900; letter-spacing: 1px;">ACTIVATE GOD MODE</span>'>> <<set $godMode to true>> <<set $equipment.headgear to "Legendary Apex Crown">> <<set $equipment.chest to "Legendary Juggernaut Shell">> <<set $equipment.legs to "Legendary Wasteland Lord Tassets">> <<set $equipment.boots to "Legendary Titan Treads">> <<set $equipment.gloves to "Legendary Overlord Grips">> <<set $equipment.offHand to "Legendary Aegis Core">> <<set $equipment.rightHand to "Legendary Gauss Cannon">> <<set $maxHp to 9999, $hp to 9999>> <<set $maxStamina to 9999, $stamina to 9999>> <<set $materials.scrap to 999, $materials.rope to 99, $materials.scrip to 9999>> <<run window.setup.updateSidebar()>> <<goto passage()>> <</link>> </div> </div> <div style="text-align:center; margin-bottom:15px; font-family: 'Segoe UI', Tahoma, sans-serif;"> <div style="color:#2ecc71; font-weight:900; font-size:1.2rem; letter-spacing:1px; text-transform: uppercase;"><<print $playerName>></div> <div style="color:#94a3b8; font-size:0.75rem; font-weight: bold; text-transform:uppercase; margin-top:2px;"><<print $playerBackground>></div> <div style="color:#64748b; font-size:0.75rem; margin-top:6px; font-weight: bold;">SECTOR: <<print $startingCity>></div> <div style="color:#64748b; font-size:0.75rem; font-weight: bold;">DAY <<print $day>> | WEATHER: <<print $weather>></div> </div> <<if $hasSanctuary is true>> <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 20px; text-align: center;"> <a data-passage="Map" style="display: flex; flex-direction: column; align-items: center; justify-content: center; background: #1e293b; border: 1px solid #334155; padding: 10px 5px; color: #cbd5e1; text-decoration: none; border-radius: 6px; cursor: pointer;"><span style="font-size: 1.2rem; margin-bottom: 3px;">🗺️</span><span style="font-size: 0.7rem; font-weight: bold;">MAP</span></a> <<button '<div style="display: flex; flex-direction: column; align-items: center;"><span style="font-size: 1.2rem; margin-bottom: 3px;">👤</span><span style="font-size: 0.7rem; font-weight: bold;">STATS</span></div>'>><<run Dialog.setup("OPERATOR DOSSIER")>><<run Dialog.wiki(Story.get("Character").processText())>><<run Dialog.open()>><</button>> <<button '<div style="display: flex; flex-direction: column; align-items: center;"><span style="font-size: 1.2rem; margin-bottom: 3px;">🎒</span><span style="font-size: 0.7rem; font-weight: bold;">INVENTORY</span></div>'>><<run Dialog.setup("CARGO & LOADOUT")>><<run Dialog.wiki(Story.get("Inventory").processText())>><<run Dialog.open()>><</button>> <<button '<div style="display: flex; flex-direction: column; align-items: center;"><span style="font-size: 1.2rem; margin-bottom: 3px;">📜</span><span style="font-size: 0.7rem; font-weight: bold;">QUESTS</span></div>'>><<run Dialog.setup("ACTIVE DIRECTIVES")>><<run Dialog.wiki(Story.get("Quests").processText())>><<run Dialog.open()>><</button>> <a data-passage="Camp" style="grid-column: span 2; display: flex; flex-direction: column; align-items: center; background: #0f766e; border: 1px solid #115e59; padding: 10px; color: #ccfbf1; text-decoration: none; border-radius: 6px; cursor: pointer; margin-top: 5px;"><span style="font-size: 1.2rem; margin-bottom: 3px;">🏰</span><span style="font-size: 0.75rem; font-weight: bold;">COMMAND CENTER</span></a> </div> <<else>> <div style="background: rgba(239,68,68,0.1); border: 1px dashed #ef4444; padding: 15px; margin-bottom: 20px; border-radius: 6px; text-align: center;"><span style="color: #ef4444; font-size: 0.85rem; font-weight: bold;">[ SYSTEM LOCKED ]</span></div> <</if>> <div style="margin-bottom:15px; background: #0f172a; padding:12px; border:1px solid #1e293b; border-radius:6px;"> <div style="color:#fca5a5; font-size:0.75rem; font-weight:bold; margin-bottom:4px;">❤️ HP (<<print $hp>> / <<print $maxHp>>)</div> <div style="width: 100%; background: #000; height: 8px; border-radius: 4px; margin-bottom: 10px; border: 1px solid #7f1d1d;"><div style="width: <<print Math.clamp(($hp / $maxHp) * 100, 0, 100)>>%; background: #ef4444; height: 100%; border-radius: 4px;"></div></div> <div style="color:#bae6fd; font-size:0.75rem; font-weight:bold; margin-bottom:4px;">⚡ STAMINA (<<print $stamina>> / <<print $maxStamina>>)</div> <div style="width: 100%; background: #000; height: 8px; border-radius: 4px; margin-bottom: 10px; border: 1px solid #0369a1;"><div style="width: <<print Math.clamp(($stamina / $maxStamina) * 100, 0, 100)>>%; background: #38bdf8; height: 100%; border-radius: 4px;"></div></div> <div style="color:#fde68a; font-size:0.75rem; font-weight:bold; margin-bottom:4px;">🍖 FOOD (<<print $hunger>>%)</div> <div style="width: 100%; background: #000; height: 8px; border-radius: 4px; border: 1px solid #b45309;"><div style="width: <<print Math.clamp($hunger, 0, 100)>>%; background: #fbbf24; height: 100%; border-radius: 4px;"></div></div> </div> <div style="margin-bottom:15px; background: rgba(52, 211, 153, 0.05); padding:12px; border:1px dashed #047857; border-radius:6px;"> <<if $xp gte $xpMax>> <div style="text-align: center; margin-bottom: 8px;"><span style="color: #fbbf24; font-size: 0.85rem; font-weight: bold; text-shadow: 0 0 5px #fbbf24;">MAX XP REACHED!</span></div> <<button '<div style="height: 40px; background: #059669; border: 1px solid #34d399; border-radius: 4px; display: flex; justify-content: center; align-items: center;"><span style="color: #fff; font-size: 1rem; font-weight: 900; letter-spacing: 2px;">LEVEL UP</span></div>'>><<run Dialog.setup("LEVEL UP / ALLOCATE POINTS")>><<run Dialog.wiki(Story.get("LevelUp").processText())>><<run Dialog.open()>><</button>> <<else>> <div style="display: flex; justify-content: space-between; font-size: 0.8rem; color: #34d399; font-weight: bold; margin-bottom: 8px;"><span>✨ LEVEL <<print $level>></span><span><<print $xp>> / <<print $xpMax>> XP</span></div> <div style="width: 100%; background-color: #0f172a; border-radius: 4px; border: 1px solid #047857; height: 10px; overflow: hidden;"><div style="width: <<print Math.clamp(($xp / $xpMax) * 100, 0, 100)>>%; background-color: #34d399; height: 100%; border-radius: 2px; box-shadow: 0 0 8px rgba(52, 211, 153, 0.6);"></div></div> <</if>> </div> <</nobr>>
<<nobr>> <<set $currentMenu to "Character">> <<run window.setup.updateSidebar()>> <<run setup.recalcStats()>> <<set _perkName to "Unknown">><<set _perkDesc to "No data available.">> <<if $playerBackground eq "Scavenger">><<set _perkName to "Expert Forager">><<set _perkDesc to "Free Camp Foraging grants +1 extra item. Outer Map Encounters grant +1 extra loot.">> <<elseif $playerBackground eq "Mercenary">><<set _perkName to "Tactical Retreat">><<set _perkDesc to "100% Safe Flee chance in combat, no HP penalty.">> <<elseif $playerBackground eq "Techie">><<set _perkName to "Master Crafter">><<set _perkDesc to "Crafts items at +1 Base Rarity. Unlocks exclusive RED 'Godlike' tier.">> <<elseif $playerBackground eq "Field Medic">><<set _perkName to "Safe Flee">><<set _perkDesc to "Always able to retreat without taking damage.">> <<elseif $playerBackground eq "Smuggler">><<set _perkName to "Human Trafficker">><<set _perkDesc to "Finds double survivors. 50% Off Black Market recipes.">> <<elseif $playerBackground eq "Heavy Gunner">><<set _perkName to "Scrap Artillery">><<set _perkDesc to "Scrap Launcher uses 1 Scrap per shot. 50% chance to hit for massive dmg.">> <<elseif $playerBackground eq "Botanist">><<set _perkName to "Green Thumb">><<set _perkDesc to "Starts the game with the Sanctuary Greenhouse already unlocked.">> <<elseif $playerBackground eq "Broadcaster">><<set _perkName to "Signal Intercept">><<set _perkDesc to "Generates +1 Tech Data daily. Access to hidden frequencies.">> <<elseif $playerBackground eq "Nomad">><<set _perkName to "Wasteland Walker">><<set _perkDesc to "Map exploration and outside actions cost 50% less Stamina.">> <<elseif $playerBackground eq "Mutated Anomaly">><<set _perkName to "Toxic Blood">><<set _perkDesc to "Inflicts passive Toxic damage over time. 100% Safe Flee.">><</if>> <style> .popup-ad-wrapper { display: flex; justify-content: space-between; align-items: stretch; gap: 20px; width: 100%; box-sizing: border-box; } .ad-banner-popup { flex: 0 0 160px; width: 160px; background: rgba(5, 10, 5, 0.9); border: 1px dashed #334155; display: flex; flex-direction: column; justify-content: center; align-items: center; color: #475569; font-family: 'Courier New', monospace; text-align: center; padding: 15px; position: relative; overflow: hidden; border-radius: 4px; box-shadow: 0 0 15px rgba(0,0,0,0.8); } .ad-banner-popup::before { content: "ADVERTISEMENT"; font-size: 0.7rem; letter-spacing: 2px; position: absolute; top: 15px; width: 100%; text-align: center; color: #334155; } .popup-core-content { flex: 1; background-color: #050a05; padding: 25px; border: 2px solid #10b981; border-radius: 8px; font-family: 'Courier New', monospace; box-shadow: 0 0 20px rgba(16, 185, 129, 0.15); box-sizing: border-box; } .dossier-wrapper { display: flex; gap: 25px; } .dossier-avatar { flex: 0 0 220px; display: flex; flex-direction: column; gap: 10px; } .dossier-avatar-img { width: 100%; border: 2px solid #10b981; border-radius: 4px; box-shadow: 0 0 15px rgba(16,185,129,0.3); } .dossier-details { flex: 1; display: flex; flex-direction: column; justify-content: space-between; gap: 15px; } .stat-bar-container { background: #022c22; border: 1px solid #065f46; height: 22px; border-radius: 3px; position: relative; overflow: hidden; margin-top: 5px; } .stat-bar-fill { height: 100%; transition: width 0.3s ease; } .stat-bar-text { position: absolute; top: 0; left: 0; width: 100%; text-align: center; color: #fff; font-size: 0.85rem; font-weight: bold; line-height: 22px; text-shadow: 1px 1px 2px #000; letter-spacing: 1px; } .stat-box { background: rgba(16,185,129,0.05); border: 1px dashed #10b981; padding: 15px; border-radius: 4px; } .stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; } .return-btn-container { text-align: center; margin-top: 25px; } .return-btn-container a { display: inline-block; background: rgba(239, 68, 68, 0.1); border: 2px solid #ef4444; color: #ef4444 !important; padding: 15px 40px; font-size: 1.5rem; font-weight: bold; letter-spacing: 4px; text-decoration: none !important; border-radius: 4px; box-shadow: 0 0 15px rgba(239, 68, 68, 0.3); transition: all 0.3s ease; text-transform: uppercase; } .return-btn-container a:hover { background: #ef4444; color: #000 !important; box-shadow: 0 0 30px rgba(239, 68, 68, 0.8); transform: scale(1.02); } </style> <<if ndef $playerBackground or $playerBackground eq "None" or $playerBackground eq "">><<set _raw to "scavenger">><<else>><<set _raw to $playerBackground.toLowerCase()>><</if>> <<if _raw eq "field medic">><<set _raw to "medic">><</if>> <<if _raw eq "mutated anomaly">><<set _raw to "mutated">><</if>> <<if _raw eq "heavy gunner">><<set _raw to "heavy_gunner">><</if>> <<set _fmtClass to _raw.replace(/ /g, "_")>> <<if ndef $playerGender or $playerGender eq "">><<set _gen to "classified">><<else>><<set _gen to $playerGender.toLowerCase()>><</if>> /* Kendi Domain/Sunucu Klasöründeki Resim Yoluna Güncellendi */ <<set _avatarSrc to "images/avatars/" + _gen + "_" + _fmtClass + ".jpg">> <div class="popup-ad-wrapper"> <div class="ad-banner-popup"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; line-height: 1.5; color: #475569;">AVAILABLE FOR SPONSORSHIP</div></div> <div class="popup-core-content"> <div class="dossier-wrapper"> <div class="dossier-avatar"> <img @src="_avatarSrc" class="dossier-avatar-img" onerror="this.src='https://placehold.co/220x330/000/10b981?font=courier&text=NO+SIGNAL';"> <div style="background: rgba(16,185,129,0.1); border: 1px solid #10b981; padding: 10px; border-radius: 4px; text-align: center; margin-top: 5px;"> <div style="color:#10b981; font-weight:bold; font-size: 1.2rem; letter-spacing:3px;">LEVEL <<print $level>></div> <div class="stat-bar-container"> <div class="stat-bar-fill" @style="'width:' + Math.min(($xp / $xpMax) * 100, 100) + '%; background:#3b82f6; box-shadow: inset 0 0 10px #fff;'"></div> <div class="stat-bar-text">XP: <<print $xp>> / <<print $xpMax>></div> </div> </div> </div> <div class="dossier-details"> <div style="border-bottom: 1px dashed #10b981; padding-bottom: 10px;"> <h2 style="margin:0; color:#10b981; letter-spacing:5px; text-shadow: 0 0 10px #10b981;">[ OPERATOR DOSSIER ]</h2> <div style="color:#6ee7b7; font-size:0.95rem; margin-top:5px; letter-spacing: 1px;">BIOMETRIC & COMBAT STATISTICS</div> </div> <div class="stat-box stat-grid"> <div><span style="color:#64748b; font-size:0.85rem;">DESIGNATION:</span> <span style="color:#fff; font-weight:bold; display:block; font-size: 1.1rem;"><<print $playerName>></span></div> <div><span style="color:#64748b; font-size:0.85rem;">CLASS:</span> <span style="color:#ffaa00; font-weight:bold; display:block; font-size: 1.1rem;"><<print $playerBackground>></span></div> <div><span style="color:#64748b; font-size:0.85rem;">AGE / GENDER:</span> <span style="color:#fff; font-weight:bold; display:block; font-size: 1.1rem;"><<print $playerAge>> / <<print $playerGender>></span></div> <div><span style="color:#64748b; font-size:0.85rem;">DEPLOYMENT SECTOR:</span> <span style="color:#38bdf8; font-weight:bold; display:block; font-size: 1.1rem;"><<print $startingCity>></span></div> </div> <div class="stat-box"> <div style="color:#10b981; font-weight:bold; margin-bottom:15px; border-bottom:1px solid #065f46; padding-bottom:5px; letter-spacing: 2px;">> VITAL SIGNS</div> <div style="margin-bottom:15px;"> <div style="display:flex; justify-content:space-between; font-size:0.9rem; color:#ef4444; font-weight:bold; margin-bottom: 5px;"><span>HEALTH (HP)</span><span><<print $hp>> / <<print $maxHp>></span></div> <div class="stat-bar-container"><div class="stat-bar-fill" @style="'width:' + Math.max(0, Math.min(($hp / $maxHp) * 100, 100)) + '%; background:#ef4444;'"></div></div> </div> <div> <div style="display:flex; justify-content:space-between; font-size:0.9rem; color:#eab308; font-weight:bold; margin-bottom: 5px;"><span>STAMINA</span><span><<print $stamina>> / <<print $maxStamina>></span></div> <div class="stat-bar-container"><div class="stat-bar-fill" @style="'width:' + Math.max(0, Math.min(($stamina / $maxStamina) * 100, 100)) + '%; background:#eab308;'"></div></div> </div> </div> <div class="stat-box stat-grid" style="background: rgba(239, 68, 68, 0.05); border-color: #ef4444;"> <div style="display: flex; flex-direction: column; align-items: center; border-right: 1px dashed #ef4444;"> <span style="color:#ef4444; font-weight:bold; font-size: 0.8rem; letter-spacing: 1px;">COMBAT POWER</span> <span style="color:#fff; font-size: 1.5rem; font-weight: bold; text-shadow: 0 0 10px #ef4444;">⚔️ <<print $playerDmgBonus>></span> </div> <div style="display: flex; flex-direction: column; align-items: center;"> <span style="color:#3b82f6; font-weight:bold; font-size: 0.8rem; letter-spacing: 1px;">TOTAL ARMOR</span> <span style="color:#fff; font-size: 1.5rem; font-weight: bold; text-shadow: 0 0 10px #3b82f6;">🛡️ <<print $playerArmor>></span> </div> </div> </div> </div> <div style="margin-top: 25px; background: rgba(168, 85, 247, 0.05); border: 1px solid #a855f7; padding: 20px; border-radius: 8px; box-shadow: 0 0 15px rgba(168,85,247,0.1);"> <div style="color:#a855f7; font-weight:bold; font-size: 1.1rem; letter-spacing: 2px; border-bottom: 1px dashed #a855f7; padding-bottom: 8px; margin-bottom: 12px;">> OPERATOR SPECIALTY PERK</div> <div style="display: flex; align-items: center; gap: 15px;"> <div style="background: #a855f7; color: #000; padding: 10px 15px; border-radius: 4px; font-weight: bold; font-size: 1.1rem; text-transform: uppercase;"><<print _perkName>></div> <div style="color: #cbd5e1; font-size: 1rem; line-height: 1.5;"><<print _perkDesc>></div> </div> </div> <div class="return-btn-container"> <<link "[ CLOSE DOSSIER & RETURN ]">><<run Dialog.close()>><</link>> </div> </div> <div class="ad-banner-popup"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; line-height: 1.5; color: #475569;">YOUR AD HERE</div></div> </div> <</nobr>>
<<nobr>> <<set $currentMenu to "Quests">> <<run window.setup.updateSidebar()>> <div style="background-color: #1a0b05; padding: 30px; border: 2px solid #fbbf24; border-radius: 8px; font-family: 'Segoe UI', Tahoma, sans-serif; box-shadow: 0 0 25px rgba(251, 191, 36, 0.15);"> <div style="text-align: center; border-bottom: 1px dashed #fbbf24; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #fbbf24; margin: 0; letter-spacing: 3px; text-shadow: 0 0 10px #fbbf24;">[ ACTIVE DIRECTIVES ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #fbbf24;">MAIN NARRATIVE & BOUNTY CONTRACTS</div> </div> <div style="border: 1px dashed #fbbf24; padding: 20px; border-radius: 6px; margin-bottom: 25px;"> <!-- YENİ GÖREV: TECH DATA DECRYPT EDİLDİYSE GÖRÜNÜR --> <<if def $unlockedTechQuest and $unlockedTechQuest eq true>> <div style="background: rgba(168, 85, 247, 0.1); border-left: 4px solid #a855f7; padding: 15px; margin-bottom: 15px;"> <div style="color: #d8b4fe; font-weight: bold; font-size: 1.1rem; margin-bottom: 5px;">[ CONTRACT: CIPHER'S TRAIL ]</div> <div style="color: #cbd5e1; font-size: 0.9rem; margin-bottom: 10px;"> The decrypted tech data revealed Vanguard patrol routes around the Katowice Tunnels. We have a window to strike their elite guards and secure the area. </div> <div style="color: #fbbf24; font-size: 0.85rem; font-family: monospace; font-weight: bold; margin-bottom: 15px;"> REWARD: 150 Scrip + 50 XP </div> <div style="background: rgba(168, 85, 247, 0.15); border: 1px solid #a855f7; text-align: center; border-radius: 4px; padding: 10px;"> @@color:#d8b4fe;font-weight:bold;letter-spacing:1px;<<link "ACCEPT BOUNTY: ENGAGE ELITE GUARDS" "Combat">> <<set $enemies to [ { name: "Vanguard Elite", hp: 80, currentHp: 80, maxHp: 80, attack: 18 }, { name: "Vanguard Heavy", hp: 120, currentHp: 120, maxHp: 120, attack: 22 } ]>> <<set $enemyIndex to 0>> <<set $materials.scrip += 150>> <<set $xp += 50>> <<set $unlockedTechQuest to false>> <</link>>@@ </div> </div> <!-- STANDART GÖREV: HER ZAMAN AÇIK --> <<else>> <div style="color: #94a3b8; font-style: italic; text-align: center; margin-bottom: 15px;"> No high-tier network contracts active. You must decrypt Tech Data via Comms to uncover Syndicate bounties. </div> <div style="text-align: center; background: rgba(59, 130, 246, 0.15); border: 1px solid #3b82f6; border-radius: 4px; padding: 10px; margin: 0 auto; max-width: 400px;"> @@color:#60a5fa;font-weight:bold;letter-spacing:1px;text-transform:uppercase;<<link "Accept Syndicate Scrap Contract" "Combat">> <<set $enemies to [ { name: "Scrap Raider", currentHp: 30, maxHp: 30, attack: 8 } ]>> <<set $enemyIndex to 0>> <<set $materials.scrap += 25>> <<set $materials.scrip += 10>> <</link>>@@ </div> <</if>> </div> </div> <</nobr>>
<<nobr>> <<set $currentMenu to "Inventory">> <<run window.setup.updateSidebar()>> <<run setup.recalcStats()>> /* GÜVENLİK KONTROLÜ */ <<if ndef $equipment.trinket1>><<set $equipment.trinket1 to "None">><</if>> <<if ndef $equipment.trinket2>><<set $equipment.trinket2 to "None">><</if>> <<if ndef $equipment.backpack>><<set $equipment.backpack to "None">><</if>> <<if ndef $equipment.ring1>><<set $equipment.ring1 to "None">><</if>> <<if ndef $equipment.ring2>><<set $equipment.ring2 to "None">><</if>> <<set _gearScore to 0>><<set _equippedCount to 0>><<set _maxSlots to 12>> <<for _slot, _itemName range $equipment>> <<if _itemName neq "None">> <<set _equippedCount += 1>> <<if _itemName.includes("Godlike")>><<set _gearScore += 6>> <<elseif _itemName.includes("Legendary")>><<set _gearScore += 5>> <<elseif _itemName.includes("Epic")>><<set _gearScore += 4>> <<elseif _itemName.includes("Rare")>><<set _gearScore += 3>> <<elseif _itemName.includes("Uncommon")>><<set _gearScore += 2>> <<else>><<set _gearScore += 1>><</if>> <</if>> <</for>> <<set _avgScore to 0>><<if _equippedCount gt 0>><<set _avgScore to _gearScore / _maxSlots>><</if>> <<set _tierName to "COMMON">><<set _tierColor to "#94a3b8">> <<if _avgScore gte 5.5>><<set _tierName to "GODLIKE">><<set _tierColor to "#ef4444">> <<elseif _avgScore gte 4.5>><<set _tierName to "LEGENDARY">><<set _tierColor to "#fbbf24">> <<elseif _avgScore gte 3.5>><<set _tierName to "EPIC">><<set _tierColor to "#a855f7">> <<elseif _avgScore gte 2.5>><<set _tierName to "RARE">><<set _tierColor to "#3b82f6">> <<elseif _avgScore gte 1.5>><<set _tierName to "UNCOMMON">><<set _tierColor to "#2ecc71">><</if>> <style> .popup-ad-wrapper { display: flex; justify-content: space-between; align-items: stretch; gap: 20px; width: 100%; box-sizing: border-box; } .ad-banner-popup { flex: 0 0 160px; width: 160px; background: rgba(5, 10, 5, 0.9); border: 1px dashed #334155; display: flex; flex-direction: column; justify-content: center; align-items: center; color: #475569; font-family: 'Courier New', monospace; text-align: center; padding: 15px; position: relative; overflow: hidden; border-radius: 4px; box-shadow: 0 0 15px rgba(0,0,0,0.8); } .ad-banner-popup::before { content: "ADVERTISEMENT"; font-size: 0.7rem; letter-spacing: 2px; position: absolute; top: 15px; width: 100%; text-align: center; color: #334155; } .popup-core-content { flex: 1; background-color: #050a05; padding: 25px; border: 2px solid #3498db; border-radius: 8px; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; box-shadow: 0 0 20px rgba(52, 152, 219, 0.1); box-sizing: border-box; } .inventory-split { display: grid; grid-template-columns: 1fr 1.2fr; gap: 30px; margin-bottom: 30px; } .stash-container { background: rgba(0,0,0,0.5); border: 1px solid #334155; padding: 15px; border-radius: 4px; height: 560px; overflow-y: auto; } .anatomical-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 75px 1fr 1fr 1fr 1fr; gap: 15px; position: relative; height: 560px; align-content: stretch; background: url('images/ui/body_schema.png') center bottom/contain no-repeat; } .slot-stat-left { grid-column: 1 / 2; grid-row: 1; } .slot-stat-center { grid-column: 2 / 3; grid-row: 1; } .slot-stat-right { grid-column: 3 / 4; grid-row: 1; } /* YERLER DEĞİŞTİRİLDİ: Trinket 1 - Trinket 2 - Backpack */ .slot-trinket1 { grid-column: 1 / 2; grid-row: 2; border-color: #a855f7 !important; background: rgba(30, 0, 50, 0.6) !important; } .slot-trinket2 { grid-column: 2 / 3; grid-row: 2; border-color: #a855f7 !important; background: rgba(30, 0, 50, 0.6) !important; } .slot-backpack { grid-column: 3 / 4; grid-row: 2; border-color: #10b981 !important; background: rgba(0, 30, 20, 0.6) !important; } .slot-left-hand { grid-column: 1 / 2; grid-row: 3; } .slot-head { grid-column: 2 / 3; grid-row: 3; } .slot-right-hand { grid-column: 3 / 4; grid-row: 3; } .slot-ring1 { grid-column: 1 / 2; grid-row: 4; border-color: #f59e0b !important; background: rgba(50, 30, 0, 0.6) !important; } .slot-chest { grid-column: 2 / 3; grid-row: 4; } .slot-ring2 { grid-column: 3 / 4; grid-row: 4; border-color: #f59e0b !important; background: rgba(50, 30, 0, 0.6) !important; } .slot-gloves { grid-column: 1 / 2; grid-row: 5; } .slot-legs { grid-column: 2 / 3; grid-row: 5; } .slot-boots { grid-column: 3 / 4; grid-row: 5; } .eq-slot { background: rgba(0, 10, 5, 0.85); border: 1px solid #334155; padding: 10px; border-radius: 4px; display: flex; flex-direction: column; justify-content: space-between; box-shadow: 0 0 10px rgba(0,0,0,0.8); backdrop-filter: blur(3px); } .eq-slot.weapon-r { border-color: #ff4444; background: rgba(50, 0, 0, 0.6); } .eq-slot.weapon-l { border-color: #3498db; background: rgba(0, 20, 50, 0.6); } .stat-slot { background: rgba(0, 0, 0, 0.7); border: 1px dashed #64748b; border-radius: 4px; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; } .eq-title { color: #64748b; font-size: 0.65rem; font-weight: bold; margin-bottom: 5px; text-align: center; letter-spacing: 1px; text-transform: uppercase; } .eq-name { color: #fff; font-size: 0.85rem; font-weight: bold; text-align: center; } .eq-stats { color: #a3e635; font-size: 0.7rem; margin-top: 5px; font-weight: bold; text-align: center; } </style> <div class="popup-ad-wrapper"> <div class="ad-banner-popup"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; line-height: 1.5; color: #475569;">AVAILABLE FOR SPONSORSHIP</div></div> <div class="popup-core-content"> <div style="text-align: center; border-bottom: 1px dashed #3498db; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #3498db; margin: 0; letter-spacing: 3px; text-shadow: 0 0 10px #3498db;">[ OPERATOR INVENTORY ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #aaa;">LOADOUT & RESOURCE MANAGEMENT</div> <div style="display: flex; justify-content: center; gap: 20px; margin-top: 15px; font-size: 0.9rem; font-weight: bold; background: rgba(52, 152, 219, 0.1); padding: 10px; border-radius: 4px; border: 1px solid #1e3a8a;"> <span style="color:#ef4444;">⚔️ BONUS DMG: <<print $playerDmgBonus>></span> <span style="color:#f59e0b;">🛡️ TOTAL ARMOR: <<print $playerArmor>></span> </div> </div> <div class="inventory-split"> <!-- SOL: STASH --> <div> <div style="background: rgba(168, 85, 247, 0.15); border: 1px solid #a855f7; border-radius: 4px; padding: 12px; margin-bottom: 15px; text-align: center; box-shadow: 0 0 10px rgba(168,85,247,0.2);"> <strong style="color: #a855f7; font-size: 1.1rem; letter-spacing: 2px;">> GEAR STASH (UNEQUIPPED)</strong> </div> <div class="stash-container"> <<if $gearInventory.length eq 0>> <div style="color: #64748b; font-style: italic; text-align: center; margin-top: 250px;">No additional gear in stash.</div> <<else>> <<for _i to 0; _i lt $gearInventory.length; _i++>> <<set _item to $gearInventory[_i]>> <<if def _item and typeof _item eq "string" and _item neq "None" and _item neq "">> <<set _baseName to _item.replace("Common ", "").replace("Uncommon ", "").replace("Rare ", "").replace("Epic ", "").replace("Legendary ", "")>> <<set _slot to "rightHand">><<for _key, _arr range $itemDatabase>><<if _arr.includes(_baseName)>><<set _slot to _key>><<break>><</if>><</for>> <<set _st to setup.getItemStats(_item)>><<set _iColor to "#cbd5e1">> <<if _item.includes("Legendary")>><<set _iColor to "#fbbf24">><<elseif _item.includes("Epic")>><<set _iColor to "#a855f7">><<elseif _item.includes("Rare")>><<set _iColor to "#3b82f6">><<elseif _item.includes("Uncommon")>><<set _iColor to "#2ecc71">><<elseif _item.includes("Common")>><<set _iColor to "#94a3b8">><</if>> <<capture _i, _item, _slot>> <div style="display: flex; justify-content: space-between; align-items: center; border-bottom: 1px dashed #334155; padding: 15px 0;"> <div> <span @style="'color: ' + _iColor + '; font-weight: bold; font-size: 1.1rem;'">_item</span><span style="color:#64748b; font-size:0.75rem; margin-left: 10px; text-transform: uppercase;">(_slot)</span> <div style="color: #a3e635; font-size: 0.85rem; margin-top: 5px; font-weight: bold;"><<if _st.dmg gt 0>>⚔️ +<<print _st.dmg>> DMG <</if>><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> ARMOR <</if>><<if _st.hp gt 0>>❤️ +<<print _st.hp>> HP <</if>><<if _st.stamina gt 0>>⚡ +<<print _st.stamina>> STAM <</if>></div> </div> @@color:#34d399;font-weight:bold;font-size:0.9rem;border:1px solid #34d399;padding:8px 15px;border-radius:4px;<<link "EQUIP">><<if $equipment[_slot] neq "None">><<set $gearInventory.push($equipment[_slot])>><</if>><<set $equipment[_slot] to _item>><<run $gearInventory.delete(_item)>><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@ </div> <</capture>> <<endif>> <</for>> <<endif>> </div> </div> <!-- SAĞ: ACTIVE LOADOUT --> <div> <div style="background: rgba(251, 191, 36, 0.15); border: 1px solid #fbbf24; border-radius: 4px; padding: 12px; margin-bottom: 15px; text-align: center; box-shadow: 0 0 10px rgba(251,191,36,0.2);"> <strong style="color: #fbbf24; font-size: 1.1rem; letter-spacing: 2px;">> ACTIVE LOADOUT</strong> </div> <div class="anatomical-grid"> <div class="stat-slot slot-stat-left"><div class="eq-title">GEAR SCORE</div><div style="color: #fff; font-size: 1.1rem; font-weight: bold;"><<print _gearScore>> / 12</div></div> <div class="stat-slot slot-stat-center" @style="'border-color: ' + _tierColor + '; background: rgba(0,0,0,0.8);'"><div class="eq-title" style="color: #fff;">OVERALL TIER</div><div @style="'color: ' + _tierColor + '; font-size: 1.1rem; font-weight: bold; text-shadow: 0 0 8px ' + _tierColor + ';;'"><<print _tierName>></div></div> <div class="stat-slot slot-stat-right"><div class="eq-title">EQUIPPED</div><div style="color: #34d399; font-size: 1.1rem; font-weight: bold;"><<print _equippedCount>> / <<print _maxSlots>></div></div> <!-- Trinket 1 / Trinket 2 / Backpack --> <div class="eq-slot slot-trinket1"><div class="eq-title" style="color: #a855f7;">TRINKET 1</div><div class="eq-name"><<print $equipment.trinket1>></div><<if $equipment.trinket1 neq "None">><<set _st to setup.getItemStats($equipment.trinket1)>><div class="eq-stats"><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> <</if>><<if _st.hp gt 0>>❤️ +<<print _st.hp>><</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.trinket1)>><<set $equipment.trinket1 to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> <div class="eq-slot slot-trinket2"><div class="eq-title" style="color: #a855f7;">TRINKET 2</div><div class="eq-name"><<print $equipment.trinket2>></div><<if $equipment.trinket2 neq "None">><<set _st to setup.getItemStats($equipment.trinket2)>><div class="eq-stats"><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> <</if>><<if _st.hp gt 0>>❤️ +<<print _st.hp>><</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.trinket2)>><<set $equipment.trinket2 to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> <div class="eq-slot slot-backpack"><div class="eq-title" style="color: #10b981;">BACKPACK</div><div class="eq-name"><<print $equipment.backpack>></div><<if $equipment.backpack neq "None">><<set _st to setup.getItemStats($equipment.backpack)>><div class="eq-stats"><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> <</if>><<if _st.stamina gt 0>>⚡ +<<print _st.stamina>><</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.backpack)>><<set $equipment.backpack to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> <div class="eq-slot weapon-l slot-left-hand"><div class="eq-title" style="color: #3498db;">OFF-HAND (LEFT)</div><div class="eq-name"><<print $equipment.offHand>></div><<if $equipment.offHand neq "None">><<set _st to setup.getItemStats($equipment.offHand)>><div class="eq-stats"><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> <</if>><<if _st.hp gt 0>>❤️ +<<print _st.hp>><</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.offHand)>><<set $equipment.offHand to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> <div class="eq-slot slot-head"><div class="eq-title">HEADGEAR</div><div class="eq-name"><<print $equipment.headgear>></div><<if $equipment.headgear neq "None">><<set _st to setup.getItemStats($equipment.headgear)>><div class="eq-stats"><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> <</if>><<if _st.hp gt 0>>❤️ +<<print _st.hp>><</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.headgear)>><<set $equipment.headgear to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> <div class="eq-slot weapon-r slot-right-hand"><div class="eq-title" style="color: #ff4444;">WEAPON (RIGHT)</div><div class="eq-name"><<print $equipment.rightHand>></div><<if $equipment.rightHand neq "None">><<set _st to setup.getItemStats($equipment.rightHand)>><div class="eq-stats"><<if _st.dmg gt 0>>⚔️ +<<print _st.dmg>> DMG <</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.rightHand)>><<set $equipment.rightHand to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> <div class="eq-slot slot-ring1"><div class="eq-title" style="color: #f59e0b;">RING (LEFT)</div><div class="eq-name"><<print $equipment.ring1>></div><<if $equipment.ring1 neq "None">><<set _st to setup.getItemStats($equipment.ring1)>><div class="eq-stats"><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> <</if>><<if _st.stamina gt 0>>⚡ +<<print _st.stamina>><</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.ring1)>><<set $equipment.ring1 to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> <div class="eq-slot slot-chest"><div class="eq-title">CHEST RIG</div><div class="eq-name"><<print $equipment.chest>></div><<if $equipment.chest neq "None">><<set _st to setup.getItemStats($equipment.chest)>><div class="eq-stats"><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> <</if>><<if _st.hp gt 0>>❤️ +<<print _st.hp>><</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.chest)>><<set $equipment.chest to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> <div class="eq-slot slot-ring2"><div class="eq-title" style="color: #f59e0b;">RING (RIGHT)</div><div class="eq-name"><<print $equipment.ring2>></div><<if $equipment.ring2 neq "None">><<set _st to setup.getItemStats($equipment.ring2)>><div class="eq-stats"><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> <</if>><<if _st.stamina gt 0>>⚡ +<<print _st.stamina>><</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.ring2)>><<set $equipment.ring2 to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> <div class="eq-slot slot-gloves"><div class="eq-title">GLOVES</div><div class="eq-name"><<print $equipment.gloves>></div><<if $equipment.gloves neq "None">><<set _st to setup.getItemStats($equipment.gloves)>><div class="eq-stats"><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> <</if>><<if _st.dmg gt 0>>⚔️ +<<print _st.dmg>><</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.gloves)>><<set $equipment.gloves to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> <div class="eq-slot slot-legs"><div class="eq-title">LEGS</div><div class="eq-name"><<print $equipment.legs>></div><<if $equipment.legs neq "None">><<set _st to setup.getItemStats($equipment.legs)>><div class="eq-stats"><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> <</if>><<if _st.stamina gt 0>>⚡ +<<print _st.stamina>><</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.legs)>><<set $equipment.legs to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> <div class="eq-slot slot-boots"><div class="eq-title">BOOTS</div><div class="eq-name"><<print $equipment.boots>></div><<if $equipment.boots neq "None">><<set _st to setup.getItemStats($equipment.boots)>><div class="eq-stats"><<if _st.armor gt 0>>🛡️ +<<print _st.armor>> <</if>><<if _st.stamina gt 0>>⚡ +<<print _st.stamina>><</if>></div><div style="margin-top:auto;text-align:center;">@@color:#ef4444;font-size:0.75rem;font-weight:bold;<<link "[ UNEQUIP ]">><<set $gearInventory.push($equipment.boots)>><<set $equipment.boots to "None">><<replace "#ui-dialog-body">><<print Story.get("Inventory").processText()>><</replace>><</link>>@@</div><</if>></div> </div> </div> </div> <!-- 3. RESOURCE CARGO --> <div> <div style="background: rgba(46, 204, 113, 0.15); border: 1px solid #2ecc71; border-radius: 4px; padding: 12px; margin-bottom: 15px; text-align: center; box-shadow: 0 0 10px rgba(46,204,113,0.2);"> <strong style="color: #2ecc71; font-size: 1.1rem; letter-spacing: 2px;">> RESOURCE CARGO</strong> </div> <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 15px;"> <div style="background: rgba(0,255,0,0.05); border: 1px solid #115e59; padding: 15px; border-radius: 4px;"> <div style="color: #2ecc71; font-size: 0.85rem; font-weight: bold; margin-bottom: 10px; text-transform: uppercase;">Raw Materials</div> <div style="display: flex; justify-content: space-between; color: #cbd5e1; margin-bottom: 5px;"><span>📦 Scrap:</span> <span><<print $materials.scrap>></span></div> <div style="display: flex; justify-content: space-between; color: #cbd5e1; margin-bottom: 5px;"><span>🪵 Wood:</span> <span><<print $materials.wood>></span></div> <div style="display: flex; justify-content: space-between; color: #cbd5e1; margin-bottom: 5px;"><span>🧵 Cloth:</span> <span><<print $materials.cloth>></span></div> <<if ndef $materials.iron>><<set $materials.iron to 0>><</if>> <div style="display: flex; justify-content: space-between; color: #cbd5e1;"><span>⚙️ Iron:</span> <span><<print $materials.iron>></span></div> </div> <div style="background: rgba(52,152,219,0.05); border: 1px solid #1e3a8a; padding: 15px; border-radius: 4px;"> <div style="color: #3498db; font-size: 0.85rem; font-weight: bold; margin-bottom: 10px; text-transform: uppercase;">Consumables</div> <div style="display: flex; justify-content: space-between; color: #cbd5e1; margin-bottom: 5px;"><span>💊 Medicine:</span> <span><<print $materials.medicine>></span></div> <div style="display: flex; justify-content: space-between; color: #cbd5e1; margin-bottom: 5px;"><span>🥫 Canned Food:</span> <span><<print $materials.food>></span></div> <div style="display: flex; justify-content: space-between; color: #cbd5e1; margin-bottom: 5px;"><span>🥩 Raw Meat:</span> <span><<print $materials.rawMeat>></span></div> <div style="display: flex; justify-content: space-between; color: #cbd5e1; margin-bottom: 5px;"><span>🍇 Berries:</span> <span><<print $materials.berries>></span></div> <div style="display: flex; justify-content: space-between; color: #cbd5e1;"><span>💧 Water:</span> <span><<print $materials.water>></span></div> </div> <div style="background: rgba(255,170,0,0.05); border: 1px solid #78350f; padding: 15px; border-radius: 4px;"> <div style="color: #ffaa00; font-size: 0.85rem; font-weight: bold; margin-bottom: 10px; text-transform: uppercase;">Valuables & Tech</div> <div style="display: flex; justify-content: space-between; color: #cbd5e1; margin-bottom: 5px;"><span>💾 Tech Data:</span> <span><<print $materials.techData>></span></div> <div style="display: flex; justify-content: space-between; color: #cbd5e1; margin-bottom: 5px;"><span>🔋 Ammo:</span> <span><<print $materials.ammo>></span></div> <div style="display: flex; justify-content: space-between; color: #fbbf24; font-weight: bold; margin-top: 10px; border-top: 1px dashed #333; padding-top: 5px;"><span>🪙 Scrip:</span> <span><<print $materials.scrip>></span></div> </div> </div> </div> </div> <div class="ad-banner-popup"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; line-height: 1.5; color: #475569;">YOUR AD HERE</div></div> </div> <</nobr>>
<<nobr>> <<set $currentMenu to "Workshop">> <<run window.setup.updateSidebar()>> /* Workshop Seviye Kontrolü Güvencesi */ <<if ndef $sanctuaryLevels>><<set $sanctuaryLevels to { workshop: 1 }>><</if>> <<if ndef $sanctuaryLevels.workshop>><<set $sanctuaryLevels.workshop to 1>><</if>> /* Workshop Seviyesine Göre Üretilecek Eşyanın Rarity (Kalite) Belirleyicisi */ <<set _currentWorkshopLevel to $sanctuaryLevels.workshop>> <<set _isTeki to ($playerBackground and $playerBackground.toLowerCase().includes("teki"))>> <<set _effectiveLevel to (_isTeki ? _currentWorkshopLevel + 1 : _currentWorkshopLevel)>> <<set _craftRarity to "Common">> <<if _effectiveLevel eq 2>> <<set _craftRarity to "Uncommon">> <<elseif _effectiveLevel eq 3>> <<set _craftRarity to "Rare">> <<elseif _effectiveLevel eq 4>> <<set _craftRarity to "Epic">> <<elseif _effectiveLevel eq 5>> <<set _craftRarity to "Legendary">> <<elseif _effectiveLevel gte 6>> <<set _craftRarity to "Godlike">> <</if>> <</nobr>> <style> .workshop-container { background: linear-gradient(180deg, rgba(5,10,15,0.95), rgba(15,8,8,0.98)), url('images/locations/workshop_bg.jpg') center/cover; padding: 25px; border: 2px solid #3498db; border-radius: 8px; font-family: 'Segoe UI', Tahoma, sans-serif; box-shadow: 0 0 30px rgba(52, 152, 219, 0.25); } .upgrade-panel { background: rgba(0, 20, 40, 0.9); border: 1px solid #38bdf8; padding: 15px 20px; border-radius: 6px; margin-bottom: 25px; display: flex; justify-content: space-between; align-items: center; } .crafting-container { display: flex; flex-wrap: wrap; gap: 15px; justify-content: flex-start; } .craft-card { background: rgba(10, 12, 18, 0.95); border: 1px solid #1e3a8a; border-radius: 6px; width: 280px; display: flex; flex-direction: column; justify-content: space-between; box-shadow: 0 4px 15px rgba(0,0,0,0.7); overflow: hidden; } .craft-img { width: 100%; height: 140px; object-fit: cover; border-bottom: 2px solid #1e3a8a; background: #000; } .cyber-craft-btn { display: block; width: 100%; background: linear-gradient(135deg, #0369a1 0%, #0284c7 50%, #0369a1 100%); border: 1px solid #38bdf8; color: #f8fafc !important; padding: 10px 12px; text-align: center; font-weight: bold; font-family: 'Courier New', monospace; font-size: 0.9rem; letter-spacing: 1px; border-radius: 4px; cursor: pointer; text-decoration: none !important; box-shadow: inset 0 0 8px rgba(56, 189, 248, 0.4), 0 0 10px rgba(2, 132, 199, 0.4); transition: all 0.2s ease-in-out; box-sizing: border-box; } .cyber-craft-btn:hover { background: linear-gradient(135deg, #0284c7 0%, #38bdf8 50%, #0284c7 100%); border-color: #7dd3fc; color: #ffffff !important; box-shadow: inset 0 0 12px rgba(125, 211, 252, 0.6), 0 0 18px rgba(56, 189, 248, 0.7); transform: translateY(-1px); } .cyber-disabled-btn { display: block; width: 100%; background: rgba(15, 23, 42, 0.6); border: 1px dashed #475569; color: #64748b; padding: 10px 12px; text-align: center; font-weight: bold; font-family: 'Courier New', monospace; font-size: 0.8rem; border-radius: 4px; cursor: not-allowed; box-sizing: border-box; } .cyber-return-btn { display: inline-block; background: linear-gradient(135deg, #0f766e 0%, #115e59 100%); border: 1px solid #2dd4bf; color: #99f6e4 !important; padding: 12px 30px; font-weight: bold; font-family: 'Courier New', monospace; letter-spacing: 2px; border-radius: 4px; text-decoration: none !important; box-shadow: 0 0 15px rgba(45, 212, 191, 0.3); transition: all 0.2s; } .cyber-return-btn:hover { background: linear-gradient(135deg, #115e59 0%, #0f766e 100%); border-color: #5eead4; color: #ffffff !important; box-shadow: 0 0 20px rgba(94, 234, 212, 0.5); } </style> <div class="workshop-container"> <div style="text-align: center; border-bottom: 1px dashed #3498db; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #3498db; margin: 0; letter-spacing: 3px; text-shadow: 0 0 10px #3498db;">[ WORKSHOP TERMINAL ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #aaa;">FABRICATION & BASE UPGRADES (LEVEL: <<print _currentWorkshopLevel>> / 5)</div> <<if _isTeki>> <div style="margin-top: 5px; font-size: 0.85rem; color: #f59e0b; font-weight: bold;">✨ TEKİ PASSIVE ACTIVE: Mastercraft Crafting Bonus (+1 Rarity Tier)</div> <</if>> <div style="margin-top: 5px; font-size: 0.85rem; color: #38bdf8;">CURRENT CRAFTING QUALITY: <<print _craftRarity.toUpperCase()>></div> </div> <!-- WORKSHOP UPGRADE PANEL --> <div class="upgrade-panel"> <div> <div style="color: #38bdf8; font-weight: bold; font-size: 1rem; margin-bottom: 4px;">🛠️ WORKSHOP LEVEL UPGRADE</div> <div style="color: #94a3b8; font-size: 0.85rem;">Upgrading increases the rarity tier of all fabricated gear.</div> </div> <div> <<if _currentWorkshopLevel lt 5>> <<link "<span class='cyber-craft-btn' style='display:inline-block; padding:8px 15px;'>⚡ UPGRADE WORKSHOP (LVL UP)</span>" "Workshop">> <<set $sanctuaryLevels.workshop += 1>> <</link>> <<else>> <span style="color: #34d399; font-weight: bold; font-size: 0.95rem;">[ MAX LEVEL (5) REACHED ]</span> <</if>> </div> </div> <!-- CRAFTING LIST --> <div class="crafting-container"> <!-- 1. MEDICAL STIMPACK --> <div class="craft-card"> <img src="images/items/craft_stimpack.jpg" class="craft-img" onerror="this.src='https://placehold.co/600x400/000/38bdf8?text=STIMPACK';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #38bdf8; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">💊 MEDICAL STIMPACK</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Restores 30 HP when used in exploration.</div> <div style="color: #cbd5e1; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">COST: 5 Cloth, 2 Water</div> </div> <div> <<if $materials.cloth gte 5 and $materials.water gte 2>> <<link "<span class='cyber-craft-btn'>🔨 CRAFT STIMPACK</span>" "Workshop">> <<set $materials.cloth -= 5, $materials.water -= 2>> <<set $materials.medicine += 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ INSUFFICIENT MATERIALS ]</div> <<endif>> </div> </div> </div> <!-- 2. REINFORCED ROPE --> <div class="craft-card"> <img src="images/items/craft_rope.jpg" class="craft-img" onerror="this.src='https://placehold.co/600x400/000/fbbf24?text=ROPE';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #fbbf24; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">🧵 REINFORCED ROPE</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Required to capture enemies in combat.</div> <div style="color: #cbd5e1; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">COST: 5 Cloth</div> </div> <div> <<if $materials.cloth gte 5>> <<link "<span class='cyber-craft-btn'>🔨 CRAFT ROPE</span>" "Workshop">> <<set $materials.cloth -= 5>> <<if ndef $materials.rope>><<set $materials.rope to 0>><</if>> <<set $materials.rope += 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ INSUFFICIENT MATERIALS ]</div> <<endif>> </div> </div> </div> <!-- 3. COMBAT KNIFE --> <div class="craft-card"> <img src="images/items/craft_knife.jpg" class="craft-img" onerror="this.src='https://placehold.co/600x400/000/f87171?text=KNIFE';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #f87171; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">🔪 COMBAT KNIFE ([<<print _craftRarity>>)</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Standard issue melee weapon. Upgrades quality.</div> <div style="color: #cbd5e1; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">COST: 10 Scrap, 5 Wood</div> </div> <div> <<if $materials.scrap gte 10 and $materials.wood gte 5>> <<link "<span class='cyber-craft-btn'>🔨 FORGE KNIFE</span>" "Workshop">> <<set $materials.scrap -= 10, $materials.wood -= 5>> <<set $equipment.rightHand to _craftRarity + " Combat Knife">> <</link>> <<else>> <div class="cyber-disabled-btn">[ INSUFFICIENT MATERIALS ]</div> <<endif>> </div> </div> </div> <!-- 4. SCRAP ARMOR --> <div class="craft-card"> <img src="images/items/craft_armor.jpg" class="craft-img" onerror="this.src='https://placehold.co/600x400/000/fbbf24?text=ARMOR';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #fbbf24; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">🛡️ SCRAP ARMOR ([<<print _craftRarity>>)</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Chest rig made from car doors. Adds +20 Max HP.</div> <div style="color: #cbd5e1; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">COST: 20 Scrap, 10 Cloth</div> </div> <div> <<if $materials.scrap gte 20 and $materials.cloth gte 10>> <<link "<span class='cyber-craft-btn'>🔨 CRAFT ARMOR</span>" "Workshop">> <<set $materials.scrap -= 20, $materials.cloth -= 10>> <<set $equipment.chest to _craftRarity + " Scrap Armor">> <<set $maxHp += 20, $hp += 20>> <</link>> <<else>> <div class="cyber-disabled-btn">[ INSUFFICIENT MATERIALS ]</div> <<endif>> </div> </div> </div> <!-- 5. SCRAP HELMET --> <div class="craft-card"> <img src="images/items/craft_helmet.jpg" class="craft-img" onerror="this.src='https://placehold.co/600x400/000/38bdf8?text=HELMET';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #38bdf8; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">🪖 SCRAP HELMET ([<<print _craftRarity>>)</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Improvised steel headgear. Protects head.</div> <div style="color: #cbd5e1; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">COST: 10 Scrap, 5 Cloth</div> </div> <div> <<if $materials.scrap gte 10 and $materials.cloth gte 5>> <<link "<span class='cyber-craft-btn'>🔨 CRAFT HELMET</span>" "Workshop">> <<set $materials.scrap -= 10, $materials.cloth -= 5>> <<set $equipment.headgear to _craftRarity + " Scrap Helmet">> <<set $equipment.head to _craftRarity + " Scrap Helmet">> <</link>> <<else>> <div class="cyber-disabled-btn">[ INSUFFICIENT MATERIALS ]</div> <<endif>> </div> </div> </div> <!-- 6. SCRAP LEGGUARDS --> <div class="craft-card"> <img src="images/items/craft_legguards.jpg" class="craft-img" onerror="this.src='https://placehold.co/600x400/000/34d399?text=LEGGUARDS';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #34d399; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">🦵 LEGGUARDS ([<<print _craftRarity>>)</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Reinforced metal plates for lower body.</div> <div style="color: #cbd5e1; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">COST: 15 Scrap, 5 Cloth</div> </div> <div> <<if $materials.scrap gte 15 and $materials.cloth gte 5>> <<link "<span class='cyber-craft-btn'>🔨 CRAFT LEGS</span>" "Workshop">> <<set $materials.scrap -= 15, $materials.cloth -= 5>> <<set $equipment.legs to _craftRarity + " Scrap Legguards">> <</link>> <<else>> <div class="cyber-disabled-btn">[ INSUFFICIENT MATERIALS ]</div> <<endif>> </div> </div> </div> <!-- 7. SCRAP BOOTS --> <div class="craft-card"> <img src="images/items/craft_boots.jpg" class="craft-img" onerror="this.src='https://placehold.co/600x400/000/fbbf24?text=BOOTS';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #fbbf24; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">🥾 SCRAP BOOTS ([<<print _craftRarity>>)</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Sturdy boots wrapped in leather and metal.</div> <div style="color: #cbd5e1; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">COST: 10 Scrap, 5 Wood</div> </div> <div> <<if $materials.scrap gte 10 and $materials.wood gte 5>> <<link "<span class='cyber-craft-btn'>🔨 CRAFT BOOTS</span>" "Workshop">> <<set $materials.scrap -= 10, $materials.wood -= 5>> <<set $equipment.boots to _craftRarity + " Scrap Boots">> <<set $equipment.feet to _craftRarity + " Scrap Boots">> <</link>> <<else>> <div class="cyber-disabled-btn">[ INSUFFICIENT MATERIALS ]</div> <<endif>> </div> </div> </div> <!-- 8. REINFORCED GLOVES --> <div class="craft-card"> <img src="images/items/craft_gloves.jpg" class="craft-img" onerror="this.src='https://placehold.co/600x400/000/a855f7?text=GLOVES';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #a855f7; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">🧤 GLOVES ([<<print _craftRarity>>)</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Padded work gloves for better grip.</div> <div style="color: #cbd5e1; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">COST: 5 Scrap, 5 Cloth</div> </div> <div> <<if $materials.scrap gte 5 and $materials.cloth gte 5>> <<link "<span class='cyber-craft-btn'>🔨 CRAFT GLOVES</span>" "Workshop">> <<set $materials.scrap -= 5, $materials.cloth -= 5>> <<set $equipment.gloves to _craftRarity + " Reinforced Gloves">> <<set $equipment.hands to _craftRarity + " Reinforced Gloves">> <</link>> <<else>> <div class="cyber-disabled-btn">[ INSUFFICIENT MATERIALS ]</div> <<endif>> </div> </div> </div> <!-- 9. MAKESHIFT SHIELD --> <div class="craft-card"> <img src="images/items/craft_shield.jpg" class="craft-img" onerror="this.src='https://placehold.co/600x400/000/f87171?text=SHIELD';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #f87171; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">🛡️ SHIELD ([<<print _craftRarity>>)</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Heavy riot shield welded from road signs.</div> <div style="color: #cbd5e1; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">COST: 15 Scrap, 5 Wood</div> </div> <div> <<if $materials.scrap gte 15 and $materials.wood gte 5>> <<link "<span class='cyber-craft-btn'>🔨 CRAFT SHIELD</span>" "Workshop">> <<set $materials.scrap -= 15, $materials.wood -= 5>> <<set $equipment.offHand to _craftRarity + " Makeshift Shield">> <<set $equipment.leftHand to _craftRarity + " Makeshift Shield">> <</link>> <<else>> <div class="cyber-disabled-btn">[ INSUFFICIENT MATERIALS ]</div> <<endif>> </div> </div> </div> </div> <!-- RETURN TO SANCTUARY HUB --> <div style="text-align: center; margin-top: 30px;"> <<link "<span class='cyber-return-btn'>🏰 RETURN TO SANCTUARY HUB</span>" "Sanctuary Hub">> <</link>> </div> </div>
<<nobr>> <div class="tutorial-container"> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; color: #475569;">ADVERTISEMENT</div></div> <div class="tutorial-core"> <div style="background-color: #050a05; padding: 25px; border: 2px solid #00ff00; border-radius: 8px; font-family: 'Courier New', monospace; box-shadow: 0 0 20px rgba(0, 255, 0, 0.1);"> <div style="text-align: center; border-bottom: 1px dashed #00ff00; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #00ff00; margin: 0; letter-spacing: 3px; text-shadow: 0 0 8px #00ff00;">[ FIELD EXERCISE 01 ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #aaa;">RESOURCE ACQUISITION</div> </div> <div style="color: #ddd; font-size: 1rem; line-height: 1.6; margin-bottom: 20px;"> <p>Your side-panel UI is currently locked. To unlock the Command Center, you need to prove you can survive the basics.</p> <p>Sensors detect useable materials in an abandoned campsite nearby.</p> <div style="background: rgba(0,255,0,0.05); border: 1px solid #00ff00; padding: 15px; margin-top: 15px; border-radius: 4px;"> <strong style="color: #00ff00;">OBJECTIVE 1:</strong> Scavenge the area for crafting materials.<br> <span style="color: #ef4444; font-size: 0.85rem; font-weight:bold;">COST: -5 STAMINA</span> </div> </div> <div style="text-align: center; margin-top: 30px; padding: 12px; border: 1px solid #00ff00; background: rgba(0, 255, 0, 0.15); border-radius: 4px; box-shadow: 0 0 10px rgba(0, 255, 0, 0.2);"> @@color:#00ff00;font-weight:bold;letter-spacing:1px;<<link [[SEARCH ABANDONED CAMP|Tutorial 2]]>> <<set $stamina -= 5>> <<set $materials.wood += 10, $materials.scrap += 5>> <<run window.setup.updateSidebar()>> <</link>>@@ </div> </div> </div> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; color: #475569;">YOUR AD HERE</div></div> </div> <</nobr>>
<<nobr>> <div class="tutorial-container"> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; color: #475569;">ADVERTISEMENT</div></div> <div class="tutorial-core"> <div style="background-color: #050a05; padding: 25px; border: 2px solid #3498db; border-radius: 8px; font-family: 'Courier New', monospace; box-shadow: 0 0 20px rgba(52, 152, 219, 0.1);"> <div style="text-align: center; border-bottom: 1px dashed #3498db; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #3498db; margin: 0; letter-spacing: 3px; text-shadow: 0 0 8px #3498db;">[ FIELD EXERCISE 02 ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #aaa;">BASIC FABRICATION</div> </div> <div style="color: #ddd; font-size: 1rem; line-height: 1.6; margin-bottom: 20px;"> <p>You found <strong style="color:#00ff00;">10 Wood</strong> and <strong style="color:#00ff00;">5 Scrap</strong>. Check your Quick Inventory on the left to confirm.</p> <p>There is a toxic river nearby with mutated fish. You cannot catch them with your bare hands. You need a tool.</p> <div style="background: rgba(52,152,219,0.05); border: 1px solid #3498db; padding: 15px; margin-top: 15px; border-radius: 4px;"> <strong style="color: #3498db;">OBJECTIVE 2:</strong> Use your materials to craft a basic Fishing Rod.<br> <span style="color: #cbd5e1; font-size: 0.85rem; font-weight:bold;">REQUIRES: 5 Wood, 2 Scrap</span> </div> </div> <div style="text-align: center; margin-top: 30px; padding: 12px; border: 1px solid #3498db; background: rgba(52, 152, 219, 0.15); border-radius: 4px; box-shadow: 0 0 10px rgba(52, 152, 219, 0.2);"> @@color:#3498db;font-weight:bold;letter-spacing:1px;<<link [[CRAFT FISHING ROD|Tutorial 3]]>> <<set $materials.wood -= 5, $materials.scrap -= 2>> <<set $hasFishingRod to true>> <<run window.setup.updateSidebar()>> <</link>>@@ </div> </div> </div> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; color: #475569;">YOUR AD HERE</div></div> </div> <</nobr>>
<<nobr>> <div class="tutorial-container"> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; color: #475569;">ADVERTISEMENT</div></div> <div class="tutorial-core"> <div style="background-color: #050a05; padding: 25px; border: 2px solid #fbbf24; border-radius: 8px; font-family: 'Courier New', monospace; box-shadow: 0 0 20px rgba(251, 191, 36, 0.1);"> <div style="text-align: center; border-bottom: 1px dashed #fbbf24; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #fbbf24; margin: 0; letter-spacing: 3px; text-shadow: 0 0 8px #fbbf24;">[ FIELD EXERCISE 03 ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #aaa;">SUSTENANCE & SURVIVAL</div> </div> <div style="color: #ddd; font-size: 1rem; line-height: 1.6; margin-bottom: 20px;"> <p>Fishing Rod crafted successfully.</p> <p>Starvation will kill you faster than the raiders in this sector. You must secure a reliable food source before setting up your base of operations.</p> <div style="background: rgba(245,158,11,0.05); border: 1px solid #fbbf24; padding: 15px; margin-top: 15px; border-radius: 4px;"> <strong style="color: #fbbf24;">OBJECTIVE 3:</strong> Cast your line into the river and catch food.<br> <span style="color: #ef4444; font-size: 0.85rem; font-weight:bold;">COST: -10 STAMINA</span> </div> </div> <div style="text-align: center; margin-top: 30px; padding: 12px; border: 1px solid #fbbf24; background: rgba(251, 191, 36, 0.15); border-radius: 4px; box-shadow: 0 0 10px rgba(251, 191, 36, 0.2);"> @@color:#fbbf24;font-weight:bold;letter-spacing:1px;<<link [[CAST FISHING LINE|Tutorial 4]]>> <<set $stamina -= 10>> <<set $materials.rawMeat += 3>> <<run window.setup.updateSidebar()>> <</link>>@@ </div> </div> </div> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; color: #475569;">YOUR AD HERE</div></div> </div> <</nobr>>
<<nobr>> <div class="tutorial-container"> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; color: #475569;">ADVERTISEMENT</div></div> <div class="tutorial-core"> <div style="background-color: #050a05; padding: 25px; border: 2px solid #9b59b6; border-radius: 8px; font-family: 'Courier New', monospace; box-shadow: 0 0 20px rgba(155, 89, 182, 0.1);"> <div style="text-align: center; border-bottom: 1px dashed #9b59b6; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #9b59b6; margin: 0; letter-spacing: 3px; text-shadow: 0 0 8px #9b59b6;">[ TUTORIAL COMPLETE ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #aaa;">ALL SYSTEMS GREEN</div> </div> <div style="color: #ddd; font-size: 1rem; line-height: 1.6; margin-bottom: 20px;"> <p>Success. You caught <strong style="color:#fbbf24;">3 Raw Meat (Mutated Fish)</strong>. You can cook these later in your base.</p> <p>You now know how to scavenge for resources, craft survival tools, and secure food.</p> <div style="background: rgba(155,89,182,0.05); border: 1px solid #9b59b6; padding: 15px; margin-top: 15px; border-radius: 4px;"> <strong style="color: #9b59b6;">FINAL OBJECTIVE:</strong> Boot up the main generator and initialize the Command Center UI. </div> </div> <div style="text-align: center; margin-top: 30px; padding: 12px; border: 1px solid #9b59b6; background: rgba(155, 89, 182, 0.15); border-radius: 4px; box-shadow: 0 0 10px rgba(155, 89, 182, 0.2);"> @@color:#9b59b6;font-weight:bold;letter-spacing:1px;<<link [[INITIALIZE S.A.N.C.T.U.A.R.Y.|Camp]]>> <<set $hasSanctuary to true>> <<run window.setup.updateSidebar()>> <</link>>@@ </div> </div> </div> <div class="ad-banner"><div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div><div style="font-size: 0.75rem; color: #475569;">YOUR AD HERE</div></div> </div> <</nobr>>
<<nobr>> <<set $currentMenu to "Rest">> <<run window.setup.updateSidebar()>> <<if ndef $materials.berries>><<set $materials.berries to 0>><</if>> <<if ndef $materials.food>><<set $materials.food to 0>><</if>> <<if ndef $materials.rawMeat>><<set $materials.rawMeat to 0>><</if>> <<if ndef $materials.cloth>><<set $materials.cloth to 0>><</if>> <<if ndef $materials.water>><<set $materials.water to 0>><</if>> <<if ndef $materials.medicine>><<set $materials.medicine to 0>><</if>> /* İşçi sistemi hata vermemesi için güvenli değişken tanımları */ <<if ndef $laborScrap>><<set $laborScrap to 0>><</if>> <<if ndef $laborWood>><<set $laborWood to 0>><</if>> <<if ndef $laborCloth>><<set $laborCloth to 0>><</if>> <<if ndef $laborHunters>><<set $laborHunters to 0>><</if>> <<if ndef $laborForagers>><<set $laborForagers to 0>><</if>> <<if ndef $laborMedics>><<set $laborMedics to 0>><</if>> <style> .ashen-veil-world-rest { background: linear-gradient(rgba(0, 5, 0, 0.8), rgba(0, 10, 5, 0.95)), url('images/locations/sanctuary_level_1.jpg') center/cover no-repeat; min-height: 100vh; display: flex; flex-direction: row; justify-content: space-between; align-items: stretch; gap: 20px; padding: 20px; box-sizing: border-box; width: 100%; margin: 0; } .ad-banner { flex: 0 0 160px; width: 160px; background: rgba(5, 10, 5, 0.9); border-left: 1px dashed #334155; border-right: 1px dashed #334155; display: flex; flex-direction: column; justify-content: center; align-items: center; color: #475569; text-align: center; } .terminal-wide-core { flex: 1; background: rgba(5, 15, 5, 0.88); border-left: 2px solid #fbbf24; border-right: 2px solid #fbbf24; padding: 40px; font-family: 'Segoe UI', Tahoma, sans-serif; min-height: 85vh; display: flex; flex-direction: column; box-shadow: inset 0 0 30px rgba(0,0,0,0.8); } .rest-card { background: rgba(0,0,0,0.7); border: 1px solid #d97706; border-radius: 6px; padding: 15px; text-align: center; display: flex; flex-direction: column; justify-content: space-between; box-shadow: 0 4px 15px rgba(0,0,0,0.5); } .rest-img { width: 100%; height: 120px; object-fit: cover; border-bottom: 2px solid #d97706; margin-bottom: 10px; border-radius: 4px; } </style> <div class="ashen-veil-world-rest"> <div class="ad-banner"><div style="font-weight: bold; margin-bottom: 10px;">[ 160 x 600 ]</div>AD SPACE</div> <div class="terminal-wide-core"> <div style="text-align: center; border-bottom: 1px dashed #fbbf24; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #fbbf24; margin: 0; letter-spacing: 3px; text-shadow: 0 0 10px rgba(251, 191, 36, 0.5);">[ REST QUARTERS ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #fcd34d;">BARRACKS & MESS HALL</div> </div> <!-- ANLIK DURUM --> <div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; margin-bottom: 25px; text-align: center;"> <div style="background: rgba(239,68,68,0.1); border: 1px solid #ef4444; padding: 10px; border-radius: 4px;"><div style="color: #ef4444; font-size: 0.8rem; font-weight: bold; margin-bottom: 5px;">❤️ HP (HEALTH)</div><div style="color: #fff; font-size: 1.1rem; font-weight: bold;"><<print $hp>> / <<print $maxHp>></div></div> <div style="background: rgba(56,189,248,0.1); border: 1px solid #38bdf8; padding: 10px; border-radius: 4px;"><div style="color: #38bdf8; font-size: 0.8rem; font-weight: bold; margin-bottom: 5px;">⚡ STAMINA</div><div style="color: #fff; font-size: 1.1rem; font-weight: bold;"><<print $stamina>> / <<print $maxStamina>></div></div> <div style="background: rgba(251,191,36,0.1); border: 1px solid #fbbf24; padding: 10px; border-radius: 4px;"><div style="color: #fbbf24; font-size: 0.8rem; font-weight: bold; margin-bottom: 5px;">🍖 SATIETY (FOOD)</div><div style="color: #fff; font-size: 1.1rem; font-weight: bold;"><<print $hunger>>%</div></div> </div> <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; margin-bottom: auto;"> <!-- İŞLEM 1: ET PİŞİRME --> <div class="rest-card"> <img src="images/locations/env_campfire_kitchen.jpg" class="rest-img" onerror="this.src='https://placehold.co/400x200/000/d97706?text=KITCHEN';"> <div style="color: #fbbf24; font-size: 1.05rem; font-weight: bold; margin-bottom: 5px;">🔥 CAMPFIRE KITCHEN</div> <div style="color: #94a3b8; font-size: 0.8rem; margin-bottom: 10px; height: 35px;">Cook raw meat to make it safe to eat.</div> <div style="color: #fbbf24; font-size: 0.8rem; margin-bottom: 15px; font-family: monospace;">COST: 1 Wood, 1 Raw Meat</div> <<if $materials.wood gte 1 and $materials.rawMeat gte 1>> <div style="background: rgba(251,191,36,0.1); padding: 10px; border: 1px solid #fbbf24;"> @@color:#fbbf24;font-weight:bold;<<link ">>> COOK MEAT <<<" "Rest">> <<set $materials.wood -= 1, $materials.rawMeat -= 1, $materials.food += 1>> <</link>>@@ </div> <<else>> <div style="color: #ef4444; font-size: 0.85rem; font-weight: bold; text-align: center; border: 1px dashed #ef4444; padding: 8px;">[ LACKING INGREDIENTS ]</div> <</if>> </div> <!-- İŞLEM 2: YEMEK YEME --> <div class="rest-card"> <img src="images/locations/env_consume_rations.jpg" class="rest-img" onerror="this.src='https://placehold.co/400x200/000/d97706?text=RATIONS';"> <div style="color: #fca5a5; font-size: 1.05rem; font-weight: bold; margin-bottom: 5px;">🥫 CONSUME RATIONS</div> <div style="color: #94a3b8; font-size: 0.8rem; margin-bottom: 10px; height: 35px;">Eat canned food (+30%) or raw meat (+15%).</div> <div style="color: #fca5a5; font-size: 0.8rem; margin-bottom: 15px; font-family: monospace;">COST: 1 Food OR 1 Raw Meat</div> <<if $hunger gte 100>> <div style="color: #2ecc71; font-size: 0.85rem; font-weight: bold; text-align: center; border: 1px solid #2ecc71; padding: 8px;">[ FULLY SATED ]</div> <<elseif $materials.food gte 1>> <div style="background: rgba(248,113,113,0.1); padding: 10px; border: 1px solid #f87171; margin-bottom: 5px;"> @@color:#fca5a5;font-weight:bold;<<link ">>> EAT RATION (+30%) <<<" "Rest">> <<set $materials.food -= 1, $hunger += 30>> <<if $hunger gt 100>><<set $hunger to 100>><</if>> <</link>>@@ </div> <<elseif $materials.rawMeat gte 1>> <div style="background: rgba(248,113,113,0.1); padding: 10px; border: 1px solid #f87171;"> @@color:#fca5a5;font-weight:bold;<<link ">>> EAT RAW MEAT (+15%) <<<" "Rest">> <<set $materials.rawMeat -= 1, $hunger += 15>> <<if $hunger gt 100>><<set $hunger to 100>><</if>> <</link>>@@ </div> <<else>> <div style="color: #ef4444; font-size: 0.85rem; font-weight: bold; text-align: center; border: 1px dashed #ef4444; padding: 8px;">[ NO FOOD AVAILABLE ]</div> <</if>> </div> <!-- İŞLEM 3: BÖĞÜRTLEN YEME --> <div class="rest-card"> <img src="images/locations/env_eat_berries.jpg" class="rest-img" onerror="this.src='https://placehold.co/400x200/000/d97706?text=BERRIES';"> <div style="color: #c084fc; font-size: 1.05rem; font-weight: bold; margin-bottom: 5px;">🍇 EAT BERRIES</div> <div style="color: #94a3b8; font-size: 0.8rem; margin-bottom: 10px; height: 35px;">Eat foraged berries (+5% satiety).</div> <div style="color: #c084fc; font-size: 0.8rem; margin-bottom: 15px; font-family: monospace;">COST: 1 Berries</div> <<if $hunger gte 100>> <div style="color: #2ecc71; font-size: 0.85rem; font-weight: bold; text-align: center; border: 1px solid #2ecc71; padding: 8px;">[ FULLY SATED ]</div> <<elseif $materials.berries gte 1>> <div style="background: rgba(192,132,252,0.1); padding: 10px; border: 1px solid #c084fc;"> @@color:#c084fc;font-weight:bold;<<link ">>> EAT BERRIES <<<" "Rest">> <<set $materials.berries -= 1, $hunger += 5>> <<if $hunger gt 100>><<set $hunger to 100>><</if>> <</link>>@@ </div> <<else>> <div style="color: #ef4444; font-size: 0.85rem; font-weight: bold; text-align: center; border: 1px dashed #ef4444; padding: 8px;">[ NO BERRIES AVAILABLE ]</div> <</if>> </div> <!-- İŞLEM 4: UYUMA VE TÜM KOLONİ ÜRETİMİ --> <div class="rest-card"> <img src="images/locations/env_rest_sleep.jpg" class="rest-img" onerror="this.src='https://placehold.co/400x200/000/d97706?text=SLEEP';"> <div style="color: #38bdf8; font-size: 1.05rem; font-weight: bold; margin-bottom: 5px;">🛌 SLEEP (ADVANCE DAY)</div> <div style="color: #94a3b8; font-size: 0.8rem; margin-bottom: 10px; height: 35px;">Restores 100% STAMINA and +20 HP.</div> <div style="color: #ef4444; font-size: 0.8rem; margin-bottom: 15px; font-family: monospace; font-weight: bold;">COST: -20 SATIETY</div> <<if $hunger gte 20>> <div style="background: rgba(56,189,248,0.1); padding: 10px; border: 1px solid #38bdf8;"> @@color:#38bdf8;font-weight:bold;<<link ">>> GO TO SLEEP <<<" "Rest">> <<set $day += 1>> <<set $stamina to $maxStamina>> <<set $hp += 20>> <<if $hp gt $maxHp>><<set $hp to $maxHp>><</if>> <<set $hunger -= 20>> <<set $materials.scrap += $laborScrap>> <<set $materials.wood += $laborWood>> <<set $materials.cloth += $laborCloth>> <<set $materials.rawMeat += $laborHunters>> <<set $materials.berries += $laborForagers>> <<set $materials.water += $laborForagers>> <<set $materials.medicine += $laborMedics>> <<run window.setup.updateSidebar()>> <</link>>@@ </div> <<else>> <div style="color: #ef4444; font-size: 0.85rem; font-weight: bold; text-align: center; border: 1px dashed #ef4444; padding: 8px;">[ TOO HUNGRY TO SLEEP ]</div> <</if>> </div> </div> <!-- ÜSSE DÖNÜŞ --> <div style="margin-top: 30px; text-align: center; border: 1px solid #fbbf24; padding: 15px; background: rgba(251,191,36,0.1); border-radius: 4px;"> @@color:#fbbf24;font-weight:bold;<<link ">>> RETURN TO COMMAND CENTER <<<" "Camp">><</link>>@@ </div> </div> <div class="ad-banner"><div style="font-weight: bold; margin-bottom: 10px;">[ 160 x 600 ]</div>AD SPACE</div> </div> <</nobr>>
<<nobr>> <<set $currentMenu to "Combat">> <<run window.setup.updateSidebar()>> <<if ndef $combatLog>><<set $combatLog to []>><</if>> <<if ndef $enemy or typeof $enemy.name eq "undefined">> <<set $enemy to { name: "Wasteland Scum", hp: 40, currentHp: 40, maxHp: 40, minDmg: 8, maxDmg: 14, rarity: "Common" }>> <</if>> /* TURN VE AP DEĞİŞKENLERİ */ <<if ndef $combatTurn>><<set $combatTurn to "player">><</if>> <<if ndef $playerAP>><<set $playerAP to 3>><</if>> <<if ndef $maxPlayerAP>><<set $maxPlayerAP to 3>><</if>> /* COMPANION STATLARI */ <<if ndef $companion>><<set $companion to { active: true, name: "K9-Unit", hp: 50, maxHp: 50, ap: 2, maxAp: 2 }>><</if>> /* MATERYALLER KONTROL */ <<if ndef $materials>><<set $materials to { rope: 1, scrip: 100 }>><</if>> <<set _genderFormat to $playerGender.toLowerCase()>> <<set _rawClass to $playerBackground.toLowerCase()>> <<if _rawClass eq "field medic">><<set _rawClass to "medic">><</if>> <<if _rawClass eq "mutated anomaly">><<set _rawClass to "mutated">><</if>> <<set _classFormat to _rawClass.replace(" ", "_")>> <<if ndef $playerArmorTier>><<set $playerArmorTier to "Common">><</if>> <<set _armorSuffix to ($playerArmorTier eq "Common" ? "_start_armor" : "_" + $playerArmorTier.toLowerCase() + "_armor")>> <<set _playerAvatarUrl to "images/avatars/" + _genderFormat + "_" + _classFormat + _armorSuffix + ".jpg">> <<set _plrClass to ($playerBackground eq 'Mutated Anomaly' ? 'mutant-filter' : '')>> <<if ndef $combatActive>> <<set $combatActive to true>> <<set $enemy.maxHp to ($enemy.hp or 40) + ($level * 30)>> <<set $enemy.currentHp to $enemy.maxHp>> <<set $combatLog.unshift("> THREAT DETECTED: " + $enemy.name.toUpperCase() + " approaches!")>> <</if>> <<set _enemyFileName to $enemy.name.toLowerCase().replace(/ /g, "_")>> <<if _enemyFileName eq "wasteland_raider">><<set _enemyFileName to "wasteland_scum">><</if>> <<set _enemyAvatarUrl to "images/npcs/enemy/all/enemy_" + _enemyFileName + ".jpg">> <style> .combat-portrait { width: 140px; height: 210px; border-radius: 8px; position: relative; overflow: hidden; margin: 0 auto 10px auto; } .combat-bar-bg { width: 100%; background: #000; height: 12px; border-radius: 4px; overflow: hidden; border: 1px solid rgba(255,255,255,0.2); } .mutant-filter { filter: sepia(100%) hue-rotate(90deg) saturate(400%) contrast(150%) brightness(80%); } .action-btn { background: rgba(0, 255, 128, 0.1); border: 1px solid #34d399; color: #34d399; padding: 10px; text-align: center; border-radius: 4px; font-weight: bold; cursor: pointer; } .action-btn:hover { background: rgba(0, 255, 128, 0.25); } .heal-btn { background: rgba(56, 189, 248, 0.1); border: 1px solid #38bdf8; color: #38bdf8; padding: 10px; text-align: center; border-radius: 4px; font-weight: bold; cursor: pointer; } .capture-btn { background: rgba(251, 191, 36, 0.15); border: 1px solid #fbbf24; color: #fbbf24; padding: 10px; text-align: center; border-radius: 4px; font-weight: bold; } .disabled-btn { background: rgba(100, 100, 100, 0.1); border: 1px solid #555; color: #777; padding: 10px; text-align: center; border-radius: 4px; font-weight: bold; } </style> <div style="background: linear-gradient(180deg, rgba(5,10,5,0.75), rgba(35,5,5,0.95)), url('images/locations/combat_bg.jpg') center/cover; padding: 25px; border: 2px solid #ef4444; border-radius: 8px; font-family: 'Courier New', monospace; box-shadow: 0 0 30px rgba(239, 68, 68, 0.4);"> <div style="text-align: center; border-bottom: 1px dashed #ef4444; padding-bottom: 15px; margin-bottom: 20px;"> <h2 style="color: #ef4444; margin: 0; letter-spacing: 3px;">[ TACTICAL TURN-BASED COMBAT ]</h2> </div> <!-- SAVAŞ LOG EKRANI --> <div style="background: rgba(10, 0, 0, 0.65); border: 1px solid #7f1d1d; border-radius: 4px; padding: 15px; margin-bottom: 20px; height: 110px; overflow-y: auto; display: flex; flex-direction: column-reverse; backdrop-filter: blur(2px);"> <<for _i to 0; _i lt $combatLog.length; _i++>> <div style="color: <<if $combatLog[_i].includes('You') or $combatLog[_i].includes('SUCCESS') or $combatLog[_i].includes('Companion') or $combatLog[_i].includes('Heal') or $combatLog[_i].includes('CAPTURE')>>#34d399<<else>>#ef4444<</if>>;"><<print $combatLog[_i]>></div> <</for>> </div> <!-- 1. DÜŞMANLAR CEPHESİ (YUKARI) --> <div style="display: flex; justify-content: center; flex-wrap: wrap; gap: 20px; margin-bottom: 30px;"> <div style="width: 200px; background: rgba(30,0,0,0.5); border: 1px solid #7f1d1d; padding: 12px; border-radius: 6px; text-align: center; backdrop-filter: blur(4px);"> <div class="combat-portrait" style="border: 2px solid #ef4444; margin: 0 auto 8px auto;"> <<print '<img src="' + _enemyAvatarUrl + '" style="width: 100%; height: 100%; object-fit: cover;" onerror="this.src=\'https://placehold.co/512x768/000/f00?text=ENEMY\';">'>> </div> <div style="color: #fca5a5; font-weight: bold; font-size: 0.9rem; margin-bottom: 6px;"><<print $enemy.name.toUpperCase()>></div> <<set _enmPct to Math.clamp(($enemy.currentHp / $enemy.maxHp) * 100, 0, 100)>> <div class="combat-bar-bg"><div @style="'width: ' + _enmPct + '%; background: #ef4444; height: 100%;'"></div></div> <div style="color: #cbd5e1; font-size: 0.8rem; margin-top: 5px;">HP: <<print Math.max(0, $enemy.currentHp)>> / <<print $enemy.maxHp>></div> </div> </div> <div style="text-align: center; color: #ef4444; font-weight: bold; font-size: 1.2rem; margin-bottom: 30px; letter-spacing: 4px;">VS</div> <!-- 2. MÜTTEFİKLER CEPHESİ (AŞAĞI) --> <div style="display: flex; justify-content: center; gap: 20px; margin-bottom: 25px;"> <!-- OYUNCU KARTI --> <div style="width: 200px; background: rgba(0,20,10,0.5); border: 1px solid #0f766e; padding: 12px; border-radius: 6px; text-align: center; backdrop-filter: blur(4px);"> <div class="combat-portrait" style="border: 2px solid #34d399; margin: 0 auto 8px auto;"> <<print '<img src="' + _playerAvatarUrl + '" class="' + _plrClass + '" style="width: 100%; height: 100%; object-fit: cover;" onerror="this.src=\'https://placehold.co/512x768/000/0f0?text=YOU\';">'>> </div> <div style="color: #5eead4; font-weight: bold; font-size: 0.9rem; margin-bottom: 6px;">OPERATOR</div> <<set _plrPct to Math.clamp(($hp / $maxHp) * 100, 0, 100)>> <div class="combat-bar-bg"><div @style="'width: ' + _plrPct + '%; background: #34d399; height: 100%;'"></div></div> <div style="color: #cbd5e1; font-size: 0.8rem; margin-top: 5px;">HP: <<print $hp>>/<<print $maxHp>></div> <div style="color: #38bdf8; font-size: 0.8rem; font-weight: bold; margin-top: 3px;">AP: <<print $playerAP>>/<<print $maxPlayerAP>></div> </div> <!-- YOLDAŞ KARTI --> <<if $companion.active is true>> <div style="width: 200px; background: rgba(0,20,20,0.5); border: 1px solid #0284c7; padding: 12px; border-radius: 6px; text-align: center; backdrop-filter: blur(4px);"> <div class="combat-portrait" style="border: 2px solid #38bdf8; margin: 0 auto 8px auto;"> <img src="images/npcs/companion/companion_main.jpg" style="width: 100%; height: 100%; object-fit: cover;" onerror="this.src='https://placehold.co/512x768/000/38bdf8?text=ALLY';"> </div> <div style="color: #38bdf8; font-weight: bold; font-size: 0.9rem; margin-bottom: 6px;"><<print $companion.name.toUpperCase()>></div> <<set _compPct to Math.clamp(($companion.hp / $companion.maxHp) * 100, 0, 100)>> <div class="combat-bar-bg"><div @style="'width: ' + _compPct + '%; background: #38bdf8; height: 100%;'"></div></div> <div style="color: #cbd5e1; font-size: 0.8rem; margin-top: 5px;">HP: <<print $companion.hp>>/<<print $companion.maxHp>></div> <div style="color: #38bdf8; font-size: 0.8rem; font-weight: bold; margin-top: 3px;">AP: <<print $companion.ap>>/<<print $companion.maxAp>></div> </div> <</if>> </div> <!-- KONTROL / TURN MENÜSÜ --> <<if $enemy.currentHp gt 0 and $hp gt 0>> <!-- 1. OYUNCU TURU --> <<if $combatTurn eq "player">> <div style="background: rgba(0, 40, 20, 0.6); border: 1px solid #34d399; padding: 12px; border-radius: 6px;"> <div style="color: #34d399; font-weight: bold; margin-bottom: 10px; font-size: 0.95rem;">>>> OPERATOR TURN (AP Available: <<print $playerAP>>)</div> <div style="display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;"> <!-- Hafif Atış (1 AP) --> <<if $playerAP gte 1>> <div class="action-btn"> <<link "LIGHT SHOT (1 AP)" "Combat">> <<set _dmg to random(6, 12)>> <<set $enemy.currentHp -= _dmg>> <<if $enemy.currentHp lt 0>><<set $enemy.currentHp to 0>><</if>> <<set $playerAP -= 1>> <<set $combatLog.unshift("You fired a light shot for " + _dmg + " damage.")>> <</link>> </div> <<else>> <div class="disabled-btn">LIGHT SHOT (1 AP)</div> <</if>> <!-- Ağır Patlayıcı (2 AP) --> <<if $playerAP gte 2>> <div class="action-btn"> <<link "HEAVY BLAST (2 AP)" "Combat">> <<set _dmg to random(14, 24)>> <<set $enemy.currentHp -= _dmg>> <<if $enemy.currentHp lt 0>><<set $enemy.currentHp to 0>><</if>> <<set $playerAP -= 2>> <<set $combatLog.unshift("You launched a heavy explosive for " + _dmg + " damage!")>> <</link>> </div> <<else>> <div class="disabled-btn">HEAVY BLAST (2 AP)</div> <</if>> <!-- First Aid Heal (2 AP) --> <<if $playerAP gte 2>> <div class="heal-btn"> <<link "FIRST AID (2 AP)" "Combat">> <<set _heal to random(15, 25)>> <<set $hp = Math.min($maxHp, $hp + _heal)>> <<set $playerAP -= 2>> <<set $combatLog.unshift("You used a stim-patch and healed yourself for " + _heal + " HP.")>> <</link>> </div> <<else>> <div class="disabled-btn">FIRST AID (2 AP)</div> <</if>> <!-- YAKALAMA SEÇENEĞİ (HATASIZ BUTON YAPISI) --> <<if $enemy.currentHp lte 25>> <<if $materials.rope gt 0>> <div class="capture-btn"> <<link "CAPTURE (2 AP)">> <<set $materials.rope -= 1>> <<set $materials.scrip += 80>> <<set _xpGain to random(25, 40)>> <<set $xp += _xpGain>> <<set $enemy.currentHp to 0>> <<set $combatLog.unshift("CAPTURE SUCCESS! +80 Scrip & XP gained.")>> <<goto "Combat">> <</link>> </div> <<else>> <div class="disabled-btn">NO ROPE FOR CAPTURE</div> <</if>> <</if>> <!-- Turu Bitir --> <div style="background: rgba(56, 189, 248, 0.1); border: 1px solid #38bdf8; text-align: center; padding: 10px; border-radius: 4px; grid-column: span 1;"> <<if $companion.active is true and $companion.hp gt 0>> @@color:#38bdf8;<<link "END TURN -> COMPANION" "Combat">> <<set $combatTurn to "companion">> <</link>>@@ <<else>> @@color:#38bdf8;<<link "END TURN -> ENEMY" "Combat">> <<set $playerAP to $maxPlayerAP>> <<set $combatTurn to "enemy">> <</link>>@@ <</if>> </div> </div> </div> <!-- 2. YOLDAŞ (COMPANION) TURU --> <<elseif $combatTurn eq "companion">> <div style="background: rgba(0, 30, 40, 0.6); border: 1px solid #38bdf8; padding: 12px; border-radius: 6px;"> <div style="color: #38bdf8; font-weight: bold; margin-bottom: 10px; font-size: 0.95rem;">>>> <<print $companion.name.toUpperCase()>> TURN (AP: <<print $companion.ap>>)</div> <div style="display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 10px;"> <!-- Zırh Kırıcı (1 AP) --> <<if $companion.ap gte 1>> <div class="action-btn"> <<link "ARMOR SHRED (1 AP)" "Combat">> <<set _dmg to random(5, 10)>> <<set $enemy.currentHp -= _dmg>> <<if $enemy.currentHp lt 0>><<set $enemy.currentHp to 0>><</if>> <<set $companion.ap -= 1>> <<set $combatLog.unshift($companion.name + " shredded enemy defenses for " + _dmg + " damage!")>> <</link>> </div> <<else>> <div class="disabled-btn">ARMOR SHRED (1 AP)</div> <</if>> <!-- Seri Atış (2 AP) --> <<if $companion.ap gte 2>> <div class="action-btn"> <<link "SUPPRESSIVE FIRE (2 AP)" "Combat">> <<set _dmg to random(12, 18)>> <<set $enemy.currentHp -= _dmg>> <<if $enemy.currentHp lt 0>><<set $enemy.currentHp to 0>><</if>> <<set $companion.ap -= 2>> <<set $combatLog.unshift($companion.name + " laid down suppressive fire for " + _dmg + " damage!")>> <</link>> </div> <<else>> <div class="disabled-btn">SUPPRESSIVE FIRE (2 AP)</div> <</if>> <!-- Field Patch Heal (2 AP) --> <<if $companion.ap gte 2>> <div class="heal-btn"> <<link "FIELD PATCH (2 AP)" "Combat">> <<set _heal to random(15, 25)>> <<set $companion.hp = Math.min($companion.maxHp, $companion.hp + _heal)>> <<set $companion.ap -= 2>> <<set $combatLog.unshift($companion.name + " patched up their wounds for " + _heal + " HP.")>> <</link>> </div> <<else>> <div class="disabled-btn">FIELD PATCH (2 AP)</div> <</if>> <!-- Düşman Sırasına Geç --> <div style="background: rgba(239, 68, 68, 0.15); border: 1px solid #ef4444; text-align: center; padding: 10px; border-radius: 4px;"> @@color:#ef4444;<<link "FINISH TEAM TURN" "Combat">> <<set $playerAP to $maxPlayerAP>> <<set $companion.ap to $companion.maxAp>> <<set $combatTurn to "enemy">> <</link>>@@ </div> </div> </div> <!-- 3. DÜŞMAN (ENEMY) YAPAY ZEKA MANTIĞI --> <<elseif $combatTurn eq "enemy">> <div style="background: rgba(40, 0, 0, 0.6); border: 1px solid #ef4444; padding: 15px; border-radius: 6px; text-align: center;"> <div style="color: #fca5a5; font-weight: bold; margin-bottom: 12px; font-size: 1rem;">>>> ENEMY COUNTER-ATTACK PHASE</div> <<run (function() { let target = ($companion.active && $companion.hp > 0 && Math.random() > 0.5) ? 'companion' : 'player'; let dmg = Math.floor(Math.random() * ($enemy.maxDmg - $enemy.minDmg + 1)) + $enemy.minDmg; if (target === 'companion') { variables().companion.hp = Math.max(0, variables().companion.hp - dmg); variables().combatLog.unshift($enemy.name + " counter-attacks " + variables().companion.name + " for " + dmg + " damage!"); } else { variables().hp = Math.max(0, variables().hp - dmg); variables().combatLog.unshift($enemy.name + " retaliates against you for " + dmg + " damage!"); } })()>> <<set $combatTurn to "player">> <<link "PROCEED TO NEXT ROUND" "Combat">><</link>> </div> <</if>> <<else>> <!-- SAVAŞ BİTTİ --> <<if $hp lte 0>> <div style="background: rgba(239, 68, 68, 0.2); border: 1px solid #ef4444; text-align: center; padding: 15px;"> @@color:#ef4444;<<link "FATAL INJURY - AWAKEN IN CAMP" "Camp">><<unset $combatActive>><<unset $enemy.currentHp>><<set $combatLog to []>><<set $hp to 20>><</link>>@@ </div> <<else>> <div style="background: rgba(46, 204, 113, 0.2); border: 1px solid #2ecc71; text-align: center; padding: 15px;"> <<set _xpGain to random(20, 45)>> <<set $xp += _xpGain>> <div style="font-weight: bold; color: #2ecc71;"> <<link "THREAT ELIMINATED - RETURN TO CAMP" "Camp">> <<unset $combatActive>> <<unset $enemy.currentHp>> <<set $combatLog to []>> <</link>> </div> </div> <</if>> <<endif>> </div> <</nobr>>
<<nobr>> <div style="background: linear-gradient(135deg, #050a05 0%, #064e3b 100%); padding: 25px; border: 2px solid #2ecc71; border-radius: 8px; font-family: 'Segoe UI', sans-serif; box-shadow: 0 0 30px rgba(46, 204, 113, 0.2);"> <div style="text-align: center; border-bottom: 1px dashed #2ecc71; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #2ecc71; margin: 0; letter-spacing: 3px;">[ THREAT ELIMINATED ]</h2> <div style="color: #a7f3d0; font-size: 0.9rem; margin-top: 5px;">AREA SECURED</div> </div> <!-- GÜVENLİK KALKANI --> <<if ndef $enemy>> <<set $enemy to {name: "Unknown Threat", drop: "scrap"}>> <<elseif ndef $enemy.drop>> <<set $enemy.drop to "scrap">> <</if>> <!-- GANİMET, XP VE REP HESAPLAMA --> <<set _eDrop to random(1, 3)>> <<if ndef $materials[$enemy.drop]>><<set $materials[$enemy.drop] to 0>><</if>> <<set $materials[$enemy.drop] += _eDrop>> <<set _scripDrop to random(5, 15)>> <<if ndef $materials.scrip>><<set $materials.scrip to 0>><</if>> <<set $materials.scrip += _scripDrop>> <<if ndef $xp>><<set $xp to 0>><</if>> <<set _xpDrop to random(25, 45) + ($day * 2)>> <<set $xp += _xpDrop>> <<if ndef $baseRep>><<set $baseRep to 0>><</if>> <<set _repDrop to random(2, 5)>> <<set $baseRep += _repDrop>> <div style="color: #ddd; font-size: 1rem; margin-bottom: 15px; line-height: 1.6;"> You successfully neutralized the <strong style="color:#ef4444;"><<print $enemy.name>></strong>.<br><br> <strong style="color:#ffaa00;">> SALVAGE:</strong> Extracted <<print _eDrop>> <<print $enemy.drop>>, <strong style="color:#fbbf24;"><<print _scripDrop>> Scrip</strong>, gained <strong style="color:#34d399;"><<print _xpDrop>> XP</strong> and <strong style="color:#60a5fa;">+<<print _repDrop>> Street Cred</strong>.<br> </div> /* ========================================== */ /* RANDOM ITEM DROP (EŞYA DÜŞÜRME) SİSTEMİ */ /* ========================================== */ <<if ndef $gearInventory>><<set $gearInventory to []>><</if>> <<set _dropRoll to random(1, 100)>> <<if _dropRoll lte 50>> <<set _slots to ["headgear", "chest", "legs", "boots", "gloves", "rightHand", "offHand"]>> <<set _randomSlot to _slots.random()>> <<set _baseItem to $itemDatabase[_randomSlot].random()>> <<set _rarityRoll to random(1, 100)>> <<if _rarityRoll lte 50>><<set _rarity to "Common">> <<elseif _rarityRoll lte 75>><<set _rarity to "Uncommon">> <<elseif _rarityRoll lte 90>><<set _rarity to "Rare">> <<elseif _rarityRoll lte 98>><<set _rarity to "Epic">> <<else>><<set _rarity to "Legendary">><</if>> <<set _droppedItemName to _rarity + " " + _baseItem>> <<set $gearInventory.push(_droppedItemName)>> <<set _itemColor to $rarities[_rarity].color>> <div style="background: rgba(0,0,0,0.4); border: 1px dashed <<print _itemColor>>; padding: 15px; margin-bottom: 25px; border-radius: 4px; text-align: center;"> <div style="color: #fff; font-size: 0.8rem; letter-spacing: 1px; margin-bottom: 5px;">ENEMY DROPPED EQUIPMENT!</div> <div @style="'color: ' + _itemColor + '; font-size: 1.2rem; font-weight: bold; text-shadow: 0 0 10px ' + _itemColor + ';'"> [ <<print _droppedItemName.toUpperCase()>> ] </div> <div style="color: #aaa; font-size: 0.75rem; margin-top: 5px;">Added to Gear Inventory.</div> </div> <</if>> /* ========================================== */ <!-- POI LOOT: EĞER HARİTA LOKASYONUNDAN GELDİYSE --> <<if def $targetPOIName>> <div style="background: rgba(46,204,113,0.05); border: 1px solid #115e59; padding: 15px; margin-bottom: 25px; font-family: monospace; font-size: 0.9rem; color: #ccfbf1;"> <strong style="color: #34d399; font-family: 'Segoe UI', sans-serif;">> LOCATION EXTRACTION (<<print $targetPOIName>>):</strong><br><br> <<if $targetPOILoot eq "basic">> <<set _s to random(2,6), _w to random(1,4), _c to random(0,2)>> <<set $materials.scrap += _s, $materials.wood += _w, $materials.cloth += _c>> Secured: <<print _s>> Scrap, <<print _w>> Wood, <<print _c>> Cloth. <<elseif $targetPOILoot eq "survival">> <<set _f to random(1,3), _wt to random(1,3), _m to random(0,1)>> <<set $materials.food += _f, $materials.water += _wt, $materials.medicine += _m>> Recovered: <<print _f>> Food, <<print _wt>> Water, <<print _m>> Meds. <<elseif $targetPOILoot eq "medical">> <<set _m to random(1,3), _t to random(0,2)>> <<set $materials.medicine += _m, $materials.techData += _t>> Extracted: <<print _m>> Meds, <<print _t>> Tech Data. <<elseif $targetPOILoot eq "military">> <<set _a to random(2,5), _s to random(2,4), _sc to random(5,15)>> <<set $materials.ammo += _a, $materials.scrap += _s, $materials.scrip += _sc>> Secured: <<print _a>> Ammo, <<print _s>> Scrap, <<print _sc>> Scrip. <<elseif $targetPOILoot eq "nature">> <<set _w to random(2,5), _rm to random(1,3)>> <<set $materials.wood += _w, $materials.rawMeat += _rm>> Gathered: <<print _w>> Wood, <<print _rm>> Raw Meat. <<elseif $targetPOILoot eq "gas">> <<set _s to random(2,5), _wt to random(1,4)>> <<set $materials.scrap += _s, $materials.water += _wt>> Scrounged: <<print _s>> Scrap, <<print _wt>> Water. <</if>> </div> <</if>> <!-- HİKAYE TETİKLEYİCİSİ: CIPHER --> <<if def $combatContext and $combatContext eq "cipher_ambush">> <div style="background: rgba(168, 85, 247, 0.1); border-left: 4px solid #a855f7; padding: 20px; border-radius: 4px; margin-bottom: 25px;"> <div style="color: #d8b4fe; font-weight: bold; font-size: 1.1rem; margin-bottom: 10px; letter-spacing: 1px;">[ NARRATIVE OVERRIDE: CIPHER LOCATED ]</div> <div style="color: #e2e8f0; font-size: 0.95rem; line-height: 1.6; margin-bottom: 15px;"> As the Reptilian Vanguard falls, a cloaked figure detaches from the shadows of the tunnel. It's Cipher. <br><br> "Took you long enough," he mutters, tossing you a heavily encrypted data drive. "The Vanguard is onto the broadcast array. Take this tech data back to the Comm-Server Terminal at the Command Center and decrypt it immediately." </div> <div style="color: #fbbf24; font-weight: bold; background: rgba(251, 191, 36, 0.1); padding: 10px; border: 1px dashed #fbbf24; text-align: center;"> + ACQUIRED: ENCRYPTED OS DRIVE (2 Tech Data) </div> <<set $materials.techData += 2>> </div> <<unset $combatContext>> <</if>> <!-- ANA ÜSSE KESİN DÖNÜŞ VE HATA GİDERME --> <div style="text-align: center; margin-top: 25px; padding: 15px; border: 1px solid #2ecc71; background: rgba(46, 204, 113, 0.1); border-radius: 4px;"> @@color:#2ecc71;font-weight:bold;letter-spacing:2px;<<link "PROCEED TO COMMAND CENTER" "Camp">> <<unset $enemy, $targetPOILoot, $targetPOIName, $combatLog, $returnPassage>> <<run window.setup.updateSidebar()>> <</link>>@@ </div> </div> <</nobr>>
<<nobr>> <div style="background-color: #050a05; padding: 40px; border: 2px solid #ef4444; border-radius: 8px; font-family: 'Courier New', monospace; text-align: center; margin-top: 10vh;"> <h1 style="color: #ef4444; font-size: 3rem; margin: 0; letter-spacing: 5px; text-shadow: 0 0 20px #ef4444;">[ SIGNAL LOST ]</h1> <div style="color: #aaa; font-size: 1.2rem; margin-top: 20px; margin-bottom: 40px;"> Operator <strong style="color: #fff;"><<print $playerName>></strong> has flatlined.<br> Survived for <strong style="color: #ffaa00;"><<print $day>> Days</strong> in the wasteland. </div> <div style="color: #ef4444; font-size: 0.9rem; margin-bottom: 40px; border: 1px dashed #ef4444; padding: 15px; display: inline-block;"> FATAL ERROR: BIOMETRIC SYSTEMS OFFLINE. PERMADEATH PROTOCOL ENGAGED. </div> <div> <<link ">>> INITIATE NEW OPERATOR PROTOCOL (RESTART) <<<">> <<run Engine.restart()>> <</link>> </div> </div> <</nobr>>
<<nobr>> <<set $currentMenu to "Comms">> <<run window.setup.updateSidebar()>> <</nobr>> <style> .comms-container { background-color: #1a0b2e; padding: 20px; border: 2px solid #a855f7; border-radius: 8px; font-family: 'Segoe UI', Tahoma, sans-serif; box-shadow: 0 0 25px rgba(168, 85, 247, 0.2); } .comms-grid { display: flex; flex-wrap: wrap; gap: 12px; justify-content: flex-start; margin-bottom: 20px; } .comms-card { background: rgba(0, 0, 0, 0.75); border: 1px solid #7e22ce; border-radius: 6px; width: 280px; overflow: hidden; display: flex; flex-direction: column; justify-content: space-between; box-shadow: 0 4px 12px rgba(0,0,0,0.6); } .comms-img { height: 110px; width: 100%; object-fit: cover; border-bottom: 2px solid #7e22ce; background: #000; } .main-banner-img { height: 140px; width: 100%; object-fit: cover; border: 1px solid #a855f7; border-radius: 6px; margin-bottom: 20px; background: #000; box-shadow: 0 0 15px rgba(168, 85, 247, 0.3); } .section-title { color: #d8b4fe; font-size: 0.9rem; font-family: 'Courier New', monospace; letter-spacing: 2px; margin: 20px 0 10px 0; text-transform: uppercase; } .cyber-divider { border: 0; height: 1px; background: linear-gradient(90deg, transparent, #a855f7, transparent); margin: 25px 0; } /* Cyberpunk Buton Tasarımları */ .cyber-comms-btn { display: block; width: 100%; background: linear-gradient(135deg, #7e22ce 0%, #6b21a8 100%); border: 1px solid #a855f7; color: #f3e8ff !important; padding: 8px; text-align: center; font-weight: bold; font-family: 'Courier New', monospace; font-size: 0.85rem; letter-spacing: 1px; border-radius: 4px; cursor: pointer; text-decoration: none !important; box-sizing: border-box; box-shadow: 0 0 10px rgba(168, 85, 247, 0.3); transition: all 0.2s; } .cyber-comms-btn:hover { background: linear-gradient(135deg, #6b21a8 100%, #7e22ce 0%); border-color: #d8b4fe; box-shadow: 0 0 15px rgba(168, 85, 247, 0.6); } .cyber-chat-btn { display: block; width: 100%; background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); border: 1px solid #3b82f6; color: #eff6ff !important; padding: 8px; text-align: center; font-weight: bold; font-family: 'Courier New', monospace; font-size: 0.85rem; letter-spacing: 1px; border-radius: 4px; cursor: pointer; text-decoration: none !important; box-sizing: border-box; box-shadow: 0 0 10px rgba(59, 130, 246, 0.3); transition: all 0.2s; } .cyber-chat-btn:hover { background: linear-gradient(135deg, #1d4ed8 100%, #2563eb 0%); border-color: #93c5fd; box-shadow: 0 0 15px rgba(59, 130, 246, 0.6); } .cyber-bounty-btn { display: block; width: 100%; background: linear-gradient(135deg, #059669 0%, #047857 100%); border: 1px solid #10b981; color: #ecfdf5 !important; padding: 8px; text-align: center; font-weight: bold; font-family: 'Courier New', monospace; font-size: 0.85rem; letter-spacing: 1px; border-radius: 4px; cursor: pointer; text-decoration: none !important; box-sizing: border-box; box-shadow: 0 0 10px rgba(16, 185, 129, 0.3); transition: all 0.2s; } .cyber-bounty-btn:hover { background: linear-gradient(135deg, #047857 100%, #059669 0%); border-color: #34d399; box-shadow: 0 0 15px rgba(16, 185, 129, 0.6); } .cyber-paypal-btn { display: block; width: 100%; background: linear-gradient(135deg, #0284c7 0%, #0369a1 100%); border: 1px solid #38bdf8; color: #f8fafc !important; padding: 8px; text-align: center; font-weight: bold; font-family: 'Courier New', monospace; font-size: 0.85rem; letter-spacing: 1px; border-radius: 4px; cursor: pointer; text-decoration: none !important; box-sizing: border-box; box-shadow: 0 0 10px rgba(56, 189, 248, 0.3); transition: all 0.2s; } .cyber-paypal-btn:hover { background: linear-gradient(135deg, #0369a1 0%, #0284c7 100%); border-color: #7dd3fc; box-shadow: 0 0 15px rgba(56, 189, 248, 0.6); } .cyber-return-btn { display: inline-block; background: linear-gradient(135deg, #7e22ce 0%, #581c87 100%); border: 1px solid #c084fc; color: #f3e8ff !important; padding: 10px 25px; font-weight: bold; font-family: 'Courier New', monospace; letter-spacing: 2px; border-radius: 4px; text-decoration: none !important; box-shadow: 0 0 15px rgba(168, 85, 247, 0.3); transition: all 0.2s; } .cyber-return-btn:hover { background: linear-gradient(135deg, #581c87 100%, #7e22ce 0%); border-color: #e9d5ff; box-shadow: 0 0 20px rgba(168, 85, 247, 0.5); } </style> <div class="comms-container"> <!-- BAŞLIK --> <div style="text-align: center; border-bottom: 1px dashed #a855f7; padding-bottom: 12px; margin-bottom: 15px;"> <h2 style="color: #a855f7; margin: 0; letter-spacing: 3px; text-shadow: 0 0 10px #a855f7; font-size: 1.5rem;">[ COMM-SERVER TERMINAL ]</h2> <div style="margin-top: 6px; font-size: 0.85rem; color: #d8b4fe;">ENCRYPTED NETWORK UPLINK ACTIVE</div> </div> <!-- TERMINAL CHAT GÖRSEL BANNERI --> <img src="images/locations/comms_chat.jpg" class="main-banner-img" onerror="this.src='https://placehold.co/800x200/000/a855f7?text=COMM-SERVER+UPLINK';"> <!-- SON İŞLEM LOGU --> <<if def $commsLog>> <div style="border: 1px solid #2ecc71; background: rgba(46, 204, 113, 0.1); padding: 12px; border-radius: 4px; margin-bottom: 20px; font-family: monospace;"> <div style="color: #2ecc71; font-weight: bold; margin-bottom: 8px;">✅ DECRYPTION SUCCESSFUL: RESTORED LOCAL NETWORK ARCHIVE</div> <div style="color: #cbd5e1; font-style: italic; margin-bottom: 10px;">"<<print $commsLog>>"</div> <<if def $commsReward>> <div style="color: #fbbf24; text-align: center; border-top: 1px dashed #fbbf24; padding-top: 8px;"> > NETWORK PAYMENT RECEIVED: +<<print $commsReward>> SCRIP </div> <</if>> </div> <<unset $commsLog, $commsReward>> <</if>> <!-- ÜST KISIM: ANA AĞ İŞLEMLERİ --> <div class="section-title">>> MAIN NETWORK OPERATIONS</div> <div class="comms-grid"> <!-- 1. DECRYPT TECH DATA --> <div class="comms-card"> <img src="images/locations/comms_decrypt.jpg" class="comms-img" onerror="this.src='https://placehold.co/600x300/000/a855f7?text=DECRYPT';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #d8b4fe; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">💾 DECRYPT TECH DATA</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Decode encrypted corporate logs and regional research data.</div> <div style="color: #fbbf24; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">COST: 1 Tech Data | REWARD: Lore + Scrip</div> </div> <div> <<if $materials.techData gte 1>> <<link "<span class='cyber-comms-btn'>💾 UPLOAD & DECRYPT</span>" "Comms">> <<set $materials.techData -= 1>> <<set _rewardScrip to random(15, 30)>> <<set $materials.scrip += _rewardScrip>> <<set _lores to [ "INDUSTRIAL MEMO (SILESIA-TECH): 'Do not allow surface survivors near the automated grid substations. The cooling fluids have leaked into the water table, causing severe cognitive mirroring among local lifeforms.'", "VANGUARD SECURE CHAT: 'Cipher was last seen near the Katowice transit hubs. He's carrying the uncorrupted OS drive. Kill on sight. Do not let him reach the broadcasting array.'", "PROJECT REBIRTH LOG: 'The nanomachine integration is stable, but the psychological toll is high. Subjects believe they are part of a hive mind. The Reptilian facade is working perfectly as a control mechanism.'" ]>> <<set $commsLog to _lores.random()>> <<set $commsReward to _rewardScrip>> <<set $unlockedTechQuest to true>> <</link>> <<else>> <div style="color: #ef4444; font-size: 0.75rem; font-weight: bold; text-align: center; border: 1px dashed #ef4444; padding: 6px;">[ NO TECH DATA FOUND ]</div> <<endif>> </div> </div> </div> <!-- 2. SERVER CHAT BOX (Doğrudan ServerChat pasajına bağlanır) --> <div class="comms-card"> <img src="images/locations/comms_chat.jpg" class="comms-img" onerror="this.src='https://placehold.co/600x300/000/3b82f6?text=SERVER+CHAT';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #60a5fa; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">💬 SECTOR SERVER CHAT</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">"Use the computer and access the fucking server." Connect to survivor chat mesh.</div> <div style="color: #fbbf24; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">STATUS: ENCRYPTED MESH ONLINE</div> </div> <div> <<link "<span class='cyber-chat-btn'>💬 ACCESS SERVER CHAT</span>" "ServerChat">><</link>> </div> </div> </div> <!-- 3. BOUNTY BOARD --> <div class="comms-card" style="position: relative;"> <div style="position: absolute; top: 10px; right: -25px; background: #10b981; color: #000; font-weight: bold; font-size: 0.65rem; padding: 2px 30px; transform: rotate(45deg); box-shadow: 0 0 10px #10b981;">ACTIVE</div> <img src="images/locations/comms_bounty.jpg" class="comms-img" onerror="this.src='https://placehold.co/600x300/000/10b981?text=BOUNTY';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #34d399; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">📜 BOUNTY BOARD</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Accept assassination and retrieval contracts from local factions.</div> <div style="color: #fbbf24; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">STATUS: CONNECTED</div> </div> <div> <<link "<span class='cyber-bounty-btn'>📜 VIEW BOUNTY BOARD</span>" "Quests">><</link>> </div> </div> </div> </div> <!-- NEON AYIRICI ÇİZGİ --> <hr class="cyber-divider"> <!-- ALT KISIM: KARABORSA VE GERÇEK PARA UPLINK --> <div class="section-title">>> CONTRABAND BLACK MARKET ($1 EACH - PAYPAL DIRECT)</div> <div class="comms-grid"> <!-- 1. CONTRABAND: AMMO --> <div class="comms-card"> <img src="images/locations/comms_ammo.jpg" class="comms-img" onerror="this.src='https://placehold.co/600x300/000/f87171?text=AMMO';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #f87171; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">📦 CONTRABAND: AMMO</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Purchase smuggler munitions instantly via secure micro-tx.</div> <div style="color: #fbbf24; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">PRICE: $1.00 | +2 Ammo</div> </div> <div> <a href="https://www.paypal.me/ashenveilgame/1usd?note=Contraband:%20Ammo" target="_blank" class="cyber-paypal-btn">📦 BUY AMMO ($1)</a> </div> </div> </div> <!-- 2. CONTRABAND: MEDICINE --> <div class="comms-card"> <img src="images/locations/comms_meds.jpg" class="comms-img" onerror="this.src='https://placehold.co/600x300/000/38bdf8?text=MEDICINE';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #38bdf8; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">💉 CONTRABAND: MEDICINE</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Uncorrupted medical supplies delivered to base inventory.</div> <div style="color: #fbbf24; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">PRICE: $1.00 | +1 Medicine</div> </div> <div> <a href="https://www.paypal.me/ashenveilgame/1usd?note=Contraband:%20Medicine" target="_blank" class="cyber-paypal-btn">💉 BUY MEDICINE ($1)</a> </div> </div> </div> <!-- 3. ENERGY BOOSTER --> <div class="comms-card"> <img src="images/locations/comms_energy.jpg" class="comms-img" onerror="this.src='https://placehold.co/600x400/000/f59e0b?text=ENERGY+BOOSTER';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #f59e0b; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">⚡ ENERGY BOOSTER</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Military stimulant. Instantly restores stamina and energy.</div> <div style="color: #fbbf24; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">PRICE: $1.00 | FULL ENERGY</div> </div> <div> <a href="https://www.paypal.me/ashenveilgame/1usd?note=Energy%20Booster" target="_blank" class="cyber-paypal-btn">⚡ BUY BOOSTER ($1)</a> </div> </div> </div> <!-- 4. SURVIVAL RATIONS --> <div class="comms-card"> <img src="images/locations/comms_ration.jpg" class="comms-img" onerror="this.src='https://placehold.co/600x400/000/10b981?text=RATION+PACK';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #34d399; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">🥫 SURVIVAL RATIONS</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Sealed food packets. Relieves hunger during wasteland treks.</div> <div style="color: #fbbf24; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">PRICE: $1.00 | +1 Food</div> </div> <div> <a href="https://www.paypal.me/ashenveilgame/1usd?note=Survival%20Rations" target="_blank" class="cyber-paypal-btn">🥫 BUY RATIONS ($1)</a> </div> </div> </div> <!-- 5. REPAIR KIT --> <div class="comms-card"> <img src="images/locations/comms_repair.jpg" class="comms-img" onerror="this.src='https://placehold.co/600x400/000/38bdf8?text=REPAIR+KIT';"> <div style="padding: 12px; display: flex; flex-direction: column; flex-grow: 1; justify-content: space-between;"> <div> <div style="color: #38bdf8; font-size: 0.95rem; font-weight: bold; margin-bottom: 4px;">🔧 FIELD REPAIR KIT</div> <div style="color: #94a3b8; font-size: 0.75rem; margin-bottom: 6px; line-height: 1.2;">Tools and adhesives to restore worn equipment durability.</div> <div style="color: #fbbf24; font-size: 0.75rem; margin-bottom: 10px; font-family: monospace;">PRICE: $1.00 | +1 Kit</div> </div> <div> <a href="https://www.paypal.me/ashenveilgame/1usd?note=Field%20Repair%20Kit" target="_blank" class="cyber-paypal-btn">🔧 BUY REPAIR KIT ($1)</a> </div> </div> </div> </div> <!-- ÜSSE GERİ DÖNÜŞ --> <div style="text-align: center; margin-top: 25px;"> <<link "<span class='cyber-return-btn'>🏠 RETURN TO COMMAND CENTER</span>" "Camp">><</link>> </div> </div>
<<nobr>> <<set $currentMenu to "Labor">> <<run window.setup.updateSidebar()>> <div style="background-color: #050a05; padding: 30px; border: 2px solid #38bdf8; border-radius: 8px; font-family: 'Segoe UI', Tahoma, sans-serif; box-shadow: 0 0 25px rgba(56, 189, 248, 0.15);"> <div style="text-align: center; border-bottom: 1px dashed #38bdf8; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #38bdf8; margin: 0; letter-spacing: 3px; text-shadow: 0 0 10px #38bdf8;">[ COLONY LABOR UNITS ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #94a3b8;">SURVIVOR ASSIGNMENTS & RESOURCE PRODUCTION</div> </div> <div style="display: flex; justify-content: space-between; align-items: center; background: rgba(56, 189, 248, 0.1); border: 1px solid #0284c7; padding: 15px; border-radius: 4px; margin-bottom: 25px;"> <span style="color: #38bdf8; font-weight: bold; font-size: 1.1rem; letter-spacing: 1px;">TOTAL UNASSIGNED SURVIVORS: <<print $survivors>></span> @@color:#7dd3fc;font-size:0.8rem;font-weight:bold;<<link "[ +1 TEST SURVIVOR ]" "Labor">><<set $survivors += 1>><</link>>@@ </div> <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 15px;"> <!-- SCRAP --> <div style="background: rgba(0,0,0,0.5); border: 1px solid #334155; padding: 15px; border-radius: 4px;"> <strong style="color: #f97316; display: block; margin-bottom: 10px;">📦 SCRAP SCAVENGERS</strong> <div style="color: #cbd5e1; font-size: 0.9rem; margin-bottom: 10px;">Units currently assigned: <strong style="color: #fff;"><<print $laborScrap>></strong></div> <div style="display: flex; gap: 10px; margin-bottom: 15px; font-weight: bold; font-size: 0.85rem;"> <<if $laborScrap gt 0>> @@color:#ef4444;<<link "[-] REMOVE" "Labor">><<set $laborScrap -= 1, $survivors += 1>><</link>>@@ <<else>> <span style="color: #64748b;">[-] REMOVE</span> <</if>> <<if $survivors gt 0>> @@color:#34d399;<<link "[+] ASSIGN" "Labor">><<set $laborScrap += 1, $survivors -= 1>><</link>>@@ <<else>> <span style="color: #64748b;">[+] ASSIGN</span> <</if>> </div> <div style="color: #94a3b8; font-size: 0.8rem;">Generates +1 Scrap per unit/day (Sleep).</div> </div> <!-- WOOD --> <div style="background: rgba(0,0,0,0.5); border: 1px solid #334155; padding: 15px; border-radius: 4px;"> <strong style="color: #d97706; display: block; margin-bottom: 10px;">🪵 WOOD CUTTERS</strong> <div style="color: #cbd5e1; font-size: 0.9rem; margin-bottom: 10px;">Units currently assigned: <strong style="color: #fff;"><<print $laborWood>></strong></div> <div style="display: flex; gap: 10px; margin-bottom: 15px; font-weight: bold; font-size: 0.85rem;"> <<if $laborWood gt 0>> @@color:#ef4444;<<link "[-] REMOVE" "Labor">><<set $laborWood -= 1, $survivors += 1>><</link>>@@ <<else>> <span style="color: #64748b;">[-] REMOVE</span> <</if>> <<if $survivors gt 0>> @@color:#34d399;<<link "[+] ASSIGN" "Labor">><<set $laborWood += 1, $survivors -= 1>><</link>>@@ <<else>> <span style="color: #64748b;">[+] ASSIGN</span> <</if>> </div> <div style="color: #94a3b8; font-size: 0.8rem;">Generates +1 Wood per unit/day (Sleep).</div> </div> <!-- CLOTH --> <div style="background: rgba(0,0,0,0.5); border: 1px solid #334155; padding: 15px; border-radius: 4px;"> <strong style="color: #38bdf8; display: block; margin-bottom: 10px;">🧵 CLOTH SCAVENGERS</strong> <div style="color: #cbd5e1; font-size: 0.9rem; margin-bottom: 10px;">Units currently assigned: <strong style="color: #fff;"><<print $laborCloth>></strong></div> <div style="display: flex; gap: 10px; margin-bottom: 15px; font-weight: bold; font-size: 0.85rem;"> <<if $laborCloth gt 0>> @@color:#ef4444;<<link "[-] REMOVE" "Labor">><<set $laborCloth -= 1, $survivors += 1>><</link>>@@ <<else>> <span style="color: #64748b;">[-] REMOVE</span> <</if>> <<if $survivors gt 0>> @@color:#34d399;<<link "[+] ASSIGN" "Labor">><<set $laborCloth += 1, $survivors -= 1>><</link>>@@ <<else>> <span style="color: #64748b;">[+] ASSIGN</span> <</if>> </div> <div style="color: #94a3b8; font-size: 0.8rem;">Generates +1 Cloth per unit/day (Sleep).</div> </div> <!-- HUNTERS --> <div style="background: rgba(0,0,0,0.5); border: 1px solid #334155; padding: 15px; border-radius: 4px;"> <strong style="color: #ef4444; display: block; margin-bottom: 10px;">🏹 HUNTERS & FISHERMEN</strong> <div style="color: #cbd5e1; font-size: 0.9rem; margin-bottom: 10px;">Units currently assigned: <strong style="color: #fff;"><<print $laborHunters>></strong></div> <div style="display: flex; gap: 10px; margin-bottom: 15px; font-weight: bold; font-size: 0.85rem;"> <<if $laborHunters gt 0>> @@color:#ef4444;<<link "[-] REMOVE" "Labor">><<set $laborHunters -= 1, $survivors += 1>><</link>>@@ <<else>> <span style="color: #64748b;">[-] REMOVE</span> <</if>> <<if $survivors gt 0>> @@color:#34d399;<<link "[+] ASSIGN" "Labor">><<set $laborHunters += 1, $survivors -= 1>><</link>>@@ <<else>> <span style="color: #64748b;">[+] ASSIGN</span> <</if>> </div> <div style="color: #94a3b8; font-size: 0.8rem;">Generates +1 Raw Meat per unit/day (Sleep).</div> </div> <!-- FORAGERS --> <div style="background: rgba(0,0,0,0.5); border: 1px solid #334155; padding: 15px; border-radius: 4px;"> <strong style="color: #4ade80; display: block; margin-bottom: 10px;">🌿 FORAGERS</strong> <div style="color: #cbd5e1; font-size: 0.9rem; margin-bottom: 10px;">Units currently assigned: <strong style="color: #fff;"><<print $laborForagers>></strong></div> <div style="display: flex; gap: 10px; margin-bottom: 15px; font-weight: bold; font-size: 0.85rem;"> <<if $laborForagers gt 0>> @@color:#ef4444;<<link "[-] REMOVE" "Labor">><<set $laborForagers -= 1, $survivors += 1>><</link>>@@ <<else>> <span style="color: #64748b;">[-] REMOVE</span> <</if>> <<if $survivors gt 0>> @@color:#34d399;<<link "[+] ASSIGN" "Labor">><<set $laborForagers += 1, $survivors -= 1>><</link>>@@ <<else>> <span style="color: #64748b;">[+] ASSIGN</span> <</if>> </div> <div style="color: #94a3b8; font-size: 0.8rem;">Generates +1 Berries & +1 Water per unit/day.</div> </div> <!-- MEDICS --> <div style="background: rgba(0,0,0,0.5); border: 1px solid #334155; padding: 15px; border-radius: 4px;"> <strong style="color: #c084fc; display: block; margin-bottom: 10px;">💊 MEDICAL SCAVENGERS</strong> <div style="color: #cbd5e1; font-size: 0.9rem; margin-bottom: 10px;">Units currently assigned: <strong style="color: #fff;"><<print $laborMedics>></strong></div> <div style="display: flex; gap: 10px; margin-bottom: 15px; font-weight: bold; font-size: 0.85rem;"> <<if $laborMedics gt 0>> @@color:#ef4444;<<link "[-] REMOVE" "Labor">><<set $laborMedics -= 1, $survivors += 1>><</link>>@@ <<else>> <span style="color: #64748b;">[-] REMOVE</span> <</if>> <<if $survivors gt 0>> @@color:#34d399;<<link "[+] ASSIGN" "Labor">><<set $laborMedics += 1, $survivors -= 1>><</link>>@@ <<else>> <span style="color: #64748b;">[+] ASSIGN</span> <</if>> </div> <div style="color: #94a3b8; font-size: 0.8rem;">Generates +1 Medicine per unit/day (Sleep).</div> </div> </div> <!-- PATLAMAYAN GÜVENLİ GERİ DÖNÜŞ BUTONU --> <div style="text-align: center; margin-top: 25px; padding: 15px; border: 1px solid #38bdf8; background: rgba(56, 189, 248, 0.1); border-radius: 4px;"> @@color:#38bdf8;font-weight:bold;letter-spacing:2px;<<link "RETURN TO COMMAND CENTER" "Camp">><</link>>@@ </div> </div> <</nobr>>
<<nobr>> <<if ndef $startingCity>><<set $startingCity to "Katowice">><</if>> <div style="background: linear-gradient(135deg, #050a05 0%, #291505 100%); padding: 25px; border: 2px solid #f59e0b; border-radius: 8px; font-family: 'Segoe UI', Tahoma, sans-serif; box-shadow: 0 0 30px rgba(245, 158, 11, 0.25);"> <div style="text-align: center; border-bottom: 1px dashed #f59e0b; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #fbbf24; margin: 0; letter-spacing: 3px;">[ SECURE FREQUENCY INTERCEPT ]</h2> <div style="color: #fcd34d; font-size: 0.9rem; margin-top: 5px;"><<print $startingCity.toUpperCase()>> RAIL TUNNELS - DEEP SUB-LEVEL</div> </div> <!-- DİYALOG / HİKAYE EKRANI --> <div style="background: rgba(0, 0, 0, 0.85); border: 1px solid #f59e0b; padding: 20px; border-radius: 6px; margin-bottom: 25px; line-height: 1.6; color: #cbd5e1; font-family: 'Courier New', monospace;"> <p style="margin-bottom: 15px;">Stepping over the smoking remains of the 3 Reptilian scouts you just carved through, you push deeper into the freezing, pitch-black rail tunnels beneath <<print $startingCity>>. The air tastes like scorched copper and ozone.</p> <p style="margin-bottom: 15px;">As you approach the designated coordinates near an old switchboard, a flickering green terminal illuminates a shadowed figure wrapped in a heavy trench coat. Cipher lowers a modified rail-pistol.</p> <p style="margin-bottom: 15px; color: #fbbf24;">"I heard the gunfire up the line. Not bad taking down a scout squad on your own,"</p> <p style="margin-bottom: 15px;">the voice hisses from beneath the hood. A pair of glowing cybernetic optics glints in the dark as Cipher leans against the concrete pillar.</p> <p style="margin-bottom: 15px; color: #fbbf24;">"The cold-bloods are already sniffing around your signal source in this sector. If we want to survive, we need a network. I'll feed you target coordinates and black-market contracts, and you'll bring me the data and scrap to keep our frequencies masked. Welcome to the real Wasteland, Operator."</p> </div> <!-- ÖDÜL VE GÖREV TAMAMLAMA MANTIĞI --> <<if $cipherMet eq false>> <<set $cipherMet to true>> <<set $xp += 150>> <<set $baseRep += 25>> <<set $activeQuest to "None">> <<set $campLog to "Cleared tunnel guards and made contact with Cipher in " + $startingCity + ". Faction networks opened.">> <div style="background: rgba(46,204,113,0.1); border: 1px solid #2ecc71; padding: 15px; border-radius: 6px; margin-bottom: 25px; text-align: center; color: #34d399; font-weight: bold;"> > OBJECTIVE COMPLETED: MEET CIPHER<br> <span style="font-size: 0.9rem; color: #fff;">Rewards: +150 XP, +25 Street Cred, Faction Network Unlocked!</span> </div> <<else>> <div style="background: rgba(56,189,248,0.1); border: 1px solid #38bdf8; padding: 15px; border-radius: 6px; margin-bottom: 25px; text-align: center; color: #38bdf8;"> > You chat briefly with Cipher, reviewing local patrol routes and upcoming faction movements. Everything is secure for now. </div> <<endif>> <div style="text-align: center; margin-top: 25px; padding: 15px; border: 1px solid #f59e0b; background: rgba(245, 158, 11, 0.1);"> <<link ">>> RETURN TO MAP <<<" "Map">> <<run window.setup.updateSidebar()>> <</link>> </div> </div> <</nobr>>
<<nobr>> <style> .wake-up-sequence { animation: wakeUpFade 4s ease-in forwards; opacity: 0; } @keyframes wakeUpFade { 0% { opacity: 0; filter: blur(10px) brightness(0); } 50% { opacity: 0.5; filter: blur(4px) brightness(0.5); } 100% { opacity: 1; filter: blur(0) brightness(1); } } .prologue-container { background: radial-gradient(circle at center, rgba(5, 20, 5, 0.9), rgba(0, 0, 0, 1)), url('https://images.unsplash.com/photo-1478760329108-5c3ed9d495a0?q=80&w=2000&auto=format&fit=crop') center/cover; min-height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 40px; box-sizing: border-box; border: 2px solid #00ff00; box-shadow: inset 0 0 100px #000; font-family: 'Courier New', monospace; margin: 0; } .id-card { background: rgba(0, 20, 0, 0.7); border: 2px solid #00ff00; border-radius: 8px; padding: 30px; display: flex; gap: 30px; max-width: 800px; width: 100%; box-shadow: 0 0 30px rgba(0, 255, 0, 0.2); backdrop-filter: blur(5px); margin-bottom: 30px; position: relative; overflow: hidden; } .id-card::after { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,255,0,0.1) 3px, rgba(0,255,0,0.1) 4px); pointer-events: none; } .avatar-box { width: 180px; height: 230px; border: 2px solid #00ff00; background-color: #000; display: flex; justify-content: center; align-items: center; box-shadow: inset 0 0 20px rgba(0,255,0,0.3); position: relative; overflow: hidden; } .avatar-img { width: 100%; height: 100%; object-fit: cover; } .mutant-filter { filter: sepia(100%) hue-rotate(90deg) saturate(400%) contrast(150%) brightness(80%); } .briefing-box { background-color: rgba(5, 10, 5, 0.9); padding: 30px; border: 2px solid #ef4444; border-radius: 8px; box-shadow: 0 0 20px rgba(239, 68, 68, 0.15); max-width: 800px; width: 100%; margin-bottom: 30px; position: relative; z-index: 2; } </style> /* --- AKILLI AVATAR DOSYA YOLU OLUŞTURUCU (WEB UYUMLU DİZİN) --- */ <<set _genderFormat to $playerGender.toLowerCase()>> <<set _rawClass to $playerBackground.toLowerCase()>> <<if _rawClass eq "field medic">><<set _rawClass to "medic">><</if>> <<if _rawClass eq "mutated anomaly">><<set _rawClass to "mutated">><</if>> <<set _classFormat to _rawClass.replace(" ", "_")>> <<if ndef $playerArmorTier>><<set $playerArmorTier to "Common">><</if>> <<set _armorSuffix to "_start_armor">> /* DÜZELTİLDİ: C:/ Bilgisayar Yolu Yerine Sunucu/Web Yolu Kullanıldı */ <<set $avatarUrl to "images/avatars/" + _genderFormat + "_" + _classFormat + _armorSuffix + ".jpg">> <<set _imgClass to ($playerBackground eq 'Mutated Anomaly' ? 'avatar-img mutant-filter' : 'avatar-img')>> <<set _fallbackText to $playerGender.toUpperCase() + "\\n" + $playerBackground.toUpperCase().replace(" ", "+")>> <<set _fallbackUrl to "https://placehold.co/400x500/050a05/00ff00?font=courier&text=" + _fallbackText>> <div class="prologue-container wake-up-sequence"> <div style="color: #00ff00; font-size: 2rem; font-weight: bold; letter-spacing: 10px; margin-bottom: 30px; text-shadow: 0 0 20px #00ff00;"> [ SYSTEM REBOOT SUCCESSFUL ] </div> <!-- KİMLİK KARTI (ID CARD) --> <div class="id-card"> <div class="avatar-box"> <<print '<img src="' + $avatarUrl + '" class="' + _imgClass + '" alt="Operator Avatar" onerror="this.onerror=null;this.src=\'' + _fallbackUrl + '\';">'>> <div style="position: absolute; top:0; left:0; width:100%; height:100%; background: repeating-linear-gradient(transparent, transparent 2px, rgba(0,255,0,0.1) 3px); pointer-events: none;"></div> </div> <div style="flex: 1; display: flex; flex-direction: column; justify-content: center;"> <h3 style="color: #fff; border-bottom: 1px dashed #334155; padding-bottom: 10px; margin-top: 0; letter-spacing: 2px;">OPERATOR DOSSIER</h3> <div style="display: grid; grid-template-columns: 130px 1fr; gap: 10px; margin-top: 15px; font-size: 1.1rem;"> <span style="color: #64748b;">DESIGNATION:</span> <strong style="color: #00ff00;"><<print $playerName>></strong> <span style="color: #64748b;">AGE/GENDER:</span> <strong style="color: #cbd5e1;"><<print $playerAge>> / <<print $playerGender>></strong> <span style="color: #64748b;">CLASSIFICATION:</span> <strong style="color: #ffaa00;"><<print $playerClass>></strong> <span style="color: #64748b;">DEPLOYMENT:</span> <strong style="color: #38bdf8;"><<print $startingCity>> Sector</strong> </div> <div style="margin-top: 25px; padding: 10px; background: rgba(255,0,0,0.1); border-left: 3px solid #ef4444;"> <span style="color: #ef4444; font-size: 0.9rem; font-weight: bold;">VITAL SIGNS:</span> <span style="color: #fff; font-size: 0.9rem; margin-left: 10px;">HP: <<print $hp>> | STAMINA: <<print $stamina>></span> </div> </div> </div> <!-- HİKAYE VE GÖREV BRİFİNGİ --> <div class="briefing-box"> <div style="text-align: center; border-bottom: 1px dashed #ef4444; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #ef4444; margin: 0; letter-spacing: 4px; text-shadow: 0 0 10px rgba(239,68,68,0.5);">[ CLASSIFIED BRIEFING: OPERATION SANCTUARY ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #f87171;">DECRYPTION LEVEL: OMEGA</div> </div> <div style="color: #d1d5db; font-size: 1.05rem; line-height: 1.7; margin-bottom: 25px; text-align: justify;"> <p>They came from below, and they came from the skies. The Reptilian Vanguard didn't just conquer humanity; they terraformed the entire globe. Every continent fell, suffocating under the toxic <span style="color:#ef4444; font-weight:bold;">Silica Mist</span>.</p> <p>But a global rebellion must start somewhere. The central mainframes collapsed long ago, and the <strong style="color:#fbbf24;">Ashen Veil</strong> protocol was activated, driving the remnants of humanity underground. Here, in the heavy industrial ruins of Silesia, we will light the spark that burns their empire down.</p> <p>You are one of the last remaining sleeper Operators, <<print $playerName>>. Your long-sleep is over.</p> <div style="background: rgba(239,68,68,0.05); border-left: 4px solid #ef4444; padding: 15px; margin-top: 20px;"> <strong style="color: #ef4444; font-size: 1.1rem;">> YOUR DIRECTIVE:</strong><br> <span style="color: #94a3b8;">Ascend to the surface at the edge of the <span style="color:#3498db; font-weight:bold;"><<print $startingCity>></span> sector. Scavenge materials. Establish a secure Command Center. Make contact with underground factions. </span> <strong style="color:#00ff00; display:block; margin-top:10px;">Become the ground zero of the resistance. Take our world back.</strong> </div> </div> <div style="text-align: center; margin-top: 30px; padding: 12px; border: 1px solid #ef4444; background: rgba(239, 68, 68, 0.1); border-radius: 4px; box-shadow: 0 0 10px rgba(239, 68, 68, 0.2); transition: 0.3s;"> <<link '<span style="color:#ef4444; font-weight:bold; letter-spacing:2px; text-decoration:none;">INITIATE SURFACE DEPLOYMENT</span>' "Tutorial 1">><</link>> </div> </div> </div> <</nobr>>
<<nobr>> <div style="background-color: #050a05; padding: 30px; border: 2px solid #ef4444; border-radius: 8px; font-family: 'Segoe UI', Tahoma, sans-serif; color: #ef4444; max-width: 700px; margin: 5vh auto; box-shadow: 0 0 25px rgba(239, 68, 68, 0.2);"> <h2 style="text-align: center; letter-spacing: 2px; text-shadow: 0 0 10px #ef4444;">[ AMBUSH DETECTED: KATOWICE TUNNELS ]</h2> <hr style="border: 1px dashed #ef4444; opacity: 0.4; margin: 20px 0;"> <p style="color: #cbd5e1; line-height: 1.6;">As you descend into the pitch-black metro tunnels beneath Katowice, your tactical visor flickers. Cold-blooded eyes reflect your flashlight beam. <strong>Reptilian Vanguard scouts</strong> have laid an ambush to block your path to Cipher!</p> <div style="background: rgba(239, 68, 68, 0.1); border-left: 4px solid #ef4444; padding: 15px; margin: 20px 0; color: #fca5a5;"> <strong>STATUS:</strong> Combat engagement is mandatory to clear the sector and establish contact with Cipher. </div> <div style="text-align: center; margin-top: 30px; display: flex; justify-content: center; gap: 20px;"> <<link '<div style="border: 1px solid #ef4444; background: rgba(239, 68, 68, 0.2); color: #fca5a5; font-weight: bold; padding: 10px 20px; border-radius: 4px; cursor: pointer;">ENGAGE REPTILIAN PATROL</div>'>> <<set $enemy to { name: "Vanguard Scout", hp: 40, currentHp: 40, maxHp: 40, minDmg: 8, maxDmg: 14 }>> /* DİKKAT: HİKAYE KİLİDİ BURADA EKLENİYOR */ <<set $combatContext to "cipher_ambush">> <<goto "Combat">> <</link>> <<link '<div style="border: 1px solid #38bdf8; background: rgba(56, 189, 248, 0.1); color: #38bdf8; font-weight: bold; padding: 10px 20px; border-radius: 4px; cursor: pointer;">FALL BACK TO CAMP</div>' "Camp">><</link>> </div> </div> <</nobr>>
<<nobr>> <<if ndef $survivors>><<set $survivors to 0>><</if>> <div style="background-color: #050a05; padding: 30px; border: 2px solid #38bdf8; border-radius: 8px; font-family: 'Courier New', monospace; color: #38bdf8; max-width: 700px; margin: 5vh auto;"> <h2 style="text-align: center; letter-spacing: 2px;">[ NIKISZOWIEC WAREHOUSE OPERATION ]</h2> <hr style="border: 1px dashed #38bdf8; opacity: 0.4; margin: 20px 0;"> <p style="color: #cbd5e1; line-height: 1.6;">You scour the massive red-brick industrial warehouse. Amidst rusted machinery, old textiles, and debris, you search for building materials and salvageable cloth.</p> <<if $stamina gte 15>> <<set $stamina -= 15>> <<set $materials.scrap += 10>> <<set $materials.wood += 8>> <<set $materials.cloth += 6>> <!-- KUMAŞ EKLENDİ --> <<set _foundSurvivor to random(1, 10)>> <<if _foundSurvivor gte 5>> <<set $survivors += 1>> <div style="background: rgba(56, 189, 248, 0.1); border-left: 4px solid #38bdf8; padding: 15px; margin: 20px 0; color: #38bdf8;"> <strong>SUCCESS!</strong> You found <strong>10 Scrap</strong>, <strong>8 Wood</strong>, <strong>6 Cloth</strong>, and rescued a trapped worker! <br><span style="color:#2ecc71; font-weight:bold;">[+1 Survivor added to Colony Labor Pool]</span> </div> <<else>> <div style="background: rgba(56, 189, 248, 0.1); border-left: 4px solid #38bdf8; padding: 15px; margin: 20px 0; color: #38bdf8;"> <strong>SUCCESS!</strong> You scavenged <strong>10 Scrap</strong>, <strong>8 Wood</strong>, and <strong>6 Cloth</strong> from the sector. </div> <<endif>> <<else>> <div style="color: #ef4444; font-weight: bold; margin: 20px 0;">ERROR: Not enough Stamina to thoroughly search the warehouse! (-15 Stamina required)</div> <<endif>> <div style="text-align: center; margin-top: 30px; display: flex; justify-content: center; gap: 20px;"> <<link '<span style="color:#38bdf8; font-weight:bold; padding: 10px 20px; border: 1px solid #38bdf8; background: rgba(56,189,248,0.1);">SCAVENGE AGAIN</span>' "Explore Warehouse">><</link>> <<link '<span style="color:#00ff00; font-weight:bold; padding: 10px 20px; border: 1px solid #00ff00; background: rgba(0,255,0,0.1);">RETURN TO MAP</span>' "Map">><</link>> </div> </div> <</nobr>>
<<nobr>> <<if ndef $survivors>><<set $survivors to 0>><</if>> <div style="background-color: #050a05; padding: 30px; border: 2px solid #2ecc71; border-radius: 8px; font-family: 'Courier New', monospace; color: #2ecc71; max-width: 700px; margin: 5vh auto;"> <h2 style="text-align: center; letter-spacing: 2px;">[ SILESIAN PARK CLINIC SEARCH ]</h2> <hr style="border: 1px dashed #2ecc71; opacity: 0.4; margin: 20px 0;"> <p style="color: #cbd5e1; line-height: 1.6;">Overgrown vegetation blankets the ruined clinic. You search through smashed medical cabinets for uncorrupted drugs, medical linens, and check rooms for survivors.</p> <<if $stamina gte 15>> <<set $stamina -= 15>> <<set $materials.medicine += 4>> <<set $materials.cloth += 8>> <<set _foundSurvivor to random(1, 10)>> <<if _foundSurvivor gte 4>> <<set $survivors += 1>> <div style="background: rgba(46, 204, 113, 0.1); border-left: 4px solid #2ecc71; padding: 15px; margin: 20px 0; color: #2ecc71;"> <strong>SUCCESS!</strong> Recovered <strong>4 Medical Supplies</strong>, <strong>8 Cloth</strong>, and guided a hidden refugee to safety! <br><span style="color:#2ecc71; font-weight:bold;">[+1 Survivor added to Colony Labor Pool]</span> </div> <<else>> <div style="background: rgba(46, 204, 113, 0.1); border-left: 4px solid #2ecc71; padding: 15px; margin: 20px 0; color: #2ecc71;"> <strong>SUCCESS!</strong> Recovered <strong>4 Medical Supplies</strong> and <strong>8 Cloth</strong> from the ruined wards. </div> <</if>> <<else>> <div style="color: #ef4444; font-weight: bold; margin: 20px 0;">ERROR: Insufficient Stamina to search the clinic!</div> <</if>> <div style="text-align: center; margin-top: 30px; display: flex; justify-content: center; gap: 20px;"> <!-- TWINE ÇÖKERTEN OKLAR TAMAMEN SİLİNDİ, GÜVENLİ LİNKLER EKLENDİ --> <div style="border: 1px solid #2ecc71; background: rgba(46,204,113,0.1); padding: 10px 20px; border-radius: 4px;"> @@color:#2ecc71;font-weight:bold;<<link "SEARCH AGAIN" "Explore Clinic">><</link>>@@ </div> <div style="border: 1px solid #00ff00; background: rgba(0,255,0,0.1); padding: 10px 20px; border-radius: 4px;"> @@color:#00ff00;font-weight:bold;<<link "RETURN TO COMMAND CENTER" "Camp">><</link>>@@ </div> </div> </div> <</nobr>>
<<nobr>> <<if ndef $survivors>><<set $survivors to 0>><</if>> <div style="background-color: #050a05; padding: 30px; border: 2px solid #a855f7; border-radius: 8px; font-family: 'Courier New', monospace; color: #a855f7; max-width: 700px; margin: 5vh auto;"> <h2 style="text-align: center; letter-spacing: 2px;">[ SECTOR BUNKER 04 EXPLORATION ]</h2> <hr style="border: 1px dashed #a855f7; opacity: 0.4; margin: 20px 0;"> <p style="color: #cbd5e1; line-height: 1.6;">You breach the blast doors of a sealed pre-war shelter. Inside, intact computer terminals hum with pre-war archives, and a small group of survivors has been living off emergency rations.</p> <<if $stamina gte 20>> <<set $stamina -= 20>> <<set $materials.techData += 3>> <<set $survivors += 1>> <div style="background: rgba(168, 85, 247, 0.1); border-left: 4px solid #a855f7; padding: 15px; margin: 20px 0; color: #a855f7;"> <strong>SUCCESS!</strong> Downloaded <strong>3 Tech Data</strong> files and convinced the bunker dwellers to join Będzin Core! <br><span style="color:#2ecc71; font-weight:bold;">[+1 Survivor added to Colony Labor Pool]</span> </div> <<else>> <div style="color: #ef4444; font-weight: bold; margin: 20px 0;">ERROR: Insufficient Stamina to explore the bunker! (-20 Stamina required)</div> <<endif>> <div style="text-align: center; margin-top: 30px; display: flex; justify-content: center; gap: 20px;"> <<link '<span style="color:#00ff00; font-weight:bold; padding: 10px 20px; border: 1px solid #00ff00; background: rgba(0,255,0,0.1);">RETURN TO MAP</span>' "Map">><</link>> </div> </div> <</nobr>>
<<nobr>> <<set $currentMenu to "Map">> <<run window.setup.updateSidebar()>> <<if ndef $level>><<set $level to 1>><</if>> <<if ndef $startingCity>><<set $startingCity to "Katowice">><</if>> <style> /* ANA KAPSAYICI - WIDE AS HELL (Reklamlı Genel Tasarım) */ .ashen-veil-world { background: linear-gradient(rgba(0, 5, 0, 0.8), rgba(0, 10, 5, 0.95)), url('https://images.unsplash.com/photo-1515630278258-407f66498911?q=80&w=2000&auto=format&fit=crop') center/cover no-repeat; min-height: 100vh; display: flex; flex-direction: row; justify-content: space-between; align-items: stretch; gap: 20px; padding: 20px; border-radius: 8px; box-shadow: inset 0 0 100px rgba(0,0,0,1); box-sizing: border-box; width: 100%; margin: 0; } /* REKLAM ALANLARI */ .ad-banner { flex: 0 0 160px; width: 160px; background: rgba(5, 10, 5, 0.9); border-left: 1px dashed #334155; border-right: 1px dashed #334155; display: flex; flex-direction: column; justify-content: center; align-items: center; color: #475569; font-family: 'Courier New', monospace; text-align: center; padding: 15px; position: relative; overflow: hidden; box-shadow: 0 0 15px rgba(0,0,0,0.8); } .ad-banner::before { content: "ADVERTISEMENT"; font-size: 0.7rem; letter-spacing: 2px; position: absolute; top: 15px; width: 100%; text-align: center; color: #334155; } /* ORTA ANA EKRAN (TERMINAL) */ .terminal-wide-core { flex: 1; background: rgba(5, 15, 5, 0.9); border-left: 2px solid #00ff00; border-right: 2px solid #00ff00; padding: 30px; font-family: 'Courier New', monospace; box-shadow: 0 0 50px rgba(0, 255, 0, 0.15), inset 0 0 30px rgba(0,0,0,0.8); display: flex; flex-direction: column; box-sizing: border-box; } /* RADAR KONTEYNERİ */ .radar-container { position: relative; flex: 1; width: 100%; background-color: #020602; border: 2px solid #00ff00; border-radius: 8px; box-shadow: inset 0 0 50px rgba(0, 255, 0, 0.4), 0 0 20px rgba(0, 255, 0, 0.1); overflow: hidden; margin-bottom: 20px; } .radar-map-bg { position: absolute; top: -60px; left: -60px; right: -60px; bottom: -60px; width: calc(100% + 120px); height: calc(100% + 120px); pointer-events: none; opacity: 0.4; filter: grayscale(100%) sepia(100%) hue-rotate(85deg) saturate(350%) contrast(120%) brightness(75%); z-index: 1; } .radar-grid { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-image: linear-gradient(rgba(0, 255, 0, 0.15) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 255, 0, 0.15) 1px, transparent 1px); background-size: 40px 40px; z-index: 2; pointer-events: none; } .radar-sweep { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, transparent 0%, rgba(0,255,0,0.1) 50%, transparent 100%); animation: scan 4s linear infinite; pointer-events: none; z-index: 3; } @keyframes scan { 0% { transform: translateY(-100%); } 100% { transform: translateY(100%); } } /* HARİTA İKONLARI (NODE) */ .map-node { position: absolute; transform: translate(-50%, -50%); text-align: center; transition: all 0.2s ease; z-index: 10; } .map-node:hover { transform: translate(-50%, -50%) scale(1.15); z-index: 20; } .map-node a { text-decoration: none !important; display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: crosshair; } .map-node span.locked-node { text-decoration: none !important; display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: not-allowed; } span.node-icon { font-size: 1.8rem; margin-bottom: 5px; display: block; } span.node-label { font-size: 0.75rem; font-weight: bold; background: rgba(0, 0, 0, 0.85); border: 1px solid currentColor; padding: 4px 8px; border-radius: 4px; white-space: nowrap; display: block; } span.node-desc { font-size: 0.65rem; color: #aaa; background: rgba(0,0,0,0.9); border: 1px dashed currentColor; padding: 6px; margin-top: 5px; width: 150px; white-space: normal; display: none; } .map-node:hover span.node-desc { display: block; } /* GERİ DÖN BUTONU */ .return-btn a { display: block; background: rgba(0, 255, 0, 0.1); border: 2px solid #00ff00; color: #00ff00 !important; padding: 15px; font-size: 1.3rem; font-weight: bold; letter-spacing: 4px; text-decoration: none !important; border-radius: 4px; text-align: center; transition: 0.3s; } .return-btn a:hover { background: #00ff00; color: #000 !important; box-shadow: 0 0 30px #00ff00; } </style> <div class="ashen-veil-world"> <!-- SOL REKLAM ALANI --> <div class="ad-banner"> <div style="font-size: 1.3rem; font-weight: bold; margin-bottom: 10px; color: #64748b;">[ 160 x 600 ]</div> <div style="font-size: 0.75rem; line-height: 1.5; color: #475569;">AVAILABLE FOR SPONSORSHIP</div> <div style="margin-top: 40px; font-size: 0.65rem; opacity: 0.3;">Wasteland Network Ad Space</div> </div> <!-- MERKEZ: HARİTA ARAYÜZÜ --> <div class="terminal-wide-core"> <div style="text-align: center; border-bottom: 1px dashed #00ff00; padding-bottom: 15px; margin-bottom: 20px;"> <h2 style="color: #00ff00; margin: 0; letter-spacing: 4px; text-shadow: 0 0 10px #00ff00;">[ SILESIA SECTOR MAP ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #888;">S.A.N.C.T.U.A.R.Y. TACTICAL RADAR ONLINE</div> </div> <div class="radar-container"> <<set _mapUrl to "https://maps.google.com/maps?q=" + $startingCity + "&t=k&z=11&ie=UTF8&iwloc=&output=embed">> <iframe class="radar-map-bg" @src="_mapUrl" frameborder="0"></iframe> <div class="radar-grid"></div> <div class="radar-sweep"></div> <!-- 1. BASE (Merkeze Yakın / Güvenli) --> <div class="map-node" style="top: 85%; left: 50%;"> <<link '<span class="node-icon" style="color:#fbbf24; text-shadow:0 0 10px #fbbf24;">⌂</span><span class="node-label" style="color:#fbbf24; border-color:#fbbf24;">S.A.N.C.T.U.A.R.Y. (BASE)</span><span class="node-desc" style="color:#fbbf24; border-color:#fbbf24;">Return to Underground Command Center.</span>' "Camp">><</link>> </div> <!-- 2. KATOWICE TUNNELS (Hikaye Noktası - Tam Merkez) --> <div class="map-node" style="top: 45%; left: 50%;"> <<if $level gte 3>> <<link '<span class="node-icon" style="color:#ef4444; text-shadow:0 0 10px #ef4444;">☠</span><span class="node-label" style="color:#ef4444; border-color:#ef4444;">KATOWICE TUNNELS</span><span class="node-desc" style="color:#ef4444; border-color:#ef4444;">Reptilian Ambush Zone. Fight to locate Cipher.</span>' "Katowice Tunnels">> <<set $location to "Tunnels">> <</link>> <<else>> <span class="locked-node" title="WARNING: Signal too weak. Operator must reach Level 3 to decrypt exact coordinates."> <span class="node-icon" style="color:#52525b; text-shadow:0 0 10px #52525b;">☠</span> <span class="node-label" style="color:#52525b; border-color:#ef4444;">KATOWICE TUNNELS [LOCKED]</span> <span class="node-desc" style="color:#ef4444; border-color:#ef4444;">Cipher's signal is lost in the static. You must reach <strong>Level 3</strong> to trace the exact coordinates. Grind XP in other sectors.</span> </span> <</if>> </div> <!-- 3. NIKISZOWIEC WAREHOUSE (Doğu - Sanayi kalıntıları) --> <div class="map-node" style="top: 35%; left: 75%;"> <<link '<span class="node-icon" style="color:#38bdf8; text-shadow:0 0 10px #38bdf8;">🏗</span><span class="node-label" style="color:#38bdf8; border-color:#38bdf8;">NIKISZOWIEC WAREHOUSE</span><span class="node-desc" style="color:#38bdf8; border-color:#38bdf8;">Scavenge materials and rescue trapped survivors.</span>' "Explore Warehouse">><</link>> </div> <!-- 4. SILESIAN PARK CLINIC (Batı - Park bölgesi) --> <div class="map-node" style="top: 35%; left: 25%;"> <<link '<span class="node-icon" style="color:#2ecc71; text-shadow:0 0 10px #2ecc71;">✚</span><span class="node-label" style="color:#2ecc71; border-color:#2ecc71;">SILESIAN PARK CLINIC</span><span class="node-desc" style="color:#2ecc71; border-color:#2ecc71;">Search for medical supplies and refuge seekers.</span>' "Explore Clinic">><</link>> </div> <!-- 5. SECTOR BUNKER 04 (Kuzeybatı uzak köşe) --> <div class="map-node" style="top: 15%; left: 15%;"> <<link '<span class="node-icon" style="color:#a855f7; text-shadow:0 0 10px #a855f7;">▼</span><span class="node-label" style="color:#a855f7; border-color:#a855f7;">SECTOR BUNKER 04</span><span class="node-desc" style="color:#a855f7; border-color:#a855f7;">Explore pre-war shelter for tech data and survivors.</span>' "Explore Bunker">><</link>> </div> <!-- 6. RUINED OUTPOST (Güney Batı - Çete Bölgesi) --> <div class="map-node" style="top: 65%; left: 25%;"> <<link '<span class="node-icon" style="color:#f97316; text-shadow:0 0 10px #f97316;">⚔</span><span class="node-label" style="color:#f97316; border-color:#f97316;">RUINED OUTPOST</span><span class="node-desc" style="color:#f97316; border-color:#f97316;">Hostile Raider territory. Combat zone for grinding XP and Scrap.</span>' "Combat">> <<set $enemy to { name: "Wasteland Raider", hp: 35, currentHp: 35, maxHp: 35, minDmg: 6, maxDmg: 12, drop: "scrap" }>> <<set $targetPOIName to "Ruined Outpost">> <<set $targetPOILoot to "military">> <</link>> </div> <!-- 7. OVERGROWN PLAZA (Güney Doğu - Reptilian Bölgesi) --> <div class="map-node" style="top: 65%; left: 75%;"> <<link '<span class="node-icon" style="color:#f43f5e; text-shadow:0 0 10px #f43f5e;">☣</span><span class="node-label" style="color:#f43f5e; border-color:#f43f5e;">OVERGROWN PLAZA</span><span class="node-desc" style="color:#f43f5e; border-color:#f43f5e;">Reptilian feeding ground. Combat zone for grinding XP and Tech.</span>' "Combat">> <<set $enemy to { name: "Reptilian Drone", hp: 45, currentHp: 45, maxHp: 45, minDmg: 8, maxDmg: 14, drop: "techData" }>> <<set $targetPOIName to "Overgrown Plaza">> <<set $targetPOILoot to "basic">> <</link>> </div> <!-- 8. RAWA RIVER (FISHING SPOT - Yeni Eklenen Su Kenarı Noktası) --> <div class="map-node" style="top: 25%; left: 55%;"> <<link '<span class="node-icon" style="color:#38bdf8; text-shadow:0 0 10px #38bdf8;">🎣</span><span class="node-label" style="color:#38bdf8; border-color:#38bdf8;">RAWA RIVER (FISHING)</span><span class="node-desc" style="color:#38bdf8; border-color:#38bdf8;">Toxic industrial river waters. Cast a line for mutated fish or sunken scrap.</span>' "FishingSpot">><</link>> </div> </div> <!-- GERİ DÖNÜŞ BUTONU --> <div class="return-btn"> <<link "CLOSE RADAR (RETURN TO COMMAND CENTER)" "Camp">><</link>> </div> </div> <!-- SAĞ REKLAM ALANI --> <div class="ad-banner"> <div style="font-weight: bold; margin-bottom: 10px; color: #64748b; font-size: 1.3rem;">[ 160 x 600 ]</div> <div style="font-size: 0.75rem; line-height: 1.5; color: #475569;">YOUR AD HERE</div> <div style="margin-top: 40px; font-size: 0.65rem; opacity: 0.3;">Wasteland Network Ad Space</div> </div> </div> <</nobr>>
<<nobr>> <<run setup.recalcStats()>> <div style="background-color: #050a05; padding: 25px; border: 2px solid #fbbf24; border-radius: 8px; font-family: 'Courier New', monospace; box-shadow: 0 0 20px rgba(251, 191, 36, 0.2);"> <div style="text-align: center; border-bottom: 1px dashed #fbbf24; padding-bottom: 15px; margin-bottom: 25px;"> <h2 style="color: #fbbf24; margin: 0; letter-spacing: 3px; text-shadow: 0 0 10px #fbbf24;">[ OPERATOR PROMOTION ]</h2> <div style="margin-top: 10px; font-size: 0.9rem; color: #aaa;">ALLOCATE AVAILABLE SKILL POINTS</div> </div> <div style="color: #ddd; font-size: 1rem; margin-bottom: 20px; text-align: center; background: rgba(251,191,36,0.1); border: 1px solid #fbbf24; padding: 10px; border-radius: 4px;"> <div>Available Skill Points: <strong style="color: #fbbf24; font-size: 1.3rem;"><<<print $skillPoints>></strong></div> <div style="font-size: 0.8rem; color: #94a3b8; margin-top: 5px;">Level: <<print $level>> | Next Rank Progress: <<print $xp>> / <<print $xpMax>> XP</div> </div> <!-- SKILL & STAT ALLOCATION GRID --> <div style="display: grid; grid-template-columns: 1fr; gap: 15px; margin-bottom: 25px; max-height: 350px; overflow-y: auto; padding-right: 5px;"> <!-- RANK UP (LEVEL ATLA & XP SIFIRLA) --> <<if $xp gte $xpMax>> <div style="background: rgba(46,204,113,0.15); border: 1px solid #2ecc71; padding: 15px; border-radius: 4px; display: flex; justify-content: space-between; align-items: center;"> <div> <div style="color: #2ecc71; font-weight: bold; font-size: 1rem;">✨ RANK UP (ADVANCE TO LEVEL <<print $level + 1>>)</div> <div style="color: #94a3b8; font-size: 0.8rem; margin-top: 3px;">Consume current XP threshold to claim +1 Skill Point and fully restore Vitals.</div> </div> @@color:#2ecc71;font-weight:bold;<<link "CLAIM POINT">> <<set $level += 1, $xp -= $xpMax, $xpMax += Math.round($xpMax * 0.5), $skillPoints += 1>> <<set $hp = $maxHp, $stamina = $maxStamina>> <<run setup.recalcStats(); window.setup.updateSidebar();>> <<replace "#ui-dialog-body">><<print Story.get("LevelUp").processText()>><</replace>> <</link>>@@ </div> <<endif>> <!-- PERK 1: IRON PUMP --> <div style="background: rgba(239,68,68,0.1); border: 1px solid #ef4444; padding: 12px; border-radius: 4px; display: flex; justify-content: space-between; align-items: center;"> <div> <div style="color: #ef4444; font-weight: bold; font-size: 0.9rem;">❤️ IRON PUMP (MAX HP +20)</div> <div style="color: #94a3b8; font-size: 0.75rem;">Current Rank: <<print ($perkIronPump or 0)>>. Stackable resilience.</div> </div> <<if $skillPoints gte 1>> @@color:#ef4444;font-weight:bold;<<link "UPGRADE">> <<set $skillPoints -= 1>> <<if ndef $perkIronPump>><<set $perkIronPump to 0>><</if>> <<set $perkIronPump += 1>> <<run setup.recalcStats(); window.setup.updateSidebar();>> <<replace "#ui-dialog-body">><<print Story.get("LevelUp").processText()>><</replace>> <</link>>@@ <<else>> <span style="color: #64748b; font-size: 0.75rem;">[ LACKING POINTS ]</span> <<endif>> </div> <!-- PERK 2: ENDURANCE --> <div style="background: rgba(56,189,248,0.1); border: 1px solid #38bdf8; padding: 12px; border-radius: 4px; display: flex; justify-content: space-between; align-items: center;"> <div> <div style="color: #38bdf8; font-weight: bold; font-size: 0.9rem;">⚡ ENDURANCE CONDITIONING (MAX STAMINA +20)</div> <div style="color: #94a3b8; font-size: 0.75rem;">Current Rank: <<print ($perkEndurance or 0)>>. Hardened stamina pool.</div> </div> <<if $skillPoints gte 1>> @@color:#38bdf8;font-weight:bold;<<link "UPGRADE">> <<set $skillPoints -= 1>> <<if ndef $perkEndurance>><<set $perkEndurance to 0>><</if>> <<set $perkEndurance += 1>> <<run setup.recalcStats(); window.setup.updateSidebar();>> <<replace "#ui-dialog-body">><<print Story.get("LevelUp").processText()>><</replace>> <</link>>@@ <<else>> <span style="color: #64748b; font-size: 0.75rem;">[ LACKING POINTS ]</span> <<endif>> </div> <!-- PERK 3: INTIMIDATION --> <div style="background: rgba(234,179,8,0.1); border: 1px solid #eab308; padding: 12px; border-radius: 4px; display: flex; justify-content: space-between; align-items: center;"> <div> <div style="color: #eab308; font-weight: bold; font-size: 0.9rem;">💀 INTIMIDATING PRESENCE</div> <div style="color: #94a3b8; font-size: 0.75rem;">50% chance to force low-tier enemies to surrender.</div> </div> <<if def $perkIntimidation and $perkIntimidation>> <span style="color: #eab308; font-size: 0.75rem; font-weight: bold;">[ MAXED ]</span> <<elseif $skillPoints gte 1>> @@color:#eab308;font-weight:bold;<<link "UPGRADE">> <<set $skillPoints -= 1, $perkIntimidation to true>> <<run setup.recalcStats(); window.setup.updateSidebar();>> <<replace "#ui-dialog-body">><<print Story.get("LevelUp").processText()>><</replace>> <</link>>@@ <<else>> <span style="color: #64748b; font-size: 0.75rem;">[ LACKING POINTS ]</span> <<endif>> </div> <!-- PERK 4: SHARPENED SENSES --> <div style="background: rgba(16,185,129,0.1); border: 1px solid #10b981; padding: 12px; border-radius: 4px; display: flex; justify-content: space-between; align-items: center;"> <div> <div style="color: #10b981; font-weight: bold; font-size: 0.9rem;">🎯 SHARPENED SENSES</div> <div style="color: #94a3b8; font-size: 0.75rem;">Early danger detection (+15% Headshot Accuracy).</div> </div> <<if def $perkTargeting and $perkTargeting>> <span style="color: #10b981; font-size: 0.75rem; font-weight: bold;">[ MAXED ]</span> <<elseif $skillPoints gte 1>> @@color:#10b981;font-weight:bold;<<link "UPGRADE">> <<set $skillPoints -= 1, $perkTargeting to true>> <<run setup.recalcStats(); window.setup.updateSidebar();>> <<replace "#ui-dialog-body">><<print Story.get("LevelUp").processText()>><</replace>> <</link>>@@ <<else>> <span style="color: #64748b; font-size: 0.75rem;">[ LACKING POINTS ]</span> <<endif>> </div> <!-- PERK 5: CALLOUSED HIDE --> <div style="background: rgba(245,158,11,0.1); border: 1px solid #f59e0b; padding: 12px; border-radius: 4px; display: flex; justify-content: space-between; align-items: center;"> <div> <div style="color: #f59e0b; font-weight: bold; font-size: 0.9rem;">🛡️ CALLOUSED HIDE</div> <div style="color: #94a3b8; font-size: 0.75rem;">Thickened skin hardened by weather (15% Damage Resistance).</div> </div> <<if def $perkArmor and $perkArmor>> <span style="color: #f59e0b; font-size: 0.75rem; font-weight: bold;">[ MAXED ]</span> <<elseif $skillPoints gte 1>> @@color:#f59e0b;font-weight:bold;<<link "UPGRADE">> <<set $skillPoints -= 1, $perkArmor to true>> <<run setup.recalcStats(); window.setup.updateSidebar();>> <<replace "#ui-dialog-body">><<print Story.get("LevelUp").processText()>><</replace>> <</link>>@@ <<else>> <span style="color: #64748b; font-size: 0.75rem;">[ LACKING POINTS ]</span> <<endif>> </div> <!-- PERK 6: ADRENALINE GLAND --> <div style="background: rgba(251,113,133,0.1); border: 1px solid #fb7185; padding: 12px; border-radius: 4px; display: flex; justify-content: space-between; align-items: center;"> <div> <div style="color: #fb7185; font-weight: bold; font-size: 0.9rem;">🩸 ADRENALINE GLAND</div> <div style="color: #94a3b8; font-size: 0.75rem;">Intense adrenaline surge (100% Safe Flee chance).</div> </div> <<if def $perkAdrenaline and $perkAdrenaline>> <span style="color: #fb7185; font-size: 0.75rem; font-weight: bold;">[ MAXED ]</span> <<elseif $skillPoints gte 1>> @@color:#fb7185;font-weight:bold;<<link "UPGRADE">> <<set $skillPoints -= 1, $perkAdrenaline to true>> <<run setup.recalcStats(); window.setup.updateSidebar();>> <<replace "#ui-dialog-body">><<print Story.get("LevelUp").processText()>><</replace>> <</link>>@@ <<else>> <span style="color: #64748b; font-size: 0.75rem;">[ LACKING POINTS ]</span> <<endif>> </div> <!-- PERK 7: NATURAL REGENERATION --> <div style="background: rgba(14,165,233,0.1); border: 1px solid #0ea5e9; padding: 12px; border-radius: 4px; display: flex; justify-content: space-between; align-items: center;"> <div> <div style="color: #0ea5e9; font-weight: bold; font-size: 0.9rem;">🧬 NATURAL REGENERATION</div> <div style="color: #94a3b8; font-size: 0.75rem;">Body rapidly self-repairing during rest (+10 Extra HP).</div> </div> <<if def $perkNanites and $perkNanites>> <span style="color: #0ea5e9; font-size: 0.75rem; font-weight: bold;">[ MAXED ]</span> <<elseif $skillPoints gte 1>> @@color:#0ea5e9;font-weight:bold;<<link "UPGRADE">> <<set $skillPoints -= 1, $perkNanites to true>> <<run setup.recalcStats(); window.setup.updateSidebar();>> <<replace "#ui-dialog-body">><<print Story.get("LevelUp").processText()>><</replace>> <</link>>@@ <<else>> <span style="color: #64748b; font-size: 0.75rem;">[ LACKING POINTS ]</span> <<endif>> </div> </div> <div style="text-align: center;"> @@color:#fbbf24;font-weight:bold;<<link "CLOSE DOSSIER">><<run Dialog.close()>><</link>>@@ </div> </div> <</nobr>>
<<nobr>> <<set $currentMenu to "ServerChat">> <<if ndef $currentChannel>> <<set $currentChannel to "Sector-07">> <</if>> /* NPC Mesajlarını ve geçmişi hafızada tutan ana array */ <<if ndef $chatMeshLogs>> <<set $chatMeshLogs to []>> <<run $chatMeshLogs.push({ sender: "Rust_Nomad", text: "Signal lost at the Katowice relay station. Movement detected.", time: "02:14", channel: "Sector-07", vip: false })>> <<run $chatMeshLogs.push({ sender: "Vex_99", text: "New shelter builders watch out, drones are monitoring this frequency.", time: "02:19", channel: "Sector-07", vip: false })>> <<run $chatMeshLogs.push({ sender: "Silesia-Admin", text: "Global emergency broadcast active. Maintain radio silence if compromised.", time: "02:30", channel: "Global", vip: true, badge: "SYSTEM ADMIN" })>> <</if>> <</nobr>> <style> .chat-layout { display: flex; gap: 15px; font-family: 'Courier New', Courier, monospace; } .chat-sidebar { width: 190px; background: rgba(13, 17, 23, 0.9); border: 1px solid #3b82f6; border-radius: 6px; padding: 10px; } .channel-btn { display: block; width: 100%; background: rgba(30, 58, 138, 0.3); border: 1px solid #1e3a8a; color: #93c5fd; padding: 8px; margin-bottom: 6px; text-align: left; font-size: 0.75rem; cursor: pointer; border-radius: 4px; text-decoration: none !important; } .channel-btn:hover { background: #2563eb; color: #fff; border-color: #60a5fa; box-shadow: 0 0 10px rgba(59, 130, 246, 0.4); } .chat-main { flex-grow: 1; background-color: #0d1117; padding: 15px; border: 2px solid #3b82f6; border-radius: 8px; box-shadow: 0 0 25px rgba(59, 130, 246, 0.25); color: #e2e8f0; } .chat-img-header { height: 100px; width: 100%; object-fit: cover; border: 1px solid #1e3a8a; border-radius: 6px; margin-bottom: 12px; background: #000; } .chat-box { background: rgba(3, 7, 18, 0.95); border: 1px solid #1e3a8a; border-radius: 6px; height: 350px; overflow-y: auto; padding: 12px; margin-bottom: 12px; display: flex; flex-direction: column; gap: 6px; } .chat-line { background: rgba(15, 23, 42, 0.6); border-left: 2px solid #3b82f6; padding: 6px 10px; border-radius: 3px; font-size: 0.8rem; display: flex; justify-content: space-between; align-items: center; } .chat-line-vip { background: rgba(168, 85, 247, 0.15) !important; border-left: 3px solid #a855f7 !important; box-shadow: 0 0 10px rgba(168, 85, 247, 0.2); } .chat-user { color: #60a5fa; font-weight: bold; margin-right: 8px; } .chat-user-vip { color: #e879f9 !important; text-shadow: 0 0 8px rgba(232, 121, 249, 0.6); } .vip-badge { background: linear-gradient(135deg, #7e22ce, #a855f7); color: #fff; font-size: 0.6rem; padding: 2px 5px; border-radius: 3px; margin-left: 6px; font-weight: bold; letter-spacing: 1px; } .chat-text { color: #cbd5e1; flex-grow: 1; } .chat-time { color: #64748b; font-size: 0.7rem; margin-left: 10px; white-space: nowrap; } .chat-input-area { display: flex; gap: 10px; background: rgba(15, 23, 42, 0.8); padding: 10px; border: 1px solid #3b82f6; border-radius: 6px; } .cyber-input { flex-grow: 1; background: #020617; border: 1px solid #1e3a8a; color: #38bdf8; padding: 8px 12px; font-family: 'Courier New', Courier, monospace; font-size: 0.9rem; border-radius: 4px; outline: none; } .cyber-send-btn { background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); border: 1px solid #3b82f6; color: #fff !important; padding: 8px 24px; font-weight: bold; font-family: 'Courier New', Courier, monospace; font-size: 0.85rem; letter-spacing: 1px; border-radius: 4px; cursor: pointer; text-decoration: none !important; white-space: nowrap; box-shadow: 0 0 10px rgba(59, 130, 246, 0.3); } .cyber-back-container { display: inline-block; background: linear-gradient(135deg, #7e22ce 0%, #581c87 100%); border: 1px solid #c084fc; padding: 8px 20px; font-weight: bold; border-radius: 4px; box-shadow: 0 0 10px rgba(168, 85, 247, 0.3); } </style> <div class="chat-layout"> <!-- YAN KANAL LİSTESİ --> <div class="chat-sidebar"> <div style="color: #60a5fa; font-size: 0.8rem; font-weight: bold; margin-bottom: 10px; border-bottom: 1px dashed #3b82f6; padding-bottom: 5px;">>> MESH CHANNELS</div> <<link "Sector-01 (Katowice)" "ServerChat">><<set $currentChannel to "Sector-01">><</link>> <<link "Sector-07 (Base)" "ServerChat">><<set $currentChannel to "Sector-07">><</link>> <<if $isVIP>> <div style="color: #a855f7; font-size: 0.7rem; margin: 10px 0 5px 0; border-top: 1px dashed #7e22ce; padding-top: 5px;">[ FOUNDER ACCESS ]</div> <<link "Global Broadcast" "ServerChat">><<set $currentChannel to "Global">><</link>> <</if>> </div> <!-- ANA CHAT PENCERESİ --> <div class="chat-main"> <div style="text-align: center; border-bottom: 1px dashed #3b82f6; padding-bottom: 8px; margin-bottom: 10px;"> <h2 style="color: #60a5fa; margin: 0; font-size: 1.2rem;">[ CHANNEL: <<print $currentChannel>> ]</h2> </div> <img src="images/locations/comms_chat.jpg" class="chat-img-header" onerror="this.src='https://placehold.co/800x150/000/3b82f6?text=SECURE+MESH';"> <!-- Hafızadaki mesajları ekrana basıyoruz --> <div class="chat-box" id="chatMessageDisplay"> <<for _i = 0; _i < $chatMeshLogs.length; _i++>> <<set _msg to $chatMeshLogs[_i]>> <<if _msg.channel eq $currentChannel or _msg.channel eq "Global">> <<if _msg.vip eq true>> <div class="chat-line chat-line-vip"> <div> <span class="chat-user chat-user-vip"><<print _msg.sender>>:</span> <span class="chat-text"><<print _msg.text>></span> <span class="vip-badge"><<print _msg.badge>></span> </div> <span class="chat-time">[<<print _msg.time>>]</span> </div> <<else>> <div class="chat-line"> <div> <span class="chat-user"><<print _msg.sender>>:</span> <span class="chat-text"><<print _msg.text>></span> </div> <span class="chat-time">[<<print _msg.time>>]</span> </div> <</if>> <</if>> <</for>> </div> <div class="chat-input-area"> <input type="text" id="chatInputBox" class="cyber-input" placeholder="Type transmission to channel..." autocomplete="off"> <button id="chatSendBtn" class="cyber-send-btn">TRANSMIT</button> </div> <div style="text-align: center; margin-top: 15px;"> <span class="cyber-back-container"><<link "💻 BACK TO COMM-SERVER" "Comms">><</link>></span> </div> </div> </div> <!-- Socket.io Kütüphanesi --> <script src="https://cdn.socket.io/4.7.2/socket.io.min.js"></script> <!-- Oyun İçi Hibrit, Akıllı NPC ve Kararlı Buton Mantığı --> <<script>> window.setup = window.setup || {}; setTimeout(function() { const display = document.getElementById('chatMessageDisplay'); if (display) display.scrollTop = display.scrollHeight; }, 100); try { if (typeof io !== 'undefined' && !window.setup.chatSocket) { window.setup.chatSocket = io('https://api.ashenveilgame.com'); window.setup.chatSocket.on('receive_message', function(data) { const isAlreadyLogged = State.variables.chatMeshLogs.some(m => m.text === data.text && m.sender === data.sender && m.time === data.time); if (!isAlreadyLogged) { State.variables.chatMeshLogs.push(data); window.setup.appendChatMessage(data); } }); } if (window.setup.chatSocket) { window.setup.chatSocket.emit('join_channel', State.variables.currentChannel); } } catch (err) { console.log("Socket server error:", err); } $(document).off('click', '#chatSendBtn').on('click', '#chatSendBtn', function() { window.setup.sendChatMessage(); }); $(document).off('keydown', '#chatInputBox').on('keydown', '#chatInputBox', function(e) { if (e.key === 'Enter') { window.setup.sendChatMessage(); } }); window.setup.sendChatMessage = function() { const input = document.getElementById('chatInputBox'); if (!input || !input.value.trim()) return; const text = input.value.trim(); const time = new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); const currentCh = State.variables.currentChannel; const isVip = State.variables.isVIP; const playerName = State.variables.playerName || "Nakman"; const messageData = { channel: currentCh, sender: playerName, text: text, time: time, vip: isVip, badge: "FOUNDER // SECTOR 07" }; State.variables.chatMeshLogs.push(messageData); window.setup.appendChatMessage(messageData); input.value = ''; if (window.setup.chatSocket && window.setup.chatSocket.connected) { window.setup.chatSocket.emit('send_message', messageData); } // --- AKILLI NPC KELİME EŞLEME (İNGİLİZCE) --- setTimeout(() => { const lowerText = text.toLowerCase(); let npcName = "Vex_99"; let npcReply = ""; if (lowerText.includes("medicine") || lowerText.includes("heal") || lowerText.includes("meds")) { npcName = "Vex_99"; npcReply = "Looking for medical supplies? Check out the old hospital ruins or abandoned outposts, but watch out for radiation."; } else if (lowerText.includes("scrap") || lowerText.includes("scraps") || lowerText.includes("metal")) { npcName = "Rust_Nomad"; npcReply = "Want to scavenge scrap? Search the metal heaps beyond the perimeter or strip parts down in the workshop."; } else if (lowerText.includes("scrip") || lowerText.includes("money") || lowerText.includes("cash")) { npcName = "KiloByte"; npcReply = "The easiest way to earn Scrip is decrypting Tech Data via the comm-server or completing contracts on the bounty board."; } else if (lowerText.includes("cipher") || lowerText.includes("quest")) { npcName = "Vex_99"; npcReply = "Word is that Cipher is hiding out in the old rail tunnels beneath the city. Keep an eye on the frequency spikes."; } else { const npcList = [ { name: "Vex_99", replies: ["Whoa, founder signal detected!", "Signal strength is decent, we're on the right frequency.", "Got any spare Scrip for a friend?"] }, { name: "Rust_Nomad", replies: ["Uplink confirmed. Welcome founder.", "If you cracked the codes, share them with us.", "Surface air is getting worse, watch your filters."] }, { name: "KiloByte", replies: ["Founder passkey accepted. Network link is stable.", "Someone reported movement on the northern line."] } ]; const chosenNpc = npcList[Math.floor(Math.random() * npcList.length)]; npcName = chosenNpc.name; npcReply = chosenNpc.replies[Math.floor(Math.random() * chosenNpc.replies.length)]; } const npcMsg = { channel: currentCh, sender: npcName, text: npcReply, time: new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }), vip: false }; State.variables.chatMeshLogs.push(npcMsg); window.setup.appendChatMessage(npcMsg); if (window.setup.chatSocket && window.setup.chatSocket.connected) { window.setup.chatSocket.emit('send_message', npcMsg); } }, 1500); }; window.setup.appendChatMessage = function(msg) { const display = document.getElementById('chatMessageDisplay'); if (!display) return; const line = document.createElement('div'); line.className = 'chat-line ' + (msg.vip ? 'chat-line-vip' : ''); let badgeHtml = msg.vip ? `<span class="vip-badge">${msg.badge}</span>` : ''; let userClass = msg.vip ? 'chat-user-vip' : 'chat-user'; line.innerHTML = ` <div> <span class="${userClass}">${msg.sender}:</span> <span class="chat-text">${msg.text}</span> ${badgeHtml} </div> <span class="chat-time">[${msg.time}]</span> `; display.appendChild(line); display.scrollTop = display.scrollHeight; }; <</script>>
<<nobr>> <<set $currentMenu to "Sanctuary Hub">> <<run window.setup.updateSidebar()>> /* KESİN SIFIRLAMA: Tüm eski save'leri ve testleri Level 0 (Kilitli) yapıyoruz */ <<if ndef $hubHardGrindReset>> <<set $sanctuaryLevels to { workshop: 0, greenhouse: 0, pit: 0, walls: 0, bar: 0 }>> <<set $hubHardGrindReset to true>> <</if>> /* Güvence kontrolleri */ <<if ndef $sanctuaryLevels>> <<set $sanctuaryLevels to { workshop: 0, greenhouse: 0, pit: 0, walls: 0, bar: 0 }>> <</if>> <<if ndef $sanctuaryLevels.workshop>><<set $sanctuaryLevels.workshop to 0>><</if>> <<if ndef $sanctuaryLevels.greenhouse>><<set $sanctuaryLevels.greenhouse to 0>><</if>> <<if ndef $sanctuaryLevels.pit>><<set $sanctuaryLevels.pit to 0>><</if>> <<if ndef $sanctuaryLevels.walls>><<set $sanctuaryLevels.walls to 0>><</if>> <<if ndef $sanctuaryLevels.bar>><<set $sanctuaryLevels.bar to 0>><</if>> <<if ndef $materials>><<set $materials to { scrap: 0, wood: 0, water: 0, cloth: 0, scrip: 0 }>><</if>> <</nobr>> <style> .sanctuary-hub-container { background: linear-gradient(180deg, rgba(5,10,15,0.95), rgba(10,5,20,0.98)), url('images/locations/sanctuary_hub_bg.jpg') center/cover; padding: 30px; border: 2px solid #10b981; border-radius: 8px; font-family: 'Segoe UI', Tahoma, sans-serif; box-shadow: 0 0 30px rgba(16, 185, 129, 0.2); color: #e2e8f0; box-sizing: border-box; width: 100%; } .hub-grid { display: flex; flex-wrap: wrap; gap: 20px; margin-top: 25px; justify-content: flex-start; } .hub-card { background: rgba(10, 15, 25, 0.95); border: 1px solid #047857; border-radius: 6px; padding: 20px; display: flex; flex-direction: column; justify-content: space-between; box-shadow: 0 4px 15px rgba(0,0,0,0.7); transition: all 0.2s ease; width: 310px; min-height: 260px; box-sizing: border-box; } .hub-card-locked { background: rgba(15, 10, 10, 0.95); border: 1px dashed #475569; opacity: 0.9; } .hub-card:hover { border-color: #34d399; box-shadow: 0 0 20px rgba(52, 211, 153, 0.4); transform: translateY(-2px); } .cyber-hub-btn { display: block; width: 100%; background: linear-gradient(135deg, #059669 0%, #047857 100%); border: 1px solid #34d399; color: #f8fafc !important; padding: 10px; text-align: center; font-weight: bold; font-family: 'Courier New', monospace; font-size: 0.85rem; letter-spacing: 1px; border-radius: 4px; cursor: pointer; text-decoration: none !important; box-sizing: border-box; box-shadow: 0 0 10px rgba(16, 185, 129, 0.3); margin-top: 10px; } .cyber-hub-btn:hover { background: linear-gradient(135deg, #047857 0%, #34d399 100%); border-color: #6ee7b7; box-shadow: 0 0 15px rgba(52, 211, 153, 0.6); } .cyber-lock-btn { display: block; width: 100%; background: linear-gradient(135deg, #b45309 0%, #d97706 100%); border: 1px solid #fbbf24; color: #fff !important; padding: 10px; text-align: center; font-weight: bold; font-family: 'Courier New', monospace; font-size: 0.85rem; letter-spacing: 1px; border-radius: 4px; cursor: pointer; text-decoration: none !important; box-sizing: border-box; margin-top: 10px; } .cyber-disabled-btn { display: block; width: 100%; background: rgba(15, 23, 42, 0.6); border: 1px dashed #475569; color: #64748b; padding: 10px; text-align: center; font-weight: bold; font-family: 'Courier New', monospace; font-size: 0.75rem; border-radius: 4px; cursor: not-allowed; box-sizing: border-box; margin-top: 10px; } </style> <div class="sanctuary-hub-container"> <div style="text-align: center; border-bottom: 1px dashed #10b981; padding-bottom: 15px; margin-bottom: 10px;"> <h2 style="color: #34d399; margin: 0; letter-spacing: 3px; text-shadow: 0 0 10px #34d399; font-size: 1.8rem;">[ SANCTUARY HUB ]</h2> <div style="margin-top: 8px; font-size: 0.9rem; color: #94a3b8; letter-spacing: 1px;">HARD-CORE BASE OPERATIONS & FACILITY MANAGEMENT</div> </div> <div class="hub-grid"> <!-- 1. WORKSHOP --> <<if $sanctuaryLevels.workshop gt 0>> <div class="hub-card" style="border-left: 4px solid #38bdf8;"> <div> <div style="color: #38bdf8; font-size: 1.1rem; font-weight: bold; margin-bottom: 6px;">🛠️ WORKSHOP (Lvl: <<print $sanctuaryLevels.workshop>>)</div> <div style="color: #94a3b8; font-size: 0.8rem; line-height: 1.4; margin-bottom: 10px;">Fabricate gear and forge weapons.</div> /* Seviye Atlama Maliyetleri (Hard Grind) */ <<set _wLvl to $sanctuaryLevels.workshop>> <<if _wLvl eq 1>><<set _wCostScrap to 500, _wCostWood to 500, _wTarget to 2>> <<elseif _wLvl eq 2>><<set _wCostScrap to 1000, _wCostWood to 1000, _wTarget to 3>> <<elseif _wLvl eq 3>><<set _wCostScrap to 1500, _wCostWood to 1500, _wTarget to 4>> <<elseif _wLvl eq 4>><<set _wCostScrap to 2000, _wCostWood to 2000, _wTarget to 5>> <</if>> <<if _wLvl lt 5>> <div style="color: #fbbf24; font-size: 0.75rem; font-family: monospace;">UPGRADE TO LVL <<print _wTarget>> COST:<br><<print _wCostScrap>> Scrap, <<print _wCostWood>> Wood</div> <<else>> <div style="color: #34d399; font-size: 0.75rem; font-family: monospace; font-weight: bold;">[ MAX LEVEL REACHED ]</div> <</if>> </div> <div> <<link "<span class='cyber-hub-btn' style='background:linear-gradient(135deg,#0284c7,#0369a1);border-color:#38bdf8;'>ENTER WORKSHOP</span>" "Workshop">><</link>> <<if _wLvl lt 5>> <<if $materials.scrap gte _wCostScrap and $materials.wood gte _wCostWood>> <<link "<span class='cyber-lock-btn' style='background:linear-gradient(135deg,#0369a1,#0284c7);'>⚡ UPGRADE WORKSHOP</span>" "Sanctuary Hub">> <<set $materials.scrap -= _wCostScrap, $materials.wood -= _wCostWood>> <<set $sanctuaryLevels.workshop += 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ NEED <<print _wCostScrap>> SCRAP, <<print _wCostWood>> WOOD ]</div> <<endif>> <</if>> </div> </div> <<else>> <div class="hub-card hub-card-locked" style="border-left: 4px solid #475569;"> <div> <div style="color: #94a3b8; font-size: 1.1rem; font-weight: bold; margin-bottom: 6px;">🔒 WORKSHOP (LOCKED)</div> <div style="color: #64748b; font-size: 0.8rem; line-height: 1.4; margin-bottom: 8px;">Required to craft gear and weapons.</div> <div style="color: #fbbf24; font-size: 0.75rem; font-family: monospace;">BUILD COST: 150 Scrap, 100 Wood</div> </div> <div> <<if $materials.scrap gte 150 and $materials.wood gte 100>> <<link "<span class='cyber-lock-btn'>🔓 BUILD WORKSHOP</span>" "Sanctuary Hub">> <<set $materials.scrap -= 150, $materials.wood -= 100>> <<set $sanctuaryLevels.workshop to 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ NEED 150 SCRAP, 100 WOOD ]</div> <<endif>> </div> </div> <<endif>> <!-- 2. GREENHOUSE --> <<if $sanctuaryLevels.greenhouse gt 0>> <div class="hub-card" style="border-left: 4px solid #22c55e;"> <div> <div style="color: #22c55e; font-size: 1.1rem; font-weight: bold; margin-bottom: 6px;">🌿 GREENHOUSE (Lvl: <<print $sanctuaryLevels.greenhouse>>)</div> <div style="color: #94a3b8; font-size: 0.8rem; line-height: 1.4; margin-bottom: 10px;">Hydroponic food and crop production.</div> <<set _gLvl to $sanctuaryLevels.greenhouse>> <<if _gLvl eq 1>><<set _gCostScrap to 500, _gCostWood to 500, _gTarget to 2>> <<elseif _gLvl eq 2>><<set _gCostScrap to 1000, _gCostWood to 1000, _gTarget to 3>> <<elseif _gLvl eq 3>><<set _gCostScrap to 1500, _gCostWood to 1500, _gTarget to 4>> <<elseif _gLvl eq 4>><<set _gCostScrap to 2000, _gCostWood to 2000, _gTarget to 5>> <</if>> <<if _gLvl lt 5>> <div style="color: #fbbf24; font-size: 0.75rem; font-family: monospace;">UPGRADE TO LVL <<print _gTarget>> COST:<br><<print _gCostScrap>> Scrap, <<print _gCostWood>> Wood</div> <<else>> <div style="color: #34d399; font-size: 0.75rem; font-family: monospace; font-weight: bold;">[ MAX LEVEL REACHED ]</div> <</if>> </div> <div> <<link "<span class='cyber-hub-btn' style='background:linear-gradient(135deg,#16a34a,#15803d);border-color:#22c55e;'>ENTER GREENHOUSE</span>" "Greenhouse">><</link>> <<if _gLvl lt 5>> <<if $materials.scrap gte _gCostScrap and $materials.wood gte _gCostWood>> <<link "<span class='cyber-lock-btn' style='background:linear-gradient(135deg,#15803d,#16a34a);'>⚡ UPGRADE GREENHOUSE</span>" "Sanctuary Hub">> <<set $materials.scrap -= _gCostScrap, $materials.wood -= _gCostWood>> <<set $sanctuaryLevels.greenhouse += 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ NEED <<print _gCostScrap>> SCRAP, <<print _gCostWood>> WOOD ]</div> <<endif>> <</if>> </div> </div> <<else>> <div class="hub-card hub-card-locked" style="border-left: 4px solid #475569;"> <div> <div style="color: #94a3b8; font-size: 1.1rem; font-weight: bold; margin-bottom: 6px;">🔒 GREENHOUSE (LOCKED)</div> <div style="color: #64748b; font-size: 0.8rem; line-height: 1.4; margin-bottom: 8px;">Produces food and organic resources.</div> <div style="color: #fbbf24; font-size: 0.75rem; font-family: monospace;">BUILD COST: 150 Scrap, 150 Wood, 50 Water</div> </div> <div> <<if $materials.scrap gte 150 and $materials.wood gte 150 and $materials.water gte 50>> <<link "<span class='cyber-lock-btn'>🔓 BUILD GREENHOUSE</span>" "Sanctuary Hub">> <<set $materials.scrap -= 150, $materials.wood -= 150, $materials.water -= 50>> <<set $sanctuaryLevels.greenhouse to 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ NEED 150 SCRAP/WOOD, 50 WATER ]</div> <<endif>> </div> </div> <<endif>> <!-- 3. SCRAP PIT --> <<if $sanctuaryLevels.pit gt 0>> <div class="hub-card" style="border-left: 4px solid #fbbf24;"> <div> <div style="color: #fbbf24; font-size: 1.1rem; font-weight: bold; margin-bottom: 6px;">⛏️ SCRAP PIT (Lvl: <<print $sanctuaryLevels.pit>>)</div> <div style="color: #94a3b8; font-size: 0.8rem; line-height: 1.4; margin-bottom: 10px;">Extracts raw metals and debris.</div> <<set _pLvl to $sanctuaryLevels.pit>> <<if _pLvl eq 1>><<set _pCostScrap to 500, _pCostWood to 500, _pTarget to 2>> <<elseif _pLvl eq 2>><<set _pCostScrap to 1000, _pCostWood to 1000, _pTarget to 3>> <<elseif _pLvl eq 3>><<set _pCostScrap to 1500, _pCostWood to 1500, _pTarget to 4>> <<elseif _pLvl eq 4>><<set _pCostScrap to 2000, _pCostWood to 2000, _pTarget to 5>> <</if>> <<if _pLvl lt 5>> <div style="color: #fbbf24; font-size: 0.75rem; font-family: monospace;">UPGRADE TO LVL <<print _pTarget>> COST:<br><<print _pCostScrap>> Scrap, <<print _pCostWood>> Wood</div> <<else>> <div style="color: #34d399; font-size: 0.75rem; font-family: monospace; font-weight: bold;">[ MAX LEVEL REACHED ]</div> <</if>> </div> <div> <<link "<span class='cyber-hub-btn' style='background:linear-gradient(135deg,#d97706,#b45309);border-color:#fbbf24;'>ENTER SCRAP PIT</span>" "ScrapPit">><</link>> <<if _pLvl lt 5>> <<if $materials.scrap gte _pCostScrap and $materials.wood gte _pCostWood>> <<link "<span class='cyber-lock-btn' style='background:linear-gradient(135deg,#b45309,#d97706);'>⚡ UPGRADE SCRAP PIT</span>" "Sanctuary Hub">> <<set $materials.scrap -= _pCostScrap, $materials.wood -= _pCostWood>> <<set $sanctuaryLevels.pit += 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ NEED <<print _pCostScrap>> SCRAP, <<print _pCostWood>> WOOD ]</div> <<endif>> <</if>> </div> </div> <<else>> <div class="hub-card hub-card-locked" style="border-left: 4px solid #475569;"> <div> <div style="color: #94a3b8; font-size: 1.1rem; font-weight: bold; margin-bottom: 6px;">🔒 SCRAP PIT (LOCKED)</div> <div style="color: #64748b; font-size: 0.8rem; line-height: 1.4; margin-bottom: 8px;">Automates scrap metal extraction.</div> <div style="color: #fbbf24; font-size: 0.75rem; font-family: monospace;">BUILD COST: 200 Scrap, 100 Wood</div> </div> <div> <<if $materials.scrap gte 200 and $materials.wood gte 100>> <<link "<span class='cyber-lock-btn'>🔓 BUILD SCRAP PIT</span>" "Sanctuary Hub">> <<set $materials.scrap -= 200, $materials.wood -= 100>> <<set $sanctuaryLevels.pit to 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ NEED 200 SCRAP, 100 WOOD ]</div> <<endif>> </div> </div> <<endif>> <!-- 4. DEFENSE WALLS --> <<if $sanctuaryLevels.walls gt 0>> <div class="hub-card" style="border-left: 4px solid #ef4444;"> <div> <div style="color: #ef4444; font-size: 1.1rem; font-weight: bold; margin-bottom: 6px;">🛡️ DEFENSE WALLS (Lvl: <<print $sanctuaryLevels.walls>>)</div> <div style="color: #94a3b8; font-size: 0.8rem; line-height: 1.4; margin-bottom: 10px;">Perimeter barricades against raids.</div> <<set _dLvl to $sanctuaryLevels.walls>> <<if _dLvl eq 1>><<set _dCostScrap to 500, _dCostWood to 500, _dTarget to 2>> <<elseif _dLvl eq 2>><<set _dCostScrap to 1000, _dCostWood to 1000, _dTarget to 3>> <<elseif _dLvl eq 3>><<set _dCostScrap to 1500, _dCostWood to 1500, _dTarget to 4>> <<elseif _dLvl eq 4>><<set _dCostScrap to 2000, _dCostWood to 2000, _dTarget to 5>> <</if>> <<if _dLvl lt 5>> <div style="color: #fbbf24; font-size: 0.75rem; font-family: monospace;">UPGRADE TO LVL <<print _dTarget>> COST:<br><<print _dCostScrap>> Scrap, <<print _dCostWood>> Wood</div> <<else>> <div style="color: #34d399; font-size: 0.75rem; font-family: monospace; font-weight: bold;">[ MAX LEVEL REACHED ]</div> <</if>> </div> <div> <<link "<span class='cyber-hub-btn' style='background:linear-gradient(135deg,#dc2626,#b91c1c);border-color:#ef4444;'>MANAGE DEFENSES</span>" "DefenseWalls">><</link>> <<if _dLvl lt 5>> <<if $materials.scrap gte _dCostScrap and $materials.wood gte _dCostWood>> <<link "<span class='cyber-lock-btn' style='background:linear-gradient(135deg,#b91c1c,#dc2626);'>⚡ UPGRADE WALLS</span>" "Sanctuary Hub">> <<set $materials.scrap -= _dCostScrap, $materials.wood -= _dCostWood>> <<set $sanctuaryLevels.walls += 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ NEED <<print _dCostScrap>> SCRAP, <<print _dCostWood>> WOOD ]</div> <<endif>> <</if>> </div> </div> <<else>> <div class="hub-card hub-card-locked" style="border-left: 4px solid #475569;"> <div> <div style="color: #94a3b8; font-size: 1.1rem; font-weight: bold; margin-bottom: 6px;">🔒 DEFENSE WALLS (LOCKED)</div> <div style="color: #64748b; font-size: 0.8rem; line-height: 1.4; margin-bottom: 8px;">Protects the base from incoming raids.</div> <div style="color: #fbbf24; font-size: 0.75rem; font-family: monospace;">BUILD COST: 50 Scrap, 50 Wood</div> </div> <div> <<if $materials.scrap gte 50 and $materials.wood gte 50>> <<link "<span class='cyber-lock-btn'>🔓 BUILD WALLS</span>" "Sanctuary Hub">> <<set $materials.scrap -= 50, $materials.wood -= 50>> <<set $sanctuaryLevels.walls to 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ NEED 50 SCRAP, 50 WOOD ]</div> <<endif>> </div> </div> <<endif>> <!-- 5. THE BAR --> <<if $sanctuaryLevels.bar gt 0>> <div class="hub-card" style="border-left: 4px solid #a855f7;"> <div> <div style="color: #a855f7; font-size: 1.1rem; font-weight: bold; margin-bottom: 6px;">🍻 WASTELAND BAR (Lvl: <<print $sanctuaryLevels.bar>>)</div> <div style="color: #94a3b8; font-size: 0.8rem; line-height: 1.4; margin-bottom: 10px;">Mercenary recruitment and rumors.</div> <<set _bLvl to $sanctuaryLevels.bar>> <<if _bLvl eq 1>><<set _bCostScrap to 600, _bCostWood to 600, _bTarget to 2>> <<elseif _bLvl eq 2>><<set _bCostScrap to 1200, _bCostWood to 1200, _bTarget to 3>> <<elseif _bLvl eq 3>><<set _bCostScrap to 1800, _bCostWood to 1800, _bTarget to 4>> <<elseif _bLvl eq 4>><<set _bCostScrap to 2500, _bCostWood to 2500, _bTarget to 5>> <</if>> <<if _bLvl lt 5>> <div style="color: #fbbf24; font-size: 0.75rem; font-family: monospace;">UPGRADE TO LVL <<print _bTarget>> COST:<br><<print _bCostScrap>> Scrap, <<print _bCostWood>> Wood</div> <<else>> <div style="color: #34d399; font-size: 0.75rem; font-family: monospace; font-weight: bold;">[ MAX LEVEL REACHED ]</div> <</if>> </div> <div> <<link "<span class='cyber-hub-btn' style='background:linear-gradient(135deg,#9333ea,#7e22ce);border-color:#a855f7;'>ENTER THE BAR</span>" "WastelandBar">><</link>> <<if _bLvl lt 5>> <<if $materials.scrap gte _bCostScrap and $materials.wood gte _bCostWood>> <<link "<span class='cyber-lock-btn' style='background:linear-gradient(135deg,#7e22ce,#9333ea);'>⚡ UPGRADE BAR</span>" "Sanctuary Hub">> <<set $materials.scrap -= _bCostScrap, $materials.wood -= _bCostWood>> <<set $sanctuaryLevels.bar += 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ NEED <<print _bCostScrap>> SCRAP, <<print _bCostWood>> WOOD ]</div> <<endif>> <</if>> </div> </div> <<else>> <div class="hub-card hub-card-locked" style="border-left: 4px solid #475569;"> <div> <div style="color: #94a3b8; font-size: 1.1rem; font-weight: bold; margin-bottom: 6px;">🔒 WASTELAND BAR (LOCKED)</div> <div style="color: #64748b; font-size: 0.8rem; line-height: 1.4; margin-bottom: 8px;">High-end social hub for recruitment.</div> <div style="color: #fbbf24; font-size: 0.75rem; font-family: monospace;">BUILD COST: 350 Scrap, 250 Wood, 50 Scrip</div> </div> <div> <<if $materials.scrap gte 350 and $materials.wood gte 250 and $materials.scrip gte 50>> <<link "<span class='cyber-lock-btn'>🔓 BUILD THE BAR</span>" "Sanctuary Hub">> <<set $materials.scrap -= 350, $materials.wood -= 250, $materials.scrip -= 50>> <<set $sanctuaryLevels.bar to 1>> <</link>> <<else>> <div class="cyber-disabled-btn">[ NEED 350 SCRAP, 250 WOOD, 50 SCRIP ]</div> <<endif>> </div> </div> <<endif>> </div> <div style="text-align: center; margin-top: 35px;"> <<link "<span style='display:inline-block;background:linear-gradient(135deg,#0f766e,#115e59);border:1px solid #2dd4bf;color:#99f6e4;padding:12px 30px;font-weight:bold;border-radius:4px;font-family:monospace;letter-spacing:1px;'>🏠 BACK TO COMMAND CENTER</span>" "Camp">><</link>> </div> </div>
<<nobr>> <<set $currentMenu to "FishingSpot">> <<run window.setup.updateSidebar()>> /* Değişken güvenceleri */ <<if ndef $materials>><<set $materials to { scrap: 0, wood: 0, water: 0, cloth: 0, fish: 0, scrip: 0 }>><</if>> <<if ndef $materials.fish>><<set $materials.fish to 0>><</if>> <</nobr>> <style> .fishing-container { background: linear-gradient(180deg, rgba(2,6,23,0.95), rgba(15,23,42,0.98)), url('images/locations/fishing_bg.jpg') center/cover; padding: 30px; border: 2px solid #0284c7; border-radius: 8px; font-family: 'Segoe UI', Tahoma, sans-serif; box-shadow: 0 0 30px rgba(2, 132, 199, 0.25); color: #e2e8f0; box-sizing: border-box; width: 100%; } .fishing-panel { background: rgba(10, 15, 25, 0.95); border: 1px solid #0284c7; border-radius: 6px; padding: 25px; margin-top: 20px; box-shadow: 0 4px 15px rgba(0,0,0,0.7); } .cyber-fish-btn { display: inline-block; background: linear-gradient(135deg, #0369a1 0%, #0284c7 100%); border: 1px solid #38bdf8; color: #ffffff !important; padding: 12px 25px; font-weight: bold; font-family: 'Courier New', monospace; font-size: 0.95rem; letter-spacing: 1.5px; border-radius: 4px; cursor: pointer; text-decoration: none !important; box-shadow: 0 0 12px rgba(2, 132, 199, 0.4); transition: all 0.2s ease; } .cyber-fish-btn:hover { background: linear-gradient(135deg, #0284c7 0%, #38bdf8 100%); border-color: #7dd3fc; box-shadow: 0 0 20px rgba(56, 189, 248, 0.6); transform: translateY(-2px); } .cyber-return-btn { display: inline-block; background: linear-gradient(135deg, #0f766e 0%, #115e59 100%); border: 1px solid #2dd4bf; color: #99f6e4 !important; padding: 10px 25px; font-weight: bold; font-family: 'Courier New', monospace; letter-spacing: 1px; border-radius: 4px; text-decoration: none !important; box-shadow: 0 0 15px rgba(45, 212, 191, 0.3); } .cyber-return-btn:hover { background: linear-gradient(135deg, #115e59 0%, #0f766e 100%); border-color: #5eead4; color: #ffffff !important; } .log-box { background: rgba(3, 7, 18, 0.9); border-left: 3px solid #38bdf8; border-top: 1px solid #1e3a8a; border-right: 1px solid #1e3a8a; border-bottom: 1px solid #1e3a8a; padding: 15px; border-radius: 4px; margin-top: 20px; font-family: 'Courier New', monospace; font-size: 0.9rem; color: #cbd5e1; line-height: 1.6; min-height: 60px; } </style> <div class="fishing-container"> <div style="text-align: center; border-bottom: 1px dashed #0284c7; padding-bottom: 15px; margin-bottom: 20px;"> <h2 style="color: #38bdf8; margin: 0; letter-spacing: 3px; text-shadow: 0 0 10px #38bdf8; font-size: 1.8rem;">[ RAWA RIVER BANK ]</h2> <div style="margin-top: 8px; font-size: 0.9rem; color: #94a3b8; letter-spacing: 1px;">SECTOR-01 TOXIC WATERS // FISHING ZONE</div> </div> <div class="fishing-panel"> <div style="display: flex; gap: 20px; align-items: center; flex-wrap: wrap;"> <div style="flex: 1; min-width: 280px;"> <div style="color: #38bdf8; font-size: 1.1rem; font-weight: bold; margin-bottom: 10px;">🌊 CAST YOUR LINE</div> <div style="color: #94a3b8; font-size: 0.9rem; line-height: 1.6; margin-bottom: 20px;"> The surface glows with a faint chemical iridescence. Rawa river holds mutated blind carp and forgotten relics swallowed by the old steel mills upstream. Cast a line to see what bites... </div> <div style="font-family: monospace; color: #fbbf24; font-size: 0.85rem; margin-bottom: 15px;"> INVENTORY: <span style="color:#fff;"><<print $materials.fish>>x Mutated Fish</span> </div> <div> <<link "<span class='cyber-fish-btn'>🎣 CAST LINE (FISH)</span>" "FishingSpot">> <<set _roll to random(1, 5)>> <<if _roll eq 1>> <<set $fishingLog to "You cast your makeshift rod into the murky current. After a tense wait, something heavy pulls! You successfully haul out a <b>Mutated Blind Carp</b> (+1 Fish).">> <<set $materials.fish += 1>> <<elseif _roll eq 2>> <<set $fishingLog to "The line goes taut, but whatever is down there snaps the nylon wire and swims away into the toxic depths. You lost your bait.">> <<elseif _roll eq 3>> <<set $fishingLog to "You pull up an old rusted metal canister tangled in your line. Inside the sludge, you find a small piece of salvageable scrap! (+2 Scrap)">> <<if ndef $materials.scrap>><<set $materials.scrap to 0>><</if>> <<set $materials.scrap += 2>> <<elseif _roll eq 4>> <<set $fishingLog to "Nothing bites for hours except toxic algae sticking to your hook. Slimy and frustrating.">> <<else>> <<set $fishingLog to "Jackpot! You hook a surprisingly plump <b>Glow-Fin Salmon</b> swimming upstream through the chemical runoff. (+2 Fish)">> <<set $materials.fish += 2>> <<endif>> <<run window.setup.updateSidebar()>> <</link>> </div> </div> <div style="width: 260px; background: rgba(0,0,0,0.6); border: 1px dashed #1e3a8a; padding: 15px; border-radius: 6px; text-align: center;"> <img src="images/locations/fishing_spot_preview.jpg" style="width: 100%; height: 130px; object-fit: cover; border-radius: 4px; border: 1px solid #0284c7;" onerror="this.src='https://placehold.co/400x250/020617/38bdf8?text=TOXIC+WATER';"> <div style="font-size: 0.75rem; color: #64748b; margin-top: 8px;">SECTOR-01 WATERWAY MONITORING</div> </div> </div> <<if def $fishingLog>> <div class="log-box"> <span style="color: #38bdf8; font-weight: bold;">[CATCH REPORT]:</span> <<print $fishingLog>> </div> <<else>> <div class="log-box" style="color: #64748b; font-style: italic;"> > Ready to cast line. Drop your hook into the Rawa River... </div> <<endif>> </div> <div style="text-align: center; margin-top: 30px;"> <<link "<span class='cyber-return-btn'>🗺️ RETURN TO MAP</span>" "Map">><</link>> </div> </div>