diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 1c9b10c7fc8..2a1b535fe82 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -798,7 +798,7 @@ About the new airlock wires panel: src.do_animate("spark") src.stat |= BROKEN var/check = src.open(1) - src.visible_message("\The [H] slices \the [src]'s controls[check ? ", ripping it open!" : ", breaking it!"]", "You slice \the [src]'s controls[check ? ", ripping it open!" : ", breaking it!"]", "You hear something sparking.") + H.visible_message("\The [H] slices \the [src]'s controls[check ? ", ripping it open!" : ", breaking it!"]", "You slice \the [src]'s controls[check ? ", ripping it open!" : ", breaking it!"]", "You hear something sparking.") return if(src.p_open) user.set_machine(src) diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index d888dedaa18..2035570e7d4 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -21,9 +21,6 @@ var/icon_state_closed = null var/icon_state_closing = null var/damage = BLAST_DOOR_CRUSH_DAMAGE - - layer = 3.3 - open_layer = 3.3 closed_layer = 3.4 // Above airlocks when closed var/id = 1.0 dir = 1 diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 69c839ede6b..39c95d7057e 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -95,7 +95,7 @@ if(href_list["warnacknowledge"]) var/queryid = text2num(href_list["warnacknowledge"]) warnings_acknowledge(queryid) - + if(href_list["notifacknowledge"]) var/queryid = text2num(href_list["notifacknowledge"]) notifications_acknowledge(queryid) @@ -660,10 +660,13 @@ if (config.ipintel_email) var/datum/ipintel/res = get_ip_intel(address) if (config.ipintel_rating_kick && res.intel >= config.ipintel_rating_kick) - message_admins("Proxy Detection: [key_name_admin(src)] IP intel rated [res.intel*100]% likely to be a proxy/VPN. They are being kicked because of this.") - log_admin("Proxy Detection: [key_name_admin(src)] IP intel rated [res.intel*100]% likely to be a proxy/VPN. They are being kicked because of this.") - to_chat(src, "Usage of proxies is not permitted by the rules. You are being kicked because of this.") - del(src) + if (!holder) + message_admins("Proxy Detection: [key_name_admin(src)] IP intel rated [res.intel*100]% likely to be a proxy/VPN. They are being kicked because of this.") + log_admin("Proxy Detection: [key_name_admin(src)] IP intel rated [res.intel*100]% likely to be a proxy/VPN. They are being kicked because of this.") + to_chat(src, "Usage of proxies is not permitted by the rules. You are being kicked because of this.") + del(src) + else + message_admins("Proxy Detection: [key_name_admin(src)] IP intel rated [res.intel*100]% likely to be a Proxy/VPN.") else if (res.intel >= config.ipintel_rating_bad) message_admins("Proxy Detection: [key_name_admin(src)] IP intel rated [res.intel*100]% likely to be a Proxy/VPN.") ip_intel = res.intel diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 87ed8151ec3..6eb74ee1fc5 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -30,13 +30,16 @@ skipbody |= wear_mask.body_parts_covered skipbody |= (wear_mask.body_parts_covered & FACE) ? HEAD : 0 // same as above skipface |= wear_mask.flags_inv & HIDEFACE - + if(w_uniform) skipbody |= w_uniform.body_parts_covered - + if(gloves) skipbody |= gloves.body_parts_covered + if(shoes) + skipbody |= shoes.body_parts_covered + var/list/msg = list("*---------*\nThis is ") var/datum/gender/T = gender_datums[gender] @@ -274,7 +277,7 @@ wound_flavor_text["[organ_descriptor]"] = "[T.He] [T.has] a stump where [T.his] [organ_descriptor] should be.\n" else continue - + for(var/obj/item/organ/external/temp in organs) if(temp) if(skipbody & temp.body_part) diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index df2f62cffce..3395edecfea 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -789,6 +789,8 @@ to_chat(src,"You incorporate \the [O] into your mass, repairing damage to your structure.") adjustBruteLoss(-10*O.amount) adjustFireLoss(-10*O.amount) + if(!(species.flags & NO_BLOOD)) + vessel.add_reagent("blood",20*O.amount) qdel(O) last_special = world.time + 50 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d868717a1a8..34bae1a3693 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -951,7 +951,7 @@ else if(overeatduration > 1) overeatduration -= 2 //doubled the unfat rate - + // hydration decrease if(max_hydration > 0) if (hydration > 0 && stat != 2) @@ -1196,16 +1196,36 @@ if((life_tick % 3 == 0)) if(nutrition_icon) var/nut_factor = max(0,min(nutrition / max_nutrition,1)) - var/nutrition_icons = 5 //Misnomer, basically the highest nutrition icon value. - var/new_val = "nutrition[nutrition_icons - round(nut_factor*nutrition_icons)]" + var/nut_icon = 5 //5 to 0, with 5 being lowest, 0 being highest + if(nut_factor >= CREW_NUTRITION_OVEREATEN) + nut_icon = 0 + else if (nut_factor >= CREW_NUTRITION_FULL) + nut_icon = 1 + else if (nut_factor >= CREW_NUTRITION_SLIGHTLYHUNGRY) + nut_icon = 2 + else if (nut_factor >= CREW_NUTRITION_HUNGRY) + nut_icon = 3 + else if (nut_factor >= CREW_NUTRITION_VERYHUNGRY ) + nut_icon = 4 + var/new_val = "nutrition[nut_icon]" if (nutrition_icon.icon_state != new_val) nutrition_icon.icon_state = new_val if(hydration_icon) var/hyd_factor = max(0,min(hydration / max_hydration,1)) - var/hydration_icons = 5 //Misnomer, basically the highest thirst icon value. - var/new_val = "thirst[hydration_icons - round(hyd_factor*hydration_icons)]" + var/hyd_icon = 5 + if(hyd_factor >= CREW_HYDRATION_OVERHYDRATED) + hyd_icon = 0 + else if(hyd_factor >= CREW_HYDRATION_HYDRATED) + hyd_icon = 1 + else if(hyd_factor >= CREW_HYDRATION_SLIGHTLYTHIRSTY) + hyd_icon = 2 + else if(hyd_factor >= CREW_HYDRATION_THIRSTY) + hyd_icon = 3 + else if(hyd_factor >= CREW_HYDRATION_VERYTHIRSTY) + hyd_icon = 4 + var/new_val = "thirst[hyd_icon]" if (hydration_icon.icon_state != new_val) - hydration_icon.icon_state = new_val + hydration_icon.icon_state = new_val if(pressure) var/new_pressure = "pressure[pressure_alert]" @@ -1653,7 +1673,7 @@ if (prob(1.5)) src << span("warning", "You feel hungry and exhausted, eat something to regain your energy!") return - + if (hydration <= 0) if (prob(1.5)) src << span("warning", "You feel thirsty and exhausted, drink something to regain your energy!") diff --git a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm b/code/modules/mob/living/carbon/human/species/outsider/shadow.dm index 6c9464c5ba6..2727b217e94 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/shadow.dm @@ -89,6 +89,12 @@ move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + max_nutrition_factor = -1 + + max_hydration_factor = -1 + + hud_type = /datum/hud_data/construct + /datum/species/shadow/handle_death(var/mob/living/carbon/human/H) spawn(1) new /obj/effect/decal/cleanable/ash(H.loc) diff --git a/code/modules/mob/living/carbon/human/species/outsider/undead.dm b/code/modules/mob/living/carbon/human/species/outsider/undead.dm index 5a33e870199..55fbf6ed6be 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/undead.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/undead.dm @@ -73,6 +73,12 @@ sprint_speed_factor = 0.3 exhaust_threshold = 0 //No oxyloss, so zero threshold + max_nutrition_factor = -1 + + max_hydration_factor = -1 + + hud_type = /datum/hud_data/construct + /mob/living/carbon/human/apparition/Initialize(mapload) . = ..(mapload, "Apparition") @@ -110,6 +116,12 @@ sprint_speed_factor = 0.3 exhaust_threshold = 0 //No oxyloss, so zero threshold + max_nutrition_factor = -1 + + max_hydration_factor = -1 + + hud_type = /datum/hud_data/construct + /datum/species/apparition/handle_death(var/mob/living/carbon/human/H) set waitfor = 0 sleep(1) @@ -175,7 +187,11 @@ sprint_speed_factor = 0.3 exhaust_threshold = 0 //No oxyloss, so zero threshold - inherent_verbs = list(/mob/living/carbon/human/proc/darkness_eyes) + inherent_verbs = list(/mob/living/carbon/human/proc/darkness_eyes, /mob/living/proc/devour) + + allowed_eat_types = TYPE_ORGANIC | TYPE_HUMANOID + + gluttonous = TRUE /datum/species/zombie/handle_post_spawn(var/mob/living/carbon/human/H) H.mutations.Add(CLUMSY) diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm index 630b81178d1..a1583f5e09d 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -154,7 +154,15 @@ /datum/unarmed_attack/bite/infectious/apply_effects(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/armour,var/attack_damage,var/zone) ..() - if(prob(25)) + if(target && target.stat == DEAD) + return + if(target.internal_organs_by_name["zombie"]) + to_chat(user, "You feel that \the [target] has been already infected!") + + var/infection_chance = 80 + var/armor = target.run_armor_check(zone,"melee") + infection_chance -= armor + if(prob(infection_chance)) if(target.reagents) target.reagents.add_reagent("trioxin", 10) diff --git a/code/modules/mob/living/carbon/human/species/species_hud.dm b/code/modules/mob/living/carbon/human/species/species_hud.dm index bb5655de6bb..1c9a6e03f04 100644 --- a/code/modules/mob/living/carbon/human/species/species_hud.dm +++ b/code/modules/mob/living/carbon/human/species/species_hud.dm @@ -77,7 +77,11 @@ "mask" = list("loc" = ui_shoes, "name" = "Mask", "slot" = slot_wear_mask, "state" = "mask", "toggle" = 1), "back" = list("loc" = ui_sstore1, "name" = "Back", "slot" = slot_back, "state" = "back") ) - - -/datum/hud_data/ipc + + +/datum/hud_data/ipc has_hydration = 0 + +/datum/hud_data/construct + has_hydration = 0 + has_nutrition = 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station/golem.dm b/code/modules/mob/living/carbon/human/species/station/golem.dm index b2330e867a0..5c2469fe1f1 100644 --- a/code/modules/mob/living/carbon/human/species/station/golem.dm +++ b/code/modules/mob/living/carbon/human/species/station/golem.dm @@ -68,6 +68,14 @@ remains_type = /obj/effect/decal/cleanable/ash + radiation_mod = 0 + + max_nutrition_factor = -1 + + max_hydration_factor = -1 + + hud_type = /datum/hud_data/construct + var/turn_into_materials = TRUE //the golem will turn into materials upon its death var/golem_designation = "coal" //used in the creation of the name @@ -739,6 +747,8 @@ inherent_verbs = list(/mob/living/carbon/human/proc/consume_material, /mob/living/carbon/human/proc/breath_of_life) + bodytype = "Human" + breath_pressure = 16 breath_type = "oxygen" poison_type = "phoron" @@ -768,6 +778,14 @@ golem_designation = "flesh" + radiation_mod = 1 + + hud_type = /datum/hud_data + + max_nutrition_factor = 1 + + max_hydration_factor = 1 + /datum/species/golem/homunculus/handle_death(var/mob/living/carbon/human/H) if(turn_into_materials) set waitfor = 0 diff --git a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm index 6006321e065..25424df3997 100644 --- a/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm +++ b/code/modules/mob/living/carbon/human/species/xenomorphs/alien_species.dm @@ -88,6 +88,10 @@ move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + max_nutrition_factor = -1 + + max_hydration_factor = -1 + var/alien_number = 0 var/caste_name = "creature" // Used to update alien name. var/weeds_heal_rate = 1 // Health regen on weeds. diff --git a/code/modules/mob/living/carbon/metroid/items.dm b/code/modules/mob/living/carbon/metroid/items.dm index bb3e3a5fdc0..07dfc440c82 100644 --- a/code/modules/mob/living/carbon/metroid/items.dm +++ b/code/modules/mob/living/carbon/metroid/items.dm @@ -289,7 +289,9 @@ var/mob/living/carbon/human/G = new(src.loc) G.key = ghost.key - addtimer(CALLBACK(G, /mob/living/carbon/human.proc/set_species, golem_type), 0) + G.set_species(golem_type) + G.name = G.species.get_random_name() + G.real_name = G.species.get_random_name() to_chat(G, "You are a golem. Serve [user], and assist them in completing their goals at any cost.") qdel(src) diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm index 98ca49ced73..ec02500f297 100644 --- a/code/modules/mob/living/simple_animal/constructs/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs/constructs.dm @@ -197,8 +197,8 @@ health_prefix = "artificer" response_harm = "viciously beaten" harm_intent_damage = 5 - melee_damage_lower = 5 - melee_damage_upper = 5 + melee_damage_lower = 10 + melee_damage_upper = 10 attacktext = "rammed" speed = 0 environment_smash = 1 diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index eec47baf736..a836e6fb341 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -668,8 +668,8 @@ mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj) /mob/living/simple_animal/can_fall() if (stat != DEAD && flying) return FALSE - else - return TRUE + + return ..() /mob/living/simple_animal/can_ztravel() if (stat != DEAD && flying) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index c5dd2409f07..03026f58edd 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -1190,16 +1190,16 @@ proc/is_blind(A) var/hydration_mul = hydration/max_hydration if(hydration_mul >= CREW_HYDRATION_OVERHYDRATED) - return minscale + ( (maxscale - minscale) * 0.75) + return minscale + ( (maxscale - minscale) * 0.66) if(hydration_mul <= CREW_HYDRATION_DEHYDRATED) - return minscale + ( (maxscale - minscale) * 0.25) + return minscale if(hydration_mul <= CREW_HYDRATION_VERYTHIRSTY) - return minscale + ( (maxscale - minscale) * 0.5) + return minscale + ( (maxscale - minscale) * 0.33) if(hydration_mul <= CREW_HYDRATION_THIRSTY) - return minscale + ( (maxscale - minscale) * 0.75) + return minscale + ( (maxscale - minscale) * 0.66) return minscale + ( (maxscale - minscale) * 1) @@ -1214,16 +1214,16 @@ proc/is_blind(A) var/nutrition_mul = nutrition/max_nutrition if(nutrition_mul >= CREW_NUTRITION_OVEREATEN) - return minscale + ( (maxscale - minscale) * 0.75) + return minscale + ( (maxscale - minscale) * 0.66) if(nutrition_mul <= CREW_NUTRITION_STARVING) - return minscale + ( (maxscale - minscale) * 0.25) + return minscale if(nutrition_mul <= CREW_NUTRITION_VERYHUNGRY) - return minscale + ( (maxscale - minscale) * 0.5) + return minscale + ( (maxscale - minscale) * 0.33) if(nutrition_mul <= CREW_NUTRITION_HUNGRY) - return minscale + ( (maxscale - minscale) * 0.75) + return minscale + ( (maxscale - minscale) * 0.66) return minscale + ( (maxscale - minscale) * 1) diff --git a/code/modules/organs/subtypes/parasite.dm b/code/modules/organs/subtypes/parasite.dm index ad8b077caeb..7cb71de548a 100644 --- a/code/modules/organs/subtypes/parasite.dm +++ b/code/modules/organs/subtypes/parasite.dm @@ -251,9 +251,11 @@ if(prob(10)) if(!isundead(owner)) if(ishuman_species(owner)) + for(var/datum/language/L in owner.languages) + owner.remove_language(L.name) owner << "You feel life leaving your husk, but death rejects you..." playsound(src.loc, 'sound/hallucinations/far_noise.ogg', 50, 1) - owner << " All that is left is a cruel hunger for the flesh of the living, and the desire to spread this infection. You must consume all the living!" + owner << "All that is left is a cruel hunger for the flesh of the living, and the desire to spread this infection. You must consume all the living!" owner.set_species("Zombie") else owner.adjustToxLoss(50) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index ff6d9bff044..6a6c8dfe44d 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm @@ -164,7 +164,9 @@ description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen." reagent_state = LIQUID color = "#0064C877" - metabolism = REM * 10 + metabolism = REM * 2 + ingest_met = REM * 10 + touch_met = REM * 30 taste_description = "water" glass_icon_state = "glass_clear" @@ -234,10 +236,9 @@ if(istype(M) && !istype(M, /mob/abstract)) M.color = initial(M.color) -/datum/reagent/water/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) - if(istype(M, /mob/living/carbon/slime)) - var/mob/living/carbon/slime/S = M - S.adjustToxLoss(8 * removed) // Babies have 150 health, adults have 200; So, 10 units and 13.5 +/datum/reagent/water/affect_touch(var/mob/living/carbon/slime/S, var/alien, var/removed) + if(istype(S)) + S.adjustToxLoss( volume * (removed/REM) * 0.23 ) if(!S.client) if(S.Target) // Like cats S.Target = null diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm index db5ab8b5933..3f618ed9ece 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm @@ -94,6 +94,7 @@ description = "An abstract type you shouldn't be able to see." reagent_state = LIQUID color = "#404030" + ingest_met = REM * 5 var/hydration_factor = 1 //How much hydration to add per unit. var/nutriment_factor = 0.5 //How much nutrition to add per unit. @@ -134,7 +135,7 @@ /datum/reagent/alcohol/affect_ingest(mob/living/carbon/M, alien, removed) if(alien != IS_DIONA) - M.intoxication += (strength / 100) * removed + M.intoxication += (strength / 100) * removed * 3.5 if (druggy != 0) M.druggy = max(M.druggy, druggy) @@ -154,7 +155,6 @@ name = "Ethanol" id = "ethanol" description = "A well-known alcohol with a variety of applications." - ingest_met = 0.5 flammability_divisor = 10 taste_description = "pure alcohol" @@ -201,7 +201,7 @@ description = "A fairly harmless alcohol that has intoxicating effects on certain species." reagent_state = LIQUID color = "#404030" - ingest_met = 0.17 //Extremely slow metabolic rate means the liver will generally purge it faster than it can intoxicate you + ingest_met = REM * 0.5 //Extremely slow metabolic rate means the liver will generally purge it faster than it can intoxicate you flammability_divisor = 7 //Butanol is a bit less flammable than ethanol taste_description = "alcohol" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 260526548e7..dc36636f4e5 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -57,7 +57,8 @@ description = "All the vitamins, minerals, and carbohydrates the body needs in pure form." taste_mult = 4 reagent_state = SOLID - metabolism = REM * 4 + metabolism = REM * 2 + ingest_met = REM * 4 var/nutriment_factor = 12 // Per removed in digest. var/hydration_factor = 0 // Per removed in digest. var/blood_factor = 6 @@ -689,6 +690,7 @@ id = "drink" description = "Uh, some kind of drink." reagent_state = LIQUID + metabolism = REM * 10 color = "#E78108" var/nutrition = 0 // Per unit var/hydration = 8 // Per unit diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index aaa38340513..527e99a51e8 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -311,7 +311,7 @@ description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" reagent_state = LIQUID color = "#A5F0EE" - touch_met = 50 + touch_met = REM * 10 taste_description = "sourness" /datum/reagent/space_cleaner/touch_obj(var/obj/O) @@ -324,9 +324,6 @@ S.dirt = 0 T.clean_blood() - for(var/mob/living/carbon/slime/M in T) - M.adjustToxLoss(rand(5, 10)) - /datum/reagent/space_cleaner/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) if(M.r_hand) M.r_hand.clean_blood() @@ -354,6 +351,17 @@ return M.clean_blood() + + if(istype(M,/mob/living/carbon/slime)) + var/mob/living/carbon/slime/S = M + S.adjustToxLoss( volume * (removed/REM) * 0.5 ) + if(!S.client) + if(S.Target) // Like cats + S.Target = null + ++S.Discipline + if(dose == removed) + S.visible_message("[S]'s flesh sizzles where the water touches it!", "Your flesh burns in the water!") + /datum/reagent/lube name = "Space Lube" id = "lube" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index 05a260d782d..25a49c9a328 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -119,7 +119,7 @@ description = "Cardox is an mildly toxic, expensive, NanoTrasen designed cleaner intended to eliminate liquid phoron stains from suits." reagent_state = LIQUID color = "#EEEEEE" - metabolism = 0.6 // 100 seconds for 30 units to metabolise. + metabolism = 0.3 // 100 seconds for 30 units to metabolise. taste_description = "cherry" conflicting_reagent = /datum/reagent/toxin/phoron strength = 1 @@ -268,7 +268,7 @@ reagent_state = SOLID color = "#CCCCCC" taste_description = "salty dirt" - metabolism = REM * 10 + touch_met = REM * 10 breathe_mul = 0 /datum/reagent/toxin/fertilizer/monoammoniumphosphate/touch_turf(var/turf/simulated/T) @@ -301,12 +301,13 @@ /datum/reagent/toxin/fertilizer/monoammoniumphosphate/affect_touch(var/mob/living/carbon/slime/S, var/alien, var/removed) if(istype(S)) - S.adjustToxLoss(8 * removed) - if(!S.client && S.Target) - S.Target = null - ++S.Discipline + S.adjustToxLoss( volume * (removed/REM) * 0.23 ) + if(!S.client) + if(S.Target) // Like cats + S.Target = null + ++S.Discipline if(dose == removed) - S.visible_message("[S]'s flesh sizzles where the liquid touches it!", "Your flesh burns in the liquid!") + S.visible_message("[S]'s flesh sizzles where the foam touches it!", "Your flesh burns in the foam!") /datum/reagent/toxin/plantbgone name = "Plant-B-Gone" @@ -792,14 +793,32 @@ taste_description = "old eggs" metabolism = REM unaffected_species = IS_DIONA | IS_MACHINE | IS_UNDEAD + affects_dead = TRUE /datum/reagent/toxin/trioxin/affect_blood(var/mob/living/carbon/M, var/removed) ..() if(istype(M,/mob/living/carbon/human)) var/mob/living/carbon/human/H = M - if(M.reagents.has_reagent("spaceacillin", 15)) + + if(H.reagents.has_reagent("spaceacillin", 15)) return + if(!H.internal_organs_by_name["zombie"] && prob(15)) var/obj/item/organ/external/affected = H.get_organ("chest") var/obj/item/organ/parasite/zombie/infest = new() - infest.replaced(H, affected) \ No newline at end of file + infest.replaced(H, affected) + + if(ishuman_species(H)) + if(!H.internal_organs_by_name["brain"]) //destroying the brain stops trioxin from bringing the dead back to life + return + + if(H && H.stat != DEAD) + return + + for(var/datum/language/L in H.languages) + H.remove_language(L.name) + + H.set_species("Zombie") + H.revive() + playsound(H.loc, 'sound/hallucinations/far_noise.ogg', 50, 1) + to_chat(H,"You return back to life as the undead, all that is left is the hunger to consume the living and the will to spread the infection.") diff --git a/html/changelog.html b/html/changelog.html index c5e2ca67af7..6c0bedcc5c1 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,111 @@ -->
+

08 October 2018

+

PoZe updated:

+ + +

07 October 2018

+

BurgerBB updated:

+ + +

06 October 2018

+

Alberyk updated:

+ +

Alberyk, AndurilFlame, Bauser, DronzTheWolf updated:

+ +

Arrow768 updated:

+ +

BurgerBB updated:

+ +

Drago updated:

+ +

Furrycactus updated:

+ +

Lord Fowl updated:

+ +

PoZe updated:

+ +

PoZe, ben10083 updated:

+ +

dapocalypse updated:

+ +

01 October 2018

PoZe updated: