mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-22 11:38:12 +01:00
Merge branch 'master' into viro-fix-5
This commit is contained in:
@@ -223,7 +223,7 @@
|
||||
if(do_after(src, 30, A))
|
||||
|
||||
visible_message(span_notice("[src] fertilizes \the [A]."))
|
||||
T.reagents.add_reagent("ammonia", 10)
|
||||
T.reagents.add_reagent(REAGENT_ID_AMMONIA, 10)
|
||||
|
||||
busy = 0
|
||||
action = ""
|
||||
|
||||
@@ -31,12 +31,12 @@
|
||||
var/injection_amount = 15 //How much reagent do we inject at a time?
|
||||
var/heal_threshold = 10 //Start healing when they have this much damage in a category
|
||||
var/use_beaker = 0 //Use reagents in beaker instead of default treatment agents.
|
||||
var/treatment_brute = "tricordrazine"
|
||||
var/treatment_oxy = "tricordrazine"
|
||||
var/treatment_fire = "tricordrazine"
|
||||
var/treatment_tox = "tricordrazine"
|
||||
var/treatment_virus = "spaceacillin"
|
||||
var/treatment_emag = "toxin"
|
||||
var/treatment_brute = REAGENT_ID_TRICORDRAZINE
|
||||
var/treatment_oxy = REAGENT_ID_TRICORDRAZINE
|
||||
var/treatment_fire = REAGENT_ID_TRICORDRAZINE
|
||||
var/treatment_tox = REAGENT_ID_TRICORDRAZINE
|
||||
var/treatment_virus = REAGENT_ID_SPACEACILLIN
|
||||
var/treatment_emag = REAGENT_ID_TOXIN
|
||||
var/declare_treatment = 0 //When attempting to treat a patient, should it notify everyone wearing medhuds?
|
||||
|
||||
// Are we tipped over?
|
||||
@@ -52,10 +52,10 @@
|
||||
name = "\improper Mysterious Medibot"
|
||||
desc = "International Medibot of mystery."
|
||||
skin = "bezerk"
|
||||
treatment_brute = "bicaridine"
|
||||
treatment_fire = "dermaline"
|
||||
treatment_oxy = "dexalin"
|
||||
treatment_tox = "anti_toxin"
|
||||
treatment_brute = REAGENT_ID_BICARIDINE
|
||||
treatment_fire = REAGENT_ID_DERMALINE
|
||||
treatment_oxy = REAGENT_ID_DEXALIN
|
||||
treatment_tox = REAGENT_ID_ANTITOXIN
|
||||
|
||||
/mob/living/bot/medbot/handleIdle()
|
||||
if(is_tipped) // Don't handle idle things if we're incapacitated!
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
if(!environment) return
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(environment.gas["phoron"] > 0 || (T && locate(/obj/effect/alien/weeds) in T.contents))
|
||||
if(environment.gas[GAS_PHORON] > 0 || (T && locate(/obj/effect/alien/weeds) in T.contents))
|
||||
update_progression()
|
||||
adjustBruteLoss(-1)
|
||||
adjustFireLoss(-1)
|
||||
|
||||
@@ -82,8 +82,8 @@
|
||||
// ========
|
||||
/datum/medical_effect/headache
|
||||
name = "Headache"
|
||||
triggers = list("cryoxadone" = 10, "bicaridine" = 15, "tricordrazine" = 15)
|
||||
cures = list("alkysine", "tramadol", "paracetamol", "oxycodone")
|
||||
triggers = list(REAGENT_ID_CRYOXADONE = 10, REAGENT_ID_BICARIDINE = 15, REAGENT_ID_TRICORDRAZINE = 15)
|
||||
cures = list(REAGENT_ID_ALKYSINE, REAGENT_ID_TRAMADOL, REAGENT_ID_PARACETAMOL, REAGENT_ID_OXYCODONE)
|
||||
cure_message = "Your head stops throbbing..."
|
||||
|
||||
/datum/medical_effect/headache/on_life(mob/living/carbon/human/H, strength)
|
||||
@@ -99,8 +99,8 @@
|
||||
// ===========
|
||||
/datum/medical_effect/bad_stomach
|
||||
name = "Bad Stomach"
|
||||
triggers = list("kelotane" = 30, "dermaline" = 15)
|
||||
cures = list("anti_toxin")
|
||||
triggers = list(REAGENT_ID_KELOTANE = 30, REAGENT_ID_DERMALINE = 15)
|
||||
cures = list(REAGENT_ID_ANTITOXIN)
|
||||
cure_message = "Your stomach feels a little better now..."
|
||||
|
||||
/datum/medical_effect/bad_stomach/on_life(mob/living/carbon/human/H, strength)
|
||||
@@ -116,8 +116,8 @@
|
||||
// ======
|
||||
/datum/medical_effect/cramps
|
||||
name = "Cramps"
|
||||
triggers = list("anti_toxin" = 30, "tramadol" = 15)
|
||||
cures = list("inaprovaline")
|
||||
triggers = list(REAGENT_ID_ANTITOXIN = 30, REAGENT_ID_TRAMADOL = 15)
|
||||
cures = list(REAGENT_ID_INAPROVALINE)
|
||||
cure_message = "The cramps let up..."
|
||||
|
||||
/datum/medical_effect/cramps/on_life(mob/living/carbon/human/H, strength)
|
||||
@@ -134,8 +134,8 @@
|
||||
// ====
|
||||
/datum/medical_effect/itch
|
||||
name = "Itch"
|
||||
triggers = list("bliss" = 10)
|
||||
cures = list("inaprovaline")
|
||||
triggers = list(REAGENT_ID_BLISS = 10)
|
||||
cures = list(REAGENT_ID_INAPROVALINE)
|
||||
cure_message = "The itching stops..."
|
||||
|
||||
/datum/medical_effect/itch/on_life(mob/living/carbon/human/H, strength)
|
||||
|
||||
@@ -82,8 +82,8 @@
|
||||
// ========
|
||||
/datum/medical_effect/headache
|
||||
name = "Headache"
|
||||
triggers = list("cryoxadone" = 10, "bicaridine" = 15, "tricordrazine" = 15)
|
||||
cures = list("alkysine", "tramadol", "paracetamol", "oxycodone")
|
||||
triggers = list(REAGENT_ID_CRYOXADONE = 10, REAGENT_ID_BICARIDINE = 15, REAGENT_ID_TRICORDRAZINE = 15)
|
||||
cures = list(REAGENT_ID_ALKYSINE, REAGENT_ID_TRAMADOL, REAGENT_ID_PARACETAMOL, REAGENT_ID_OXYCODONE)
|
||||
cure_message = "Your head stops throbbing..."
|
||||
|
||||
/datum/medical_effect/headache/on_life(mob/living/carbon/human/H, strength)
|
||||
@@ -99,8 +99,8 @@
|
||||
// ===========
|
||||
/datum/medical_effect/bad_stomach
|
||||
name = "Bad Stomach"
|
||||
triggers = list("kelotane" = 30, "dermaline" = 15)
|
||||
cures = list("anti_toxin")
|
||||
triggers = list(REAGENT_ID_KELOTANE = 30, REAGENT_ID_DERMALINE = 15)
|
||||
cures = list(REAGENT_ID_ANTITOXIN)
|
||||
cure_message = "Your stomach feels a little better now..."
|
||||
|
||||
/datum/medical_effect/bad_stomach/on_life(mob/living/carbon/human/H, strength)
|
||||
@@ -116,8 +116,8 @@
|
||||
// ======
|
||||
/datum/medical_effect/cramps
|
||||
name = "Cramps"
|
||||
triggers = list("anti_toxin" = 30, "tramadol" = 15)
|
||||
cures = list("inaprovaline")
|
||||
triggers = list(REAGENT_ID_ANTITOXIN = 30, REAGENT_ID_TRAMADOL = 15)
|
||||
cures = list(REAGENT_ID_INAPROVALINE)
|
||||
cure_message = "The cramps let up..."
|
||||
|
||||
/datum/medical_effect/cramps/on_life(mob/living/carbon/human/H, strength)
|
||||
@@ -134,8 +134,8 @@
|
||||
// ====
|
||||
/datum/medical_effect/itch
|
||||
name = "Itch"
|
||||
triggers = list("bliss" = 10)
|
||||
cures = list("inaprovaline")
|
||||
triggers = list(REAGENT_ID_BLISS = 10)
|
||||
cures = list(REAGENT_ID_INAPROVALINE)
|
||||
cure_message = "The itching stops..."
|
||||
|
||||
/datum/medical_effect/itch/on_life(mob/living/carbon/human/H, strength)
|
||||
|
||||
@@ -1040,7 +1040,7 @@
|
||||
/mob/living/carbon/human/revive()
|
||||
|
||||
if(should_have_organ(O_HEART))
|
||||
vessel.add_reagent("blood",species.blood_volume-vessel.total_volume)
|
||||
vessel.add_reagent(REAGENT_ID_BLOOD,species.blood_volume-vessel.total_volume)
|
||||
fixblood()
|
||||
|
||||
species.create_organs(src) // Reset our organs/limbs.
|
||||
@@ -1313,9 +1313,9 @@
|
||||
make_blood()
|
||||
if(vessel.total_volume < species.blood_volume)
|
||||
vessel.maximum_volume = species.blood_volume
|
||||
vessel.add_reagent("blood", species.blood_volume - vessel.total_volume)
|
||||
vessel.add_reagent(REAGENT_ID_BLOOD, species.blood_volume - vessel.total_volume)
|
||||
else if(vessel.total_volume > species.blood_volume)
|
||||
vessel.remove_reagent("blood",vessel.total_volume - species.blood_volume) //This one should stay remove_reagent to work even lack of a O_heart
|
||||
vessel.remove_reagent(REAGENT_ID_BLOOD,vessel.total_volume - species.blood_volume) //This one should stay remove_reagent to work even lack of a O_heart
|
||||
vessel.maximum_volume = species.blood_volume
|
||||
fixblood()
|
||||
species.update_attack_types() //VOREStation Edit - Required for any trait that updates unarmed_types in setup.
|
||||
@@ -1788,7 +1788,7 @@
|
||||
if(species?.flags & NO_BLOOD)
|
||||
bloodtrail = 0
|
||||
else
|
||||
var/blood_volume = vessel.get_reagent_amount("blood")
|
||||
var/blood_volume = vessel.get_reagent_amount(REAGENT_ID_BLOOD)
|
||||
if(blood_volume < species?.blood_volume*species?.blood_level_fatal)
|
||||
bloodtrail = 0 //Most of it's gone already, just leave it be
|
||||
else
|
||||
|
||||
@@ -436,7 +436,7 @@ This function restores the subjects blood to max.
|
||||
if(!should_have_organ(O_HEART))
|
||||
return
|
||||
if(vessel.total_volume < species.blood_volume)
|
||||
vessel.add_reagent("blood", species.blood_volume - vessel.total_volume)
|
||||
vessel.add_reagent(REAGENT_ID_BLOOD, species.blood_volume - vessel.total_volume)
|
||||
|
||||
/*
|
||||
This function restores all organs.
|
||||
|
||||
@@ -307,7 +307,7 @@
|
||||
return
|
||||
//VOREStation Addition end: shadekin
|
||||
|
||||
if(reagents.has_reagent("prussian_blue")) //Prussian Blue temporarily stops radiation effects.
|
||||
if(reagents.has_reagent(REAGENT_ID_PRUSSIANBLUE)) //Prussian Blue temporarily stops radiation effects.
|
||||
return
|
||||
|
||||
var/damage = 0
|
||||
@@ -452,7 +452,7 @@
|
||||
// Begin long-term radiation effects
|
||||
// Loss of taste occurs at 100 (2Gy) and is handled in taste.dm
|
||||
// These are all done one after another, so duplication is not required. Someone at 400rads will have the 100&400 effects.
|
||||
if(!radiation && accumulated_rads >= 100 && !reagents.has_reagent("prussian_blue")) //Let's not hit them with long term effects when they're actively being hit with rads.
|
||||
if(!radiation && accumulated_rads >= 100 && !reagents.has_reagent(REAGENT_ID_PRUSSIANBLUE)) //Let's not hit them with long term effects when they're actively being hit with rads.
|
||||
if(!isSynthetic())
|
||||
I = internal_organs_by_name[O_EYES]
|
||||
if(I) //Eye stuff
|
||||
@@ -613,13 +613,13 @@
|
||||
if(species.breath_type)
|
||||
breath_type = species.breath_type
|
||||
else
|
||||
breath_type = "oxygen"
|
||||
breath_type = GAS_O2
|
||||
inhaling = breath.gas[breath_type]
|
||||
|
||||
if(species.poison_type)
|
||||
poison_type = species.poison_type
|
||||
else
|
||||
poison_type = "phoron"
|
||||
poison_type = GAS_PHORON
|
||||
poison = breath.gas[poison_type]
|
||||
|
||||
if(species.exhale_type)
|
||||
@@ -644,17 +644,17 @@
|
||||
failed_inhale = 1
|
||||
|
||||
switch(breath_type)
|
||||
if("oxygen")
|
||||
if(GAS_O2)
|
||||
throw_alert("oxy", /obj/screen/alert/not_enough_oxy)
|
||||
if("phoron")
|
||||
if(GAS_PHORON)
|
||||
throw_alert("oxy", /obj/screen/alert/not_enough_tox)
|
||||
if("nitrogen")
|
||||
if(GAS_N2)
|
||||
throw_alert("oxy", /obj/screen/alert/not_enough_nitro)
|
||||
if("carbon_dioxide")
|
||||
if(GAS_CO2)
|
||||
throw_alert("oxy", /obj/screen/alert/not_enough_co2)
|
||||
if("volatile_fuel")
|
||||
if(GAS_VOLATILE_FUEL)
|
||||
throw_alert("oxy", /obj/screen/alert/not_enough_fuel)
|
||||
if("nitrous_oxide")
|
||||
if(GAS_N2O)
|
||||
throw_alert("oxy", /obj/screen/alert/not_enough_n2o)
|
||||
|
||||
else
|
||||
@@ -699,15 +699,15 @@
|
||||
if(toxins_pp > safe_toxins_max)
|
||||
var/ratio = (poison/safe_toxins_max) * 10
|
||||
if(reagents)
|
||||
reagents.add_reagent("toxin", CLAMP(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE))
|
||||
reagents.add_reagent(REAGENT_ID_TOXIN, CLAMP(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE))
|
||||
breath.adjust_gas(poison_type, -poison/6, update = 0) //update after
|
||||
throw_alert("tox_in_air", /obj/screen/alert/tox_in_air)
|
||||
else
|
||||
clear_alert("tox_in_air")
|
||||
|
||||
// If there's some other shit in the air lets deal with it here.
|
||||
if(breath.gas["nitrous_oxide"])
|
||||
var/SA_pp = (breath.gas["nitrous_oxide"] / breath.total_moles) * breath_pressure
|
||||
if(breath.gas[GAS_N2O])
|
||||
var/SA_pp = (breath.gas[GAS_N2O] / breath.total_moles) * breath_pressure
|
||||
|
||||
// Enough to make us paralysed for a bit
|
||||
if(SA_pp > SA_para_min)
|
||||
@@ -723,7 +723,7 @@
|
||||
else if(SA_pp > 0.15)
|
||||
if(prob(20))
|
||||
spawn(0) emote(pick("giggle", "laugh"))
|
||||
breath.adjust_gas("nitrous_oxide", -breath.gas["nitrous_oxide"]/6, update = 0) //update after
|
||||
breath.adjust_gas(GAS_N2O, -breath.gas[GAS_N2O]/6, update = 0) //update after
|
||||
|
||||
// Were we able to breathe?
|
||||
if (failed_inhale || failed_exhale)
|
||||
@@ -1946,7 +1946,7 @@
|
||||
if(Pump)
|
||||
temp += Pump.standard_pulse_level - PULSE_NORM
|
||||
|
||||
if(round(vessel.get_reagent_amount("blood")) <= species.blood_volume*species.blood_level_danger) //how much blood do we have
|
||||
if(round(vessel.get_reagent_amount(REAGENT_ID_BLOOD)) <= species.blood_volume*species.blood_level_danger) //how much blood do we have
|
||||
temp = temp + 3 //not enough :(
|
||||
|
||||
if(status_flags & FAKEDEATH)
|
||||
|
||||
@@ -43,8 +43,8 @@
|
||||
|
||||
gluttonous = 1
|
||||
|
||||
breath_type = "phoron"
|
||||
poison_type = "oxygen"
|
||||
breath_type = GAS_PHORON
|
||||
poison_type = GAS_O2
|
||||
ideal_air_type = /datum/gas_mixture/belly_air/vox
|
||||
siemens_coefficient = 0.2
|
||||
|
||||
|
||||
@@ -41,8 +41,8 @@
|
||||
var/show_ssd = "fast asleep"
|
||||
var/virus_immune
|
||||
var/short_sighted // Permanent weldervision.
|
||||
var/blood_name = "blood" // Name for the species' blood.
|
||||
var/blood_reagents = "iron" // Reagent(s) that restore lost blood. goes by reagent IDs.
|
||||
var/blood_name = REAGENT_ID_BLOOD // Name for the species' blood.
|
||||
var/blood_reagents = REAGENT_ID_IRON // Reagent(s) that restore lost blood. goes by reagent IDs.
|
||||
var/blood_volume = 560 // Initial blood volume.
|
||||
var/bloodloss_rate = 1 // Multiplier for how fast a species bleeds out. Higher = Faster
|
||||
var/blood_level_safe = 0.85 //"Safe" blood level; above this, you're OK
|
||||
@@ -133,9 +133,9 @@
|
||||
|
||||
// Environment tolerance/life processes vars.
|
||||
var/reagent_tag //Used for metabolizing reagents.
|
||||
var/breath_type = "oxygen" // Non-oxygen gas breathed, if any.
|
||||
var/poison_type = "phoron" // Poisonous air.
|
||||
var/exhale_type = "carbon_dioxide" // Exhaled gas type.
|
||||
var/breath_type = GAS_O2 // Non-oxygen gas breathed, if any.
|
||||
var/poison_type = GAS_PHORON // Poisonous air.
|
||||
var/exhale_type = GAS_CO2 // Exhaled gas type.
|
||||
var/water_breather = FALSE
|
||||
var/bad_swimmer = FALSE
|
||||
|
||||
|
||||
@@ -20,30 +20,30 @@
|
||||
if(1 to 2)
|
||||
user.visible_message(span_danger("[user]'s fangs scrape across [target]'s cheek!"))
|
||||
to_chat(target, span_danger("Your face feels tingly!"))
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage) //Have to add this here, otherwise the swtich fails.
|
||||
target.bloodstr.add_reagent(REAGENT_ID_NUMBENZYME,attack_damage) //Have to add this here, otherwise the swtich fails.
|
||||
if(3 to 4)
|
||||
user.visible_message(span_danger("[user]'s fangs pierce into [target]'s neck at an odd, awkward angle!"))
|
||||
to_chat(target, span_danger("Your neck feels like it's on fire before going numb!"))
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage)
|
||||
target.bloodstr.add_reagent(REAGENT_ID_NUMBENZYME,attack_damage)
|
||||
if(5)
|
||||
user.visible_message(span_danger("[user] sinks \his [pick(attack_noun)] <b><i>deep</i></b> into [target]'s neck, causing the vein to bulge outwards at some type of chemical is pumped into it!"))
|
||||
to_chat(target, span_danger("Your neck feels like it's going to burst! Moments later, you simply can't feel your neck any longer, the numbness beginning to spread throughout your body!"))
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage)
|
||||
target.bloodstr.add_reagent(REAGENT_ID_NUMBENZYME,attack_damage)
|
||||
else
|
||||
// ----- BODY ----- //
|
||||
switch(attack_damage)
|
||||
if(1 to 2)
|
||||
user.visible_message(span_danger("[user]'s fangs scrape across [target]'s [affecting.name]!"))
|
||||
to_chat(target, span_danger("Your [affecting.name] feels tingly!"))
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage)
|
||||
target.bloodstr.add_reagent(REAGENT_ID_NUMBENZYME,attack_damage)
|
||||
if(3 to 4)
|
||||
user.visible_message(span_danger("[user]'s fangs pierce [pick("", "", "the side of")] [target]'s [affecting.name]!"))
|
||||
to_chat(target, span_danger("Your [affecting.name] feels like it's on fire before going numb!"))
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage)
|
||||
target.bloodstr.add_reagent(REAGENT_ID_NUMBENZYME,attack_damage)
|
||||
if(5)
|
||||
user.visible_message(span_danger("[user]'s fangs sink deep into [target]'s [affecting.name], one of their veins bulging outwards from the sudden fluid pumped into it!"))
|
||||
to_chat(target, span_danger("Your [affecting.name] feels like it's going to burst! Moments later, you simply can't feel your [affecting.name] any longer, the numbness slowly spreading throughout your body!"))
|
||||
target.bloodstr.add_reagent("numbenzyme",attack_damage)
|
||||
target.bloodstr.add_reagent(REAGENT_ID_NUMBENZYME,attack_damage)
|
||||
|
||||
/datum/unarmed_attack/claws/shadekin
|
||||
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
selects_bodytype = SELECTS_BODYTYPE_CUSTOM //VOREStation edit
|
||||
|
||||
body_temperature = T20C
|
||||
breath_type = "oxygen"
|
||||
poison_type = "phoron"
|
||||
exhale_type = "oxygen"
|
||||
breath_type = GAS_O2
|
||||
poison_type = GAS_PHORON
|
||||
exhale_type = GAS_O2
|
||||
water_breather = TRUE //eh, why not? Aquatic plants are a thing.
|
||||
|
||||
// Heat and cold resistances are 20 degrees broader on the level 1 range, level 2 is default, level 3 is much weaker, halfway between L2 and normal L3.
|
||||
@@ -169,7 +169,7 @@
|
||||
var/failed_inhale = 0
|
||||
var/failed_exhale = 0
|
||||
|
||||
inhaling = breath.gas["carbon_dioxide"]
|
||||
inhaling = breath.gas[GAS_CO2]
|
||||
poison = breath.gas[poison_type]
|
||||
exhaling = breath.gas[exhale_type]
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
H.clear_alert("oxy")
|
||||
|
||||
inhaled_gas_used = inhaling/6
|
||||
breath.adjust_gas("carbon_dioxide", -inhaled_gas_used, update = 0) //update afterwards
|
||||
breath.adjust_gas(GAS_CO2, -inhaled_gas_used, update = 0) //update afterwards
|
||||
breath.adjust_gas_temp(exhale_type, inhaled_gas_used, H.bodytemperature, update = 0) //update afterwards
|
||||
|
||||
//Now we handle CO2.
|
||||
@@ -221,7 +221,7 @@
|
||||
if(toxins_pp > safe_toxins_max)
|
||||
var/ratio = (poison/safe_toxins_max) * 10
|
||||
if(H.reagents)
|
||||
H.reagents.add_reagent("toxin", CLAMP(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE))
|
||||
H.reagents.add_reagent(REAGENT_ID_TOXIN, CLAMP(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE))
|
||||
breath.adjust_gas(poison_type, -poison/6, update = 0) //update after
|
||||
H.throw_alert("tox_in_air", /obj/screen/alert/tox_in_air)
|
||||
else
|
||||
@@ -338,7 +338,7 @@
|
||||
name = "fruit gland"
|
||||
desc = "A bulbous gourd-like structure."
|
||||
organ_tag = A_FRUIT
|
||||
var/generated_reagents = list("sugar" = 2) //This actually allows them. This could be anything, but sugar seems most fitting.
|
||||
var/generated_reagents = list(REAGENT_ID_SUGAR = 2) //This actually allows them. This could be anything, but sugar seems most fitting.
|
||||
var/usable_volume = 250 //Five fruit.
|
||||
var/transfer_amount = 50
|
||||
var/empty_message = list("Your have no fruit on you.", "You have a distinct lack of fruit..")
|
||||
@@ -348,7 +348,7 @@
|
||||
var/self_verb_descriptor = list("grab", "snatch", "pick")
|
||||
var/short_emote_descriptor = list("picks", "grabs")
|
||||
var/self_emote_descriptor = list("grab", "pick", "snatch")
|
||||
var/fruit_type = "apple"
|
||||
var/fruit_type = PLANT_APPLE
|
||||
var/mob/living/organ_owner = null
|
||||
var/gen_cost = 0.5
|
||||
|
||||
@@ -390,7 +390,7 @@
|
||||
break
|
||||
|
||||
if(fruit_gland)
|
||||
var/selection = tgui_input_list(src, "Choose your character's fruit type. Choosing nothing will result in a default of apples.", "Fruit Type", acceptable_fruit_types)
|
||||
var/selection = tgui_input_list(src, "Choose your character's fruit type. Choosing nothing will result in a default of apples.", "Fruit Type", GLOB.acceptable_fruit_types)
|
||||
if(selection)
|
||||
fruit_gland.fruit_type = selection
|
||||
add_verb(src, /mob/living/carbon/human/proc/alraune_fruit_pick)
|
||||
|
||||
@@ -69,10 +69,10 @@
|
||||
//Called when spawning to equip them with special things.
|
||||
/datum/species/custom/equip_survival_gear(var/mob/living/carbon/human/H, var/extendedtank = 0, var/comprehensive = 0)
|
||||
. = ..()
|
||||
if(breath_type != "oxygen")
|
||||
if(breath_type != GAS_O2)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(H), slot_wear_mask)
|
||||
var/obj/item/tank/tankpath
|
||||
if(breath_type == "phoron")
|
||||
if(breath_type == GAS_PHORON)
|
||||
tankpath = /obj/item/tank/vox
|
||||
else
|
||||
tankpath = text2path("/obj/item/tank/" + breath_type)
|
||||
|
||||
@@ -36,7 +36,7 @@ var/datum/species/shapeshifter/promethean/prometheans
|
||||
assisted_langs = list(LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX) // Prometheans are weird, let's just assume they can use basically any language.
|
||||
|
||||
blood_name = "gelatinous ooze"
|
||||
blood_reagents = "slimejelly"
|
||||
blood_reagents = REAGENT_ID_SLIMEJELLY
|
||||
|
||||
breath_type = null
|
||||
poison_type = null
|
||||
|
||||
@@ -137,6 +137,12 @@
|
||||
set hidden = 1
|
||||
humanform.nano_latch()
|
||||
|
||||
/mob/living/simple_mob/protean_blob/proc/nano_assimilate()
|
||||
set name = "Assimilate Host"
|
||||
set desc = "Allows a protean to assimilate a latched host, allowing them to devour them right away."
|
||||
set hidden = 1
|
||||
humanform.nano_assimilate()
|
||||
|
||||
/mob/living/simple_mob/protean_blob/Login()
|
||||
..()
|
||||
plane_holder.set_vis(VIS_AUGMENTED, 1)
|
||||
|
||||
@@ -595,6 +595,32 @@
|
||||
else
|
||||
to_chat(protie, span_warning("You need to be grabbing a humanoid mob aggressively to latch onto them."))
|
||||
|
||||
/mob/living/carbon/human/proc/nano_assimilate()
|
||||
set name = "Assimilate Host"
|
||||
set desc = "Allows a protean to assimilate a latched host, allowing them to devour them right away."
|
||||
set hidden = 1
|
||||
|
||||
var/mob/living/protie = src
|
||||
var/mob/living/carbon/human/target
|
||||
var/datum/species/protean/S = src.species
|
||||
if(nano_dead_check(src))
|
||||
return
|
||||
if(temporary_form)
|
||||
protie = temporary_form
|
||||
if(protie.loc == S.OurRig)
|
||||
target = S.OurRig.wearer
|
||||
if(!target)
|
||||
to_chat(protie, span_vwarning("You need a host to assimilate."))
|
||||
return
|
||||
if(!protie.can_be_drop_pred || !target.can_be_drop_prey || !target.devourable)
|
||||
to_chat(protie, span_vwarning("You can't assimilate your current host."))
|
||||
return
|
||||
target.drop_from_inventory(S.OurRig)
|
||||
to_chat(protie, span_vnotice("You assimilate your host."))
|
||||
to_chat(target, span_vwarning("You feel yourself sink deeper into the suit!"))
|
||||
target.forceMove(protie.vore_selected)
|
||||
nano_blobform(TRUE)
|
||||
|
||||
/// /// /// A helper to reuse
|
||||
/mob/living/proc/nano_get_refactory(obj/item/organ/internal/nano/refactory/R)
|
||||
if(istype(R))
|
||||
@@ -704,6 +730,12 @@
|
||||
icon_state = "latch"
|
||||
to_call = /mob/living/carbon/human/proc/nano_latch
|
||||
|
||||
/obj/effect/protean_ability/assimilate_host
|
||||
ability_name = "Assimilate Host"
|
||||
desc = "Allows a protean to assimilate a latched host, allowing them to devour them right away."
|
||||
icon_state = "assimilate"
|
||||
to_call = /mob/living/carbon/human/proc/nano_assimilate
|
||||
|
||||
/obj/effect/protean_ability/copy_form
|
||||
ability_name = "Copy Form"
|
||||
desc = "If you are aggressively grabbing someone, with their consent, you can turn into a copy of them. (Without their name)."
|
||||
|
||||
@@ -422,7 +422,7 @@
|
||||
charge_amount = 100
|
||||
var/mob/living/carbon/human/charger
|
||||
|
||||
/obj/item/cell/protean/Initialize() //ChompEDIT New --> Initialize
|
||||
/obj/item/cell/protean/Initialize()
|
||||
charge = maxcharge
|
||||
update_icon()
|
||||
addtimer(CALLBACK(src, PROC_REF(search_for_protean)), 60)
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
/mob/living/carbon/human/proc/nano_copy_body,
|
||||
/mob/living/carbon/human/proc/appearance_switch,
|
||||
/mob/living/carbon/human/proc/nano_latch,
|
||||
/mob/living/carbon/human/proc/nano_assimilate,
|
||||
/mob/living/proc/set_size,
|
||||
/mob/living/carbon/human/proc/nano_change_fitting, //These verbs are displayed normally,
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_hair,
|
||||
@@ -239,20 +240,22 @@
|
||||
/datum/species/protean/handle_death(var/mob/living/carbon/human/H)
|
||||
if(!H)
|
||||
return //No body?
|
||||
if(OurRig.dead)
|
||||
return
|
||||
OurRig.dead = 1
|
||||
if(OurRig)
|
||||
if(OurRig.dead)
|
||||
return
|
||||
OurRig.dead = 1
|
||||
var/mob/temp = H
|
||||
if(H.temporary_form)
|
||||
temp = H.temporary_form
|
||||
playsound(temp, 'sound/voice/borg_deathsound.ogg', 50, 1)
|
||||
temp.visible_message(span_bold("[temp.name]") + " shudders and retreats inwards, coalescing into a single core componant!")
|
||||
to_chat(temp, span_warning("You've died as a Protean! While dead, you will be locked to your core RIG control module until you can be repaired. Instructions to your revival can be found in the Examine tab when examining your module."))
|
||||
if(H.temporary_form)
|
||||
if(!istype(H.temporary_form.loc, /obj/item/rig/protean))
|
||||
if(OurRig)
|
||||
if(H.temporary_form)
|
||||
if(!istype(H.temporary_form.loc, /obj/item/rig/protean))
|
||||
H.nano_rig_transform(1)
|
||||
else
|
||||
H.nano_rig_transform(1)
|
||||
else
|
||||
H.nano_rig_transform(1)
|
||||
pseudodead = 1
|
||||
|
||||
/datum/species/protean/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -318,7 +318,7 @@
|
||||
flash_mod = 1.2
|
||||
chemOD_mod = 0.9
|
||||
|
||||
blood_reagents = "copper"
|
||||
blood_reagents = REAGENT_ID_COPPER
|
||||
bloodloss_rate = 1.5
|
||||
|
||||
ambiguous_genders = TRUE
|
||||
@@ -430,7 +430,7 @@
|
||||
warning_low_pressure = 300 // Low pressure warning.
|
||||
hazard_low_pressure = 220 // Dangerously low pressure.
|
||||
safe_pressure = 400
|
||||
poison_type = "nitrogen" // technically it's a partial pressure thing but IDK if we can emulate that
|
||||
poison_type = GAS_N2 // technically it's a partial pressure thing but IDK if we can emulate that
|
||||
ideal_air_type = /datum/gas_mixture/belly_air/zaddat
|
||||
|
||||
genders = list(FEMALE, PLURAL) //females are polyp-producing, infertile females and males are nigh-identical
|
||||
|
||||
+4
-4
@@ -87,9 +87,9 @@
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/hasnutriment()
|
||||
if (bloodstr.has_reagent("nutriment", 30) || src.bloodstr.has_reagent("protein", 15)) //protein needs half as much. For reference, a steak contains 9u protein.
|
||||
if (bloodstr.has_reagent(REAGENT_ID_NUTRIMENT, 30) || src.bloodstr.has_reagent(REAGENT_ID_PROTEIN, 15)) //protein needs half as much. For reference, a steak contains 9u protein.
|
||||
return TRUE
|
||||
else if (ingested.has_reagent("nutriment", 60) || src.ingested.has_reagent("protein", 30)) //try forcefeeding them, why not. Less effective.
|
||||
else if (ingested.has_reagent(REAGENT_ID_NUTRIMENT, 60) || src.ingested.has_reagent(REAGENT_ID_PROTEIN, 30)) //try forcefeeding them, why not. Less effective.
|
||||
return TRUE
|
||||
else return FALSE
|
||||
|
||||
@@ -1621,9 +1621,9 @@
|
||||
continue
|
||||
if(L == src) //no getting high off your own supply, get a nif or something, nerd.
|
||||
continue
|
||||
if(!L.resizable && (trait_injection_selected == "macrocillin" || trait_injection_selected == "microcillin" || trait_injection_selected == "normalcillin")) // If you're using a size reagent, ignore those with pref conflicts.
|
||||
if(!L.resizable && (trait_injection_selected == REAGENT_ID_MACROCILLIN || trait_injection_selected == REAGENT_ID_MICROCILLIN || trait_injection_selected == REAGENT_ID_NORMALCILLIN)) // If you're using a size reagent, ignore those with pref conflicts.
|
||||
continue
|
||||
if(!L.allow_spontaneous_tf && (trait_injection_selected == "androrovir" || trait_injection_selected == "gynorovir" || trait_injection_selected == "androgynorovir")) // If you're using a TF reagent, ignore those with pref conflicts.
|
||||
if(!L.allow_spontaneous_tf && (trait_injection_selected == REAGENT_ID_ANDROROVIR || trait_injection_selected == REAGENT_ID_GYNOROVIR || trait_injection_selected == REAGENT_ID_ANDROGYNOROVIR)) // If you're using a TF reagent, ignore those with pref conflicts.
|
||||
continue
|
||||
targets += L
|
||||
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
flesh_color = "#AFA59E"
|
||||
base_color = "#333333"
|
||||
blood_color = "#240bc4"
|
||||
blood_reagents = "copper"
|
||||
blood_reagents = REAGENT_ID_COPPER
|
||||
reagent_tag = IS_ZORREN
|
||||
color_mult = 1
|
||||
|
||||
|
||||
@@ -154,12 +154,12 @@
|
||||
/datum/trait/negative/breathes/phoron
|
||||
name = "Phoron Breather"
|
||||
desc = "You breathe phoron instead of oxygen (which is poisonous to you), much like a Vox."
|
||||
var_changes = list("breath_type" = "phoron", "poison_type" = "oxygen", "ideal_air_type" = /datum/gas_mixture/belly_air/vox)
|
||||
var_changes = list("breath_type" = GAS_PHORON, "poison_type" = GAS_O2, "ideal_air_type" = /datum/gas_mixture/belly_air/vox)
|
||||
|
||||
/datum/trait/negative/breathes/nitrogen
|
||||
name = "Nitrogen Breather"
|
||||
desc = "You breathe nitrogen instead of oxygen (which is poisonous to you). Incidentally, phoron isn't poisonous to breathe to you."
|
||||
var_changes = list("breath_type" = "nitrogen", "poison_type" = "oxygen", "ideal_air_type" = /datum/gas_mixture/belly_air/nitrogen_breather)
|
||||
var_changes = list("breath_type" = GAS_N2, "poison_type" = GAS_O2, "ideal_air_type" = /datum/gas_mixture/belly_air/nitrogen_breather)
|
||||
|
||||
/datum/trait/negative/monolingual
|
||||
name = "Monolingual"
|
||||
|
||||
@@ -170,17 +170,17 @@
|
||||
/datum/trait/neutral/venom_bite/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..()
|
||||
add_verb(H, /mob/living/proc/injection)
|
||||
H.trait_injection_reagents += "microcillin" // get small
|
||||
H.trait_injection_reagents += "macrocillin" // get BIG
|
||||
H.trait_injection_reagents += "normalcillin" // normal
|
||||
H.trait_injection_reagents += "numbenzyme" // no feelings
|
||||
H.trait_injection_reagents += "androrovir" // -> MALE
|
||||
H.trait_injection_reagents += "gynorovir" // -> FEMALE
|
||||
H.trait_injection_reagents += "androgynorovir" // -> PLURAL
|
||||
H.trait_injection_reagents += "stoxin" // night night chem
|
||||
H.trait_injection_reagents += "rainbowtoxin" // Funny flashing lights.
|
||||
H.trait_injection_reagents += "paralysistoxin" // Paralysis!
|
||||
H.trait_injection_reagents += "painenzyme" // Pain INCREASER
|
||||
H.trait_injection_reagents += REAGENT_ID_MICROCILLIN // get small
|
||||
H.trait_injection_reagents += REAGENT_ID_MACROCILLIN // get BIG
|
||||
H.trait_injection_reagents += REAGENT_ID_NORMALCILLIN // normal
|
||||
H.trait_injection_reagents += REAGENT_ID_NUMBENZYME // no feelings
|
||||
H.trait_injection_reagents += REAGENT_ID_ANDROROVIR // -> MALE
|
||||
H.trait_injection_reagents += REAGENT_ID_GYNOROVIR // -> FEMALE
|
||||
H.trait_injection_reagents += REAGENT_ID_ANDROGYNOROVIR // -> PLURAL
|
||||
H.trait_injection_reagents += REAGENT_ID_STOXIN // night night chem
|
||||
H.trait_injection_reagents += REAGENT_ID_RAINBOWTOXIN // Funny flashing lights.
|
||||
H.trait_injection_reagents += REAGENT_ID_PARALYSISTOXIN // Paralysis!
|
||||
H.trait_injection_reagents += REAGENT_ID_PAINENZYME // Pain INCREASER
|
||||
|
||||
/datum/trait/neutral/long_vore
|
||||
name = "Long Predatorial Reach"
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
var/datum/gas_mixture/environment = T.return_air()
|
||||
if(!environment) return
|
||||
|
||||
if(environment.gas["phoron"] > 0 || locate(/obj/effect/alien/weeds) in T)
|
||||
if(environment.gas[GAS_PHORON] > 0 || locate(/obj/effect/alien/weeds) in T)
|
||||
if(!regenerate(H))
|
||||
var/obj/item/organ/internal/xenos/plasmavessel/P = H.internal_organs_by_name[O_PLASMA]
|
||||
P.stored_plasma += weeds_plasma_rate
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
/obj/item/slime_extract/New()
|
||||
..()
|
||||
create_reagents(5)
|
||||
// reagents.add_reagent("slimejelly", 30)
|
||||
// reagents.add_reagent(REAGENT_ID_SLIMEJELLY, 30)
|
||||
|
||||
/obj/item/slime_extract/grey
|
||||
name = "grey slime extract"
|
||||
@@ -358,8 +358,8 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/egg/slime/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("nutriment", 4)
|
||||
reagents.add_reagent("slimejelly", 1)
|
||||
reagents.add_reagent(REAGENT_ID_NUTRIMENT, 4)
|
||||
reagents.add_reagent(REAGENT_ID_SLIMEJELLY, 1)
|
||||
addtimer(CALLBACK(src, ./proc/Grow), rand(120 SECONDS, 150 SECONDS))
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/egg/slime/proc/Grow()
|
||||
|
||||
@@ -37,7 +37,7 @@ calculate text size per text.
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
if(!R.taste_mult)
|
||||
continue
|
||||
if(R.id == "nutriment") //this is ugly but apparently only nutriment (not subtypes) has taste data TODO figure out why
|
||||
if(R.id == REAGENT_ID_NUTRIMENT) //this is ugly but apparently only nutriment (not subtypes) has taste data TODO figure out why
|
||||
var/list/taste_data = R.get_data()
|
||||
for(var/taste in taste_data)
|
||||
if(taste in tastes)
|
||||
|
||||
@@ -442,7 +442,7 @@
|
||||
return 1
|
||||
|
||||
var/datum/gas_mixture/G = loc.return_air() // Check if we're standing in an oxygenless environment
|
||||
if(G.gas["oxygen"] < 1)
|
||||
if(G.gas[GAS_O2] < 1)
|
||||
ExtinguishMob() //If there's no oxygen in the tile we're on, put out the fire
|
||||
return 1
|
||||
|
||||
|
||||
@@ -340,10 +340,10 @@
|
||||
var/pressure = environment.return_pressure()
|
||||
var/total_moles = environment.total_moles
|
||||
if (total_moles)
|
||||
var/o2_level = environment.gas["oxygen"]/total_moles
|
||||
var/n2_level = environment.gas["nitrogen"]/total_moles
|
||||
var/co2_level = environment.gas["carbon_dioxide"]/total_moles
|
||||
var/phoron_level = environment.gas["phoron"]/total_moles
|
||||
var/o2_level = environment.gas[GAS_O2]/total_moles
|
||||
var/n2_level = environment.gas[GAS_N2]/total_moles
|
||||
var/co2_level = environment.gas[GAS_CO2]/total_moles
|
||||
var/phoron_level = environment.gas[GAS_PHORON]/total_moles
|
||||
var/unknown_level = 1-(o2_level+n2_level+co2_level+phoron_level)
|
||||
|
||||
// entry is what the element is describing
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
name = "MediHound hypospray"
|
||||
desc = "An advanced chemical synthesizer and injection system utilizing carrier's reserves, designed for heavy-duty medical equipment."
|
||||
charge_cost = 10
|
||||
reagent_ids = list("inaprovaline", "dexalin", "bicaridine", "kelotane", "anti_toxin", "spaceacillin", "paracetamol")
|
||||
reagent_ids = list(REAGENT_ID_INAPROVALINE, REAGENT_ID_DEXALIN, REAGENT_ID_BICARIDINE, REAGENT_ID_KELOTANE, REAGENT_ID_ANTITOXIN, REAGENT_ID_SPACEACILLIN, REAGENT_ID_PARACETAMOL)
|
||||
var/datum/matter_synth/water = null
|
||||
|
||||
/obj/item/reagent_containers/borghypo/hound/process() //Recharges in smaller steps and uses the water reserves as well.
|
||||
@@ -220,12 +220,12 @@
|
||||
/obj/item/reagent_containers/borghypo/hound/lost
|
||||
name = "Hound hypospray"
|
||||
desc = "An advanced chemical synthesizer and injection system utilizing carrier's reserves."
|
||||
reagent_ids = list("tricordrazine", "inaprovaline", "bicaridine", "dexalin", "anti_toxin", "tramadol", "spaceacillin")
|
||||
reagent_ids = list(REAGENT_ID_TRICORDRAZINE, REAGENT_ID_INAPROVALINE, REAGENT_ID_BICARIDINE, REAGENT_ID_DEXALIN, REAGENT_ID_ANTITOXIN, REAGENT_ID_TRAMADOL, REAGENT_ID_SPACEACILLIN)
|
||||
|
||||
/obj/item/reagent_containers/borghypo/hound/trauma
|
||||
name = "Hound hypospray"
|
||||
desc = "An advanced chemical synthesizer and injection system utilizing carrier's reserves."
|
||||
reagent_ids = list("tricordrazine", "inaprovaline", "oxycodone", "dexalin" ,"spaceacillin")
|
||||
reagent_ids = list(REAGENT_ID_TRICORDRAZINE, REAGENT_ID_INAPROVALINE, REAGENT_ID_OXYCODONE, REAGENT_ID_DEXALIN ,REAGENT_ID_SPACEACILLIN)
|
||||
|
||||
|
||||
//Tongue stuff
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
var/min_health = -100
|
||||
var/cleaning = 0
|
||||
var/patient_laststat = null
|
||||
var/list/injection_chems = list("inaprovaline", "bicaridine", "kelotane", "anti_toxin", "dexalin", "tricordrazine", "spaceacillin", "tramadol") //The borg is able to heal every damage type. As a nerf, they use 750 charge per injection.
|
||||
var/list/injection_chems = list(REAGENT_ID_INAPROVALINE, REAGENT_ID_BICARIDINE, REAGENT_ID_KELOTANE, REAGENT_ID_ANTITOXIN, REAGENT_ID_DEXALIN, REAGENT_ID_TRICORDRAZINE, REAGENT_ID_SPACEACILLIN, REAGENT_ID_TRAMADOL) //The borg is able to heal every damage type. As a nerf, they use 750 charge per injection.
|
||||
var/eject_port = "ingestion"
|
||||
var/list/items_preserved = list()
|
||||
var/UI_open = FALSE
|
||||
@@ -449,7 +449,7 @@
|
||||
return
|
||||
|
||||
if(patient && !(patient.stat & DEAD)) //What is bitwise NOT? ... Thought it was tilde.
|
||||
if(href_list["inject"] == "inaprovaline" || patient.health > min_health)
|
||||
if(href_list["inject"] == REAGENT_ID_INAPROVALINE || patient.health > min_health)
|
||||
inject_chem(usr, href_list["inject"])
|
||||
else
|
||||
to_chat(usr, span_notice("ERROR: Subject is not in stable condition for injections."))
|
||||
@@ -462,7 +462,7 @@
|
||||
|
||||
/obj/item/dogborg/sleeper/proc/inject_chem(mob/user, chem)
|
||||
if(patient && patient.reagents)
|
||||
if(chem in injection_chems + "inaprovaline")
|
||||
if(chem in injection_chems + REAGENT_ID_INAPROVALINE)
|
||||
if(hound.cell.charge < 800) //This is so borgs don't kill themselves with it.
|
||||
to_chat(hound, span_notice("You don't have enough power to synthesize fluids."))
|
||||
return
|
||||
@@ -660,12 +660,12 @@
|
||||
total_material *= stack.get_amount()
|
||||
if(material == MAT_STEEL && metal)
|
||||
metal.add_charge(total_material)
|
||||
if(material == "glass" && glass)
|
||||
if(material == MAT_GLASS && glass)
|
||||
glass.add_charge(total_material)
|
||||
if(decompiler)
|
||||
if(material == "plastic" && plastic)
|
||||
if(material == MAT_PLASTIC && plastic)
|
||||
plastic.add_charge(total_material)
|
||||
if(material == "wood" && wood)
|
||||
if(material == MAT_WOOD && wood)
|
||||
wood.add_charge(total_material)
|
||||
drain(-50 * digested)
|
||||
else if(istype(target,/obj/effect/decal/remains))
|
||||
@@ -748,7 +748,7 @@
|
||||
name = "Supply Storage"
|
||||
desc = "A mounted survival unit with fuel processor, helpful with both deliveries and assisting injured miners."
|
||||
icon_state = "sleeperc"
|
||||
injection_chems = list("glucose","inaprovaline","tricordrazine")
|
||||
injection_chems = list(REAGENT_ID_GLUCOSE,REAGENT_ID_INAPROVALINE,REAGENT_ID_TRICORDRAZINE)
|
||||
max_item_count = 10
|
||||
recycles = FALSE
|
||||
stabilizer = TRUE
|
||||
@@ -775,19 +775,19 @@
|
||||
name = "Emergency Storage"
|
||||
desc = "A mounted 'emergency containment cell'."
|
||||
icon_state = "sleeperert"
|
||||
injection_chems = list("inaprovaline", "tramadol") // short list
|
||||
injection_chems = list(REAGENT_ID_INAPROVALINE, REAGENT_ID_TRAMADOL) // short list
|
||||
|
||||
/obj/item/dogborg/sleeper/trauma //Trauma borg belly
|
||||
name = "Recovery Belly"
|
||||
desc = "A downgraded model of the sleeper belly, intended primarily for post-surgery recovery."
|
||||
icon_state = "sleeper"
|
||||
injection_chems = list("inaprovaline", "dexalin", "tricordrazine", "spaceacillin", "oxycodone")
|
||||
injection_chems = list(REAGENT_ID_INAPROVALINE, REAGENT_ID_DEXALIN, REAGENT_ID_TRICORDRAZINE, REAGENT_ID_SPACEACILLIN, REAGENT_ID_OXYCODONE)
|
||||
|
||||
/obj/item/dogborg/sleeper/lost
|
||||
name = "Multipurpose Belly"
|
||||
desc = "A multipurpose belly, capable of functioning as both sleeper and processor."
|
||||
icon_state = "sleeperlost"
|
||||
injection_chems = list("tricordrazine", "bicaridine", "dexalin", "anti_toxin", "tramadol", "spaceacillin")
|
||||
injection_chems = list(REAGENT_ID_TRICORDRAZINE, REAGENT_ID_BICARIDINE, REAGENT_ID_DEXALIN, REAGENT_ID_ANTITOXIN, REAGENT_ID_TRAMADOL, REAGENT_ID_SPACEACILLIN)
|
||||
compactor = TRUE
|
||||
max_item_count = 25
|
||||
stabilizer = TRUE
|
||||
@@ -797,7 +797,7 @@
|
||||
name = "Combat Triage Belly"
|
||||
desc = "A mounted sleeper that stabilizes patients and can inject reagents in the borg's reserves. This one is for more extreme combat scenarios."
|
||||
icon_state = "sleepersyndiemed"
|
||||
injection_chems = list("healing_nanites", "hyperzine", "tramadol", "oxycodone", "spaceacillin", "peridaxon", "osteodaxon", "myelamine", "synthblood")
|
||||
injection_chems = list(REAGENT_ID_HEALINGNANITES, REAGENT_ID_HYPERZINE, REAGENT_ID_TRAMADOL, REAGENT_ID_OXYCODONE, REAGENT_ID_SPACEACILLIN, REAGENT_ID_PERIDAXON, REAGENT_ID_OSTEODAXON, REAGENT_ID_MYELAMINE, REAGENT_ID_SYNTHBLOOD)
|
||||
digest_multiplier = 2
|
||||
|
||||
/obj/item/dogborg/sleeper/K9/syndie
|
||||
|
||||
@@ -260,7 +260,7 @@ var/global/list/robot_modules = list(
|
||||
|
||||
var/obj/item/reagent_containers/spray/PS = new /obj/item/reagent_containers/spray(src)
|
||||
src.emag += PS
|
||||
PS.reagents.add_reagent("pacid", 250)
|
||||
PS.reagents.add_reagent(REAGENT_ID_PACID, 250)
|
||||
PS.name = "Polyacid spray"
|
||||
|
||||
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(10000)
|
||||
@@ -296,7 +296,7 @@ var/global/list/robot_modules = list(
|
||||
|
||||
var/obj/item/reagent_containers/spray/PS = locate() in src.emag
|
||||
if(PS)
|
||||
PS.reagents.add_reagent("pacid", 2 * amount)
|
||||
PS.reagents.add_reagent(REAGENT_ID_PACID, 2 * amount)
|
||||
|
||||
..()
|
||||
|
||||
@@ -319,7 +319,7 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/inflatable_dispenser/robot(src)
|
||||
var/obj/item/reagent_containers/spray/PS = new /obj/item/reagent_containers/spray(src)
|
||||
src.emag += PS
|
||||
PS.reagents.add_reagent("pacid", 250)
|
||||
PS.reagents.add_reagent(REAGENT_ID_PACID, 250)
|
||||
PS.name = "Polyacid spray"
|
||||
|
||||
var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(15000)
|
||||
@@ -355,7 +355,7 @@ var/global/list/robot_modules = list(
|
||||
|
||||
var/obj/item/reagent_containers/spray/PS = locate() in src.emag
|
||||
if(PS)
|
||||
PS.reagents.add_reagent("pacid", 2 * amount)
|
||||
PS.reagents.add_reagent(REAGENT_ID_PACID, 2 * amount)
|
||||
|
||||
..()
|
||||
|
||||
@@ -519,7 +519,7 @@ var/global/list/robot_modules = list(
|
||||
src.modules += new /obj/item/borg/sight/janitor(src)
|
||||
var/obj/item/reagent_containers/spray/LS = new /obj/item/reagent_containers/spray(src)
|
||||
src.emag += LS
|
||||
LS.reagents.add_reagent("lube", 250)
|
||||
LS.reagents.add_reagent(REAGENT_ID_LUBE, 250)
|
||||
LS.name = "Lube spray"
|
||||
|
||||
//Starts empty. Can only recharge with recycled material.
|
||||
@@ -568,7 +568,7 @@ var/global/list/robot_modules = list(
|
||||
|
||||
var/obj/item/reagent_containers/spray/LS = locate() in src.emag
|
||||
if(LS)
|
||||
LS.reagents.add_reagent("lube", 2 * amount)
|
||||
LS.reagents.add_reagent(REAGENT_ID_LUBE, 2 * amount)
|
||||
|
||||
/obj/item/robot_module/robot/clerical
|
||||
name = "service robot module"
|
||||
@@ -634,7 +634,7 @@ var/global/list/robot_modules = list(
|
||||
var/datum/reagents/R = new/datum/reagents(50)
|
||||
PB.reagents = R
|
||||
R.my_atom = PB
|
||||
R.add_reagent("beer2", 50)
|
||||
R.add_reagent(REAGENT_ID_BEER2, 50)
|
||||
PB.name = "Auntie Hong's Final Sip"
|
||||
PB.desc = "A bottle of very special mix of alcohol and poison. Some may argue that there's alcohol to die for, but Auntie Hong took it to next level."
|
||||
|
||||
@@ -645,7 +645,7 @@ var/global/list/robot_modules = list(
|
||||
/obj/item/robot_module/robot/clerical/butler/respawn_consumable(var/mob/living/silicon/robot/R, var/amount)
|
||||
var/obj/item/reagent_containers/food/drinks/bottle/small/beer/PB = locate() in src.emag
|
||||
if(PB)
|
||||
PB.reagents.add_reagent("beer2", 2 * amount)
|
||||
PB.reagents.add_reagent(REAGENT_ID_BEER2, 2 * amount)
|
||||
|
||||
/obj/item/robot_module/robot/clerical/general
|
||||
name = "clerical robot module"
|
||||
|
||||
@@ -206,13 +206,13 @@
|
||||
rest_sprite_options = list("Default")
|
||||
has_extra_customization = TRUE
|
||||
|
||||
var/list/booze_options = list("Beer" = "booze",
|
||||
var/list/booze_options = list(REAGENT_BEER = "booze",
|
||||
"Space Mountain Wind" = "boozegreen",
|
||||
"Curacao" = "boozeblue",
|
||||
"Grape Soda" = "boozepurple",
|
||||
REAGENT_GRAPESODA = "boozepurple",
|
||||
"Demon's Blood" = "boozered",
|
||||
"Whiskey Soda" = "boozeorange",
|
||||
"Coffee" = "boozebrown")
|
||||
REAGENT_WHISKEYSODA = "boozeorange",
|
||||
REAGENT_COFFEE = "boozebrown")
|
||||
|
||||
/datum/robot_sprite/dogborg/service/booze/handle_extra_icon_updates(var/mob/living/silicon/robot/ourborg)
|
||||
if(!("boozehound" in ourborg.sprite_extra_customization) || !ourborg.sprite_extra_customization["boozehound"])
|
||||
|
||||
@@ -118,37 +118,37 @@
|
||||
if( abs(Environment.temperature - bodytemperature) > temperature_range ) //VOREStation Edit: heating adjustments
|
||||
bodytemperature += ((Environment.temperature - bodytemperature) / 5)
|
||||
|
||||
if(min_oxy && Environment.gas["oxygen"] < min_oxy)
|
||||
if(min_oxy && Environment.gas[GAS_O2] < min_oxy)
|
||||
atmos_unsuitable = 1
|
||||
throw_alert("oxy", /obj/screen/alert/not_enough_oxy)
|
||||
else if(max_oxy && Environment.gas["oxygen"] > max_oxy)
|
||||
else if(max_oxy && Environment.gas[GAS_O2] > max_oxy)
|
||||
atmos_unsuitable = 1
|
||||
throw_alert("oxy", /obj/screen/alert/too_much_oxy)
|
||||
else
|
||||
clear_alert("oxy")
|
||||
|
||||
if(min_tox && Environment.gas["phoron"] < min_tox)
|
||||
if(min_tox && Environment.gas[GAS_PHORON] < min_tox)
|
||||
atmos_unsuitable = 2
|
||||
throw_alert("tox_in_air", /obj/screen/alert/not_enough_tox)
|
||||
else if(max_tox && Environment.gas["phoron"] > max_tox)
|
||||
else if(max_tox && Environment.gas[GAS_PHORON] > max_tox)
|
||||
atmos_unsuitable = 2
|
||||
throw_alert("tox_in_air", /obj/screen/alert/tox_in_air)
|
||||
else
|
||||
clear_alert("tox_in_air")
|
||||
|
||||
if(min_n2 && Environment.gas["nitrogen"] < min_n2)
|
||||
if(min_n2 && Environment.gas[GAS_N2] < min_n2)
|
||||
atmos_unsuitable = 1
|
||||
throw_alert("n2o", /obj/screen/alert/not_enough_nitro)
|
||||
else if(max_n2 && Environment.gas["nitrogen"] > max_n2)
|
||||
else if(max_n2 && Environment.gas[GAS_N2] > max_n2)
|
||||
atmos_unsuitable = 1
|
||||
throw_alert("n2o", /obj/screen/alert/too_much_nitro)
|
||||
else
|
||||
clear_alert("n2o")
|
||||
|
||||
if(min_co2 && Environment.gas["carbon_dioxide"] < min_co2)
|
||||
if(min_co2 && Environment.gas[GAS_CO2] < min_co2)
|
||||
atmos_unsuitable = 1
|
||||
throw_alert("co2", /obj/screen/alert/not_enough_co2)
|
||||
else if(max_co2 && Environment.gas["carbon_dioxide"] > max_co2)
|
||||
else if(max_co2 && Environment.gas[GAS_CO2] > max_co2)
|
||||
atmos_unsuitable = 1
|
||||
throw_alert("co2", /obj/screen/alert/too_much_co2)
|
||||
else
|
||||
|
||||
@@ -161,9 +161,9 @@
|
||||
return
|
||||
to_chat(user, span_notice("\The [src] seems too full to eat."))
|
||||
return
|
||||
var/nutriment_amount = O.reagents?.get_reagent_amount("nutriment") //does it have nutriment, if so how much?
|
||||
var/protein_amount = O.reagents?.get_reagent_amount("protein") //does it have protein, if so how much?
|
||||
var/glucose_amount = O.reagents?.get_reagent_amount("glucose") //does it have glucose, if so how much?
|
||||
var/nutriment_amount = O.reagents?.get_reagent_amount(REAGENT_ID_NUTRIMENT) //does it have nutriment, if so how much?
|
||||
var/protein_amount = O.reagents?.get_reagent_amount(REAGENT_ID_PROTEIN) //does it have protein, if so how much?
|
||||
var/glucose_amount = O.reagents?.get_reagent_amount(REAGENT_ID_GLUCOSE) //does it have glucose, if so how much?
|
||||
var/yum = nutriment_amount + protein_amount + glucose_amount
|
||||
if(yum)
|
||||
yum = (yum * 20) / 3
|
||||
|
||||
@@ -168,4 +168,4 @@ GLOBAL_VAR_INIT(jellyfish_count, 0)
|
||||
/obj/item/reagent_containers/food/snacks/jellyfishcore/Initialize()
|
||||
nutriment_amt += inherited_nutriment
|
||||
. = ..()
|
||||
reagents.add_reagent("nutriment", nutriment_amt, nutriment_desc)
|
||||
reagents.add_reagent(REAGENT_ID_NUTRIMENT, nutriment_amt, nutriment_desc)
|
||||
|
||||
@@ -1437,7 +1437,7 @@
|
||||
water_state = "enzyme_shallow"
|
||||
under_state = "flesh_floor"
|
||||
|
||||
reagent_type = "Sulphuric acid" //why not
|
||||
reagent_type = REAGENT_ID_SACID //why not
|
||||
outdoors = FALSE
|
||||
var/mob/living/simple_mob/vore/overmap/stardog/linked_mob
|
||||
var/mobstuff = TRUE //if false, we don't care about dogs, and that's terrible
|
||||
|
||||
@@ -512,9 +512,9 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
|
||||
if(nutrition >= 5000)
|
||||
user.visible_message(span_notice("\The [user] tries to feed \the [O] to \the [src]. It snoofs but does not eat."),span_notice("You try to feed \the [O] to \the [src], but it only snoofts at it."))
|
||||
return
|
||||
var/nutriment_amount = O.reagents?.get_reagent_amount("nutriment") //does it have nutriment, if so how much?
|
||||
var/protein_amount = O.reagents?.get_reagent_amount("protein") //does it have protein, if so how much?
|
||||
var/glucose_amount = O.reagents?.get_reagent_amount("glucose") //does it have glucose, if so how much?
|
||||
var/nutriment_amount = O.reagents?.get_reagent_amount(REAGENT_ID_NUTRIMENT) //does it have nutriment, if so how much?
|
||||
var/protein_amount = O.reagents?.get_reagent_amount(REAGENT_ID_PROTEIN) //does it have protein, if so how much?
|
||||
var/glucose_amount = O.reagents?.get_reagent_amount(REAGENT_ID_GLUCOSE) //does it have glucose, if so how much?
|
||||
var/yum = nutriment_amount + protein_amount + glucose_amount
|
||||
if(yum)
|
||||
if(!teppi_adult)
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
/mob/living/simple_mob/animal/borer/handle_special()
|
||||
if(host && !stat && !host.stat)
|
||||
// Handle docility.
|
||||
if(host.reagents.has_reagent("sugar") && !docile)
|
||||
if(host.reagents.has_reagent(REAGENT_ID_SUGAR) && !docile)
|
||||
var/message = "You feel the soporific flow of sugar in your host's blood, lulling you into docility."
|
||||
var/target = controlling ? host : src
|
||||
to_chat(target, span_warning(message))
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
if(chemicals < 50)
|
||||
to_chat(src, span_warning("You don't have enough chemicals!"))
|
||||
|
||||
var/chem = tgui_input_list(usr, "Select a chemical to secrete.", "Chemicals", list("alkysine","bicaridine","hyperzine","tramadol"))
|
||||
var/chem = tgui_input_list(usr, "Select a chemical to secrete.", "Chemicals", list(REAGENT_ID_ALKYSINE,REAGENT_ID_BICARIDINE,REAGENT_ID_HYPERZINE,REAGENT_ID_TRAMADOL))
|
||||
|
||||
if(!chem || chemicals < 50 || !host || controlling || !src || stat) //Sanity check.
|
||||
return
|
||||
|
||||
@@ -50,7 +50,7 @@ GLOBAL_VAR_INIT(chicken_count, 0) // How mant chickens DO we have?
|
||||
/mob/living/simple_mob/animal/passive/chicken/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(istype(O, /obj/item/reagent_containers/food/snacks/grown)) //feedin' dem chickens
|
||||
var/obj/item/reagent_containers/food/snacks/grown/G = O
|
||||
if(G.seed && G.seed.kitchen_tag == "wheat")
|
||||
if(G.seed && G.seed.kitchen_tag == PLANT_WHEAT)
|
||||
if(!stat && eggsleft < 8)
|
||||
user.visible_message(span_blue("[user] feeds [O] to [name]! It clucks happily."),span_blue("You feed [O] to [name]! It clucks happily."))
|
||||
user.drop_item()
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
var/obj/item/reagent_containers/glass/G = O
|
||||
if(stat == CONSCIOUS && istype(G) && G.is_open_container())
|
||||
user.visible_message(span_notice("[user] milks [src] using \the [O]."))
|
||||
var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
|
||||
var/transfered = udder.trans_id_to(G, REAGENT_ID_MILK, rand(5,10))
|
||||
if(G.reagents.total_volume >= G.volume)
|
||||
to_chat(user, span_red("The [O] is full."))
|
||||
if(!transfered)
|
||||
@@ -45,7 +45,7 @@
|
||||
. = ..()
|
||||
if(stat == CONSCIOUS)
|
||||
if(udder && prob(5))
|
||||
udder.add_reagent("milk", rand(5, 10))
|
||||
udder.add_reagent(REAGENT_ID_MILK, rand(5, 10))
|
||||
|
||||
/mob/living/simple_mob/animal/passive/cow/attack_hand(mob/living/carbon/M as mob)
|
||||
if(!stat && M.a_intent == I_DISARM && icon_state != icon_dead)
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
if(.)
|
||||
if(stat == CONSCIOUS)
|
||||
if(udder && prob(5))
|
||||
udder.add_reagent("milk", rand(5, 10))
|
||||
udder.add_reagent(REAGENT_ID_MILK, rand(5, 10))
|
||||
|
||||
if(locate(/obj/effect/plant) in loc)
|
||||
var/obj/effect/plant/SV = locate() in loc
|
||||
@@ -64,7 +64,7 @@
|
||||
var/obj/item/reagent_containers/glass/G = O
|
||||
if(stat == CONSCIOUS && istype(G) && G.is_open_container())
|
||||
user.visible_message(span_notice("[user] milks [src] using \the [O]."))
|
||||
var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
|
||||
var/transfered = udder.trans_id_to(G, REAGENT_ID_MILK, rand(5,10))
|
||||
if(G.reagents.total_volume >= G.volume)
|
||||
to_chat(user, span_red("The [O] is full."))
|
||||
if(!transfered)
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/meat = 20
|
||||
)
|
||||
|
||||
var/poison_type = "spidertoxin" // The reagent that gets injected when it attacks.
|
||||
var/poison_type = REAGENT_ID_SPIDERTOXIN // The reagent that gets injected when it attacks.
|
||||
var/poison_chance = 10 // Chance for injection to occur.
|
||||
var/poison_per_bite = 5 // Amount added per injection.
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
special_attack_cooldown = 6 SECONDS
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/giant_spider_broodmother
|
||||
poison_per_bite = 2
|
||||
poison_type = "cyanide"
|
||||
poison_type = REAGENT_ID_CYANIDE
|
||||
|
||||
loot_list = list(/obj/item/royal_spider_egg = 100)
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
melee_damage_upper = 25
|
||||
|
||||
poison_per_bite = 3
|
||||
poison_type = "chloralhydrate"
|
||||
poison_type = REAGENT_ID_CHLORALHYDRATE
|
||||
|
||||
movement_cooldown = 2
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
poison_chance = 15
|
||||
poison_per_bite = 3
|
||||
poison_type = "stimm"
|
||||
poison_type = REAGENT_ID_STIMM
|
||||
|
||||
shock_resist = 0.75
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
health = 175
|
||||
|
||||
poison_per_bite = 5
|
||||
poison_type = "cryotoxin"
|
||||
poison_type = REAGENT_ID_CRYOTOXIN
|
||||
heat_resist = -0.50
|
||||
cold_resist = 0.75
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
poison_chance = 15
|
||||
poison_per_bite = 2
|
||||
poison_type = "psilocybin"
|
||||
poison_type = REAGENT_ID_PSILOCYBIN
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/electric_spider
|
||||
|
||||
@@ -62,4 +62,4 @@
|
||||
can_lay_eggs = FALSE
|
||||
|
||||
/mob/living/simple_mob/animal/giant_spider/nurse/queen/eggless
|
||||
can_lay_eggs = FALSE
|
||||
can_lay_eggs = FALSE
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 10
|
||||
poison_chance = 30
|
||||
poison_type = "cryptobiolin"
|
||||
poison_type = REAGENT_ID_CRYPTOBIOLIN
|
||||
poison_per_bite = 1
|
||||
|
||||
player_msg = "You have an imperfect, but automatic stealth. If you attack something while 'hidden', then \
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
melee_damage_lower = 5 // Doesn't do a lot of damage, since the goal is to make more spiders with egg attacks.
|
||||
melee_damage_upper = 10
|
||||
poison_per_bite = 5
|
||||
poison_type = "stoxin"
|
||||
poison_type = REAGENT_ID_STOXIN
|
||||
|
||||
player_msg = "You can spin webs on an adjacent tile, or cocoon an object by clicking on it.<br>\
|
||||
You can also cocoon a dying or dead entity by clicking on them, and you will gain charges for egg-laying.<br>\
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
|
||||
poison_chance = 20
|
||||
poison_per_bite = 5
|
||||
poison_type = "condensedcapsaicin_v"
|
||||
poison_type = REAGENT_ID_CONDENSEDCAPSAICINV
|
||||
|
||||
/mob/living/simple_mob/animal/giant_spider/pepper/Initialize()
|
||||
adjust_scale(1.1)
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
poison_chance = 30
|
||||
poison_per_bite = 0.5
|
||||
poison_type = "phoron"
|
||||
poison_type = REAGENT_ID_PHORON
|
||||
|
||||
tame_items = list(
|
||||
/obj/item/tank/phoron = 20,
|
||||
|
||||
@@ -35,4 +35,4 @@
|
||||
|
||||
poison_chance = 30
|
||||
poison_per_bite = 1
|
||||
poison_type = "thermite_v"
|
||||
poison_type = REAGENT_ID_THERMITEV
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
poison_chance = 15
|
||||
poison_per_bite = 3
|
||||
poison_type = "serotrotium_v"
|
||||
poison_type = REAGENT_ID_SEROTROTIUMV
|
||||
|
||||
// ai_holder_type = /datum/ai_holder/simple_mob/melee/tunneler
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 15
|
||||
poison_per_bite = 2
|
||||
poison_type = "psilocybin"
|
||||
poison_type = REAGENT_ID_PSILOCYBIN
|
||||
player_msg = "You can fire a ranged attack by clicking on an enemy or tile at a distance."
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged
|
||||
|
||||
@@ -57,4 +57,4 @@
|
||||
return
|
||||
B.old_style_target(A, src)
|
||||
B.fire()
|
||||
set_AI_busy(FALSE)
|
||||
set_AI_busy(FALSE)
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
/mob/living/simple_mob/animal/passive/fish/koi/poisonous/Initialize()
|
||||
. = ..()
|
||||
create_reagents(60)
|
||||
reagents.add_reagent("toxin", 45)
|
||||
reagents.add_reagent("impedrezene", 15)
|
||||
reagents.add_reagent(REAGENT_ID_TOXIN, 45)
|
||||
reagents.add_reagent(REAGENT_ID_IMPEDREZENE, 15)
|
||||
|
||||
/mob/living/simple_mob/animal/passive/fish/koi/poisonous/Life()
|
||||
..()
|
||||
@@ -56,8 +56,8 @@
|
||||
/mob/living/simple_mob/animal/passive/fish/koi/poisonous/proc/sting(var/mob/living/M)
|
||||
if(!M.reagents)
|
||||
return 0
|
||||
M.reagents.add_reagent("toxin", 2)
|
||||
M.reagents.add_reagent("impedrezene", 1)
|
||||
M.reagents.add_reagent(REAGENT_ID_TOXIN, 2)
|
||||
M.reagents.add_reagent(REAGENT_ID_IMPEDREZENE, 1)
|
||||
return 1
|
||||
|
||||
/mob/living/simple_mob/animal/passive/fish/measelshark
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
if(istype(O, /obj/item/reagent_containers/food/snacks/grown))
|
||||
var/obj/item/reagent_containers/food/snacks/grown/G = O
|
||||
|
||||
if(G.seed && G.seed.kitchen_tag == "berries")
|
||||
if(G.seed && G.seed.kitchen_tag == PLANT_BERRIES)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -493,7 +493,7 @@ var/global/list/wounds_being_tended_by_drakes = list()
|
||||
for(var/obj/item/organ/external/E in H.organs)
|
||||
if(E.status & ORGAN_BLEEDING)
|
||||
E.organ_clamp()
|
||||
H.bloodstr.add_reagent("sifsap", rand(1,2))
|
||||
H.bloodstr.add_reagent(REAGENT_ID_SIFSAP, rand(1,2))
|
||||
for(var/datum/wound/W in E.wounds)
|
||||
W.salve()
|
||||
W.disinfect()
|
||||
|
||||
@@ -49,9 +49,9 @@
|
||||
var/list/bodypart_targets = list(BP_L_LEG,BP_R_LEG,BP_L_ARM,BP_R_ARM,BP_TORSO,BP_GROIN,BP_HEAD)
|
||||
var/infest_target = BP_TORSO // The currently chosen bodypart to infest.
|
||||
var/mob/living/carbon/host // Our humble host.
|
||||
var/list/produceable_chemicals = list("inaprovaline","anti_toxin","alkysine","bicaridine","tramadol","kelotane","leporazine","iron","phoron","condensedcapsaicin_v","frostoil")
|
||||
var/randomized_reagent = "iron" // The reagent chosen at random to be produced, if there's no one piloting the worm.
|
||||
var/passive_reagent = "paracetamol" // Reagent passively produced by the leech. Should usually be a painkiller.
|
||||
var/list/produceable_chemicals = list(REAGENT_ID_INAPROVALINE,REAGENT_ID_ANTITOXIN,REAGENT_ID_ALKYSINE,REAGENT_ID_BICARIDINE,REAGENT_ID_TRAMADOL,REAGENT_ID_KELOTANE,REAGENT_ID_LEPORAZINE,REAGENT_ID_IRON,REAGENT_ID_PHORON,REAGENT_ID_CONDENSEDCAPSAICINV,REAGENT_ID_FROSTOIL)
|
||||
var/randomized_reagent = REAGENT_ID_IRON // The reagent chosen at random to be produced, if there's no one piloting the worm.
|
||||
var/passive_reagent = REAGENT_ID_PARACETAMOL // Reagent passively produced by the leech. Should usually be a painkiller.
|
||||
|
||||
var/feeding_delay = 30 SECONDS // How long do we have to wait to bite our host's organs?
|
||||
var/last_feeding = 0
|
||||
@@ -159,7 +159,7 @@
|
||||
ai_holder.hostile = FALSE
|
||||
ai_holder.lose_target()
|
||||
alpha = 5
|
||||
if(host.reagents.has_reagent("cordradaxon") && !docile) // Overwhelms the leech with food.
|
||||
if(host.reagents.has_reagent(REAGENT_ID_CORDRADAXON) && !docile) // Overwhelms the leech with food.
|
||||
var/message = "We feel the rush of cardiac pluripotent cells in your host's blood, lulling us into docility."
|
||||
to_chat(src, span_warning(message))
|
||||
docile = TRUE
|
||||
@@ -178,32 +178,32 @@
|
||||
if(!docile && ishuman(host) && chemicals < max_chemicals)
|
||||
var/mob/living/carbon/human/H = host
|
||||
H.remove_blood(1)
|
||||
if(!H.reagents.has_reagent("inaprovaline"))
|
||||
H.reagents.add_reagent("inaprovaline", 1)
|
||||
if(!H.reagents.has_reagent(REAGENT_ID_INAPROVALINE))
|
||||
H.reagents.add_reagent(REAGENT_ID_INAPROVALINE, 1)
|
||||
chemicals += 2
|
||||
|
||||
if(!client && !docile) // Automatic 'AI' to manage damage levels.
|
||||
if(host.getBruteLoss() >= 30 && chemicals > 50)
|
||||
host.reagents.add_reagent("bicaridine", 5)
|
||||
host.reagents.add_reagent(REAGENT_ID_BICARIDINE, 5)
|
||||
chemicals -= 30
|
||||
|
||||
if(host.getToxLoss() >= 30 && chemicals > 50)
|
||||
var/randomchem = pickweight(list("tramadol" = 7, "anti_toxin" = 15, "frostoil" = 3))
|
||||
var/randomchem = pickweight(list(REAGENT_ID_TRAMADOL = 7, REAGENT_ID_ANTITOXIN = 15, REAGENT_ID_FROSTOIL = 3))
|
||||
host.reagents.add_reagent(randomchem, 5)
|
||||
chemicals -= 50
|
||||
|
||||
if(host.getFireLoss() >= 30 && chemicals > 50)
|
||||
host.reagents.add_reagent("kelotane", 5)
|
||||
host.reagents.add_reagent("leporazine", 2)
|
||||
host.reagents.add_reagent(REAGENT_ID_KELOTANE, 5)
|
||||
host.reagents.add_reagent(REAGENT_ID_LEPORAZINE, 2)
|
||||
chemicals -= 50
|
||||
|
||||
if(host.getOxyLoss() >= 30 && chemicals > 50)
|
||||
host.reagents.add_reagent("iron", 10)
|
||||
host.reagents.add_reagent(REAGENT_ID_IRON, 10)
|
||||
chemicals -= 40
|
||||
|
||||
if(host.getBrainLoss() >= 10 && chemicals > 100)
|
||||
host.reagents.add_reagent("alkysine", 5)
|
||||
host.reagents.add_reagent("tramadol", 3)
|
||||
host.reagents.add_reagent(REAGENT_ID_ALKYSINE, 5)
|
||||
host.reagents.add_reagent(REAGENT_ID_TRAMADOL, 3)
|
||||
chemicals -= 100
|
||||
|
||||
if(prob(30) && chemicals > 50)
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
icon = 'icons/mob/snake_vr.dmi'
|
||||
icon_state = "snack_yellow"
|
||||
nutriment_amt = 1
|
||||
nutriment_desc = list("sugar" = 1)
|
||||
nutriment_desc = list(REAGENT_ID_SUGAR = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/snakesnack/Initialize()
|
||||
. = ..()
|
||||
@@ -166,7 +166,7 @@
|
||||
snack_colour = pick( list("yellow","green","pink","blue") )
|
||||
icon_state = "snack_[snack_colour]"
|
||||
desc = "A little mouse treat made of coloured sugar. Noodle loves these! This one is [snack_colour]."
|
||||
reagents.add_reagent("sugar", 2)
|
||||
reagents.add_reagent(REAGENT_ID_SUGAR, 2)
|
||||
|
||||
/obj/item/storage/box/snakesnackbox
|
||||
name = "box of Snake Snax"
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
var/poison_chance = 100
|
||||
var/poison_per_bite = 10
|
||||
var/poison_type = "expired_medicine"
|
||||
var/poison_type = REAGENT_ID_EXPIREDMEDICINE
|
||||
|
||||
/datum/say_list/disbot
|
||||
speak = list("ATTEMPTING TO CONTACT A.R.K, ATTEMPT 1e26+3","DIRT SAMPLE COLLECTED, DIRT QUOTA 124871/155 CONFIRMED.")
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/mob/living/simple_mob/tomato
|
||||
name = "tomato"
|
||||
name = PLANT_TOMATO
|
||||
desc = "It's a horrifyingly enormous beef tomato, and it's packing extra beef!"
|
||||
tt_desc = "X Solanum abominable"
|
||||
icon_state = "tomato"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
color = "#CC23FF"
|
||||
slime_color = "purple"
|
||||
coretype = /obj/item/slime_extract/purple
|
||||
reagent_injected = "toxin"
|
||||
reagent_injected = REAGENT_ID_TOXIN
|
||||
|
||||
description_info = "This slime spreads a toxin when it attacks. A biosuit or other thick armor can protect from the toxic attack."
|
||||
player_msg = "You <b>inject a harmful toxin</b> when attacking."
|
||||
@@ -57,7 +57,7 @@
|
||||
color = "#19FFFF"
|
||||
slime_color = "blue"
|
||||
coretype = /obj/item/slime_extract/blue
|
||||
reagent_injected = "cryotoxin"
|
||||
reagent_injected = REAGENT_ID_CRYOTOXIN
|
||||
cold_resist = 0.50 // Not as strong as dark blue, which has immunity.
|
||||
|
||||
description_info = "The slime is resistant to the cold, and attacks from this slime can inject cryotoxin into you. \
|
||||
@@ -173,7 +173,7 @@
|
||||
color = "#660088"
|
||||
slime_color = "dark purple"
|
||||
coretype = /obj/item/slime_extract/dark_purple
|
||||
reagent_injected = "phoron"
|
||||
reagent_injected = REAGENT_ID_PHORON
|
||||
|
||||
description_info = "This slime applies phoron to enemies it attacks. A biosuit or other thick armor can protect from the toxic attack. \
|
||||
If hit with a burning attack, it will erupt in flames."
|
||||
@@ -190,7 +190,7 @@
|
||||
/mob/living/simple_mob/slime/xenobio/dark_purple/proc/ignite()
|
||||
visible_message(span_critical("\The [src] erupts in an inferno!"))
|
||||
for(var/turf/simulated/target_turf in view(2, src))
|
||||
target_turf.assume_gas("phoron", 30, 1500+T0C)
|
||||
target_turf.assume_gas(GAS_PHORON, 30, 1500+T0C)
|
||||
spawn(0)
|
||||
target_turf.hotspot_expose(1500+T0C, 400)
|
||||
qdel(src)
|
||||
@@ -509,7 +509,7 @@
|
||||
slime_color = "green"
|
||||
coretype = /obj/item/slime_extract/green
|
||||
glow_toggle = TRUE
|
||||
reagent_injected = "radium"
|
||||
reagent_injected = REAGENT_ID_RADIUM
|
||||
var/rads = 25
|
||||
|
||||
description_info = "This slime will irradiate anything nearby passively, and will inject radium on attack. \
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
faction = FACTION_BEE
|
||||
|
||||
var/poison_type = "spidertoxin" // The reagent that gets injected when it attacks, can be changed to different toxin.
|
||||
var/poison_type = REAGENT_ID_SPIDERTOXIN // The reagent that gets injected when it attacks, can be changed to different toxin.
|
||||
var/poison_chance = 10 // Chance for injection to occur.
|
||||
var/poison_per_bite = 1 // Amount added per injection.
|
||||
|
||||
|
||||
@@ -1007,7 +1007,7 @@ I think I covered everything.
|
||||
//Alternatively bully a coder (me) to make a unique digest_mode for mob healbellies that prevents death, or something.
|
||||
if(istype(A, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/P = L
|
||||
var/list/to_inject = list("myelamine","osteodaxon","spaceacillin","peridaxon", "iron", "hyronalin")
|
||||
var/list/to_inject = list(REAGENT_ID_MYELAMINE,REAGENT_ID_OSTEODAXON,REAGENT_ID_SPACEACILLIN,REAGENT_ID_PERIDAXON, REAGENT_ID_IRON, REAGENT_ID_HYRONALIN)
|
||||
//Lets not OD them...
|
||||
for(var/RG in to_inject)
|
||||
if(!P.reagents.has_reagent(RG))
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
say_list_type = /datum/say_list/oregrub
|
||||
|
||||
var/poison_per_bite = 2.5
|
||||
var/poison_type = "thermite_v" //burn baby burn
|
||||
var/poison_type = REAGENT_ID_THERMITEV //burn baby burn
|
||||
var/poison_chance = 50
|
||||
|
||||
var/min_ore = 4
|
||||
|
||||
@@ -44,7 +44,7 @@ List of things solar grubs should be able to do:
|
||||
say_list_type = /datum/say_list/solargrub
|
||||
|
||||
var/poison_per_bite = 5 //grubs cause a shock when they bite someone
|
||||
var/poison_type = "shockchem"
|
||||
var/poison_type = REAGENT_ID_SHOCKCHEM
|
||||
var/poison_chance = 50
|
||||
var/datum/powernet/PN // Our powernet
|
||||
var/obj/structure/cable/attached // the attached cable
|
||||
|
||||
Reference in New Issue
Block a user