Skip to content

Adds RobCo Desktop Terminal with Fallout hacking minigame, door/turret control, and SPECIAL integration#417

Open
Malerus wants to merge 9 commits intoFoundation-19:masterfrom
Malerus:Fallout-Hacking
Open

Adds RobCo Desktop Terminal with Fallout hacking minigame, door/turret control, and SPECIAL integration#417
Malerus wants to merge 9 commits intoFoundation-19:masterfrom
Malerus:Fallout-Hacking

Conversation

@Malerus
Copy link
Contributor

@Malerus Malerus commented Feb 27, 2026

About The Pull Request

Fallout.Temrinal.Demo.360p.mp4

Adds a fully functional RobCo desktop terminal (/obj/machinery/computer/terminal) with Fallout-style password hacking, integrated door/turret control, a document reader, and an admin configuration panel. Also adds a hacking device item used to bypass locked-out terminals.

Terminal — Hacking

da0a2e1bf5e83d81a2899449f10bc4f2

Implements the Fallout terminal password minigame from scratch in BYOND HTML popups.

  • Password grid rendered in two columns with hex address labels (0xF340, etc.), junk characters, and clickable spaced words (M U T A N T)
  • Five difficulty tiers gated by Intelligence: Very Easy (4-letter), Easy (5-letter), Average (6-letter), Hard (8-letter), Very Hard (10-letter)
  • SPECIAL integration throughout:
    • Intelligence gates difficulty tiers, scales attempt count, unlocks dud-removal and attempt-refill bracket charges, and controls the hacking device bypass success rate and speed
    • Perception gives a positional hint (hot/warm/cold) after each wrong guess
    • Luck can trigger a critical success (instant solve) or critical failure (instant lockout) on each attempt
    • Charisma adds flavour text above the grid
  • Bracket pairs ( ) [ ] { } < > embedded in junk rows act as one-shot consumables: click to remove a dud word or refill attempts
  • Terminal locks out after too many failed attempts; locked state persists until bypassed

Terminal — Hacking Device

hackdevanim1
hackdevdenver1

New item /obj/item/hacking_device using the hacking_device.dmi sprite sheet (idle, working animation, denied animation).

  • Swipe on a locked-out terminal to attempt bypass
  • INT 1–4: refused outright with flavour text
  • INT 5–6: 30 second attempt, 40% success
  • INT 7–8: 20 second attempt, 65% success
  • INT 9–10: 10 second attempt, 90% success
  • Plays working animation during do_after, denied animation on failure
  • Examine text gives the player INT-scaled feedback before they commit

Terminal — Door Control

  • Link door buttons (/obj/machinery/button/door) to a terminal via multitool
  • Terminal UI lists all linked buttons with pulse/lock/unlock actions
  • Also supports direct door ID string linkage via linked_door_ids map var
  • Multitool linking works in both directions: swipe terminal first or button first

Terminal — Turret Management

  • Link turrets (/obj/machinery/porta_turret) to a terminal via multitool
  • Terminal UI lists all linked turrets with status, mode, and per-turret MANAGE screen
  • Per-turret controls: power toggle, stun/lethal mode, all target flags (TF_SHOOT_PLAYERS, wildlife, raiders, robots, laser pointer, loud alerts)
  • Faction registry: add friendly factions by swiping an ID card belonging to a faction member; terminal maps the card's assignment to the canonical Fallout 13 faction define (NCR, Rangers, Legion, BOS, Enclave, Eastwood, Raiders, Khans, Super Mutants, Vault, Followers, Tribe, Wastelanders)
  • Personnel whitelist: register individual names by swiping their ID card; whitelist enforcement can be toggled on/off independently of faction settings; whitelisted players are skipped in both scan_for_targets() and turf_has_valid_target()

Terminal — Admin Panel

Accessible from the home screen when the terminal is unlocked.

  • Displays current password in plaintext for distribution
  • Lock terminal and generate a new password (prints to chat)
  • Set difficulty tier, gated by operator's Intelligence (can't set a tier you couldn't hack yourself)

Terminal — Document System

  • Subtypes can define up to 5 documents via map vars (doc_title_1 / doc_content_1 etc.)
  • File System section lists them; clicking opens the document in the terminal UI

Turret Whitelist Extension (turret_whitelist.dm)

Adds var/list/id_whitelist and var/whitelist_active to /obj/machinery/porta_turret and hooks is_whitelisted() into scan_for_targets() and turf_has_valid_target() so whitelisted players are never targeted regardless of faction or flag settings.

Shared Turret/Terminal Defines (turret_defines.dm)

Extracts shared #define constants (TURRET_LETHAL, TURRET_STUN, all TF_* flags, animation timing) into a standalone file to prevent macro redefinition errors when both terminal.dm and portable_turret.dm are compiled in the same project.


Pre-Merge Checklist

  • You tested this on a local server.
  • This code did not runtime during testing.
  • You documented all of your changes.

Changelog

🆑
add: Added RobCo desktop terminal with Fallout-style password hacking minigame
add: Added five difficulty tiers (Very Easy to Very Hard) for terminal hacking, gated by Intelligence
add: Added SPECIAL stat integration to terminal hacking — INT scales attempts and difficulty access, PER gives positional hints, LUK can crit succeed or crit fail, CHA adds flavour text
add: Added terminal door control panel — link door buttons via multitool to lock, unlock, and pulse airlocks from the terminal UI
add: Added terminal turret management panel — link turrets via multitool to toggle power, switch stun/lethal, and edit all target flags from the terminal UI
add: Added per-turret faction registry to terminal — swipe a faction member's ID card to register their faction as friendly; supports all Fallout 13 factions
add: Added per-turret personnel whitelist to terminal — swipe any ID card to register that person as exempt from turret targeting; toggle enforcement on/off
add: Added terminal admin panel for password display, terminal locking, and difficulty configuration
add: Added terminal document system — subtypes can ship up to 5 readable in-world documents
add: Added hacking device item with working/denied sprite animations, used to bypass locked-out terminals with INT-scaled success rates
add: Added turret whitelist vars and is_whitelisted() hook to porta_turret, checked in scan_for_targets() and turf_has_valid_target()
add: Added turret_defines.dm to consolidate shared terminal/turret #define constants and prevent redefinition errors
tweak: Multitool linking for terminal doors and turrets now works in both directions — swipe terminal first or the device first
tweak: Terminal hacking word display always uses spaced letters (M U T A N T style) across all difficulty tiers
fix: Fixed turret faction linkage requiring a valid ID card instead of free-text input, preventing invalid faction tags
imageadd: Added hacking_device.dmi with idle, working animation, and denied animation icon states
/:cl:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant