diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 686018e06d..9cb03c6a85 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -393,7 +393,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
qdel(src)
item_flags &= ~IN_INVENTORY
if(SEND_SIGNAL(src, COMSIG_ITEM_DROPPED,user) & COMPONENT_DROPPED_RELOCATION)
- return ITEM_RELOCATED_BY_DROPPED
+ . = ITEM_RELOCATED_BY_DROPPED
user.update_equipment_speed_mods()
// called just as an item is picked up (loc is not yet changed)
diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm
index 863a825771..f7bf659f0a 100644
--- a/code/game/objects/items/shields.dm
+++ b/code/game/objects/items/shields.dm
@@ -110,6 +110,9 @@
if(!(shield_flags & SHIELD_CAN_BASH))
to_chat(user, "[src] can't be used to shield bash!")
return FALSE
+ if(!CHECK_MOBILITY(user, MOBILITY_STAND))
+ to_chat(user, "You can't bash with [src] while on the ground!")
+ return FALSE
if(world.time < last_shieldbash + shieldbash_cooldown)
to_chat(user, "You can't bash with [src] again so soon!")
return FALSE
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index 0d30ebe992..d9ae678bb9 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -6,6 +6,7 @@
status = ORGAN_ROBOTIC
beating = TRUE
organ_flags = ORGAN_NO_SPOIL
+ no_pump = TRUE
var/true_name = "baseline placebo referencer"
var/cooldown_low = 300
var/cooldown_high = 300
@@ -92,6 +93,7 @@
update_gland_hud()
/obj/item/organ/heart/gland/on_life()
+ . = ..()
if(!beating)
// alien glands are immune to stopping.
beating = TRUE
diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm
index c14aa097bb..47a1d84f58 100644
--- a/code/modules/mining/equipment/regenerative_core.dm
+++ b/code/modules/mining/equipment/regenerative_core.dm
@@ -65,7 +65,7 @@
qdel(src)
/obj/item/organ/regenerative_core/on_life()
- ..()
+ . = ..()
if(owner.health < owner.crit_threshold)
ui_action_click()
diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm
index 4cb93a1b6a..90621ecd3f 100644
--- a/code/modules/mob/living/brain/brain_item.dm
+++ b/code/modules/mob/living/brain/brain_item.dm
@@ -245,23 +245,17 @@
. = adjusted_amount
*/
-/obj/item/organ/brain/on_life()
- if(damage >= BRAIN_DAMAGE_DEATH) //rip
- to_chat(owner, "The last spark of life in your brain fizzles out...")
- owner.death()
- brain_death = TRUE
- return
- ..()
-
-/obj/item/organ/brain/on_death()
- if(damage <= BRAIN_DAMAGE_DEATH) //rip
- brain_death = FALSE
- ..()
-
-
/obj/item/organ/brain/applyOrganDamage(var/d, var/maximum = maxHealth)
- ..()
-
+ . = ..()
+ if(!. || !owner)
+ return
+ if(damage >= BRAIN_DAMAGE_DEATH) //rip
+ if(owner.stat != DEAD)
+ to_chat(owner, "The last spark of life in your brain fizzles out...")
+ owner.death()
+ brain_death = TRUE
+ else
+ brain_death = FALSE
/obj/item/organ/brain/check_damage_thresholds(mob/M)
. = ..()
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index b57f9653a9..8485fece85 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -77,6 +77,9 @@
alien_powers = list(/obj/effect/proc_holder/alien/transfer)
/obj/item/organ/alien/plasmavessel/on_life()
+ . = ..()
+ if(!.)
+ return
//If there are alien weeds on the ground then heal if needed or give some plasma
if(locate(/obj/structure/alien/weeds) in owner.loc)
if(owner.health >= owner.maxHealth)
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index 5352329f99..0e8764a372 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -23,6 +23,8 @@
/obj/item/organ/body_egg/alien_embryo/on_life()
. = ..()
+ if(!owner)
+ return
switch(stage)
if(2, 3)
if(prob(2))
diff --git a/code/modules/mob/living/carbon/human/species_types/dwarves.dm b/code/modules/mob/living/carbon/human/species_types/dwarves.dm
index 50b88579f4..ff733d9436 100644
--- a/code/modules/mob/living/carbon/human/species_types/dwarves.dm
+++ b/code/modules/mob/living/carbon/human/species_types/dwarves.dm
@@ -101,12 +101,11 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
/obj/item/organ/dwarfgland/on_life() //Primary loop to hook into to start delayed loops for other loops..
. = ..()
- dwarf_cycle_ticker()
+ if(!owner || owner.stat == DEAD)
+ dwarf_cycle_ticker()
//Handles the delayed tick cycle by just adding on increments per each on_life() tick
/obj/item/organ/dwarfgland/proc/dwarf_cycle_ticker()
- if(owner.stat == DEAD)
- return //We make sure they are not dead, so they don't increment any tickers.
dwarf_eth_ticker++
dwarf_filth_ticker++
diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm
index 9b3db8af62..dced5ae869 100644
--- a/code/modules/mob/living/silicon/silicon_defense.dm
+++ b/code/modules/mob/living/silicon/silicon_defense.dm
@@ -1,3 +1,5 @@
+/mob/living/silicon/KnockToFloor(disarm_items = FALSE, silent = TRUE, updating = TRUE)
+ return
/mob/living/silicon/grippedby(mob/living/user, instant = FALSE)
return //can't upgrade a simple pull into a more aggressive grab.
diff --git a/code/modules/surgery/organs/appendix.dm b/code/modules/surgery/organs/appendix.dm
index 9da20e4921..1ad55b12dd 100644
--- a/code/modules/surgery/organs/appendix.dm
+++ b/code/modules/surgery/organs/appendix.dm
@@ -12,12 +12,10 @@
var/inflamed
/obj/item/organ/appendix/on_life()
- ..()
- if(!(organ_flags & ORGAN_FAILING))
+ . = ..()
+ if(.)
return
- var/mob/living/carbon/M = owner
- if(M)
- M.adjustToxLoss(4, TRUE, TRUE) //forced to ensure people don't use it to gain tox as slime person
+ owner.adjustToxLoss(4, TRUE, TRUE) //forced to ensure people don't use it to gain tox as slime person
/obj/item/organ/appendix/update_icon_state()
if(inflamed)
diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm
index eb42303060..46092ff0c2 100644
--- a/code/modules/surgery/organs/augments_chest.dm
+++ b/code/modules/surgery/organs/augments_chest.dm
@@ -16,7 +16,8 @@
slot = ORGAN_SLOT_STOMACH_AID
/obj/item/organ/cyberimp/chest/nutriment/on_life()
- if(synthesizing)
+ . = ..()
+ if(!. || synthesizing)
return
if(owner.nutrition <= hunger_threshold)
@@ -59,23 +60,25 @@
var/convalescence_time = 0
/obj/item/organ/cyberimp/chest/reviver/on_life()
+ . = ..()
if(reviving)
- var/do_heal = world.time < convalescence_time
+ var/do_heal = . && world.time < convalescence_time
if(revive_cost >= MAX_HEAL_COOLDOWN)
do_heal = FALSE
- else if(owner.stat && owner.stat != DEAD)
+ else if(owner?.stat && owner.stat != DEAD)
do_heal = TRUE
else if(!do_heal)
convalescence_time = world.time + DEF_CONVALESCENCE_TIME
- if(do_heal)
+ if(. && (do_heal || world.time < convalescence_time))
addtimer(CALLBACK(src, .proc/heal), 3 SECONDS)
else
cooldown = revive_cost + world.time
reviving = FALSE
- to_chat(owner, "Your reviver implant shuts down and starts recharging. It will be ready again in [DisplayTimeText(revive_cost)].")
+ if(owner)
+ to_chat(owner, "Your reviver implant shuts down and starts recharging. It will be ready again in [DisplayTimeText(revive_cost)].")
return
- if(cooldown > world.time || owner.stat == CONSCIOUS || owner.stat == DEAD || owner.suiciding)
+ if(!. || cooldown > world.time || owner.stat == CONSCIOUS || owner.stat == DEAD || owner.suiciding)
return
revive_cost = 0
diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm
index a678482ef3..6705b4c7b4 100644
--- a/code/modules/surgery/organs/augments_internal.dm
+++ b/code/modules/surgery/organs/augments_internal.dm
@@ -102,8 +102,8 @@
slot = ORGAN_SLOT_BRAIN_ANTISTUN
/obj/item/organ/cyberimp/brain/anti_stun/on_life()
- ..()
- if(crit_fail || !(organ_flags & ORGAN_FAILING))
+ . = ..()
+ if(!. || crit_fail)
return
owner.adjustStaminaLoss(-3.5, FALSE) //Citadel edit, makes it more useful in Stamina based combat
owner.HealAllImmobilityUpTo(STUN_SET_AMOUNT)
diff --git a/code/modules/surgery/organs/ears.dm b/code/modules/surgery/organs/ears.dm
index 63febd1a9f..c1e33c7dac 100644
--- a/code/modules/surgery/organs/ears.dm
+++ b/code/modules/surgery/organs/ears.dm
@@ -29,22 +29,17 @@
var/damage_multiplier = 1
/obj/item/organ/ears/on_life()
- if(!iscarbon(owner))
- return
- ..()
- var/mob/living/carbon/C = owner
- if((damage < maxHealth) && (organ_flags & ORGAN_FAILING)) //ear damage can be repaired from the failing condition
- organ_flags &= ~ORGAN_FAILING
+ . = ..()
// genetic deafness prevents the body from using the ears, even if healthy
- if(HAS_TRAIT(C, TRAIT_DEAF))
+ if(owner && HAS_TRAIT(owner, TRAIT_DEAF))
deaf = max(deaf, 1)
- else if(!(organ_flags & ORGAN_FAILING)) // if this organ is failing, do not clear deaf stacks.
+ else if(.) // if this organ is failing, do not clear deaf stacks.
deaf = max(deaf - 1, 0)
if(prob(damage / 20) && (damage > low_threshold))
adjustEarDamage(0, 4)
- SEND_SOUND(C, sound('sound/weapons/flash_ring.ogg'))
- to_chat(C, "The ringing in your ears grows louder, blocking out any external noises for a moment.")
- else if((organ_flags & ORGAN_FAILING) && (deaf == 0))
+ SEND_SOUND(owner, sound('sound/weapons/flash_ring.ogg'))
+ to_chat(owner, "The ringing in your ears grows louder, blocking out any external noises for a moment.")
+ else if(!. && !deaf)
deaf = 1 //stop being not deaf you deaf idiot
/obj/item/organ/ears/proc/restoreEars()
diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm
index e5aac2a47d..049fc5b5d4 100644
--- a/code/modules/surgery/organs/eyes.dm
+++ b/code/modules/surgery/organs/eyes.dm
@@ -1,3 +1,7 @@
+#define BLURRY_VISION_ONE 1
+#define BLURRY_VISION_TWO 2
+#define BLIND_VISION_THREE 3
+
/obj/item/organ/eyes
name = BODY_ZONE_PRECISE_EYES
icon_state = "eyeballs"
@@ -10,7 +14,7 @@
decay_factor = STANDARD_ORGAN_DECAY
maxHealth = 0.5 * STANDARD_ORGAN_THRESHOLD //half the normal health max since we go blind at 30, a permanent blindness at 50 therefore makes sense unless medicine is administered
high_threshold = 0.3 * STANDARD_ORGAN_THRESHOLD //threshold at 30
- low_threshold = 0.15 * STANDARD_ORGAN_THRESHOLD //threshold at 15
+ low_threshold = 0.2 * STANDARD_ORGAN_THRESHOLD //threshold at 15
low_threshold_passed = "Distant objects become somewhat less tangible."
high_threshold_passed = "Everything starts to look a lot less clear."
@@ -27,14 +31,17 @@
var/flash_protect = 0
var/see_invisible = SEE_INVISIBLE_LIVING
var/lighting_alpha
- var/damaged = FALSE //damaged indicates that our eyes are undergoing some level of negative effect
+ var/eye_damaged = FALSE //indicates that our eyes are undergoing some level of negative effect
/obj/item/organ/eyes/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = FALSE)
. = ..()
if(!.)
return
- if(damage == initial(damage))
- clear_eye_trauma()
+ switch(eye_damaged)
+ if(BLURRY_VISION_ONE, BLURRY_VISION_TWO)
+ owner.overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, eye_damaged)
+ if(BLIND_VISION_THREE)
+ owner.become_blind(EYE_DAMAGE)
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
old_eye_color = H.eye_color
@@ -48,46 +55,49 @@
owner.update_sight()
/obj/item/organ/eyes/Remove(special = FALSE)
- clear_eye_trauma()
. = ..()
var/mob/living/carbon/C = .
- if(!QDELETED(C))
- if(ishuman(C) && eye_color)
- var/mob/living/carbon/human/H = C
- H.eye_color = old_eye_color
- if(!special)
- H.dna.species.handle_body(H)
+ if(QDELETED(C))
+ return
+ switch(eye_damaged)
+ if(BLURRY_VISION_ONE, BLURRY_VISION_TWO)
+ C.clear_fullscreen("eye_damage")
+ if(BLIND_VISION_THREE)
+ C.cure_blind(EYE_DAMAGE)
+ if(ishuman(C) && eye_color)
+ var/mob/living/carbon/human/H = C
+ H.eye_color = old_eye_color
if(!special)
- C.update_tint()
- C.update_sight()
+ H.dna.species.handle_body(H)
+ if(!special)
+ C.update_tint()
+ C.update_sight()
-/obj/item/organ/eyes/on_life()
- ..()
- var/mob/living/carbon/C = owner
- //since we can repair fully damaged eyes, check if healing has occurred
- if((organ_flags & ORGAN_FAILING) && (damage < maxHealth))
- organ_flags &= ~ORGAN_FAILING
- C.cure_blind(EYE_DAMAGE)
- //various degrees of "oh fuck my eyes", from "point a laser at your eye" to "staring at the Sun" intensities
- if(damage > 20)
- damaged = TRUE
- if(organ_flags & ORGAN_FAILING)
- C.become_blind(EYE_DAMAGE)
- else if(damage > 30)
- C.overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2)
+
+/obj/item/organ/eyes/applyOrganDamage(d, maximum = maxHealth)
+ . = ..()
+ if(!.)
+ return
+ var/old_damaged = eye_damaged
+ switch(damage)
+ if(INFINITY to maxHealth)
+ eye_damaged = BLIND_VISION_THREE
+ if(maxHealth to high_threshold)
+ eye_damaged = BLURRY_VISION_TWO
+ if(high_threshold to low_threshold)
+ eye_damaged = BLURRY_VISION_ONE
else
- C.overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1)
- //called once since we don't want to keep clearing the screen of eye damage for people who are below 20 damage
- else if(damaged)
- damaged = FALSE
- C.clear_fullscreen("eye_damage")
- return
-
-/obj/item/organ/eyes/proc/clear_eye_trauma()
- var/mob/living/carbon/C = owner
- C.clear_fullscreen("eye_damage")
- C.cure_blind(EYE_DAMAGE)
- damaged = FALSE
+ eye_damaged = FALSE
+ if(eye_damaged == old_damaged || !owner)
+ return
+ if(old_damaged == BLIND_VISION_THREE)
+ owner.cure_blind(EYE_DAMAGE)
+ else if(eye_damaged == BLIND_VISION_THREE)
+ owner.become_blind(EYE_DAMAGE)
+ if(eye_damaged && eye_damaged != BLIND_VISION_THREE)
+ owner.overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, eye_damaged)
+ else
+ owner.clear_fullscreen("eye_damage")
/obj/item/organ/eyes/night_vision
name = "shadow eyes"
@@ -382,4 +392,8 @@
/obj/item/organ/eyes/ipc
name = "ipc eyes"
- icon_state = "cybernetic_eyeballs"
\ No newline at end of file
+ icon_state = "cybernetic_eyeballs"
+
+#undef BLURRY_VISION_ONE
+#undef BLURRY_VISION_TWO
+#undef BLIND_VISION_THREE
\ No newline at end of file
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index ea98ecd32b..1fee605b12 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -15,6 +15,7 @@
// Heart attack code is in code/modules/mob/living/carbon/human/life.dm
var/beating = 1
+ var/no_pump = FALSE
var/icon_base = "heart"
attack_verb = list("beat", "thumped")
var/beat = BEAT_NONE//is this mob having a heatbeat sound played? if so, which?
@@ -66,27 +67,28 @@
return S
/obj/item/organ/heart/on_life()
- ..()
+ . = ..()
+ if(!owner || no_pump)
+ return
if(owner.client && beating)
failed = FALSE
var/sound/slowbeat = sound('sound/health/slowbeat.ogg', repeat = TRUE)
var/sound/fastbeat = sound('sound/health/fastbeat.ogg', repeat = TRUE)
- var/mob/living/carbon/H = owner
- if(H.health <= H.crit_threshold && beat != BEAT_SLOW)
+ if(owner.health <= owner.crit_threshold && beat != BEAT_SLOW)
beat = BEAT_SLOW
- H.playsound_local(get_turf(H), slowbeat,40,0, channel = CHANNEL_HEARTBEAT)
+ owner.playsound_local(get_turf(owner), slowbeat,40,0, channel = CHANNEL_HEARTBEAT)
to_chat(owner, "You feel your heart slow down...")
- if(beat == BEAT_SLOW && H.health > H.crit_threshold)
- H.stop_sound_channel(CHANNEL_HEARTBEAT)
+ if(beat == BEAT_SLOW && owner.health > owner.crit_threshold)
+ owner.stop_sound_channel(CHANNEL_HEARTBEAT)
beat = BEAT_NONE
- if(H.jitteriness)
- if(H.health > HEALTH_THRESHOLD_FULLCRIT && (!beat || beat == BEAT_SLOW))
- H.playsound_local(get_turf(H),fastbeat,40,0, channel = CHANNEL_HEARTBEAT)
+ if(owner.jitteriness)
+ if(owner.health > HEALTH_THRESHOLD_FULLCRIT && (!beat || beat == BEAT_SLOW))
+ owner.playsound_local(get_turf(owner),fastbeat,40,0, channel = CHANNEL_HEARTBEAT)
beat = BEAT_FAST
else if(beat == BEAT_FAST)
- H.stop_sound_channel(CHANNEL_HEARTBEAT)
+ owner.stop_sound_channel(CHANNEL_HEARTBEAT)
beat = BEAT_NONE
if(organ_flags & ORGAN_FAILING) //heart broke, stopped beating, death imminent
@@ -107,6 +109,7 @@ obj/item/organ/heart/slime
icon_state = "cursedheart-off"
icon_base = "cursedheart"
decay_factor = 0
+ no_pump = TRUE
actions_types = list(/datum/action/item_action/organ_action/cursed_heart)
var/last_pump = 0
var/add_colour = TRUE //So we're not constantly recreating colour datums
@@ -128,6 +131,9 @@ obj/item/organ/heart/slime
return ..()
/obj/item/organ/heart/cursed/on_life()
+ . = ..()
+ if(!owner)
+ return
if(world.time > (last_pump + pump_delay))
if(ishuman(owner) && owner.client) //While this entire item exists to make people suffer, they can't control disconnects.
var/mob/living/carbon/human/H = owner
@@ -208,6 +214,8 @@ obj/item/organ/heart/slime
obj/item/organ/heart/cybernetic/upgraded/on_life()
. = ..()
+ if(!.)
+ return
if(dose_available && owner.health <= owner.crit_threshold && !owner.reagents.has_reagent(rid))
owner.reagents.add_reagent(rid, ramount)
used_dose()
@@ -233,7 +241,7 @@ obj/item/organ/heart/cybernetic/upgraded/on_life()
/obj/item/organ/heart/freedom/on_life()
. = ..()
- if(owner.health < 5 && world.time > min_next_adrenaline)
+ if(. && owner.health < 5 && world.time > min_next_adrenaline)
min_next_adrenaline = world.time + rand(250, 600) //anywhere from 4.5 to 10 minutes
to_chat(owner, "You feel yourself dying, but you refuse to give up!")
owner.heal_overall_damage(15, 15)
diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm
index f4771de14f..146e5c7119 100755
--- a/code/modules/surgery/organs/liver.dm
+++ b/code/modules/surgery/organs/liver.dm
@@ -25,25 +25,24 @@
var/cachedmoveCalc = 1
/obj/item/organ/liver/on_life()
- var/mob/living/carbon/C = owner
+ . = ..()
+ if(!.)//can't process reagents with a failing liver
+ return
- if(istype(C))
- if(!(organ_flags & ORGAN_FAILING))//can't process reagents with a failing liver
+ if(filterToxins && !HAS_TRAIT(owner, TRAIT_TOXINLOVER))
+ //handle liver toxin filtration
+ for(var/datum/reagent/toxin/T in owner.reagents.reagent_list)
+ var/thisamount = owner.reagents.get_reagent_amount(T.type)
+ if (thisamount && thisamount <= toxTolerance)
+ owner.reagents.remove_reagent(T.type, 1)
+ else
+ damage += (thisamount*toxLethality)
- if(filterToxins && !HAS_TRAIT(owner, TRAIT_TOXINLOVER))
- //handle liver toxin filtration
- for(var/datum/reagent/toxin/T in C.reagents.reagent_list)
- var/thisamount = C.reagents.get_reagent_amount(T.type)
- if (thisamount && thisamount <= toxTolerance)
- C.reagents.remove_reagent(T.type, 1)
- else
- damage += (thisamount*toxLethality)
+ //metabolize reagents
+ owner.reagents.metabolize(owner, can_overdose=TRUE)
- //metabolize reagents
- C.reagents.metabolize(C, can_overdose=TRUE)
-
- if(damage > 10 && prob(damage/3))//the higher the damage the higher the probability
- to_chat(C, "You feel a dull pain in your abdomen.")
+ if(damage > 10 && prob(damage/3))//the higher the damage the higher the probability
+ to_chat(owner, "You feel a dull pain in your abdomen.")
/obj/item/organ/liver/prepare_eat()
var/obj/S = ..()
diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index 1b66af6232..b3020ae13f 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -446,17 +446,17 @@
if(prob(20))
to_chat(H, "You feel [hot_message] in your [name]!")
-
-/obj/item/organ/lungs/on_life()
- ..()
- if((!failed) && ((organ_flags & ORGAN_FAILING)))
- if(owner.stat == CONSCIOUS)
+/obj/item/organ/lungs/applyOrganDamage(d, maximum = maxHealth)
+ . = ..()
+ if(!.)
+ return
+ if(!failed && organ_flags & ORGAN_FAILING)
+ if(owner && owner.stat == CONSCIOUS)
owner.visible_message("[owner] grabs [owner.p_their()] throat, struggling for breath!", \
"You suddenly feel like you can't breathe!")
failed = TRUE
else if(!(organ_flags & ORGAN_FAILING))
failed = FALSE
- return
/obj/item/organ/lungs/prepare_eat()
var/obj/S = ..()
@@ -547,5 +547,6 @@
color = "#68e83a"
/obj/item/organ/lungs/yamerol/on_life()
- ..()
- damage += 2 //Yamerol lungs are temporary
\ No newline at end of file
+ . = ..()
+ if(.)
+ applyOrganDamage(2) //Yamerol lungs are temporary
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index 4e4268c5fe..4bb1eaec19 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -134,18 +134,19 @@
organ_flags &= ~ORGAN_FROZEN
return FALSE
-/obj/item/organ/proc/on_life() //repair organ damage if the organ is not failing
- if(organ_flags & ORGAN_FAILING)
- return
+/obj/item/organ/proc/on_life() //repair organ damage if the organ is not failing or synthetic
+ if(organ_flags & ORGAN_FAILING || !owner)
+ return FALSE
if(is_cold())
- return
- ///Damage decrements by a percent of its maxhealth
- var/healing_amount = -(maxHealth * healing_factor)
- ///Damage decrements again by a percent of its maxhealth, up to a total of 4 extra times depending on the owner's health
- healing_amount -= owner.satiety > 0 ? 4 * healing_factor * owner.satiety / MAX_SATIETY : 0
- if(healing_amount)
- applyOrganDamage(healing_amount) //to FERMI_TWEAK
- //Make it so each threshold is stuck.
+ return FALSE
+ if(damage)
+ ///Damage decrements by a percent of its maxhealth
+ var/healing_amount = -(maxHealth * healing_factor)
+ ///Damage decrements again by a percent of its maxhealth, up to a total of 4 extra times depending on the owner's satiety
+ healing_amount -= owner.satiety > 0 ? 4 * healing_factor * owner.satiety / MAX_SATIETY : 0
+ if(healing_amount)
+ applyOrganDamage(healing_amount) //to FERMI_TWEAK
+ return TRUE
/obj/item/organ/examine(mob/user)
. = ..()
@@ -205,9 +206,7 @@
///Adjusts an organ's damage by the amount "d", up to a maximum amount, which is by default max damage
/obj/item/organ/proc/applyOrganDamage(var/d, var/maximum = maxHealth) //use for damaging effects
- if(!d) //Micro-optimization.
- return FALSE
- if(maximum < damage)
+ if(!d || maximum < damage) //Micro-optimization.
return FALSE
damage = clamp(damage + d, 0, maximum)
var/mess = check_damage_thresholds()
diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm
index 3b383581cf..d9cbf9be03 100755
--- a/code/modules/surgery/organs/stomach.dm
+++ b/code/modules/surgery/organs/stomach.dm
@@ -17,33 +17,24 @@
low_threshold_cleared = "The last bouts of pain in your stomach have died out."
/obj/item/organ/stomach/on_life()
- ..()
- var/datum/reagent/consumable/nutriment/Nutri
+ . = ..()
+ if(!owner)
+ return
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
- if(!(organ_flags & ORGAN_FAILING))
+ if(.)
H.dna.species.handle_digestion(H)
handle_disgust(H)
- Nutri = locate(/datum/reagent/consumable/nutriment) in H.reagents.reagent_list
- if(Nutri)
- if(prob((damage/40) * Nutri.volume * Nutri.volume))
- H.vomit(damage)
- to_chat(H, "Your stomach reels in pain as you're incapable of holding down all that food!")
-
- else if(Nutri && damage > high_threshold)
- if(prob((damage/10) * Nutri.volume * Nutri.volume))
- H.vomit(damage)
- to_chat(H, "Your stomach reels in pain as you're incapable of holding down all that food!")
-
-
- else if(iscarbon(owner))
- var/mob/living/carbon/C = owner
- Nutri = locate(/datum/reagent/consumable/nutriment) in C.reagents.reagent_list
-
- if(damage < low_threshold)
+ if(!damage)
return
-
+ var/datum/reagent/consumable/nutriment/Nutri = locate(/datum/reagent/consumable/nutriment) in owner.reagents.reagent_list
+ if(!Nutri)
+ return
+ var/prob_divisor = damage > high_threshold ? 10 : 40
+ if(prob((damage/prob_divisor) * (Nutri.volume**2)))
+ owner.vomit(damage)
+ to_chat(owner, "Your stomach reels in pain as you're incapable of holding down all that food!")
/obj/item/organ/stomach/proc/handle_disgust(mob/living/carbon/human/H)
if(H.disgust)
diff --git a/html/changelog.html b/html/changelog.html
index b02b2d74a5..3d05d75736 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -833,555 +833,6 @@
box brig miscellaneous issues
box station hos office
-
- 26 February 2020
- AnturK ported by kevinz000 updated:
-
- - Dueling pistols have been added.
-
- Arturlang updated:
-
- - Replaces a lot of ingame UIs with TGUI next, increasing performance drastically.
- - Each night for bloodsuckers will last longer due to the sun dimming.
- - You cant level up for free, now you have to pay blood for power.
- - Bloodsuckers are no longer as resistant to hard stuns and regenerate less stamina. and a lot of their cooldowns are a lot higher.
- - Removed text macros from the chem dispenser.
- - Replaced with dispenser input recording macros.
- - Fancifying makeshift switchblades now works
- - Shields will no longer block lasers, and will break if they take too much damage.
- - Added a TGUI Next interface for crafting
- - Removed the old TGUI slow crafting interface
- - The MK2 hypospray now
- - The debug outfit is now kitted out for whatever debbuging needs.
- - Fixed the pandemic naming and the radiation healing symptom UI crashing
- - Hyposprays now switch modes on CTRL click, instead of alt, as it was already reserved for dispension amount.
- - Nanite interfaces have gotten a rework to TGUI Next, and can now support sub-programs. add:Adds the nanite sting program, which will allow you to manually sting people to give them nanites, changeling style.
- - The pandemic can no longer make vaccines or synthblood as quickly.
- - The syndicate uplinks interface has been redone in TGUI Next
- - Valentines can now be converted by bloodsuckers
-
- Bhijn updated:
-
- - Click-dragging will now only perform the quick item usage behavior if you're in combat mode.
-
- BlueWildrose updated:
-
- - podpeople tail wagging
- - lifebringer ghost role fixes
-
- BuffEngineering, nemvar. updated:
-
- - Addicts can now feel like they're getting their fix or kicking it.
- - Aheals now remove addictions and restore your mood to default.
-
- CameronWoof updated:
-
- - Lighting looks better now. I can say that because the PR wouldn't be merged and you wouldn't be reading this if it wasn't true.
- - Ammonia and saltpetre can now be made at the biogenerator.
-
- Commandersand updated:
-
- - uplink centcomm suit doesn't have sensors
-
- DeltaFire15 updated:
-
- - Nar'Sie runes no longer benefit from runed floors.
-
- Detective-Google updated:
-
- - the POOL. remove: boxstation dorms 7
- - valentines candy no longer prefbreaks
- - Loudness Booster pAI program
- - Encryption Key pAI program
-
- EmeraldSundisk updated:
-
- - Connects mining's disposal unit on Delta.
- - Slight visual adjustments to the immediate affected area.
-
- Feasel updated:
-
- - Buffed dissection success chances.
-
- Ghommie updated:
-
- - The anomalous honking crystal should now properly clown your mind.
- - Stopped the ellipsis question mark from being displayed twice in the examine message for masked/unknown human mobs.
- - Made the aforementioned ellipsis question mark display on flavor-text-less masked/unknown human mobs too for consistency.
- - Stopped an APTFT exploit with spray bottles.
- - Fixed the detective revolver being quite risky to use.
- - Hair styles and undergarments are yet again free from gender restrictions.
- - Clown ops will find bombananas and clown bomb beacons instead of minibombs and bomb beacons in their infiltrator ship now.
- - For safety, the syndicate shuttle minibombs and bombananas come shipped in a box. Please don't instinctively eat any of those nanas, thank you.
- - Uplink items excluded (such as mulligan, chameleon, ebow) from or exclusive (such as cyber implants) to normal nuke ops will now be properly unavailable/available to clown ops.
- - Fixed bananium energy sword/shield slips.
- - Buffed said slips to ignore no-grav/crawling/flying as well as adding some deadly force to the e-sword.
- - Fixed the 'stache grenade anti-non-clumsy user check.
- - Doubled the timer for the sticky mustaches effect from the above grenade (from 1 to 2 minutes)
- - Fixed an edge case with the chaplain armaments beacon spawning the box in nullspace.
- - The playback device's cooldown now proportionally increases with messages longer than 60 characters (3 seconds is the default assembly cooldown).
- - Fixed space ninjas "Nothing" objective. Now you gotta steal some dandy stuff such as corgi meat and pinpointers as a ninja too.
- - Fixed maploaded APC terminals direction.
- - Nerfed magnetic rifles/pistols by re(?)adding power cell requirements for it. These firearms must be recharged after firing 2 magazines worth of projectiles and are slightly more susceptible to EMPs.
- - Fixed the tearstache nade not properly working.
- - Buffed it against space helmet internals.
- - Holographic fans won't display above mobs and other objects anymore.
- - Fixed paraplegics appearing as shoeless.
- - Fixed the petting element.
- - Fixed slipping.
- - Refactored mob holders into an element.
- - Fixed a few minor issues with that feature. such as mismatching sprites for certain held mobs and a slight lack of safety checks.
- - holdable mobs can't force themselves into people's hands anymore.
- - Milkies fix.
- - Fixed some mounted defibrillator issue with the altclicking functionality.
- - Fixed no-grav lavaland labor/mining shuttle areas.
- - Fixed a little issue with sleeper UI and blood types.
- - Fixing accidental nerfs to the magpistol magazine.
- - The Lavaland's Herald speech sound should only play if they are actually speaking.
- - Nerfed cargo passive points generation from 500 to 125 creds per minute.
- - Fixed whitelisted/donor loadouts
- - Childproofs double-esword and hypereuplastic blade toys.
- - Some reagent holders (such as cigarettes, food) are not suitable for reagents export anymore, while unprocessed botany crops will only net 1/3 of the standard reagents values.
- - Export scanners now include the reagents value in the price report.
- - Fixed a little inconvenience with the character setup preview dummy having extra unwarranted bits.
- - Stopped role restricted uplink items from being discounted despite not being purchasable most times.
- - Missing words replacement file for the gondola mask.
- - Fixed an issue with the nearsighted prescription glasses taking over worn eyewear.
- - Fixed AI unanchoring not properly removing the no teleport trait. My bad.
- - Fixed another issue with hering comsig.
- - Fixed dozen missing privates sprites.
- - A little fix concerning some R&D and reagents.
- - Further mob holder fixes.
- - Fixed being unable to dump a trash bag's contents directly into disposal bins.
- - Doubled the halved flavor text maximum length.
- - Reduced tongue organ damage and tasting pH message spam.
- - Fixed agent IDs not registering the inputted name. Thanks MrPerson.
- - Fixed solar panels/trackers (de)construction being a bit wonky.
- - Fixed something about slime blood and the law of conservation of mass.
- - Fixed flypeople being emetic machine guns.
- - Fixed virology being unable to be done with synthetic blood.
- - Renamed "blaster carbine" and "blaster rifles" back to "energy gun" and "laser gun" respectively
- - Fixed magnetic rifles & co being inconsistent with printed energy guns and start with an empty power cell.
- - Reverted practice laser gun sprites back to their former glory. Mostly.
- - Fixed sprint buffer cost and regen being rounded down.
- - Nerfed the fermenting barrel export industry.
- - Reagent dispensers selling price no longer takes in account the reagents volume. It's already handled by reagents export.
- - pAIs are yet again unable to perform certain silicon interactions with machineries yet again.
- - Fixed pAI radios inability to be toggled on/off.
-
- Ghommie (original PRs by Floyd/Qustinnus, 4Dplanner, Willox, ninjanomnom, mrdoombringer, Fikou, Fox McCloud, TheChosenEvilOne, nemvar, bobbahbrown, Time-Green, Stonebaykyle, MrPerson, ArcaneMusic and zxaber) updated:
-
- - You can now make toolboxes out of almost any solid material in an autolathe
- - adds Knight's Armour made out of any materials
- - new ruin found in lavaland protected by dark wizards, I wonder what they're guarding
- - You can now put a bunch more mats in the coin mint and autolathe
- - Adamantine and Mythril are now materials (Adamantine still only from xenobio, Mythril still only from badminnery). Adamantine boosts an item's force by 1.5, Mythril gives an item RPG statistics.
- - most custom sprites for coins have been lost
- - You can now give your ass acute radiation poisoning
- - floydmats now apply to all objs / items
- - you can now make tables and chairs out of any material
- - Fixes being able to exploit fully upgraded destructive analyzers to multiply materials
- - An old monastery from a previously abandoned sector of space has recently resurfaced in some regions surrounding the station.
- - Latent scans of the surrounding systems have picked up trace signs of new, smaller cult constructs, however these signatures quickly vanished.
- - In other news, scavengers in your sector have been seen occasionally with classically recreated maces, so autolathe firmware has been upgraded to accommodate this.
-
- Hatterhat updated:
-
- - Zombie powder is now instant when ingested, but delayed when injected or applied through touch.
- - The H.E.C.K. suit is now goliath tentacle resistant and probably better for acid resistance.
- - The Engineering techfab can now print standard and large RCD compressed matter cartridges.
- - The Experimental Tools node now has the Combifan projector, blocking both temperature and atmospheric changes.
- - fiddles with the seed extractor upgrade examine to make it not shit
- - Formaldehyde prevents organ decay and corpses' miasma production at 1u in the body.
- - Epinephrine pens now contain 3u formaldehyde. This should not kill you.
- - The ships often crashed by Free Golems on Lavaland now have GPSes. They're off, by default, but an awakening Golem could easily turn one on.
- - Standard RCD ammo can now be printed from Engineering-keyed techfabs once you hit Industrial Engineering.
- - Consoleless interfaces are now default - this means unrestricted protolathes and circuit imprinters can now be interfaced with by interacting with the machine itself.
- - Multitools can now actually be printed from Engineering and Science protolathes/techfabs once you unlock Basic Tools.
- - Husking (from being burned to shit) can now be reverted! 5u rezadone or 100u synthflesh, at below 50 burn.
- - Turning a body into a burnt husk now takes more effort. 300 burn's worth of effort.
- - Buckshot individual pellet damage up from 10 to 12.5. Still firing 6 pellets.
- - Preservahyde! Made with water, bromine, and formaldehyde, it doesn't decay into histamine. Instead, it just prevents your organs from rotting into nothing.
- - You can now purify eldritch longswords with a bible. This creates purified longswords, which do not have anti-magic properties, but are still good for swinging at cultists.
- - Extend votes! Ported from Hyper, ported from AUstation.
- - mechs with stock parts now have icons
- - Pie reagent transfer now requires an uncovered mouth.
- - Biogenerators can now actually generate universal enzyme.
- - The Basic Tools node now unlocks the multitool for printing on Engineering and Science fabricators.
- - The Ash Walkers' nest on Lavaland now starts with three bowyery slabs.
- - You can now welder-harden arrows. It might take longer.
- - Silkstring's costs adjusted for bows and whatnot.
- - Grammar adjusted on a lot of things relating to bows.
- - Pipe bows' bowstring doesn't look like it replicated itself upon draw.
-
- IHOPMommyLich updated:
-
- - Changed the multiplicative_slowdown of Stimulants from -1 to -0.5
-
- IronEleven updated:
-
- - Minor stat changes to Choking, Spontaneous Combustion, Autophagocytosis Necrosis, Hallucigen, Narcolepsy, Shivering, and Vomiting symptoms.
-
- KathrinBailey updated:
-
- - Missing turf_decals in Cargo Office.
- - Turns on the docking beacons on Box.
- - Fixes Starboard Quarter maint room being spaced. It was never intended to be like how it was.
- - The aforementioned maint room not having stuff in it.
- - varedited photocopier sometimes not opening any UI.
- - Atmos differences in Starboard Quarter maint.
- - Atmos differences in destroyed shuttle/EVA bridge. Plating replaced with airless plating.
- - Rotates AI satellite computers. These have probably been like this since computers had the old sprites and no directional ones. You shouldn't sit at a chair to operate a sideways computer.
-
- KrabSpider updated:
-
- - The Van Dyke is no longer Fu Manchu.
- - Gets rid of a Fu Manchu imitation.
-
- Kraseo updated:
-
- - You can no longer pull before wearing boxing gloves to bypass the grab check.
- - Nightmares no longer delete entire guns from existence for merely having a light on them.
-
- Linzolle updated:
-
- - Bows now will not delete an arrow if it cant fire it.
- - bows now like and respect sprite changes
-
- MalricB updated:
-
- - "Shaggy" sprite from virgo
- - "shaggy" option in the character customization
-
- MrJWhit updated:
-
- - Removed meteor defense tech node
- - TEG
-
- Naksu updated:
-
- - Odysseus chem synthesizing now works again.
-
- Owai-Seek updated:
-
- - Burger, Cargo Packaging, Dirty Magazine, Air Pump, and Scrubber crates.
- - Duplicate Crate, Festive Wrapping Paper Crate, Contraband Monkey Meat Crate
- - Gave Seed Crate Ambrosia Seed, gave Biker Gang Crate Spraypaint.
- - Organised some crates with sub-categories. Also, moved all vendor refills to a new tab.
- - Moved Grill to Service Tab
- - Engineering Hardsuit Access
- - Blood Crate now has all of the current blood types.
- - Birthday Cake Recipe is now the same as TG.
- - Added Soy Sauce and BBQ Packets to Dinnerware Vendor.
- - Added nurse outfit, nurse cap, and mailman hat to loadout.
- - Changed the name of scrubs to blue, green, and purple scrubs.
- - Bacon and Eggs food item. Delicious! Added a Lemony Poppy Seed Muffin.
- - Snack Vendor has Chocolates, Tortilla Chips, and a Marshmallow Box
- - Mops can now be printed at service lathe once tools are researched.
- - Biobags can hold most organic limbs/organs, but not brains, implants, or cybernetics.
- - Trash Bag can now hold limbs (but not heads.)
- - Most snack vendor items reduced by 1.
- - Trash Cans are now actually craftable, and only require metal instead of plastic.
- - Bacon and Eggs, Drying Agent Bottle.
- - Mugs now show reagent colors of contained reagents. Thanks Seris!
- - Reorganized all food recipes, (hopefully) making things easier to find.
- - Trays now have a whitelist, allowing them to pick up normal sized foods, bowls, glassware, booze, ect.
- - Easter foods are no longer their own Misc Food Category on the top of the menu.
- - fixed a few typos/capitalization consistency.
- - Mexican Foods are their own Subcategory.
- - Donuts are their own Subcategory
- - Moved Sweets from Misc Food in with Pies. Renamed to Pies & Sweets
- - BROOM
- - Janitor Vendor now has gear for two Janitors.
-
- PersianXerxes updated:
-
- - SMES and PACMAN attached to gulag Security to power electrified windows remove: Removed Sec vendor from gulag Security
- - Separation of gulag and public mining
- - Better clarified the comment explaining the contraband tag.
- - Cargo nuclear defusal kits now require an emag'd drop pod console to be purchased.
- - Added Kilo Station
- - Adjusts Kilo Station to be more in line with Citadel standards
- - Added area icons required to make Kilo Station editable on Citadel code
- - Fixed a reagent container on Kilo pointing to a nonexistent reagent
- - Adds Kilo Station to the maps config file, does not fix Meta Station's population requirement
-
- Psody-Mordheim updated:
-
- - You can now make synth-flesh with synthetic blood.
- - You can now make synthetic blood via mixing saline glucose, iron, stable plasma and heating it to 350 temp.
- - You can mix synthetic blood and cryoxadone to create synth-meat in addition to normal blood.
- - Disfiguration Symptom.
- - Deoxyribonucleic Acid Saboteur Symptom.
- - Polyvitiligo Symptom.
- - Revitiligo Symptom.
- - Vitiligo Symptom.
-
- Putnam3145 updated:
-
- - Added logging to various consent things.
- - Lots of new traitor objectives
- - gender change potion now respects prefs
- - Hypno prefs work better.
- - Panic bunker is now round-to-round persistent
- - Relief valve now has a TGUI-next UI
- - Atmos reaction priority works now.
- - map voting doesn't suck anymore
- - Dynamic now defaults to "classic" storyteller instead of just failing if the vote didn't choose a storyteller.
- - antag quirk blacklisting works now
- - default should be... default
- - all supermatter damage is now hardcapped
- - Supermatter sabotage objective no longer shows up with no supermatter
- - Mining vendors no longer fail and eat your points iff you have precisely enough points to pay for an item
- - Licking pref
- - Fixed IRV.
- - Runtime if nobody has a chaos pref set
- - IRV fixed... again
- - temporary flavor text can now be of reasonable length
- - Shooting the supermatter now adds to the supermatter's power. CO2 setups beware!
- - Logging for renaming
-
- Raiq & Linzolle updated:
-
- - Bone bow - Ash walkers crafting , bone arrows - Ash walkers crafting, silk string used in bow crafting, harden arrows - Ash walkers crafting, ash walker only crafting book, basic pipe bow, and bow & arrow selling. Quivers for ash walkers as well, just to hold some arrows well out on the hunt!
-
- Seris02 updated:
-
- - tweaked the way the SM works
- - custom reagent pie smite
- - hijack implant
- - changed mentions of the issilion proc to hasSiliconAccessInArea based on what the proc is used for
- - recipe for mammal mutation toxin
- - polychromic winter coat
- - thief's gloves
- - crushing magboots
- - golden plastitanium toolbox being actually plastitanuium
- - character slot amount
- - rebalanced rising bass
- - string highlighting whitespace
- - glitch with PKA
- - meteor hallucinations (again)
- - Added naked hallucination
- - crowbarring manifests off crates
- - makes RCDs cost a better amount
- - apc icons
- - rest hotkey
- - hsl instead of sum of rgb for spraycan lum check
- - bloodcrawl's cooldown
-
- ShadeAware updated:
-
- - Craftable Switchblades, a weaker subtype of normal switchblades that can be crafted using a Kitchen Knife, Modular Receiver, Rifle Stock and some Cable Coil. Requires a welder to complete.
- - You can now actually craft Switchblades.
- - Switchblades no longer regain their old Makeshift sprite after retracting if you've made them fancy with Silver.
- - The Captain's Wardrobe, a special one-of-a-kind and ID-locked wardrobe for the Captain that holds all of their snowflakey gear. Remove: Snowflake gear from the Captain's locker, since now it has its own vendor.
-
- Tlaltecuhtli, ported by Hatterhat updated:
-
- - Ripley, Firefighter, Odysseus and H.O.N.K. mechs now also use scanning modules and capacitors on construction. This means that they also gain reduced power consumption and EMP protection from higher-tier stock parts.
-
- Trilbyspaceclone updated:
-
- - Vault hallway door being all access
- - Updates change logs
- - Crafts are now made of plasteel and can be made with 5 sheets
- - Takes away NT's connections to the Aliens that run the Syndicats
- - Carps have evolved to take more damage
- - restock crates for each vender
- - restock units for all station venders
- - Sec-vender missing icon
- - Box station captain office issues maping: Gulag on box can now be accessed
- - Alien stools and chairs
- - Bone armor/Dagger are now crafting from bones rather then crafting menu
- - Firing pins that only works when not on station
- - Medical locked crates
- - Russian gear crates have less gear in some cases but all will cost more
- - Medical locked crates that were not locked
- - Crates that were out of date are corrected
- - Heads of staff have been better screened by NT before being promoted
- - The suit full of spiders also known as a ninja now is a tactical turtleneck
- - The Wiznerds now dont have suits set to max
- - Meat wheat no longer has blood
- - Flat guns can no longer be suppressed
- - replaced stickmans .45 caliber with 10mm, for consistency.
- - Meatwheat and Oats now have rarity
- - Oats now have at lest 50% more flour in them
- - BDM now uses a PKA rather then a normal KA
- - Gang tower shield is no longer transparent
- - Cosmic winter coat now glows like the bedsheet, and holds normal winter coat gear
- - Express console is now logging what it buys, like the normal console should
- - Crabs are now made of crab meat.
- - AIs now understand the old ways of drunken dwarfs
- - Removes some armored Russian hats from box station round start
- - Doner items spawning
- - Engi/Sec Trek suit no longer has 10% melee protection
- - IPC hearts are now made of robomeat and roboblood thats emp proof. Heals and is all and all just like an normal heart
- - All robotic organs now have an animation.
- - IPC's now organs now look like robotic ones, even tho thats not the case game wise
- - Added a new bee themed bar sign
- - Makes plywood chair not look as bad.
- - corndog sprite being miss-spelled
- - Ash from land of lava now is useable for sandstone
- - Peach cake slices are no long made by mimes
-
- Tupinambis updated:
-
- - the portion of laws that require harm prevention by silicons has been removed.
- - silicon_laws.txt config file is required to be modified for full implementation.
- - masks no longer improperly stick out of helmets when they should be hidden.
- - Status Displays should now update correctly.
- - stunbatons now take 4 hits to inflict hard crit, up from 3.
- - stunbatons no longer disarm targets.
-
- Yakumo Chen updated:
-
- - Rings for your fingers!
- - New cargo crates and loadout options to bling your rings!
-
- YakumoChen updated:
-
- - Observe is back in the OOC tab
- - Rings look nicer. Sprites used from RP.
- - Ring on-hands. Diamond rings sparkle!
- - You can now propose using a diamond ring in your hand.
- - Legion skulls behave like bees!!!!
-
- Zellular updated:
-
- - Movement state for pupdozer and its decals
- - Tweaked the movement state for the pupdozer's eyes
-
- ancientpower updated:
-
- - Fixes an error in pH strips' feedback message.
- - Ported drink sliding from /vg/station.
- - Fixes color mismatching with the "genitals use skintone" preference.
- - Bunny ear style for humanoid species.
- - Ghosts are now literate.
-
- bunny232 updated:
-
- - Changes the simple animal sentience event from the xenomorph preference to sentience potion preference.
-
- coiax updated:
-
- - Admin and event only pair pinpointers! They come in a box of two, and each pinpointer will always point at its corresponding pair. Aww.
-
- deathride58 updated:
-
- - Spacemen no longer run at lightspeed on local servers.
-
- kappa-sama updated:
-
- - the plant dudes can actually make plant disks now
-
- keronshb updated:
-
- - Added repairable turrets
- - Adds Tiny Fans to the pirate ship
- - changes some reinforced windows to plastinanium pirate windows
- - made the pirate shuttle + turrets bomb resistant
- - made most pirate machines + consoles indestructible
- - increased pirate turret health
- - Adds the CogChamp drink and Sprite
- - Added burn and knockback to stunhand during HALOS on cult.
- - fixed accelerated regeneration nanites
- - fixed mechanical repair nanites
- - fixed bio reconstruction nanites
-
- kevinz000 updated:
-
- - Custom snowflake plushies are now in config rather than code.
- - Abductor mindsnapping (aka abductee objectives) can now be "cured" with brain surgery.
- - Shuttle hijacking has been completely reworked. Alt-click the shuttle as a hijack-capable mind (so traitors, and especially traitors with hijack) to begin or continue a hacking process.
- - A good amount of the blood RGB rework was cleaned up/reverted, with some notable gameplay changes including: Gibs and blood not having max blood by default (no more easy rampages, cultists), infinite gib streaking, etc etc.
- - meteor waves are now directional and announces the direction on the command report.
- - CTF CLAYMORES
- - shoves buffed, now shoving into a wall twice rapidly will also disarm their weapon.
- - traitor+bro gamemode minimum population set to 25 until there can be more in depth configuration systems for gamemodes.
- - no more bluespace skittish locker diving,
- - moths now have unique laughs and can *chitter.
- - nuke explosion is now full dev radius for anti lag purposes
- - Gangs can now only tag with a gang uplink bought spraycan.
- - dueling pistol accesses have been changed to be more accessible.
- - mechs no longer have admin logs flooding into IC control console log viewing
- - Guncode and energy guns have been refactored a bit.
- - You can now combat mode ight click on an energy gun to attempt to switch firing modes. This only works on guns without right click functions overridden.
- - shoes can now fit magpistols again.
- - Projectiles now always hit chest if targeting chest, snipers have 100% targeting zone accuracy. All other cases are unchanged.
- - The lawyer's PDA cartridge has been rebranded to something more accurate to its true nature.
- - Refactored ghostreading/etc
- - Cyborgization will now de-gang people, even gangheads.
- - reactive repulse armor now has an item limit
- - beam rifle runtime fix during aiming_beam
- - fail2topic runtime fix: taking out an ip while incrementing index resulted in accessing the next-next entry instead of the next and results in out of bound errors.
- - gravity gun repulse and chaos now work in all angles, rather than just basic cardinals and diagonals. fun.
- - Public autolathes can no longer be hacked.
- - Energy weapons now once again have their lens in contents.
- - pais are no longer muted for literally a whole hour on emp.
- - auto profiler subsystem from tg
- - Brig cells now are more accurate by using timeofday instead of realtime
- - Cryo now actually transfers reagents at tier 4 on enter rather than every 80 machine fire()-process()s regardless of if it was "reset" by open/close.
- - cmo now gets advanced surgery drapes that techweb-sync for advanced surgeries without an operating console.
- - ctf claymores now actually spawn (and fit).
- - STOP_PROCESSING now removes from currentrun to prevent another process cycle from happening where it shouldn't.
- - hand teleporters now require 30 deciseconds of still movement by the user to dispel portals. there's a beam effect too.
- - Sort of a bugfix but cult blood magic and all guns now respect stamina softcrit.
- - Organ healing rate doubled. Organ decay rate halved to match its define (15 minutes for full decay, so at around 8-10 minutes it'll be really fucked).
- - Storage now caches max screen size and only stores when being opened by a non ghost, meaning ghosts will no longer distort living player screens when viewing storage.
- - Stunbatons changed yet again.
- - the game's built in autoclicker aka CanMobAutoclick no longer triggers client/Click()'s anti clickspam guard.
- - pais can no longer bodyblock bullets
- - pai radio short changed to 3 minutes down from 5
- - pais are no longer fulltile click opacity.
- - vampire "immortal haste" has been reworked to be more reliable and consistent.
- - hand teles use a less atrocious beam
-
- necromanceranne updated:
-
- - Ebows now disarm people hit by them.
- - Ebows now do 60 stamina damage on hit.
- - Ebows no longer inflict drowsiness
- - Miniature ebows do 15 toxin damage, up from 8.
- - Ebows have considerably shorter knockdowns.
- - Ebows now make you slur rather than stutter.
- - Large ebows are now heavy and bulky.
- - You can no longer order spinfusors or their ammo from cargo.
- - Removed the formal security officer jacket from the secdrobe
- - formal security jackets are now armor vests
- - Bullets causing bleed rates equal to unmitigated damage through all forms of defense.
- - Reverted #9092, crew mecha no longer spawn with tracking beacons.
- - [Port] Mecha ballistics weapons now require ammo created from an Exosuit Fabricator or the Security Protolathe, though they will start with a full magazine and in most cases enough for one full reload. Reloading these weapons no longer chunks your power cell. Clown (and mime) mecha equipment have not changed.
- - [Port] The SRM-8 Missile Launcher has been replaced with the BRM-6 Breaching Missile Launcher in techwebs (Nukie Mauler remains equipped with the SRM-8).
- - [Port] Both Missile Launchers and the Clusterbang Launcher do not have an ammo cache, and cannot be reloaded by the pilot. Once the initial loaded ammo has been spent, you can use the appropriate ammo box to load the weapon directly.
- - [Port] Utility mechs that have a clamp equipped can load ammo from their own cargo hold into other mechs.
- - [Port] Nuke Ops can purchase spare ammo duffel bags for their mecha weapons, should they run low.
- - Literally unclickability with a cham projector
-
- nemvar updated:
-
- - Slight changes the self-repair borg module. It no longer references the borg that owns it.
- - Trash from food now gets generated at the location of the food item, instead of in the hands of the eater.
- - Changed mob biotypes from lists to flags.
-
- r4d6 updated:
-
- - Added a dwarf language
- - Added more engines
- - RPD subcategories and preview icons reorganized.
- - RPD now starts with painting turned off, hitting pipes with build and no paint will target the turf underneath instead. Bye bye turf pixelhunting.
- - Made dwarves into a roundstart races
- - Meteor Timer back to 3-5 minutes
- - Mining no longer lead to spess
- - Added Plasteel Pickaxe
- - Added Titanium Pickaxe
- - fixed a missing tile
-
- tralezab, bandit, Skoglol updated:
-
- - The mime's PDA messages are silent now!
- - 30 new emoji have been added. Mime buff, mime now OP.
-
GoonStation 13 Development Team
diff --git a/icons/obj/food/burgerbread.dmi b/icons/obj/food/burgerbread.dmi
index b1d78fa078..5ee3db49e9 100644
Binary files a/icons/obj/food/burgerbread.dmi and b/icons/obj/food/burgerbread.dmi differ
diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm
index e0e1b37a3d..69d2c791e7 100644
--- a/modular_citadel/code/modules/arousal/genitals.dm
+++ b/modular_citadel/code/modules/arousal/genitals.dm
@@ -150,7 +150,8 @@
aroused_state = FALSE
/obj/item/organ/genital/on_life()
- if(!reagents || !owner)
+ . = ..()
+ if(!reagents || !.)
return
reagents.maximum_volume = fluid_max_volume
if(fluid_id && CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION))