Skip to content

Commit

Permalink
Merge branch 'master' into project/ares/tm_holder
Browse files Browse the repository at this point in the history
  • Loading branch information
realforest2001 committed Apr 20, 2024
2 parents 0079ca1 + 789fd19 commit df383f0
Show file tree
Hide file tree
Showing 53 changed files with 792 additions and 100 deletions.
2 changes: 2 additions & 0 deletions code/__DEFINES/__game.dm
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@
#define SEE_INVISIBLE_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized.
#define INVISIBILITY_LEVEL_TWO 45 //Used by some other stuff in code. It's really poorly organized.

#define HIDE_INVISIBLE_OBSERVER 59 // define for when we want to hide all observer mobs.

#define INVISIBILITY_OBSERVER 60
#define SEE_INVISIBLE_OBSERVER 60

Expand Down
24 changes: 24 additions & 0 deletions code/controllers/configuration/entries/general.dm
Original file line number Diff line number Diff line change
Expand Up @@ -640,3 +640,27 @@ This maintains a list of ip addresses that are able to bypass topic filtering.
splitter = "|"
key_mode = KEY_MODE_TEXT_UNALTERED
value_mode = VALUE_MODE_TEXT

/datum/config_entry/number/client_warn_version
default = null
min_val = 500

/datum/config_entry/number/client_warn_build
default = null
min_val = 0

/datum/config_entry/string/client_warn_message
default = "Your version of BYOND may have issues or be blocked from accessing this server in the future."

/datum/config_entry/flag/client_warn_popup

/datum/config_entry/number/client_error_version
default = null
min_val = 500

/datum/config_entry/number/client_error_build
default = null
min_val = 0

/datum/config_entry/string/client_error_message
default = "Your version of BYOND is too old, may have issues, and is blocked from accessing this server."
5 changes: 2 additions & 3 deletions code/datums/ammo/bullet/revolver.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@
/datum/ammo/bullet/revolver
name = "revolver bullet"
headshot_state = HEADSHOT_OVERLAY_MEDIUM

damage = 55
damage = 72
penetration = ARMOR_PENETRATION_TIER_1
accuracy = HIT_ACCURACY_TIER_1

/datum/ammo/bullet/revolver/marksman
name = "marksman revolver bullet"

damage = 55
shrapnel_chance = 0
damage_falloff = 0
accurate_range = 12
Expand Down
1 change: 1 addition & 0 deletions code/datums/skills/uscm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,7 @@ COMMAND STAFF
SKILL_LEADERSHIP = SKILL_LEAD_EXPERT,
SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED,
SKILL_MEDICAL = SKILL_MEDICAL_MEDIC,
SKILL_SURGERY = SKILL_SURGERY_NOVICE,
SKILL_POLICE = SKILL_POLICE_FLASH,
SKILL_FIREMAN = SKILL_FIREMAN_TRAINED,
SKILL_VEHICLE = SKILL_VEHICLE_SMALL,
Expand Down
94 changes: 79 additions & 15 deletions code/game/machinery/kitchen/gibber.dm
Original file line number Diff line number Diff line change
Expand Up @@ -105,15 +105,28 @@
to_chat(user, SPAN_WARNING("You need a better grip to do that!"))
return

if(victim.abiotic(1))
if(victim.abiotic(TRUE))
to_chat(user, SPAN_WARNING("Subject may not have abiotic items on."))
return

user.visible_message(SPAN_DANGER("[user] starts to put [victim] into the gibber!"))
add_fingerprint(user)

///If synth is getting gibbed, we will 'soft gib' them, but this is still pretty LRP so let admin know.
if(issynth(victim) && ishuman_strict(user) && !occupant)
var/turf/turf_ref = get_turf(user)
var/area/area = get_area(user)
message_admins("ALERT: [user] ([user.key]) is trying to shove [victim] in a gibber! (They are a synth, so this will delimb them) ([victim.key]) in [area.name] [ADMIN_JMP(turf_ref)]</font>")
log_attack("[key_name(user)] tried to delimb [victim] using a gibber ([victim.key]) in [area.name]")
to_chat(user, SPAN_DANGER("What are you doing..."))
if(do_after(user, 30 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE && grabbed && grabbed.grabbed_thing && !occupant))
user.visible_message(SPAN_DANGER("[user] stuffs [victim] into the gibber!"))
victim.forceMove(src)
occupant = victim
update_icon()

///If someone's being LRP and doing funny chef shit, this lets admins know. This *shouldn't* flag preds, though.
if(ishuman(victim) && ishuman_strict(user) && !occupant)
else if(ishuman(victim) && ishuman_strict(user) && !occupant)
var/turf/turf_ref = get_turf(user)
var/area/area = get_area(user)
message_admins("ALERT: [user] ([user.key]) is trying to gib [victim] ([victim.key]) in [area.name] [ADMIN_JMP(turf_ref)]</font>")
Expand Down Expand Up @@ -142,18 +155,23 @@
add_fingerprint(usr)
return

/obj/structure/machinery/gibber/proc/go_out()
/obj/structure/machinery/gibber/proc/go_out(launch = FALSE)
if (!occupant)
return
return FALSE
for(var/obj/O in src)
O.forceMove(loc)
if (occupant.client)
occupant.client.eye = occupant.client.mob
occupant.client.perspective = MOB_PERSPECTIVE
occupant.forceMove(loc)
if(launch)
// yeet them out of the gibber
visible_message(SPAN_DANGER("[occupant] suddenly is launched out of the [src]!"))
var/turf/Tx = locate(x - 3, y, z)
occupant.throw_atom(Tx, 3, SPEED_FAST, src, TRUE)
occupant = null
update_icon()
return
return TRUE


/obj/structure/machinery/gibber/proc/startgibbing(mob/user as mob)
Expand All @@ -162,13 +180,18 @@
if(!occupant)
visible_message(SPAN_DANGER("You hear a loud metallic grinding sound."))
return
var/synthetic = issynth(occupant)
use_power(1000)
visible_message(SPAN_DANGER("You hear a loud squelchy grinding sound."))
operating = 1
if(synthetic)
visible_message(SPAN_BOLDWARNING("[src] begins to emitt sparks out the top as a banging noise can be heard!"), SPAN_BOLDWARNING("You hear a myriad of loud bangs!"))
else
visible_message(SPAN_DANGER("You hear a loud squelchy grinding sound."))
operating = TRUE
update_icon()

var/totalslabs = 2


var/obj/item/reagent_container/food/snacks/meat/meat_template = /obj/item/reagent_container/food/snacks/meat/monkey
if(istype(occupant, /mob/living/carbon/xenomorph))
var/mob/living/carbon/xenomorph/X = occupant
Expand All @@ -186,6 +209,35 @@
meat_template = /obj/item/reagent_container/food/snacks/meat/human
totalslabs = 3

// Synths only get delimbed from this. 1 meat per limb
if(synthetic)
meat_template = /obj/item/reagent_container/food/snacks/meat/synthmeat/synthflesh
totalslabs = 0
var/mob/living/carbon/human/victim = occupant

// Remove all limbs to allow synth to park closer at the supermarket
var/obj/limb/limb

if(victim.has_limb("l_leg"))
limb = victim.get_limb("r_leg")
totalslabs += 1
limb.droplimb(FALSE, TRUE, "gibber")

if(victim.has_limb("l_leg"))
limb = victim.get_limb("l_leg")
totalslabs += 1
limb.droplimb(FALSE, TRUE, "gibber")

if(victim.has_limb("r_arm"))
limb = victim.get_limb("r_arm")
totalslabs += 1
limb.droplimb(FALSE, TRUE, "gibber")

if(victim.has_limb("l_arm"))
limb = victim.get_limb("l_arm")
totalslabs += 1
limb.droplimb(FALSE, TRUE, "gibber")

var/obj/item/reagent_container/food/snacks/meat/allmeat[totalslabs]
for(var/i in 1 to totalslabs)
var/obj/item/reagent_container/food/snacks/meat/newmeat
Expand All @@ -194,26 +246,38 @@
newmeat.name = newmeat.made_from_player + newmeat.name
allmeat[i] = newmeat

