Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Asbestos, Nanites and Polonium! Oh My! #6892

Merged
merged 10 commits into from
Dec 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions code/__DEFINES/radiation/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@
#define RAD_MOB_AFFLICT_STRENGTH_SLIMETOXIN(removed) (75 * removed)
#define RAD_MOB_AFFLICT_STRENGTH_MUTAGEN(removed) (100 * removed)
#define RAD_MOB_AFFLICT_STRENGTH_RADIUM(removed) (100 * removed)
#define RAD_MOB_AFFLICT_STRENGTH_POL210(removed) (5000 * removed) //Polonium 210
#define RAD_MOB_AFFLICT_DNA_INJECTOR (rand(150, 300))
#define RAD_MOB_AFFLICT_FLORARAY_ON_PLANT (rand(30, 80))
#define RAD_MOB_AFFLICT_VIRUS_RADIAN(multiplier) (multiplier * 15)
Expand Down
2 changes: 2 additions & 0 deletions code/game/objects/effects/chem/chemsmoke.dm
Original file line number Diff line number Diff line change
Expand Up @@ -221,3 +221,5 @@
targetTurfs = complete

return


6 changes: 6 additions & 0 deletions code/game/objects/items/contraband.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@
//wrapper_color = COLOR_BLUE
starts_with = list(/obj/item/reagent_containers/pill/zoom = 7)

/obj/item/storage/pill_bottle/polonium
name = "bottle of pills"
desc = "An unlabeled bottle of pills. It seems vaguely warm."
//wrapper_color = COLOR_BLUE
starts_with = list(/obj/item/reagent_containers/pill/polonium = 7)

/obj/item/reagent_containers/glass/beaker/vial/random
atom_flags = NONE
var/list/random_reagent_list = list(list("water" = 15) = 1, list("cleaner" = 15) = 1)
Expand Down
50 changes: 50 additions & 0 deletions code/game/objects/items/weapons/grenades/chem_grenade.dm
Original file line number Diff line number Diff line change
Expand Up @@ -388,3 +388,53 @@
beakers += B1
beakers += B2
icon_state = initial(icon_state) +"_locked"



//Nanite Cloud Warcrimes!!!

/obj/item/grenade/chem_grenade/nanite_shredder
name = "shredder nanite grenade"
desc = "Weaponized nanites are banned by all galactic major powers. On the frontier however there is little authority to stop wannabee \
Oppenheimers from making weapons such as this."
stage = 2
path = 1

/obj/item/grenade/chem_grenade/nanite_shredder/Initialize(mapload)
. = ..()
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)

B1.reagents.add_reagent(/datum/reagent/phosphorus, 30)
B1.reagents.add_reagent(/datum/reagent/nanite/shredding, 30)
B2.reagents.add_reagent(/datum/reagent/potassium, 30)
B2.reagents.add_reagent(/datum/reagent/sugar, 30)

detonator = new/obj/item/assembly_holder/timer_igniter(src)

beakers += B1
beakers += B2
icon_state = initial(icon_state) +"_locked"

/obj/item/grenade/chem_grenade/nanite_neurophage
name = "neurophage nanite grenade"
desc = "Weaponized nanites are banned by all galactic major powers. On the frontier however there is little authority to stop wannabee \
Oppenheimers and other mad scientists from making weapons such as this."
stage = 2
path = 1

/obj/item/grenade/chem_grenade/nanite_neurophage/Initialize(mapload)
. = ..()
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)

B1.reagents.add_reagent(/datum/reagent/phosphorus, 30)
B1.reagents.add_reagent(/datum/reagent/nanite/neurophage, 30)
B2.reagents.add_reagent(/datum/reagent/potassium, 30)
B2.reagents.add_reagent(/datum/reagent/sugar, 30)

detonator = new/obj/item/assembly_holder/timer_igniter(src)

beakers += B1
beakers += B2
icon_state = initial(icon_state) +"_locked"
7 changes: 7 additions & 0 deletions code/modules/food/glass/bottle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -186,3 +186,10 @@
icon = 'icons/obj/medical/chemical.dmi'
icon_state = "bottle-3"
prefill = list("biomass" = 60)

/obj/item/reagent_containers/glass/bottle/superhol
name = "unlabeled bottle"
desc = "A unlabeled bottle that seems to be filled with ethanol. The fumes burn the air around you."
icon = 'icons/obj/medical/chemical.dmi'
icon_state = "bottle-4"
prefill = list(/datum/reagent/superhol = 60)
12 changes: 12 additions & 0 deletions code/modules/mob/living/carbon/human/human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -913,6 +913,18 @@
if(L)
L.rupture()

/mob/living/carbon/human/proc/asbestos_lung()
var/obj/item/organ/internal/lungs/L = internal_organs_by_name[O_LUNGS]

if(L)
L.damage_lung()

/mob/living/carbon/human/proc/heart_attack()
var/obj/item/organ/internal/heart/H = internal_organs_by_name[O_HEART]

if(H)
H.heart_attack()

