Skip to content

Commit

Permalink
Merge remote-tracking branch 'cmss13-devs/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
ItsVyzo committed Dec 15, 2023
2 parents 310799d + ccaa195 commit 7595329
Show file tree
Hide file tree
Showing 150 changed files with 10,677 additions and 10,258 deletions.
2 changes: 2 additions & 0 deletions code/__DEFINES/dcs/signals/signals_global.dm
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,5 @@

/// From /obj/structure/machinery/power/fusion_engine/proc/set_overloading() : (set_overloading)
#define COMSIG_GLOB_GENERATOR_SET_OVERLOADING "!generator_set_overloading"

#define COMSIG_GLOB_HIJACK_IMPACTED "!hijack_impacted"
1 change: 1 addition & 0 deletions code/__DEFINES/maps.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ require only minor tweaks.
#define ZTRAIT_FOG "Fog"
#define ZTRAIT_LOCKDOWN "Lockdown"
#define ZTRAIT_BASIC_RT "BasicRT"
#define ZTRAIT_IN_SPACE "InSpace" // Is our ground_level considered in space or on a space station

// boolean - weather types that occur on the level
#define ZTRAIT_SNOWSTORM "weather_snowstorm"
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,8 @@ GLOBAL_LIST(trait_name_map)
#define TRAIT_SOURCE_XENO_ACTION_CHARGE "t_s_xeno_action_charge"
///Status trait coming from a xeno nest
#define XENO_NEST_TRAIT "xeno_nest"
///Status trait from a generic throw by xeno abilities
#define XENO_THROW_TRAIT "xeno_throw_trait"
//-- structure traits --
///Status trait coming from being flipped or unflipped.
#define TRAIT_SOURCE_FLIP_TABLE "t_s_flip_table"
Expand Down
4 changes: 0 additions & 4 deletions code/_globalvars/lists/object_lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,6 @@ GLOBAL_LIST_EMPTY_TYPED(disposal_retrieval_list, /obj/structure/disposaloutlet/r
GLOBAL_LIST_EMPTY_TYPED(disposalpipe_up_list, /obj/structure/disposalpipe/up/almayer)
GLOBAL_LIST_EMPTY_TYPED(disposalpipe_down_list, /obj/structure/disposalpipe/down/almayer)

GLOBAL_LIST_EMPTY_TYPED(hijack_bustable_windows, /obj/structure/window)
GLOBAL_LIST_EMPTY_TYPED(hijack_deletable_windows, /obj/structure/machinery/door/window/ultra)
GLOBAL_LIST_EMPTY_TYPED(hijack_bustable_ladders, /obj/structure/ladder/fragile_almayer)

GLOBAL_LIST_EMPTY_TYPED(all_multi_vehicles, /obj/vehicle/multitile)

GLOBAL_LIST_EMPTY_TYPED(lifeboat_almayer_docks, /obj/docking_port/stationary/lifeboat_dock)
Expand Down
12 changes: 6 additions & 6 deletions code/_onclick/hud/screen_objects.dm
Original file line number Diff line number Diff line change
Expand Up @@ -523,17 +523,17 @@
if(user.observed_xeno == user.tracked_marker)
user.overwatch(user.tracked_marker, TRUE) //passing in an obj/effect into a proc that expects mob/xenomorph B)
else
to_chat(user, SPAN_XENONOTICE("You psychically observe the [user.tracked_marker.mark_meaning.name] resin mark in [get_area_name(user.tracked_marker)]."))
to_chat(user, SPAN_XENONOTICE("We psychically observe the [user.tracked_marker.mark_meaning.name] resin mark in [get_area_name(user.tracked_marker)]."))
user.overwatch(user.tracked_marker) //this is so scuffed, sorry if this causes errors
return
if(mods["alt"] && user.tracked_marker)
user.stop_tracking_resin_mark()
return
if(!user.hive)
to_chat(user, SPAN_WARNING("You don't belong to a hive!"))
to_chat(user, SPAN_WARNING("We don't belong to a hive!"))
return FALSE
if(!user.hive.living_xeno_queen)
to_chat(user, SPAN_WARNING("Without a queen your psychic link is broken!"))
to_chat(user, SPAN_WARNING("Without a queen our psychic link is broken!"))
return FALSE
if(HAS_TRAIT(user, TRAIT_ABILITY_BURROWED) || user.is_mob_incapacitated() || user.buckled)
return FALSE
Expand All @@ -551,10 +551,10 @@
return FALSE
if(mods["shift"])
var/area/current_area = get_area(user)
to_chat(user, SPAN_NOTICE("You are currently at: <b>[current_area.name]</b>."))
to_chat(user, SPAN_NOTICE("We are currently at: <b>[current_area.name]</b>."))
return
if(!user.hive)
to_chat(user, SPAN_WARNING("You don't belong to a hive!"))
to_chat(user, SPAN_WARNING("We don't belong to a hive!"))
return FALSE
if(mods["alt"])
var/list/options = list()
Expand All @@ -581,7 +581,7 @@
track_state = options[selected]
return
if(!user.hive.living_xeno_queen)
to_chat(user, SPAN_WARNING("Your hive doesn't have a living queen!"))
to_chat(user, SPAN_WARNING("Our hive doesn't have a living queen!"))
return FALSE
if(HAS_TRAIT(user, TRAIT_ABILITY_BURROWED) || user.is_mob_incapacitated() || user.buckled)
return FALSE
Expand Down
16 changes: 8 additions & 8 deletions code/_onclick/ventcrawl.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
return
for(var/atom/A as anything in src)
if(!(is_type_in_list(A, canEnterVentWith)))
to_chat(src, SPAN_WARNING("You can't be carrying items or have items equipped when vent crawling!"))
to_chat(src, SPAN_WARNING("We cannot be carrying items or have items equipped when vent crawling!"))
return FALSE

/mob/living/click(atom/A, list/mods)
Expand All @@ -25,7 +25,7 @@
if(Adjacent(V) && !V.welded)
pipes |= V
if(!pipes || !pipes.len)
to_chat(src, SPAN_WARNING("There are no pipes that you can ventcrawl into within range!"))
to_chat(src, SPAN_WARNING("There are no pipes that we can ventcrawl into within range!"))
return
if(pipes.len == 1)
pipe = pipes[1]
Expand All @@ -42,11 +42,11 @@

/mob/living/proc/handle_ventcrawl(atom/clicked_on)
if(stat)
to_chat(src, SPAN_WARNING("You must be conscious to do this!"))
to_chat(src, SPAN_WARNING("We must be conscious to do this!"))
return

if(is_mob_incapacitated())
to_chat(src, SPAN_WARNING("You can't vent crawl while you're stunned!"))
to_chat(src, SPAN_WARNING("We can't vent crawl while we are stunned!"))
return

var/obj/structure/pipes/vents/vent_found
Expand All @@ -59,11 +59,11 @@
vent_found = locate(/obj/structure/pipes/vents/) in range(1, src)

if(!vent_found)
to_chat(src, SPAN_WARNING("You must be standing on or beside an air vent to enter it."))
to_chat(src, SPAN_WARNING("We must be standing on or beside an air vent to enter it."))
return

if(vent_found.welded)
to_chat(src, SPAN_WARNING("This vent is closed off, you cannot climb through it."))
to_chat(src, SPAN_WARNING("This vent is closed off, we cannot climb through it."))
return

if(!ventcrawl_carry())
Expand All @@ -78,10 +78,10 @@

if(length(vent_found.connected_to))
if(src.action_busy)
to_chat(src, SPAN_WARNING("You are already busy with something."))
to_chat(src, SPAN_WARNING("We are already busy with something."))
return

visible_message(SPAN_NOTICE("[src] begins climbing into [vent_found]."), SPAN_NOTICE("You begin climbing into [vent_found]."))
visible_message(SPAN_NOTICE("[src] begins climbing into [vent_found]."), SPAN_NOTICE("We begin climbing into [vent_found]."))
vent_found.animate_ventcrawl()
if(!do_after(src, 45, INTERRUPT_NO_NEEDHAND, BUSY_ICON_GENERIC))
vent_found.animate_ventcrawl_reset()
Expand Down
4 changes: 2 additions & 2 deletions code/_onclick/xeno.dm
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,10 @@
playsound(loc, 'sound/weapons/alien_claw_swipe.ogg', 10, 1) //Quiet to limit spam/nuisance.
if(firepatted)
src.visible_message(SPAN_DANGER("\The [src] pats at the fire!"), \
SPAN_DANGER("You pat the fire!"), null, 5, CHAT_TYPE_XENO_COMBAT)
SPAN_DANGER("We pat the fire!"), null, 5, CHAT_TYPE_XENO_COMBAT)
else
src.visible_message(SPAN_DANGER("\The [src] swipes at \the [target]!"), \
SPAN_DANGER("You swipe at \the [target]!"), null, 5, CHAT_TYPE_XENO_COMBAT)
SPAN_DANGER("We swipe at \the [target]!"), null, 5, CHAT_TYPE_XENO_COMBAT)
return TRUE

/mob/living/carbon/xenomorph/RangedAttack(atom/A)
Expand Down
2 changes: 1 addition & 1 deletion code/controllers/subsystem/minimap.dm
Original file line number Diff line number Diff line change
Expand Up @@ -883,7 +883,7 @@ SUBSYSTEM_DEF(minimaps)
else if(faction == XENO_HIVE_NORMAL)
var/mutable_appearance/appearance = mutable_appearance(icon('icons/mob/hud/actions_xeno.dmi'), "toggle_queen_zoom")
COOLDOWN_START(GLOB, xeno_canvas_cooldown, canvas_cooldown_time)
xeno_maptext("The Queen has updated your hive mind map", "You sense something unusual...", faction)
xeno_maptext("The Queen has updated our hive mind map", "We sense something unusual...", faction)
notify_ghosts(header = "Tactical Map", message = "The Xenomorph tactical map has been updated.", ghost_sound = "sound/voice/alien_distantroar_3.ogg", notify_volume = 50, action = NOTIFY_XENO_TACMAP, enter_link = "xeno_tacmap=1", enter_text = "View", source = user, alert_overlay = appearance)

toolbar_updated_selection = toolbar_color_selection
Expand Down
25 changes: 24 additions & 1 deletion code/datums/components/weed_food.dm
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@
var/turf/parent_turf
/// The obj that our parent is buckled to and we have registered a signal
var/obj/parent_buckle
/// A nest our parent is buckled to and we have registered a signal
var/obj/structure/bed/nest/parent_nest
/// The weeds that we are merging/merged with
var/obj/effect/alien/weeds/absorbing_weeds
/// The overlay image when merged
Expand Down Expand Up @@ -78,6 +80,7 @@
QDEL_NULL(weed_appearance)
parent_mob = null
parent_turf = null
parent_buckle = null

