diff --git a/code/game/gamemodes/events/black_hole.dm b/code/game/gamemodes/events/black_hole.dm index 034578be5d..3d1d077651 100644 --- a/code/game/gamemodes/events/black_hole.dm +++ b/code/game/gamemodes/events/black_hole.dm @@ -17,6 +17,11 @@ qdel(src) return + if(prob(5)) + visible_message(span_warning("\The [src] fizzles out and collapses.")) + qdel(src) + return + //DESTROYING STUFF AT THE EPICENTER for(var/mob/living/M in orange(1,src)) qdel(M) @@ -105,3 +110,6 @@ var/base_turf = get_base_turf_by_area(src) if(ST.type != base_turf) ST.ChangeTurf(base_turf) + +/obj/effect/bhole/ex_act(strength) // Don't get destroyed by explosions. Why would we? + return diff --git a/code/modules/power/port_gen_vr.dm b/code/modules/power/port_gen_vr.dm index d278401a2b..e3175a1c89 100644 --- a/code/modules/power/port_gen_vr.dm +++ b/code/modules/power/port_gen_vr.dm @@ -523,3 +523,47 @@ add_overlay("alteviangen-fuel-66") else if(sheets > 0) add_overlay("alteviangen-fuel-33") + +/obj/machinery/power/rtg/antimatter_core + name = "\improper Antique Anti-Matter Reactor" + desc = "Reacts hydrogen and anti-hydrogen with a phoron moderator to produce near limitless power! The magnetic fields are prone to easily rupturing, so the reactor design never took off." + icon = 'icons/am_engine.dmi' + icon_state = "core_on" + power_gen = 1000000 // 1MW + irradiate = FALSE // Green energy! + can_buckle = FALSE + plane = ABOVE_MOB_PLANE + layer = ABOVE_MOB_LAYER + +/obj/machinery/power/rtg/antimatter_core/Initialize(mapload) + . = ..() + set_light(3, 6, "#66FFFF") + +/obj/machinery/power/rtg/antimatter_core/proc/asplod() + visible_message(span_danger("\The [src] ruptures!"), span_danger("You hear a loud reverberating bang!")) + var/turf/T = get_turf(src) + qdel(src) + if(T) + empulse(T, 12, 14, 16, 18) + explosion(T, 7, 12, 18, 20) + SSradiation.radiate(T, 200) + new /obj/effect/bhole(T) + +/obj/machinery/power/rtg/antimatter_core/blob_act(obj/structure/blob/B) + return + +/obj/machinery/power/rtg/antimatter_core/ex_act() + asplod() + +/obj/machinery/power/rtg/antimatter_core/fire_act(exposed_temperature, exposed_volume) + return + +/obj/machinery/power/rtg/antimatter_core/tesla_act() + ..() //extend the zap + asplod() + +/obj/machinery/power/rtg/antimatter_core/bullet_act(obj/item/projectile/Proj) + . = ..() + if(istype(Proj) && !Proj.nodamage && ((Proj.damage_type == BURN) || (Proj.damage_type == BRUTE)) && Proj.damage >= 20) + log_and_message_admins("[ADMIN_LOOKUPFLW(Proj.firer)] triggered an antimatter core explosion at [x],[y],[z] via projectile.", Proj.firer) + asplod()