Merge branch 'master' of https://github.com/PolarisSS13/Polaris into polaris-sync

# Conflicts:
#	code/modules/client/preference_setup/general/03_body.dm
#	code/modules/mob/new_player/sprite_accessories.dm
#	html/changelogs/.all_changelog.yml
#	icons/mob/human_races/markings.dmi
#	vorestation.dme
This commit is contained in:
Leshana
2017-04-01 19:19:42 -04:00
205 changed files with 1939 additions and 725 deletions
@@ -372,9 +372,6 @@
src.updateUsrDialog()
return 0
/obj/machinery/reagentgrinder/attack_ai(mob/user as mob)
return 0
/obj/machinery/reagentgrinder/attack_hand(mob/user as mob)
user.set_machine(src)
interact(user)
+11 -6
View File
@@ -26,7 +26,8 @@
var/touch_met = 0
var/dose = 0
var/max_dose = 0
var/overdose = 0
var/overdose = 0 //Amount at which overdose starts
var/overdose_mod = 2 //Modifier to overdose damage
var/scannable = 0 // Shows up on health analyzers.
var/affects_dead = 0
var/cup_icon_state = null
@@ -60,8 +61,6 @@
return
if(!affects_dead && M.stat == DEAD)
return
if(overdose && (volume > overdose) && (location != CHEM_TOUCH))
overdose(M, alien)
var/removed = metabolism
if(!mrate_static == TRUE)
removed *= M.species.metabolic_rate
@@ -80,6 +79,8 @@
affect_ingest(M, alien, removed)
if(CHEM_TOUCH)
affect_touch(M, alien, removed)
if(overdose && (volume > overdose) && (location != CHEM_TOUCH))
overdose(M, alien, removed)
remove_self(removed)
return
@@ -93,9 +94,13 @@
/datum/reagent/proc/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
return
/datum/reagent/proc/overdose(var/mob/living/carbon/M, var/alien) // Overdose effect. Doesn't happen instantly.
M.adjustToxLoss(REM)
return
/datum/reagent/proc/overdose(var/mob/living/carbon/M, var/alien, var/removed) // Overdose effect. Doesn't happen instantly.
if(alien == IS_DIONA)
return
if(ishuman(M))
var/mob/living/carbon/human/H = M
overdose_mod *= H.species.chemOD_mod
M.adjustToxLoss(removed * overdose_mod)
/datum/reagent/proc/initialize_data(var/newdata) // Called when the reagent is created.
if(!isnull(newdata))
@@ -349,7 +349,7 @@
if(affecting.take_damage(0, removed * power * 0.1))
H.UpdateDamageIcon()
if(prob(100 * removed / meltdose)) // Applies disfigurement
if (affecting.can_feel_pain())
if (affecting.organ_can_feel_pain())
H.emote("scream")
H.status_flags |= DISFIGURED
else
@@ -14,8 +14,8 @@
/datum/reagent/inaprovaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien != IS_DIONA)
M.add_chemical_effect(CE_STABLE)
M.add_chemical_effect(CE_PAINKILLER, 25)
M.add_chemical_effect(CE_STABLE, 15)
M.add_chemical_effect(CE_PAINKILLER, 10)
/datum/reagent/bicaridine
name = "Bicaridine"
@@ -32,6 +32,23 @@
if(alien != IS_DIONA)
M.heal_organ_damage(6 * removed, 0)
/datum/reagent/bicaridine/overdose(var/mob/living/carbon/M, var/alien, var/removed)
..()
var/wound_heal = 1.5 * removed
M.eye_blurry += (wound_heal)
if(ishuman(M))
var/mob/living/carbon/human/H = M
for(var/obj/item/organ/external/O in H.bad_external_organs)
for(var/datum/wound/W in O.wounds)
if(W.bleeding())
W.damage = max(W.damage - wound_heal, 0)
if(W.damage <= 0)
O.wounds -= W
if(W.internal)
W.damage = max(W.damage - wound_heal, 0)
if(W.damage <= 0)
O.wounds -= W
/datum/reagent/kelotane
name = "Kelotane"
id = "kelotane"
@@ -76,6 +93,29 @@
M.hallucination = max(0, M.hallucination - 9 * removed)
M.adjustToxLoss(-4 * removed)
/datum/reagent/carthatoline
name = "carthatoline"
id = "carthatoline"
description = "Carthatoline is strong evacuant used to treat severe poisoning."
reagent_state = LIQUID
color = "#225722"
scannable = 1
/datum/reagent/carthatoline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
if(M.getToxLoss() && prob(10))
M.vomit(1)
M.adjustToxLoss(-8 * removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/internal/liver/L = H.internal_organs_by_name[O_LIVER]
if(istype(L))
if(L.robotic >= ORGAN_ROBOT)
return
if(L.damage > 0)
L.damage = max(L.damage - 2 * removed, 0)
/datum/reagent/dexalin
name = "Dexalin"
id = "dexalin"
@@ -109,7 +149,7 @@
if(alien == IS_VOX)
M.adjustToxLoss(removed * 9)
else if(alien != IS_DIONA)
M.adjustOxyLoss(-300 * removed)
M.adjustOxyLoss(-150 * removed)
holder.remove_reagent("lexorin", 3 * removed)
@@ -179,7 +219,7 @@
mrate_static = TRUE
/datum/reagent/paracetamol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
M.add_chemical_effect(CE_PAINKILLER, 50)
M.add_chemical_effect(CE_PAINKILLER, 25)
/datum/reagent/paracetamol/overdose(var/mob/living/carbon/M, var/alien)
..()
@@ -217,6 +257,8 @@
/datum/reagent/oxycodone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
M.add_chemical_effect(CE_PAINKILLER, 200)
M.eye_blurry += 10
M.confused += 5
/datum/reagent/oxycodone/overdose(var/mob/living/carbon/M, var/alien)
..()
@@ -246,7 +288,7 @@
holder.remove_reagent("mindbreaker", 5)
M.hallucination = max(0, M.hallucination - 10)
M.adjustToxLoss(5 * removed) // It used to be incredibly deadly due to an oversight. Not anymore!
M.add_chemical_effect(CE_PAINKILLER, 40)
M.add_chemical_effect(CE_PAINKILLER, 20)
/datum/reagent/alkysine
name = "Alkysine"
@@ -307,9 +349,62 @@
continue
if(I.damage > 0) //Peridaxon heals only non-robotic organs
I.damage = max(I.damage - removed, 0)
H.confused += 5
if(I.damage <= 5 && I.organ_tag == O_EYES)
H.eye_blurry += 10 //Eyes need to reset, or something
H.sdisabilities &= ~BLIND
/datum/reagent/osteodaxon
name = "Osteodaxon"
id = "osteodaxon"
description = "An experimental drug used to heal bone fractures."
reagent_state = LIQUID
color = "#C9BCE3"
metabolism = REM * 0.5
overdose = REAGENTS_OVERDOSE * 0.5
scannable = 1
/datum/reagent/osteodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
M.heal_organ_damage(3 * removed, 0) //Gives the bones a chance to set properly even without other meds
if(ishuman(M))
var/mob/living/carbon/human/H = M
for(var/obj/item/organ/external/O in H.bad_external_organs)
if(O.status & ORGAN_BROKEN)
O.mend_fracture() //Only works if the bone won't rebreak, as usual
H.custom_pain("You feel a terrible agony tear through your bones!",60)
H.AdjustWeakened(1) //Bones being regrown will knock you over
/datum/reagent/myelamine
name = "Myelamine"
id = "myelamine"
description = "Used to rapidly clot internal hemorrhages by increasing the effectiveness of platelets."
reagent_state = LIQUID
color = "#4246C7"
metabolism = REM * 0.5
overdose = REAGENTS_OVERDOSE * 0.5
scannable = 1
var/repair_strength = 3
/datum/reagent/myelamine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
M.eye_blurry += (repair_strength * removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/wound_heal = removed * repair_strength
for(var/obj/item/organ/external/O in H.bad_external_organs)
for(var/datum/wound/W in O.wounds)
if(W.bleeding())
W.damage = max(W.damage - wound_heal, 0)
if(W.damage <= 0)
O.wounds -= W
if(W.internal)
W.damage = max(W.damage - wound_heal, 0)
if(W.damage <= 0)
O.wounds -= W
/datum/reagent/ryetalyn
name = "Ryetalyn"
id = "ryetalyn"
@@ -364,6 +459,8 @@
scannable = 1
/datum/reagent/hyronalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
M.radiation = max(M.radiation - 30 * removed, 0)
/datum/reagent/arithrazine
@@ -378,6 +475,8 @@
scannable = 1
/datum/reagent/arithrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
M.radiation = max(M.radiation - 70 * removed, 0)
M.adjustToxLoss(-10 * removed)
if(prob(60))
@@ -432,11 +531,35 @@
scannable = 1
/datum/reagent/leporazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
if(M.bodytemperature > 310)
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))
/datum/reagent/rezadone
name = "Rezadone"
id = "rezadone"
description = "A powder with almost magical properties, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects."
reagent_state = SOLID
color = "#669900"
overdose = REAGENTS_OVERDOSE
scannable = 1
/datum/reagent/rezadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
M.adjustCloneLoss(-20 * removed)
M.adjustOxyLoss(-2 * removed)
M.heal_organ_damage(20 * removed, 20 * removed)
M.adjustToxLoss(-20 * removed)
if(dose > 3)
M.status_flags &= ~DISFIGURED
if(dose > 10)
M.make_dizzy(5)
M.make_jittery(5)
/* Antidepressants */
#define ANTIDEPRESSANT_MESSAGE_DELAY 5*60*10
@@ -43,6 +43,13 @@
color = "#003333"
strength = 10
/datum/reagent/toxin/spidertoxin
name = "Spidertoxin"
id = "spidertoxin"
description = "A liquifying toxin produced by giant spiders."
color = "#2CE893"
strength = 5
/datum/reagent/toxin/phoron
name = "Phoron"
id = "phoron"
@@ -381,6 +388,7 @@
color = "#000067"
metabolism = REM * 0.5
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 5 //For that good, lethal feeling
/datum/reagent/chloralhydrate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
@@ -406,6 +414,11 @@
if(effective_dose > 1 * threshold)
M.adjustToxLoss(removed)
/datum/reagent/chloralhydrate/overdose(var/mob/living/carbon/M, var/alien, var/removed)
..()
M.losebreath = (min(M.losebreath + 1, 10))
M.adjustOxyLoss(removed * overdose_mod)
/datum/reagent/chloralhydrate/beer2 //disguised as normal beer for use by emagged brobots
name = "Beer"
id = "beer2"
+29 -5
View File
@@ -160,6 +160,14 @@
required_reagents = list("silicon" = 1, "potassium" = 1, "nitrogen" = 1)
result_amount = 3
/datum/chemical_reaction/carthatoline
name = "Carthatoline"
id = "carthatoline"
result = "carthatoline"
required_reagents = list("dylovene" = 1, "carbon" = 2, "phoron" = 0.1)
catalysts = list("phoron" = 1)
result_amount = 2
/datum/chemical_reaction/tramadol
name = "Tramadol"
id = "tramadol"
@@ -282,6 +290,15 @@
catalysts = list("phoron" = 5)
result_amount = 2
/datum/chemical_reaction/osteodaxon
name = "Osteodaxon"
id = "osteodaxon"
result = "osteodaxon"
required_reagents = list("bicaridine" = 2, "phoron" = 0.1, "carpotoxin" = 1)
catalysts = list("phoron" = 5)
inhibitors = list("clonexadone" = 1) // Messes with cryox
result_amount = 2
/datum/chemical_reaction/virus_food
name = "Virus Food"
id = "virusfood"
@@ -349,6 +366,13 @@
inhibitors = list("sugar" = 1) // Messes up with inaprovaline
result_amount = 2
/datum/chemical_reaction/myelamine
name = "Myelamine"
id = "myelamine"
result = "myelamine"
required_reagents = list("bicaridine" = 1, "iron" = 2, "spidertoxin" = 1)
result_amount = 2
/datum/chemical_reaction/hyperzine
name = "Hyperzine"
id = "hyperzine"
@@ -1783,35 +1807,35 @@
required_reagents = list("icetea" = 1, "lemonade" = 1)
result_amount = 2
/datum/chemical_reaction/minttea
/datum/chemical_reaction/drinks/minttea
name = "Mint Tea"
id = "minttea"
result = "minttea"
required_reagents = list("tea" = 5, "mint" = 1)
result_amount = 6
/datum/chemical_reaction/lemontea
/datum/chemical_reaction/drinks/lemontea
name = "Lemon Tea"
id = "lemontea"
result = "lemontea"
required_reagents = list("tea" = 5, "lemonjuice" = 1)
result_amount = 6
/datum/chemical_reaction/limetea
/datum/chemical_reaction/drinks/limetea
name = "Lime Tea"
id = "limetea"
result = "limetea"
required_reagents = list("tea" = 5, "limejuice" = 1)
result_amount = 6
/datum/chemical_reaction/limetea
/datum/chemical_reaction/drinks/limetea
name = "Orange Tea"
id = "orangetea"
result = "orangetea"
required_reagents = list("tea" = 5, "orangejuice" = 1)
result_amount = 6
/datum/chemical_reaction/berrytea
/datum/chemical_reaction/drinks/berrytea
name = "Berry Tea"
id = "berrytea"
result = "berrytea"
@@ -749,6 +749,19 @@
reagents.add_reagent("pacid",6)
src.bitesize = 6
/obj/item/weapon/reagent_containers/food/snacks/spidermeat
name = "meat"
desc = "A slab of green meat."
icon_state = "xenomeat"
filling_color = "#43DE18"
center_of_mass = list("x"=16, "y"=10)
/obj/item/weapon/reagent_containers/food/snacks/spidermeat/New()
..()
reagents.add_reagent("protein", 6)
reagents.add_reagent("spidertoxin",6)
src.bitesize = 6
/obj/item/weapon/reagent_containers/food/snacks/meatball
name = "meatball"
desc = "A great meal all round."
@@ -88,3 +88,33 @@
user << "<span class='notice'>It is currently loaded.</span>"
else
user << "<span class='notice'>It is spent.</span>"
/obj/item/weapon/reagent_containers/hypospray/autoinjector/clotting
name = "clotting agent"
desc = "A rapid and safe way to administer clotting drugs by untrained or trained personnel."
icon_state = "autoinjector"
item_state = "autoinjector"
amount_per_transfer_from_this = 10
volume = 10
/obj/item/weapon/reagent_containers/hypospray/autoinjector/clotting/New()
..()
reagents.remove_reagent("inaprovaline", 5)
reagents.add_reagent("myelamine", 10)
update_icon()
return
/obj/item/weapon/reagent_containers/hypospray/autoinjector/bonemed
name = "bone repair injector"
desc = "A rapid and safe way to administer advanced drugs by untrained or trained personnel."
icon_state = "autoinjector"
item_state = "autoinjector"
amount_per_transfer_from_this = 10
volume = 10
/obj/item/weapon/reagent_containers/hypospray/autoinjector/bonemed/New()
..()
reagents.remove_reagent("inaprovaline", 5)
reagents.add_reagent("osteodaxon", 10)
update_icon()
return