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:
Poojawa
2016-12-22 03:57:55 -06:00
committed by GitHub
parent f5e143a452
commit cf59ac1c3d
2215 changed files with 707445 additions and 87041 deletions
+54 -45
View File
@@ -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])