/datum/component/weed_food/RegisterWithParent()
RegisterSignal(parent_mob, COMSIG_MOVABLE_MOVED, PROC_REF(on_move))
Expand All @@ -100,6 +103,8 @@
UnregisterSignal(parent_turf, COMSIG_WEEDNODE_GROWTH)
if(parent_buckle)
UnregisterSignal(parent_buckle, COSMIG_OBJ_AFTER_BUCKLE)
if(parent_nest)
UnregisterSignal(parent_nest, COMSIG_PARENT_QDELETING)

/// SIGNAL_HANDLER for COMSIG_MOVABLE_MOVED
/datum/component/weed_food/proc/on_move()
Expand Down Expand Up @@ -160,6 +165,15 @@
unmerge_with_weeds()
return

/// SIGNAL_HANDLER for COMSIG_PARENT_QDELETING of nest
/datum/component/weed_food/proc/on_nest_deletion()
SIGNAL_HANDLER

if(merged)
parent_mob.plane = FLOOR_PLANE
UnregisterSignal(parent_nest, COMSIG_PARENT_QDELETING)
parent_nest = null

/**
* Try to start the process to turn into weeds
* Returns TRUE if started successfully
Expand Down Expand Up @@ -243,6 +257,10 @@
parent_buckle = parent_mob.buckled
RegisterSignal(parent_mob.buckled, COSMIG_OBJ_AFTER_BUCKLE, PROC_REF(on_after_buckle))
return FALSE
else
parent_nest = parent_mob.buckled
RegisterSignal(parent_nest, COMSIG_PARENT_QDELETING, PROC_REF(on_nest_deletion))

if(parent_buckle)
UnregisterSignal(parent_buckle, COSMIG_OBJ_AFTER_BUCKLE)
parent_buckle = null
Expand All @@ -263,7 +281,8 @@
ADD_TRAIT(parent_mob, TRAIT_MERGED_WITH_WEEDS, XENO_WEED_TRAIT)
parent_mob.anchored = TRUE
parent_mob.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
parent_mob.plane = FLOOR_PLANE
if(!parent_nest)
parent_mob.plane = FLOOR_PLANE
parent_mob.remove_from_all_mob_huds()

if(!weed_appearance) // Make a new sprite if we aren't re-merging
Expand All @@ -289,6 +308,10 @@
UnregisterSignal(absorbing_weeds, COMSIG_PARENT_QDELETING)
absorbing_weeds = null

if(parent_nest)
UnregisterSignal(parent_nest, COMSIG_PARENT_QDELETING)
parent_nest = null

REMOVE_TRAIT(parent_mob, TRAIT_MERGED_WITH_WEEDS, XENO_WEED_TRAIT)
parent_mob.anchored = FALSE
parent_mob.mouse_opacity = MOUSE_OPACITY_ICON
Expand Down
4 changes: 2 additions & 2 deletions code/datums/effects/xeno_strains/xeno_buff.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
if(!isxeno(A))
qdel(src)

to_chat(A, SPAN_XENONOTICE("You feel empowered"))
to_chat(A, SPAN_XENONOTICE("We feel empowered"))

var/mob/living/carbon/xenomorph/X = A
X.melee_damage_lower += bonus_damage
Expand All @@ -47,7 +47,7 @@
/datum/effects/xeno_buff/Destroy()

if(affected_atom)
to_chat(affected_atom, SPAN_XENONOTICE("You no longer feel empowered"))
to_chat(affected_atom, SPAN_XENONOTICE("We no longer feel empowered"))
var/mob/living/carbon/xenomorph/X = affected_atom
X.melee_damage_lower -= bonus_damage
X.melee_damage_upper -= bonus_damage
Expand Down
4 changes: 2 additions & 2 deletions code/datums/keybinding/xenomorph.dm
Original file line number Diff line number Diff line change
Expand Up @@ -196,11 +196,11 @@
return

if((!current_xeno.hive.living_xeno_queen || SSmapping.configs[GROUND_MAP].map_name == MAP_WHISKEY_OUTPOST) && !current_xeno.hive.allow_no_queen_actions) //No Hive status on WO
to_chat(current_xeno, SPAN_WARNING("There is no Queen. You are alone."))
to_chat(current_xeno, SPAN_WARNING("There is no Queen. We are alone."))
return

if(current_xeno.interference)
to_chat(current_xeno, SPAN_WARNING("A headhunter temporarily cut off your psychic connection!"))
to_chat(current_xeno, SPAN_WARNING("A headhunter temporarily cut off our psychic connection!"))
return

current_xeno.hive.hive_ui.open_hive_status(current_xeno)
Expand Down
7 changes: 5 additions & 2 deletions code/datums/medal_awards.dm
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ GLOBAL_LIST_EMPTY(jelly_awards)
giver_mob = list()
giver_ckey = list()

GLOBAL_LIST_INIT(human_medals, list(MARINE_CONDUCT_MEDAL, MARINE_BRONZE_HEART_MEDAL, MARINE_VALOR_MEDAL, MARINE_HEROISM_MEDAL))

/proc/give_medal_award(medal_location, as_admin = FALSE)
if(as_admin && !check_rights(R_ADMIN))
Expand All @@ -52,7 +53,7 @@ GLOBAL_LIST_EMPTY(jelly_awards)
return FALSE

// Pick a medal
var/medal_type = tgui_input_list(usr, "What type of medal do you want to award?", "Medal Type", list(MARINE_CONDUCT_MEDAL, MARINE_BRONZE_HEART_MEDAL, MARINE_VALOR_MEDAL, MARINE_HEROISM_MEDAL))
var/medal_type = tgui_input_list(usr, "What type of medal do you want to award?", "Medal Type", GLOB.human_medals)
if(!medal_type)
return FALSE

Expand Down Expand Up @@ -182,6 +183,8 @@ GLOBAL_LIST_EMPTY(jelly_awards)
if(give_medal_award(get_turf(printer)))
user.visible_message(SPAN_NOTICE("[printer] prints a medal."))

GLOBAL_LIST_INIT(xeno_medals, list(XENO_SLAUGHTER_MEDAL, XENO_RESILIENCE_MEDAL, XENO_SABOTAGE_MEDAL, XENO_PROLIFERATION_MEDAL, XENO_REJUVENATION_MEDAL))

/proc/give_jelly_award(datum/hive_status/hive, as_admin = FALSE)
if(!hive)
return FALSE
Expand Down Expand Up @@ -220,7 +223,7 @@ GLOBAL_LIST_EMPTY(jelly_awards)
return FALSE

// Pick a jelly
var/medal_type = tgui_input_list(usr, "What type of jelly do you want to award?", "Jelly Type", list(XENO_SLAUGHTER_MEDAL, XENO_RESILIENCE_MEDAL, XENO_SABOTAGE_MEDAL, XENO_PROLIFERATION_MEDAL, XENO_REJUVENATION_MEDAL), theme="hive_status")
var/medal_type = tgui_input_list(usr, "What type of jelly do you want to award?", "Jelly Type", GLOB.xeno_medals, theme="hive_status")
if(!medal_type)
return FALSE

Expand Down
4 changes: 2 additions & 2 deletions code/datums/supply_packs/restricted_equipment.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
name = "B12 pattern marine armor crate (x1 helmet, x1 armor)"
contains = list(
/obj/item/clothing/head/helmet/marine/leader,
/obj/item/clothing/suit/storage/marine/leader,
/obj/item/clothing/suit/storage/marine/medium/leader,
)
cost = 20
containertype = /obj/structure/closet/crate
Expand All @@ -15,7 +15,7 @@
name = "M4 pattern marine armor crate (x1 helmet, x1 armor)"
contains = list(
/obj/item/clothing/head/helmet/marine/rto,
/obj/item/clothing/suit/storage/marine/rto,
/obj/item/clothing/suit/storage/marine/medium/rto,
)
cost = 20
containertype = /obj/structure/closet/crate
Expand Down
51 changes: 29 additions & 22 deletions code/game/machinery/camera/camera.dm
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,14 @@

/obj/structure/machinery/camera/update_icon()
. = ..()
if(icon_state == "autocam_editor")
// If the camera has been EMPed.
if(stat & EMPED)
icon_state = "cameraemp"
// If the camera isn't EMPed, but is disabled.
else if(!status)
icon_state = "camera1"
// Otherwise, just give it the normal animated `icon_state`.
else
icon_state = "camera"

/obj/structure/machinery/camera/set_pixel_location()
Expand All @@ -76,24 +83,27 @@

/obj/structure/machinery/camera/emp_act(severity)
. = ..()
if(!isEmpProof())
if(prob(100/severity))
icon_state = "[initial(icon_state)]emp"
var/list/previous_network = network
network = list()
GLOB.cameranet.removeCamera(src)
stat |= EMPED
set_light(0)
triggerCameraAlarm()
spawn(900)
network = previous_network
icon_state = initial(icon_state)
stat &= ~EMPED
cancelCameraAlarm()
if(can_use())
GLOB.cameranet.addCamera(src)
kick_viewers()
// If the camera is EMP proof, or it passed the RNG check.
if(isEmpProof() || !prob(100 / severity))
return

var/list/previous_network = network
network = list()
GLOB.cameranet.removeCamera(src)
stat |= EMPED
update_icon()
set_light(0)
triggerCameraAlarm()
kick_viewers()
addtimer(CALLBACK(src, PROC_REF(undo_emp), previous_network), 90 SECONDS)

/obj/structure/machinery/camera/proc/undo_emp(previous_network)
network = previous_network
stat &= ~EMPED
update_icon()
cancelCameraAlarm()
if(can_use())
GLOB.cameranet.addCamera(src)

/obj/structure/machinery/camera/ex_act(severity)
if(src.invuln)
Expand Down Expand Up @@ -189,10 +199,7 @@
visible_message(SPAN_WARNING("[user] has reactivated [src]!"))
else
visible_message(SPAN_WARNING("[user] has deactivated [src]!"))
if(status)
icon_state = "camera"
else
icon_state = "camera1"
update_icon()
// now disconnect anyone using the camera
//Apparently, this will disconnect anyone even if the camera was re-activated.
//I guess that doesn't matter since they can't use it anyway?
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/computer/security.dm
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@
if("Released")
background = "'background-color:#3BB9FF;'"
if("Suspect")
background = "'background-color:#1AAFFF;'"
background = "'background-color:#686A6C;'"
if("NJP")
background = "'background-color:#faa20a;'"
if("None")
Expand Down
Loading

0 comments on commit 7595329

Please sign in to comment.