mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-02-07 06:48:44 +00:00
About The Pull Request I observed someone request to be perma'd round start and then they just chilled in perma the whole shift. Security isn't always going to be up for putting people in perma and players who have been placed in perma tend to go catatonic. This allows players who are interested in having a chill shift doing the stuff in perma and acting like they've done crimes the opportunity to do that. Why It's Good For The Game Crew content. I'm not saying it's mindblowing but if we add it in as a role it will open the door for people to look at perma and what could be done with prisoners. Prisoners spawn with a prison ID, a jumpsuit, and shoes. They are also currently spawning with a backpack and I'm uncertain about whether or not I want to do anything with that. This is ready for a testmerge and worked for me locally. Thanks to Tralezab for assistance with merge conflicts. Thanks to EOBGames for the plasmaman prisoner sprites. Thanks to Quill-Weave for encouragement. Feedback is of course welcome, and I'd appreciate suggestions re: balancing this role. Maybe they should be roundstart pacified or something. Changelog cl add: Adds prisoner role /cl
428 lines
10 KiB
Plaintext
428 lines
10 KiB
Plaintext
/obj/effect/landmark
|
|
name = "landmark"
|
|
icon = 'icons/effects/landmarks_static.dmi'
|
|
icon_state = "x2"
|
|
anchored = TRUE
|
|
layer = MID_LANDMARK_LAYER
|
|
invisibility = INVISIBILITY_ABSTRACT
|
|
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
|
|
|
/obj/effect/landmark/singularity_act()
|
|
return
|
|
|
|
// Please stop bombing the Observer-Start landmark.
|
|
/obj/effect/landmark/ex_act()
|
|
return
|
|
|
|
/obj/effect/landmark/singularity_pull()
|
|
return
|
|
|
|
INITIALIZE_IMMEDIATE(/obj/effect/landmark)
|
|
|
|
/obj/effect/landmark/Initialize()
|
|
. = ..()
|
|
GLOB.landmarks_list += src
|
|
|
|
/obj/effect/landmark/Destroy()
|
|
GLOB.landmarks_list -= src
|
|
return ..()
|
|
|
|
/obj/effect/landmark/start
|
|
name = "start"
|
|
icon = 'icons/mob/landmarks.dmi'
|
|
icon_state = "x"
|
|
anchored = TRUE
|
|
layer = MOB_LAYER
|
|
var/jobspawn_override = FALSE
|
|
var/delete_after_roundstart = TRUE
|
|
var/used = FALSE
|
|
|
|
/obj/effect/landmark/start/proc/after_round_start()
|
|
if(delete_after_roundstart)
|
|
qdel(src)
|
|
|
|
/obj/effect/landmark/start/New()
|
|
GLOB.start_landmarks_list += src
|
|
if(jobspawn_override)
|
|
if(!GLOB.jobspawn_overrides[name])
|
|
GLOB.jobspawn_overrides[name] = list()
|
|
GLOB.jobspawn_overrides[name] += src
|
|
..()
|
|
if(name != "start")
|
|
tag = "start*[name]"
|
|
|
|
/obj/effect/landmark/start/Destroy()
|
|
GLOB.start_landmarks_list -= src
|
|
if(jobspawn_override)
|
|
GLOB.jobspawn_overrides[name] -= src
|
|
return ..()
|
|
|
|
// START LANDMARKS FOLLOW. Don't change the names unless
|
|
// you are refactoring shitty landmark code.
|
|
/obj/effect/landmark/start/assistant
|
|
name = "Assistant"
|
|
icon_state = "Assistant" //icon_state is case sensitive. why are all of these capitalized? because fuck you that's why
|
|
|
|
/obj/effect/landmark/start/assistant/override
|
|
jobspawn_override = TRUE
|
|
delete_after_roundstart = FALSE
|
|
|
|
/obj/effect/landmark/start/prisoner
|
|
name = "Prisoner"
|
|
icon_state = "Prisoner"
|
|
|
|
/obj/effect/landmark/start/janitor
|
|
name = "Janitor"
|
|
icon_state = "Janitor"
|
|
|
|
/obj/effect/landmark/start/cargo_technician
|
|
name = "Cargo Technician"
|
|
icon_state = "Cargo Technician"
|
|
|
|
/obj/effect/landmark/start/bartender
|
|
name = "Bartender"
|
|
icon_state = "Bartender"
|
|
|
|
/obj/effect/landmark/start/clown
|
|
name = "Clown"
|
|
icon_state = "Clown"
|
|
|
|
/obj/effect/landmark/start/mime
|
|
name = "Mime"
|
|
icon_state = "Mime"
|
|
|
|
/obj/effect/landmark/start/quartermaster
|
|
name = "Quartermaster"
|
|
icon_state = "Quartermaster"
|
|
|
|
/obj/effect/landmark/start/atmospheric_technician
|
|
name = "Atmospheric Technician"
|
|
icon_state = "Atmospheric Technician"
|
|
|
|
/obj/effect/landmark/start/cook
|
|
name = "Cook"
|
|
icon_state = "Cook"
|
|
|
|
/obj/effect/landmark/start/shaft_miner
|
|
name = "Shaft Miner"
|
|
icon_state = "Shaft Miner"
|
|
|
|
/obj/effect/landmark/start/security_officer
|
|
name = "Security Officer"
|
|
icon_state = "Security Officer"
|
|
|
|
/obj/effect/landmark/start/botanist
|
|
name = "Botanist"
|
|
icon_state = "Botanist"
|
|
|
|
/obj/effect/landmark/start/head_of_security
|
|
name = "Head of Security"
|
|
icon_state = "Head of Security"
|
|
|
|
/obj/effect/landmark/start/captain
|
|
name = "Captain"
|
|
icon_state = "Captain"
|
|
|
|
/obj/effect/landmark/start/detective
|
|
name = "Detective"
|
|
icon_state = "Detective"
|
|
|
|
/obj/effect/landmark/start/warden
|
|
name = "Warden"
|
|
icon_state = "Warden"
|
|
|
|
/obj/effect/landmark/start/chief_engineer
|
|
name = "Chief Engineer"
|
|
icon_state = "Chief Engineer"
|
|
|
|
/obj/effect/landmark/start/head_of_personnel
|
|
name = "Head of Personnel"
|
|
icon_state = "Head of Personnel"
|
|
|
|
/obj/effect/landmark/start/librarian
|
|
name = "Curator"
|
|
icon_state = "Curator"
|
|
|
|
/obj/effect/landmark/start/lawyer
|
|
name = "Lawyer"
|
|
icon_state = "Lawyer"
|
|
|
|
/obj/effect/landmark/start/station_engineer
|
|
name = "Station Engineer"
|
|
icon_state = "Station Engineer"
|
|
|
|
/obj/effect/landmark/start/medical_doctor
|
|
name = "Medical Doctor"
|
|
icon_state = "Medical Doctor"
|
|
|
|
/obj/effect/landmark/start/paramedic
|
|
name = "Paramedic"
|
|
icon_state = "Paramedic"
|
|
|
|
/obj/effect/landmark/start/scientist
|
|
name = "Scientist"
|
|
icon_state = "Scientist"
|
|
|
|
/obj/effect/landmark/start/chemist
|
|
name = "Chemist"
|
|
icon_state = "Chemist"
|
|
|
|
/obj/effect/landmark/start/roboticist
|
|
name = "Roboticist"
|
|
icon_state = "Roboticist"
|
|
|
|
/obj/effect/landmark/start/research_director
|
|
name = "Research Director"
|
|
icon_state = "Research Director"
|
|
|
|
/obj/effect/landmark/start/geneticist
|
|
name = "Geneticist"
|
|
icon_state = "Geneticist"
|
|
|
|
/obj/effect/landmark/start/chief_medical_officer
|
|
name = "Chief Medical Officer"
|
|
icon_state = "Chief Medical Officer"
|
|
|
|
/obj/effect/landmark/start/virologist
|
|
name = "Virologist"
|
|
icon_state = "Virologist"
|
|
|
|
/obj/effect/landmark/start/chaplain
|
|
name = "Chaplain"
|
|
icon_state = "Chaplain"
|
|
|
|
/obj/effect/landmark/start/cyborg
|
|
name = "Cyborg"
|
|
icon_state = "Cyborg"
|
|
|
|
/obj/effect/landmark/start/ai
|
|
name = "AI"
|
|
icon_state = "AI"
|
|
delete_after_roundstart = FALSE
|
|
var/primary_ai = TRUE
|
|
var/latejoin_active = TRUE
|
|
|
|
/obj/effect/landmark/start/ai/after_round_start()
|
|
if(latejoin_active && !used)
|
|
new /obj/structure/AIcore/latejoin_inactive(loc)
|
|
return ..()
|
|
|
|
/obj/effect/landmark/start/ai/secondary
|
|
icon = 'icons/effects/landmarks_static.dmi'
|
|
icon_state = "ai_spawn"
|
|
primary_ai = FALSE
|
|
latejoin_active = FALSE
|
|
|
|
//Department Security spawns
|
|
|
|
/obj/effect/landmark/start/depsec
|
|
name = "department_sec"
|
|
icon_state = "Security Officer"
|
|
|
|
/obj/effect/landmark/start/depsec/New()
|
|
..()
|
|
GLOB.department_security_spawns += src
|
|
|
|
/obj/effect/landmark/start/depsec/Destroy()
|
|
GLOB.department_security_spawns -= src
|
|
return ..()
|
|
|
|
/obj/effect/landmark/start/depsec/supply
|
|
name = "supply_sec"
|
|
|
|
/obj/effect/landmark/start/depsec/medical
|
|
name = "medical_sec"
|
|
|
|
/obj/effect/landmark/start/depsec/engineering
|
|
name = "engineering_sec"
|
|
|
|
/obj/effect/landmark/start/depsec/science
|
|
name = "science_sec"
|
|
|
|
//Antagonist spawns
|
|
|
|
/obj/effect/landmark/start/wizard
|
|
name = "wizard"
|
|
icon = 'icons/effects/landmarks_static.dmi'
|
|
icon_state = "wiznerd_spawn"
|
|
|
|
/obj/effect/landmark/start/wizard/Initialize()
|
|
..()
|
|
GLOB.wizardstart += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
/obj/effect/landmark/start/nukeop
|
|
name = "nukeop"
|
|
icon = 'icons/effects/landmarks_static.dmi'
|
|
icon_state = "snukeop_spawn"
|
|
|
|
/obj/effect/landmark/start/nukeop/Initialize()
|
|
..()
|
|
GLOB.nukeop_start += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
/obj/effect/landmark/start/nukeop_leader
|
|
name = "nukeop leader"
|
|
icon = 'icons/effects/landmarks_static.dmi'
|
|
icon_state = "snukeop_leader_spawn"
|
|
|
|
/obj/effect/landmark/start/nukeop_leader/Initialize()
|
|
..()
|
|
GLOB.nukeop_leader_start += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
// Must be immediate because players will
|
|
// join before SSatom initializes everything.
|
|
INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
|
|
|
|
/obj/effect/landmark/start/new_player
|
|
name = "New Player"
|
|
|
|
/obj/effect/landmark/start/new_player/Initialize()
|
|
..()
|
|
GLOB.newplayer_start += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
/obj/effect/landmark/latejoin
|
|
name = "JoinLate"
|
|
|
|
/obj/effect/landmark/latejoin/Initialize(mapload)
|
|
..()
|
|
SSjob.latejoin_trackers += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
//space carps, magicarps, lone ops, slaughter demons, possibly revenants spawn here
|
|
/obj/effect/landmark/carpspawn
|
|
name = "carpspawn"
|
|
icon_state = "carp_spawn"
|
|
|
|
//observer start
|
|
/obj/effect/landmark/observer_start
|
|
name = "Observer-Start"
|
|
icon_state = "observer_start"
|
|
|
|
//xenos, morphs and nightmares spawn here
|
|
/obj/effect/landmark/xeno_spawn
|
|
name = "xeno_spawn"
|
|
icon_state = "xeno_spawn"
|
|
|
|
/obj/effect/landmark/xeno_spawn/Initialize(mapload)
|
|
..()
|
|
GLOB.xeno_spawn += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
//objects with the stationloving component (nuke disk) respawn here.
|
|
//also blobs that have their spawn forcemoved (running out of time when picking their spawn spot), santa and respawning devils
|
|
/obj/effect/landmark/blobstart
|
|
name = "blobstart"
|
|
icon_state = "blob_start"
|
|
|
|
/obj/effect/landmark/blobstart/Initialize(mapload)
|
|
..()
|
|
GLOB.blobstart += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
//spawns sec equipment lockers depending on the number of sec officers
|
|
/obj/effect/landmark/secequipment
|
|
name = "secequipment"
|
|
icon_state = "secequipment"
|
|
|
|
/obj/effect/landmark/secequipment/Initialize(mapload)
|
|
..()
|
|
GLOB.secequipment += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
//players that get put in admin jail show up here
|
|
/obj/effect/landmark/prisonwarp
|
|
name = "prisonwarp"
|
|
icon_state = "prisonwarp"
|
|
|
|
/obj/effect/landmark/prisonwarp/Initialize(mapload)
|
|
..()
|
|
GLOB.prisonwarp += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
/obj/effect/landmark/ert_spawn
|
|
name = "Emergencyresponseteam"
|
|
icon_state = "ert_spawn"
|
|
|
|
/obj/effect/landmark/ert_spawn/Initialize(mapload)
|
|
..()
|
|
GLOB.emergencyresponseteamspawn += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
//ninja energy nets teleport victims here
|
|
/obj/effect/landmark/holding_facility
|
|
name = "Holding Facility"
|
|
icon_state = "holding_facility"
|
|
|
|
/obj/effect/landmark/holding_facility/Initialize(mapload)
|
|
..()
|
|
GLOB.holdingfacility += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
/obj/effect/landmark/thunderdome/observe
|
|
name = "tdomeobserve"
|
|
icon_state = "tdome_observer"
|
|
|
|
/obj/effect/landmark/thunderdome/observe/Initialize(mapload)
|
|
..()
|
|
GLOB.tdomeobserve += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
/obj/effect/landmark/thunderdome/one
|
|
name = "tdome1"
|
|
icon_state = "tdome_t1"
|
|
|
|
/obj/effect/landmark/thunderdome/one/Initialize(mapload)
|
|
..()
|
|
GLOB.tdome1 += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
/obj/effect/landmark/thunderdome/two
|
|
name = "tdome2"
|
|
icon_state = "tdome_t2"
|
|
|
|
/obj/effect/landmark/thunderdome/two/Initialize(mapload)
|
|
..()
|
|
GLOB.tdome2 += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
/obj/effect/landmark/thunderdome/admin
|
|
name = "tdomeadmin"
|
|
icon_state = "tdome_admin"
|
|
|
|
/obj/effect/landmark/thunderdome/admin/Initialize(mapload)
|
|
..()
|
|
GLOB.tdomeadmin += loc
|
|
return INITIALIZE_HINT_QDEL
|
|
|
|
//generic event spawns
|
|
/obj/effect/landmark/event_spawn
|
|
name = "generic event spawn"
|
|
icon_state = "generic_event"
|
|
layer = HIGH_LANDMARK_LAYER
|
|
|
|
|
|
/obj/effect/landmark/event_spawn/New()
|
|
..()
|
|
GLOB.generic_event_spawns += src
|
|
|
|
/obj/effect/landmark/event_spawn/Destroy()
|
|
GLOB.generic_event_spawns -= src
|
|
return ..()
|
|
|
|
/obj/effect/landmark/ruin
|
|
var/datum/map_template/ruin/ruin_template
|
|
|
|
/obj/effect/landmark/ruin/New(loc, my_ruin_template)
|
|
name = "ruin_[GLOB.ruin_landmarks.len + 1]"
|
|
..(loc)
|
|
ruin_template = my_ruin_template
|
|
GLOB.ruin_landmarks |= src
|
|
|
|
/obj/effect/landmark/ruin/Destroy()
|
|
GLOB.ruin_landmarks -= src
|
|
ruin_template = null
|
|
. = ..()
|