if(src.occupant.client) // Gibbed a cow with a client in it? log that shit
src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by <b>[key_name(user)]</b>"
// Synths wont die to this (on it's own at least), dont log as a gib
if(synthetic)
if(occupant.client) // Log still
occupant.attack_log += "\[[time_stamp()]\] Was delimbed by <b>[key_name(user)]</b>"
user.attack_log += "\[[time_stamp()]\] delimbed <b>[key_name(occupant)]</b>"
msg_admin_attack("[key_name(user)] delimbed [key_name(occupant)] with a gibber in [user.loc.name]([user.x], [user.y], [user.z]).", user.x, user.y, user.z)
continue

if(occupant.client) // Gibbed a cow with a client in it? log that shit
occupant.attack_log += "\[[time_stamp()]\] Was gibbed by <b>[key_name(user)]</b>"
user.attack_log += "\[[time_stamp()]\] Gibbed <b>[key_name(occupant)]</b>"
msg_admin_attack("[key_name(user)] gibbed [key_name(occupant)] in [user.loc.name] ([user.x], [user.y], [user.z]).", user.x, user.y, user.z)

src.occupant.death(create_cause_data("gibber", user), TRUE)
src.occupant.ghostize()
occupant.death(create_cause_data("gibber", user), TRUE)
occupant.ghostize()

QDEL_NULL(occupant)
if(synthetic)
to_chat(occupant, SPAN_HIGHDANGER("You can detect your limbs being ripped off your body, but it begins to malfunction as it reaches your torso!"))
addtimer(CALLBACK(src, PROC_REF(create_gibs), totalslabs, allmeat), gibtime)
addtimer(CALLBACK(src, PROC_REF(go_out), TRUE), gibtime)
return

addtimer(CALLBACK(src, PROC_REF(create_gibs), totalslabs, allmeat), gibtime)
QDEL_NULL(occupant)

/obj/structure/machinery/gibber/proc/create_gibs(totalslabs, list/obj/item/reagent_container/food/snacks/allmeat)
playsound(loc, 'sound/effects/splat.ogg', 25, 1)
operating = FALSE
var/turf/Tx = locate(x - 1, y, z)
for (var/i in 1 to totalslabs)
var/obj/item/meatslab = allmeat[i]
var/turf/Tx = locate(x - i, y, z)
meatslab.forceMove(loc)
meatslab.throw_atom(Tx, i, SPEED_FAST, src)
meatslab.throw_atom(Tx, 1, SPEED_FAST, src)
if (!Tx.density)
if(istype(meatslab, /obj/item/reagent_container/food/snacks/meat/xenomeat))
new /obj/effect/decal/cleanable/blood/gibs/xeno(Tx)
Expand Down
3 changes: 2 additions & 1 deletion code/game/objects/effects/effect_system/foam.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
var/expand = 1
animate_movement = 0
var/metal = FOAM_NOT_METAL
var/time_to_solidify = 4 SECONDS


/obj/effect/particle_effect/foam/Initialize(mapload, ismetal=0)
Expand All @@ -28,7 +29,7 @@
metal = ismetal
playsound(src, 'sound/effects/bubbles2.ogg', 25, 1, 5)
addtimer(CALLBACK(src, PROC_REF(foam_react)), 3 + metal*3)
addtimer(CALLBACK(src, PROC_REF(foam_metal_final_react)), 40)
addtimer(CALLBACK(src, PROC_REF(foam_metal_final_react)), time_to_solidify)

/obj/effect/particle_effect/foam/proc/foam_react()
process()
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/effects/effect_system/smoke.dm
Original file line number Diff line number Diff line change
Expand Up @@ -240,9 +240,9 @@
if(isyautja(M) || isxeno(M))
burn_damage *= xeno_yautja_reduction

var/reagent = new /datum/reagent/napalm/ut()
M.burn_skin(burn_damage)
M.adjust_fire_stacks(applied_fire_stacks)
M.fire_reagent = new /datum/reagent/napalm/ut()
M.adjust_fire_stacks(applied_fire_stacks, reagent)
M.IgniteMob()
M.updatehealth()

Expand Down
8 changes: 4 additions & 4 deletions code/game/objects/effects/landmarks/survivor_spawner.dm
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,8 @@
//CMB Survivors//

