mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-05 14:32:52 +00:00
* Merge pull request #53013 from Ghilker/reactions-go-BRRRR The scope of this PR is to add new and interesting stuff to the atmos crew and to bring more people to it both old and new. This PR adds 5 new gases, a bunch of reactions (i'm still working on this but suggestions are useful), new recipes and items to the atmosians arsenal. These gases have high utility for everyone, atmosians will find them useful to do their job both as firefighters and air maintenance. FINAL GAS NAMES (will change only if a maintainer ask about it) Healium Proto Nitrate Cyrion B Halon Hexane reactions avaiable in this PR: https://drive.google.com/file/d/1e6DZlBaKSCNdCADKnrH3F3aDWvl0iZr4/view What the PR add: -Healium: a red gas, stronger than n2o if breathed, with healing properties -Proto Nitrate: a green inert gas if breathed but with different reactions with various gases at high temperatures -Cyrion B: a black deadly gas if breathed that decompones very fast if exposed to N2 even at minimal amounts -Halon: a light blue gas that when used in a fire it will suck up the O2 and will help cool the room, helping fighting the fire -Hexane: a purple gas that has the ability to filter from the air plasma and n2o, useful to clean distro from the harmful gases quickly -Healium Crystal: a reddish crystal that when broken will explode cooling the room and removing the plasma from the air (act like a grenade) -Proto Nitrate Crystal: a greenish crystal that when broken will explode refilling a space with O2 and N2 -Cyrion B Crystal: a blackish crystal that when broken will explode dealing damage around it -Metallic hydrogen recipe addition (atmosian armor and fireaxe) -Statue of an elder atmosian (for bragging rights) -Supermatter Interactions -More gas interactions (Roinnel have multiple and different interactions) -New RPD device: the pressure valve, a device that allow gas flow in a pipenet if the input pressure is higher than the set pressure it's getting atomized -Fusion is a bit "easier" to start (minor changes to the math so that the instability is more reasonable) -pluox can be also made without using rads -cyrion-b bounty -all 5 gases can be sold to cargo More stuff needs to be added (like the SM interactions(added) and probably more reactions and breathe reactions) Please leave suggestions and feedbacks as it helps improve the PR Atmos desperately need more content and need to be proactive in the making of its tools, with this PR is a start to more atmos content 🆑 add: hydrogen + rads = trit add: 5 new gases add: Healium : made from Bz + Freon + cold, it knocks people down but have healing properties add: Proto Nitrate : made from pluox and H2 + heat, it has different reaction with a bunch of other gases add: Cyrion B : made from hypernoblium + stimulum around 0°C, it has heavy damage if breathed but is decomposed rapidly by N2 add: Halon : made from bz + trit + cold, it reacts with O2 at high temperature removing it and cooling the air, helping putting out fires add: Hexane : made from bz + H2 + cold, it reacts with plasma and n2o and removes them from the air mix, filtering them. tweak: stimulum no longer require plasma add: canister sprites, gas sprites add: crystal from gases formation and reaction add: new metallic hydrogen recipes add: elder atmosian statue add: supermatter interactions tweak: minor changes to fusion math to make it "easier" to start add : pluoxium can be also made without using rads (not removing the rad production one) (this also produces a minimal amount of h2) tweak: lowered hypernoblium min temperature of reaction tweak: metallic hydrogen production more common add: cyrion-b bounty add: all 5 gases are up to selling /🆑 * Add 5 new gases, related interactions/items/content, changes parts of fusion Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
313 lines
9.4 KiB
Plaintext
313 lines
9.4 KiB
Plaintext
/obj/structure/statue
|
|
name = "statue"
|
|
desc = "Placeholder. Yell at Firecage if you SOMEHOW see this."
|
|
icon = 'icons/obj/statue.dmi'
|
|
icon_state = ""
|
|
density = TRUE
|
|
anchored = FALSE
|
|
max_integrity = 100
|
|
var/oreAmount = 5
|
|
var/material_drop_type = /obj/item/stack/sheet/metal
|
|
var/impressiveness = 15
|
|
CanAtmosPass = ATMOS_PASS_DENSITY
|
|
var/art_type = /datum/component/art
|
|
|
|
/obj/structure/statue/Initialize()
|
|
. = ..()
|
|
AddComponent(art_type, impressiveness)
|
|
INVOKE_ASYNC(src, /datum.proc/_AddComponent, list(/datum/component/beauty, impressiveness * 75))
|
|
|
|
/obj/structure/statue/attackby(obj/item/W, mob/living/user, params)
|
|
add_fingerprint(user)
|
|
if(!(flags_1 & NODECONSTRUCT_1))
|
|
if(default_unfasten_wrench(user, W))
|
|
return
|
|
if(W.tool_behaviour == TOOL_WELDER)
|
|
if(!W.tool_start_check(user, amount=0))
|
|
return FALSE
|
|
|
|
user.visible_message("<span class='notice'>[user] is slicing apart the [name].</span>", \
|
|
"<span class='notice'>You are slicing apart the [name]...</span>")
|
|
if(W.use_tool(src, user, 40, volume=50))
|
|
user.visible_message("<span class='notice'>[user] slices apart the [name].</span>", \
|
|
"<span class='notice'>You slice apart the [name]!</span>")
|
|
deconstruct(TRUE)
|
|
return
|
|
return ..()
|
|
|
|
/obj/structure/statue/deconstruct(disassembled = TRUE)
|
|
if(!(flags_1 & NODECONSTRUCT_1))
|
|
if(material_drop_type)
|
|
var/drop_amt = oreAmount
|
|
if(!disassembled)
|
|
drop_amt -= 2
|
|
if(drop_amt > 0)
|
|
new material_drop_type(get_turf(src), drop_amt)
|
|
qdel(src)
|
|
|
|
//////////////////////////////////////STATUES/////////////////////////////////////////////////////////////
|
|
////////////////////////uranium///////////////////////////////////
|
|
|
|
/obj/structure/statue/uranium
|
|
max_integrity = 300
|
|
light_range = 2
|
|
material_drop_type = /obj/item/stack/sheet/mineral/uranium
|
|
var/last_event = 0
|
|
var/active = null
|
|
impressiveness = 25 // radiation makes an impression
|
|
|
|
|
|
/obj/structure/statue/uranium/nuke
|
|
name = "statue of a nuclear fission explosive"
|
|
desc = "This is a grand statue of a Nuclear Explosive. It has a sickening green colour."
|
|
icon_state = "nuke"
|
|
|
|
/obj/structure/statue/uranium/eng
|
|
name = "Statue of an engineer"
|
|
desc = "This statue has a sickening green colour."
|
|
icon_state = "eng"
|
|
|
|
/obj/structure/statue/uranium/attackby(obj/item/W, mob/user, params)
|
|
radiate()
|
|
return ..()
|
|
|
|
/obj/structure/statue/uranium/Bumped(atom/movable/AM)
|
|
radiate()
|
|
..()
|
|
|
|
/obj/structure/statue/uranium/attack_hand(mob/user)
|
|
radiate()
|
|
. = ..()
|
|
|
|
/obj/structure/statue/uranium/attack_paw(mob/user)
|
|
radiate()
|
|
. = ..()
|
|
|
|
/obj/structure/statue/uranium/proc/radiate()
|
|
if(!active)
|
|
if(world.time > last_event+15)
|
|
active = 1
|
|
radiation_pulse(src, 30)
|
|
last_event = world.time
|
|
active = null
|
|
return
|
|
return
|
|
|
|
////////////////////////////plasma///////////////////////////////////////////////////////////////////////
|
|
|
|
/obj/structure/statue/plasma
|
|
max_integrity = 200
|
|
material_drop_type = /obj/item/stack/sheet/mineral/plasma
|
|
impressiveness = 20
|
|
desc = "This statue is suitably made from plasma."
|
|
|
|
/obj/structure/statue/plasma/scientist
|
|
name = "statue of a scientist"
|
|
icon_state = "sci"
|
|
|
|
/obj/structure/statue/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
|
if(exposed_temperature > 300)
|
|
PlasmaBurn(exposed_temperature)
|
|
|
|
|
|
/obj/structure/statue/plasma/bullet_act(obj/projectile/Proj)
|
|
var/burn = FALSE
|
|
if(!(Proj.nodamage) && Proj.damage_type == BURN && !QDELETED(src))
|
|
burn = TRUE
|
|
if(burn)
|
|
var/turf/T = get_turf(src)
|
|
if(Proj.firer)
|
|
message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(Proj.firer)] in [ADMIN_VERBOSEJMP(T)]")
|
|
log_game("Plasma statue ignited by [key_name(Proj.firer)] in [AREACOORD(T)]")
|
|
else
|
|
message_admins("Plasma statue ignited by [Proj]. No known firer, in [ADMIN_VERBOSEJMP(T)]")
|
|
log_game("Plasma statue ignited by [Proj] in [AREACOORD(T)]. No known firer.")
|
|
PlasmaBurn(2500)
|
|
. = ..()
|
|
|
|
/obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params)
|
|
if(W.get_temperature() > 300 && !QDELETED(src))//If the temperature of the object is over 300, then ignite
|
|
var/turf/T = get_turf(src)
|
|
message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]")
|
|
log_game("Plasma statue ignited by [key_name(user)] in [AREACOORD(T)]")
|
|
ignite(W.get_temperature())
|
|
else
|
|
return ..()
|
|
|
|
/obj/structure/statue/plasma/proc/PlasmaBurn(exposed_temperature)
|
|
if(QDELETED(src))
|
|
return
|
|
atmos_spawn_air("plasma=[oreAmount*10];TEMP=[exposed_temperature]")
|
|
deconstruct(FALSE)
|
|
|
|
/obj/structure/statue/plasma/proc/ignite(exposed_temperature)
|
|
if(exposed_temperature > 300)
|
|
PlasmaBurn(exposed_temperature)
|
|
|
|
//////////////////////gold///////////////////////////////////////
|
|
|
|
/obj/structure/statue/gold
|
|
max_integrity = 300
|
|
material_drop_type = /obj/item/stack/sheet/mineral/gold
|
|
impressiveness = 25
|
|
desc = "This is a highly valuable statue made from gold."
|
|
|
|
/obj/structure/statue/gold/hos
|
|
name = "statue of the head of security"
|
|
icon_state = "hos"
|
|
|
|
/obj/structure/statue/gold/hop
|
|
name = "statue of the head of personnel"
|
|
icon_state = "hop"
|
|
|
|
/obj/structure/statue/gold/cmo
|
|
name = "statue of the chief medical officer"
|
|
icon_state = "cmo"
|
|
|
|
/obj/structure/statue/gold/ce
|
|
name = "statue of the chief engineer"
|
|
icon_state = "ce"
|
|
|
|
/obj/structure/statue/gold/rd
|
|
name = "statue of the research director"
|
|
icon_state = "rd"
|
|
|
|
//////////////////////////silver///////////////////////////////////////
|
|
|
|
/obj/structure/statue/silver
|
|
max_integrity = 300
|
|
material_drop_type = /obj/item/stack/sheet/mineral/silver
|
|
impressiveness = 25
|
|
desc = "This is a valuable statue made from silver."
|
|
|
|
/obj/structure/statue/silver/md
|
|
name = "statue of a medical officer"
|
|
icon_state = "md"
|
|
|
|
/obj/structure/statue/silver/janitor
|
|
name = "statue of a janitor"
|
|
icon_state = "jani"
|
|
|
|
/obj/structure/statue/silver/sec
|
|
name = "statue of a security officer"
|
|
icon_state = "sec"
|
|
|
|
/obj/structure/statue/silver/secborg
|
|
name = "statue of a security cyborg"
|
|
icon_state = "secborg"
|
|
|
|
/obj/structure/statue/silver/medborg
|
|
name = "statue of a medical cyborg"
|
|
icon_state = "medborg"
|
|
|
|
/////////////////////////diamond/////////////////////////////////////////
|
|
|
|
/obj/structure/statue/diamond
|
|
max_integrity = 1000
|
|
material_drop_type = /obj/item/stack/sheet/mineral/diamond
|
|
impressiveness = 50
|
|
desc = "This is a very expensive diamond statue."
|
|
|
|
/obj/structure/statue/diamond/captain
|
|
name = "statue of THE captain."
|
|
icon_state = "cap"
|
|
|
|
/obj/structure/statue/diamond/ai1
|
|
name = "statue of the AI hologram."
|
|
icon_state = "ai1"
|
|
|
|
/obj/structure/statue/diamond/ai2
|
|
name = "statue of the AI core."
|
|
icon_state = "ai2"
|
|
|
|
////////////////////////bananium///////////////////////////////////////
|
|
|
|
/obj/structure/statue/bananium
|
|
max_integrity = 300
|
|
material_drop_type = /obj/item/stack/sheet/mineral/bananium
|
|
impressiveness = 50
|
|
desc = "A bananium statue with a small engraving:'HOOOOOOONK'."
|
|
var/limiting_spam = FALSE
|
|
|
|
/obj/structure/statue/bananium/clown
|
|
name = "statue of a clown"
|
|
icon_state = "clown"
|
|
|
|
/obj/structure/statue/bananium/Bumped(atom/movable/AM)
|
|
honk()
|
|
..()
|
|
|
|
/obj/structure/statue/bananium/attackby(obj/item/W, mob/user, params)
|
|
honk()
|
|
return ..()
|
|
|
|
/obj/structure/statue/bananium/attack_hand(mob/user)
|
|
honk()
|
|
. = ..()
|
|
|
|
/obj/structure/statue/bananium/attack_paw(mob/user)
|
|
honk()
|
|
..()
|
|
|
|
/obj/structure/statue/bananium/proc/honk()
|
|
if(!limiting_spam)
|
|
limiting_spam = TRUE
|
|
playsound(src.loc, 'sound/items/bikehorn.ogg', 50, TRUE)
|
|
addtimer(VARSET_CALLBACK(src, limiting_spam, FALSE), 2 SECONDS)
|
|
|
|
/////////////////////sandstone/////////////////////////////////////////
|
|
|
|
/obj/structure/statue/sandstone
|
|
max_integrity = 50
|
|
material_drop_type = /obj/item/stack/sheet/mineral/sandstone
|
|
impressiveness = 15
|
|
|
|
/obj/structure/statue/sandstone/assistant
|
|
name = "statue of an assistant"
|
|
desc = "A cheap statue of sandstone for a greyshirt."
|
|
icon_state = "assist"
|
|
|
|
|
|
/obj/structure/statue/sandstone/venus //call me when we add marble i guess
|
|
name = "statue of a pure maiden"
|
|
desc = "An ancient marble statue. The subject is depicted with a floor-length braid and is wielding a toolbox. By Jove, it's easily the most gorgeous depiction of a woman you've ever seen. The artist must truly be a master of his craft. Shame about the broken arm, though."
|
|
icon = 'icons/obj/statuelarge.dmi'
|
|
icon_state = "venus"
|
|
|
|
/////////////////////snow/////////////////////////////////////////
|
|
|
|
/obj/structure/statue/snow
|
|
max_integrity = 50
|
|
material_drop_type = /obj/item/stack/sheet/mineral/snow
|
|
|
|
/obj/structure/statue/snow/snowman
|
|
name = "snowman"
|
|
desc = "Several lumps of snow put together to form a snowman."
|
|
icon_state = "snowman"
|
|
|
|
/obj/structure/statue/snow/snowlegion
|
|
name = "snowlegion"
|
|
desc = "Looks like that weird kid with the tiger plushie has been round here again."
|
|
icon_state = "snowlegion"
|
|
|
|
///////////////////////////////bronze///////////////////////////////////
|
|
|
|
/obj/structure/statue/bronze
|
|
material_drop_type = /obj/item/stack/tile/bronze
|
|
|
|
/obj/structure/statue/bronze/marx
|
|
name = "\improper Karl Marx bust"
|
|
desc = "A bust depicting a certain 19th century economist. You get the feeling a specter is haunting the station."
|
|
icon_state = "marx"
|
|
art_type = /datum/component/art/rev
|
|
|
|
///////////Elder Atmosian///////////////////////////////////////////
|
|
|
|
/obj/structure/statue/elder_atmosian
|
|
name = "Elder Atmosian"
|
|
desc = "A statue of an Elder Atmosian, capable of bending the laws of thermodynamics to their will"
|
|
icon_state = "eng"
|
|
material_drop_type = /obj/item/stack/sheet/mineral/metal_hydrogen
|
|
max_integrity = 1000
|
|
impressiveness = 100
|