Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into turfs

# Conflicts:
#	code/game/objects/items.dm
#	icons/turf/floors/plating.dmi
#	paradise.dme
This commit is contained in:
Mark van Alphen
2019-04-10 21:54:54 +02:00
126 changed files with 2050 additions and 2052 deletions
+1 -1
View File
@@ -218,7 +218,7 @@ var/const/INGEST = 2
/datum/reagents/proc/metabolize(mob/living/M)
if(M)
set_reagent_temp(M.bodytemperature)
temperature_reagents(M.bodytemperature - 30)
// a bitfield filled in by each reagent's `on_mob_life` to find out which states to update
var/update_flags = STATUS_UPDATE_NONE
@@ -765,7 +765,7 @@
/datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/M)
if(M.bodytemperature < 360)
M.bodytemperature = min(360, M.bodytemperature + (50 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
..()
return ..()
/datum/reagent/consumable/ethanol/devilskiss
name = "Devils Kiss"
@@ -819,7 +819,7 @@
/datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/M)
if(M.bodytemperature > 270)
M.bodytemperature = max(270, M.bodytemperature - (20 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
..()
return ..()
/datum/reagent/consumable/ethanol/grog
name = "Grog"
@@ -1178,7 +1178,7 @@
if(prob(25))
holder.remove_reagent(id, 15)
M.fakevomit()
..()
return ..()
/datum/reagent/consumable/ethanol/synthanol/reaction_mob(mob/living/M, method=TOUCH, volume)
if(M.isSynthetic())
@@ -42,7 +42,7 @@
/datum/reagent/consumable/drink/cold/ice/on_mob_life(mob/living/M)
M.bodytemperature = max(M.bodytemperature - 5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0)
..()
return ..()
/datum/reagent/consumable/drink/cold/space_cola
name = "Cola"
@@ -448,7 +448,7 @@
/datum/reagent/consumable/egg/on_mob_life(mob/living/M)
if(prob(3))
M.reagents.add_reagent("cholesterol", rand(1,2))
..()
return ..()
/datum/reagent/consumable/corn_starch
name = "Corn Starch"
@@ -643,9 +643,6 @@
color = "#684435"
taste_message = "burritos"
/datum/reagent/consumable/beans/on_mob_life(mob/living/M)
return ..()
/datum/reagent/consumable/bread
name = "Bread"
id = "bread"
@@ -5,6 +5,7 @@
/datum/reagent/medicine/on_mob_life(mob/living/M)
current_cycle++
holder.remove_reagent(id, (metabolization_rate / M.metabolism_efficiency) * M.digestion_ratio) //medicine reagents stay longer if you have a better metabolism
return STATUS_UPDATE_NONE
/datum/reagent/medicine/hydrocodone
name = "Hydrocodone"
@@ -526,6 +527,7 @@
taste_message = "a delightful numbing"
/datum/reagent/medicine/morphine/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
M.AdjustJitter(-25)
switch(current_cycle)
if(1 to 15)
@@ -534,9 +536,9 @@
if(16 to 35)
M.Drowsy(20)
if(36 to INFINITY)
M.Paralyse(15)
update_flags |= M.Paralyse(15, FALSE)
M.Drowsy(20)
..()
return ..() | update_flags
/datum/reagent/medicine/oculine
name = "Oculine"
@@ -669,7 +671,7 @@
update_flags |= M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
return ..() | update_flags
/datum/reagent/medicine/strange_reagent/reaction_mob(mob/living/M, method=TOUCH, volume)
/datum/reagent/medicine/strange_reagent/reaction_mob(mob/living/M, method = TOUCH, volume)
if(volume < 1)
// gotta pay to play
return ..()
@@ -682,25 +684,19 @@
SM.visible_message("<span class='warning'>[M] seems to rise from the dead!</span>")
if(iscarbon(M))
if(method == INGEST)
if(method == INGEST || (method == TOUCH && prob(25)))
if(M.stat == DEAD)
if(M.getBruteLoss()+M.getFireLoss()+M.getCloneLoss() >= 150)
if(M.getBruteLoss() + M.getFireLoss() + M.getCloneLoss() >= 150)
M.delayed_gib()
return
var/mob/dead/observer/ghost = M.get_ghost()
if(ghost)
to_chat(ghost, "<span class='ghostalert'>A Strange Reagent is infusing your body with life. Return to your body if you want to be revived!</span> (Verbs -> Ghost -> Re-enter corpse)")
window_flash(ghost.client)
ghost << sound('sound/effects/genetics.ogg')
M.visible_message("<span class='notice'>[M] doesn't appear to respond, perhaps try again later?</span>")
if(!M.suiciding && !ghost && !(NOCLONE in M.mutations) && (M.mind && M.mind.is_revivable()))
if(!M.suiciding && !(NOCLONE in M.mutations) && (!M.mind || M.mind && M.mind.is_revivable()))
var/time_dead = world.time - M.timeofdeath
M.visible_message("<span class='warning'>[M] seems to rise from the dead!</span>")
M.adjustCloneLoss(50)
M.setOxyLoss(0)
M.adjustBruteLoss(rand(0,15))
M.adjustToxLoss(rand(0,15))
M.adjustFireLoss(rand(0,15))
M.adjustBruteLoss(rand(0, 15))
M.adjustToxLoss(rand(0, 15))
M.adjustFireLoss(rand(0, 15))
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/necrosis_prob = 40 * min((20 MINUTES), max((time_dead - (1 MINUTES)), 0)) / ((20 MINUTES) - (1 MINUTES))
@@ -715,8 +711,8 @@
O.germ_level = INFECTION_LEVEL_THREE
H.update_body()
M.grab_ghost()
M.update_revive()
M.stat = UNCONSCIOUS
add_attack_logs(M, M, "Revived with strange reagent") //Yes, the logs say you revived yourself.
..()
@@ -759,7 +755,7 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.update_mutations()
..()
return ..()
/datum/reagent/medicine/antihol
name = "Antihol"
@@ -857,6 +853,7 @@
/datum/reagent/medicine/insulin/on_mob_life(mob/living/M)
M.reagents.remove_reagent("sugar", 5)
return ..()
/datum/reagent/medicine/teporone
name = "Teporone"
@@ -873,7 +870,7 @@
M.bodytemperature = max(310, M.bodytemperature - (40 * TEMPERATURE_DAMAGE_COEFFICIENT))
else if(M.bodytemperature < 311)
M.bodytemperature = min(310, M.bodytemperature + (40 * TEMPERATURE_DAMAGE_COEFFICIENT))
..()
return ..()
/datum/reagent/medicine/haloperidol
name = "Haloperidol"
@@ -916,6 +913,7 @@
taste_message = "sleepiness"
/datum/reagent/medicine/ether/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
M.AdjustJitter(-25)
switch(current_cycle)
if(1 to 30)
@@ -924,9 +922,9 @@
if(31 to 40)
M.Drowsy(20)
if(41 to INFINITY)
M.Paralyse(15)
update_flags |= M.Paralyse(15, FALSE)
M.Drowsy(20)
..()
return ..() | update_flags
/datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs
name = "Restorative Nanites"
@@ -162,7 +162,7 @@
if(!H.dna.species.exotic_blood && !(NO_BLOOD in H.dna.species.species_traits))
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
H.blood_volume += 0.8
..()
return ..()
/datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, volume)
if(M.has_bane(BANE_IRON) && holder && holder.chem_temp < 150) //If the target is weak to cold iron, then poison them.
@@ -31,7 +31,7 @@
var/turf/simulated/T = get_turf(M)
goonchem_vortex(T, 1, 0)
to_chat(M, "<span class='notice'>You briefly feel super-massive, like a black hole. Probably just your imagination...</span>")
..()
return ..()
//Berry Banned: This one is tasty and safe to drink, might have a low chance of healing a random damage type?
/datum/reagent/consumable/drink/berry_banned
@@ -22,7 +22,7 @@
M.adjust_fire_stacks(mob_burning)
M.IgniteMob()
if(method == INGEST)
M.adjustFireLoss(min(max(15, volume * 3), 45))
M.adjustFireLoss(min(max(10, volume * 2), 45))
to_chat(M, "<span class='warning'>It burns!</span>")
M.emote("scream")
@@ -242,7 +242,7 @@
M.adjust_fire_stacks(10)
M.IgniteMob()
if(method == INGEST)
M.adjustFireLoss(min(max(30, volume * 6), 90))
M.adjustFireLoss(min(max(15, volume * 2.5), 90))
to_chat(M, "<span class='warning'>It burns!</span>")
M.emote("scream")
@@ -245,7 +245,7 @@
id = "sacid"
description = "A strong mineral acid with the molecular formula H2SO4."
reagent_state = LIQUID
color = "#00D72B"
color = "#00FF32"
process_flags = ORGANIC | SYNTHETIC
taste_message = "<span class='userdanger'>ACID</span>"
@@ -254,58 +254,34 @@
update_flags |= M.adjustFireLoss(1, FALSE)
return ..() | update_flags
/datum/reagent/sacid/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(isgrey(H))
return
/datum/reagent/sacid/reaction_mob(mob/living/M, method = TOUCH, volume)
if(ishuman(M) && !isgrey(M))
var/mob/living/carbon/human/H = M
if(method == TOUCH)
if(volume > 25)
if(H.wear_mask)
to_chat(H, "<span class='danger'>Your mask protects you from the acid!</span>")
to_chat(H, "<span class='danger'>Your [H.wear_mask] protects you from the acid!</span>")
return
if(H.head)
to_chat(H, "<span class='danger'>Your helmet protects you from the acid!</span>")
to_chat(H, "<span class='danger'>Your [H.wear_mask] protects you from the acid!</span>")
return
if(!M.unacidable)
if(prob(75))
var/obj/item/organ/external/affecting = H.get_organ("head")
if(affecting)
affecting.receive_damage(5, 10)
H.UpdateDamageIcon()
H.emote("scream")
else
M.take_organ_damage(5,10)
if(prob(75))
H.take_organ_damage(5, 10)
H.emote("scream")
var/obj/item/organ/external/affecting = H.get_organ("head")
if(affecting)
affecting.disfigure()
else
H.take_organ_damage(5, 10)
else
M.take_organ_damage(5,10)
if(method == INGEST)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(isgrey(H))
return
if(volume >=10 && volume <=25)
if(!H.unacidable)
M.take_organ_damage(0,min(max(volume-10,2)*2,20))
M.emote("scream")
if(volume > 25)
if(!M.unacidable)
if(prob(75))
var/obj/item/organ/external/affecting = H.get_organ("head")
if(affecting)
affecting.receive_damage(0, 20)
H.UpdateDamageIcon()
H.emote("scream")
else
M.take_organ_damage(0,20)
H.take_organ_damage(5, 10)
else
to_chat(H, "<span class='warning'>The greenish acidic substance stings[volume < 10 ? " you, but isn't concentrated enough to harm you" : null]!</span>")
if(volume >= 10)
H.adjustFireLoss(min(max(4, (volume - 10) * 2), 20))
H.emote("scream")
/datum/reagent/sacid/reaction_obj(obj/O, volume)
if((istype(O,/obj/item) || istype(O,/obj/structure/glowshroom)) && prob(40))
@@ -614,7 +590,7 @@
id = "facid"
description = "Fluorosulfuric acid is a an extremely corrosive super-acid."
reagent_state = LIQUID
color = "#4141D2"
color = "#5050FF"
process_flags = ORGANIC | SYNTHETIC
taste_message = "<span class='userdanger'>ACID</span>"
@@ -624,47 +600,38 @@
update_flags |= M.adjustFireLoss(1, FALSE)
return ..() | update_flags
/datum/reagent/facid/reaction_mob(mob/living/M, method=TOUCH, volume)
if(method == TOUCH || method == INGEST)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(volume < 5)
to_chat(M, "<span class='danger'>The blueish acidic substance stings you, but isn't concentrated enough to harm you!</span>")
if(volume >=5 && volume <=10)
if(!H.unacidable)
M.take_organ_damage(0,max(volume-5,2)*4)
M.emote("scream")
if(volume > 10)
if(method == TOUCH)
if(H.wear_mask)
if(!H.wear_mask.unacidable)
qdel(H.wear_mask)
H.update_inv_wear_mask()
to_chat(H, "<span class='warning'>Your mask melts away but protects you from the acid!</span>")
else
to_chat(H, "<span class='warning'>Your mask protects you from the acid!</span>")
return
if(H.head)
if(!H.head.unacidable)
qdel(H.head)
H.update_inv_head()
to_chat(H, "<span class='warning'>Your helmet melts away but protects you from the acid</span>")
else
to_chat(H, "<span class='warning'>Your helmet protects you from the acid!</span>")
return
if(!H.unacidable)
var/obj/item/organ/external/head/affecting = H.get_organ("head")
/datum/reagent/facid/reaction_mob(mob/living/M, method = TOUCH, volume)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(method == TOUCH)
if(volume > 9)
if(!H.wear_mask && !H.head)
var/obj/item/organ/external/affecting = H.get_organ("head")
if(affecting)
affecting.receive_damage(0, 75)
H.UpdateDamageIcon()
affecting.disfigure()
H.adjustFireLoss(min(max(8, (volume - 5) * 3), 75))
H.emote("scream")
return
else
var/melted_something = FALSE
if(H.wear_mask && !H.wear_mask.unacidable)
qdel(H.wear_mask)
H.update_inv_wear_mask()
to_chat(H, "<span class='danger'>Your [H.wear_mask] melts away!</span>")
melted_something = TRUE
if(H.head && !H.head.unacidable)
qdel(H.head)
H.update_inv_head()
to_chat(H, "<span class='danger'>Your [H.head] melts away!</span>")
melted_something = TRUE
if(melted_something)
return
if(volume >= 5)
H.emote("scream")
H.adjustFireLoss(min(max(8, (volume - 5) * 3), 75))
to_chat(H, "<span class='warning'>The blueish acidic substance stings[volume < 5 ? " you, but isn't concentrated enough to harm you" : null]!</span>")
/datum/reagent/facid/reaction_obj(obj/O, volume)
if((istype(O, /obj/item) || istype(O, /obj/structure/glowshroom)))
@@ -1156,12 +1123,16 @@
M.apply_effect(2, IRRADIATE, 0, negate_armor = 1)
if(!M.dna)
return
var/did_mutation = FALSE
if(prob(15))
randmutb(M)
did_mutation = TRUE
if(prob(3))
randmutg(M)
domutcheck(M, null)
M.UpdateAppearance()
did_mutation = TRUE
if(did_mutation)
domutcheck(M, null)
M.UpdateAppearance()
return ..()
/datum/reagent/ants
@@ -24,61 +24,34 @@
if(method == TOUCH)
// Put out fire
M.adjust_fire_stacks(-(volume * 0.2))
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!isgrey(H)) //God this is so gross I hate it.
return
if(isgrey(M)) // You gosh darn snowflakes
var/mob/living/carbon/human/G = M
if(method == TOUCH)
if(volume > 25)
if(H.wear_mask)
to_chat(H, "<span class='danger'>Your mask protects you from the water!</span>")
if(G.wear_mask)
to_chat(G, "<span class='danger'>Your [G.wear_mask] protects you from the acid!</span>")
return
if(H.head)
to_chat(H, "<span class='danger'>Your helmet protects you from the water!</span>")
if(G.head)
to_chat(G, "<span class='danger'>Your [G.wear_mask] protects you from the acid!</span>")
return
if(!M.unacidable)
if(prob(75))
var/obj/item/organ/external/affecting = H.get_organ("head")
if(affecting)
affecting.receive_damage(5, 10)
H.UpdateDamageIcon()
H.emote("scream")
else
M.take_organ_damage(5,10)
if(prob(75))
G.take_organ_damage(5, 10)
G.emote("scream")
var/obj/item/organ/external/affecting = G.get_organ("head")
if(affecting)
affecting.disfigure()
else
G.take_organ_damage(5, 10)
else
M.take_organ_damage(5,10)
if(method == INGEST)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!isgrey(H))
return
if(volume < 10)
to_chat(M, "<span class='danger'>The watery solvent substance stings you, but isn't concentrated enough to harm you!</span>")
if(volume >=10 && volume <=25)
if(!H.unacidable)
M.take_organ_damage(0,min(max(volume-10,2)*2,20))
M.emote("scream")
if(volume > 25)
if(!M.unacidable)
if(prob(75))
var/obj/item/organ/external/affecting = H.get_organ("head")
if(affecting)
affecting.receive_damage(0, 20)
H.UpdateDamageIcon()
H.emote("scream")
else
M.take_organ_damage(0,20)
G.take_organ_damage(5, 10)
else
to_chat(G, "<span class='warning'>The water stings[volume < 10 ? " you, but isn't concentrated enough to harm you" : null]!</span>")
if(volume >= 10)
G.adjustFireLoss(min(max(4, (volume - 10) * 2), 20))
G.emote("scream")
/datum/reagent/water/reaction_turf(turf/simulated/T, volume)
if(!istype(T))
@@ -139,7 +139,7 @@
required_reagents = list("plasma" = 1, "silver" = 1, "blackpowder" = 1)
result_amount = 3
mix_message = "<span class='danger'>A jet of sparks flies from the mixture as it merges into a flickering slurry.</span>"
min_temp = T0C + 130
min_temp = T0C + 50
mix_sound = null
/datum/chemical_reaction/teslium/on_reaction(datum/reagents/holder, created_volume)