mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 00:27:31 +01:00
Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts: # _maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm # _maps/RandomRuins/SpaceRuins/garbagetruck2.dmm # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # _maps/map_files/tramstation/tramstation.dmm # code/_onclick/hud/new_player.dm # code/datums/components/squashable.dm # code/datums/diseases/advance/symptoms/heal.dm # code/datums/diseases/chronic_illness.dm # code/datums/status_effects/buffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/stamcrit.dm # code/game/machinery/computer/crew.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/wall_mounted.dm # code/game/turfs/closed/indestructible.dm # code/modules/admin/view_variables/filterrific.dm # code/modules/antagonists/heretic/influences.dm # code/modules/cargo/orderconsole.dm # code/modules/client/preferences.dm # code/modules/events/space_vines/vine_mutations.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/carbon/human/death.dm # code/modules/mob/living/carbon/human/species_types/jellypeople.dm # code/modules/mob/living/damage_procs.dm # code/modules/mob/living/living.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mob_spawn/mob_spawn.dm # code/modules/projectiles/ammunition/energy/laser.dm # code/modules/projectiles/guns/ballistic/launchers.dm # code/modules/projectiles/guns/energy/laser.dm # code/modules/reagents/chemistry/machinery/chem_dispenser.dm # code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/medicine_reagents.dm # code/modules/surgery/healing.dm # code/modules/unit_tests/designs.dm # icons/mob/inhands/items_lefthand.dmi # icons/mob/inhands/items_righthand.dmi # tgui/packages/tgui/interfaces/ChemDispenser.tsx
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
flavour_text = "Walk this mortal plane and terrorize all living adventurers who dare cross your path."
|
||||
spawner_job_path = /datum/job/skeleton
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/skeleton/special(mob/living/new_spawn, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/skeleton/special(mob/living/new_spawn, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
to_chat(new_spawn, "<b>You have this horrible lurching feeling deep down that your binding to this world will fail if you abandon this zone... Were you reanimated to protect something?</b>")
|
||||
new_spawn.AddComponent(/datum/component/stationstuck, PUNISHMENT_MURDER, "You experience a feeling like a stressed twine being pulled until it snaps. Then, merciful nothing.")
|
||||
@@ -30,7 +30,7 @@
|
||||
you_are_text = "By unknown powers, your rotting remains have been resurrected!"
|
||||
flavour_text = "Walk this mortal plane and terrorize all living adventurers who dare cross your path."
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/zombie/special(mob/living/new_spawn, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/zombie/special(mob/living/new_spawn, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
to_chat(new_spawn, "<b>You have this horrible lurching feeling deep down that your binding to this world will fail if you abandon this zone... Were you reanimated to protect something?</b>")
|
||||
new_spawn.AddComponent(/datum/component/stationstuck, PUNISHMENT_MURDER, "You experience a feeling like a stressed twine being pulled until it snaps. Then, merciful nothing.")
|
||||
|
||||
@@ -6,8 +6,9 @@
|
||||
flavour_text = "Write me some god damn flavor text!" //the flavor text will be the backstory argument called on the antagonist's greet, see hunter.dm for details
|
||||
show_flavor = FALSE
|
||||
var/back_story = "error"
|
||||
allow_custom_character = GHOSTROLE_TAKE_PREFS_APPEARANCE
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/fugitive/special(mob/living/carbon/human/spawned_human, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/fugitive/special(mob/living/carbon/human/spawned_human, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
var/datum/antagonist/fugitive_hunter/fughunter = new
|
||||
fughunter.backstory = back_story
|
||||
|
||||
@@ -32,14 +32,7 @@
|
||||
notify_flags = NOTIFY_CATEGORY_NOFLASH,
|
||||
)
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/golem/name_mob(mob/living/spawned_mob, forced_name)
|
||||
if(forced_name || !iscarbon(spawned_mob))
|
||||
return ..()
|
||||
|
||||
forced_name = generate_random_name_species_based(spawned_mob.gender, TRUE, species_type = /datum/species/golem)
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/golem/special(mob/living/new_spawn, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/golem/special(mob/living/new_spawn, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
if(is_path_in_list(initial_type, GLOB.golem_stack_food_directory))
|
||||
var/datum/golem_food_buff/initial_buff = GLOB.golem_stack_food_directory[initial_type]
|
||||
@@ -73,7 +66,7 @@
|
||||
desc = "A humanoid shape, empty, lifeless, and full of potential."
|
||||
prompt_name = "a free golem"
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/golem/adamantine/special(mob/living/new_spawn, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/golem/adamantine/special(mob/living/new_spawn, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
if(!ishuman(new_spawn))
|
||||
return
|
||||
@@ -110,8 +103,6 @@
|
||||
to_chat(new_spawn, span_userdanger("Serve [real_owner.real_name], and assist [real_owner.p_them()] in completing [real_owner.p_their()] goals at any cost."))
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/golem/servant/name_mob(mob/living/spawned_mob, forced_name)
|
||||
if(forced_name || !iscarbon(spawned_mob))
|
||||
return ..()
|
||||
if(owner_ref?.resolve())
|
||||
forced_name = "Golem ([rand(1,999)])"
|
||||
return ..()
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
the hostile creatures, and the ash drakes swooping down from the cloudless skies, all you can wish for is the feel of soft grass between your toes and \
|
||||
the fresh air of Earth. These thoughts are dispelled by yet another recollection of how you got here... "
|
||||
spawner_job_path = /datum/job/hermit
|
||||
allow_custom_character = ALL
|
||||
quirks_enabled = TRUE // SKYRAT EDIT ADDITION - ghost role loadouts
|
||||
random_appearance = FALSE // SKYRAT EDIT ADDITION
|
||||
|
||||
@@ -81,6 +82,7 @@
|
||||
flavour_text = "Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?"
|
||||
spawner_job_path = /datum/job/beach_bum
|
||||
outfit = /datum/outfit/beachbum
|
||||
allow_custom_character = GHOSTROLE_TAKE_PREFS_APPEARANCE
|
||||
quirks_enabled = TRUE // SKYRAT EDIT ADDITION - ghost role loadouts
|
||||
random_appearance = FALSE // SKYRAT EDIT ADDITION
|
||||
|
||||
@@ -89,8 +91,9 @@
|
||||
flavour_text = "It's up to you to make sure nobody drowns or gets eaten by sharks and stuff."
|
||||
name = "lifeguard sleeper"
|
||||
outfit = /datum/outfit/beachbum/lifeguard
|
||||
allow_custom_character = NONE
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/beach/lifeguard/special(mob/living/carbon/human/lifeguard, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/beach/lifeguard/special(mob/living/carbon/human/lifeguard, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
lifeguard.gender = FEMALE
|
||||
lifeguard.update_body()
|
||||
@@ -123,6 +126,7 @@
|
||||
flavour_text = "Time to mix drinks and change lives. Smoking space drugs makes it easier to understand your patrons' odd dialect."
|
||||
spawner_job_path = /datum/job/space_bartender
|
||||
outfit = /datum/outfit/spacebartender
|
||||
allow_custom_character = ALL
|
||||
random_appearance = FALSE // SKYRAT EDIT ADDITION
|
||||
|
||||
/datum/outfit/spacebartender
|
||||
@@ -242,7 +246,7 @@
|
||||
to_chat(user, span_warning("You have exhausted your usefulness to the Necropolis."))
|
||||
return FALSE
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/ash_walker/special(mob/living/carbon/human/spawned_human, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/ash_walker/special(mob/living/carbon/human/spawned_human, mob/mob_possessor, apply_prefs)
|
||||
// SKYRAT EDIT ADDITION BEGIN
|
||||
spawned_human.fully_replace_character_name(null, spawned_human.generate_random_mob_name(TRUE)) // SKYRAT EDIT MOVE - Moving before parent call prevents char name randomization
|
||||
quirks_enabled = TRUE // ghost role quirks
|
||||
@@ -300,8 +304,9 @@
|
||||
quirks_enabled = TRUE // SKYRAT EDIT ADDITION - ghost role loadouts
|
||||
random_appearance = FALSE // SKYRAT EDIT ADDITION
|
||||
deletes_on_zero_uses_left = FALSE
|
||||
allow_custom_character = ALL
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/special(mob/living/new_spawn, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/lavaland_syndicate/special(mob/living/new_spawn, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
new_spawn.grant_language(/datum/language/codespeak, source = LANGUAGE_SPAWNER) // SKYRAT EDIT CHANGE - ORIGINAL: new_spawn.grant_language(/datum/language/codespeak, source = LANGUAGE_MIND)
|
||||
|
||||
|
||||
@@ -14,9 +14,12 @@
|
||||
important_text = "Work as a team with your fellow survivors and do not abandon them."
|
||||
outfit = /datum/outfit/oldeng
|
||||
spawner_job_path = /datum/job/ancient_crew
|
||||
allow_custom_character = GHOSTROLE_TAKE_PREFS_APPEARANCE
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/oldstation/create_from_ghost(mob/dead/user)
|
||||
/obj/effect/mob_spawn/ghost_role/human/oldstation/create(mob/mob_possessor, newname, apply_prefs)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
notify_ghosts(
|
||||
"Someone just woke up on Charlie Station! Why not join them and help out?",
|
||||
source = ., //the spawned mob
|
||||
@@ -102,6 +105,7 @@
|
||||
outfit = /datum/outfit/syndicate_empty/battlecruiser
|
||||
spawner_job_path = /datum/job/battlecruiser_crew
|
||||
uses = 4
|
||||
allow_custom_character = ALL
|
||||
|
||||
/// The antag team to apply the player to
|
||||
var/datum/team/antag_team
|
||||
@@ -191,6 +195,7 @@
|
||||
important_text = "Work as a team with your fellow actors and the director to make entertainment for the masses."
|
||||
outfit = /datum/outfit/actor
|
||||
spawner_job_path = /datum/job/ghost_role
|
||||
allow_custom_character = ALL
|
||||
|
||||
/datum/outfit/actor
|
||||
name = "Actor"
|
||||
@@ -215,6 +220,7 @@
|
||||
important_text = "Work as a team with your fellow actors and the director to make entertainment for the masses."
|
||||
outfit = /datum/outfit/actor/director
|
||||
spawner_job_path = /datum/job/ghost_role
|
||||
allow_custom_character = ALL
|
||||
|
||||
/datum/outfit/actor/director
|
||||
name = "Director"
|
||||
|
||||
@@ -139,8 +139,9 @@
|
||||
if(!silent)
|
||||
to_chat(user, span_warning("\The [src] is not ready to hatch yet!"))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/spider/special(mob/living/basic/spider/spawned_mob, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/spider/special(mob/living/basic/spider/spawned_mob, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
if (isspider(spawned_mob))
|
||||
spawned_mob.directive = directive
|
||||
@@ -197,21 +198,12 @@
|
||||
)
|
||||
flash_window = TRUE
|
||||
|
||||
/**
|
||||
* Makes a ghost into a spider based on the type of egg cluster.
|
||||
*
|
||||
* Allows a ghost to get a prompt to use the egg cluster to become a spider.
|
||||
*
|
||||
* Arguments:
|
||||
* * user - The ghost attempting to become a spider
|
||||
* * newname - If set, renames the mob to this name
|
||||
*/
|
||||
/obj/effect/mob_spawn/ghost_role/spider/create(mob/user, newname)
|
||||
/obj/effect/mob_spawn/ghost_role/spider/pre_ghost_take(mob/dead/observer/user)
|
||||
var/chosen_spider = length(potentialspawns) > 1 ? get_radial_choice(user) : potentialspawns[1]
|
||||
if(QDELETED(src) || QDELETED(user) || isnull(chosen_spider))
|
||||
if(isnull(chosen_spider))
|
||||
return FALSE
|
||||
mob_type = chosen_spider
|
||||
return ..()
|
||||
return TRUE
|
||||
|
||||
/// Pick a spider type from a radial menu
|
||||
/obj/effect/mob_spawn/ghost_role/spider/proc/get_radial_choice(mob/user)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
though fate has other plans for you."
|
||||
flavour_text = "Good. It seems as though your ship crashed. You remember that you were convicted of "
|
||||
spawner_job_path = /datum/job/escaped_prisoner
|
||||
allow_custom_character = GHOSTROLE_TAKE_PREFS_APPEARANCE
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/prisoner_transport/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -24,7 +25,7 @@
|
||||
new /obj/structure/fluff/empty_sleeper/syndicate(get_turf(src))
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/prisoner_transport/special(mob/living/carbon/human/spawned_human, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/prisoner_transport/special(mob/living/carbon/human/spawned_human, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
spawned_human.fully_replace_character_name(null, "NTP #LL-0[rand(111,999)]") //Nanotrasen Prisoner #Lavaland-(numbers)
|
||||
|
||||
@@ -50,6 +51,7 @@
|
||||
flavour_text = "Cater to visiting guests with your fellow staff, advertise the hotel, and make sure the manager doesn't fire you. Remember, the customer is always right!"
|
||||
important_text = "Do NOT leave the hotel, as that is grounds for contract termination."
|
||||
spawner_job_path = /datum/job/hotel_staff
|
||||
allow_custom_character = ALL
|
||||
|
||||
/datum/outfit/hotelstaff
|
||||
name = "Hotel Staff"
|
||||
@@ -94,6 +96,7 @@
|
||||
flavour_text = "You have awoken, without instruction. Death to Nanotrasen! If there are some clues around as to what you're supposed to be doing, you best follow those."
|
||||
outfit = /datum/outfit/syndicate_empty
|
||||
spawner_job_path = /datum/job/space_syndicate
|
||||
allow_custom_character = ALL
|
||||
|
||||
/datum/outfit/syndicate_empty
|
||||
name = "Syndicate Operative Empty"
|
||||
@@ -119,6 +122,7 @@
|
||||
flavour_text = "Hang out at the bar and chat with your buddies. Feel free to hop back in the cryogenics when you're done chatting."
|
||||
outfit = /datum/outfit/cryobartender
|
||||
spawner_job_path = /datum/job/space_bar_patron
|
||||
allow_custom_character = ALL
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/space_bar_patron/attack_hand(mob/user, list/modifiers)
|
||||
var/despawn = tgui_alert(usr, "Return to cryosleep? (Warning, Your mob will be deleted!)", null, list("Yes", "No"))
|
||||
@@ -153,7 +157,7 @@
|
||||
new/obj/structure/fluff/empty_sleeper(get_turf(src))
|
||||
return ..()
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/exile/special(mob/living/new_spawn, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/exile/special(mob/living/new_spawn, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
new_spawn.fully_replace_character_name(null,"Wish Granter's Victim ([rand(1,999)])")
|
||||
var/wish = rand(1,4)
|
||||
@@ -178,6 +182,7 @@
|
||||
you_are_text = "You are a Nanotrasen Private Security Officer!"
|
||||
flavour_text = "If higher command has an assignment for you, it's best you follow that. Otherwise, death to The Syndicate."
|
||||
outfit = /datum/outfit/nanotrasensoldier
|
||||
allow_custom_character = ALL
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/commander
|
||||
name = "sleeper"
|
||||
@@ -187,6 +192,7 @@
|
||||
you_are_text = "You are a Nanotrasen Commander!"
|
||||
flavour_text = "Upper-crusty of Nanotrasen. You should be given the respect you're owed."
|
||||
outfit = /datum/outfit/nanotrasencommander
|
||||
allow_custom_character = GHOSTROLE_TAKE_PREFS_APPEARANCE
|
||||
|
||||
//space doctor, a rat with cancer, and bessie from an old removed lavaland ruin.
|
||||
|
||||
@@ -199,6 +205,7 @@
|
||||
flavour_text = "It's your job- no, your duty as a doctor, to care and heal those in need."
|
||||
outfit = /datum/outfit/job/doctor
|
||||
spawner_job_path = /datum/job/space_doctor
|
||||
allow_custom_character = ALL
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/doctor/alive/equip(mob/living/carbon/human/doctor)
|
||||
. = ..()
|
||||
@@ -227,7 +234,7 @@
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper"
|
||||
|
||||
/obj/effect/mob_spawn/cow/special(mob/living/spawned_mob, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/cow/special(mob/living/spawned_mob, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
gender = FEMALE
|
||||
|
||||
@@ -244,6 +251,7 @@
|
||||
flavour_text = "Monitor Nanotrasen communications and record information. All intruders should be disposed of \
|
||||
swiftly to assure no gathered information is stolen or lost. Try not to wander too far from the outpost as the \
|
||||
caves can be a deadly place even for a trained operative such as yourself."
|
||||
allow_custom_character = ALL
|
||||
|
||||
/datum/outfit/snowsyndie
|
||||
name = "Syndicate Snow Operative"
|
||||
@@ -269,8 +277,9 @@
|
||||
important_text = "Obey orders given by your captain. DO NOT let the ship fall into enemy hands."
|
||||
outfit = /datum/outfit/syndicatespace/syndicrew
|
||||
spawner_job_path = /datum/job/syndicate_cybersun
|
||||
allow_custom_character = ALL
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/syndicatespace/special(mob/living/new_spawn, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/human/syndicatespace/special(mob/living/new_spawn, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
new_spawn.grant_language(/datum/language/codespeak, source = LANGUAGE_SPAWNER) // SKYRAT EDIT CHANGE - ORIGINAL: new_spawn.grant_language(/datum/language/codespeak, source = LANGUAGE_MIND)
|
||||
var/datum/job/spawn_job = SSjob.get_job_type(spawner_job_path)
|
||||
@@ -286,6 +295,7 @@
|
||||
important_text = "Protect the ship and secret documents in your backpack with your own life."
|
||||
outfit = /datum/outfit/syndicatespace/syndicaptain
|
||||
spawner_job_path = /datum/job/syndicate_cybersun_captain
|
||||
allow_custom_character = ALL
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/human/syndicatespace/captain/Destroy()
|
||||
new /obj/structure/fluff/empty_sleeper/syndicate/captain(get_turf(src))
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
if(flower_bud.trait_flags & SPACEVINE_COLD_RESISTANT)
|
||||
spawned_human_trap.unsuitable_cold_damage = 0
|
||||
|
||||
/obj/effect/mob_spawn/ghost_role/venus_human_trap/special(mob/living/spawned_mob, mob/mob_possessor)
|
||||
/obj/effect/mob_spawn/ghost_role/venus_human_trap/special(mob/living/spawned_mob, mob/mob_possessor, apply_prefs)
|
||||
. = ..()
|
||||
spawned_mob.mind.add_antag_datum(/datum/antagonist/venus_human_trap)
|
||||
|
||||
@@ -54,3 +54,4 @@
|
||||
if(!silent)
|
||||
to_chat(user, span_warning("\The [src] has not borne fruit yet!"))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
Reference in New Issue
Block a user