Merge remote-tracking branch 'origin/master' into rustsql

This commit is contained in:
Letter N
2021-02-19 12:38:32 +08:00
737 changed files with 8763 additions and 3732 deletions
@@ -537,4 +537,9 @@
path = /obj/item/clothing/suit/custom/exo
ckeywhitelist = list("jesterz7")
/datum/gear/donator/choker
name = "NT Choker"
slot = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/choker
ckeywhitelist = list("trigillass")
@@ -53,7 +53,7 @@ GLOBAL_LIST_EMPTY(loadout_whitelist_ids)
var/path //item-to-spawn path
var/cost = 1 //normally, each loadout costs a single point.
var/geargroupID //defines the ID that the gear inherits from the config
var/loadout_flags = 0
var/loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION
var/list/loadout_initial_colors = list()
//NEW DONATOR SYTSEM STUFF
@@ -15,6 +15,18 @@
name = "Black beret"
path = /obj/item/clothing/head/beret/black
/datum/gear/head/redberet
name = "Red beret"
path = /obj/item/clothing/head/beret
/datum/gear/head/purpleberet
name = "Purple beret"
path = /obj/item/clothing/head/beret/purple
/datum/gear/head/blueberet
name = "Blue beret"
path = /obj/item/clothing/head/beret/blue
/datum/gear/head/flatcap
name = "Flat cap"
path = /obj/item/clothing/head/flatcap
@@ -20,3 +20,14 @@
path = /obj/item/clothing/mask/gas
cost = 2
restricted_roles = list("Chief Engineer", "Atmospheric Technician", "Station Engineer") //*shrug
/datum/gear/mask/sterile
name = "Aesthetic sterile mask"
path = /obj/item/clothing/mask/surgical/aesthetic
cost = 2
/datum/gear/mask/paper
name = "Paper mask"
path = /obj/item/clothing/mask/paper
cost = 2
@@ -30,6 +30,10 @@
name = "Choker"
path = /obj/item/clothing/neck/petcollar/choker
/datum/gear/neck/cowbell
name = "Cowbell collar"
path = /obj/item/clothing/neck/necklace/cowbell
/datum/gear/neck/scarf
name = "White scarf"
subcategory = LOADOUT_SUBCATEGORY_NECK_SCARVES
@@ -86,7 +90,7 @@
/datum/gear/neck/polycloak
name = "Polychromatic Cloak"
path = /obj/item/clothing/neck/cloak/polychromic
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#FFFFFF", "#808080")
/datum/gear/neck/altpolycloak
@@ -94,3 +98,9 @@
path = /obj/item/clothing/neck/cloak/alt/polychromic
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#676767", "#4C4C4C")
/datum/gear/neck/cancloak
name = "Canvas Cloak"
path = /obj/item/clothing/neck/cancloak/polychromic
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#585858", "#373737", "#BEBEBE")
@@ -34,6 +34,12 @@
name = "White shoes"
path = /obj/item/clothing/shoes/sneakers/white
/datum/gear/shoes/poly
name = "Polychromic shoes"
path = /obj/item/clothing/shoes/sneakers/poly/polychromic
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#1D1D1D")
/datum/gear/shoes/gildedcuffs
name = "Gilded leg wraps"
path= /obj/item/clothing/shoes/wraps
@@ -101,9 +101,16 @@
name = "Polychromic winter coat"
path = /obj/item/clothing/suit/hooded/wintercoat/polychromic
cost = 4 //too many people with neon green coats is hard on the eyes
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#6A6964", "#C4B8A6", "#0000FF")
/datum/gear/suit/coat/wbreakpoly
name = "Polychromic windbreaker"
path = /obj/item/clothing/suit/toggle/wbreakpoly/polychromic
cost = 4
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#464F65", "#916035", "#474747")
/datum/gear/suit/coat/med
name = "Medical winter coat"
path = /obj/item/clothing/suit/hooded/wintercoat/medical
@@ -159,6 +166,13 @@
path = /obj/item/clothing/suit/jacket/miljacket
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/suit/urbanjacket
name = "Urban Jacket"
path = /obj/item/clothing/suit/jacket/urbanjacket/polychromic
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#26321D", "#CBBDAF", "#292929")
/datum/gear/suit/ianshirt
name = "Ian Shirt"
path = /obj/item/clothing/suit/ianshirt
@@ -32,6 +32,10 @@
name = "Tan suit"
path = /obj/item/clothing/under/suit/tan
/datum/gear/uniform/suit/charismatic_suit
name = "Charismatic suit"
path = /obj/item/clothing/under/suit/charismatic_suit
/datum/gear/uniform/suit/white
name = "White suit"
path = /obj/item/clothing/under/suit/white
@@ -47,7 +51,7 @@
/datum/gear/uniform/maidcostume/polychromic
name = "Polychromic maid costume"
path = /obj/item/clothing/under/rank/civilian/janitor/maid/polychromic
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#000000")
/datum/gear/uniform/mailmanuniform
@@ -166,6 +170,13 @@
name = "Tan Pants"
path = /obj/item/clothing/under/pants/tan
/datum/gear/uniform/pants/polypants
name = "Polychromic Pants"
path = /obj/item/clothing/under/pants/polypants/polychromic
cost = 2
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#75634F", "#3D3D3D", "#575757")
/datum/gear/uniform/pants/track
name = "Track Pants"
path = /obj/item/clothing/under/pants/track
@@ -229,49 +240,49 @@
name = "Polychromic Jumpsuit"
path = /obj/item/clothing/under/misc/polyjumpsuit
cost = 2
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#808080", "#353535")
/datum/gear/uniform/skirt/poly
name = "Polychromic Jumpskirt"
path = /obj/item/clothing/under/dress/skirt/polychromic
cost = 2
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#F08080", "#808080")
/datum/gear/uniform/suit/poly
name = "Polychromic Button-up Shirt"
path = /obj/item/clothing/under/misc/poly_shirt
cost = 3
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#353535", "#353535")
/datum/gear/uniform/skirt/poly/pleated
name = "Polychromic Pleated Sweaterskirt"
path = /obj/item/clothing/under/dress/skirt/polychromic/pleated
cost = 3
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#8CC6FF", "#808080", "#FF3535")
/datum/gear/uniform/polykilt
name = "Polychromic Kilt"
path = /obj/item/clothing/under/costume/kilt/polychromic
cost = 3
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#F08080")
/datum/gear/uniform/shorts/poly
name = "Polychromic Shorts"
path = /obj/item/clothing/under/misc/polyshorts
cost = 3
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#353535", "#808080", "#808080")
/datum/gear/uniform/shorts/poly/athletic
name = "Polychromic Athletic Shorts"
path = /obj/item/clothing/under/shorts/polychromic
cost = 2
loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#F08080")
/datum/gear/uniform/hopcasual
+58 -58
View File
@@ -51,58 +51,58 @@
blood_overlay_type = "coat"
body_parts_covered = CHEST|GROIN|ARMS
allowed = list(
/obj/item/tank/internals/emergency_oxygen,
/obj/item/flashlight,
/obj/item/analyzer,
/obj/item/radio,
/obj/item/gun,
/obj/item/melee/baton,
/obj/item/restraints/handcuffs,
/obj/item/reagent_containers/hypospray,
/obj/item/hypospray,
/obj/item/healthanalyzer,
/obj/item/reagent_containers/syringe,
/obj/item/reagent_containers/glass/bottle/vial,
/obj/item/reagent_containers/glass/beaker,
/obj/item/storage/pill_bottle,
/obj/item/taperecorder)
/obj/item/tank/internals/emergency_oxygen,
/obj/item/flashlight,
/obj/item/analyzer,
/obj/item/radio,
/obj/item/gun,
/obj/item/melee/baton,
/obj/item/restraints/handcuffs,
/obj/item/reagent_containers/hypospray,
/obj/item/hypospray,
/obj/item/healthanalyzer,
/obj/item/reagent_containers/syringe,
/obj/item/reagent_containers/glass/bottle/vial,
/obj/item/reagent_containers/glass/beaker,
/obj/item/storage/pill_bottle,
/obj/item/taperecorder)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
var/unbuttoned = 0
var/unbuttoned = FALSE
verb/toggle()
set name = "Toggle coat buttons"
set category = "Object"
set src in usr
/obj/item/clothing/suit/storage/fluff/fedcoat/verb/toggle()
set name = "Toggle coat buttons"
set category = "Object"
set src in usr
var/mob/living/L = usr
if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE))
return FALSE
var/mob/living/L = usr
if(!istype(L) || !CHECK_MOBILITY(L, MOBILITY_USE))
return FALSE
switch(unbuttoned)
if(0)
icon_state = "[initial(icon_state)]_open"
item_state = "[initial(item_state)]_open"
unbuttoned = 1
to_chat(usr,"You unbutton the coat.")
if(1)
icon_state = "[initial(icon_state)]"
item_state = "[initial(item_state)]"
unbuttoned = 0
to_chat(usr,"You button up the coat.")
usr.update_inv_wear_suit()
switch(unbuttoned)
if(FALSE)
icon_state = "[initial(icon_state)]_open"
item_state = "[initial(item_state)]_open"
unbuttoned = TRUE
to_chat(usr,"You unbutton the coat.")
if(TRUE)
icon_state = "[initial(icon_state)]"
item_state = "[initial(item_state)]"
unbuttoned = FALSE
to_chat(usr,"You button up the coat.")
usr.update_inv_wear_suit()
//Variants
//Variants
/obj/item/clothing/suit/storage/fluff/fedcoat/medsci
icon_state = "fedblue"
item_state = "fedblue"
icon_state = "fedblue"
item_state = "fedblue"
/obj/item/clothing/suit/storage/fluff/fedcoat/eng
icon_state = "fedeng"
item_state = "fedeng"
icon_state = "fedeng"
item_state = "fedeng"
/obj/item/clothing/suit/storage/fluff/fedcoat/capt
icon_state = "fedcapt"
item_state = "fedcapt"
icon_state = "fedcapt"
item_state = "fedcapt"
//"modern" ones for fancy
@@ -124,18 +124,18 @@
)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
//Variants
//Variants
/obj/item/clothing/suit/storage/fluff/modernfedcoat/medsci
icon_state = "fedmodernblue"
item_state = "fedmodernblue"
icon_state = "fedmodernblue"
item_state = "fedmodernblue"
/obj/item/clothing/suit/storage/fluff/modernfedcoat/eng
icon_state = "fedmoderneng"
item_state = "fedmoderneng"
icon_state = "fedmoderneng"
item_state = "fedmoderneng"
/obj/item/clothing/suit/storage/fluff/modernfedcoat/sec
icon_state = "fedmodernsec"
item_state = "fedmodernsec"
icon_state = "fedmodernsec"
item_state = "fedmodernsec"
/obj/item/clothing/head/caphat/formal/fedcover
name = "Federation Officer's Cap"
@@ -146,22 +146,22 @@
mob_overlay_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi'
item_state = "fedcapofficer"
//Variants
//Variants
/obj/item/clothing/head/caphat/formal/fedcover/medsci
icon_state = "fedcapsci"
item_state = "fedcapsci"
icon_state = "fedcapsci"
item_state = "fedcapsci"
/obj/item/clothing/head/caphat/formal/fedcover/eng
icon_state = "fedcapeng"
item_state = "fedcapeng"
icon_state = "fedcapeng"
item_state = "fedcapeng"
/obj/item/clothing/head/caphat/formal/fedcover/sec
icon_state = "fedcapsec"
item_state = "fedcapsec"
icon_state = "fedcapsec"
item_state = "fedcapsec"
/obj/item/clothing/head/caphat/formal/fedcover/black
icon_state = "fedcapblack"
item_state = "fedcapblack"
icon_state = "fedcapblack"
item_state = "fedcapblack"
//orvilike caps
/obj/item/clothing/head/kepi/orvi
@@ -585,3 +585,12 @@
icon = 'icons/obj/custom.dmi'
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
mutantrace_variation = NONE
/obj/item/clothing/neck/petcollar/choker
name = "NT Choker"
desc = "NT property since January 21st, 2562."
icon = 'icons/obj/custom.dmi'
icon_state = "choker"
mob_overlay_icon = 'icons/mob/clothing/custom_w.dmi'
item_state = "choker"
tagname = null
@@ -300,3 +300,24 @@
user.nextsoundemote = world.time + 7
var/sound = pick('sound/voice/slime_squish.ogg')
playsound(user, sound, 50, 1, -1)
/datum/emote/living/pain
key = "pain"
key_third_person = "cries out in pain!"
message = "cries out in pain!"
emote_type = EMOTE_AUDIBLE
muzzle_ignore = FALSE
restraint_check = FALSE
/datum/emote/living/pain/run_emote(mob/living/user, params)
if(!(. = ..()))
return
if(user.nextsoundemote >= world.time)
return
user.nextsoundemote = world.time + 7
var/sound
if(user.gender == MALE)
sound = pick('modular_citadel/sound/voice/human_male_pain_1.ogg', 'modular_citadel/sound/voice/human_male_pain_2.ogg', 'modular_citadel/sound/voice/human_male_pain_3.ogg', 'modular_citadel/sound/voice/human_male_pain_rare.ogg')
else
sound = pick('modular_citadel/sound/voice/human_female_pain_1.ogg', 'modular_citadel/sound/voice/human_female_pain_2.ogg', 'modular_citadel/sound/voice/human_female_pain_3.ogg')
playsound(user, sound, 50, 0, 0)
@@ -9,7 +9,7 @@
item_state = "arg"
slot_flags = 0
mag_type = /obj/item/ammo_box/magazine/m556 //Uses the m90gl's magazine, just like the NT-ARG
fire_sound = 'sound/weapons/gunshot_smg.ogg'
fire_sound = 'sound/weapons/rifleshot.ogg'
can_suppress = 0
burst_size = 6 //in line with XCOMEU stats. This can fire 5 bursts from a full magazine.
fire_delay = 1
@@ -85,23 +85,20 @@
///projectiles///
/obj/item/projectile/bullet/cflechetteap //shreds armor
/obj/item/projectile/bullet/cflechetteap //shreds armor but no wounds
name = "flechette (armor piercing)"
damage = 8
armour_penetration = 80
damage = 15
armour_penetration = 100
wound_bonus = -100
/obj/item/projectile/bullet/cflechettes //shreds flesh and forces bleeding
/obj/item/projectile/bullet/cflechettes //causes wounds fast but is heavily countered by armor
name = "flechette (serrated)"
damage = 15
dismemberment = 10
armour_penetration = -80
/obj/item/projectile/bullet/cflechettes/on_hit(atom/target, blocked = FALSE)
if((blocked != 100) && iscarbon(target))
var/mob/living/carbon/C = target
C.bleed(10)
return ..()
wound_bonus = 15
sharpness = SHARP_EDGED
wound_falloff_tile = 0
///ammo casings (CASELESS AMMO CASINGS WOOOOOOOO)///
/obj/item/ammo_casing/caseless/flechetteap
@@ -148,7 +145,7 @@
slot_flags = 0
pin = /obj/item/firing_pin/implant/pindicate
mag_type = /obj/item/ammo_box/magazine/flechette
fire_sound = 'sound/weapons/gunshot_smg.ogg'
fire_sound = 'sound/weapons/rifleshot.ogg'
can_suppress = 0
burst_size = 5
fire_delay = 1
@@ -168,15 +165,19 @@
///unique variant///
/obj/item/projectile/bullet/cflechetteshredder
/obj/item/projectile/bullet/cflechetteshredder //you only get this with a 30TC bundle,5 magazines, as such this should be the superior ammotype
name = "flechette (shredder)"
damage = 5
dismemberment = 40
damage = 10
dismemberment = 50
wound_bonus = 50
armour_penetration = 100
sharpness = SHARP_EDGED
wound_falloff_tile = 0
/obj/item/ammo_casing/caseless/flechetteshredder
name = "flechette (shredder)"
desc = "A serrated flechette made of a special alloy that forms a monofilament edge."
projectile_type = /obj/item/projectile/bullet/cflechettes
projectile_type = /obj/item/projectile/bullet/cflechetteshredder
/obj/item/ammo_box/magazine/flechette/shredder
name = "flechette magazine (shredder)"
@@ -185,7 +186,7 @@
/obj/item/gun/ballistic/automatic/flechette/shredder
name = "\improper CX Shredder"
desc = "A flechette launching machine pistol made of ultra-light CFRP optimized for firing serrated monofillament flechettes."
desc = "A flechette launching machine pistol made of ultra-light CFRP optimized for firing serrated monofilament flechettes."
w_class = WEIGHT_CLASS_SMALL
spread = 15
recoil = 0.1
@@ -2,7 +2,7 @@
The Recolourable Energy Gun
*//////////////////////////////////////////////////////////////////////////////////////////////
obj/item/gun/energy/e_gun/cx
/obj/item/gun/energy/e_gun/cx
name = "\improper CX Model D Energy Gun"
desc = "An overpriced hybrid energy gun with two settings: disable, and kill. Manufactured by CX Armories. Has a polychromic coating."
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
@@ -14,18 +14,18 @@ obj/item/gun/energy/e_gun/cx
flight_y_offset = 10
var/body_color = "#252528"
obj/item/gun/energy/e_gun/cx/ComponentInitialize()
/obj/item/gun/energy/e_gun/cx/ComponentInitialize()
. = ..()
AddElement(/datum/element/update_icon_updates_onmob)
obj/item/gun/energy/e_gun/cx/update_overlays()
/obj/item/gun/energy/e_gun/cx/update_overlays()
. = ..()
var/mutable_appearance/body_overlay = mutable_appearance('modular_citadel/icons/obj/guns/cit_guns.dmi', "cxegun_body")
if(body_color)
body_overlay.color = body_color
. += body_overlay
obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
/obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
. = ..()
if(!in_range(src, user)) //Basic checks to prevent abuse
return
@@ -39,7 +39,7 @@ obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user)
body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1)
update_icon()
obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
/obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file, used_state, style_flags = NONE)
. = ..()
if(isinhands)
var/mutable_appearance/body_inhand = mutable_appearance(icon_file, "cxe_body")
@@ -54,13 +54,8 @@
return..()
var/mob/living/carbon/human/H = M
//If they've opted out, then route processing though liver.
//If they've opted out, ignore and return early.
if(!(H.client?.prefs.cit_toggles & BREAST_ENLARGEMENT))
var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER)
if(L)
L.applyOrganDamage(0.25)
else
H.adjustToxLoss(1)
return..()
var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS)
//otherwise proceed as normal
@@ -85,9 +80,6 @@
/datum/reagent/fermi/breast_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a female if male and ODing, doesn't touch nonbinary and object genders.
if(!(M.client?.prefs.cit_toggles & FORCED_FEM))
var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
if(L)
L.applyOrganDamage(0.25)
return ..()
var/obj/item/organ/genital/penis/P = M.getorganslot(ORGAN_SLOT_PENIS)
@@ -122,9 +114,6 @@
/datum/reagent/fermi/BEsmaller/on_mob_life(mob/living/carbon/M)
var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS)
if(!(M.client?.prefs.cit_toggles & BREAST_ENLARGEMENT) || !B)
var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
if(L)
L.applyOrganDamage(-0.25)
return ..()
B.modify_size(-0.05)
return ..()
@@ -203,11 +192,6 @@
return ..()
var/mob/living/carbon/human/H = M
if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT))
var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER)
if(L)
L.applyOrganDamage(0.25)
else
H.adjustToxLoss(1)
return ..()
var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS)
//otherwise proceed as normal
@@ -226,10 +210,8 @@
/datum/reagent/fermi/penis_enlarger/overdose_process(mob/living/carbon/human/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders.
if(!istype(M))
return ..()
// let's not kill them if they didn't consent.
if(!(M.client?.prefs.cit_toggles & FORCED_MASC))
var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
if(L)
L.applyOrganDamage(0.25)
return..()
var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS)
@@ -266,9 +248,6 @@
var/mob/living/carbon/human/H = M
var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS)
if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT) || !P)
var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER)
if(L)
L.applyOrganDamage(-0.25)
return..()
P.modify_size(-0.1)
@@ -216,7 +216,6 @@
..()
/datum/reagent/fermi/nanite_b_gone/overdose_process(mob/living/carbon/C)
//var/component/nanites/N = M.GetComponent(/datum/component/nanites)
var/datum/component/nanites/N = C.GetComponent(/datum/component/nanites)
if(prob(5))
to_chat(C, "<span class='warning'>The residual voltage from the nanites causes you to seize up!</b></span>")
@@ -230,7 +229,7 @@
N.adjust_nanites(-10*cached_purity)
..()
datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
/datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
for(var/active_obj in react_objs)
if(O == active_obj)
return
@@ -335,39 +334,75 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
holder.clear_reagents()
/datum/reagent/fermi/acidic_buffer
name = "Acidic buffer"
name = "Strong acidic buffer"
description = "This reagent will consume itself and move the pH of a beaker towards acidity when added to another."
color = "#fbc314"
pH = 0
chemical_flags = REAGENT_FORCEONNEW
can_synth = TRUE
var/strength = 1.5
//Consumes self on addition and shifts pH
/datum/reagent/fermi/acidic_buffer/on_new(datapH)
if(!holder)
return ..()
if(holder.reagents_holder_flags & NO_REACT)
return..()
if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return ..()
data = datapH
if(LAZYLEN(holder.reagent_list) == 1)
return ..()
holder.pH = ((holder.pH * holder.total_volume)+(pH * (volume)))/(holder.total_volume + (volume))
if(holder.pH < pH)
holder.my_atom.visible_message("<span class='warning'>The beaker fizzes as the buffer is added, to no effect.</b></span>")
playsound(holder.my_atom, 'sound/FermiChem/bufferadd.ogg', 50, 1)
return ..()
holder.pH = clamp((((holder.pH * (holder.total_volume-(volume*strength)))+(pH * (volume*strength)) )/holder.total_volume), 0, 14) //This is BEFORE removal
holder.my_atom.visible_message("<span class='warning'>The beaker fizzes as the pH changes!</b></span>")
playsound(holder.my_atom, 'sound/FermiChem/bufferadd.ogg', 50, 1)
holder.remove_reagent(type, volume, ignore_pH = TRUE)
..()
/datum/reagent/fermi/acidic_buffer/weak
name = "Acidic buffer"
description = "This reagent will consume itself and move the pH of a beaker towards acidity when added to another."
color = "#fbf344"
pH = 4
can_synth = TRUE
strength = 0.25
/datum/reagent/fermi/basic_buffer
name = "Basic buffer"
name = "Strong basic buffer"
description = "This reagent will consume itself and move the pH of a beaker towards alkalinity when added to another."
color = "#3853a4"
pH = 14
chemical_flags = REAGENT_FORCEONNEW
can_synth = TRUE
var/strength = 1.5
/datum/reagent/fermi/basic_buffer/weak
name = "Basic buffer"
description = "This reagent will consume itself and move the pH of a beaker towards alkalinity when added to another."
color = "#5873c4"
pH = 10
can_synth = TRUE
strength = 0.25
/datum/reagent/fermi/basic_buffer/on_new(datapH)
if(!holder)
return ..()
if(holder.reagents_holder_flags & NO_REACT)
return..()
if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return ..()
data = datapH
if(LAZYLEN(holder.reagent_list) == 1)
return ..()
holder.pH = ((holder.pH * holder.total_volume)+(pH * (volume)))/(holder.total_volume + (volume))
if(holder.pH > pH)
holder.my_atom.visible_message("<span class='warning'>The beaker froths as the buffer is added, to no effect.</b></span>")
playsound(holder.my_atom, 'sound/FermiChem/bufferadd.ogg', 50, 1)
return ..()
holder.pH = clamp((((holder.pH * (holder.total_volume-(volume*strength)))+(pH * (volume*strength)) )/holder.total_volume), 0, 14) //This is BEFORE removal
holder.my_atom.visible_message("<span class='warning'>The beaker froths as the pH changes!</b></span>")
playsound(holder.my_atom, 'sound/FermiChem/bufferadd.ogg', 50, 1)
holder.remove_reagent(type, volume, ignore_pH = TRUE)
@@ -93,9 +93,8 @@
e.set_up(round((volume/28)*(pH-9)), T, 0, 0)
e.start()
if(!ImpureTot == 0) //If impure, v.small emp (0.6 or less)
ImpureTot *= volume
empulse(T, volume, 1)
if(ImpureTot) //If impure, v.small emp (0.6 or less)
empulse(T, ImpureTot, 1)
my_atom.reagents.clear_reagents() //just in case
return