From d7e05d4387a93f8f36851810ac4b15c8ba7bc5e1 Mon Sep 17 00:00:00 2001 From: tkdrg Date: Fri, 19 Dec 2014 15:10:16 -0300 Subject: [PATCH] Adds Supermatter logging and tweaks the power gen Now includes an admin_investigate entry, plus three message_admins(): when first powered, when first reaching critical point, and when a mob is dusted. Also tweaks the power generation formula a bit. --- code/modules/admin/admin_investigate.dm | 4 +- code/modules/power/supermatter/supermatter.dm | 38 ++++++++++++++----- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index b9e4b830b69..7b128727942 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -22,12 +22,12 @@ F << "[time2text(world.timeofday,"hh:mm")] \ref[src] ([x],[y],[z]) || [src] [message]
" //ADMINVERBS -/client/proc/investigate_show( subject in list("hrefs","notes","ntsl","singulo","wires","telesci", "gravity", "records", "cargo") ) +/client/proc/investigate_show( subject in list("hrefs","notes","ntsl","singulo","wires","telesci", "gravity", "records", "cargo", "supermatter") ) set name = "Investigate" set category = "Admin" if(!holder) return switch(subject) - if("singulo", "ntsl", "wires", "telesci", "gravity", "records", "cargo") //general one-round-only stuff + if("singulo", "ntsl", "wires", "telesci", "gravity", "records", "cargo", "supermatter") //general one-round-only stuff var/F = investigate_subject2file(subject) if(!F) src << "Error: admin_investigate: [INVESTIGATE_DIR][subject] is an invalid path or cannot be accessed." diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 5652d8d12c3..b08ad2edf4d 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -2,11 +2,11 @@ //Please do not bother them with bugs from this port, however, as it has been modified quite a bit. //Modifications include removing the world-ending full supermatter variation, and leaving only the shard. -#define NITROGEN_RETARDATION_FACTOR 4 //Higher == N2 slows reaction more -#define THERMAL_RELEASE_MODIFIER 10 //Higher == less heat released during 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 REACTION_POWER_MODIFIER 1.1 //Higher == more overall power +#define NITROGEN_RETARDATION_FACTOR 2 //Higher == N2 slows reaction more +#define THERMAL_RELEASE_MODIFIER 5 //Higher == less heat released during reaction +#define PLASMA_RELEASE_MODIFIER 750 //Higher == less plasma released by reaction +#define OXYGEN_RELEASE_MODIFIER 325 //Higher == less oxygen released at high temperature/power +#define REACTION_POWER_MODIFIER 0.55 //Higher == more overall power //These would be what you would get at point blank, decreases with distance @@ -58,19 +58,25 @@ var/obj/item/device/radio/radio + //for logging + var/has_been_powered = 0 + var/has_reached_emergency = 0 /obj/machinery/power/supermatter_shard/New() . = ..() radio = new(src) radio.listening = 0 + investigate_log("has been created.", "supermatter") /obj/machinery/power/supermatter_shard/Destroy() + investigate_log("has been destroyed.", "supermatter") qdel(radio) . = ..() /obj/machinery/power/supermatter_shard/proc/explode() - explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1) + investigate_log("has exploded.", "supermatter") + explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1, 1) qdel(src) return @@ -93,6 +99,10 @@ if(damage > emergency_point) radio.talk_into(src, "[emergency_alert] Instability: [stability]%") lastwarning = world.timeofday + if(!has_reached_emergency) + investigate_log("has reached the emergency point for the first time.", "supermatter") + message_admins("[src] has reached the emergency point (JMP).") + has_reached_emergency = 1 else if(damage >= damage_archived) // The damage is still going up radio.talk_into(src, "[warning_alert] Instability: [stability]%") @@ -130,14 +140,14 @@ //Maxes out at 100% oxygen pressure oxygen = max(min((removed.oxygen - (removed.nitrogen * NITROGEN_RETARDATION_FACTOR)) / MOLES_CELLSTANDARD, 1), 0) - var/temp_factor = 10 + var/temp_factor = 50 if(oxygen > 0.8) // with a perfect gas mix, make the power less based on heat icon_state = "[base_icon_state]_glow" else // in normal mode, base the produced energy around the heat - temp_factor = 6 + temp_factor = 30 icon_state = base_icon_state power = max( (removed.temperature * temp_factor / T0C) * oxygen + power, 0) //Total laser power plus an overload @@ -173,7 +183,7 @@ var/rads = (power / 10) * sqrt( 1 / min(get_dist(l, src),1) ) l.apply_effect(rads, IRRADIATE) - power -= (power/50)**3 + power -= (power/500)**3 return 1 @@ -187,6 +197,10 @@ if(Proj.flag != "bullet") power += Proj.damage * config_bullet_energy + if(!has_been_powered) + investigate_log("has been powered for the first time.", "supermatter") + message_admins("[src] has been powered for the first time (JMP).") + has_been_powered = 1 else damage += Proj.damage * config_bullet_energy return 0 @@ -218,7 +232,7 @@ /obj/machinery/power/supermatter_shard/proc/transfer_energy() for(var/obj/machinery/power/rad_collector/R in rad_collectors) if(get_dist(R, src) <= 15) // Better than using orange() every process - R.receive_pulse(power) + R.receive_pulse(power/10) return /obj/machinery/power/supermatter_shard/attackby(obj/item/weapon/W as obj, mob/living/user as mob) @@ -252,15 +266,19 @@ var/mob/living/user = AM user.dust() power += 200 + message_admins("[src] has consumed [key_name(user)]? (JMP).") else qdel(AM) + investigate_log("has consumed [AM].", "supermatter") + power += 200 //Some poor sod got eaten, go ahead and irradiate people nearby. for(var/mob/living/L in range(10)) var/rads = 500 * sqrt( 1 / (get_dist(L, src) + 1) ) L.apply_effect(rads, IRRADIATE) + investigate_log("has irradiated [L] after consuming [AM].", "supermatter") if(L in view()) L.show_message("As \the [src] slowly stops resonating, you find your skin covered in new radiation burns.", 1,\ "The unearthly ringing subsides and you notice you have new radiation burns.", 2)