TG sync Sunday (#201)
* stage one * datums and shit * game stuff * modules * tgstation.dme * tools * these things for icons * compiling fixes * merge spree on TG * other updates * updated maps with deepfryers * My helpers were not helping
This commit is contained in:
@@ -168,8 +168,10 @@
|
||||
// Used by Paper and PhotoCopier (and PaperBin once a year).
|
||||
// Used by PDA's Notekeeper.
|
||||
// Used by NewsCaster and NewsPaper.
|
||||
// Used by Modular Computers
|
||||
#define PEN_FONT "Verdana"
|
||||
#define CRAYON_FONT "Comic Sans MS"
|
||||
#define PRINTER_FONT "Times New Roman"
|
||||
#define SIGNFONT "Times New Roman"
|
||||
|
||||
#define RESIZE_DEFAULT_SIZE 1
|
||||
|
||||
@@ -13,3 +13,6 @@
|
||||
#define GC_QUEUED_FOR_QUEUING -1
|
||||
#define GC_QUEUED_FOR_HARD_DEL -2
|
||||
#define GC_CURRENTLY_BEING_QDELETED -3
|
||||
|
||||
#define QDELETED(X) (!X || X.gc_destroyed)
|
||||
#define QDESTROYING(X) (!X || X.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
|
||||
|
||||
@@ -20,10 +20,6 @@
|
||||
if (config.log_admin)
|
||||
diary << "\[[time_stamp()]]ADMIN: [text]"
|
||||
|
||||
/proc/log_mentor(text)
|
||||
mentor_log.Add(text)
|
||||
diary << "\[[time_stamp()]]MENTOR: [text]"
|
||||
|
||||
/proc/log_adminsay(text)
|
||||
if (config.log_adminchat)
|
||||
log_admin("ASAY: [text]")
|
||||
|
||||
@@ -449,7 +449,7 @@
|
||||
|
||||
/proc/pollCandidatesForMob(Question, jobbanType, datum/game_mode/gametypeCheck, be_special_flag = 0, poll_time = 300, mob/M, ignore_category = null)
|
||||
var/list/L = pollCandidates(Question, jobbanType, gametypeCheck, be_special_flag, poll_time, ignore_category)
|
||||
if(!M || qdeleted(M) || !M.loc)
|
||||
if(!M || QDELETED(M) || !M.loc)
|
||||
return list()
|
||||
return L
|
||||
|
||||
@@ -458,7 +458,7 @@
|
||||
var/i=1
|
||||
for(var/v in mobs)
|
||||
var/atom/A = v
|
||||
if(!A || qdeleted(A) || !A.loc)
|
||||
if(!A || QDELETED(A) || !A.loc)
|
||||
mobs.Cut(i,i+1)
|
||||
else
|
||||
++i
|
||||
|
||||
@@ -13,12 +13,6 @@
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, undershirt_list, undershirt_m, undershirt_f)
|
||||
//socks
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, socks_list)
|
||||
//human mutant bodyparts
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, tails_list_human)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/human, animated_tails_list_human)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, ears_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, wings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings_open, wings_open_list)
|
||||
//lizard bodyparts (blizzard intensifies)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, body_markings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/lizard, tails_list_lizard)
|
||||
@@ -36,6 +30,13 @@
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, legs_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, r_wings_list,roundstart = TRUE)
|
||||
|
||||
//human mutant bodyparts
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/human, tails_list_human)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/human, animated_tails_list_human)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/ears, ears_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, wings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/wings_open, wings_open_list)
|
||||
|
||||
//mammal bodyparts (fucking furries)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, mam_body_markings_list)
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, mam_tails_list)
|
||||
|
||||
@@ -33,11 +33,12 @@
|
||||
#define N_SOUTHEAST 64
|
||||
#define N_SOUTHWEST 1024
|
||||
|
||||
#define SMOOTH_FALSE 0 //not smooth
|
||||
#define SMOOTH_TRUE 1 //smooths with exact specified types or just itself
|
||||
#define SMOOTH_MORE 2 //smooths with all subtypes of specified types or just itself (this value can replace SMOOTH_TRUE)
|
||||
#define SMOOTH_DIAGONAL 4 //if atom should smooth diagonally, this should be present in 'smooth' var
|
||||
#define SMOOTH_BORDER 8 //atom will smooth with the borders of the map
|
||||
#define SMOOTH_FALSE 0 //not smooth
|
||||
#define SMOOTH_TRUE 1 //smooths with exact specified types or just itself
|
||||
#define SMOOTH_MORE 2 //smooths with all subtypes of specified types or just itself (this value can replace SMOOTH_TRUE)
|
||||
#define SMOOTH_DIAGONAL 4 //if atom should smooth diagonally, this should be present in 'smooth' var
|
||||
#define SMOOTH_BORDER 8 //atom will smooth with the borders of the map
|
||||
#define SMOOTH_QUEUED 16 //atom is currently queued to smooth.
|
||||
|
||||
#define NULLTURF_BORDER 123456789
|
||||
|
||||
@@ -110,9 +111,12 @@
|
||||
|
||||
//do not use, use queue_smooth(atom)
|
||||
/proc/smooth_icon(atom/A)
|
||||
if(!A || !A.smooth || !A.z)
|
||||
if(!A || !A.smooth)
|
||||
return
|
||||
if(qdeleted(A))
|
||||
A.smooth &= ~SMOOTH_QUEUED
|
||||
if (!A.z)
|
||||
return
|
||||
if(QDELETED(A))
|
||||
return
|
||||
if((A.smooth & SMOOTH_TRUE) || (A.smooth & SMOOTH_MORE))
|
||||
var/adjacencies = calculate_adjacencies(A)
|
||||
@@ -376,11 +380,13 @@
|
||||
|
||||
//SSicon_smooth
|
||||
/proc/queue_smooth(atom/A)
|
||||
if(SSicon_smooth)
|
||||
SSicon_smooth.smooth_queue[A] = A
|
||||
SSicon_smooth.can_fire = 1
|
||||
else
|
||||
smooth_icon(A)
|
||||
if(!A.smooth || A.smooth & SMOOTH_QUEUED)
|
||||
return
|
||||
|
||||
SSicon_smooth.smooth_queue += A
|
||||
SSicon_smooth.can_fire = 1
|
||||
A.smooth |= SMOOTH_QUEUED
|
||||
|
||||
|
||||
//Example smooth wall
|
||||
/turf/closed/wall/smooth
|
||||
|
||||
@@ -133,7 +133,6 @@ var/list/skin_tones = list(
|
||||
)
|
||||
|
||||
var/global/list/species_list[0]
|
||||
var/global/list/whitelisted_species_list[0]
|
||||
var/global/list/roundstart_species[0]
|
||||
|
||||
/proc/age2agedescription(age)
|
||||
|
||||
@@ -81,14 +81,21 @@
|
||||
return text //only accepts the text if it has some non-spaces
|
||||
|
||||
// Used to get a properly sanitized input, of max_length
|
||||
/proc/stripped_input(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN)
|
||||
// no_trim is self explanatory but it prevents the input from being trimed if you intend to parse newlines or whitespace.
|
||||
/proc/stripped_input(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN, no_trim=FALSE)
|
||||
var/name = input(user, message, title, default) as text|null
|
||||
return trim(html_encode(name), max_length) //trim is "outside" because html_encode can expand single symbols into multiple symbols (such as turning < into <)
|
||||
if(no_trim)
|
||||
return copytext(html_encode(name), 1, max_length)
|
||||
else
|
||||
return trim(html_encode(name), max_length) //trim is "outside" because html_encode can expand single symbols into multiple symbols (such as turning < into <)
|
||||
|
||||
// Used to get a properly sanitized multiline input, of max_length
|
||||
/proc/stripped_multiline_input(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN)
|
||||
/proc/stripped_multiline_input(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN, no_trim=FALSE)
|
||||
var/name = input(user, message, title, default) as message|null
|
||||
return html_encode(trim(name, max_length))
|
||||
if(no_trim)
|
||||
return copytext(html_encode(name), 1, max_length)
|
||||
else
|
||||
return trim(html_encode(name), max_length)
|
||||
|
||||
//Filters out undesirable characters from names
|
||||
/proc/reject_bad_name(t_in, allow_numbers=0, max_length=MAX_NAME_LEN)
|
||||
|
||||
@@ -16,3 +16,10 @@ proc/TextPreview(var/string,var/len=40)
|
||||
return string
|
||||
else
|
||||
return "[copytext(string, 1, 37)]..."
|
||||
|
||||
var/list/mentor_log = list ( )
|
||||
var/list/admintickets = list()
|
||||
var/global/list/whitelisted_species_list[0]
|
||||
/proc/log_mentor(text)
|
||||
mentor_log.Add(text)
|
||||
diary << "\[[time_stamp()]]MENTOR: [text]"
|
||||
@@ -916,7 +916,7 @@ var/list/WALLITEMS_INVERSE = typecacheof(list(
|
||||
|
||||
/proc/IsValidSrc(datum/D)
|
||||
if(istype(D))
|
||||
return !qdeleted(D)
|
||||
return !QDELETED(D)
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
@@ -50,6 +50,10 @@
|
||||
#warn compiling in TESTING mode. testing() debug messages will be visible.
|
||||
#endif
|
||||
|
||||
#ifdef TRAVISTESTING
|
||||
#define TESTING
|
||||
#endif
|
||||
|
||||
//Update this whenever you need to take advantage of more recent byond features
|
||||
#define MIN_COMPILER_VERSION 510
|
||||
#if DM_VERSION < MIN_COMPILER_VERSION
|
||||
|
||||
@@ -4,7 +4,6 @@ var/href_logfile = null
|
||||
|
||||
var/list/bombers = list( )
|
||||
var/list/admin_log = list ( )
|
||||
var/list/mentor_log = list ( )
|
||||
var/list/lastsignalers = list( ) //keeps last 100 signals here in format: "[src] used \ref[src] @ location [src.loc]: [freq]/[code]"
|
||||
var/list/lawchanges = list( ) //Stores who uploaded laws to which silicon-based lifeform, and what the law was
|
||||
|
||||
@@ -12,6 +11,5 @@ var/list/combatlog = list()
|
||||
var/list/IClog = list()
|
||||
var/list/OOClog = list()
|
||||
var/list/adminlog = list()
|
||||
var/list/admintickets = list()
|
||||
|
||||
var/list/active_turfs_startlist = list()
|
||||
|
||||
@@ -184,4 +184,4 @@
|
||||
//
|
||||
|
||||
/mob/living/silicon/ai/TurfAdjacent(var/turf/T)
|
||||
return (cameranet && cameranet.checkTurfVis(T))
|
||||
return (cameranet && cameranet.checkTurfVis(T))
|
||||
|
||||
@@ -10,17 +10,6 @@
|
||||
var/mob/living/carbon/alien/humanoid/hunter/AH = usr
|
||||
AH.toggle_leap()
|
||||
|
||||
/obj/screen/alien/nightvision
|
||||
name = "toggle night-vision"
|
||||
icon_state = "nightvision1"
|
||||
screen_loc = ui_alien_nightvision
|
||||
|
||||
/obj/screen/alien/nightvision/Click()
|
||||
var/mob/living/carbon/alien/A = usr
|
||||
var/obj/effect/proc_holder/alien/nightvisiontoggle/T = locate() in A.abilities
|
||||
if(T)
|
||||
T.fire(A)
|
||||
|
||||
/obj/screen/alien/plasma_display
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
icon_state = "power_display2"
|
||||
@@ -105,9 +94,6 @@
|
||||
healths = new /obj/screen/healths/alien()
|
||||
infodisplay += healths
|
||||
|
||||
nightvisionicon = new /obj/screen/alien/nightvision()
|
||||
infodisplay += nightvisionicon
|
||||
|
||||
alien_plasma_display = new /obj/screen/alien/plasma_display()
|
||||
infodisplay += alien_plasma_display
|
||||
|
||||
|
||||
@@ -10,9 +10,6 @@
|
||||
healths = new /obj/screen/healths/alien()
|
||||
infodisplay += healths
|
||||
|
||||
nightvisionicon = new /obj/screen/alien/nightvision()
|
||||
nightvisionicon.screen_loc = ui_alien_nightvision
|
||||
infodisplay += nightvisionicon
|
||||
alien_queen_finder = new /obj/screen/alien/alien_queen_finder()
|
||||
infodisplay += alien_queen_finder
|
||||
pull_icon = new /obj/screen/pull()
|
||||
|
||||
@@ -77,6 +77,8 @@
|
||||
/datum/hud/ghost/show_hud()
|
||||
var/mob/dead/observer/G = mymob
|
||||
mymob.client.screen = list()
|
||||
for(var/thing in plane_masters)
|
||||
mymob.client.screen += plane_masters[thing]
|
||||
create_parallax()
|
||||
if(G.client.prefs.ghost_hud)
|
||||
mymob.client.screen += static_inventory
|
||||
|
||||
@@ -200,9 +200,8 @@
|
||||
if(infodisplay.len)
|
||||
screenmob.client.screen -= infodisplay
|
||||
|
||||
if(plane_masters.len)
|
||||
for(var/thing in plane_masters)
|
||||
screenmob.client.screen += plane_masters[thing]
|
||||
for(var/thing in plane_masters)
|
||||
screenmob.client.screen += plane_masters[thing]
|
||||
hud_version = display_hud_version
|
||||
persistent_inventory_update(screenmob)
|
||||
mymob.update_action_buttons(1)
|
||||
|
||||
@@ -98,7 +98,7 @@ var/const/tk_maxrange = 15
|
||||
/obj/item/tk_grab/attack_self(mob/user)
|
||||
if(!focus)
|
||||
return
|
||||
if(qdeleted(focus))
|
||||
if(QDELETED(focus))
|
||||
qdel(src)
|
||||
return
|
||||
focus.attack_self_tk(user)
|
||||
|
||||
@@ -157,6 +157,7 @@
|
||||
var/time = (world.timeofday - start_timeofday) / 10
|
||||
var/msg = "Initialized [name] subsystem within [time] seconds!"
|
||||
world << "<span class='boldannounce'>[msg]</span>"
|
||||
world.log << msg
|
||||
return time
|
||||
|
||||
//hook for printing stats to the "MC" statuspanel for admins to see performance and related stats etc.
|
||||
|
||||
@@ -26,7 +26,7 @@ var/datum/subsystem/acid/SSacid
|
||||
while (currentrun.len)
|
||||
var/obj/O = currentrun[currentrun.len]
|
||||
currentrun.len--
|
||||
if (!O || qdeleted(O))
|
||||
if (!O || QDELETED(O))
|
||||
processing -= O
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
@@ -22,8 +22,9 @@ var/datum/subsystem/augury/SSaugury
|
||||
var/biggest_doom = null
|
||||
var/biggest_threat = null
|
||||
|
||||
for(var/d in doombringers)
|
||||
if(!d || qdeleted(d))
|
||||
for(var/db in doombringers)
|
||||
var/datum/d = db
|
||||
if(!d || QDELETED(d))
|
||||
doombringers -= d
|
||||
continue
|
||||
var/threat = doombringers[d]
|
||||
|
||||
@@ -59,17 +59,6 @@ var/datum/subsystem/events/SSevent
|
||||
/datum/subsystem/events/proc/reschedule()
|
||||
scheduled = world.time + rand(frequency_lower, max(frequency_lower,frequency_upper))
|
||||
|
||||
if(world.time > 108000) //2:45
|
||||
frequency_lower=1000
|
||||
frequency_upper=1500
|
||||
//if ((!( ticker ) || emergency_shuttle.location))
|
||||
//if(SSshuttle.emergency.mode == SHUTTLE_DOCKED || SSshuttle.emergency.mode == SHUTTLE_CALL)
|
||||
// return
|
||||
if(SSshuttle.emergency.mode < SHUTTLE_CALL)
|
||||
SSshuttle.emergency.request(null, 1.5)
|
||||
log_game("Round time limit reached. Shuttle has been auto-called.")
|
||||
message_admins("Round time limit reached. Shuttle called.")
|
||||
|
||||
//selects a random event based on whether it can occur and it's 'weight'(probability)
|
||||
/datum/subsystem/events/proc/spawnEvent()
|
||||
if(!config.allow_random_events)
|
||||
@@ -108,7 +97,7 @@ var/datum/subsystem/events/SSevent
|
||||
continue
|
||||
if (E.alertadmins)
|
||||
message_admins("Random Event triggering: [E.name] ([E.typepath])")
|
||||
deadchat_broadcast("[E.name] has just been randomly triggered!") //STOP ASSUMING IT'S BADMINS!
|
||||
deadchat_broadcast("<span class='deadsay'><b>[E.name]</b> has just been randomly triggered!</span>") //STOP ASSUMING IT'S BADMINS!
|
||||
log_game("Random Event triggering: [E.name] ([E.typepath])")
|
||||
return
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ var/datum/subsystem/fire_burning/SSfire_burning
|
||||
while(currentrun.len)
|
||||
var/obj/O = currentrun[currentrun.len]
|
||||
currentrun.len--
|
||||
if (!O || qdeleted(O))
|
||||
if (!O || QDELETED(O))
|
||||
processing -= O
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
@@ -203,22 +203,6 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
else if(D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
|
||||
CRASH("[D.type] destroy proc was called multiple times, likely due to a qdel loop in the Destroy logic")
|
||||
|
||||
// Returns 1 if the object has been queued for deletion.
|
||||
/proc/qdeleted(datum/D)
|
||||
if(!istype(D))
|
||||
return FALSE
|
||||
if(D.gc_destroyed)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
// Returns true if the object's destroy has been called (set just before it is called)
|
||||
/proc/qdestroying(datum/D)
|
||||
if(!istype(D))
|
||||
return FALSE
|
||||
if(D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
// Default implementation of clean-up code.
|
||||
// This should be overridden to remove all references pointing to the object being destroyed.
|
||||
// Return the appropriate QDEL_HINT; in most cases this is QDEL_HINT_QUEUE.
|
||||
@@ -270,6 +254,7 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
usr.client.running_find_references = type
|
||||
|
||||
testing("Beginning search for references to a [type].")
|
||||
find_references_in_globals()
|
||||
for(var/datum/thing in world)
|
||||
if(usr && usr.client && !usr.client.running_find_references) return
|
||||
for(var/varname in thing.vars)
|
||||
@@ -326,4 +311,735 @@ var/datum/subsystem/garbage_collector/SSgarbage
|
||||
dat += "[path] - [tmplist[path]] times<BR>"
|
||||
|
||||
usr << browse(dat, "window=qdeletedlog")
|
||||
|
||||
#define SearchVar(X) DoSearchVar(X, #X)
|
||||
|
||||
/datum/proc/DoSearchVar(X, Xname)
|
||||
if(islist(X))
|
||||
if(src in X)
|
||||
testing("Found [src.type] \ref[src] in global list [Xname].")
|
||||
else if(istype(X, /datum))
|
||||
var/datum/D = X
|
||||
for(var/V in D.vars)
|
||||
for(var/varname in D.vars)
|
||||
var/variable = D.vars[varname]
|
||||
if(variable == src)
|
||||
testing("Found [src.type] \ref[src] in [D.type]'s [varname] var. Global: [Xname]")
|
||||
else if(islist(variable) && src in variable)
|
||||
testing("Found [src.type] \ref[src] in [D.type]'s [varname] list var. Global: [Xname]")
|
||||
CHECK_TICK
|
||||
|
||||
//if find_references isn't working for some datum
|
||||
//update this list using tools/DMTreeToGlobalsList
|
||||
/datum/proc/find_references_in_globals()
|
||||
SearchVar(last_irc_status)
|
||||
SearchVar(inerror)
|
||||
SearchVar(failed_db_connections)
|
||||
SearchVar(nextmap)
|
||||
SearchVar(mapchanging)
|
||||
SearchVar(rebootingpendingmapchange)
|
||||
SearchVar(clockwork_construction_value)
|
||||
SearchVar(clockwork_caches)
|
||||
SearchVar(clockwork_daemons)
|
||||
SearchVar(clockwork_generals_invoked)
|
||||
SearchVar(all_clockwork_objects)
|
||||
SearchVar(all_clockwork_mobs)
|
||||
SearchVar(clockwork_component_cache)
|
||||
SearchVar(ratvar_awakens)
|
||||
SearchVar(clockwork_gateway_activated)
|
||||
SearchVar(all_scripture)
|
||||
SearchVar(pointed_types)
|
||||
SearchVar(bloody_footprints_cache)
|
||||
SearchVar(ghost_accs_options)
|
||||
SearchVar(ghost_others_options)
|
||||
SearchVar(special_roles)
|
||||
SearchVar(string_cache)
|
||||
SearchVar(string_filename_current_key)
|
||||
SearchVar(cmp_field)
|
||||
SearchVar(friendly_animal_types)
|
||||
SearchVar(humanoid_icon_cache)
|
||||
SearchVar(freeze_item_icons)
|
||||
SearchVar(E)
|
||||
SearchVar(Sqrt2)
|
||||
SearchVar(sqrtTable)
|
||||
SearchVar(gaussian_next)
|
||||
SearchVar(skin_tones)
|
||||
SearchVar(species_list)
|
||||
SearchVar(roundstart_species)
|
||||
SearchVar(church_name)
|
||||
SearchVar(command_name)
|
||||
SearchVar(religion_name)
|
||||
SearchVar(syndicate_name)
|
||||
SearchVar(syndicate_code_phrase)
|
||||
SearchVar(syndicate_code_response)
|
||||
SearchVar(zero_character_only)
|
||||
SearchVar(hex_characters)
|
||||
SearchVar(alphabet)
|
||||
SearchVar(binary)
|
||||
SearchVar(can_embed_types)
|
||||
SearchVar(WALLITEMS)
|
||||
SearchVar(WALLITEMS_EXTERNAL)
|
||||
SearchVar(WALLITEMS_INVERSE)
|
||||
SearchVar(sortInstance)
|
||||
SearchVar(config)
|
||||
SearchVar(protected_config)
|
||||
SearchVar(host)
|
||||
SearchVar(join_motd)
|
||||
SearchVar(station_name)
|
||||
SearchVar(game_version)
|
||||
SearchVar(changelog_hash)
|
||||
SearchVar(ooc_allowed)
|
||||
SearchVar(dooc_allowed)
|
||||
SearchVar(abandon_allowed)
|
||||
SearchVar(enter_allowed)
|
||||
SearchVar(guests_allowed)
|
||||
SearchVar(shuttle_frozen)
|
||||
SearchVar(shuttle_left)
|
||||
SearchVar(tinted_weldhelh)
|
||||
SearchVar(Debug)
|
||||
SearchVar(Debug2)
|
||||
SearchVar(comms_key)
|
||||
SearchVar(comms_allowed)
|
||||
SearchVar(cross_address)
|
||||
SearchVar(cross_allowed)
|
||||
SearchVar(medal_hub)
|
||||
SearchVar(medal_pass)
|
||||
SearchVar(medals_enabled)
|
||||
SearchVar(MAX_EX_DEVESTATION_RANGE)
|
||||
SearchVar(MAX_EX_HEAVY_RANGE)
|
||||
SearchVar(MAX_EX_LIGHT_RANGE)
|
||||
SearchVar(MAX_EX_FLASH_RANGE)
|
||||
SearchVar(MAX_EX_FLAME_RANGE)
|
||||
SearchVar(DYN_EX_SCALE)
|
||||
SearchVar(sqladdress)
|
||||
SearchVar(sqlport)
|
||||
SearchVar(sqlfdbkdb)
|
||||
SearchVar(sqlfdbklogin)
|
||||
SearchVar(sqlfdbkpass)
|
||||
SearchVar(sqlfdbktableprefix)
|
||||
SearchVar(dbcon)
|
||||
SearchVar(master_mode)
|
||||
SearchVar(secret_force_mode)
|
||||
SearchVar(wavesecret)
|
||||
SearchVar(start_state)
|
||||
SearchVar(NEARSIGHTBLOCK)
|
||||
SearchVar(EPILEPSYBLOCK)
|
||||
SearchVar(COUGHBLOCK)
|
||||
SearchVar(TOURETTESBLOCK)
|
||||
SearchVar(NERVOUSBLOCK)
|
||||
SearchVar(BLINDBLOCK)
|
||||
SearchVar(DEAFBLOCK)
|
||||
SearchVar(HULKBLOCK)
|
||||
SearchVar(TELEBLOCK)
|
||||
SearchVar(FIREBLOCK)
|
||||
SearchVar(XRAYBLOCK)
|
||||
SearchVar(CLUMSYBLOCK)
|
||||
SearchVar(STRANGEBLOCK)
|
||||
SearchVar(RACEBLOCK)
|
||||
SearchVar(bad_se_blocks)
|
||||
SearchVar(good_se_blocks)
|
||||
SearchVar(op_se_blocks)
|
||||
SearchVar(NULLED_SE)
|
||||
SearchVar(NULLED_UI)
|
||||
SearchVar(global_mutations)
|
||||
SearchVar(bad_mutations)
|
||||
SearchVar(good_mutations)
|
||||
SearchVar(not_good_mutations)
|
||||
SearchVar(diary)
|
||||
SearchVar(diaryofmeanpeople)
|
||||
SearchVar(href_logfile)
|
||||
SearchVar(bombers)
|
||||
SearchVar(admin_log)
|
||||
SearchVar(lastsignalers)
|
||||
SearchVar(lawchanges)
|
||||
SearchVar(combatlog)
|
||||
SearchVar(IClog)
|
||||
SearchVar(OOClog)
|
||||
SearchVar(adminlog)
|
||||
SearchVar(active_turfs_startlist)
|
||||
SearchVar(admin_notice)
|
||||
SearchVar(timezoneOffset)
|
||||
SearchVar(fileaccess_timer)
|
||||
SearchVar(TAB)
|
||||
SearchVar(map_ready)
|
||||
SearchVar(data_core)
|
||||
SearchVar(CELLRATE)
|
||||
SearchVar(CHARGELEVEL)
|
||||
SearchVar(powernets)
|
||||
SearchVar(map_name)
|
||||
SearchVar(hair_styles_list)
|
||||
SearchVar(hair_styles_male_list)
|
||||
SearchVar(hair_styles_female_list)
|
||||
SearchVar(facial_hair_styles_list)
|
||||
SearchVar(facial_hair_styles_male_list)
|
||||
SearchVar(facial_hair_styles_female_list)
|
||||
SearchVar(underwear_list)
|
||||
SearchVar(underwear_m)
|
||||
SearchVar(underwear_f)
|
||||
SearchVar(undershirt_list)
|
||||
SearchVar(undershirt_m)
|
||||
SearchVar(undershirt_f)
|
||||
SearchVar(socks_list)
|
||||
SearchVar(body_markings_list)
|
||||
SearchVar(tails_list_lizard)
|
||||
SearchVar(animated_tails_list_lizard)
|
||||
SearchVar(snouts_list)
|
||||
SearchVar(horns_list)
|
||||
SearchVar(frills_list)
|
||||
SearchVar(spines_list)
|
||||
SearchVar(legs_list)
|
||||
SearchVar(animated_spines_list)
|
||||
SearchVar(tails_list_human)
|
||||
SearchVar(animated_tails_list_human)
|
||||
SearchVar(ears_list)
|
||||
SearchVar(wings_list)
|
||||
SearchVar(wings_open_list)
|
||||
SearchVar(r_wings_list)
|
||||
SearchVar(ghost_forms_with_directions_list)
|
||||
SearchVar(ghost_forms_with_accessories_list)
|
||||
SearchVar(security_depts_prefs)
|
||||
SearchVar(backbaglist)
|
||||
SearchVar(uplink_spawn_loc_list)
|
||||
SearchVar(female_clothing_icons)
|
||||
SearchVar(hit_appends)
|
||||
SearchVar(scarySounds)
|
||||
SearchVar(TAGGERLOCATIONS)
|
||||
SearchVar(guitar_notes)
|
||||
SearchVar(station_prefixes)
|
||||
SearchVar(station_names)
|
||||
SearchVar(station_suffixes)
|
||||
SearchVar(greek_letters)
|
||||
SearchVar(phonetic_alphabet)
|
||||
SearchVar(numbers_as_words)
|
||||
SearchVar(station_numerals)
|
||||
SearchVar(cardinal)
|
||||
SearchVar(alldirs)
|
||||
SearchVar(diagonals)
|
||||
SearchVar(accessable_z_levels)
|
||||
SearchVar(global_map)
|
||||
SearchVar(landmarks_list)
|
||||
SearchVar(start_landmarks_list)
|
||||
SearchVar(department_security_spawns)
|
||||
SearchVar(generic_event_spawns)
|
||||
SearchVar(monkeystart)
|
||||
SearchVar(wizardstart)
|
||||
SearchVar(newplayer_start)
|
||||
SearchVar(latejoin)
|
||||
SearchVar(prisonwarp)
|
||||
SearchVar(holdingfacility)
|
||||
SearchVar(xeno_spawn)
|
||||
SearchVar(tdome1)
|
||||
SearchVar(tdome2)
|
||||
SearchVar(tdomeobserve)
|
||||
SearchVar(tdomeadmin)
|
||||
SearchVar(prisonsecuritywarp)
|
||||
SearchVar(prisonwarped)
|
||||
SearchVar(blobstart)
|
||||
SearchVar(secequipment)
|
||||
SearchVar(deathsquadspawn)
|
||||
SearchVar(emergencyresponseteamspawn)
|
||||
SearchVar(ruin_landmarks)
|
||||
SearchVar(awaydestinations)
|
||||
SearchVar(sortedAreas)
|
||||
SearchVar(map_templates)
|
||||
SearchVar(ruins_templates)
|
||||
SearchVar(space_ruins_templates)
|
||||
SearchVar(lava_ruins_templates)
|
||||
SearchVar(shuttle_templates)
|
||||
SearchVar(shelter_templates)
|
||||
SearchVar(transit_markers)
|
||||
SearchVar(clients)
|
||||
SearchVar(admins)
|
||||
SearchVar(deadmins)
|
||||
SearchVar(directory)
|
||||
SearchVar(stealthminID)
|
||||
SearchVar(current_watchlist)
|
||||
SearchVar(player_list)
|
||||
SearchVar(mob_list)
|
||||
SearchVar(living_mob_list)
|
||||
SearchVar(dead_mob_list)
|
||||
SearchVar(joined_player_list)
|
||||
SearchVar(silicon_mobs)
|
||||
SearchVar(pai_list)
|
||||
SearchVar(ai_names)
|
||||
SearchVar(wizard_first)
|
||||
SearchVar(wizard_second)
|
||||
SearchVar(ninja_titles)
|
||||
SearchVar(ninja_names)
|
||||
SearchVar(commando_names)
|
||||
SearchVar(first_names_male)
|
||||
SearchVar(first_names_female)
|
||||
SearchVar(last_names)
|
||||
SearchVar(lizard_names_male)
|
||||
SearchVar(lizard_names_female)
|
||||
SearchVar(clown_names)
|
||||
SearchVar(mime_names)
|
||||
SearchVar(carp_names)
|
||||
SearchVar(golem_names)
|
||||
SearchVar(plasmaman_names)
|
||||
SearchVar(verbs)
|
||||
SearchVar(adjectives)
|
||||
SearchVar(cable_list)
|
||||
SearchVar(portals)
|
||||
SearchVar(airlocks)
|
||||
SearchVar(mechas_list)
|
||||
SearchVar(shuttle_caller_list)
|
||||
SearchVar(machines)
|
||||
SearchVar(syndicate_shuttle_boards)
|
||||
SearchVar(navbeacons)
|
||||
SearchVar(teleportbeacons)
|
||||
SearchVar(deliverybeacons)
|
||||
SearchVar(deliverybeacontags)
|
||||
SearchVar(nuke_list)
|
||||
SearchVar(alarmdisplay)
|
||||
SearchVar(chemical_reactions_list)
|
||||
SearchVar(chemical_reagents_list)
|
||||
SearchVar(materials_list)
|
||||
SearchVar(tech_list)
|
||||
SearchVar(surgeries_list)
|
||||
SearchVar(crafting_recipes)
|
||||
SearchVar(rcd_list)
|
||||
SearchVar(apcs_list)
|
||||
SearchVar(tracked_implants)
|
||||
SearchVar(tracked_chem_implants)
|
||||
SearchVar(poi_list)
|
||||
SearchVar(pinpointer_list)
|
||||
SearchVar(zombie_infection_list)
|
||||
SearchVar(meteor_list)
|
||||
SearchVar(poll_ignore)
|
||||
SearchVar(typecache_mob)
|
||||
SearchVar(tk_maxrange)
|
||||
SearchVar(Failsafe)
|
||||
SearchVar(Master)
|
||||
SearchVar(MC_restart_clear)
|
||||
SearchVar(MC_restart_timeout)
|
||||
SearchVar(MC_restart_count)
|
||||
SearchVar(CURRENT_TICKLIMIT)
|
||||
SearchVar(SSacid)
|
||||
SearchVar(SSair)
|
||||
SearchVar(SSasset)
|
||||
SearchVar(SSaugury)
|
||||
SearchVar(SScommunications)
|
||||
SearchVar(SSdisease)
|
||||
SearchVar(SSevent)
|
||||
SearchVar(SSfire_burning)
|
||||
SearchVar(SSgarbage)
|
||||
SearchVar(SSicon_smooth)
|
||||
SearchVar(SSipintel)
|
||||
SearchVar(SSjob)
|
||||
SearchVar(SSlighting)
|
||||
SearchVar(SSmachine)
|
||||
SearchVar(SSmapping)
|
||||
SearchVar(SSminimap)
|
||||
SearchVar(SSmob)
|
||||
SearchVar(SSnpc)
|
||||
SearchVar(SSorbit)
|
||||
SearchVar(SSpai)
|
||||
SearchVar(pai_card_list)
|
||||
SearchVar(SSparallax)
|
||||
SearchVar(SSpersistence)
|
||||
SearchVar(SSping)
|
||||
SearchVar(SSradio)
|
||||
SearchVar(SSreligion)
|
||||
SearchVar(SSserver)
|
||||
SearchVar(SSshuttle)
|
||||
SearchVar(SSspacedrift)
|
||||
SearchVar(SSsqueak)
|
||||
SearchVar(SSstickyban)
|
||||
SearchVar(SSsun)
|
||||
SearchVar(SStgui)
|
||||
SearchVar(SSthrowing)
|
||||
SearchVar(round_start_time)
|
||||
SearchVar(ticker)
|
||||
SearchVar(SStimer)
|
||||
SearchVar(SSvote)
|
||||
SearchVar(SSweather)
|
||||
SearchVar(SSfastprocess)
|
||||
SearchVar(SSflightpacks)
|
||||
SearchVar(SSobj)
|
||||
SearchVar(SSprocessing)
|
||||
SearchVar(record_id_num)
|
||||
SearchVar(emote_list)
|
||||
SearchVar(huds)
|
||||
SearchVar(diseases)
|
||||
SearchVar(archive_diseases)
|
||||
SearchVar(advance_cures)
|
||||
SearchVar(list_symptoms)
|
||||
SearchVar(dictionary_symptoms)
|
||||
SearchVar(SYMPTOM_ACTIVATION_PROB)
|
||||
SearchVar(revdata)
|
||||
SearchVar(all_status_effects)
|
||||
SearchVar(wire_colors)
|
||||
SearchVar(wire_color_directory)
|
||||
SearchVar(wire_name_directory)
|
||||
SearchVar(possiblethemes)
|
||||
SearchVar(max_secret_rooms)
|
||||
SearchVar(blood_splatter_icons)
|
||||
SearchVar(all_radios)
|
||||
SearchVar(radiochannels)
|
||||
SearchVar(radiochannelsreverse)
|
||||
SearchVar(SYND_FREQ)
|
||||
SearchVar(SUPP_FREQ)
|
||||
SearchVar(SERV_FREQ)
|
||||
SearchVar(SCI_FREQ)
|
||||
SearchVar(COMM_FREQ)
|
||||
SearchVar(MED_FREQ)
|
||||
SearchVar(ENG_FREQ)
|
||||
SearchVar(SEC_FREQ)
|
||||
SearchVar(CENTCOM_FREQ)
|
||||
SearchVar(AIPRIV_FREQ)
|
||||
SearchVar(RADIO_TO_AIRALARM)
|
||||
SearchVar(RADIO_FROM_AIRALARM)
|
||||
SearchVar(RADIO_CHAT)
|
||||
SearchVar(RADIO_ATMOSIA)
|
||||
SearchVar(RADIO_NAVBEACONS)
|
||||
SearchVar(RADIO_AIRLOCK)
|
||||
SearchVar(RADIO_MAGNETS)
|
||||
SearchVar(pointers)
|
||||
SearchVar(freqtospan)
|
||||
SearchVar(teleportlocs)
|
||||
SearchVar(the_station_areas)
|
||||
SearchVar(possible_items)
|
||||
SearchVar(possible_items_special)
|
||||
SearchVar(blobs)
|
||||
SearchVar(blob_cores)
|
||||
SearchVar(overminds)
|
||||
SearchVar(blob_nodes)
|
||||
SearchVar(blobs_legit)
|
||||
SearchVar(possible_changeling_IDs)
|
||||
SearchVar(slots)
|
||||
SearchVar(slot2slot)
|
||||
SearchVar(slot2type)
|
||||
SearchVar(hivemind_bank)
|
||||
SearchVar(blacklisted_pylon_turfs)
|
||||
SearchVar(non_revealed_runes)
|
||||
SearchVar(teleport_runes)
|
||||
SearchVar(wall_runes)
|
||||
SearchVar(whiteness)
|
||||
SearchVar(allDevils)
|
||||
SearchVar(lawlorify)
|
||||
SearchVar(gang_name_pool)
|
||||
SearchVar(gang_colors_pool)
|
||||
SearchVar(borers)
|
||||
SearchVar(total_borer_hosts_needed)
|
||||
SearchVar(bomb_set)
|
||||
SearchVar(hsboxspawn)
|
||||
SearchVar(multiverse)
|
||||
SearchVar(announcement_systems)
|
||||
SearchVar(doppler_arrays)
|
||||
SearchVar(HOLOPAD_MODE)
|
||||
SearchVar(holopads)
|
||||
SearchVar(news_network)
|
||||
SearchVar(allCasters)
|
||||
SearchVar(SAFETY_COOLDOWN)
|
||||
SearchVar(req_console_assistance)
|
||||
SearchVar(req_console_supplies)
|
||||
SearchVar(req_console_information)
|
||||
SearchVar(allConsoles)
|
||||
SearchVar(time_last_changed_position)
|
||||
SearchVar(CALL_SHUTTLE_REASON_LENGTH)
|
||||
SearchVar(crewmonitor)
|
||||
SearchVar(possible_uplinker_IDs)
|
||||
SearchVar(airlock_overlays)
|
||||
SearchVar(pipeID2State)
|
||||
SearchVar(telecomms_list)
|
||||
SearchVar(recentmessages)
|
||||
SearchVar(message_delay)
|
||||
SearchVar(year)
|
||||
SearchVar(year_integer)
|
||||
SearchVar(explosionid)
|
||||
SearchVar(fire_overlay)
|
||||
SearchVar(acid_overlay)
|
||||
SearchVar(BUMP_TELEPORTERS)
|
||||
SearchVar(contrabandposters)
|
||||
SearchVar(legitposters)
|
||||
SearchVar(blacklisted_glowshroom_turfs)
|
||||
SearchVar(PDAs)
|
||||
SearchVar(rod_recipes)
|
||||
SearchVar(glass_recipes)
|
||||
SearchVar(reinforced_glass_recipes)
|
||||
SearchVar(human_recipes)
|
||||
SearchVar(corgi_recipes)
|
||||
SearchVar(monkey_recipes)
|
||||
SearchVar(xeno_recipes)
|
||||
SearchVar(sinew_recipes)
|
||||
SearchVar(sandstone_recipes)
|
||||
SearchVar(sandbag_recipes)
|
||||
SearchVar(diamond_recipes)
|
||||
SearchVar(uranium_recipes)
|
||||
SearchVar(plasma_recipes)
|
||||
SearchVar(gold_recipes)
|
||||
SearchVar(silver_recipes)
|
||||
SearchVar(clown_recipes)
|
||||
SearchVar(titanium_recipes)
|
||||
SearchVar(plastitanium_recipes)
|
||||
SearchVar(snow_recipes)
|
||||
SearchVar(abductor_recipes)
|
||||
SearchVar(metal_recipes)
|
||||
SearchVar(plasteel_recipes)
|
||||
SearchVar(wood_recipes)
|
||||
SearchVar(cloth_recipes)
|
||||
SearchVar(cardboard_recipes)
|
||||
SearchVar(runed_metal_recipes)
|
||||
SearchVar(brass_recipes)
|
||||
SearchVar(disposalpipeID2State)
|
||||
SearchVar(RPD_recipes)
|
||||
SearchVar(highlander_claymores)
|
||||
SearchVar(biblenames)
|
||||
SearchVar(biblestates)
|
||||
SearchVar(bibleitemstates)
|
||||
SearchVar(globalBlankCanvases)
|
||||
SearchVar(crematoriums)
|
||||
SearchVar(icons_to_ignore_at_floor_init)
|
||||
SearchVar(js_byjax)
|
||||
SearchVar(js_dropdowns)
|
||||
SearchVar(BSACooldown)
|
||||
SearchVar(admin_ranks)
|
||||
SearchVar(admin_verbs_default)
|
||||
SearchVar(admin_verbs_admin)
|
||||
SearchVar(admin_verbs_ban)
|
||||
SearchVar(admin_verbs_sounds)
|
||||
SearchVar(admin_verbs_fun)
|
||||
SearchVar(admin_verbs_spawn)
|
||||
SearchVar(admin_verbs_server)
|
||||
SearchVar(admin_verbs_debug)
|
||||
SearchVar(admin_verbs_possess)
|
||||
SearchVar(admin_verbs_permissions)
|
||||
SearchVar(admin_verbs_rejuv)
|
||||
SearchVar(admin_verbs_hideable)
|
||||
SearchVar(create_object_html)
|
||||
SearchVar(create_object_forms)
|
||||
SearchVar(admin_datums)
|
||||
SearchVar(CMinutes)
|
||||
SearchVar(Banlist)
|
||||
SearchVar(whitelist)
|
||||
SearchVar(TYPES_SHORTCUTS)
|
||||
SearchVar(intercom_range_display_status)
|
||||
SearchVar(admin_verbs_debug_mapping)
|
||||
SearchVar(say_disabled)
|
||||
SearchVar(VVlocked)
|
||||
SearchVar(VVicon_edit_lock)
|
||||
SearchVar(VVckey_edit)
|
||||
SearchVar(VVpixelmovement)
|
||||
SearchVar(highlander)
|
||||
SearchVar(admin_sound)
|
||||
SearchVar(custom_outfits)
|
||||
SearchVar(meta_gas_info)
|
||||
SearchVar(gaslist_cache)
|
||||
SearchVar(hardcoded_gases)
|
||||
SearchVar(pipenetwarnings)
|
||||
SearchVar(the_gateway)
|
||||
SearchVar(potentialRandomZlevels)
|
||||
SearchVar(maploader)
|
||||
SearchVar(use_preloader)
|
||||
SearchVar(_preloader)
|
||||
SearchVar(swapmaps_iconcache)
|
||||
SearchVar(SWAPMAPS_SAV)
|
||||
SearchVar(SWAPMAPS_TEXT)
|
||||
SearchVar(swapmaps_mode)
|
||||
SearchVar(swapmaps_compiled_maxx)
|
||||
SearchVar(swapmaps_compiled_maxy)
|
||||
SearchVar(swapmaps_compiled_maxz)
|
||||
SearchVar(swapmaps_initialized)
|
||||
SearchVar(swapmaps_loaded)
|
||||
SearchVar(swapmaps_byname)
|
||||
SearchVar(sc_safecode1)
|
||||
SearchVar(sc_safecode2)
|
||||
SearchVar(sc_safecode3)
|
||||
SearchVar(sc_safecode4)
|
||||
SearchVar(sc_safecode5)
|
||||
SearchVar(exports_list)
|
||||
SearchVar(clientmessages)
|
||||
SearchVar(preferences_datums)
|
||||
SearchVar(ghost_forms)
|
||||
SearchVar(ghost_orbits)
|
||||
SearchVar(normal_ooc_colour)
|
||||
SearchVar(damaged_clothes_icons)
|
||||
SearchVar(emojis)
|
||||
SearchVar(non_fakeattack_weapons)
|
||||
SearchVar(cards_against_space)
|
||||
SearchVar(chem_t1_reagents)
|
||||
SearchVar(chem_t2_reagents)
|
||||
SearchVar(chem_t3_reagents)
|
||||
SearchVar(chem_t4_reagents)
|
||||
SearchVar(ENGSEC)
|
||||
SearchVar(CAPTAIN)
|
||||
SearchVar(HOS)
|
||||
SearchVar(WARDEN)
|
||||
SearchVar(DETECTIVE)
|
||||
SearchVar(OFFICER)
|
||||
SearchVar(CHIEF)
|
||||
SearchVar(ENGINEER)
|
||||
SearchVar(ATMOSTECH)
|
||||
SearchVar(ROBOTICIST)
|
||||
SearchVar(AI)
|
||||
SearchVar(CYBORG)
|
||||
SearchVar(MEDSCI)
|
||||
SearchVar(RD)
|
||||
SearchVar(SCIENTIST)
|
||||
SearchVar(CHEMIST)
|
||||
SearchVar(CMO)
|
||||
SearchVar(DOCTOR)
|
||||
SearchVar(GENETICIST)
|
||||
SearchVar(VIROLOGIST)
|
||||
SearchVar(CIVILIAN)
|
||||
SearchVar(HOP)
|
||||
SearchVar(BARTENDER)
|
||||
SearchVar(BOTANIST)
|
||||
SearchVar(COOK)
|
||||
SearchVar(JANITOR)
|
||||
SearchVar(LIBRARIAN)
|
||||
SearchVar(QUARTERMASTER)
|
||||
SearchVar(CARGOTECH)
|
||||
SearchVar(MINER)
|
||||
SearchVar(LAWYER)
|
||||
SearchVar(CHAPLAIN)
|
||||
SearchVar(CLOWN)
|
||||
SearchVar(MIME)
|
||||
SearchVar(ASSISTANT)
|
||||
SearchVar(assistant_occupations)
|
||||
SearchVar(command_positions)
|
||||
SearchVar(engineering_positions)
|
||||
SearchVar(medical_positions)
|
||||
SearchVar(science_positions)
|
||||
SearchVar(supply_positions)
|
||||
SearchVar(civilian_positions)
|
||||
SearchVar(security_positions)
|
||||
SearchVar(nonhuman_positions)
|
||||
SearchVar(cap_expand)
|
||||
SearchVar(cmo_expand)
|
||||
SearchVar(hos_expand)
|
||||
SearchVar(hop_expand)
|
||||
SearchVar(rd_expand)
|
||||
SearchVar(ce_expand)
|
||||
SearchVar(qm_expand)
|
||||
SearchVar(sec_expand)
|
||||
SearchVar(engi_expand)
|
||||
SearchVar(atmos_expand)
|
||||
SearchVar(doc_expand)
|
||||
SearchVar(mine_expand)
|
||||
SearchVar(chef_expand)
|
||||
SearchVar(borg_expand)
|
||||
SearchVar(available_depts)
|
||||
SearchVar(cachedbooks)
|
||||
SearchVar(total_extraction_beacons)
|
||||
SearchVar(next_mob_id)
|
||||
SearchVar(firstname)
|
||||
SearchVar(ghost_darkness_images)
|
||||
SearchVar(ghost_images_full)
|
||||
SearchVar(ghost_images_default)
|
||||
SearchVar(ghost_images_simple)
|
||||
SearchVar(department_radio_keys)
|
||||
SearchVar(crit_allowed_modes)
|
||||
SearchVar(ventcrawl_machinery)
|
||||
SearchVar(posibrain_notif_cooldown)
|
||||
SearchVar(NO_SLIP_WHEN_WALKING)
|
||||
SearchVar(SLIDE)
|
||||
SearchVar(GALOSHES_DONT_HELP)
|
||||
SearchVar(SLIDE_ICE)
|
||||
SearchVar(limb_icon_cache)
|
||||
SearchVar(ALIEN_AFK_BRACKET)
|
||||
SearchVar(MIN_IMPREGNATION_TIME)
|
||||
SearchVar(MAX_IMPREGNATION_TIME)
|
||||
SearchVar(MIN_ACTIVE_TIME)
|
||||
SearchVar(MAX_ACTIVE_TIME)
|
||||
SearchVar(default_martial_art)
|
||||
SearchVar(plasmaman_on_fire)
|
||||
SearchVar(ai_list)
|
||||
SearchVar(announcing_vox)
|
||||
SearchVar(VOX_CHANNEL)
|
||||
SearchVar(VOX_DELAY)
|
||||
SearchVar(vox_sounds)
|
||||
SearchVar(CHUNK_SIZE)
|
||||
SearchVar(cameranet)
|
||||
SearchVar(mulebot_count)
|
||||
SearchVar(MAX_CHICKENS)
|
||||
SearchVar(chicken_count)
|
||||
SearchVar(parasites)
|
||||
SearchVar(protected_objects)
|
||||
SearchVar(AISwarmers)
|
||||
SearchVar(AISwarmersByType)
|
||||
SearchVar(AISwarmerCapsByType)
|
||||
SearchVar(slime_colours)
|
||||
SearchVar(global_modular_computers)
|
||||
SearchVar(file_uid)
|
||||
SearchVar(nttransfer_uid)
|
||||
SearchVar(ntnet_card_uid)
|
||||
SearchVar(ntnet_global)
|
||||
SearchVar(ntnrc_uid)
|
||||
SearchVar(employmentCabinets)
|
||||
SearchVar(cable_coil_recipes)
|
||||
SearchVar(gravity_generators)
|
||||
SearchVar(POWER_IDLE)
|
||||
SearchVar(POWER_UP)
|
||||
SearchVar(POWER_DOWN)
|
||||
SearchVar(GRAV_NEEDS_SCREWDRIVER)
|
||||
SearchVar(GRAV_NEEDS_WELDING)
|
||||
SearchVar(GRAV_NEEDS_PLASTEEL)
|
||||
SearchVar(GRAV_NEEDS_WRENCH)
|
||||
SearchVar(rad_collectors)
|
||||
SearchVar(blacklisted_tesla_types)
|
||||
SearchVar(TOUCH)
|
||||
SearchVar(INGEST)
|
||||
SearchVar(VAPOR)
|
||||
SearchVar(PATCH)
|
||||
SearchVar(INJECT)
|
||||
SearchVar(chemical_mob_spawn_meancritters)
|
||||
SearchVar(chemical_mob_spawn_nicecritters)
|
||||
SearchVar(message_servers)
|
||||
SearchVar(blackbox)
|
||||
SearchVar(keycard_events)
|
||||
SearchVar(blacklisted_cargo_types)
|
||||
SearchVar(z_levels_list)
|
||||
SearchVar(spells)
|
||||
SearchVar(non_simple_animals)
|
||||
SearchVar(FrozenAccounts)
|
||||
SearchVar(stockExchange)
|
||||
SearchVar(stun_words)
|
||||
SearchVar(weaken_words)
|
||||
SearchVar(sleep_words)
|
||||
SearchVar(vomit_words)
|
||||
SearchVar(silence_words)
|
||||
SearchVar(hallucinate_words)
|
||||
SearchVar(wakeup_words)
|
||||
SearchVar(heal_words)
|
||||
SearchVar(hurt_words)
|
||||
SearchVar(bleed_words)
|
||||
SearchVar(burn_words)
|
||||
SearchVar(hot_words)
|
||||
SearchVar(cold_words)
|
||||
SearchVar(repulse_words)
|
||||
SearchVar(attract_words)
|
||||
SearchVar(whoareyou_words)
|
||||
SearchVar(saymyname_words)
|
||||
SearchVar(knockknock_words)
|
||||
SearchVar(statelaws_words)
|
||||
SearchVar(move_words)
|
||||
SearchVar(left_words)
|
||||
SearchVar(right_words)
|
||||
SearchVar(up_words)
|
||||
SearchVar(down_words)
|
||||
SearchVar(walk_words)
|
||||
SearchVar(run_words)
|
||||
SearchVar(helpintent_words)
|
||||
SearchVar(disarmintent_words)
|
||||
SearchVar(grabintent_words)
|
||||
SearchVar(harmintent_words)
|
||||
SearchVar(throwmode_words)
|
||||
SearchVar(flip_words)
|
||||
SearchVar(speak_words)
|
||||
SearchVar(rest_words)
|
||||
SearchVar(getup_words)
|
||||
SearchVar(sit_words)
|
||||
SearchVar(stand_words)
|
||||
SearchVar(dance_words)
|
||||
SearchVar(jump_words)
|
||||
SearchVar(salute_words)
|
||||
SearchVar(deathgasp_words)
|
||||
SearchVar(clap_words)
|
||||
SearchVar(honk_words)
|
||||
SearchVar(multispin_words)
|
||||
SearchVar(GPS_list)
|
||||
SearchVar(uplinks)
|
||||
SearchVar(uplink_items)
|
||||
#endif
|
||||
|
||||
@@ -57,7 +57,7 @@ var/datum/subsystem/mapping/SSmapping
|
||||
|
||||
/datum/subsystem/mapping/proc/check_nuke_threats()
|
||||
for(var/datum/d in nuke_threats)
|
||||
if(!istype(d) || qdeleted(d))
|
||||
if(!istype(d) || QDELETED(d))
|
||||
nuke_threats -= d
|
||||
|
||||
var/threats = nuke_threats.len
|
||||
|
||||
@@ -28,7 +28,6 @@ var/datum/subsystem/minimap/SSminimap
|
||||
world << "<span class='boldannounce'>Minimap generation disabled. Loading from cache...</span>"
|
||||
var/fileloc = 0
|
||||
if(check_files(0)) //Let's first check if we have maps cached in the data folder. NOTE: This will override the backup files even if this map is older.
|
||||
world.log << "cache"
|
||||
if(hash != trim(file2text(hash_path())))
|
||||
world << "<span class='boldannounce'>Loaded cached minimap is outdated. There may be minor discrepancies in layout.</span>" //Disclaimer against players saying map is wrong.
|
||||
fileloc = 0
|
||||
|
||||
@@ -105,7 +105,7 @@ var/datum/subsystem/persistence/SSpersistence
|
||||
/datum/subsystem/persistence/proc/CollectSecretSatchels()
|
||||
for(var/A in new_secret_satchels)
|
||||
var/obj/item/weapon/storage/backpack/satchel/flat/F = A
|
||||
if(qdeleted(F) || F.z != ZLEVEL_STATION || F.invisibility != INVISIBILITY_MAXIMUM)
|
||||
if(QDELETED(F) || F.z != ZLEVEL_STATION || F.invisibility != INVISIBILITY_MAXIMUM)
|
||||
continue
|
||||
var/list/savable_obj = list()
|
||||
for(var/obj/O in F)
|
||||
|
||||
@@ -4,12 +4,6 @@ var/datum/subsystem/objects/SSobj
|
||||
#define INITIALIZATION_INNEW_MAPLOAD 1 //New should call Initialize(TRUE)
|
||||
#define INITIALIZATION_INNEW_REGULAR 2 //New should call Initialize(FALSE)
|
||||
|
||||
/datum/var/isprocessing = 0
|
||||
/datum/proc/process()
|
||||
set waitfor = 0
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return 0
|
||||
|
||||
/datum/subsystem/objects
|
||||
name = "Objects"
|
||||
init_order = 12
|
||||
|
||||
@@ -32,3 +32,9 @@ var/datum/subsystem/processing/SSprocessing
|
||||
processing -= thing
|
||||
if (MC_TICK_CHECK)
|
||||
return
|
||||
|
||||
/datum/var/isprocessing = 0
|
||||
/datum/proc/process()
|
||||
set waitfor = 0
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return 0
|
||||
@@ -284,7 +284,7 @@ var/datum/subsystem/shuttle/SSshuttle
|
||||
|
||||
/datum/subsystem/shuttle/proc/checkHostileEnvironment()
|
||||
for(var/datum/d in hostileEnvironments)
|
||||
if(!istype(d) || qdeleted(d))
|
||||
if(!istype(d) || QDELETED(d))
|
||||
hostileEnvironments -= d
|
||||
emergencyNoEscape = hostileEnvironments.len
|
||||
|
||||
|
||||
@@ -51,10 +51,10 @@ var/datum/subsystem/ticker/ticker
|
||||
|
||||
var/maprotatechecked = 0
|
||||
|
||||
var/modevoted = 0 //Have we sent a vote for the gamemode?
|
||||
|
||||
var/news_report
|
||||
|
||||
var/modevoted = 0 //Have we sent a vote for the gamemode?
|
||||
|
||||
/datum/subsystem/ticker/New()
|
||||
NEW_SS_GLOBAL(ticker)
|
||||
|
||||
@@ -122,13 +122,6 @@ var/datum/subsystem/ticker/ticker
|
||||
current_state = GAME_STATE_FINISHED
|
||||
toggle_ooc(1) // Turn it on
|
||||
declare_completion(force_ending)
|
||||
addtimer(CALLBACK(src, .proc/NukeCleanup), 50)
|
||||
|
||||
/datum/subsystem/ticker/proc/NukeCleanup()
|
||||
if(mode.station_was_nuked)
|
||||
world.Reboot("Station destroyed by Nuclear Device.", "end_proper", "nuke")
|
||||
else
|
||||
world.Reboot("Round ended.", "end_proper", "proper completion")
|
||||
|
||||
/datum/subsystem/ticker/proc/setup()
|
||||
//Create and announce mode
|
||||
@@ -391,6 +384,7 @@ var/datum/subsystem/ticker/ticker
|
||||
|
||||
|
||||
/datum/subsystem/ticker/proc/declare_completion()
|
||||
set waitfor = FALSE
|
||||
var/station_evacuated = EMERGENCY_ESCAPED_OR_ENDGAMED
|
||||
var/num_survivors = 0
|
||||
var/num_escapees = 0
|
||||
@@ -419,6 +413,8 @@ var/datum/subsystem/ticker/ticker
|
||||
else
|
||||
Player << "<font color='red'><b>You did not survive the events on [station_name()]...</b></FONT>"
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
//Round statistics report
|
||||
var/datum/station_state/end_state = new /datum/station_state()
|
||||
end_state.count()
|
||||
@@ -440,6 +436,8 @@ var/datum/subsystem/ticker/ticker
|
||||
world << "<BR>[TAB]Survival Rate: <B>[num_survivors] ([PERCENT(num_survivors/total_players)]%)</B>"
|
||||
world << "<BR>"
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
//Silicon laws report
|
||||
for (var/mob/living/silicon/ai/aiPlayer in mob_list)
|
||||
if (aiPlayer.stat != 2 && aiPlayer.mind)
|
||||
@@ -457,6 +455,9 @@ var/datum/subsystem/ticker/ticker
|
||||
if(robo.mind)
|
||||
robolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.mind.key]), ":" (Played by: [robo.mind.key]), "]"
|
||||
world << "[robolist]"
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
for (var/mob/living/silicon/robot/robo in mob_list)
|
||||
if (!robo.connected_ai && robo.mind)
|
||||
if (robo.stat != 2)
|
||||
@@ -467,16 +468,24 @@ var/datum/subsystem/ticker/ticker
|
||||
if(robo) //How the hell do we lose robo between here and the world messages directly above this?
|
||||
robo.laws.show_laws(world)
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
mode.declare_completion()//To declare normal completion.
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
//calls auto_declare_completion_* for all modes
|
||||
for(var/handler in typesof(/datum/game_mode/proc))
|
||||
if (findtext("[handler]","auto_declare_completion_"))
|
||||
call(mode, handler)(force_ending)
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
if(cross_allowed)
|
||||
send_news_report()
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
//Print a list of antagonists to the server log
|
||||
var/list/total_antagonists = list()
|
||||
//Look into all mobs in world, dead or alive
|
||||
@@ -489,11 +498,15 @@ var/datum/subsystem/ticker/ticker
|
||||
total_antagonists.Add(temprole) //If the role doesnt exist in the list, create it and add the mob
|
||||
total_antagonists[temprole] += ": [Mind.name]([Mind.key])"
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
//Now print them all into the log!
|
||||
log_game("Antagonists at round end were...")
|
||||
for(var/i in total_antagonists)
|
||||
log_game("[i]s[total_antagonists[i]].")
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
//Borers
|
||||
var/borerwin = FALSE
|
||||
if(borers.len)
|
||||
@@ -529,8 +542,12 @@ var/datum/subsystem/ticker/ticker
|
||||
else
|
||||
world << "<b><font color='red'>The borers have failed!</font></b>"
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
mode.declare_station_goal_completion()
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
//Adds the del() log to world.log in a format condensable by the runtime condenser found in tools
|
||||
if(SSgarbage.didntgc.len)
|
||||
var/dellog = ""
|
||||
@@ -539,9 +556,16 @@ var/datum/subsystem/ticker/ticker
|
||||
dellog += "Failures : [SSgarbage.didntgc[path]] \n"
|
||||
world.log << dellog
|
||||
|
||||
CHECK_TICK
|
||||
|
||||
//Collects persistence features
|
||||
SSpersistence.CollectData()
|
||||
return 1
|
||||
|
||||
sleep(50)
|
||||
if(mode.station_was_nuked)
|
||||
world.Reboot("Station destroyed by Nuclear Device.", "end_proper", "nuke")
|
||||
else
|
||||
world.Reboot("Round ended.", "end_proper", "proper completion")
|
||||
|
||||
/datum/subsystem/ticker/proc/send_tip_of_the_round()
|
||||
var/m
|
||||
@@ -639,6 +663,7 @@ var/datum/subsystem/ticker/ticker
|
||||
|
||||
modevoted = ticker.modevoted
|
||||
|
||||
|
||||
/datum/subsystem/ticker/proc/send_news_report()
|
||||
var/news_message
|
||||
var/news_source = "Nanotrasen News Network"
|
||||
|
||||
@@ -84,7 +84,7 @@ var/datum/subsystem/timer/SStimer
|
||||
if (!callBack)
|
||||
qdel(timer)
|
||||
bucket_resolution = null //force bucket recreation
|
||||
CRASH("Invalid timer: timer.timeToRun=[timer.timeToRun]||qdeleted(timer)=[qdeleted(timer)]||world.time=[world.time]||head_offset=[head_offset]||practical_offset=[practical_offset]||timer.spent=[timer.spent]")
|
||||
CRASH("Invalid timer: timer.timeToRun=[timer.timeToRun]||QDELETED(timer)=[QDELETED(timer)]||world.time=[world.time]||head_offset=[head_offset]||practical_offset=[practical_offset]||timer.spent=[timer.spent]")
|
||||
|
||||
if (!timer.spent)
|
||||
spent += timer
|
||||
@@ -294,9 +294,7 @@ proc/addtimer(datum/callback/callback, wait, flags)
|
||||
if (!callback)
|
||||
return
|
||||
|
||||
if (wait <= 0)
|
||||
callback.InvokeAsync()
|
||||
return
|
||||
wait = max(wait, 0)
|
||||
|
||||
var/hash
|
||||
|
||||
@@ -307,12 +305,17 @@ proc/addtimer(datum/callback/callback, wait, flags)
|
||||
|
||||
var/datum/timedevent/hash_timer = SStimer.hashes[hash]
|
||||
if(hash_timer)
|
||||
if (flags & TIMER_OVERRIDE)
|
||||
qdel(hash_timer)
|
||||
if (hash_timer.spent) //it's pending deletion, pretend it doesn't exist.
|
||||
hash_timer.hash = null
|
||||
SStimer.hashes -= hash
|
||||
else
|
||||
if (hash_timer.flags & TIMER_STOPPABLE)
|
||||
. = hash_timer.id
|
||||
return
|
||||
|
||||
if (flags & TIMER_OVERRIDE)
|
||||
qdel(hash_timer)
|
||||
else
|
||||
if (hash_timer.flags & TIMER_STOPPABLE)
|
||||
. = hash_timer.id
|
||||
return
|
||||
|
||||
|
||||
var/timeToRun = world.time + wait
|
||||
|
||||
@@ -301,7 +301,7 @@ var/datum/subsystem/vote/SSvote
|
||||
/datum/subsystem/vote/proc/remove_action_buttons()
|
||||
for(var/v in generated_actions)
|
||||
var/datum/action/vote/V = v
|
||||
if(!qdeleted(V))
|
||||
if(!QDELETED(V))
|
||||
V.Remove(V.owner)
|
||||
generated_actions = list()
|
||||
|
||||
|
||||
@@ -49,8 +49,6 @@
|
||||
Remove(owner)
|
||||
|
||||
/datum/action/proc/Remove(mob/M)
|
||||
if(!M)
|
||||
return
|
||||
if(M)
|
||||
if(M.client)
|
||||
M.client.screen -= button
|
||||
|
||||
@@ -73,7 +73,10 @@
|
||||
R.module.rebuild_modules()
|
||||
else if(isAI(S))
|
||||
var/mob/living/silicon/ai/A = S
|
||||
A.can_be_carded = FALSE
|
||||
A.requires_power = POWER_REQ_CLOCKCULT
|
||||
A.languages_spoken &= ~HUMAN
|
||||
A.add_atom_colour(list("#B18B25", "#92661A", "#6D370F", rgb(0,0,0)), ADMIN_COLOUR_PRIORITY)
|
||||
if(!A.lacks_power())
|
||||
A.ai_restore_power()
|
||||
if(A.eyeobj)
|
||||
@@ -122,7 +125,10 @@
|
||||
var/mob/living/silicon/S = owner
|
||||
if(isAI(S))
|
||||
var/mob/living/silicon/ai/A = S
|
||||
A.can_be_carded = initial(A.can_be_carded)
|
||||
A.requires_power = initial(A.requires_power)
|
||||
A.languages_spoken |= HUMAN
|
||||
A.remove_atom_colour(ADMIN_COLOUR_PRIORITY, list("#B18B25", "#92661A", "#6D370F", rgb(0,0,0)))
|
||||
S.make_laws()
|
||||
S.update_icons()
|
||||
S.show_laws()
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
Reset()
|
||||
Draw()
|
||||
sleep(sleep_time)
|
||||
if(!qdeleted(src))
|
||||
if(!QDELETED(src))
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
return ..()
|
||||
|
||||
/datum/forced_movement/process()
|
||||
if(qdeleted(victim) || !victim.loc || qdeleted(target) || !target.loc)
|
||||
if(QDELETED(victim) || !victim.loc || QDELETED(target) || !target.loc)
|
||||
qdel(src)
|
||||
return
|
||||
var/steps_to_take = round(steps_per_tick * (world.time - last_processed))
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
buckled_mob.pixel_x = 0
|
||||
buckled_mob.pixel_y = 0
|
||||
if(buckled_mob.client)
|
||||
buckled_mob.client.view = world.view
|
||||
buckled_mob.client.change_view(world.view)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
/datum/status_effect/shadow_mend
|
||||
id = "shadow_mend"
|
||||
duration = 3
|
||||
duration = 30
|
||||
alert_type = /obj/screen/alert/status_effect/shadow_mend
|
||||
|
||||
/obj/screen/alert/status_effect/shadow_mend
|
||||
@@ -26,8 +26,8 @@
|
||||
|
||||
/datum/status_effect/void_price
|
||||
id = "void_price"
|
||||
duration = 30
|
||||
tick_interval = 3
|
||||
duration = 300
|
||||
tick_interval = 30
|
||||
alert_type = /obj/screen/alert/status_effect/void_price
|
||||
|
||||
/obj/screen/alert/status_effect/void_price
|
||||
@@ -40,11 +40,12 @@
|
||||
owner.adjustBruteLoss(3)
|
||||
|
||||
|
||||
|
||||
/datum/status_effect/vanguard_shield
|
||||
id = "vanguard"
|
||||
duration = 20
|
||||
duration = 200
|
||||
tick_interval = 0 //tick as fast as possible
|
||||
alert_type = /obj/screen/alert/status_effect/vanguard
|
||||
var/datum/progressbar/progbar
|
||||
|
||||
/obj/screen/alert/status_effect/vanguard
|
||||
name = "Vanguard"
|
||||
@@ -60,10 +61,21 @@
|
||||
desc += "<br><b>[vanguard["stuns_absorbed"] * 2]</b> seconds of stuns held back.<br><b>[round(min(vanguard["stuns_absorbed"] * 0.25, 20)) * 2]</b> seconds of stun will affect you."
|
||||
..()
|
||||
|
||||
/datum/status_effect/vanguard_shield/Destroy()
|
||||
qdel(progbar)
|
||||
progbar = null
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/vanguard_shield/on_apply()
|
||||
add_logs(owner, null, "gained Vanguard stun immunity")
|
||||
owner.add_stun_absorption("vanguard", 200, 1, "'s yellow aura momentarily intensifies!", "Your ward absorbs the stun!", " radiating with a soft yellow light!")
|
||||
owner.visible_message("<span class='warning'>[owner] begins to faintly glow!</span>", "<span class='brass'>You will absorb all stuns for the next twenty seconds.</span>")
|
||||
progbar = new(owner, duration, owner)
|
||||
progbar.bar.color = list("#FAE48C", "#FAE48C", "#FAE48C", rgb(0,0,0))
|
||||
progbar.update(duration - world.time)
|
||||
|
||||
/datum/status_effect/vanguard_shield/tick()
|
||||
progbar.update(duration - world.time)
|
||||
|
||||
/datum/status_effect/vanguard_shield/on_remove()
|
||||
var/vanguard = owner.stun_absorption["vanguard"]
|
||||
@@ -85,14 +97,15 @@
|
||||
message_to_owner += "\n<span class='userdanger'>You faint from the exertion!</span>"
|
||||
stuns_blocked *= 2
|
||||
owner.Paralyse(stuns_blocked)
|
||||
else
|
||||
stuns_blocked = 0 //so logging is correct in cases where there were stuns blocked but we didn't stun for other reasons
|
||||
owner.visible_message("<span class='warning'>[owner]'s glowing aura fades!</span>", message_to_owner)
|
||||
add_logs(owner, null, "lost Vanguard stun immunity[stuns_blocked ? "and been stunned for [stuns_blocked]":""]")
|
||||
|
||||
add_logs(owner, null, "lost Vanguard stun immunity[stuns_blocked ? "and was stunned for [stuns_blocked]":""]")
|
||||
|
||||
|
||||
/datum/status_effect/inathneqs_endowment
|
||||
id = "inathneqs_endowment"
|
||||
duration = 15
|
||||
duration = 150
|
||||
alert_type = /obj/screen/alert/status_effect/inathneqs_endowment
|
||||
|
||||
/obj/screen/alert/status_effect/inathneqs_endowment
|
||||
@@ -119,9 +132,10 @@
|
||||
owner.status_flags &= ~GODMODE
|
||||
playsound(owner, 'sound/magic/Ethereal_Exit.ogg', 50, 1)
|
||||
|
||||
|
||||
/datum/status_effect/cyborg_power_regen
|
||||
id = "power_regen"
|
||||
duration = 10
|
||||
duration = 100
|
||||
alert_type = /obj/screen/alert/status_effect/power_regen
|
||||
var/power_to_give = 0 //how much power is gained each tick
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/status_effect/freon
|
||||
id = "frozen"
|
||||
duration = 10
|
||||
duration = 100
|
||||
unique = TRUE
|
||||
alert_type = /obj/screen/alert/status_effect/freon
|
||||
var/icon/cube
|
||||
|
||||
@@ -6,10 +6,9 @@ var/global/list/all_status_effects = list() //a list of all status effects, if f
|
||||
|
||||
/datum/status_effect
|
||||
var/id = "effect" //Used for screen alerts.
|
||||
var/duration = -1 //How long the status effect lasts in SECONDS. Enter -1 for an effect that never ends unless removed through some means.
|
||||
var/tick_interval = 1 //How many seconds between ticks. Leave at 1 for every second.
|
||||
var/duration = -1 //How long the status effect lasts in DECISECONDS. Enter -1 for an effect that never ends unless removed through some means.
|
||||
var/tick_interval = 10 //How many deciseconds between ticks, approximately. Leave at 10 for every second.
|
||||
var/mob/living/owner //The mob affected by the status effect.
|
||||
var/cosmetic = FALSE //If the status effect only exists for flavor.
|
||||
var/unique = TRUE //If there can be multiple status effects of this type on one mob.
|
||||
var/alert_type = /obj/screen/alert/status_effect //the alert thrown by the status effect, contains name and description
|
||||
|
||||
@@ -22,7 +21,7 @@ var/global/list/all_status_effects = list() //a list of all status effects, if f
|
||||
addtimer(CALLBACK(src, .proc/start_ticking), 1) //Give us time to set any variables
|
||||
|
||||
/datum/status_effect/Destroy()
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
if(owner)
|
||||
owner.clear_alert(id)
|
||||
on_remove()
|
||||
@@ -37,22 +36,22 @@ var/global/list/all_status_effects = list() //a list of all status effects, if f
|
||||
qdel(src)
|
||||
return
|
||||
on_apply()
|
||||
if(duration != -1)
|
||||
duration = world.time + initial(duration)
|
||||
tick_interval = world.time + initial(tick_interval)
|
||||
if(alert_type)
|
||||
var/obj/screen/alert/status_effect/A = owner.throw_alert(id, alert_type)
|
||||
A.attached_effect = src //so the alert can reference us, if it needs to
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
START_PROCESSING(SSfastprocess, src)
|
||||
|
||||
/datum/status_effect/process()
|
||||
if(!owner)
|
||||
qdel(src)
|
||||
return
|
||||
if(duration != -1)
|
||||
duration--
|
||||
tick_interval--
|
||||
if(!tick_interval)
|
||||
if(tick_interval < world.time)
|
||||
tick()
|
||||
tick_interval = initial(tick_interval)
|
||||
if(!duration)
|
||||
tick_interval = world.time + initial(tick_interval)
|
||||
if(duration != -1 && duration < world.time)
|
||||
qdel(src)
|
||||
|
||||
/datum/status_effect/proc/on_apply() //Called whenever the buff is applied.
|
||||
|
||||
@@ -440,8 +440,10 @@ var/list/blood_splatter_icons = list()
|
||||
//This base must be called or derivatives must set initialized to TRUE to prevent repeat calls
|
||||
//Derivatives must not sleep
|
||||
/atom/proc/Initialize(mapload)
|
||||
#ifdef TESTING
|
||||
if(initialized)
|
||||
stack_trace("Warning: [src]([type]) initialized multiple times!")
|
||||
#endif
|
||||
initialized = TRUE
|
||||
|
||||
//the vision impairment to give to the mob whose perspective is set to that atom (e.g. an unfocused camera giving you an impaired vision when looking through it)
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
throwing = 0
|
||||
throw_impact(A)
|
||||
. = 1
|
||||
if(!A || qdeleted(A))
|
||||
if(!A || QDELETED(A))
|
||||
return
|
||||
A.Bumped(src)
|
||||
|
||||
@@ -139,21 +139,29 @@
|
||||
if(destination)
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
|
||||
var/atom/oldloc = loc
|
||||
var/same_loc = oldloc == destination.loc
|
||||
if(oldloc && !same_loc)
|
||||
oldloc.Exited(src, destination)
|
||||
loc = destination
|
||||
if(!same_loc)
|
||||
destination.Entered(src, oldloc)
|
||||
var/same_loc = oldloc == destination
|
||||
var/area/old_area = get_area(oldloc)
|
||||
var/area/destarea = get_area(destination)
|
||||
if(old_area != destarea)
|
||||
destarea.Entered(src)
|
||||
|
||||
if(oldloc && !same_loc)
|
||||
oldloc.Exited(src, destination)
|
||||
if(old_area)
|
||||
old_area.Exited(src, destination)
|
||||
|
||||
loc = destination
|
||||
|
||||
if(!same_loc)
|
||||
destination.Entered(src, oldloc)
|
||||
if(destarea && old_area != destarea)
|
||||
destarea.Entered(src, oldloc)
|
||||
|
||||
for(var/atom/movable/AM in destination)
|
||||
if(AM == src)
|
||||
continue
|
||||
AM.Crossed(src)
|
||||
|
||||
Moved(oldloc, 0)
|
||||
return 1
|
||||
return 0
|
||||
@@ -408,4 +416,4 @@
|
||||
if(ex_id in acted_explosions)
|
||||
return FALSE
|
||||
acted_explosions += ex_id
|
||||
return TRUE
|
||||
return TRUE
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
overmind.update_health_hud()
|
||||
|
||||
/obj/structure/blob/core/Life()
|
||||
if(qdeleted(src))
|
||||
if(QDELETED(src))
|
||||
return
|
||||
if(!overmind)
|
||||
create_overmind()
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
//used in /mob/Stat()
|
||||
/obj/effect/proc_holder/changeling/proc/can_be_used_by(mob/user)
|
||||
if(!user || qdeleted(user))
|
||||
if(!user || QDELETED(user))
|
||||
return 0
|
||||
if(!ishuman(user) && !ismonkey(user))
|
||||
return 0
|
||||
|
||||
@@ -12,54 +12,25 @@
|
||||
/obj/effect/proc_holder/changeling/augmented_eyesight/sting_action(mob/living/carbon/human/user)
|
||||
if(!istype(user))
|
||||
return
|
||||
if(user.getorgan(/obj/item/organ/cyberimp/eyes/thermals/ling))
|
||||
user << "<span class='notice'>Our eyes are protected from flashes.</span>"
|
||||
var/obj/item/organ/cyberimp/eyes/O = new /obj/item/organ/cyberimp/eyes/shield/ling()
|
||||
O.Insert(user)
|
||||
|
||||
var/obj/item/organ/eyes/E = user.getorganslot("eye_sight")
|
||||
if(E)
|
||||
if(E.flash_protect)
|
||||
E.sight_flags |= SEE_MOBS
|
||||
E.flash_protect = -1
|
||||
user << "We adjust our eyes to sense prey through walls."
|
||||
else
|
||||
E.sight_flags -= SEE_MOBS
|
||||
E.flash_protect = 2
|
||||
user << "We adjust our eyes to protect them from bright lights."
|
||||
else
|
||||
var/obj/item/organ/cyberimp/eyes/O = new /obj/item/organ/cyberimp/eyes/thermals/ling()
|
||||
O.Insert(user)
|
||||
user << "We can't adjust our eyes if we don't have any!"
|
||||
|
||||
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
/obj/effect/proc_holder/changeling/augmented_eyesight/on_refund(mob/user)
|
||||
var/obj/item/organ/cyberimp/eyes/O = user.getorganslot("eye_ling")
|
||||
if(O)
|
||||
O.Remove(user)
|
||||
qdel(O)
|
||||
|
||||
|
||||
/obj/item/organ/cyberimp/eyes/shield/ling
|
||||
name = "protective membranes"
|
||||
desc = "These variable transparency organic membranes will protect you from welders and flashes and heal your eye damage."
|
||||
icon_state = "ling_eyeshield"
|
||||
eye_color = null
|
||||
implant_overlay = null
|
||||
slot = "eye_ling"
|
||||
status = ORGAN_ORGANIC
|
||||
|
||||
/obj/item/organ/cyberimp/eyes/shield/ling/on_life()
|
||||
..()
|
||||
if(owner.eye_blind>1 || (owner.eye_blind && owner.stat !=UNCONSCIOUS) || owner.eye_damage || owner.eye_blurry || (owner.disabilities & NEARSIGHT))
|
||||
owner.reagents.add_reagent("oculine", 1)
|
||||
|
||||
/obj/item/organ/cyberimp/eyes/shield/ling/prepare_eat()
|
||||
var/obj/S = ..()
|
||||
S.reagents.add_reagent("oculine", 15)
|
||||
return S
|
||||
|
||||
|
||||
/obj/item/organ/cyberimp/eyes/thermals/ling
|
||||
name = "heat receptors"
|
||||
desc = "These heat receptors dramatically increases eyes light sensing ability."
|
||||
icon_state = "ling_thermal"
|
||||
eye_color = null
|
||||
implant_overlay = null
|
||||
slot = "eye_ling"
|
||||
status = ORGAN_ORGANIC
|
||||
aug_message = "You feel a minute twitch in our eyes, and darkness creeps away."
|
||||
|
||||
/obj/item/organ/cyberimp/eyes/thermals/ling/emp_act(severity)
|
||||
return
|
||||
var/obj/item/organ/eyes/E = user.getorganslot("eye_sight")
|
||||
if(E)
|
||||
E.sight_flags -= SEE_MOBS
|
||||
@@ -180,7 +180,7 @@ Credit where due:
|
||||
if(slot == "At your feet")
|
||||
if(!S.forceMove(get_turf(L)))
|
||||
qdel(S)
|
||||
if(S && !qdeleted(S))
|
||||
if(S && !QDELETED(S))
|
||||
L << "<b>[slot] is a link to the halls of Reebe and your master. You may use it to perform many tasks, but also become oriented with the workings of Ratvar and how to best complete your \
|
||||
tasks. This clockwork slab will be instrumental in your triumph. Remember: you can speak discreetly with your fellow servants by using the <span class='brass'>Hierophant Network</span> action button, \
|
||||
and you can find a concise tutorial by using the slab in-hand and selecting Recollection.</b>"
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
return FALSE
|
||||
|
||||
/turf/open/floor/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer)
|
||||
if(locate(/obj/structure/table) in loc)
|
||||
if(locate(/obj/structure/table) in src)
|
||||
return FALSE
|
||||
if(is_blocked_turf(src, TRUE))
|
||||
user << "<span class='warning'>Something is in the way, preventing you from proselytizing [src] into a clockwork wall.</span>"
|
||||
|
||||
@@ -66,7 +66,12 @@ List of nuances:
|
||||
#define REVERSE_RATVAR_HYPHEN_OF_REPLACEMENT " $1"
|
||||
|
||||
|
||||
/proc/text2ratvar(text) //Takes english and applies ratvarian styling rules (and rot13) to it
|
||||
/proc/text2ratvar(text) //Takes english and applies ratvarian styling rules (and rot13) to it.
|
||||
var/ratvarian = add_ratvarian_regex(text) //run the regexes twice, so that you catch people translating it beforehand
|
||||
ratvarian = rot13(ratvarian)
|
||||
return add_ratvarian_regex(ratvarian)
|
||||
|
||||
/proc/add_ratvarian_regex(text)
|
||||
var/ratvarian = replacetext(text, RATVAR_OF_MATCH, RATVAR_OF_REPLACEMENT)
|
||||
ratvarian = replacetext(ratvarian, RATVAR_GUA_MATCH, RATVAR_GUA_REPLACEMENT)
|
||||
ratvarian = replacetext(ratvarian, RATVAR_TH_MATCH, RATVAR_TH_REPLACEMENT)
|
||||
@@ -76,19 +81,21 @@ List of nuances:
|
||||
ratvarian = replacetext(ratvarian, RATVAR_PRE_AND_MATCH, RATVAR_PRE_AND_REPLACEMENT)
|
||||
ratvarian = replacetext(ratvarian, RATVAR_POST_AND_MATCH, RATVAR_POST_AND_REPLACEMENT)
|
||||
ratvarian = replacetext(ratvarian, RATVAR_TO_MATCH, RATVAR_TO_REPLACEMENT)
|
||||
ratvarian = replacetext(ratvarian, RATVAR_MY_MATCH, RATVAR_MY_REPLACEMENT)
|
||||
return rot13(ratvarian)
|
||||
return replacetext(ratvarian, RATVAR_MY_MATCH, RATVAR_MY_REPLACEMENT)
|
||||
|
||||
/proc/ratvar2text(ratvarian) //Reverts ravarian styling and rot13 in text.
|
||||
var/text = replacetext(rot13(ratvarian), "`", "")
|
||||
text = replacetext(text, REVERSE_RATVAR_HYPHEN_GUA_MATCH, REVERSE_RATVAR_HYPHEN_GUA_REPLACEMENT)
|
||||
var/text = remove_ratvarian_regex(ratvarian) //run the regexes twice, so that you catch people translating it beforehand
|
||||
text = replacetext(rot13(text), "`", "")
|
||||
return remove_ratvarian_regex(text)
|
||||
|
||||
/proc/remove_ratvarian_regex(ratvarian)
|
||||
var/text = replacetext(ratvarian, REVERSE_RATVAR_HYPHEN_GUA_MATCH, REVERSE_RATVAR_HYPHEN_GUA_REPLACEMENT)
|
||||
text = replacetext(text, REVERSE_RATVAR_HYPHEN_PRE_AND_MATCH, REVERSE_RATVAR_HYPHEN_PRE_AND_REPLACEMENT)
|
||||
text = replacetext(text, REVERSE_RATVAR_HYPHEN_POST_AND_MATCH, REVERSE_RATVAR_HYPHEN_POST_AND_REPLACEMENT)
|
||||
text = replacetext(text, REVERSE_RATVAR_HYPHEN_TO_MY_MATCH, REVERSE_RATVAR_HYPHEN_TO_MY_REPLACEMENT)
|
||||
text = replacetext(text, REVERSE_RATVAR_HYPHEN_TE_MATCH, REVERSE_RATVAR_HYPHEN_TE_REPLACEMENT)
|
||||
text = replacetext(text, REVERSE_RATVAR_HYPHEN_ET_MATCH, REVERSE_RATVAR_HYPHEN_ET_REPLACEMENT)
|
||||
text = replacetext(text, REVERSE_RATVAR_HYPHEN_OF_MATCH, REVERSE_RATVAR_HYPHEN_OF_REPLACEMENT)
|
||||
return text
|
||||
return replacetext(text, REVERSE_RATVAR_HYPHEN_OF_MATCH, REVERSE_RATVAR_HYPHEN_OF_REPLACEMENT)
|
||||
|
||||
//Causes the mob or AM in question to speak a message; it assumes that the message is already translated to ratvar speech using text2ratvar()
|
||||
/proc/clockwork_say(atom/movable/AM, message, whisper=FALSE)
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
var/obj/structure/destructible/clockwork/geis_binding/binding
|
||||
|
||||
/datum/clockwork_scripture/geis/Destroy()
|
||||
if(binding && !qdeleted(binding))
|
||||
if(binding && !QDELETED(binding))
|
||||
qdel(binding)
|
||||
return ..()
|
||||
|
||||
@@ -213,13 +213,12 @@
|
||||
addtimer(CALLBACK(invoker, /atom/proc/update_atom_colour), flee_time+grace_period)
|
||||
if(chant_number != chant_amount) //if this is the last chant, we don't have a movement period because the chant is over
|
||||
var/endtime = world.time + flee_time
|
||||
var/starttime = world.time
|
||||
progbar = new(invoker, flee_time, invoker)
|
||||
progbar.bar.color = list("#AF0AAF", "#AF0AAF", "#AF0AAF", rgb(0,0,0))
|
||||
animate(progbar.bar, color = initial(progbar.bar.color), time = flee_time+grace_period)
|
||||
while(world.time < endtime && can_recite())
|
||||
sleep(1)
|
||||
progbar.update(world.time - starttime)
|
||||
progbar.update(endtime - world.time)
|
||||
qdel(progbar)
|
||||
if(can_recite())
|
||||
sleep(grace_period)
|
||||
|
||||
@@ -29,7 +29,8 @@
|
||||
return ..()
|
||||
|
||||
/obj/structure/destructible/clockwork/ratvar_act()
|
||||
obj_integrity = max_integrity
|
||||
if(ratvar_awakens || clockwork_gateway_activated)
|
||||
obj_integrity = max_integrity
|
||||
|
||||
/obj/structure/destructible/clockwork/narsie_act()
|
||||
if(take_damage(rand(25, 50), BRUTE) && src) //if we still exist
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
for(var/M in atoms_to_test)
|
||||
var/atom/movable/A = M
|
||||
if(!A || qdeleted(A) || A == target_apc)
|
||||
if(!A || QDELETED(A) || A == target_apc)
|
||||
continue
|
||||
power_drained += Floor(A.power_drain(TRUE) * efficiency, MIN_CLOCKCULT_POWER)
|
||||
|
||||
|
||||
@@ -14,9 +14,8 @@
|
||||
debris = list(/obj/item/clockwork/alloy_shards/large = 1, \
|
||||
/obj/item/clockwork/alloy_shards/small = 3, \
|
||||
/obj/item/clockwork/component/geis_capacitor/antennae = 1)
|
||||
var/mania_cost = 200
|
||||
var/convert_attempt_cost = 500
|
||||
var/convert_cost = 500
|
||||
var/mania_cost = 150
|
||||
var/convert_cost = 150
|
||||
var/static/list/mania_messages = list("Go nuts.", "Take a crack at crazy.", "Make a bid for insanity.", "Get kooky.", "Move towards mania.", "Become bewildered.", "Wax wild.", \
|
||||
"Go round the bend.", "Land in lunacy.", "Try dementia.", "Strive to get a screw loose.")
|
||||
var/static/list/compel_messages = list("Come closer.", "Approach the transmitter.", "Touch the antennae.", "I always have to deal with idiots. Move towards the mania motor.", \
|
||||
@@ -28,11 +27,10 @@
|
||||
"Amazing. You somehow managed to wedge yourself somewhere you can't actually reach the motor from.", "Such a show of idiocy is unparalleled. Perhaps I should put you on display?", \
|
||||
"Did you do this on purpose? I can't imagine you doing so accidentally. Oh, wait, I can.", "How is it that such smart creatures can still do something AS STUPID AS THIS!")
|
||||
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/mania_motor/examine(mob/user)
|
||||
..()
|
||||
if(is_servant_of_ratvar(user) || isobserver(user))
|
||||
user << "<span class='sevtug_small'>It requires <b>[mania_cost]W</b> to run, and <b>[convert_attempt_cost + convert_cost]W</b> to convert humans adjecent to it.</span>"
|
||||
user << "<span class='sevtug_small'>It requires <b>[mania_cost]W</b> to run, and at least <b>[convert_cost]W</b> to attempt to convert humans adjacent to it.</span>"
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/mania_motor/forced_disable(bad_effects)
|
||||
if(active)
|
||||
@@ -58,94 +56,88 @@
|
||||
SetLuminosity(0)
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/mania_motor/process()
|
||||
if(try_use_power(mania_cost))
|
||||
var/turf/T = get_turf(src)
|
||||
var/hum = get_sfx('sound/effects/screech.ogg') //like playsound, same sound for everyone affected
|
||||
var/efficiency = get_efficiency_mod()
|
||||
for(var/mob/living/carbon/human/H in view(1, src))
|
||||
if(is_servant_of_ratvar(H) || H.null_rod_check())
|
||||
continue
|
||||
if(H.Adjacent(src) && try_use_power(convert_attempt_cost))
|
||||
if(is_eligible_servant(H) && try_use_power(convert_cost))
|
||||
H << "<span class='sevtug'>\"[text2ratvar("You are mine and his, now.")]\"</span>"
|
||||
H.playsound_local(T, hum, 80, 1)
|
||||
add_servant_of_ratvar(H)
|
||||
H.Paralyse(5)
|
||||
else if(!H.stat)
|
||||
if(H.getBrainLoss() >= 100)
|
||||
H.Paralyse(5)
|
||||
H << "<span class='sevtug'>\"[text2ratvar(pick(convert_messages))]\"</span>"
|
||||
else
|
||||
H.adjustBrainLoss(100 * efficiency)
|
||||
H.visible_message("<span class='warning'>[H] reaches out and touches [src].</span>", "<span class='sevtug'>You touch [src] involuntarily.</span>")
|
||||
else
|
||||
visible_message("<span class='warning'>[src]'s antennae fizzle quietly.</span>")
|
||||
playsound(src, 'sound/effects/light_flicker.ogg', 50, 1)
|
||||
for(var/mob/living/carbon/human/H in range(10, src))
|
||||
if(is_servant_of_ratvar(H))
|
||||
if(H.getBrainLoss() || H.hallucination || H.druggy || H.dizziness || H.confused)
|
||||
H.adjustBrainLoss(-H.getBrainLoss()) //heals servants of braindamage, hallucination, druggy, dizziness, and confusion
|
||||
H.hallucination = 0
|
||||
H.adjust_drugginess(-H.druggy)
|
||||
H.dizziness = 0
|
||||
H.confused = 0
|
||||
else if(!H.null_rod_check() && H.stat == CONSCIOUS)
|
||||
var/distance = get_dist(T, get_turf(H))
|
||||
var/falloff_distance = min((110) - distance * 10, 80)
|
||||
var/sound_distance = falloff_distance * 0.5
|
||||
var/targetbrainloss = H.getBrainLoss()
|
||||
if(distance >= 4 && prob(falloff_distance * 0.5))
|
||||
H << "<span class='sevtug_small'>\"[text2ratvar(pick(mania_messages))]\"</span>"
|
||||
H.playsound_local(T, hum, sound_distance, 1)
|
||||
switch(distance)
|
||||
if(2 to 3)
|
||||
if(prob(falloff_distance * 0.5))
|
||||
if(prob(falloff_distance))
|
||||
H << "<span class='sevtug_small'>\"[text2ratvar(pick(mania_messages))]\"</span>"
|
||||
else
|
||||
H << "<span class='sevtug'>\"[text2ratvar(pick(compel_messages))]\"</span>"
|
||||
if(targetbrainloss <= 50)
|
||||
H.adjustBrainLoss((50 * efficiency) - targetbrainloss) //got too close had brain eaten
|
||||
H.adjust_drugginess(Clamp(7 * efficiency, 0, 100 - H.druggy))
|
||||
H.hallucination = min(H.hallucination + (7 * efficiency), 100)
|
||||
H.dizziness = min(H.dizziness + (3 * efficiency), 45)
|
||||
H.confused = min(H.confused + (3 * efficiency), 45)
|
||||
if(4 to 5)
|
||||
if(targetbrainloss <= 50)
|
||||
H.adjustBrainLoss(1 * efficiency)
|
||||
H.adjust_drugginess(Clamp(5 * efficiency, 0, 80 - H.druggy))
|
||||
H.hallucination = min(H.hallucination + (5 * efficiency), 80)
|
||||
H.dizziness = min(H.dizziness + (2 * efficiency), 30)
|
||||
H.confused = min(H.confused + (2 * efficiency), 30)
|
||||
if(6 to 7)
|
||||
if(targetbrainloss <= 30)
|
||||
H.adjustBrainLoss(1 * efficiency)
|
||||
H.adjust_drugginess(Clamp(2 * efficiency, 0, 60 - H.druggy))
|
||||
H.hallucination = min(H.hallucination + (2 * efficiency), 60)
|
||||
H.dizziness = min(H.dizziness + (2 * efficiency), 15)
|
||||
H.confused = min(H.confused + (2 * efficiency), 15)
|
||||
if(8 to 9)
|
||||
if(targetbrainloss <= 10)
|
||||
H.adjustBrainLoss(1 * efficiency)
|
||||
H.adjust_drugginess(Clamp(2 * efficiency, 0, 40 - H.druggy))
|
||||
H.hallucination = min(H.hallucination + (2 * efficiency), 40)
|
||||
if(10 to INFINITY)
|
||||
H.adjust_drugginess(Clamp(2 * efficiency, 0, 20 - H.druggy))
|
||||
H.hallucination = min(H.hallucination + (2 * efficiency), 20)
|
||||
else //if it's a distance of 1 and they can't see it/aren't adjacent or they're on top of it(how'd they get on top of it and still trigger this???)
|
||||
if(prob(falloff_distance * 0.5))
|
||||
if(prob(falloff_distance))
|
||||
H << "<span class='sevtug'>\"[text2ratvar(pick(compel_messages))]\"</span>"
|
||||
else if(prob(falloff_distance * 0.5))
|
||||
H << "<span class='sevtug'>\"[text2ratvar(pick(close_messages))]\"</span>"
|
||||
else
|
||||
H << "<span class='sevtug_small'>\"[text2ratvar(pick(mania_messages))]\"</span>"
|
||||
if(targetbrainloss <= 99)
|
||||
H.adjustBrainLoss((99 * efficiency) - targetbrainloss)
|
||||
H.adjust_drugginess(Clamp(10 * efficiency, 0, 150 - H.druggy))
|
||||
H.hallucination = min(H.hallucination + (10 * efficiency), 150)
|
||||
H.dizziness = min(H.dizziness + (5 * efficiency), 60)
|
||||
H.confused = min(H.confused + (5 * efficiency), 60)
|
||||
|
||||
else
|
||||
if(!try_use_power(mania_cost))
|
||||
forced_disable(FALSE)
|
||||
return
|
||||
var/turf/T = get_turf(src)
|
||||
var/hum = get_sfx('sound/effects/screech.ogg') //like playsound, same sound for everyone affected
|
||||
var/efficiency = get_efficiency_mod()
|
||||
for(var/mob/living/carbon/human/H in view(1, src))
|
||||
if(is_servant_of_ratvar(H) || H.null_rod_check() || H.stat == DEAD)
|
||||
continue
|
||||
if(!H.Adjacent(src))
|
||||
H << "<span class='sevtug'>\"[text2ratvar(pick(close_messages))]\"</span>"
|
||||
continue
|
||||
if(try_use_power(convert_cost))
|
||||
H.playsound_local(T, hum, 80, 1)
|
||||
if(!H.stat)
|
||||
if(H.getBrainLoss() < 100)
|
||||
H.adjustBrainLoss(30 * efficiency)
|
||||
H.visible_message("<span class='warning'>[H] reaches out and touches [src].</span>", "<span class='sevtug'>You touch [src] involuntarily.</span>")
|
||||
else
|
||||
H.Paralyse(3)
|
||||
else if(is_eligible_servant(H))
|
||||
H << "<span class='sevtug'>\"[text2ratvar("You are mine and his, now.")]\"</span>"
|
||||
add_servant_of_ratvar(H)
|
||||
H.Paralyse(5)
|
||||
else
|
||||
H << "<span class='sevtug'>\"[text2ratvar(pick(convert_messages))]\"</span>"
|
||||
else
|
||||
visible_message("<span class='warning'>[src]'s antennae fizzle quietly.</span>")
|
||||
playsound(src, 'sound/effects/light_flicker.ogg', 50, 1)
|
||||
for(var/mob/living/carbon/human/H in range(10, src))
|
||||
if(is_servant_of_ratvar(H)) //heals servants of braindamage, hallucination, druggy, dizziness, and confusion
|
||||
var/brainloss = H.getBrainLoss()
|
||||
if(brainloss)
|
||||
H.adjustBrainLoss(-brainloss)
|
||||
if(H.hallucination)
|
||||
H.hallucination = 0
|
||||
if(H.druggy)
|
||||
H.adjust_drugginess(-H.druggy)
|
||||
if(H.dizziness)
|
||||
H.dizziness = 0
|
||||
if(H.confused)
|
||||
H.confused = 0
|
||||
else if(!H.null_rod_check() && H.stat == CONSCIOUS)
|
||||
var/distance = 0 + get_dist(T, get_turf(H))
|
||||
var/falloff_distance = min((110) - distance * 10, 80)
|
||||
var/sound_distance = falloff_distance * 0.5
|
||||
var/targetbrainloss = H.getBrainLoss()
|
||||
if(distance >= 4 && prob(falloff_distance * 0.5))
|
||||
H << "<span class='sevtug_small'>\"[text2ratvar(pick(mania_messages))]\"</span>"
|
||||
H.playsound_local(T, hum, sound_distance, 1)
|
||||
switch(distance)
|
||||
if(0 to 3)
|
||||
if(prob(falloff_distance * 0.5))
|
||||
if(prob(falloff_distance))
|
||||
H << "<span class='sevtug_small'>\"[text2ratvar(pick(mania_messages))]\"</span>"
|
||||
else
|
||||
H << "<span class='sevtug'>\"[text2ratvar(pick(compel_messages))]\"</span>"
|
||||
if(targetbrainloss <= 50)
|
||||
H.adjustBrainLoss((50 * efficiency) - targetbrainloss) //got too close had brain eaten
|
||||
H.adjust_drugginess(Clamp(7 * efficiency, 0, 100 - H.druggy))
|
||||
H.hallucination = min(H.hallucination + (7 * efficiency), 100)
|
||||
H.dizziness = min(H.dizziness + (3 * efficiency), 45)
|
||||
H.confused = min(H.confused + (3 * efficiency), 45)
|
||||
if(4 to 5)
|
||||
if(targetbrainloss <= 50)
|
||||
H.adjustBrainLoss(1 * efficiency)
|
||||
H.adjust_drugginess(Clamp(5 * efficiency, 0, 80 - H.druggy))
|
||||
H.hallucination = min(H.hallucination + (5 * efficiency), 80)
|
||||
H.dizziness = min(H.dizziness + (2 * efficiency), 30)
|
||||
H.confused = min(H.confused + (2 * efficiency), 30)
|
||||
if(6 to 7)
|
||||
if(targetbrainloss <= 30)
|
||||
H.adjustBrainLoss(1 * efficiency)
|
||||
H.adjust_drugginess(Clamp(2 * efficiency, 0, 60 - H.druggy))
|
||||
H.hallucination = min(H.hallucination + (2 * efficiency), 60)
|
||||
H.dizziness = min(H.dizziness + (2 * efficiency), 15)
|
||||
H.confused = min(H.confused + (2 * efficiency), 15)
|
||||
if(8 to 9)
|
||||
if(targetbrainloss <= 10)
|
||||
H.adjustBrainLoss(1 * efficiency)
|
||||
H.adjust_drugginess(Clamp(2 * efficiency, 0, 40 - H.druggy))
|
||||
H.hallucination = min(H.hallucination + (2 * efficiency), 40)
|
||||
if(10 to INFINITY)
|
||||
H.adjust_drugginess(Clamp(2 * efficiency, 0, 20 - H.druggy))
|
||||
H.hallucination = min(H.hallucination + (2 * efficiency), 20)
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
if(M.current && M.current.stat != DEAD)
|
||||
cultists |= M.current
|
||||
var/mob/living/cultist_to_receive = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in (cultists - user)
|
||||
if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated())
|
||||
if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated())
|
||||
return
|
||||
if(!cultist_to_receive)
|
||||
user << "<span class='cultitalic'>You require a destination!</span>"
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
pickedtype = /obj/item/clothing/glasses/night/cultblind
|
||||
if("Flask of Unholy Water")
|
||||
pickedtype = /obj/item/weapon/reagent_containers/food/drinks/bottle/unholywater
|
||||
if(src && !qdeleted(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
|
||||
if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
|
||||
cooldowntime = world.time + 2400
|
||||
var/obj/item/N = new pickedtype(get_turf(src))
|
||||
user << "<span class='cultitalic'>You kneel before the altar and your faith is rewarded with an [N]!</span>"
|
||||
@@ -114,7 +114,7 @@
|
||||
pickedtype = /obj/item/clothing/suit/hooded/cultrobes/berserker
|
||||
if("Nar-Sien Hardsuit")
|
||||
pickedtype = /obj/item/clothing/suit/space/hardsuit/cult
|
||||
if(src && !qdeleted(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
|
||||
if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
|
||||
cooldowntime = world.time + 2400
|
||||
var/obj/item/N = new pickedtype(get_turf(src))
|
||||
user << "<span class='cultitalic'>You work the forge as dark knowledge guides your hands, creating [N]!</span>"
|
||||
@@ -218,7 +218,7 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
|
||||
if("Veil Walker Set")
|
||||
pickedtype += /obj/item/device/cult_shift
|
||||
pickedtype += /obj/item/device/flashlight/flare/culttorch
|
||||
if(src && !qdeleted(src) && anchored && pickedtype.len && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
|
||||
if(src && !QDELETED(src) && anchored && pickedtype.len && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
|
||||
cooldowntime = world.time + 2400
|
||||
for(var/N in pickedtype)
|
||||
var/obj/item/D = new N(get_turf(src))
|
||||
|
||||
@@ -180,7 +180,7 @@ This file contains the arcane tome files.
|
||||
if(!possible_runes.len)
|
||||
return
|
||||
entered_rune_name = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in possible_runes
|
||||
if(!src || qdeleted(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user))
|
||||
if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user))
|
||||
return
|
||||
for(var/T in typesof(/obj/effect/rune))
|
||||
var/obj/effect/rune/R = T
|
||||
@@ -196,7 +196,7 @@ This file contains the arcane tome files.
|
||||
return
|
||||
Turf = get_turf(user) //we may have moved. adjust as needed...
|
||||
A = get_area(src)
|
||||
if(!src || qdeleted(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user))
|
||||
if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user))
|
||||
return
|
||||
if(ispath(rune_to_scribe, /obj/effect/rune/narsie))
|
||||
if(ticker.mode.name == "cult")
|
||||
@@ -235,7 +235,7 @@ This file contains the arcane tome files.
|
||||
if(!do_after(user, initial(rune_to_scribe.scribe_delay), target = get_turf(user)))
|
||||
for(var/V in shields)
|
||||
var/obj/structure/emergency_shield/sanguine/S = V
|
||||
if(S && !qdeleted(S))
|
||||
if(S && !QDELETED(S))
|
||||
qdel(S)
|
||||
return
|
||||
if(!check_rune_turf(Turf, user))
|
||||
@@ -244,7 +244,7 @@ This file contains the arcane tome files.
|
||||
"<span class='cult'>You finish drawing the arcane markings of the Geometer.</span>")
|
||||
for(var/V in shields)
|
||||
var/obj/structure/emergency_shield/S = V
|
||||
if(S && !qdeleted(S))
|
||||
if(S && !QDELETED(S))
|
||||
qdel(S)
|
||||
var/obj/effect/rune/R = new rune_to_scribe(Turf, chosen_keyword)
|
||||
user << "<span class='cult'>The [lowertext(R.cultist_name)] rune [R.cultist_desc]</span>"
|
||||
|
||||
@@ -220,7 +220,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
possible_talismans[talisman_cult_name] = J //This is to allow the menu to let cultists select talismans by name
|
||||
entered_talisman_name = input(user, "Choose a talisman to imbue.", "Talisman Choices") as null|anything in possible_talismans
|
||||
talisman_type = possible_talismans[entered_talisman_name]
|
||||
if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || rune_in_use || !talisman_type)
|
||||
if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated() || rune_in_use || !talisman_type)
|
||||
return
|
||||
papers_on_rune = checkpapers()
|
||||
if(!papers_on_rune.len)
|
||||
@@ -290,7 +290,7 @@ var/list/teleport_runes = list()
|
||||
|
||||
var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked
|
||||
var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to?
|
||||
if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !actual_selected_rune)
|
||||
if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated() || !actual_selected_rune)
|
||||
fail_invoke()
|
||||
return
|
||||
|
||||
@@ -557,7 +557,7 @@ var/list/teleport_runes = list()
|
||||
mob_to_revive = input(user, "Choose a cultist to revive.", "Cultist to Revive") as null|anything in potential_revive_mobs
|
||||
else
|
||||
mob_to_revive = potential_revive_mobs[1]
|
||||
if(!src || qdeleted(src) || rune_in_use || !validness_checks(mob_to_revive, user))
|
||||
if(!src || QDELETED(src) || rune_in_use || !validness_checks(mob_to_revive, user))
|
||||
return
|
||||
rune_in_use = 1
|
||||
if(user.name == "Herbert West")
|
||||
@@ -809,7 +809,7 @@ var/list/wall_runes = list()
|
||||
if(!(M.current in invokers) && M.current && M.current.stat != DEAD)
|
||||
cultists |= M.current
|
||||
var/mob/living/cultist_to_summon = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in cultists
|
||||
if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated())
|
||||
if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated())
|
||||
return
|
||||
if(!cultist_to_summon)
|
||||
user << "<span class='cultitalic'>You require a summoning target!</span>"
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked
|
||||
var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to?
|
||||
if(!src || qdeleted(src) || !user || !user.is_holding(src) || user.incapacitated() || !actual_selected_rune)
|
||||
if(!src || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !actual_selected_rune)
|
||||
return ..(user, 0)
|
||||
var/turf/target = get_turf(actual_selected_rune)
|
||||
if(is_blocked_turf(target, TRUE))
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
/mob/living/carbon/true_devil/create_internal_organs()
|
||||
internal_organs += new /obj/item/organ/brain
|
||||
internal_organs += new /obj/item/organ/tongue
|
||||
internal_organs += new /obj/item/organ/eyes
|
||||
..()
|
||||
|
||||
|
||||
|
||||
@@ -329,7 +329,7 @@
|
||||
M.audible_message("<span class='userdanger'>You hear a loud electrical buzzing sound!</span>")
|
||||
src << "<span class='warning'>Reprogramming machine behaviour...</span>"
|
||||
spawn(50)
|
||||
if(M && !qdeleted(M))
|
||||
if(M && !QDELETED(M))
|
||||
new /mob/living/simple_animal/hostile/mimic/copy/machine(get_turf(M), M, src, 1)
|
||||
else src << "<span class='notice'>Out of uses.</span>"
|
||||
else src << "<span class='notice'>That's not a machine.</span>"
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
var/icon/eyes
|
||||
if(EYECOLOR in H.dna.species.species_traits)
|
||||
eyes = icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[H.dna.species.eyes]")
|
||||
eyes = icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "eyes")
|
||||
eyes.Blend("#[H.eye_color]", ICON_MULTIPLY)
|
||||
|
||||
var/datum/sprite_accessory/S
|
||||
|
||||
@@ -147,7 +147,7 @@ var/total_borer_hosts_needed = 10
|
||||
if(stat != CONSCIOUS)
|
||||
return
|
||||
var/be_borer = alert("Become a cortical borer? (Warning, You can no longer be cloned!)",,"Yes","No")
|
||||
if(be_borer == "No" || !src || qdeleted(src))
|
||||
if(be_borer == "No" || !src || QDELETED(src))
|
||||
return
|
||||
if(key)
|
||||
return
|
||||
@@ -178,7 +178,7 @@ var/total_borer_hosts_needed = 10
|
||||
if(!input)
|
||||
return
|
||||
|
||||
if(src && !qdeleted(src) && !qdeleted(victim))
|
||||
if(src && !QDELETED(src) && !QDELETED(victim))
|
||||
var/say_string = (docile) ? "slurs" :"states"
|
||||
if(victim)
|
||||
victim << "<span class='changeling'><i>[truename] [say_string]:</i> [input]</span>"
|
||||
@@ -512,7 +512,7 @@ var/total_borer_hosts_needed = 10
|
||||
addtimer(CALLBACK(src, .proc/release_host), 100)
|
||||
|
||||
/mob/living/simple_animal/borer/proc/release_host()
|
||||
if(!victim || !src || qdeleted(victim) || qdeleted(src))
|
||||
if(!victim || !src || QDELETED(victim) || QDELETED(src))
|
||||
return
|
||||
if(!leaving)
|
||||
return
|
||||
@@ -627,7 +627,7 @@ var/total_borer_hosts_needed = 10
|
||||
|
||||
src << "<span class='danger'>You begin delicately adjusting your connection to the host brain...</span>"
|
||||
|
||||
if(qdeleted(src) || qdeleted(victim))
|
||||
if(QDELETED(src) || QDELETED(victim))
|
||||
return
|
||||
|
||||
bonding = TRUE
|
||||
@@ -798,7 +798,7 @@ var/total_borer_hosts_needed = 10
|
||||
if(!candidate || !candidate.mob)
|
||||
return
|
||||
|
||||
if(!qdeleted(candidate) || !qdeleted(candidate.mob))
|
||||
if(!QDELETED(candidate) || !QDELETED(candidate.mob))
|
||||
var/datum/mind/M = create_borer_mind(candidate.ckey)
|
||||
M.transfer_to(src)
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
name = "Borer"
|
||||
typepath = /datum/round_event/borer
|
||||
weight = 15
|
||||
max_occurrences = 1
|
||||
min_players = 10
|
||||
max_occurrences = 0
|
||||
min_players = 15
|
||||
earliest_start = 12000
|
||||
|
||||
/datum/round_event/borer
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in machines)
|
||||
if(qdeleted(temp_vent))
|
||||
if(QDELETED(temp_vent))
|
||||
continue
|
||||
if(temp_vent.loc.z == ZLEVEL_STATION && !temp_vent.welded)
|
||||
var/datum/pipeline/temp_vent_parent = temp_vent.PARENT1
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
if(crit_fail)
|
||||
user << "Swarmer has been depowered."
|
||||
return
|
||||
if(qdeleted(src))
|
||||
if(QDELETED(src))
|
||||
user << "Swarmer has been occupied by someone else."
|
||||
return
|
||||
var/mob/living/simple_animal/hostile/swarmer/S = new /mob/living/simple_animal/hostile/swarmer(get_turf(loc))
|
||||
@@ -316,10 +316,6 @@
|
||||
S << "<span class='warning'>This communications relay should be preserved, it will be a useful resource to our masters in the future. Aborting.</span>"
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/blackbox_recorder/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||
S << "<span class='warning'>This machine has recorded large amounts of data on this structure and its inhabitants, it will be a useful resource to our masters in the future. Aborting. </span>"
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/power/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||
S << "<span class='warning'>Disrupting the power grid would bring no benefit to us. Aborting.</span>"
|
||||
return FALSE
|
||||
|
||||
@@ -366,7 +366,7 @@
|
||||
user << "<span class='revenwarning'>It is shifting and distorted. It would be wise to destroy this.</span>"
|
||||
|
||||
/obj/item/weapon/ectoplasm/revenant/proc/reform()
|
||||
if(!src || qdeleted(src) || inert)
|
||||
if(!src || QDELETED(src) || inert)
|
||||
return
|
||||
var/key_of_revenant
|
||||
message_admins("Revenant ectoplasm was left undestroyed for 1 minute and is reforming into a new revenant.")
|
||||
|
||||
@@ -571,7 +571,7 @@ var/global/list/multiverse = list()
|
||||
var/mob/living/carbon/last_user
|
||||
|
||||
/obj/item/warpwhistle/proc/interrupted(mob/living/carbon/user)
|
||||
if(!user || qdeleted(src))
|
||||
if(!user || QDELETED(src))
|
||||
on_cooldown = FALSE
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
return 1
|
||||
|
||||
/datum/spellbook_entry/proc/Buy(mob/living/carbon/human/user,obj/item/weapon/spellbook/book) //return 1 on success
|
||||
if(!S || qdeleted(S))
|
||||
if(!S || QDELETED(S))
|
||||
S = new spell_type()
|
||||
//Check if we got the spell already
|
||||
for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list)
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
flick("autolathe_r",src)//plays glass insertion animation
|
||||
user << "<span class='notice'>You insert [inserted] sheet[inserted>1 ? "s" : ""] to the autolathe.</span>"
|
||||
use_power(inserted*100)
|
||||
if(!qdeleted(O))
|
||||
if(!QDELETED(O))
|
||||
user.put_in_active_hand(O)
|
||||
else
|
||||
user << "<span class='notice'>You insert a material total of [inserted] to the autolathe.</span>"
|
||||
|
||||
@@ -382,7 +382,7 @@
|
||||
|
||||
/obj/machinery/clonepod/ex_act(severity, target)
|
||||
..()
|
||||
if(!qdeleted(src))
|
||||
if(!QDELETED(src))
|
||||
locked = FALSE
|
||||
go_out()
|
||||
|
||||
|
||||
@@ -71,17 +71,16 @@
|
||||
return
|
||||
|
||||
/obj/machinery/computer/aifixer/proc/Fix()
|
||||
. = use_power(1000)
|
||||
if(.)
|
||||
occupier.adjustOxyLoss(-1, 0)
|
||||
occupier.adjustFireLoss(-1, 0)
|
||||
occupier.adjustToxLoss(-1, 0)
|
||||
occupier.adjustBruteLoss(-1, 0)
|
||||
occupier.updatehealth()
|
||||
occupier.updatehealth()
|
||||
if(occupier.health >= 0 && occupier.stat == DEAD)
|
||||
occupier.revive()
|
||||
. = occupier.health < 100
|
||||
use_power(1000)
|
||||
occupier.adjustOxyLoss(-1, 0)
|
||||
occupier.adjustFireLoss(-1, 0)
|
||||
occupier.adjustToxLoss(-1, 0)
|
||||
occupier.adjustBruteLoss(-1, 0)
|
||||
occupier.updatehealth()
|
||||
occupier.updatehealth()
|
||||
if(occupier.health >= 0 && occupier.stat == DEAD)
|
||||
occupier.revive()
|
||||
return occupier.health < 100
|
||||
|
||||
/obj/machinery/computer/aifixer/process()
|
||||
if(..())
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/structure/frame/computer
|
||||
name = "computer frame"
|
||||
icon_state = "0"
|
||||
anchored = 0
|
||||
state = 0
|
||||
|
||||
/obj/structure/frame/computer/attackby(obj/item/P, mob/user, params)
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
icon = 'icons/obj/stock_parts.dmi'
|
||||
icon_state = "box_0"
|
||||
density = 1
|
||||
anchored = 1
|
||||
obj_integrity = 250
|
||||
max_integrity = 250
|
||||
var/obj/item/weapon/circuitboard/circuit = null
|
||||
|
||||
@@ -274,7 +274,7 @@ var/list/airlock_overlays = list()
|
||||
var/cont = 1
|
||||
while (cont)
|
||||
sleep(10)
|
||||
if(qdeleted(src))
|
||||
if(QDELETED(src))
|
||||
return
|
||||
cont = 0
|
||||
if(secondsMainPowerLost>0)
|
||||
@@ -1404,7 +1404,7 @@ var/list/airlock_overlays = list()
|
||||
operating = 1
|
||||
update_icon(AIRLOCK_EMAG, 1)
|
||||
sleep(6)
|
||||
if(qdeleted(src))
|
||||
if(QDELETED(src))
|
||||
return
|
||||
operating = 0
|
||||
if(!open())
|
||||
|
||||
@@ -305,7 +305,7 @@
|
||||
M.take_damage(DOOR_CRUSH_DAMAGE)
|
||||
|
||||
/obj/machinery/door/proc/autoclose()
|
||||
if(!qdeleted(src) && !density && !operating && !locked && !welded && autoclose)
|
||||
if(!QDELETED(src) && !density && !operating && !locked && !welded && autoclose)
|
||||
close()
|
||||
|
||||
/obj/machinery/door/proc/requiresID()
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
desc = "A strong door."
|
||||
icon = 'icons/obj/doors/windoor.dmi'
|
||||
icon_state = "left"
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
closingLayer = ABOVE_WINDOW_LAYER
|
||||
resistance_flags = ACID_PROOF
|
||||
var/base_state = "left"
|
||||
obj_integrity = 150 //If you change this, consider changing ../door/window/brigdoor/ health at the bottom of this .dm file
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
A.unbolt()
|
||||
spawn()
|
||||
if(A && A.close())
|
||||
if(stat & NOPOWER || lostPower || !A || qdeleted(A))
|
||||
if(stat & NOPOWER || lostPower || !A || QDELETED(A))
|
||||
goIdle(1)
|
||||
return
|
||||
A.bolt()
|
||||
@@ -209,7 +209,7 @@
|
||||
A.unbolt()
|
||||
spawn()
|
||||
if(A && A.open())
|
||||
if(stat | (NOPOWER) && !lostPower && A && !qdeleted(A))
|
||||
if(stat | (NOPOWER) && !lostPower && A && !QDELETED(A))
|
||||
A.bolt()
|
||||
goIdle(1)
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
user << "<span class='warning'>The panel must be closed before operating this machine!</span>"
|
||||
return
|
||||
|
||||
if(!linked_pad || qdeleted(linked_pad))
|
||||
if(!linked_pad || QDELETED(linked_pad))
|
||||
user << "<span class='warning'>There is no linked pad!</span>"
|
||||
return
|
||||
|
||||
@@ -112,14 +112,14 @@
|
||||
teleporting = 1
|
||||
|
||||
spawn(teleport_speed)
|
||||
if(!src || qdeleted(src))
|
||||
if(!src || QDELETED(src))
|
||||
teleporting = 0
|
||||
return
|
||||
if(stat & NOPOWER)
|
||||
user << "<span class='warning'>[src] is unpowered!</span>"
|
||||
teleporting = 0
|
||||
return
|
||||
if(!linked_pad || qdeleted(linked_pad) || linked_pad.stat & NOPOWER)
|
||||
if(!linked_pad || QDELETED(linked_pad) || linked_pad.stat & NOPOWER)
|
||||
user << "<span class='warning'>Linked pad is not responding to ping. Teleport aborted.</span>"
|
||||
teleporting = 0
|
||||
return
|
||||
|
||||
@@ -111,11 +111,11 @@
|
||||
|
||||
/obj/machinery/computer/mech_bay_power_console/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
if(recharge_port && !qdeleted(recharge_port))
|
||||
if(recharge_port && !QDELETED(recharge_port))
|
||||
data["recharge_port"] = list("mech" = null)
|
||||
if(recharge_port.recharging_mech && !qdeleted(recharge_port.recharging_mech))
|
||||
if(recharge_port.recharging_mech && !QDELETED(recharge_port.recharging_mech))
|
||||
data["recharge_port"]["mech"] = list("health" = recharge_port.recharging_mech.obj_integrity, "max_integrity" = recharge_port.recharging_mech.max_integrity, "cell" = null)
|
||||
if(recharge_port.recharging_mech.cell && !qdeleted(recharge_port.recharging_mech.cell))
|
||||
if(recharge_port.recharging_mech.cell && !QDELETED(recharge_port.recharging_mech.cell))
|
||||
data["recharge_port"]["mech"]["cell"] = list(
|
||||
"critfail" = recharge_port.recharging_mech.cell.crit_fail,
|
||||
"charge" = recharge_port.recharging_mech.cell.charge,
|
||||
|
||||
@@ -452,7 +452,8 @@
|
||||
if(inserted)
|
||||
user << "<span class='notice'>You insert [inserted] sheet\s into [src].</span>"
|
||||
if(W && W.materials.len)
|
||||
user.put_in_active_hand(W)
|
||||
if(!QDELETED(W))
|
||||
user.put_in_active_hand(W)
|
||||
var/mat_overlay = "fab-load-[material2name(W.materials[1])]"
|
||||
add_overlay(mat_overlay)
|
||||
sleep(10)
|
||||
|
||||
@@ -971,7 +971,7 @@
|
||||
setDir(dir_in)
|
||||
|
||||
if(L && L.client)
|
||||
L.client.view = world.view
|
||||
L.client.change_view(world.view)
|
||||
zoom_mode = 0
|
||||
|
||||
/////////////////////////
|
||||
|
||||
@@ -239,10 +239,10 @@
|
||||
chassis.log_message("Toggled zoom mode.")
|
||||
chassis.occupant_message("<font color='[chassis.zoom_mode?"blue":"red"]'>Zoom mode [chassis.zoom_mode?"en":"dis"]abled.</font>")
|
||||
if(chassis.zoom_mode)
|
||||
owner.client.view = 12
|
||||
owner.client.change_view(12)
|
||||
owner << sound('sound/mecha/imag_enh.ogg',volume=50)
|
||||
else
|
||||
owner.client.view = world.view//world.view - default mob view size
|
||||
owner.client.change_view(world.view) //world.view - default mob view size
|
||||
UpdateButtonIcon()
|
||||
|
||||
/datum/action/innate/mecha/mech_switch_damtype
|
||||
|
||||
@@ -264,7 +264,7 @@ list(name = "- Carbon Dioxide", desc = " This informational poster teaches the v
|
||||
playsound(D.loc, 'sound/items/poster_being_created.ogg', 100, 1)
|
||||
|
||||
if(do_after(user,D.placespeed,target=src))
|
||||
if(!D || qdeleted(D))
|
||||
if(!D || QDELETED(D))
|
||||
return
|
||||
|
||||
if(iswallturf(src) && user && user.loc == temp_loc) //Let's check if everything is still there
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
return
|
||||
|
||||
/obj/effect/countdown/process()
|
||||
if(!attached_to || qdeleted(attached_to))
|
||||
if(!attached_to || QDELETED(attached_to))
|
||||
qdel(src)
|
||||
forceMove(get_turf(attached_to))
|
||||
var/new_val = get_value()
|
||||
|
||||
@@ -42,3 +42,7 @@
|
||||
|
||||
/obj/effect/experience_pressure_difference()
|
||||
return
|
||||
|
||||
/obj/effect/singularity_act()
|
||||
qdel(src)
|
||||
return 0
|
||||
@@ -258,10 +258,11 @@
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/door
|
||||
icon_state = "ratvardoorglow"
|
||||
layer = CLOSED_FIREDOOR_LAYER //above closed doors
|
||||
layer = CLOSED_DOOR_LAYER //above closed doors
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/door/window
|
||||
icon_state = "ratvarwindoorglow"
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/beam
|
||||
icon_state = "ratvarbeamglow"
|
||||
@@ -295,7 +296,10 @@
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/window
|
||||
icon_state = "ratvarwindowglow"
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
layer = ABOVE_OBJ_LAYER
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/window/single
|
||||
icon_state = "ratvarwindowglow_s"
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/gear
|
||||
icon_state = "ratvargearglow"
|
||||
@@ -308,9 +312,6 @@
|
||||
/obj/effect/overlay/temp/ratvar/grille/broken
|
||||
icon_state = "ratvarbrokengrilleglow"
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/window/single
|
||||
icon_state = "ratvarwindowglow_s"
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/volt_hit
|
||||
name = "volt blast"
|
||||
layer = ABOVE_MOB_LAYER
|
||||
|
||||
@@ -503,7 +503,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
|
||||
else ..()
|
||||
|
||||
/obj/item/throw_impact(atom/A)
|
||||
if(A && !qdeleted(A))
|
||||
if(A && !QDELETED(A))
|
||||
var/itempush = 1
|
||||
if(w_class < 4)
|
||||
itempush = 0 //too light to push anything
|
||||
@@ -582,7 +582,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
|
||||
return 0
|
||||
|
||||
/obj/item/burn()
|
||||
if(!qdeleted(src))
|
||||
if(!QDELETED(src))
|
||||
var/turf/T = get_turf(src)
|
||||
var/ash_type = /obj/effect/decal/cleanable/ash
|
||||
if(w_class == WEIGHT_CLASS_HUGE || w_class == WEIGHT_CLASS_GIGANTIC)
|
||||
@@ -592,7 +592,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
|
||||
..()
|
||||
|
||||
/obj/item/acid_melt()
|
||||
if(!qdeleted(src))
|
||||
if(!QDELETED(src))
|
||||
var/turf/T = get_turf(src)
|
||||
var/obj/effect/decal/cleanable/molten_object/MO = new(T)
|
||||
MO.pixel_x = rand(-16,16)
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
/obj/item/toy/crayon/proc/check_empty(mob/user)
|
||||
// When eating a crayon, check_empty() can be called twice producing
|
||||
// two messages unless we check for being deleted first
|
||||
if(qdeleted(src))
|
||||
if(QDELETED(src))
|
||||
return TRUE
|
||||
|
||||
. = FALSE
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
flick("carp_swell", src)
|
||||
//Wait for animation to end
|
||||
sleep(6)
|
||||
if(!src || qdeleted(src))//we got toasted while animating
|
||||
if(!src || QDELETED(src))//we got toasted while animating
|
||||
return
|
||||
//Make space carp
|
||||
var/mob/living/M = new mobtype(get_turf(src))
|
||||
|
||||
@@ -663,7 +663,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
M << "[link] <span class='name'>[msg.sender] </span><span class='game say'>PDA Message</span> --> <span class='name'>[multiple ? "Everyone" : msg.recipient]</span>: <span class='message'>[msg.message][msg.get_photo_ref()]</span></span>"
|
||||
|
||||
/obj/item/device/pda/proc/can_send(obj/item/device/pda/P)
|
||||
if(!P || qdeleted(P) || P.toff)
|
||||
if(!P || QDELETED(P) || P.toff)
|
||||
return null
|
||||
|
||||
var/obj/machinery/message_server/useMS = null
|
||||
@@ -676,7 +676,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
var/datum/signal/signal = src.telecomms_process()
|
||||
|
||||
if(!P || qdeleted(P) || P.toff) //in case the PDA or mob gets destroyed during telecomms_process()
|
||||
if(!P || QDELETED(P) || P.toff) //in case the PDA or mob gets destroyed during telecomms_process()
|
||||
return null
|
||||
|
||||
var/useTC = 0
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
/obj/item/device/geiger_counter/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/device/geiger_counter/process()
|
||||
if(emagged)
|
||||
|
||||
@@ -97,11 +97,11 @@
|
||||
addtimer(CALLBACK(src, .proc/explode), timer * 10)
|
||||
|
||||
/obj/item/weapon/c4/proc/explode()
|
||||
if(qdeleted(src))
|
||||
if(QDELETED(src))
|
||||
return
|
||||
var/turf/location
|
||||
if(target)
|
||||
if(!qdeleted(target))
|
||||
if(!QDELETED(target))
|
||||
location = get_turf(target)
|
||||
target.overlays -= image_overlay
|
||||
target.priority_overlays -= image_overlay
|
||||
|
||||
@@ -381,6 +381,25 @@
|
||||
beakers += B2
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/ez_clean
|
||||
name = "cleaner grenade"
|
||||
desc = "Waffle Co.-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas."
|
||||
stage = READY
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/ez_clean/New()
|
||||
..()
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
|
||||
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
|
||||
|
||||
B1.reagents.add_reagent("fluorosurfactant", 40)
|
||||
B2.reagents.add_reagent("water", 40)
|
||||
B2.reagents.add_reagent("ez_clean", 60) //ensures a t h i c c distribution
|
||||
|
||||
beakers += B1
|
||||
beakers += B2
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/chem_grenade/teargas
|
||||
name = "teargas grenade"
|
||||
desc = "Used for nonlethal riot control. Contents under pressure. Do not directly inhale contents."
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
walk_away(P,loc,rand(1,4))
|
||||
|
||||
spawn(rand(15,60))
|
||||
if(P && !qdeleted(P))
|
||||
if(P && !QDELETED(P))
|
||||
P.prime()
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
/obj/item/weapon/grenade/deconstruct(disassembled = TRUE)
|
||||
if(!disassembled)
|
||||
prime()
|
||||
if(!qdeleted(src))
|
||||
if(!QDELETED(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/proc/clown_check(mob/living/carbon/human/user)
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
/obj/item/weapon/grenade/plastic/c4/prime()
|
||||
var/turf/location
|
||||
if(target)
|
||||
if(!qdeleted(target))
|
||||
if(!QDELETED(target))
|
||||
location = get_turf(target)
|
||||
target.overlays -= image_overlay
|
||||
target.priority_overlays -= image_overlay
|
||||
@@ -156,7 +156,7 @@
|
||||
/obj/item/weapon/grenade/plastic/x4/prime()
|
||||
var/turf/location
|
||||
if(target)
|
||||
if(!qdeleted(target))
|
||||
if(!QDELETED(target))
|
||||
location = get_turf(target)
|
||||
target.overlays -= image_overlay
|
||||
target.priority_overlays -= image_overlay
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
tracked_chem_implants += src
|
||||
|
||||
/obj/item/weapon/implant/chem/Destroy()
|
||||
..()
|
||||
. = ..()
|
||||
tracked_chem_implants -= src
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
tracked_implants += src
|
||||
|
||||
/obj/item/weapon/implant/tracking/Destroy()
|
||||
..()
|
||||
. = ..()
|
||||
tracked_implants -= src
|
||||
|
||||
/obj/item/weapon/implanter/tracking/New()
|
||||
|
||||
@@ -144,8 +144,8 @@
|
||||
playsound(loc, 'sound/weapons/batonextend.ogg', 50, 1)
|
||||
add_fingerprint(user)
|
||||
sleep(3)
|
||||
if (H && !qdeleted(H))
|
||||
if (B && !qdeleted(B))
|
||||
if (H && !QDELETED(H))
|
||||
if (B && !QDELETED(B))
|
||||
H.internal_organs -= B
|
||||
qdel(B)
|
||||
new /obj/effect/gibspawner/generic(H.loc, H.viruses, H.dna)
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
var/A
|
||||
|
||||
A = input(user, "Area to jump to", "BOOYEA", A) as null|anything in teleportlocs
|
||||
if(!src || qdeleted(src) || !user || !user.is_holding(src) || user.incapacitated() || !A || !uses)
|
||||
if(!src || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !A || !uses)
|
||||
return
|
||||
var/area/thearea = teleportlocs[A]
|
||||
|
||||
|
||||
@@ -273,13 +273,6 @@
|
||||
level = 1
|
||||
cant_hold = list(/obj/item/weapon/storage/backpack/satchel/flat) //muh recursive backpacks
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/duty
|
||||
name = "duty satchel"
|
||||
desc = "An extra trendy looking satchel."
|
||||
icon_state = "satchel-duty"
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/flat/hide(var/intact)
|
||||
if(intact)
|
||||
invisibility = INVISIBILITY_MAXIMUM
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user