April sync (#360)
* Maps and things no code/icons * helpers defines globalvars * Onclick world.dm orphaned_procs * subsystems Round vote and shuttle autocall done here too * datums * Game folder * Admin - chatter modules * clothing - mining * modular computers - zambies * client * mob level 1 * mob stage 2 + simple_animal * silicons n brains * mob stage 3 + Alien/Monkey * human mobs * icons updated * some sounds * emitter y u no commit * update tgstation.dme * compile fixes * travis fixes Also removes Fast digest mode, because reasons. * tweaks for travis Mentors are broke again Also fixes Sizeray guns * oxygen loss fix for vore code. * removes unused code * some code updates * bulk fixes * further fixes * outside things * whoops. * Maint bar ported * GLOBs.
This commit is contained in:
@@ -616,6 +616,14 @@
|
||||
build_path = /obj/item/weapon/restraints/handcuffs
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/receiver
|
||||
name = "Modular Receiver"
|
||||
id = "reciever"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 15000)
|
||||
build_path = /obj/item/weaponcrafting/receiver
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/shotgun_slug
|
||||
name = "Shotgun slug"
|
||||
id = "shotgun_slug"
|
||||
|
||||
@@ -90,14 +90,14 @@
|
||||
build_path = /obj/item/weapon/circuitboard/machine/quantumpad
|
||||
category = list ("Teleportation Machinery")
|
||||
|
||||
/datum/design/board/telepad
|
||||
/*/datum/design/board/telepad
|
||||
name = "Machine Design (Telepad Board)"
|
||||
desc = "The circuit board for a telescience telepad."
|
||||
id = "telepad"
|
||||
req_tech = list("programming" = 4, "bluespace" = 5, "plasmatech" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/telesci_pad
|
||||
category = list ("Teleportation Machinery")
|
||||
|
||||
*/
|
||||
/datum/design/board/teleconsole
|
||||
name = "Computer Design (Teleporter Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a teleporter control console."
|
||||
@@ -106,14 +106,14 @@
|
||||
build_path = /obj/item/weapon/circuitboard/computer/teleporter
|
||||
category = list("Teleportation Machinery")
|
||||
|
||||
/datum/design/board/telesci_console
|
||||
/* /datum/design/board/telesci_console
|
||||
name = "Computer Design (Telepad Control Console Board)"
|
||||
desc = "Allows for the construction of circuit boards used to build a telescience console."
|
||||
id = "telesci_console"
|
||||
req_tech = list("programming" = 3, "bluespace" = 3, "plasmatech" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/telesci_console
|
||||
category = list("Teleportation Machinery")
|
||||
|
||||
*/
|
||||
/datum/design/board/sleeper
|
||||
name = "Machine Design (Sleeper Board)"
|
||||
desc = "The circuit board for a sleeper."
|
||||
|
||||
@@ -718,6 +718,16 @@
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/boris_ai_controller
|
||||
name = "B.O.R.I.S. AI-Cyborg Remote Control Module"
|
||||
id = "borg_ai_control"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/ai
|
||||
materials = list(MAT_METAL = 1200, MAT_GLASS = 1500, MAT_GOLD = 200)
|
||||
req_tech = list("programming" = 4, "magnets" = 4, "engineering" = 4)
|
||||
construction_time = 50
|
||||
category = list("Misc")
|
||||
|
||||
//Misc
|
||||
/datum/design/mecha_tracking
|
||||
name = "Exosuit Tracking Beacon"
|
||||
@@ -759,7 +769,6 @@
|
||||
construction_time = 100
|
||||
build_path = /obj/item/device/assembly/flash/handheld
|
||||
category = list("Misc")
|
||||
|
||||
/*
|
||||
/datum/design/flightsuit //Multi step build process/redo WIP
|
||||
name = "Flight Suit"
|
||||
@@ -771,7 +780,6 @@
|
||||
construction_time = 250
|
||||
category = list("Misc")
|
||||
req_tech = list("magnets" = 2, "combat" = 2, "plasmatech" = 2, "materials" = 4, "engineering" = 3, "powerstorage" = 2)
|
||||
*/
|
||||
|
||||
/datum/design/flightpack
|
||||
name = "Flight Pack"
|
||||
@@ -784,7 +792,6 @@
|
||||
category = list("Misc")
|
||||
req_tech = list("magnets" = 4, "combat" = 3, "plasmatech" = 4, "materials" = 5, "engineering" = 4, "powerstorage" = 4)
|
||||
|
||||
/*
|
||||
/datum/design/flightshoes
|
||||
name = "Flight Shoes"
|
||||
desc = "Flight shoes, attachable to a flight suit to provide additional functions."
|
||||
@@ -795,4 +802,4 @@
|
||||
construction_time = 100
|
||||
category = list("Misc")
|
||||
req_tech = list("magnets" = 2, "combat" = 2, "plasmatech" = 3, "materials" = 3, "engineering" = 2, "powerstorage" = 2)
|
||||
*/
|
||||
*/
|
||||
@@ -177,16 +177,6 @@
|
||||
build_path = /obj/item/weapon/gun/energy/wormhole_projector
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/reciever
|
||||
name = "Modular Receiver"
|
||||
desc = "A prototype modular receiver and trigger assembly for a variety of firearms."
|
||||
id = "reciever"
|
||||
req_tech = list("combat" = 4, "materials" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6500, MAT_SILVER = 500)
|
||||
build_path = /obj/item/weaponcrafting/reciever
|
||||
category = list("Weapons")
|
||||
|
||||
//WT550 Mags
|
||||
|
||||
/datum/design/mag_oldsmg
|
||||
|
||||
@@ -84,8 +84,8 @@
|
||||
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/experimentor(null)
|
||||
B.apply_default_parts(src)
|
||||
|
||||
trackedIan = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in mob_list
|
||||
trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in mob_list
|
||||
trackedIan = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_list
|
||||
trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in GLOB.mob_list
|
||||
SetTypeReactions()
|
||||
|
||||
/obj/item/weapon/circuitboard/machine/experimentor
|
||||
@@ -556,7 +556,7 @@
|
||||
//~~~~~~~~Admin logging proc, aka the Powergamer Alarm~~~~~~~~
|
||||
/obj/machinery/r_n_d/experimentor/proc/warn_admins(mob/user, ReactionName)
|
||||
var/turf/T = get_turf(src)
|
||||
message_admins("Experimentor reaction: [ReactionName] generated by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) at ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
|
||||
message_admins("Experimentor reaction: [ReactionName] generated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(T)]",0,1)
|
||||
log_game("Experimentor reaction: [ReactionName] generated by [key_name(user)] in ([T.x],[T.y],[T.z])")
|
||||
|
||||
#undef SCANTYPE_POKE
|
||||
@@ -638,7 +638,7 @@
|
||||
|
||||
/obj/item/weapon/relic/proc/flash(mob/user)
|
||||
playsound(src.loc, "sparks", rand(25,50), 1)
|
||||
var/obj/item/weapon/grenade/flashbang/CB = new/obj/item/weapon/grenade/flashbang(get_turf(user))
|
||||
var/obj/item/weapon/grenade/flashbang/CB = new/obj/item/weapon/grenade/flashbang(user.loc)
|
||||
CB.prime()
|
||||
warn_admins(user, "Flash")
|
||||
|
||||
@@ -703,6 +703,6 @@
|
||||
var/turf/T = get_turf(src)
|
||||
var/log_msg = "[RelicType] relic used by [key_name(user)] in ([T.x],[T.y],[T.z])"
|
||||
if(priority) //For truly dangerous relics that may need an admin's attention. BWOINK!
|
||||
message_admins("[RelicType] relic activated by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
|
||||
message_admins("[RelicType] relic activated by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(T)]",0,1)
|
||||
log_game(log_msg)
|
||||
investigate_log(log_msg, "experimentor")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
GLOBAL_LIST_INIT(message_servers, list())
|
||||
|
||||
/datum/data_pda_msg
|
||||
var/recipient = "Unspecified" //name of the person
|
||||
@@ -79,14 +79,14 @@ var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
var/decryptkey = "password"
|
||||
|
||||
/obj/machinery/message_server/New()
|
||||
message_servers += src
|
||||
GLOB.message_servers += src
|
||||
decryptkey = GenerateKey()
|
||||
send_pda_message("System Administrator", "system", "This is an automated message. The messaging system is functioning correctly.")
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/machinery/message_server/Destroy()
|
||||
message_servers -= src
|
||||
GLOB.message_servers -= src
|
||||
return ..()
|
||||
|
||||
/obj/machinery/message_server/proc/GenerateKey()
|
||||
|
||||
@@ -47,7 +47,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
var/sync = 1 //If sync = 0, it doesn't show up on Server Control Console
|
||||
var/first_use = 1 //If first_use = 1, it will try to auto-connect with nearby devices
|
||||
|
||||
req_access = list(access_tox) //Data and setting manipulation requires scientist access.
|
||||
req_access = list(GLOB.access_tox) //Data and setting manipulation requires scientist access.
|
||||
|
||||
var/selected_category
|
||||
var/list/datum/design/matching_designs = list() //for the search function
|
||||
@@ -55,18 +55,18 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
|
||||
|
||||
/proc/CallTechName(ID) //A simple helper proc to find the name of a tech with a given ID.
|
||||
if(tech_list[ID])
|
||||
var/datum/tech/tech = tech_list[ID]
|
||||
if(GLOB.tech_list[ID])
|
||||
var/datum/tech/tech = GLOB.tech_list[ID]
|
||||
return tech.name
|
||||
return "ERROR: Report This"
|
||||
|
||||
/proc/CallMaterialName(ID)
|
||||
if (copytext(ID, 1, 2) == "$" && materials_list[ID])
|
||||
var/datum/material/material = materials_list[ID]
|
||||
if (copytext(ID, 1, 2) == "$" && GLOB.materials_list[ID])
|
||||
var/datum/material/material = GLOB.materials_list[ID]
|
||||
return material.name
|
||||
|
||||
else if(chemical_reagents_list[ID])
|
||||
var/datum/reagent/reagent = chemical_reagents_list[ID]
|
||||
else if(GLOB.chemical_reagents_list[ID])
|
||||
var/datum/reagent/reagent = GLOB.chemical_reagents_list[ID]
|
||||
return reagent.name
|
||||
return "ERROR: Report This"
|
||||
|
||||
@@ -90,7 +90,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
|
||||
//Have it automatically push research to the centcom server so wild griffins can't fuck up R&D's work --NEO
|
||||
/obj/machinery/computer/rdconsole/proc/griefProtection()
|
||||
for(var/obj/machinery/r_n_d/server/centcom/C in machines)
|
||||
for(var/obj/machinery/r_n_d/server/centcom/C in GLOB.machines)
|
||||
for(var/v in files.known_tech)
|
||||
var/datum/tech/T = files.known_tech[v]
|
||||
C.files.AddTech2Known(T)
|
||||
@@ -350,7 +350,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
griefProtection() //Putting this here because I dont trust the sync process
|
||||
spawn(30)
|
||||
if(src)
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
|
||||
var/server_processed = 0
|
||||
if(S.disabled)
|
||||
continue
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/heat_gen = 100
|
||||
var/heating_power = 40000
|
||||
var/delay = 10
|
||||
req_access = list(access_rd) //Only the R&D can change server settings.
|
||||
req_access = list(GLOB.access_rd) //Only the R&D can change server settings.
|
||||
|
||||
/obj/machinery/r_n_d/server/New()
|
||||
..()
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
//Backup files to centcom to help admins recover data after greifer attacks
|
||||
/obj/machinery/r_n_d/server/proc/griefProtection()
|
||||
for(var/obj/machinery/r_n_d/server/centcom/C in machines)
|
||||
for(var/obj/machinery/r_n_d/server/centcom/C in GLOB.machines)
|
||||
for(var/v in files.known_tech)
|
||||
var/datum/tech/T = files.known_tech[v]
|
||||
C.files.AddTech2Known(T)
|
||||
@@ -143,7 +143,7 @@
|
||||
/proc/fix_noid_research_servers()
|
||||
var/list/no_id_servers = list()
|
||||
var/list/server_ids = list()
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
|
||||
switch(S.server_id)
|
||||
if(-1)
|
||||
continue
|
||||
@@ -195,20 +195,20 @@
|
||||
temp_server = null
|
||||
consoles = list()
|
||||
servers = list()
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
|
||||
if(S.server_id == text2num(href_list["access"]) || S.server_id == text2num(href_list["data"]) || S.server_id == text2num(href_list["transfer"]))
|
||||
temp_server = S
|
||||
break
|
||||
if(href_list["access"])
|
||||
screen = 1
|
||||
for(var/obj/machinery/computer/rdconsole/C in machines)
|
||||
for(var/obj/machinery/computer/rdconsole/C in GLOB.machines)
|
||||
if(C.sync)
|
||||
consoles += C
|
||||
else if(href_list["data"])
|
||||
screen = 2
|
||||
else if(href_list["transfer"])
|
||||
screen = 3
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
|
||||
if(S == src)
|
||||
continue
|
||||
servers += S
|
||||
@@ -256,7 +256,7 @@
|
||||
if(0) //Main Menu
|
||||
dat += "Connected Servers:<BR><BR>"
|
||||
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
|
||||
if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin)
|
||||
continue
|
||||
dat += "[S.name] || "
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
C.client.images -= chunk.obscured
|
||||
C.remote_control = null
|
||||
C.unset_machine()
|
||||
src.Remove(C)
|
||||
Remove(C)
|
||||
|
||||
|
||||
/datum/action/innate/slime_place
|
||||
@@ -118,7 +118,7 @@
|
||||
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/xenobio/X = target
|
||||
|
||||
if(cameranet.checkTurfVis(remote_eye.loc))
|
||||
if(GLOB.cameranet.checkTurfVis(remote_eye.loc))
|
||||
for(var/mob/living/simple_animal/slime/S in X.stored_slimes)
|
||||
S.loc = remote_eye.loc
|
||||
S.visible_message("[S] warps in!")
|
||||
@@ -137,7 +137,7 @@
|
||||
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/xenobio/X = target
|
||||
|
||||
if(cameranet.checkTurfVis(remote_eye.loc))
|
||||
if(GLOB.cameranet.checkTurfVis(remote_eye.loc))
|
||||
for(var/mob/living/simple_animal/slime/S in remote_eye.loc)
|
||||
if(X.stored_slimes.len >= X.max_slimes)
|
||||
break
|
||||
@@ -162,7 +162,7 @@
|
||||
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/xenobio/X = target
|
||||
|
||||
if(cameranet.checkTurfVis(remote_eye.loc))
|
||||
if(GLOB.cameranet.checkTurfVis(remote_eye.loc))
|
||||
if(X.monkeys >= 1)
|
||||
var/mob/living/carbon/monkey/food = new /mob/living/carbon/monkey(remote_eye.loc)
|
||||
food.LAssailant = C
|
||||
@@ -183,7 +183,7 @@
|
||||
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/xenobio/X = target
|
||||
|
||||
if(cameranet.checkTurfVis(remote_eye.loc))
|
||||
if(GLOB.cameranet.checkTurfVis(remote_eye.loc))
|
||||
for(var/mob/living/carbon/monkey/M in remote_eye.loc)
|
||||
if(M.stat)
|
||||
M.visible_message("[M] vanishes as they are reclaimed for recycling!")
|
||||
|
||||
@@ -177,12 +177,12 @@
|
||||
return ..()
|
||||
var/mob/living/simple_animal/SM = M
|
||||
if(SM.sentience_type != sentience_type)
|
||||
to_chat(user, "<span class='warning'>The potion won't work on [SM].</span>")
|
||||
to_chat(user, "<span class='warning'>[src] won't work on [SM].</span>")
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
to_chat(user, "<span class='notice'>You offer the sentience potion to [SM]...</span>")
|
||||
to_chat(user, "<span class='notice'>You offer [src] to [SM]...</span>")
|
||||
being_used = 1
|
||||
|
||||
var/list/candidates = pollCandidatesForMob("Do you want to play as [SM.name]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, SM, POLL_IGNORE_SENTIENCE_POTION) // see poll_ignore.dm
|
||||
@@ -190,13 +190,11 @@
|
||||
if(candidates.len)
|
||||
theghost = pick(candidates)
|
||||
SM.key = theghost.key
|
||||
SM.languages_spoken |= HUMAN
|
||||
SM.languages_understood |= HUMAN
|
||||
SM.mind.enslave_mind_to_creator(user)
|
||||
SM.sentience_act()
|
||||
to_chat(SM, "<span class='warning'>All at once it makes sense: you know what you are and who you are! Self awareness is yours!</span>")
|
||||
to_chat(SM, "<span class='userdanger'>You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.</span>")
|
||||
to_chat(user, "<span class='notice'>[SM] accepts the potion and suddenly becomes attentive and aware. It worked!</span>")
|
||||
to_chat(user, "<span class='notice'>[SM] accepts [src] and suddenly becomes attentive and aware. It worked!</span>")
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[SM] looks interested for a moment, but then looks back down. Maybe you should try again later.</span>")
|
||||
@@ -238,8 +236,6 @@
|
||||
|
||||
|
||||
user.mind.transfer_to(SM)
|
||||
SM.languages_spoken = user.languages_spoken
|
||||
SM.languages_understood = user.languages_understood
|
||||
SM.faction = user.faction.Copy()
|
||||
SM.sentience_act() //Same deal here as with sentience
|
||||
user.death()
|
||||
@@ -523,7 +519,7 @@
|
||||
var/mob/living/carbon/human/G = new /mob/living/carbon/human
|
||||
G.set_species(/datum/species/golem/adamantine)
|
||||
G.set_cloned_appearance()
|
||||
G.real_name = "Adamantine Golem ([rand(1, 1000)])"
|
||||
G.real_name = G.dna.species.random_name()
|
||||
G.name = G.real_name
|
||||
G.dna.unique_enzymes = G.dna.generate_unique_enzymes()
|
||||
G.dna.species.auto_equip(G)
|
||||
@@ -560,7 +556,7 @@
|
||||
|
||||
/obj/effect/timestop/New()
|
||||
..()
|
||||
for(var/mob/living/M in player_list)
|
||||
for(var/mob/living/M in GLOB.player_list)
|
||||
for(var/obj/effect/proc_holder/spell/aoe_turf/conjure/timestop/T in M.mind.spell_list) //People who can stop time are immune to timestop
|
||||
immune |= M
|
||||
timestop()
|
||||
|
||||
Reference in New Issue
Block a user