Comment on lines +916 to +927
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this reused or planned to be reused anywhere but the one chemical? if not, this shouldn't be /human level procs

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes probably, at least I want to exist if we ever want to have a heart attack as a medical issue in the future. Its also very useful command to call directly at mobs as an EM too.

/*
/mob/living/carbon/human/verb/simulate()
set name = "sim"
Expand Down
9 changes: 9 additions & 0 deletions code/modules/organs/internal/subtypes/heart.dm
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,12 @@
owner.bodytemperature += round(owner.robobody_count * 0.25, 0.1)

return

/obj/item/organ/internal/heart/proc/heart_attack() //Do 10 damage the first time and 5 damage subsequent times.
var/obj/item/organ/external/parent = owner.get_organ(parent_organ)
if(istype(parent))
owner.custom_pain("You feel a stabbing pain in your [parent.name]!", 50)
if(is_bruised())
take_damage(5)
else
bruise() //I bruised heart multiplies total blood circulation by .7 so you are effectively 70% blood and taking Oxy damage before bloodloss
3 changes: 3 additions & 0 deletions code/modules/organs/internal/subtypes/lungs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@
owner.custom_pain("You feel a stabbing pain in your [parent.name]!", 50)
bruise()

/obj/item/organ/internal/lungs/proc/damage_lung()
take_damage(1)

/obj/item/organ/internal/lungs/handle_germ_effects()
. = ..() //Up should return an infection level as an integer
if(!.)
Expand Down
3 changes: 3 additions & 0 deletions code/modules/organs/organ.dm
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,9 @@
/obj/item/organ/proc/bruise()
damage = max(damage, min_bruised_damage)

/obj/item/organ/proc/break_organ()
damage = max(damage, min_broken_damage)

/// Being used to make robutt hearts, etc
/obj/item/organ/proc/robotize()
robotic = ORGAN_ROBOT
Expand Down
41 changes: 41 additions & 0 deletions code/modules/reagents/chemistry/reactions/Misc-Recipes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -374,3 +374,44 @@
result = "gunpowder"
result_amount = 1
required_reagents = list("sulfur" = 1, "carbon" = 1, "potassium" = 1)

/datum/chemical_reaction/asbestos
name = "Asbestos"
id = "asbestos"
result = "asbestos"
result_amount = 3
required_reagents = list("iron" = 1, "silicon" = 1, "oxygen" = 1)

/datum/chemical_reaction/depolo //Or De-Polonium swaps unremovable polonium for removeable nuclear waste
name = "Polonium Removal"
id = "polremove"
result = "nuclearwaste"
result_amount = 3
required_reagents = list(
"polonium" = 1,
"nicotine" = 1,
"arithrazine" = 1
)

/datum/chemical_reaction/unsuperhol //Neutralizes Superhol making it water
name = "Superhol Neutralization"
id = "unsuperhol"
result = "water"
result_amount = 1
required_reagents = list(
"superhol" = 1,
"ethylredoxrazine" = 1,
"hepanephrodaxon" = 1
)

/datum/chemical_reaction/lessershock //May belong in medicine, in miscellaneous since that is where its product's parent chem 200 V is.
name = "Lesser Shockchem"
id = "lessershock"
result = "lessershock"
result_amount = 1
required_reagents = list(
"phosphorus" = 1,
"iron" = 1,
"lithium" = 1,
"carbon" = 1
)
Original file line number Diff line number Diff line change
Expand Up @@ -799,6 +799,14 @@
H.losebreath = clamp(H.losebreath + 3, 0, 20)
else
H.losebreath = max(H.losebreath - 4, 0)
if(M.ingested)
for(var/datum/reagent/asbestos/R in M.ingested.reagent_list)
R.remove_self(removed * 4)
if(M.bloodstr)
for(var/datum/reagent/asbestos/R in M.bloodstr.reagent_list)
R.remove_self(removed * 4)



/datum/reagent/gastirodaxon
name = "Gastirodaxon"
Expand Down Expand Up @@ -1468,7 +1476,7 @@
to_chat(M, "<span class='notice'>You feel invigorated and calm.</span>")

// This exists to cut the number of chemicals a merc borg has to juggle on their hypo.
/datum/reagent/healing_nanites
/datum/reagent/nanite/healing
name = "Restorative Nanites"
id = "healing_nanites"
description = "Miniature medical robots that swiftly restore bodily damage."
Expand All @@ -1479,7 +1487,13 @@
scannable = TRUE
affects_robots = TRUE

/datum/reagent/healing_nanites/affect_blood(mob/living/carbon/M, alien, removed)
/datum/reagent/nanite/healing/affect_blood(mob/living/carbon/M, alien, removed)
M.heal_organ_damage(2 * removed, 2 * removed)
M.adjustOxyLoss(-4 * removed)
M.adjustToxLoss(-2 * removed)
M.adjustCloneLoss(-2 * removed)

/datum/reagent/nanite/healing/affect_ingest(mob/living/carbon/M, alien, removed)
M.heal_organ_damage(2 * removed, 2 * removed)
M.adjustOxyLoss(-4 * removed)
M.adjustToxLoss(-2 * removed)
Expand Down
Loading
Loading