/obj/effect/landmark/survivor_spawner/fiorina_armory_cmb
equipment = /datum/equipment_preset/survivor/colonial_marshal
synth_equipment = /datum/equipment_preset/synth/survivor/cmb_synth
equipment = /datum/equipment_preset/survivor/cmb/standard
synth_equipment = /datum/equipment_preset/synth/survivor/cmb/synth
intro_text = list("<h2>You are a CMB Deputy!</h2>",\
"<span class='notice'>You are aware of the 'alien' threat.</span>",\
"<span class='danger'>Your primary objective is to survive the infestation.</span>")
Expand All @@ -211,8 +211,8 @@
spawn_priority = SPAWN_PRIORITY_VERY_HIGH

/obj/effect/landmark/survivor_spawner/fiorina_armory_riot_control
equipment = /datum/equipment_preset/survivor/colonial_marshal/fiorina
synth_equipment = /datum/equipment_preset/synth/survivor/cmb_synth
equipment = /datum/equipment_preset/survivor/cmb/ua
synth_equipment = /datum/equipment_preset/synth/survivor/cmb/ua_synth
intro_text = list("<h2>You are a United Americas Riot Control Officer!</h2>",\
"<span class='notice'>You are aware of the 'alien' threat.</span>",\
"<span class='danger'>Your primary objective is to survive the infestation.</span>")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@
name = "synthetic meat"
desc = "A synthetic slab of flesh."

/obj/item/reagent_container/food/snacks/meat/synthmeat/synthflesh //meat made from synthetics. Slightly toxic
/// Meat made from synthetics. Slightly toxic
/obj/item/reagent_container/food/snacks/meat/synthmeat/synthflesh
name = "synthetic flesh"
desc = "A slab of artificial, inorganic 'flesh' that resembles human meat. Probably came from a synth."
icon_state = "synthmeat"
Expand Down
8 changes: 8 additions & 0 deletions code/game/objects/items/reagent_containers/glass.dm
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,14 @@
ground_offset_x = 9
ground_offset_y = 8

/obj/item/reagent_container/glass/beaker/vial/epinephrine
name = "epinephrine vial"

/obj/item/reagent_container/glass/beaker/vial/epinephrine/Initialize()
. = ..()
reagents.add_reagent("adrenaline", 30)
update_icon()

/obj/item/reagent_container/glass/beaker/vial/tricordrazine
name = "tricordrazine vial"

Expand Down
10 changes: 10 additions & 0 deletions code/game/objects/items/reagent_containers/glass/bottle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -396,3 +396,13 @@
. = ..()
reagents.add_reagent("tricordrazine", 60)
update_icon()

/obj/item/reagent_container/glass/bottle/epinephrine
name = "\improper Epinephrine bottle"
desc = "A small bottle. Contains epinephrine - Used to increase a patients arterial blood pressure, amongst other actions, to assist in cardiopulmonary resuscitation." //"I can't lie to you about your odds of a successful resuscitation, but you have my sympathies"
volume = 60

/obj/item/reagent_container/glass/bottle/epinephrine/Initialize()
. = ..()
reagents.add_reagent("adrenaline", 60)
update_icon()
3 changes: 3 additions & 0 deletions code/game/objects/items/reagent_containers/hypospray.dm
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,9 @@
/obj/item/reagent_container/hypospray/tricordrazine
starting_vial = /obj/item/reagent_container/glass/beaker/vial/tricordrazine

/obj/item/reagent_container/hypospray/epinephrine
starting_vial = /obj/item/reagent_container/glass/beaker/vial/epinephrine

/obj/item/reagent_container/hypospray/sedative
name = "Sedative Hypospray"
starting_vial = /obj/item/reagent_container/glass/beaker/vial/sedative
30 changes: 30 additions & 0 deletions code/game/objects/items/storage/belt.dm
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,29 @@
new /obj/item/storage/pill_bottle/inaprovaline(src)
new /obj/item/storage/pill_bottle/tramadol(src)

