mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 19:52:40 +00:00
Merge pull request #4848 from Ccomp5950/supermatter
Deadlier supermatter. If you don't add coolant, you will have a bad time
This commit is contained in:
@@ -968,6 +968,89 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
|||||||
if(SMES.anchored)
|
if(SMES.anchored)
|
||||||
SMES.chargemode = 1
|
SMES.chargemode = 1
|
||||||
|
|
||||||
|
/client/proc/setup_supermatter_engine()
|
||||||
|
set category = "Debug"
|
||||||
|
set name = "Setup supermatter"
|
||||||
|
set desc = "Sets up the supermatter engine"
|
||||||
|
|
||||||
|
if(!check_rights(R_DEBUG|R_ADMIN)) return
|
||||||
|
|
||||||
|
var/response = alert("Are you sure? This will start up the engine. Should only be used during debug!",,"Setup Completely","Setup except coolant","No")
|
||||||
|
|
||||||
|
if(response == "No")
|
||||||
|
return
|
||||||
|
|
||||||
|
var/found_the_pump = 0
|
||||||
|
var/obj/machinery/power/supermatter/SM
|
||||||
|
|
||||||
|
for(var/obj/machinery/M in world)
|
||||||
|
if(!M)
|
||||||
|
continue
|
||||||
|
if(!M.loc)
|
||||||
|
continue
|
||||||
|
if(!M.loc.loc)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if(istype(M.loc.loc,/area/engine/engine_room))
|
||||||
|
if(istype(M,/obj/machinery/power/rad_collector))
|
||||||
|
var/obj/machinery/power/rad_collector/Rad = M
|
||||||
|
Rad.anchored = 1
|
||||||
|
Rad.connect_to_network()
|
||||||
|
|
||||||
|
var/obj/item/weapon/tank/plasma/Plasma = new/obj/item/weapon/tank/plasma(Rad)
|
||||||
|
|
||||||
|
Plasma.air_contents.toxins = 29.1154 //This is a full tank if you filled it from a canister
|
||||||
|
Rad.P = Plasma
|
||||||
|
|
||||||
|
Plasma.loc = Rad
|
||||||
|
|
||||||
|
if(!Rad.active)
|
||||||
|
Rad.toggle_power()
|
||||||
|
Rad.update_icon()
|
||||||
|
|
||||||
|
else if(istype(M,/obj/machinery/atmospherics/binary/pump)) //Turning on every pump.
|
||||||
|
var/obj/machinery/atmospherics/binary/pump/Pump = M
|
||||||
|
if(Pump.name == "Engine Feed" && response == "Setup Completely")
|
||||||
|
found_the_pump = 1
|
||||||
|
Pump.air2.nitrogen = 3750 //The contents of 2 canisters.
|
||||||
|
Pump.air2.temperature = 50
|
||||||
|
Pump.air2.update_values()
|
||||||
|
Pump.on=1
|
||||||
|
Pump.target_pressure = 4500
|
||||||
|
Pump.update_icon()
|
||||||
|
|
||||||
|
else if(istype(M,/obj/machinery/power/supermatter))
|
||||||
|
SM = M
|
||||||
|
spawn(50)
|
||||||
|
SM.power = 320
|
||||||
|
|
||||||
|
else if(istype(M,/obj/machinery/power/smes)) //This is the SMES inside the engine room. We don't need much power.
|
||||||
|
var/obj/machinery/power/smes/SMES = M
|
||||||
|
SMES.chargemode = 1
|
||||||
|
SMES.chargelevel = 200000
|
||||||
|
SMES.output = 75000
|
||||||
|
|
||||||
|
else if(istype(M.loc.loc,/area/engine/engine_smes)) //Set every SMES to charge and spit out 300,000 power between the 4 of them.
|
||||||
|
if(istype(M,/obj/machinery/power/smes))
|
||||||
|
var/obj/machinery/power/smes/SMES = M
|
||||||
|
SMES.chargemode = 1
|
||||||
|
SMES.chargelevel = 200000
|
||||||
|
SMES.output = 75000
|
||||||
|
|
||||||
|
if(!found_the_pump && response == "Setup Completely")
|
||||||
|
src << "\red Unable to locate air supply to fill up with coolant, adding some coolant around the supermatter"
|
||||||
|
var/turf/simulated/T = SM.loc
|
||||||
|
T.zone.air.nitrogen += 450
|
||||||
|
T.zone.air.temperature = 50
|
||||||
|
T.zone.air.update_values()
|
||||||
|
|
||||||
|
|
||||||
|
log_admin("[key_name(usr)] setup the supermatter engine [response == "Setup except coolant" ? "without coolant" : ""]")
|
||||||
|
message_admins("\blue [key_name_admin(usr)] setup the supermatter engine [response == "Setup except coolant" ? "without coolant": ""]", 1)
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/client/proc/cmd_debug_mob_lists()
|
/client/proc/cmd_debug_mob_lists()
|
||||||
set category = "Debug"
|
set category = "Debug"
|
||||||
set name = "Debug Mob Lists"
|
set name = "Debug Mob Lists"
|
||||||
|
|||||||
@@ -161,6 +161,7 @@ var/list/debug_verbs = list (
|
|||||||
,/client/proc/hide_debug_verbs
|
,/client/proc/hide_debug_verbs
|
||||||
,/client/proc/testZAScolors
|
,/client/proc/testZAScolors
|
||||||
,/client/proc/testZAScolors_remove
|
,/client/proc/testZAScolors_remove
|
||||||
|
,/client/proc/setup_supermatter_engine
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
#define NITROGEN_RETARDATION_FACTOR 4 //Higher == N2 slows reaction more
|
#define NITROGEN_RETARDATION_FACTOR 4 //Higher == N2 slows reaction more
|
||||||
#define THERMAL_RELEASE_MODIFIER 10 //Higher == less heat released during reaction
|
#define THERMAL_RELEASE_MODIFIER 750 //Higher == more heat released during reaction
|
||||||
#define PLASMA_RELEASE_MODIFIER 1500 //Higher == less plasma released by reaction
|
#define PLASMA_RELEASE_MODIFIER 1500 //Higher == less plasma released by reaction
|
||||||
#define OXYGEN_RELEASE_MODIFIER 750 //Higher == less oxygen released at high temperature/power
|
#define OXYGEN_RELEASE_MODIFIER 1500 //Higher == less oxygen released at high temperature/power
|
||||||
#define REACTION_POWER_MODIFIER 1.1 //Higher == more overall power
|
#define REACTION_POWER_MODIFIER 1.1 //Higher == more overall power
|
||||||
|
|
||||||
|
|
||||||
@@ -167,9 +167,13 @@
|
|||||||
|
|
||||||
//Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock
|
//Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock
|
||||||
//is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall.
|
//is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall.
|
||||||
removed.temperature += (device_energy / THERMAL_RELEASE_MODIFIER)
|
|
||||||
|
|
||||||
removed.temperature = max(0, min(removed.temperature, 2500))
|
var/thermal_power = THERMAL_RELEASE_MODIFIER
|
||||||
|
if(removed.total_moles < 35) thermal_power += 750 //If you don't add coolant, you are going to have a bad time.
|
||||||
|
|
||||||
|
removed.temperature += ((device_energy * thermal_power) / max(1, removed.heat_capacity()))
|
||||||
|
|
||||||
|
removed.temperature = max(0, min(removed.temperature, 10000))
|
||||||
|
|
||||||
//Calculate how much gas to release
|
//Calculate how much gas to release
|
||||||
removed.toxins += max(device_energy / PLASMA_RELEASE_MODIFIER, 0)
|
removed.toxins += max(device_energy / PLASMA_RELEASE_MODIFIER, 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user