Skip to content

Commit

Permalink
Merge branch 'master' into sanity_do_after_coefficient
Browse files Browse the repository at this point in the history
  • Loading branch information
MrCastmer authored Apr 6, 2024
2 parents d059582 + 254c3eb commit 7ab1eb1
Show file tree
Hide file tree
Showing 50 changed files with 1,621 additions and 5 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/{dripstation_defines}/colors.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#define COLOR_CARGO_GLASS "#bd6f26"
4 changes: 4 additions & 0 deletions code/game/objects/items/ashtray.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
icon_state = "ashtray"
var/max_butts = 10

/* //Dripstation edit
/obj/item/ashtray/update_overlays()
. = ..()
if(contents.len == max_butts)
Expand Down Expand Up @@ -43,3 +45,5 @@
O.forceMove(drop_location())
update_appearance(UPDATE_ICON)
return ..()
*/
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,7 @@
name = "Smartfridge (Machine Board)"
build_path = /obj/machinery/smartfridge
req_components = list(/obj/item/stock_parts/matter_bin = 1)
/* //Dripstation edit
var/static/list/fridges_name_paths = list(/obj/machinery/smartfridge = "plant produce",
/obj/machinery/smartfridge/food = "food",
/obj/machinery/smartfridge/drinks = "drinks",
Expand All @@ -579,6 +580,7 @@
/obj/machinery/smartfridge/chemistry = "chems",
/obj/machinery/smartfridge/chemistry/virology = "viruses",
/obj/machinery/smartfridge/disks = "disks")
*/
needs_anchored = FALSE

