12/21 modernizations from TG live (#103)
* sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes
This commit is contained in:
@@ -9,10 +9,10 @@
|
||||
|
||||
var/power_type
|
||||
|
||||
/datum/AI_Module/large/
|
||||
/datum/AI_Module/large
|
||||
uses = 1
|
||||
|
||||
/datum/AI_Module/small/
|
||||
/datum/AI_Module/small
|
||||
uses = 5
|
||||
|
||||
/datum/AI_Module/large/nuke_station
|
||||
@@ -35,15 +35,13 @@
|
||||
src << "<span class='notice'>Nuclear device armed.</span>"
|
||||
priority_announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", 'sound/AI/aimalf.ogg')
|
||||
set_security_level("delta")
|
||||
SSshuttle.emergencyNoEscape = 1
|
||||
nuking = 1
|
||||
var/obj/machinery/doomsday_device/DOOM = new /obj/machinery/doomsday_device(src)
|
||||
doomsday_device = DOOM
|
||||
doomsday_device.start()
|
||||
verbs -= /mob/living/silicon/ai/proc/nuke_station
|
||||
for(var/obj/item/weapon/pinpointer/point in pinpointer_list)
|
||||
for(var/mob/living/silicon/ai/A in ai_list)
|
||||
if((A.stat != DEAD) && A.nuking)
|
||||
point.the_disk = A //The pinpointer now tracks the AI core
|
||||
for(var/obj/item/weapon/pinpointer/P in pinpointer_list)
|
||||
P.switch_mode_to(TRACK_MALF_AI) //Pinpointers start tracking the AI wherever it goes
|
||||
|
||||
/obj/machinery/doomsday_device
|
||||
icon = 'icons/obj/machines/nuke_terminal.dmi'
|
||||
@@ -53,29 +51,57 @@
|
||||
anchored = 1
|
||||
density = 1
|
||||
verb_exclaim = "blares"
|
||||
var/timing = 1
|
||||
var/timer = 450
|
||||
var/timing = FALSE
|
||||
var/default_timer = 4500
|
||||
var/obj/effect/countdown/doomsday/countdown
|
||||
var/detonation_timer
|
||||
var/list/milestones = list()
|
||||
|
||||
/obj/machinery/doomsday_device/New()
|
||||
..()
|
||||
countdown = new(src)
|
||||
|
||||
/obj/machinery/doomsday_device/Destroy()
|
||||
if(countdown)
|
||||
qdel(countdown)
|
||||
countdown = null
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
SSshuttle.clearHostileEnvironment(src)
|
||||
for(var/A in ai_list)
|
||||
var/mob/living/silicon/ai/Mlf = A
|
||||
if(Mlf.doomsday_device == src)
|
||||
Mlf.doomsday_device = null
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/doomsday_device/proc/start()
|
||||
detonation_timer = world.time + default_timer
|
||||
timing = TRUE
|
||||
countdown.start()
|
||||
START_PROCESSING(SSfastprocess, src)
|
||||
SSshuttle.registerHostileEnvironment(src)
|
||||
|
||||
/obj/machinery/doomsday_device/proc/seconds_remaining()
|
||||
. = max(0, (round((detonation_timer - world.time) / 10)))
|
||||
|
||||
/obj/machinery/doomsday_device/process()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T || T.z != ZLEVEL_STATION)
|
||||
minor_announce("DOOMSDAY DEVICE OUT OF STATION RANGE, ABORTING", "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4", 1)
|
||||
SSshuttle.emergencyNoEscape = 0
|
||||
if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
|
||||
SSshuttle.emergency.mode = SHUTTLE_DOCKED
|
||||
SSshuttle.emergency.timer = world.time
|
||||
priority_announce("Hostile environment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority")
|
||||
SSshuttle.clearHostileEnvironment(src)
|
||||
qdel(src)
|
||||
if(!timing)
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
return
|
||||
if(timer <= 0)
|
||||
timing = 0
|
||||
var/sec_left = seconds_remaining()
|
||||
if(sec_left <= 0)
|
||||
timing = FALSE
|
||||
detonate(T.z)
|
||||
qdel(src)
|
||||
else
|
||||
timer--
|
||||
if(!(timer%60))
|
||||
var/message = "[timer] SECONDS UNTIL DOOMSDAY DEVICE ACTIVATION!"
|
||||
var/key = num2text(sec_left)
|
||||
if(!(sec_left % 60) && !(key in milestones))
|
||||
milestones[key] = TRUE
|
||||
var/message = "[key] SECONDS UNTIL DOOMSDAY DEVICE ACTIVATION!"
|
||||
minor_announce(message, "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4", 1)
|
||||
|
||||
/obj/machinery/doomsday_device/proc/detonate(z_level = 1)
|
||||
@@ -84,7 +110,7 @@
|
||||
sleep(100)
|
||||
for(var/mob/living/L in mob_list)
|
||||
var/turf/T = get_turf(L)
|
||||
if(T.z != z_level)
|
||||
if(!T || T.z != z_level)
|
||||
continue
|
||||
if(issilicon(L))
|
||||
continue
|
||||
@@ -93,23 +119,6 @@
|
||||
world << "<B>The AI cleansed the station of life with the doomsday device!</B>"
|
||||
ticker.force_ending = 1
|
||||
|
||||
/datum/AI_Module/large/fireproof_core
|
||||
module_name = "Core Upgrade"
|
||||
mod_pick_name = "coreup"
|
||||
description = "An upgrade to improve core resistance, making it immune to fire and heat. This effect is permanent."
|
||||
cost = 50
|
||||
one_time = 1
|
||||
|
||||
power_type = /mob/living/silicon/ai/proc/fireproof_core
|
||||
|
||||
/mob/living/silicon/ai/proc/fireproof_core()
|
||||
set category = "Malfunction"
|
||||
set name = "Fireproof Core"
|
||||
for(var/mob/living/silicon/ai/ai in player_list)
|
||||
ai.fire_res_on_core = 1
|
||||
src.verbs -= /mob/living/silicon/ai/proc/fireproof_core
|
||||
src << "<span class='notice'>Core fireproofed.</span>"
|
||||
|
||||
/datum/AI_Module/large/upgrade_turrets
|
||||
module_name = "AI Turret Upgrade"
|
||||
mod_pick_name = "turret"
|
||||
@@ -129,9 +138,9 @@
|
||||
src.verbs -= /mob/living/silicon/ai/proc/upgrade_turrets
|
||||
//Upgrade AI turrets around the world
|
||||
for(var/obj/machinery/porta_turret/ai/turret in machines)
|
||||
turret.health += 30
|
||||
turret.eprojectile = /obj/item/projectile/beam/laser/heavylaser //Once you see it, you will know what it means to FEAR.
|
||||
turret.eshot_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
turret.obj_integrity += 30
|
||||
turret.lethal_projectile = /obj/item/projectile/beam/laser/heavylaser //Once you see it, you will know what it means to FEAR.
|
||||
turret.lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
src << "<span class='notice'>Turrets upgraded.</span>"
|
||||
|
||||
/datum/AI_Module/large/lockdown
|
||||
@@ -153,7 +162,7 @@
|
||||
for(var/obj/machinery/door/D in airlocks)
|
||||
if(D.z != ZLEVEL_STATION)
|
||||
continue
|
||||
addtimer(D, "hostile_lockdown", 0, FALSE, src)
|
||||
addtimer(D, "hostile_lockdown", 0, TIMER_NORMAL, src)
|
||||
addtimer(D, "disable_lockdown", 900)
|
||||
|
||||
var/obj/machinery/computer/communications/C = locate() in machines
|
||||
@@ -163,7 +172,7 @@
|
||||
verbs -= /mob/living/silicon/ai/proc/lockdown
|
||||
minor_announce("Hostile runtime detected in door controllers. Isolation Lockdown protocols are now in effect. Please remain calm.","Network Alert:", 1)
|
||||
src << "<span class = 'warning'>Lockdown Initiated. Network reset in 90 seconds.</span>"
|
||||
addtimer(GLOBAL_PROC, "minor_announce", 900, FALSE,
|
||||
addtimer(GLOBAL_PROC, "minor_announce", 900, TIMER_NORMAL,
|
||||
"Automatic system reboot complete. Have a secure day.",
|
||||
"Network reset:")
|
||||
|
||||
@@ -282,11 +291,11 @@
|
||||
for(var/datum/AI_Module/small/overload_machine/overload in current_modules)
|
||||
if(overload.uses > 0)
|
||||
overload.uses --
|
||||
audible_message("<span class='italics'>You hear a loud electrical buzzing sound!</span>")
|
||||
audible_message("<span class='userdanger'>You hear a loud electrical buzzing sound coming from [M]!</span>")
|
||||
src << "<span class='warning'>Overloading machine circuitry...</span>"
|
||||
spawn(50)
|
||||
if(M)
|
||||
explosion(get_turf(M), 0,1,1,0)
|
||||
explosion(get_turf(M), 0,2,3,0)
|
||||
qdel(M)
|
||||
else src << "<span class='notice'>Out of uses.</span>"
|
||||
else src << "<span class='notice'>That's not a machine.</span>"
|
||||
@@ -368,7 +377,7 @@
|
||||
for(var/n=1;n<4,n++)
|
||||
var/fail
|
||||
var/turf/T = turfs[n]
|
||||
if(!istype(T, /turf/open/floor))
|
||||
if(!isfloorturf(T))
|
||||
fail = 1
|
||||
var/datum/camerachunk/C = cameranet.getCameraChunk(T.x, T.y, T.z)
|
||||
if(!C.visibleTurfs[T])
|
||||
|
||||
Reference in New Issue
Block a user