Merge commit '179a607a90ad7ec62bdaff4e6fe72af60ee56442' of https://github.com/tgstation/tgstation into upstream-24-10b

This commit is contained in:
Majkl-J
2024-10-23 23:27:16 -07:00
4642 changed files with 25352 additions and 14167 deletions
+5 -5
View File
@@ -15,7 +15,7 @@
var/earliest_start = 20 MINUTES //The earliest world.time that an event can start (round-duration in deciseconds) default: 20 mins
var/min_players = 0 //The minimum amount of alive, non-AFK human players on server required to start the event.
var/occurrences = 0 //How many times this event has occured
var/occurrences = 0 //How many times this event has occurred
var/max_occurrences = 20 //The maximum number of times this event can occur (naturally), it can still be forced.
//By setting this to 0 you can effectively disable an event.
@@ -173,7 +173,7 @@ Runs the event
*/
/datum/round_event_control/proc/run_event(random = FALSE, announce_chance_override = null, admin_forced = FALSE, event_cause)
/*
* We clear our signals first so we dont cancel a wanted event by accident,
* We clear our signals first so we don't cancel a wanted event by accident,
* the majority of time the admin will probably want to cancel a single midround spawned random events
* and not multiple events called by others admins
* * In the worst case scenario we can still recall a event which we cancelled by accident, which is much better then to have a unwanted event
@@ -252,7 +252,7 @@ Runs the event
SHOULD_CALL_PARENT(FALSE)
return
///Annouces the event name to deadchat, override this if what an event should show to deadchat is different to its event name.
///Announces the event name to deadchat, override this if what an event should show to deadchat is different to its event name.
/datum/round_event/proc/announce_deadchat(random, cause)
deadchat_broadcast(" has just been[random ? " randomly" : ""] triggered[cause ? " by [cause]" : ""]!", "<b>[control.name]</b>", message_type=DEADCHAT_ANNOUNCEMENT) //STOP ASSUMING IT'S BADMINS!
@@ -299,8 +299,8 @@ Runs the event
//Do not override this proc, instead use the appropiate procs.
//This proc will handle the calls to the appropiate procs.
//Do not override this proc, instead use the appropriate procs.
//This proc will handle the calls to the appropriate procs.
/datum/round_event/process()
SHOULD_NOT_OVERRIDE(TRUE)
if(!processing)
+3 -3
View File
@@ -19,14 +19,14 @@
/datum/round_event/aurora_caelus/announce(fake)
priority_announce("[station_name()]: A harmless cloud of ions is approaching your station, and will exhaust their energy battering the hull. Nanotrasen has approved a short break for all employees to relax and observe this very rare event. During this time, starlight will be bright but gentle, shifting between quiet green and blue colors. Any staff who would like to view these lights for themselves may proceed to the area nearest to them with viewing ports to open space. We hope you enjoy the lights.",
sound = 'sound/misc/notice2.ogg',
sound = 'sound/announcer/notice/notice2.ogg',
sender_override = "Nanotrasen Meteorology Division")
if (fake)
return
for(var/V in GLOB.player_list)
var/mob/M = V
if((M.client.prefs.read_preference(/datum/preference/toggle/sound_midi)) && is_station_level(M.z))
M.playsound_local(M, 'sound/ambience/aurora_caelus.ogg', 20, FALSE, pressure_affected = FALSE)
M.playsound_local(M, 'sound/ambience/aurora_caelus/aurora_caelus.ogg', 20, FALSE, pressure_affected = FALSE)
fade_space(fade_in = TRUE)
fade_kitchen(fade_in = TRUE)
@@ -66,7 +66,7 @@
fade_space()
fade_kitchen()
priority_announce("The aurora caelus event is now ending. Starlight conditions will slowly return to normal. When this has concluded, please return to your workplace and continue work as normal. Have a pleasant shift, [station_name()], and thank you for watching with us.",
sound = 'sound/misc/notice2.ogg',
sound = 'sound/announcer/notice/notice2.ogg',
sender_override = "Nanotrasen Meteorology Division")
/datum/round_event/aurora_caelus/proc/fade_space(fade_in = FALSE)
+6 -6
View File
@@ -112,10 +112,10 @@
earthquake_witness.playsound_local(
earthquake_witness,
pick(
'sound/misc/earth_rumble_distant1.ogg',
'sound/misc/earth_rumble_distant2.ogg',
'sound/misc/earth_rumble_distant3.ogg',
'sound/misc/earth_rumble_distant4.ogg',
'sound/ambience/earth_rumble/earth_rumble_distant1.ogg',
'sound/ambience/earth_rumble/earth_rumble_distant2.ogg',
'sound/ambience/earth_rumble/earth_rumble_distant3.ogg',
'sound/ambience/earth_rumble/earth_rumble_distant4.ogg',
),
75,
)
@@ -150,12 +150,12 @@
playsound(epicenter, 'sound/misc/metal_creak.ogg', 125, TRUE)
/datum/round_event/earthquake/end()
playsound(epicenter, 'sound/misc/earth_rumble.ogg', 125)
playsound(epicenter, 'sound/ambience/earth_rumble/earth_rumble.ogg', 125)
for(var/mob/earthquake_witness as anything in GLOB.player_list)
if(!is_station_level(earthquake_witness.z) || !is_mining_level(earthquake_witness.z))
continue
shake_camera(earthquake_witness, 2 SECONDS, 4)
earthquake_witness.playsound_local(earthquake_witness, 'sound/effects/explosionfar.ogg', 75)
earthquake_witness.playsound_local(earthquake_witness, 'sound/effects/explosion/explosionfar.ogg', 75)
// Step two of the destruction, which detonates the turfs in the earthquake zone. There is no actual explosion, meaning stuff around the earthquake zone is perfectly safe.
// All turfs, and everything else that IS in the earthquake zone, however, will behave as if it were bombed.
@@ -54,7 +54,7 @@
gear_fugitive_leader(leader, landing_turf, backstory)
//after spawning
playsound(src, 'sound/weapons/emitter.ogg', 50, TRUE)
playsound(src, 'sound/items/weapons/emitter.ogg', 50, TRUE)
new /obj/item/storage/toolbox/mechanical(landing_turf) //so they can actually escape maint
var/hunter_backstory = pick(
HUNTER_PACK_COPS,
@@ -72,7 +72,7 @@
player_mind.active = TRUE
var/mob/living/carbon/human/S = new(landing_turf)
player_mind.transfer_to(S)
player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/fugitive))
player_mind.set_assigned_role(SSjob.get_job_type(/datum/job/fugitive))
player_mind.special_role = ROLE_FUGITIVE
player_mind.add_antag_datum(/datum/antagonist/fugitive)
var/datum/antagonist/fugitive/fugitiveantag = player_mind.has_antag_datum(/datum/antagonist/fugitive)
@@ -25,10 +25,10 @@
var/mob/living/basic/morph/corpus_accipientis = new(spawn_loc)
player_mind.transfer_to(corpus_accipientis)
player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/morph))
player_mind.set_assigned_role(SSjob.get_job_type(/datum/job/morph))
player_mind.special_role = ROLE_MORPH
player_mind.add_antag_datum(/datum/antagonist/morph)
SEND_SOUND(corpus_accipientis, sound('sound/magic/mutate.ogg'))
SEND_SOUND(corpus_accipientis, sound('sound/effects/magic/mutate.ogg'))
message_admins("[ADMIN_LOOKUPFLW(corpus_accipientis)] has been made into a morph by an event.")
corpus_accipientis.log_message("was spawned as a morph by an event.", LOG_GAME)
spawned_mobs += corpus_accipientis
+2 -2
View File
@@ -27,11 +27,11 @@
var/mob/living/carbon/human/S = new (spawn_loc)
player_mind.transfer_to(S)
player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/nightmare))
player_mind.set_assigned_role(SSjob.get_job_type(/datum/job/nightmare))
player_mind.special_role = ROLE_NIGHTMARE
player_mind.add_antag_datum(/datum/antagonist/nightmare)
S.set_species(/datum/species/shadow/nightmare)
playsound(S, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
playsound(S, 'sound/effects/magic/ethereal_exit.ogg', 50, TRUE, -1)
message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Nightmare by an event.")
S.log_message("was spawned as a Nightmare by an event.", LOG_GAME)
spawned_mobs += S
+1 -1
View File
@@ -22,7 +22,7 @@
operative.randomize_human_appearance(~RANDOMIZE_SPECIES)
operative.dna.update_dna_identity()
var/datum/mind/Mind = new /datum/mind(chosen_one.key)
Mind.set_assigned_role(SSjob.GetJobType(/datum/job/lone_operative))
Mind.set_assigned_role(SSjob.get_job_type(/datum/job/lone_operative))
Mind.special_role = ROLE_LONE_OPERATIVE
Mind.active = TRUE
Mind.transfer_to(operative)
+2 -2
View File
@@ -104,9 +104,9 @@ GLOBAL_LIST_INIT(high_priority_sentience, typecacheof(list(
spawned_mobs += selected
to_chat(selected, span_userdanger("Hello world!"))
to_chat(selected, "<span class='warning'>Due to freak radiation and/or chemicals \
to_chat(selected, span_warning("Due to freak radiation and/or chemicals \
and/or lucky chance, you have gained human level intelligence \
and the ability to speak and understand human language!</span>")
and the ability to speak and understand human language!"))
return SUCCESSFUL_SPAWN
@@ -28,7 +28,7 @@
var/mob/living/basic/space_dragon/dragon = new(spawn_location)
dragon.key = chosen_one.key
dragon.mind.add_antag_datum(/datum/antagonist/space_dragon)
playsound(dragon, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
playsound(dragon, 'sound/effects/magic/ethereal_exit.ogg', 50, TRUE, -1)
message_admins("[ADMIN_LOOKUPFLW(dragon)] has been made into a Space Dragon by an event.")
dragon.log_message("was spawned as a Space Dragon by an event.", LOG_GAME)
spawned_mobs += dragon
+1 -1
View File
@@ -71,7 +71,7 @@
if(winner.has_status_effect(/datum/status_effect/exercised)) //Stuff that should "block" a heart attack rather than just deny eligibility for one goes here.
winner.visible_message(span_warning("[winner] grunts and clutches their chest for a moment, catching [winner.p_their()] breath."), span_medal("Your chest lurches in pain for a brief moment, which quickly fades. \
You feel like you've just avoided a serious health disaster."), span_hear("You hear someone's breathing sharpen for a moment, followed by a sigh of relief."), 4)
winner.playsound_local(get_turf(winner), 'sound/health/slowbeat.ogg', 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
winner.playsound_local(get_turf(winner), 'sound/effects/health/slowbeat.ogg', 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
winner.Stun(3 SECONDS)
if(winner.client)
winner.client.give_award(/datum/award/achievement/misc/healthy, winner)
+3 -3
View File
@@ -66,7 +66,7 @@
//Bunny Suit
/obj/item/clothing/head/costume/bunnyhead
name = "Easter Bunny Head"
name = "Easter Bunny head"
icon_state = "bunnyhead"
inhand_icon_state = null
desc = "Considerably more cute than 'Frank'."
@@ -75,7 +75,7 @@
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
/obj/item/clothing/suit/costume/bunnysuit
name = "Easter Bunny Suit"
name = "easter bunny suit"
desc = "Hop Hop Hop!"
icon_state = "bunnysuit"
icon = 'icons/obj/clothing/suits/costume.dmi'
@@ -88,7 +88,7 @@
//Bunny bag!
/obj/item/storage/backpack/satchel/bunnysatchel
name = "Easter Bunny Satchel"
name = "easter bunny satchel"
desc = "Good for your eyes."
icon_state = "satchel_carrot"
inhand_icon_state = null
@@ -25,7 +25,7 @@
spawn_meteor(list(/obj/effect/meteor/dark_matteor = 1), null, target)
/datum/round_event/dark_matteor/announce(fake)
priority_announce("Warning. Excessive tampering of meteor satellites has attracted a dark matt-eor. Signature approaching [GLOB.station_name]. Please brace for impact.", "Meteor Alert", 'sound/misc/airraid.ogg')
priority_announce("Warning. Excessive tampering of meteor satellites has attracted a dark matt-eor. Signature approaching [GLOB.station_name]. Please brace for impact.", "Meteor Alert", 'sound/announcer/alarm/airraid.ogg')
/datum/event_admin_setup/warn_admin/dark_matteor
warning_text = "Dark Matt-eors spawn singularities. The round is ending once a dark matt-eor hits the station. Proceed anyways?"
+1 -1
View File
@@ -23,7 +23,7 @@
priority_announce("Due to [cause], [plural] [name] have [movement] \
into the [location].", "Migration Alert",
'sound/creatures/mousesqueek.ogg')
'sound/mobs/non-humanoids/mouse/mousesqueek.ogg')
/datum/round_event/mice_migration/start()
SSminor_mapping.trigger_migration(rand(minimum_mice, maximum_mice))
+3 -3
View File
@@ -72,11 +72,11 @@
/datum/round_event/portal_storm/announce(fake)
set waitfor = 0
sound_to_playing_players('sound/magic/lightning_chargeup.ogg')
sound_to_playing_players('sound/effects/magic/lightning_chargeup.ogg')
sleep(8 SECONDS)
priority_announce("Massive bluespace anomaly detected en route to [station_name()]. Brace for impact.")
sleep(2 SECONDS)
sound_to_playing_players('sound/magic/lightningbolt.ogg')
sound_to_playing_players('sound/effects/magic/lightningbolt.ogg')
/datum/round_event/portal_storm/tick()
spawn_effects(get_random_station_turf())
@@ -112,7 +112,7 @@
return
T = get_step(T, SOUTHWEST) //align center of image with turf
T.flick_overlay_static(storm_appearances[GET_TURF_PLANE_OFFSET(T) + 1], 15)
playsound(T, 'sound/magic/lightningbolt.ogg', rand(80, 100), TRUE)
playsound(T, 'sound/effects/magic/lightningbolt.ogg', rand(80, 100), TRUE)
/datum/round_event/portal_storm/proc/spawn_hostile()
if(!hostile_types || !hostile_types.len)
@@ -180,7 +180,7 @@
if(thorn && prob(40) && !HAS_TRAIT(victim, TRAIT_PIERCEIMMUNE)) //If we found the thorns mutation there is now a chance to get stung instead of lashed or smashed.
victim.apply_damage(50, BRUTE, def_zone = limb, wound_bonus = rand(-20,10), sharpness = SHARP_POINTY) //This one gets a bit lower damage because it ignores armor.
victim.Stun(1 SECONDS) //Stopped in place for a moment.
playsound(living_mob, 'sound/weapons/pierce.ogg', 50, TRUE, -1)
playsound(living_mob, 'sound/items/weapons/pierce.ogg', 50, TRUE, -1)
living_mob.visible_message(span_danger("[living_mob] is nailed by a sharp thorn!"), \
span_userdanger("You are nailed by a sharp thorn!"))
log_combat(vine, living_mob, "aggressively pierced") //"Aggressively" for easy ctrl+F'ing in the attack logs.
@@ -188,7 +188,7 @@
if(prob(80) && !HAS_TRAIT(victim, TRAIT_PIERCEIMMUNE))
victim.apply_damage(60, BRUTE, def_zone = limb, blocked = armor, wound_bonus = rand(-20,10), sharpness = SHARP_EDGED)
victim.Knockdown(2 SECONDS)
playsound(victim, 'sound/weapons/whip.ogg', 50, TRUE, -1)
playsound(victim, 'sound/items/weapons/whip.ogg', 50, TRUE, -1)
living_mob.visible_message(span_danger("[living_mob] is lacerated by an outburst of vines!"), \
span_userdanger("You are lacerated by an outburst of vines!"))
log_combat(vine, living_mob, "aggressively lacerated")
@@ -203,7 +203,7 @@
log_combat(vine, living_mob, "aggressively smashed")
else //Living but not a carbon? Maybe a silicon? Can't be wounded so have a big chunk of simple bruteloss with no special effects. They can be entangled.
living_mob.adjustBruteLoss(75)
playsound(living_mob, 'sound/weapons/whip.ogg', 50, TRUE, -1)
playsound(living_mob, 'sound/items/weapons/whip.ogg', 50, TRUE, -1)
living_mob.visible_message(span_danger("[living_mob] is brutally threshed by [vine]!"), \
span_userdanger("You are brutally threshed by [vine]!"))
log_combat(vine, living_mob, "aggressively spread into") //You aren't being attacked by the vines. You just happen to stand in their way.
@@ -95,11 +95,11 @@
switch(damage_type)
if(BRUTE)
if(damage_amount)
playsound(src, 'sound/weapons/slash.ogg', 50, TRUE)
playsound(src, 'sound/items/weapons/slash.ogg', 50, TRUE)
else
playsound(src, 'sound/weapons/tap.ogg', 50, TRUE)
playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
if(BURN)
playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE)
playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
/obj/structure/spacevine/proc/on_entered(datum/source, atom/movable/movable)
SIGNAL_HANDLER
+2 -2
View File
@@ -92,7 +92,7 @@
/datum/round_event/supermatter_surge/announce(fake)
var/class_to_announce = fake ? pick(1, 2, 3, 4) : surge_class
priority_announce("The Crystal Integrity Monitoring System has detected unusual atmospheric properties in the supermatter chamber, energy output from the supermatter crystal has increased significantly. Engineering intervention is required to stabilize the engine.", "Class [class_to_announce] Supermatter Surge Alert", 'sound/machines/engine_alert3.ogg')
priority_announce("The Crystal Integrity Monitoring System has detected unusual atmospheric properties in the supermatter chamber, energy output from the supermatter crystal has increased significantly. Engineering intervention is required to stabilize the engine.", "Class [class_to_announce] Supermatter Surge Alert", 'sound/machines/engine_alert/engine_alert3.ogg')
/datum/round_event/supermatter_surge/start()
engine.bullet_energy = surge_class + SURGE_BULLET_ENERGY_ADDITION
@@ -126,7 +126,7 @@
fakeable = FALSE
/datum/round_event/supermatter_surge/poly/announce(fake)
priority_announce("The Crystal Integrity Monitoring System has detected unusual parrot type resonance in the supermatter chamber, energy output from the supermatter crystal has increased significantly. Engineering intervention is required to stabilize the engine.", "Class P Supermatter Surge Alert", 'sound/machines/engine_alert3.ogg')
priority_announce("The Crystal Integrity Monitoring System has detected unusual parrot type resonance in the supermatter chamber, energy output from the supermatter crystal has increased significantly. Engineering intervention is required to stabilize the engine.", "Class P Supermatter Surge Alert", 'sound/machines/engine_alert/engine_alert3.ogg')
#undef SURGE_DURATION_MIN
#undef SURGE_DURATION_MAX
+1 -1
View File
@@ -7,5 +7,5 @@
description = "The nuclear explosion cutscene begins to play to scare the crew."
/datum/round_event/wizard/fake_explosion/start()
sound_to_playing_players('sound/machines/alarm.ogg')
sound_to_playing_players('sound/announcer/alarm/nuke_alarm.ogg', 70)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(play_cinematic), /datum/cinematic/nuke/fake, world), 10 SECONDS)
+1 -1
View File
@@ -38,7 +38,7 @@ GLOBAL_DATUM(rpgtitle_controller, /datum/rpgtitle_controller)
/datum/rpgtitle_controller/proc/on_crewmember_join(datum/source, mob/living/new_crewmember, rank)
SIGNAL_HANDLER
var/datum/job/job = SSjob.GetJob(rank)
var/datum/job/job = SSjob.get_job(rank)
//we must prepare for the mother of all strings
new_crewmember.maptext_height = max(new_crewmember.maptext_height, 32)