/obj/item/circuitboard/machine/smartfridge/Initialize(mapload, new_type)
Expand Down
2 changes: 2 additions & 0 deletions code/game/objects/items/stacks/sheets/sheet_types.dm
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,9 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),\
new/datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 10, time = 15),\
new/datum/stack_recipe("book case", /obj/structure/bookcase, 4, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("coat rack", /obj/structure/coatrack, 4, time = 20, one_per_turf = TRUE, on_floor = TRUE),/*Dripstation edit*/ \
new/datum/stack_recipe("coffin", /obj/structure/closet/crate/coffin, 5, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("condiment shelf", /obj/item/wallframe/condiment_shelf, 2, time = 15),/*Dripstation edit*/ \
new/datum/stack_recipe("display case chassis", /obj/structure/displaycase_chassis, 5, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("dog bed", /obj/structure/bed/dogbed, 10, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
new/datum/stack_recipe("dresser", /obj/structure/dresser, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/structures/signs/_signs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
span_notice("You unfasten [src]."))
var/obj/item/sign_backing/SB = new (get_turf(user))
SB.icon_state = icon_state
SB.icon = icon //Dripstation edit
SB.sign_path = type
SB.setDir(dir)
qdel(src)
Expand Down
4 changes: 4 additions & 0 deletions code/modules/food_and_drinks/food/condiment.dm
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,10 @@
desc = "It's milk. White and nutritious goodness!"
icon_state = "milk"
item_state = "carton"
/* //Dripstation edit
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
*/
list_reagents = list(/datum/reagent/consumable/milk = 50)
possible_states = list()

Expand Down Expand Up @@ -273,8 +275,10 @@
desc = "It's soy milk. White and nutritious goodness!"
icon_state = "soymilk"
item_state = "carton"
/* //Dripstation edit
lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
*/
list_reagents = list(/datum/reagent/consumable/soymilk = 50)
possible_states = list()

Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/human/examine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@
SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "religious_comfort", /datum/mood_event/religiously_comforted)

if(stat == UNCONSCIOUS)
msg += "[t_He] [t_is]n't responding to anything around [t_him] and seem[p_s()] to be asleep.\n"
msg += "[t_He] [t_is]n't responding to anything around [t_him] and seem[p_s()] to be unconscious.\n" //dripstation edit
else
if(HAS_TRAIT(src, TRAIT_DUMB))
msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n"
Expand Down
2 changes: 2 additions & 0 deletions code/modules/reagents/reagent_containers/borghypo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@
#define HACKED_CLOWN_REAGENTS list(\
/datum/reagent/consumable/superlaughter\
)
//dripstation edit, new coagulant nanites to syndiborg
#define BASE_SYNDICATE_REAGENTS list(\
/datum/reagent/medicine/syndicate_nanites,\
/datum/reagent/medicine/coagulant/blood_restoring_nanites,\
/datum/reagent/medicine/potass_iodide,\
/datum/reagent/medicine/morphine\
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/// The subsystem used to tick digital clocks //tg port
PROCESSING_SUBSYSTEM_DEF(digital_clock)
name = "Digital Clocks"
flags = SS_NO_INIT|SS_BACKGROUND|SS_KEEP_TIMING
wait = 1 SECONDS
118 changes: 118 additions & 0 deletions modular_dripstation/code/datums/reagent/restore_nanites.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
/datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs
name = "Restorative Nanite Serum"

/datum/reagent/medicine/coagulant/blood_restoring_nanites
name = "Blood Regeneration Nanite Serum"
description = "A serum of nanites capable of coagulant wounds and restore blood volume to safe levels."
taste_description = "a bunch of tiny robots"
can_synth = FALSE
clot_rate = 0.5
passive_bleed_modifier = 0.5
reagent_state = SOLID
color = "#555555"
overdose_threshold = 30

/datum/reagent/medicine/coagulant/blood_restoring_nanites/on_mob_life(mob/living/carbon/M)
if(M.blood_volume < BLOOD_VOLUME_SAFE(M))
M.blood_volume += 2

/datum/reagent/medicine/coagulant/blood_restoring_nanites/overdose_process(mob/living/carbon/M) //wtb flavortext messages that hint that you're vomitting up robots
if(prob(25))
M.reagents.remove_reagent(type, metabolization_rate*15) // ~5 units at a rate of 0.4 but i wanted a nice number in code
M.vomit(20) // nanite safety protocols make your body expel them to prevent harmies
..()
. = 1

/datum/reagent/medicine/bone_restoring_nanites
name = "Bone Restoration Nanite Serum"
description = "A serum of nanites capable of coagulant wounds and restore blood volume to safe levels."
taste_description = "a bunch of tiny robots"
can_synth = FALSE
reagent_state = SOLID
color = "#555555"
overdose_threshold = 30

/datum/reagent/medicine/bone_restoring_nanites/on_mob_life(mob/living/carbon/C)
for(var/X in C.bodyparts)
var/obj/item/bodypart/BP = X
if(BP.get_wound_type(/datum/wound/blunt) && prob(20))
var/datum/wound/blunt/W = BP.get_wound_type(/datum/wound/blunt)
C.emote("scream")
playsound(C, 'sound/surgery/bone3.ogg', 35)
if(W.severity >= WOUND_SEVERITY_SEVERE)
var/painkiller_bonus = 0
if(C.get_drunk_amount() > 10)
painkiller_bonus += 10
if(C.reagents?.has_reagent(/datum/reagent/medicine/morphine))
painkiller_bonus += 20
if((C.stat && C.stat == UNCONSCIOUS))
painkiller_bonus += 20
if(C.reagents?.has_reagent(/datum/reagent/determination))
painkiller_bonus += 10

if(prob(35 + (20 * (W.severity - 1)) - painkiller_bonus)) // 35%/55% chance to cause shock with severe and critical wounds, modded by painkillers
C.visible_message(span_danger("[C] passing out from the pain!"), span_notice("You black out from the pain while nanites restore your bone!"))
C.AdjustUnconscious(12 SECONDS)
W.remove_wound()

/datum/reagent/medicine/bone_restoring_nanites/overdose_process(mob/living/carbon/M) //wtb flavortext messages that hint that you're vomitting up robots
if(prob(25))
M.reagents.remove_reagent(type, metabolization_rate*15) // ~5 units at a rate of 0.4 but i wanted a nice number in code
M.vomit(20) // nanite safety protocols make your body expel them to prevent harmies
..()
. = 1

/datum/reagent/medicine/cellular_restoring_nanites
name = "Сellular Regenerator Nanite Serum"
description = "A serum of nanites capable of regenerate limbs, remove scars and treat wounds."
taste_description = "a bunch of tiny robots"
can_synth = FALSE
reagent_state = SOLID
color = "#555555"
overdose_threshold = 30

/datum/reagent/medicine/cellular_restoring_nanites/on_mob_life(mob/living/carbon/M)
M.adjustCloneLoss(-2)
M.heal_bodypart_damage(2,2)
M.set_eye_blur(0)
M.set_blindness(0)
for(var/organ in M.internal_organs)
var/obj/item/organ/O = organ
if(O.status == ORGAN_ROBOTIC)
continue
O.setOrganDamage(O.damage - (0.1 * O.maxHealth))
for(var/i in M.all_scars)
var/datum/scar/iter_scar = i
if(!iter_scar.fake)
qdel(iter_scar)
if(prob(10))
var/list/missing = M.get_missing_limbs()
if(missing.len)
playsound(M, 'sound/magic/demon_consume.ogg', 50, 1)
M.visible_message("<span class='warning'>[M]'s missing limbs \
reform, making a loud, grotesque sound!</span>",
"<span class='userdanger'>Your limbs regrow, making a \
loud, crunchy sound and giving you great pain!</span>",
"<span class='italics'>You hear organic matter ripping \
and tearing!</span>")
M.emote("scream")
M.adjust_dizzy(3 SECONDS)
M.adjust_jitter(3 SECONDS)
M.adjust_stutter(3 SECONDS)
M.regenerate_limbs(1)
if(prob(10))
for(var/i in M.all_wounds)
var/datum/wound/iter_wound = i
M.adjust_dizzy(3 SECONDS)
M.adjust_jitter(3 SECONDS)
M.adjust_stutter(3 SECONDS)
M.emote("scream")
iter_wound.remove_wound()
return TRUE

/datum/reagent/medicine/cellular_restoring_nanites/overdose_process(mob/living/carbon/M) //wtb flavortext messages that hint that you're vomitting up robots
if(prob(25))
M.reagents.remove_reagent(type, metabolization_rate*15) // ~5 units at a rate of 0.4 but i wanted a nice number in code
M.vomit(20) // nanite safety protocols make your body expel them to prevent harmies
..()
. = 1
8 changes: 8 additions & 0 deletions modular_dripstation/code/game/gamemodes/nuclear/nuclear.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
/datum/outfit/syndicate
id = /obj/item/card/id/syndicate/nuke
backpack_contents = list(/obj/item/storage/box/syndie/nuke=1,\
/obj/item/kitchen/knife/combat/survival)

/datum/outfit/syndicate/leader
gloves = /obj/item/clothing/gloves/combat
Expand All @@ -9,6 +11,12 @@
var/datum/martial_art/cqc/justanop = new
justanop.teach(H)

/datum/outfit/syndicate/full
backpack_contents = list(/obj/item/storage/box/syndie/nuke=1,\
/obj/item/tank/jetpack/oxygen/harness=1,\
/obj/item/gun/ballistic/automatic/pistol=1,\
/obj/item/kitchen/knife/combat/survival)

/datum/outfit/syndicate/no_crystals
var/faction = "The Syndicate"

Expand Down
65 changes: 64 additions & 1 deletion modular_dripstation/code/game/machinery/buttons.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/obj/machinery/button
icon = 'modular_dripstation/icons//obj/stationobjs.dmi'
icon = 'modular_dripstation/icons/obj/stationobjs.dmi'
var/light_mask
var/panel_icon = "button-open"

Expand All @@ -8,6 +8,8 @@
if(panel_open)
return
if(!(stat & BROKEN) && powered())
if(!light_mask)
return
. += emissive_appearance(icon, light_mask, src)

/obj/machinery/button/flasher
Expand Down Expand Up @@ -35,3 +37,64 @@

/obj/machinery/button/holosign
light_mask = "doorctrl_light_mask"

/obj/machinery/button/windowtint
name = "window tint control"
icon_state = "ligh-c"
desc = "A remote control switch for polarized windows."
icon = 'modular_dripstation/icons/obj/power.dmi'
panel_icon = "light-w"
skin = "ligh-c"
var/range = 7
var/active = 0
var/tint_id

/obj/machinery/button/windowtint/attack_hand(mob/user)
if(..())
return 1

toggle_tint()

/obj/machinery/button/windowtint/proc/toggle_tint()
use_power(5)

active = !active
update_icon()

for(var/obj/structure/window/reinforced/fulltile/polarized/W in range(src,range))
if(W.tint_id == src.tint_id || !W.tint_id)
spawn(0)
W.toggle()
return
for(var/obj/machinery/door/airlock/G in range(src,range))
if(G.id_tag == src.tint_id)
spawn(0)
if(G.glass)
G.airlock_material = null
G.glass = FALSE
G.update_icon()
if(G.density)
G.opacity = 1
else
G.airlock_material = "glass"
G.glass = TRUE
G.update_icon()
G.opacity = 0
return

/obj/machinery/button/windowtint/power_change()
..()
if(active && !powered(power_channel))
toggle_tint()

/obj/machinery/button/windowtint/update_overlays()
. = ..()
if(stat & (NOPOWER|BROKEN))
return
if(panel_open)
return
. += mutable_appearance(icon, "[src.active ? "light1" : "light0"]")
. += emissive_appearance(icon, "[src.active ? "light1" : "light0"]", src)

/obj/machinery/button/windowtint/update_icon_state()
. = ..()
Loading

0 comments on commit 7ab1eb1

Please sign in to comment.