Files
Bubberstation/code/modules/holodeck/holodeck_map_templates.dm
Tim 054653de87 Add a "Prison Block" holodeck map (#96032)
## About The Pull Request
This adds a new "Prison Block" holodeck simulation, accessible only when
the holodeck safeties are disabled (or emagged). The layout features
four functional jail cells with holographic flashers, a security desk,
evidence lockers, an electric death chair, and camera/record consoles.

<img width="288" height="320" alt="StrongDMM-2026-05-10 20 22 24"
src="https://github.com/user-attachments/assets/f32da2c6-9281-4681-b415-4eac5d9bf167"
/>

## Why It's Good For The Game
While many departments have dedicated holodeck programs, Security
currently lacks a specialized simulation. By placing a functional brig
within an emagged simulation, we create opportunities for emergent
scenarios:
- Antagonists now have more non-lethal options to detain and hold
personnel
- Security now has a backup brig during station emergencies
- Power cuts, EMPs, or AI intervention can trigger instant prison breaks
- With the press of a button, switching the simulation can transform it
into a death trap for everyone inside

This creates high-tension gameplay for both the captors and the
captives.

The electric chair was only used in the pirate shuttle (ruin?) and
didn't work properly, so it needed some code updates. Also, I did not
like how insulated gloves prevented electric shocks from working, so I
made it bypass insulation.

I had to add holodeck versions of brig lockers and security windoors so
now any ID can open windoors/lockers. People cannot open
windoors/lockers without an ID, so you must strip them of their ID when
imprisoning them, otherwise they can just walk out.

## Changelog
🆑
map: Added a "Prison Block" holodeck simulation, accessible via the
disabled safety/emagged menu.
code: Fixed electric chairs to work, and they now bypass insulation from
gloves when executing a mob.
code: Added holodeck versions of brig lockers and windoors that allow
anyone with a station ID card to access them.
/🆑
2026-05-23 20:41:43 +02:00

166 lines
5.1 KiB
Plaintext

/datum/map_template/holodeck
/// id
var/template_id
/// Is this an emag program
var/restricted = FALSE
should_place_on_top = FALSE
returns_created_atoms = TRUE
keep_cached_map = TRUE
/datum/map_template/holodeck/offline
name = "Holodeck - Offline"
template_id = "holodeck_offline"
mappath = "_maps/templates/holodeck_offline.dmm"
/datum/map_template/holodeck/emptycourt
name = "Holodeck - Empty Court"
template_id = "holodeck_emptycourt"
mappath = "_maps/templates/holodeck_emptycourt.dmm"
/datum/map_template/holodeck/dodgeball
name = "Holodeck - Dodgeball Court"
template_id = "holodeck_dodgeball"
mappath = "_maps/templates/holodeck_dodgeball.dmm"
/datum/map_template/holodeck/basketball
name = "Holodeck - Basketball Court"
template_id = "holodeck_basketball"
mappath = "_maps/templates/holodeck_basketball.dmm"
/datum/map_template/holodeck/thunderdome
name = "Holodeck - Thunderdome Arena"
template_id = "holodeck_thunderdome"
mappath = "_maps/templates/holodeck_thunderdome.dmm"
/datum/map_template/holodeck/beach
name = "Holodeck - Beach"
template_id = "holodeck_beach"
mappath = "_maps/templates/holodeck_beach.dmm"
/datum/map_template/holodeck/lounge
name = "Holodeck - Lounge"
template_id = "holodeck_lounge"
mappath = "_maps/templates/holodeck_lounge.dmm"
/datum/map_template/holodeck/petpark
name = "Holodeck - Pet Park"
template_id = "holodeck_petpark"
mappath = "_maps/templates/holodeck_petpark.dmm"
/datum/map_template/holodeck/firingrange
name = "Holodeck - Firing Range"
template_id = "holodeck_firingrange"
mappath = "_maps/templates/holodeck_firingrange.dmm"
/datum/map_template/holodeck/anime_school
name = "Holodeck - Anime School"
template_id = "holodeck_animeschool"
mappath = "_maps/templates/holodeck_animeschool.dmm"
/datum/map_template/holodeck/chapelcourt
name = "Holodeck - Chapel Courtroom"
template_id = "holodeck_chapelcourt"
mappath = "_maps/templates/holodeck_chapelcourt.dmm"
/datum/map_template/holodeck/spacechess
name = "Holodeck - Space Chess"
template_id = "holodeck_spacechess"
mappath = "_maps/templates/holodeck_spacechess.dmm"
/datum/map_template/holodeck/spacecheckers
name = "Holodeck - Space Checkers"
template_id = "holodeck_spacecheckers"
mappath = "_maps/templates/holodeck_spacecheckers.dmm"
/datum/map_template/holodeck/kobayashi
name = "Holodeck - Kobayashi Maru"
template_id = "holodeck_kobayashi"
mappath = "_maps/templates/holodeck_kobayashi.dmm"
/datum/map_template/holodeck/winterwonderland
name = "Holodeck - Winter Wonderland"
template_id = "holodeck_winterwonderland"
mappath = "_maps/templates/holodeck_winterwonderland.dmm"
/datum/map_template/holodeck/photobooth
name = "Holodeck - Photobooth"
template_id = "holodeck_photobooth"
mappath = "_maps/templates/holodeck_photobooth.dmm"
/datum/map_template/holodeck/skatepark
name = "Holodeck - Skatepark"
template_id = "holodeck_skatepark"
mappath = "_maps/templates/holodeck_skatepark.dmm"
/datum/map_template/holodeck/microwave
name = "Holodeck - Microwave Paradise"
template_id = "holodeck_microwave"
mappath = "_maps/templates/holodeck_microwave.dmm"
/datum/map_template/holodeck/baseball
name = "Holodeck - Baseball Field"
template_id = "holodeck_baseball"
mappath = "_maps/templates/holodeck_baseball.dmm"
/datum/map_template/holodeck/card_battle
name = "Holodeck - TGC Battle Arena"
template_id = "holodeck_card_battle"
mappath = "_maps/templates/holodeck_card_battle.dmm"
/datum/map_template/holodeck/fitness
name = "Holodeck - Gymnasium"
template_id = "holodeck_fitness"
mappath = "_maps/templates/holodeck_fitness.dmm"
//bad evil no good programs
/datum/map_template/holodeck/medicalsim
name = "Holodeck - Emergency Medical"
template_id = "holodeck_medicalsim"
mappath = "_maps/templates/holodeck_medicalsim.dmm"
restricted = TRUE
/datum/map_template/holodeck/thunderdome1218
name = "Holodeck - 1218 AD"
template_id = "holodeck_thunderdome1218"
mappath = "_maps/templates/holodeck_thunderdome1218.dmm"
restricted = TRUE
/datum/map_template/holodeck/burntest
name = "Holodeck - Atmospheric Burn Test"
template_id = "holodeck_burntest"
mappath = "_maps/templates/holodeck_burntest.dmm"
restricted = TRUE
/datum/map_template/holodeck/wildlifesim
name = "Holodeck - Wildlife Simulation"
template_id = "holodeck_wildlifesim"
mappath = "_maps/templates/holodeck_wildlifesim.dmm"
restricted = TRUE
/datum/map_template/holodeck/holdoutbunker
name = "Holodeck - Holdout Bunker"
template_id = "holodeck_holdoutbunker"
mappath = "_maps/templates/holodeck_holdoutbunker.dmm"
restricted = TRUE
/datum/map_template/holodeck/anthophillia
name = "Holodeck - Anthophillia"
template_id = "holodeck_anthophillia"
mappath = "_maps/templates/holodeck_anthophillia.dmm"
restricted = TRUE
/datum/map_template/holodeck/refuelingstation
name = "Holodeck - Refueling Station"
template_id = "holodeck_refuelingstation"
mappath = "_maps/templates/holodeck_refuelingstation.dmm"
restricted = TRUE
/datum/map_template/holodeck/prison
name = "Holodeck - Prison Block"
template_id = "holodeck_prison"
mappath = "_maps/templates/holodeck_prison.dmm"
restricted = TRUE