/obj/item/storage/belt/medical/lifesaver/upp/synth/fill_preset_inventory()
new /obj/item/storage/pill_bottle/bicaridine(src)
new /obj/item/storage/pill_bottle/bicaridine(src)
new /obj/item/storage/pill_bottle/kelotane(src)
new /obj/item/storage/pill_bottle/kelotane(src)
new /obj/item/storage/pill_bottle/tramadol(src)
new /obj/item/storage/pill_bottle/tramadol(src)
new /obj/item/storage/pill_bottle/antitox(src)
new /obj/item/storage/pill_bottle/alkysine(src)
new /obj/item/storage/pill_bottle/imidazoline(src)
new /obj/item/stack/medical/advanced/bruise_pack(src)
new /obj/item/stack/medical/advanced/bruise_pack(src)
new /obj/item/stack/medical/advanced/bruise_pack(src)
new /obj/item/stack/medical/advanced/ointment(src)
new /obj/item/stack/medical/advanced/ointment(src)
new /obj/item/stack/medical/advanced/ointment(src)
new /obj/item/stack/medical/splint(src)
new /obj/item/stack/medical/splint(src)
new /obj/item/stack/medical/splint(src)
new /obj/item/reagent_container/hypospray/autoinjector/dexalinp(src)
new /obj/item/reagent_container/hypospray/autoinjector/oxycodone(src)
new /obj/item/device/healthanalyzer(src)

/obj/item/storage/belt/security
name = "\improper M276 pattern security rig"
desc = "The M276 is the standard load-bearing equipment of the USCM. It consists of a modular belt with various clips. This configuration is commonly seen among USCM Military Police and peacekeepers, though it can hold some light munitions."
Expand Down Expand Up @@ -383,6 +406,13 @@
new /obj/item/reagent_container/spray/pepper(src)
new /obj/item/device/clue_scanner(src)

/obj/item/storage/belt/security/MP/full/synth/fill_preset_inventory()
new /obj/item/explosive/grenade/flashbang(src)
new /obj/item/device/flash(src)
new /obj/item/weapon/baton(src)
new /obj/item/reagent_container/spray/pepper(src)
new /obj/item/device/clue_scanner(src)
new /obj/item/handcuffs(src)

/obj/item/storage/belt/security/MP/UPP
name = "\improper Type 43 military police rig"
Expand Down
15 changes: 15 additions & 0 deletions code/game/objects/items/storage/pouch.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1272,6 +1272,21 @@
new /obj/item/explosive/plastic(src)
new /obj/item/explosive/plastic(src)

/obj/item/storage/pouch/tools/tactical/upp
name = "synthetic tools pouch"
desc = "Special issue tools pouch for UPP synthetics. Due to the enhanced strength of the synthetic and its inability to feel discomfort, this pouch is designed to maximize internal space with no concern for its wearer's comfort."
icon_state = "tools"
storage_slots = 7

/obj/item/storage/pouch/tools/tactical/upp/fill_preset_inventory()
new /obj/item/tool/wrench(src)
new /obj/item/tool/crowbar(src)
new /obj/item/tool/wirecutters(src)
new /obj/item/device/multitool(src)
new /obj/item/tool/weldingtool(src)
new /obj/item/stack/cable_coil(src)
new /obj/item/stack/cable_coil(src)

/obj/item/storage/pouch/tools/uppsynth/fill_preset_inventory()
new /obj/item/tool/crowbar(src)
new /obj/item/tool/wirecutters(src)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/weapons/shields.dm
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@

/obj/item/weapon/shield/riot/attackby(obj/item/W as obj, mob/user as mob)
if(cooldown < world.time - 25)
if(istype(W, /obj/item/weapon/baton) || istype(W, /obj/item/weapon/sword) || istype(W, /obj/item/weapon/baseballbat) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/chainofcommand))
if(istype(W, /obj/item/weapon/baton) || istype(W, /obj/item/weapon/sword) || istype(W, /obj/item/weapon/telebaton) || istype(W, /obj/item/weapon/baseballbat) || istype(W, /obj/item/weapon/classic_baton) || istype(W, /obj/item/weapon/twohanded/fireaxe) || istype(W, /obj/item/weapon/chainofcommand))
user.visible_message(SPAN_WARNING("[user] bashes [src] with [W]!"))
playsound(user.loc, 'sound/effects/shieldbash.ogg', 25, 1)
cooldown = world.time
Expand Down
Loading

0 comments on commit df383f0

Please sign in to comment.