diff --git a/mods/unathi/_unathi.dme b/mods/unathi/_unathi.dme index 011dd4d4a6d20..5ebb834fcbfb3 100644 --- a/mods/unathi/_unathi.dme +++ b/mods/unathi/_unathi.dme @@ -6,6 +6,8 @@ // Далее просто включай свой код // #include "code/something.dm" +#include "code/chemical_reactions.dm" +#include "code/human_powers.dm" #include "code/reagents.dm" #include "code/species.dm" #include "code/species_attack.dm" diff --git a/mods/unathi/code/chemical_reactions.dm b/mods/unathi/code/chemical_reactions.dm new file mode 100644 index 0000000000000..8f4a53d8bb53c --- /dev/null +++ b/mods/unathi/code/chemical_reactions.dm @@ -0,0 +1,19 @@ +/* Unathi reagents reactions */ +/datum/chemical_reaction/paashe + name = "Paashe Meish Sunn" + result = /datum/reagent/paashe + required_reagents = list(/datum/reagent/toxin/yeosvenom = 1, /datum/reagent/ethanol = 1, /datum/reagent/acetone = 1) + result_amount = 3 + +/datum/chemical_reaction/arhishaap + name = "Arhishaap" + result = /datum/reagent/arhishaap + required_reagents = list(/datum/reagent/toxin/yeosvenom = 1, /datum/reagent/diethylamine = 2, /datum/reagent/radium = 1) + result_amount = 4 + +/datum/chemical_reaction/oxycodonealt + name = "Oxycodone Alt" + result = /datum/reagent/tramadol/oxycodone + required_reagents = list(/datum/reagent/ethanol = 1, /datum/reagent/paashe = 1) + catalysts = list(/datum/reagent/toxin/phoron = 5) + result_amount = 1 diff --git a/mods/unathi/code/human_powers.dm b/mods/unathi/code/human_powers.dm new file mode 100644 index 0000000000000..0f1233d0b9797 --- /dev/null +++ b/mods/unathi/code/human_powers.dm @@ -0,0 +1,24 @@ +/mob/living/carbon/human + var/venom_cooldown = 0 + +/mob/living/carbon/human/unathi/yeosa/proc/decant_venom() + set category = "Abilities" + set name = "Decant Venom" + set desc = "" + var/obj/item/target = usr.get_active_hand() + var/poison_type = /datum/reagent/toxin/yeosvenom + + + if(venom_cooldown > world.time) + to_chat(usr, SPAN_WARNING("Your venom glands are too exhausted, it will take some time before you can decant your innate venom again.")) + return + if(istype(target, /obj/item/reagent_containers/)) + if(target.reagents) + target.reagents.add_reagent(poison_type, 8) + src.adjust_nutrition(-25) + src.adjust_hydration(-15) + usr.visible_message( + SPAN_NOTICE("\The [usr] sticks their fangs into the side of the [target], dripping thick, green-ish substance into the container."), + SPAN_NOTICE("You stick your fangs into the side of the \the [target], allowing some of your innate venom to drip into the container.") + ) + venom_cooldown = world.time + (30 SECONDS) diff --git a/mods/unathi/code/reagents.dm b/mods/unathi/code/reagents.dm index d30a1a72a00f2..fbea3fe079fb7 100644 --- a/mods/unathi/code/reagents.dm +++ b/mods/unathi/code/reagents.dm @@ -7,6 +7,80 @@ strength = 1 /datum/reagent/toxin/yeosvenom/affect_blood(mob/living/carbon/M, alien, removed) + if(M.is_species(SPECIES_YEOSA)) + return // Yeosa are immune to their own venom + if(prob(volume*10)) M.set_confused(10) ..() + +//Medicine +/datum/reagent/paashe + name = "Paashe Meish Sunn" + description = "An effective natural painkiller, produced from Yeosa'Unathi innate venom. Has similar effect to Tramadol, but doesn't feature any significant side effects." + taste_description = "way too much sweetness" + reagent_state = LIQUID + color = "#aea0c9" + overdose = 30 + scannable = 1 + metabolism = 0.05 + ingest_met = 0.02 + flags = IGNORE_MOB_SIZE + value = 3.1 + var/pain_power = 80 //magnitide of painkilling effect + var/effective_dose = 0.5 //how many units it need to process to reach max power + +/datum/reagent/paashe/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + var/effectiveness = 1 + if(M.chem_doses[type] < effective_dose) //some ease-in ease-out for the effect + effectiveness = M.chem_doses[type]/effective_dose + else if(volume < effective_dose) + effectiveness = volume/effective_dose + M.add_chemical_effect(CE_PAINKILLER, pain_power * effectiveness) + if(M.chem_doses[type] > 0.5 * overdose) + M.add_chemical_effect(CE_SLOWDOWN, 1) + if(prob(1)) + M.slurring = max(M.slurring, 10) + if(M.chem_doses[type] > 0.75 * overdose) + M.add_chemical_effect(CE_SLOWDOWN, 1) + if(prob(5)) + M.slurring = max(M.slurring, 20) + if(M.chem_doses[type] > overdose) + M.add_chemical_effect(CE_SLOWDOWN, 1) + M.slurring = max(M.slurring, 30) + if(prob(1)) + M.Weaken(2) + M.drowsyness = max(M.drowsyness, 5) + +/datum/reagent/arhishaap + name = "Arhishaap" + description = "An advanced Yeosa'Unathi anti-toxin, significantly more effective than synthetic alternatives." + taste_description = "way too much sweetness" + reagent_state = LIQUID + color = "#49bc4b" + scannable = 1 + flags = IGNORE_MOB_SIZE + value = 2.1 + var/remove_generic = 1 + var/list/remove_toxins = list( + /datum/reagent/toxin/zombiepowder + ) + +/datum/reagent/arhishaap/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + M.radiation = max(M.radiation - 30 * removed, 0) + + if(remove_generic) + M.drowsyness = max(0, M.drowsyness - 10 * removed) + M.adjust_hallucination(-14 * removed) + M.add_up_to_chemical_effect(CE_ANTITOX, 1) + + var/removing = (8 * removed) + var/datum/reagents/ingested = M.get_ingested_reagents() + for(var/datum/reagent/R in ingested.reagent_list) + if((remove_generic && istype(R, /datum/reagent/toxin)) || (R.type in remove_toxins)) + ingested.remove_reagent(R.type, removing) + return + for(var/datum/reagent/R in M.reagents.reagent_list) + if((remove_generic && istype(R, /datum/reagent/toxin)) || (R.type in remove_toxins)) + M.reagents.remove_reagent(R.type, removing) + return diff --git a/mods/unathi/code/species.dm b/mods/unathi/code/species.dm index 736a123b49ba6..afe272359152d 100644 --- a/mods/unathi/code/species.dm +++ b/mods/unathi/code/species.dm @@ -1,3 +1,6 @@ /datum/species/unathi/yeosa/New() - unarmed_types ^= list(/datum/unarmed_attack/bite/venom, /datum/unarmed_attack/bite/venom/yeosa) + if (/datum/unarmed_attack/bite/venom in unarmed_types) + unarmed_types -= /datum/unarmed_attack/bite/venom + unarmed_types += /datum/unarmed_attack/bite/venom/yeosa + inherent_verbs += list(/mob/living/carbon/human/unathi/yeosa/proc/decant_venom) . = ..()