mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-17 01:54:25 +01:00
@@ -1,12 +1,5 @@
|
||||
// Pilots
|
||||
|
||||
var/const/SAR =(1<<11)
|
||||
var/const/PILOT =(1<<13)
|
||||
var/const/EXPLORER =(1<<14)
|
||||
|
||||
var/const/ACCESS_PILOT = 67
|
||||
var/const/ACCESS_EXPLORER = 43
|
||||
|
||||
/datum/access/pilot
|
||||
id = ACCESS_PILOT
|
||||
desc = "Pilot"
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
var/image/contamination_overlay = image('icons/effects/contamination.dmi')
|
||||
GLOBAL_DATUM_INIT(contamination_overlay, /image, 'icons/effects/contamination.dmi')
|
||||
|
||||
/pl_control
|
||||
var/PHORON_DMG = 3
|
||||
@@ -63,7 +63,7 @@ var/image/contamination_overlay = image('icons/effects/contamination.dmi')
|
||||
else
|
||||
if(!contaminated)
|
||||
contaminated = 1
|
||||
add_overlay(contamination_overlay)
|
||||
add_overlay(GLOB.contamination_overlay)
|
||||
|
||||
/mob/proc/contaminate()
|
||||
|
||||
|
||||
+10
-16
@@ -27,19 +27,16 @@
|
||||
#define BE_NINJA 0x400
|
||||
#define BE_RAIDER 0x800
|
||||
#define BE_PLANT 0x1000
|
||||
#define BE_MUTINEER 0x2000
|
||||
#define BE_LOYALIST 0x4000
|
||||
#define BE_PAI 0x8000
|
||||
//VOREStation Add
|
||||
#define BE_LOSTDRONE 0x10000
|
||||
#define BE_MAINTCRITTER 0x20000
|
||||
#define BE_CORGI 0x40000
|
||||
#define BE_CURSEDSWORD 0x80000
|
||||
#define BE_SURVIVOR 0x100000
|
||||
#define BE_EVENT 0x200000
|
||||
//VOREStation Add End
|
||||
#define BE_LOYALIST 0x2000
|
||||
#define BE_PAI 0x4000
|
||||
#define BE_LOSTDRONE 0x8000
|
||||
#define BE_MAINTCRITTER 0x10000
|
||||
#define BE_CORGI 0x20000
|
||||
#define BE_CURSEDSWORD 0x40000
|
||||
#define BE_SURVIVOR 0x80000
|
||||
#define BE_EVENT 0x100000
|
||||
|
||||
var/list/be_special_flags = list(
|
||||
GLOBAL_LIST_INIT(be_special_flags, list(
|
||||
"Traitor" = BE_TRAITOR,
|
||||
"Operative" = BE_OPERATIVE,
|
||||
"Changeling" = BE_CHANGELING,
|
||||
@@ -53,17 +50,14 @@ var/list/be_special_flags = list(
|
||||
"Ninja" = BE_NINJA,
|
||||
"Raider" = BE_RAIDER,
|
||||
"Diona" = BE_PLANT,
|
||||
"Mutineer" = BE_MUTINEER,
|
||||
"Loyalist" = BE_LOYALIST,
|
||||
"pAI" = BE_PAI,
|
||||
//VOREStation Add
|
||||
"Lost Drone" = BE_LOSTDRONE,
|
||||
"Maint Critter" = BE_MAINTCRITTER,
|
||||
"Corgi" = BE_CORGI,
|
||||
"Cursed Sword" = BE_CURSEDSWORD,
|
||||
"Ship Survivor" = BE_SURVIVOR
|
||||
//VOREStation Add End
|
||||
)
|
||||
))
|
||||
|
||||
|
||||
// Antagonist datum flags.
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
//time of day but automatically adjusts to the server going into the next day within the same round.
|
||||
//for when you need a reliable time number that doesn't depend on byond time.
|
||||
#define REALTIMEOFDAY (world.timeofday + (MIDNIGHT_ROLLOVER * MIDNIGHT_ROLLOVER_CHECK))
|
||||
#define MIDNIGHT_ROLLOVER_CHECK ( rollovercheck_last_timeofday != world.timeofday ? update_midnight_rollover() : midnight_rollovers )
|
||||
#define MIDNIGHT_ROLLOVER_CHECK ( GLOB.rollovercheck_last_timeofday != world.timeofday ? update_midnight_rollover() : GLOB.midnight_rollovers )
|
||||
|
||||
#define SIGN(x) ( (x)!=0 ? (x) / abs(x) : 0 )
|
||||
|
||||
|
||||
@@ -52,22 +52,22 @@ GLOBAL_LIST_INIT(radiochannels, list(
|
||||
|
||||
|
||||
// central command channels, i.e deathsquid & response teams
|
||||
var/list/CENT_FREQS = list(ERT_FREQ, DTH_FREQ)
|
||||
GLOBAL_LIST_INIT(cent_frequencies, list(ERT_FREQ, DTH_FREQ))
|
||||
|
||||
// Antag channels, i.e. Syndicate
|
||||
var/list/ANTAG_FREQS = list(SYND_FREQ, RAID_FREQ)
|
||||
GLOBAL_LIST_INIT(antag_frequencies, list(SYND_FREQ, RAID_FREQ))
|
||||
|
||||
//Department channels, arranged lexically
|
||||
var/list/DEPT_FREQS = list(AI_FREQ, COMM_FREQ, ENG_FREQ, ENT_FREQ, MED_FREQ, SEC_FREQ, SCI_FREQ, SRV_FREQ, SUP_FREQ)
|
||||
GLOBAL_LIST_INIT(department_frequencies, list(AI_FREQ, COMM_FREQ, ENG_FREQ, ENT_FREQ, MED_FREQ, SEC_FREQ, SCI_FREQ, SRV_FREQ, SUP_FREQ))
|
||||
|
||||
var/list/OFFMAP_FREQS = list(TALON_FREQ, CSN_FREQ) //VOREStation Add
|
||||
GLOBAL_LIST_INIT(offmap_frequencies, list(TALON_FREQ, CSN_FREQ))
|
||||
|
||||
/proc/frequency_span_class(var/frequency)
|
||||
// Antags!
|
||||
if (frequency in ANTAG_FREQS)
|
||||
if (frequency in GLOB.antag_frequencies)
|
||||
return "syndradio"
|
||||
// CentCom channels (deathsquid and ert)
|
||||
if(frequency in CENT_FREQS)
|
||||
if(frequency in GLOB.cent_frequencies)
|
||||
return "centradio"
|
||||
// command channel
|
||||
if(frequency == COMM_FREQ)
|
||||
@@ -92,10 +92,8 @@ var/list/OFFMAP_FREQS = list(TALON_FREQ, CSN_FREQ) //VOREStation Add
|
||||
return "expradio"
|
||||
if(frequency == ENT_FREQ) // entertainment
|
||||
return "entradio"
|
||||
if(frequency in DEPT_FREQS)
|
||||
if(frequency in GLOB.department_frequencies)
|
||||
return "deptradio"
|
||||
//VOREStation Add
|
||||
if(frequency in OFFMAP_FREQS)
|
||||
if(frequency in GLOB.offmap_frequencies)
|
||||
return "expradio"
|
||||
//VOREStation Add End
|
||||
return "radio"
|
||||
|
||||
@@ -158,8 +158,6 @@
|
||||
|
||||
|
||||
|
||||
//var/debug_mob = 0
|
||||
|
||||
// Will recursively loop through an atom's contents and check for mobs, then it will loop through every atom in that atom's contents.
|
||||
// It will keep doing this until it checks every content possible. This will fix any problems with mobs, that are inside objects,
|
||||
// being unable to hear people due to being in a box within a bag.
|
||||
@@ -678,7 +676,6 @@
|
||||
|
||||
/proc/recursive_mob_check(var/atom/O, var/list/L = list(), var/recursion_limit = 3, var/client_check = 1, var/sight_check = 1, var/include_radio = 1)
|
||||
|
||||
//GLOB.debug_mob += O.contents.len
|
||||
if(!recursion_limit)
|
||||
return L
|
||||
for(var/atom/A in O.contents)
|
||||
|
||||
@@ -1170,8 +1170,7 @@ GLOBAL_LIST_EMPTY(available_recipes) // List of the recipes you can use
|
||||
GLOBAL_LIST_EMPTY(acceptable_reagents) // List of the reagents you can put in
|
||||
|
||||
|
||||
|
||||
/var/all_ui_styles = list(
|
||||
GLOBAL_LIST_INIT(all_ui_styles, list(
|
||||
"Midnight" = 'icons/mob/screen/midnight.dmi',
|
||||
"Orange" = 'icons/mob/screen/orange.dmi',
|
||||
"old" = 'icons/mob/screen/old.dmi',
|
||||
@@ -1179,9 +1178,9 @@ GLOBAL_LIST_EMPTY(acceptable_reagents) // List of the reagents you can put in
|
||||
"old-noborder" = 'icons/mob/screen/old-noborder.dmi',
|
||||
"minimalist" = 'icons/mob/screen/minimalist.dmi',
|
||||
"Hologram" = 'icons/mob/screen/holo.dmi'
|
||||
)
|
||||
))
|
||||
|
||||
/var/all_ui_styles_robot = list(
|
||||
GLOBAL_LIST_INIT(all_ui_styles_robot, list(
|
||||
"Midnight" = 'icons/mob/screen1_robot.dmi',
|
||||
"Orange" = 'icons/mob/screen1_robot.dmi',
|
||||
"old" = 'icons/mob/screen1_robot.dmi',
|
||||
@@ -1189,7 +1188,7 @@ GLOBAL_LIST_EMPTY(acceptable_reagents) // List of the reagents you can put in
|
||||
"old-noborder" = 'icons/mob/screen1_robot.dmi',
|
||||
"minimalist" = 'icons/mob/screen1_robot_minimalist.dmi',
|
||||
"Hologram" = 'icons/mob/screen1_robot_minimalist.dmi'
|
||||
)
|
||||
))
|
||||
|
||||
GLOBAL_LIST_INIT(all_tooltip_styles, list(
|
||||
"Midnight", //Default for everyone is the first one,
|
||||
|
||||
@@ -362,7 +362,7 @@ GLOBAL_LIST_INIT(alphabet_upper, list("A","B","C","D","E","F","G","H","I","J","K
|
||||
//For generating neat chat tag-images
|
||||
//The icon var could be local in the proc, but it's a waste of resources
|
||||
// to always create it and then throw it out.
|
||||
/var/icon/text_tag_icons = 'icons/chattags.dmi'
|
||||
GLOBAL_VAR_INIT(text_tag_icons, 'icons/chattags.dmi')
|
||||
GLOBAL_LIST_EMPTY(text_tag_cache)
|
||||
|
||||
/proc/create_text_tag(var/tagname, var/tagdesc = tagname, var/client/C = null)
|
||||
@@ -372,13 +372,13 @@ GLOBAL_LIST_EMPTY(text_tag_cache)
|
||||
var/datum/asset/spritesheet_batched/chatassets = get_asset_datum(/datum/asset/spritesheet_batched/chat)
|
||||
GLOB.text_tag_cache[tagname] = chatassets.icon_tag(tagname)
|
||||
if(!C.tgui_panel.is_ready() || C.tgui_panel.oldchat)
|
||||
return "<IMG src='\ref[text_tag_icons]' class='text_tag' iconstate='[tagname]'" + (tagdesc ? " alt='[tagdesc]'" : "") + ">"
|
||||
return "<IMG src='\ref[GLOB.text_tag_icons]' class='text_tag' iconstate='[tagname]'" + (tagdesc ? " alt='[tagdesc]'" : "") + ">"
|
||||
return GLOB.text_tag_cache[tagname]
|
||||
|
||||
/proc/create_text_tag_old(var/tagname, var/tagdesc = tagname, var/client/C = null)
|
||||
if(!(C && C.prefs?.read_preference(/datum/preference/toggle/chat_tags)))
|
||||
return tagdesc
|
||||
return "<IMG src='\ref[text_tag_icons]' class='text_tag' iconstate='[tagname]'" + (tagdesc ? " alt='[tagdesc]'" : "") + ">"
|
||||
return "<IMG src='\ref[GLOB.text_tag_icons]' class='text_tag' iconstate='[tagname]'" + (tagdesc ? " alt='[tagdesc]'" : "") + ">"
|
||||
|
||||
/proc/contains_az09(var/input)
|
||||
for(var/i=1, i<=length(input), i++)
|
||||
|
||||
+24
-24
@@ -7,7 +7,7 @@
|
||||
|
||||
#define DS2NEARESTTICK(DS) TICKS2DS(-round(-(DS2TICKS(DS))))
|
||||
|
||||
var/world_startup_time
|
||||
GLOBAL_VAR(world_startup_time)
|
||||
|
||||
/proc/get_game_time()
|
||||
var/global/time_offset = 0
|
||||
@@ -26,8 +26,8 @@ var/world_startup_time
|
||||
return wtime + (time_offset + wusage) * world.tick_lag
|
||||
|
||||
GLOBAL_VAR_INIT(roundstart_hour, pick(2,7,12,17))
|
||||
var/station_date = ""
|
||||
var/next_station_date_change = 1 DAY
|
||||
GLOBAL_VAR(station_date)
|
||||
GLOBAL_VAR_INIT(next_station_date_change, 1 DAY)
|
||||
|
||||
#define duration2stationtime(time) time2text(station_time_in_ds + time, "hh:mm")
|
||||
#define roundstart_delay_time (world.time - round_duration_in_ds)
|
||||
@@ -43,12 +43,12 @@ var/next_station_date_change = 1 DAY
|
||||
|
||||
/proc/stationdate2text()
|
||||
var/update_time = FALSE
|
||||
if(station_time_in_ds > next_station_date_change)
|
||||
next_station_date_change += 1 DAY
|
||||
if(station_time_in_ds > GLOB.next_station_date_change)
|
||||
GLOB.next_station_date_change += 1 DAY
|
||||
update_time = TRUE
|
||||
if(!station_date || update_time)
|
||||
station_date = num2text((text2num(time2text(REALTIMEOFDAY, "YYYY"))+300)) + "-" + time2text(REALTIMEOFDAY, "MM-DD") //VOREStation Edit
|
||||
return station_date
|
||||
if(!GLOB.station_date || update_time)
|
||||
GLOB.station_date = num2text((text2num(time2text(REALTIMEOFDAY, "YYYY"))+300)) + "-" + time2text(REALTIMEOFDAY, "MM-DD") //VOREStation Edit
|
||||
return GLOB.station_date
|
||||
|
||||
/// Returns UTC timestamp with the specifified format and optionally deciseconds
|
||||
/proc/time_stamp(format = "hh:mm:ss", show_ds)
|
||||
@@ -79,15 +79,15 @@ var/next_station_date_change = 1 DAY
|
||||
//else
|
||||
//return 1
|
||||
|
||||
var/next_duration_update = 0
|
||||
var/last_round_duration = 0
|
||||
GLOBAL_VAR_INIT(next_duration_update, 0)
|
||||
GLOBAL_VAR_INIT(last_round_duration, 0)
|
||||
GLOBAL_VAR_INIT(round_start_time, 0)
|
||||
|
||||
/proc/roundduration2text()
|
||||
if(!GLOB.round_start_time)
|
||||
return "00:00"
|
||||
if(last_round_duration && world.time < next_duration_update)
|
||||
return last_round_duration
|
||||
if(GLOB.last_round_duration && world.time < GLOB.next_duration_update)
|
||||
return GLOB.last_round_duration
|
||||
|
||||
var/mills = round_duration_in_ds // 1/10 of a second, not real milliseconds but whatever
|
||||
//var/secs = ((mills % 36000) % 600) / 10 //Not really needed, but I'll leave it here for refrence.. or something
|
||||
@@ -97,24 +97,24 @@ GLOBAL_VAR_INIT(round_start_time, 0)
|
||||
mins = mins < 10 ? add_zero(mins, 1) : mins
|
||||
hours = hours < 10 ? add_zero(hours, 1) : hours
|
||||
|
||||
last_round_duration = "[hours]:[mins]"
|
||||
next_duration_update = world.time + 1 MINUTES
|
||||
return last_round_duration
|
||||
GLOB.last_round_duration = "[hours]:[mins]"
|
||||
GLOB.next_duration_update = world.time + 1 MINUTES
|
||||
return GLOB.last_round_duration
|
||||
|
||||
/var/midnight_rollovers = 0
|
||||
/var/rollovercheck_last_timeofday = 0
|
||||
/var/rollover_safety_date = 0 // set in world/New to the server startup day-of-month
|
||||
GLOBAL_VAR_INIT(midnight_rollovers, 0)
|
||||
GLOBAL_VAR_INIT(rollovercheck_last_timeofday, 0)
|
||||
GLOBAL_VAR_INIT(rollover_safety_date, 0) // set in world/New to the server startup day-of-month
|
||||
/proc/update_midnight_rollover()
|
||||
// Day has wrapped (world.timeofday drops to 0 at the start of each real day)
|
||||
if (world.timeofday < rollovercheck_last_timeofday)
|
||||
if (world.timeofday < GLOB.rollovercheck_last_timeofday)
|
||||
// If the day started/last wrap was < 12 hours ago, this is spurious
|
||||
if(rollover_safety_date < world.realtime - (12 HOURS))
|
||||
midnight_rollovers++
|
||||
rollover_safety_date = world.realtime
|
||||
if(GLOB.rollover_safety_date < world.realtime - (12 HOURS))
|
||||
GLOB.midnight_rollovers++
|
||||
GLOB.rollover_safety_date = world.realtime
|
||||
else
|
||||
warning("Time rollover error: world.timeofday decreased from previous check, but the day or last rollover is less than 12 hours old. System clock?")
|
||||
rollovercheck_last_timeofday = world.timeofday
|
||||
return midnight_rollovers
|
||||
GLOB.rollovercheck_last_timeofday = world.timeofday
|
||||
return GLOB.midnight_rollovers
|
||||
|
||||
///Increases delay as the server gets more overloaded, as sleeps aren't cheap and sleeping only to wake up and sleep again is wasteful
|
||||
#define DELTA_CALC max(((max(TICK_USAGE, world.cpu) / 100) * max(Master.sleep_delta-1,1)), 1)
|
||||
|
||||
@@ -1172,21 +1172,21 @@ var/list/WALLITEMS = list(
|
||||
var/color = hex ? hex : "#[num2hex(red, 2)][num2hex(green, 2)][num2hex(blue, 2)]"
|
||||
return "<span style='font-face: fixedsys; font-size: 14px; background-color: [color]; color: [color]'>___</span>"
|
||||
|
||||
var/mob/dview/dview_mob
|
||||
GLOBAL_DATUM(dview_mob, /mob/dview)
|
||||
|
||||
//Version of view() which ignores darkness, because BYOND doesn't have it.
|
||||
/proc/dview(var/range = world.view, var/center, var/invis_flags = 0)
|
||||
if(!center)
|
||||
return
|
||||
if(!dview_mob) //VOREStation Add: Debugging
|
||||
dview_mob = new
|
||||
if(!GLOB.dview_mob) //VOREStation Add: Debugging
|
||||
GLOB.dview_mob = new
|
||||
|
||||
dview_mob.loc = center
|
||||
GLOB.dview_mob.loc = center
|
||||
|
||||
dview_mob.see_invisible = invis_flags
|
||||
GLOB.dview_mob.see_invisible = invis_flags
|
||||
|
||||
. = view(range, dview_mob)
|
||||
dview_mob.loc = null
|
||||
. = view(range, GLOB.dview_mob)
|
||||
GLOB.dview_mob.loc = null
|
||||
|
||||
/mob/dview
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
@@ -1220,7 +1220,7 @@ var/mob/dview/dview_mob
|
||||
stack_trace("Attempt to delete the dview_mob: [log_info_line(src)]")
|
||||
if (!force)
|
||||
return QDEL_HINT_LETMELIVE
|
||||
global.dview_mob = new
|
||||
GLOB.dview_mob = new
|
||||
return ..()
|
||||
|
||||
/proc/screen_loc2turf(scr_loc, turf/origin)
|
||||
|
||||
@@ -359,12 +359,14 @@
|
||||
C.swap_hand()
|
||||
else
|
||||
var/list/P = params2list(params)
|
||||
var/turf/T = screen_loc2turf(P["screen-loc"], get_turf(usr))
|
||||
var/turf/T = get_turf(usr)
|
||||
if(T)
|
||||
if(LAZYACCESS(modifiers, SHIFT_CLICK))
|
||||
usr.face_atom(T)
|
||||
return 1
|
||||
T.Click(location, control, params)
|
||||
T = screen_loc2turf(P["screen-loc"], T)
|
||||
if(T)
|
||||
if(LAZYACCESS(modifiers, SHIFT_CLICK))
|
||||
usr.face_atom(T)
|
||||
return 1
|
||||
T.Click(location, control, params)
|
||||
return 1
|
||||
|
||||
/// MouseWheelOn
|
||||
|
||||
@@ -392,9 +392,9 @@ GLOBAL_LIST_INIT(global_huds, list(
|
||||
|
||||
if(UI_style_new)
|
||||
if(isrobot(src))
|
||||
ic = all_ui_styles_robot[UI_style_new]
|
||||
ic = GLOB.all_ui_styles_robot[UI_style_new]
|
||||
else
|
||||
ic = all_ui_styles[UI_style_new]
|
||||
ic = GLOB.all_ui_styles[UI_style_new]
|
||||
hud_used.ui_style = ic
|
||||
else
|
||||
ic = hud_used.ui_style
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
var/atom/movable/screen/robot_inventory
|
||||
|
||||
/mob/living/silicon/robot/create_mob_hud(datum/hud/HUD, apply_to_client = TRUE)
|
||||
..()
|
||||
|
||||
@@ -16,6 +14,7 @@ var/atom/movable/screen/robot_inventory
|
||||
HUD.other = other
|
||||
|
||||
var/atom/movable/screen/using
|
||||
var/atom/movable/screen/robot_inventory
|
||||
|
||||
//Radio
|
||||
using = new /atom/movable/screen()
|
||||
|
||||
@@ -395,7 +395,7 @@ var/list/runechat_image_cache = list()
|
||||
var/static/rseed = rand(1,26)
|
||||
|
||||
// get hsl using the selected 6 characters of the md5 hash
|
||||
var/hash = copytext(md5(name + "[world_startup_time]"), rseed, rseed + 6)
|
||||
var/hash = copytext(md5(name + "[GLOB.world_startup_time]"), rseed, rseed + 6)
|
||||
var/h = hex2num(copytext(hash, 1, 3)) * (360 / 255)
|
||||
var/s = (hex2num(copytext(hash, 3, 5)) >> 2) * ((CM_COLOR_SAT_MAX - CM_COLOR_SAT_MIN) / 63) + CM_COLOR_SAT_MIN
|
||||
var/l = (hex2num(copytext(hash, 5, 7)) >> 2) * ((CM_COLOR_LUM_MAX - CM_COLOR_LUM_MIN) / 63) + CM_COLOR_LUM_MIN
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
gloves = /obj/item/clothing/gloves/swat
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
back = /obj/item/storage/backpack/satchel
|
||||
id_type = /obj/item/card/id/centcom/ERT
|
||||
id_type = /obj/item/card/id/centcom/ert
|
||||
pda_type = /obj/item/pda/centcom
|
||||
flags = OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
/decl/hierarchy/outfit/job/emergency_responder/post_equip(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
ert.add_antagonist(H.mind)
|
||||
GLOB.ert.add_antagonist(H.mind)
|
||||
|
||||
/decl/hierarchy/outfit/job/clown
|
||||
name = OUTFIT_JOB_NAME(JOB_CLOWN)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
gloves = /obj/item/clothing/gloves/combat
|
||||
|
||||
id_slot = slot_wear_id
|
||||
id_type = /obj/item/card/id/centcom/ERT
|
||||
id_type = /obj/item/card/id/centcom/ert
|
||||
id_desc = "Special operations ID."
|
||||
id_pda_assignment = "Special Operations Officer"
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
back = /obj/item/storage/backpack/satchel
|
||||
|
||||
id_slot = slot_wear_id
|
||||
id_type = /obj/item/card/id/centcom/ERT
|
||||
id_type = /obj/item/card/id/centcom/ert
|
||||
|
||||
headset = /obj/item/radio/headset/ert
|
||||
headset_alt = /obj/item/radio/headset/ert
|
||||
@@ -47,14 +47,14 @@
|
||||
name = "Spec ops - Death commando"
|
||||
|
||||
/decl/hierarchy/outfit/death_command/equip(var/mob/living/carbon/human/H)
|
||||
deathsquad.equip(H)
|
||||
GLOB.deathsquad.equip(H)
|
||||
return 1
|
||||
|
||||
/decl/hierarchy/outfit/syndicate_command
|
||||
name = "Spec ops - Syndicate commando"
|
||||
|
||||
/decl/hierarchy/outfit/syndicate_command/equip(var/mob/living/carbon/human/H)
|
||||
commandos.equip(H)
|
||||
GLOB.commandos.equip(H)
|
||||
return 1
|
||||
|
||||
/decl/hierarchy/outfit/mercenary
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
var/freq_text
|
||||
|
||||
// the name of the channel
|
||||
if(display_freq in ANTAG_FREQS)
|
||||
if(display_freq in GLOB.antag_frequencies)
|
||||
freq_text = "#unkn"
|
||||
else
|
||||
for(var/channel in GLOB.radiochannels)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/borer/borers
|
||||
GLOBAL_DATUM(borers, /datum/antagonist/borer)
|
||||
|
||||
/datum/antagonist/borer
|
||||
id = MODE_BORER
|
||||
@@ -27,7 +27,7 @@ var/datum/antagonist/borer/borers
|
||||
|
||||
/datum/antagonist/borer/New()
|
||||
..(1)
|
||||
borers = src
|
||||
GLOB.borers = src
|
||||
|
||||
/datum/antagonist/xenos/borer/get_extra_panel_options(var/datum/mind/player)
|
||||
return "<a href='byond://?src=\ref[src];[HrefToken()];move_to_spawn=\ref[player.current]'>\[put in host\]</a>"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/xenos/xenomorphs
|
||||
GLOBAL_DATUM(xenomorphs, /datum/antagonist/xenos)
|
||||
|
||||
/datum/antagonist/xenos
|
||||
id = MODE_XENOMORPH
|
||||
@@ -24,7 +24,7 @@ var/datum/antagonist/xenos/xenomorphs
|
||||
/datum/antagonist/xenos/New(var/no_reference)
|
||||
..()
|
||||
if(!no_reference)
|
||||
xenomorphs = src
|
||||
GLOB.xenomorphs = src
|
||||
|
||||
/datum/antagonist/xenos/attempt_random_spawn()
|
||||
if(CONFIG_GET(flag/aliens_allowed)) ..()
|
||||
|
||||
@@ -47,4 +47,4 @@
|
||||
set category = "Abilities.Antag"
|
||||
if(!M.mind)
|
||||
return
|
||||
convert_to_faction(M.mind, loyalists)
|
||||
convert_to_faction(M.mind, GLOB.loyalists)
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
var/datum/antagonist/mutineer/loyalist/loyalists
|
||||
|
||||
/datum/antagonist/mutineer/loyalist
|
||||
role_text = "Loyalist"
|
||||
role_text_plural = "Loyalists"
|
||||
id = MODE_LOYALIST
|
||||
|
||||
/datum/antagonist/mutineer/loyalist/New()
|
||||
..(1)
|
||||
loyalists = src
|
||||
@@ -1,66 +0,0 @@
|
||||
var/datum/antagonist/mutineer/mutineers
|
||||
|
||||
/datum/antagonist/mutineer
|
||||
role_type = BE_MUTINEER
|
||||
role_text = "Mutineer"
|
||||
role_text_plural = "Mutineers"
|
||||
id = MODE_MUTINEER
|
||||
antag_indicator = "mutineer"
|
||||
restricted_jobs = list(JOB_SITE_MANAGER)
|
||||
|
||||
/datum/antagonist/mutineer/New(var/no_reference)
|
||||
..()
|
||||
if(!no_reference)
|
||||
mutineers = src
|
||||
|
||||
/datum/antagonist/mutineer/proc/recruit()
|
||||
|
||||
/datum/antagonist/mutineer/can_become_antag(var/datum/mind/player)
|
||||
if(!..())
|
||||
return 0
|
||||
if(!ishuman(player.current))
|
||||
return 0
|
||||
if(M.special_role)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/*
|
||||
var/list/directive_candidates = get_directive_candidates()
|
||||
if(!directive_candidates || directive_candidates.len == 0)
|
||||
to_world(span_warning("Mutiny mode aborted: no valid candidates for Directive X."))
|
||||
return 0
|
||||
|
||||
head_loyalist = pick(loyalist_candidates)
|
||||
head_mutineer = pick(mutineer_candidates)
|
||||
current_directive = pick(directive_candidates)
|
||||
|
||||
|
||||
// Returns an array in case we want to expand on this later.
|
||||
proc/get_head_loyalist_candidates()
|
||||
var/list/candidates[0]
|
||||
for(var/mob/loyalist in GLOB.player_list)
|
||||
if(loyalist.mind && loyalist.mind.assigned_role == JOB_SITE_MANAGER)
|
||||
candidates.Add(loyalist.mind)
|
||||
return candidates
|
||||
|
||||
proc/get_head_mutineer_candidates()
|
||||
var/list/candidates[0]
|
||||
for(var/mob/mutineer in GLOB.player_list)
|
||||
if(mutineer.client.prefs.be_special & BE_MUTINEER)
|
||||
for(var/job in GLOB.command_positions - JOB_SITE_MANAGER)
|
||||
if(mutineer.mind && mutineer.mind.assigned_role == job)
|
||||
candidates.Add(mutineer.mind)
|
||||
return candidates
|
||||
|
||||
proc/get_directive_candidates()
|
||||
var/list/candidates[0]
|
||||
for(var/T in subtypesof(/datum/directive))
|
||||
var/datum/directive/D = new T(src)
|
||||
if (D.meets_prerequisites())
|
||||
candidates.Add(D)
|
||||
return candidates
|
||||
|
||||
|
||||
return 1
|
||||
|
||||
*/
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/deathsquad/mercenary/commandos
|
||||
GLOBAL_DATUM(commandos, /datum/antagonist/deathsquad/mercenary)
|
||||
|
||||
/datum/antagonist/deathsquad/mercenary
|
||||
id = MODE_COMMANDO
|
||||
@@ -7,7 +7,7 @@ var/datum/antagonist/deathsquad/mercenary/commandos
|
||||
role_text_plural = "Commandos"
|
||||
welcome_text = "You are in the employ of a criminal syndicate hostile to corporate interests."
|
||||
antag_sound = 'sound/effects/antag_notice/deathsquid_alert.ogg'
|
||||
id_type = /obj/item/card/id/centcom/ERT
|
||||
id_type = /obj/item/card/id/centcom/ert
|
||||
|
||||
hard_cap = 4
|
||||
hard_cap_round = 8
|
||||
@@ -17,7 +17,7 @@ var/datum/antagonist/deathsquad/mercenary/commandos
|
||||
|
||||
/datum/antagonist/deathsquad/mercenary/New()
|
||||
..(1)
|
||||
commandos = src
|
||||
GLOB.commandos = src
|
||||
|
||||
/datum/antagonist/deathsquad/mercenary/equip(var/mob/living/carbon/human/player)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
var/datum/antagonist/deathsquad/deathsquad
|
||||
GLOBAL_DATUM(deathsquad, /datum/antagonist/deathsquad)
|
||||
|
||||
/datum/antagonist/deathsquad
|
||||
/datum/antagonist/
|
||||
id = MODE_DEATHSQUAD
|
||||
role_type = BE_OPERATIVE
|
||||
role_text = "Death Commando"
|
||||
@@ -22,7 +22,7 @@ var/datum/antagonist/deathsquad/deathsquad
|
||||
/datum/antagonist/deathsquad/New(var/no_reference)
|
||||
..()
|
||||
if(!no_reference)
|
||||
deathsquad = src
|
||||
GLOB.deathsquad = src
|
||||
|
||||
/datum/antagonist/deathsquad/attempt_spawn()
|
||||
if(..())
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/ert/ert
|
||||
GLOBAL_DATUM(ert, /datum/antagonist/ert)
|
||||
|
||||
/datum/antagonist/ert
|
||||
id = MODE_ERT
|
||||
@@ -16,15 +16,15 @@ var/datum/antagonist/ert/ert
|
||||
rules aside from those without explicit exceptions apply to the ERT.")
|
||||
leader_welcome_text = "As leader of the Emergency Response Team, you answer only to the Company, and have authority to override the " + JOB_SITE_MANAGER + " where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the " + JOB_SITE_MANAGER + " where possible, however."
|
||||
landmark_id = "Response Team"
|
||||
id_type = /obj/item/card/id/centcom/ERT
|
||||
id_type = /obj/item/card/id/centcom/ert
|
||||
|
||||
flags = ANTAG_OVERRIDE_JOB | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER | ANTAG_CHOOSE_NAME
|
||||
antaghud_indicator = "hudloyalist"
|
||||
|
||||
hard_cap = 5
|
||||
hard_cap_round = 7
|
||||
initial_spawn_req = 5
|
||||
initial_spawn_target = 7
|
||||
hard_cap = 12
|
||||
hard_cap_round = 12
|
||||
initial_spawn_req = 4
|
||||
initial_spawn_target = 12
|
||||
|
||||
can_hear_aooc = FALSE // They're the good guys.
|
||||
can_speak_aooc = FALSE // Just in case the above var bugs, or gets touched.
|
||||
@@ -35,7 +35,7 @@ var/datum/antagonist/ert/ert
|
||||
|
||||
/datum/antagonist/ert/New()
|
||||
..()
|
||||
ert = src
|
||||
GLOB.ert = src
|
||||
|
||||
/datum/antagonist/ert/greet(var/datum/mind/player)
|
||||
if(!..())
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
//boosted ERT spawn/cap numbers to match the Von Braun's spawns, just to be safe. not much point going to all the effort of giving you twelve slots if only seven can ever be used without admin fuckery. -Killian
|
||||
/datum/antagonist/ert
|
||||
hard_cap = 12
|
||||
hard_cap_round = 12
|
||||
initial_spawn_req = 4
|
||||
initial_spawn_target = 12
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/mercenary/mercs
|
||||
GLOBAL_DATUM(mercs, /datum/antagonist/mercenary)
|
||||
|
||||
/datum/antagonist/mercenary
|
||||
id = MODE_MERCENARY
|
||||
@@ -21,7 +21,7 @@ var/datum/antagonist/mercenary/mercs
|
||||
|
||||
/datum/antagonist/mercenary/New()
|
||||
..()
|
||||
mercs = src
|
||||
GLOB.mercs = src
|
||||
|
||||
/datum/antagonist/mercenary/create_global_objectives()
|
||||
if(!..())
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/ninja/ninjas
|
||||
GLOBAL_DATUM(ninjas, /datum/antagonist/ninja)
|
||||
|
||||
/datum/antagonist/ninja
|
||||
id = MODE_NINJA
|
||||
@@ -20,7 +20,7 @@ var/datum/antagonist/ninja/ninjas
|
||||
|
||||
/datum/antagonist/ninja/New()
|
||||
..()
|
||||
ninjas = src
|
||||
GLOB.ninjas = src
|
||||
|
||||
/datum/antagonist/ninja/attempt_random_spawn()
|
||||
if(CONFIG_GET(flag/ninjas_allowed)) ..()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/raider/raiders
|
||||
GLOBAL_DATUM(raiders, /datum/antagonist/raider)
|
||||
|
||||
/datum/antagonist/raider
|
||||
id = MODE_RAIDER
|
||||
@@ -108,7 +108,7 @@ var/datum/antagonist/raider/raiders
|
||||
|
||||
/datum/antagonist/raider/New()
|
||||
..()
|
||||
raiders = src
|
||||
GLOB.raiders = src
|
||||
|
||||
/datum/antagonist/raider/update_access(var/mob/living/player)
|
||||
for(var/obj/item/storage/wallet/W in player.contents)
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
var/datum/antagonist/shipwreck_survivor/survivors
|
||||
GLOBAL_DATUM(survivors, /datum/antagonist/shipwreck_survivor)
|
||||
|
||||
//Shipwreck survivors can only spawn from ghost_pods at time of this commit.
|
||||
//These are NOT meant to be real antagonists
|
||||
//They are, at best, comparable to ERT.
|
||||
/datum/antagonist/SURVIVOR
|
||||
/datum/antagonist/shipwreck_survivor
|
||||
id = MODE_SURVIVOR
|
||||
role_type = BE_SURVIVOR
|
||||
role_text = "Shipwreck Survivor"
|
||||
@@ -29,7 +29,11 @@ var/datum/antagonist/shipwreck_survivor/survivors
|
||||
can_speak_aooc = FALSE
|
||||
can_hear_aooc = FALSE
|
||||
|
||||
/datum/antagonist/SURVIVOR/greet(var/datum/mind/player)
|
||||
/datum/antagonist/shipwreck_survivor/New()
|
||||
..()
|
||||
GLOB.survivors = src
|
||||
|
||||
/datum/antagonist/survivor/greet(var/datum/mind/player)
|
||||
to_chat(player.current, span_warning("You are a <b>NOT</b> an antagonist! All rules apply to you as well. Your job is to help make the world seem more alive. \n \
|
||||
You are not an existing station character, but some average person who has suffered a terrible accident. \
|
||||
Feel free to make up what happened to the ship you awakened on as you please, \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/technomancer/technomancers
|
||||
GLOBAL_DATUM(technomancers, /datum/antagonist/technomancer)
|
||||
|
||||
/datum/antagonist/technomancer
|
||||
id = MODE_TECHNOMANCER
|
||||
@@ -24,7 +24,7 @@ var/datum/antagonist/technomancer/technomancers
|
||||
|
||||
/datum/antagonist/technomancer/New()
|
||||
..()
|
||||
technomancers = src
|
||||
GLOB.technomancers = src
|
||||
|
||||
/datum/antagonist/technomancer/update_antag_mob(var/datum/mind/technomancer)
|
||||
..()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/trader/traders
|
||||
GLOBAL_DATUM(traders, /datum/antagonist/trader)
|
||||
|
||||
/datum/antagonist/trader
|
||||
id = MODE_TRADE
|
||||
@@ -33,7 +33,7 @@ var/datum/antagonist/trader/traders
|
||||
|
||||
/datum/antagonist/trader/New()
|
||||
..()
|
||||
traders = src
|
||||
GLOB.traders = src
|
||||
|
||||
/datum/antagonist/trader/greet(var/datum/mind/player)
|
||||
if(!..())
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/wizard/wizards
|
||||
GLOBAL_DATUM(wizards, /datum/antagonist/wizard)
|
||||
|
||||
/datum/antagonist/wizard
|
||||
id = MODE_WIZARD
|
||||
@@ -19,7 +19,7 @@ var/datum/antagonist/wizard/wizards
|
||||
|
||||
/datum/antagonist/wizard/New()
|
||||
..()
|
||||
wizards = src
|
||||
GLOB.wizards = src
|
||||
|
||||
/datum/antagonist/wizard/create_objectives(var/datum/mind/wizard)
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/highlander/highlanders
|
||||
GLOBAL_DATUM(highlanders, /datum/antagonist/highlander)
|
||||
|
||||
/datum/antagonist/highlander
|
||||
role_text = "Highlander"
|
||||
@@ -12,11 +12,11 @@ var/datum/antagonist/highlander/highlanders
|
||||
initial_spawn_req = 3
|
||||
initial_spawn_target = 5
|
||||
|
||||
id_type = /obj/item/card/id/centcom/ERT
|
||||
id_type = /obj/item/card/id/centcom/ert
|
||||
|
||||
/datum/antagonist/highlander/New()
|
||||
..()
|
||||
highlanders = src
|
||||
GLOB.highlanders = src
|
||||
|
||||
/datum/antagonist/highlander/create_objectives(var/datum/mind/player)
|
||||
|
||||
@@ -80,7 +80,7 @@ var/datum/antagonist/highlander/highlanders
|
||||
for(var/mob/living/carbon/human/H in GLOB.player_list)
|
||||
if(H.stat == 2 || !(H.client)) continue
|
||||
if(is_special_character(H)) continue
|
||||
highlanders.add_antagonist(H.mind)
|
||||
GLOB.highlanders.add_antagonist(H.mind)
|
||||
|
||||
/client/proc/only_one_delayed()
|
||||
//send_to_playing_players(span_userdanger("Bagpipes begin to blare. You feel Scottish pride coming over you."))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/datum/antagonist/loyalists/loyalists
|
||||
GLOBAL_DATUM(loyalists, /datum/antagonist/loyalists)
|
||||
|
||||
/datum/antagonist/loyalists
|
||||
id = MODE_LOYALIST
|
||||
@@ -33,7 +33,7 @@ var/datum/antagonist/loyalists/loyalists
|
||||
|
||||
/datum/antagonist/loyalists/New()
|
||||
..()
|
||||
loyalists = src
|
||||
GLOB.loyalists = src
|
||||
|
||||
/datum/antagonist/loyalists/create_global_objectives()
|
||||
if(!..())
|
||||
|
||||
@@ -63,7 +63,7 @@ GLOBAL_LIST_EMPTY(nuke_disks)
|
||||
to_chat(world, span_filter_system(span_large(span_bold("[syndicate_name()] operatives have earned Darwin Award!"))))
|
||||
to_chat(world, span_filter_system(span_bold("[syndicate_name()] operatives blew up something that wasn't [station_name()] and got caught in the explosion.") + " Next time, don't lose the disk!"))
|
||||
|
||||
else if (disk_rescued && mercs.antags_are_dead())
|
||||
else if (disk_rescued && GLOB.mercs.antags_are_dead())
|
||||
feedback_set_details("round_end_result","loss - evacuation - disk secured - syndi team dead")
|
||||
to_chat(world, span_filter_system(span_large(span_bold("Crew Major Victory!"))))
|
||||
to_chat(world, span_filter_system(span_bold("The Research Staff has saved the disc and killed the [syndicate_name()] Operatives")))
|
||||
@@ -73,7 +73,7 @@ GLOBAL_LIST_EMPTY(nuke_disks)
|
||||
to_chat(world, span_filter_system(span_large(span_bold("Crew Major Victory"))))
|
||||
to_chat(world, span_filter_system(span_bold("The Research Staff has saved the disc and stopped the [syndicate_name()] Operatives!")))
|
||||
|
||||
else if (!disk_rescued && mercs.antags_are_dead())
|
||||
else if (!disk_rescued && GLOB.mercs.antags_are_dead())
|
||||
feedback_set_details("round_end_result","loss - evacuation - disk not secured")
|
||||
to_chat(world, span_filter_system(span_large(span_bold("Mercenary Minor Victory!"))))
|
||||
to_chat(world, span_filter_system(span_bold("The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name()] Operatives!")))
|
||||
|
||||
@@ -690,7 +690,7 @@ GLOBAL_LIST_EMPTY(all_objectives)
|
||||
if(istype(I,target)) total_amount++
|
||||
if(total_amount >= target_amount) return 1
|
||||
|
||||
for(var/datum/mind/raider in raiders.current_antagonists)
|
||||
for(var/datum/mind/raider in GLOB.raiders.current_antagonists)
|
||||
if(raider.current)
|
||||
for(var/obj/O in raider.current.get_contents())
|
||||
if(istype(O,target)) total_amount++
|
||||
@@ -744,7 +744,7 @@ GLOBAL_LIST_EMPTY(all_objectives)
|
||||
S = I
|
||||
total_amount += S.get_amount()
|
||||
|
||||
for(var/datum/mind/raider in raiders.current_antagonists)
|
||||
for(var/datum/mind/raider in GLOB.raiders.current_antagonists)
|
||||
if(raider.current)
|
||||
for(var/obj/item/O in raider.current.get_contents())
|
||||
if(istype(O,/obj/item/stack/material))
|
||||
@@ -760,7 +760,7 @@ GLOBAL_LIST_EMPTY(all_objectives)
|
||||
explanation_text = "Do not leave anyone behind, alive or dead."
|
||||
|
||||
/datum/objective/heist/preserve_crew/check_completion()
|
||||
if(raiders && raiders.is_raider_crew_safe()) return 1
|
||||
if(GLOB.raiders && GLOB.raiders.is_raider_crew_safe()) return 1
|
||||
return 0
|
||||
|
||||
//Borer objective(s).
|
||||
|
||||
@@ -63,7 +63,7 @@ var/list/all_technomancer_assistance = subtypesof(/datum/technomancer/assistance
|
||||
// Parameters: 1 (new_owner - mob that the book is trying to bind to)
|
||||
// Description: Links the catalog to hopefully the technomancer, so that only they can access it.
|
||||
/obj/item/technomancer_catalog/proc/bind_to_owner(var/mob/living/carbon/human/new_owner)
|
||||
if(!owner && (technomancers.is_antagonist(new_owner.mind) || universal)) //VOREStation Edit - Universal catalogs
|
||||
if(!owner && (GLOB.technomancers.is_antagonist(new_owner.mind) || universal)) //VOREStation Edit - Universal catalogs
|
||||
owner = new_owner
|
||||
|
||||
// Proc: New()
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
if(world.time % 5 == 0) // Maintaining fat lists is expensive, I imagine.
|
||||
maintain_summon_list()
|
||||
if(wearer && wearer.mind)
|
||||
if(!(technomancers.is_antagonist(wearer.mind)) && !universal) // In case someone tries to wear a stolen core. //VOREStation Edit - Add universal cores
|
||||
if(!(GLOB.technomancers.is_antagonist(wearer.mind)) && !universal) // In case someone tries to wear a stolen core. //VOREStation Edit - Add universal cores
|
||||
wearer.adjust_instability(20)
|
||||
if(!wearer || wearer.stat == DEAD) // Unlock if we're dead or not worn.
|
||||
canremove = TRUE
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
if(core.loc != owner || owner.back != core) //Make sure the core's being worn.
|
||||
to_chat(owner, span_danger("You need to be wearing a core on your back!"))
|
||||
return 0
|
||||
if(!technomancers.is_antagonist(owner.mind) && !core.universal) //Now make sure the person using this is the actual antag. //VOREStation Edit - Universal cores
|
||||
if(!GLOB.technomancers.is_antagonist(owner.mind) && !core.universal) //Now make sure the person using this is the actual antag. //VOREStation Edit - Universal cores
|
||||
to_chat(owner, span_danger("You can't seem to figure out how to make the machine work properly."))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
/obj/item/spell/proc/is_ally(var/mob/living/L)
|
||||
if(L == owner) // The best ally is ourselves.
|
||||
return 1
|
||||
if(L.mind && technomancers.is_antagonist(L.mind)) // This should be done better since we might want opposing technomancers later.
|
||||
if(L.mind && GLOB.technomancers.is_antagonist(L.mind)) // This should be done better since we might want opposing technomancers later.
|
||||
return 1
|
||||
if(isanimal(L)) // Mind controlled simple mobs count as allies too.
|
||||
var/mob/living/simple_mob/SM = L
|
||||
|
||||
@@ -262,7 +262,7 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages
|
||||
if(istype(R))
|
||||
LAZYDISTINCTADD(forced_radios, R)
|
||||
|
||||
if(connection.frequency in ANTAG_FREQS) // if antag broadcast, just
|
||||
if(connection.frequency in GLOB.antag_frequencies) // if antag broadcast, just
|
||||
Broadcast_Message(signal.data["connection"], signal.data["mob"],
|
||||
signal.data["vmask"], signal.data["vmessage"],
|
||||
signal.data["radio"], signal.data["message"],
|
||||
@@ -378,7 +378,7 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages
|
||||
// --- Broadcast to antag radios! ---
|
||||
|
||||
else if(data == DATA_ANTAG)
|
||||
for(var/antag_freq in ANTAG_FREQS)
|
||||
for(var/antag_freq in GLOB.antag_frequencies)
|
||||
var/datum/radio_frequency/antag_connection = SSradio.return_frequency(antag_freq)
|
||||
for (var/obj/item/radio/R in antag_connection.devices["[RADIO_CHAT]"])
|
||||
if(R.receive_range(antag_freq, level) > -1)
|
||||
@@ -597,7 +597,7 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages
|
||||
// --- Broadcast to antag radios! ---
|
||||
|
||||
else if(data == DATA_ANTAG)
|
||||
for(var/freq in ANTAG_FREQS)
|
||||
for(var/freq in GLOB.antag_frequencies)
|
||||
var/datum/radio_frequency/antag_connection = SSradio.return_frequency(freq)
|
||||
for (var/obj/item/radio/R in antag_connection.devices["[RADIO_CHAT]"])
|
||||
var/turf/position = get_turf(R)
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
if(istype(R))
|
||||
LAZYDISTINCTADD(forced_radios, R)
|
||||
|
||||
if(connection.frequency in CENT_FREQS) // if ert broadcast, just
|
||||
if(connection.frequency in GLOB.cent_frequencies) // if ert broadcast, just
|
||||
Broadcast_Message(signal.data["connection"], signal.data["mob"],
|
||||
signal.data["vmask"], signal.data["vmessage"],
|
||||
signal.data["radio"], signal.data["message"],
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
to_chat(H, span_infoplain(span_bold("It would be wise to speak to your master, and learn what their plans are for today.")))
|
||||
|
||||
spawn(1)
|
||||
technomancers.add_antagonist(H.mind, 0, 1, 0, 0, 0)
|
||||
GLOB.technomancers.add_antagonist(H.mind, 0, 1, 0, 0, 0)
|
||||
equip_antag(H)
|
||||
used = 1
|
||||
qdel(src)
|
||||
@@ -133,7 +133,7 @@
|
||||
R.key = C.key
|
||||
|
||||
spawn(1)
|
||||
mercs.add_antagonist(R.mind, FALSE, TRUE, FALSE, FALSE, FALSE)
|
||||
GLOB.mercs.add_antagonist(R.mind, FALSE, TRUE, FALSE, FALSE, FALSE)
|
||||
//add_antagonist(var/datum/mind/player, var/ignore_role, var/do_not_equip, var/move_to_spawn, var/do_not_announce, var/preserve_appearance)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
return -1
|
||||
if (!src.listening)
|
||||
return -1
|
||||
if(freq in ANTAG_FREQS)
|
||||
if(freq in GLOB.antag_frequencies)
|
||||
if(!(src.syndie))
|
||||
return -1//Prevents broadcast of messages over devices lacking the encryption
|
||||
|
||||
|
||||
@@ -560,10 +560,10 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
|
||||
var/pos_z = get_z(src)
|
||||
if(!(pos_z in level))
|
||||
return -1
|
||||
if(freq in ANTAG_FREQS)
|
||||
if(freq in GLOB.antag_frequencies)
|
||||
if(!(src.syndie))//Checks to see if it's allowed on that frequency, based on the encryption keys
|
||||
return -1
|
||||
if(freq in CENT_FREQS)
|
||||
if(freq in GLOB.cent_frequencies)
|
||||
if(!(src.centComm))//Checks to see if it's allowed on that frequency, based on the encryption keys
|
||||
return -1
|
||||
if (!on)
|
||||
|
||||
@@ -242,20 +242,20 @@
|
||||
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
|
||||
|
||||
if(affecting.open)
|
||||
balloon_alert(user, "the [affecting.name] is cut open!")
|
||||
user.balloon_alert(user, "the [affecting.name] is cut open!")
|
||||
return
|
||||
|
||||
if(affecting.is_salved())
|
||||
balloon_alert(user, "the wounds on [M]'s [affecting.name] have already been salved.")
|
||||
user.balloon_alert(user, "the wounds on [M]'s [affecting.name] have already been salved.")
|
||||
return 1
|
||||
else
|
||||
user.balloon_alert_visible("\the [user] starts salving wounds on [M]'s [affecting.name].", \
|
||||
"salving the wounds on [M]'s [affecting.name]." )
|
||||
if(!do_after(user, 1 SECOND, affecting))
|
||||
balloon_alert(user, "stand still to salve wounds.")
|
||||
user.balloon_alert(user, "stand still to salve wounds.")
|
||||
return 1
|
||||
if(affecting.is_salved()) // We do a second check after the delay, in case it was bandaged after the first check.
|
||||
balloon_alert(user, "[M]'s [affecting.name] have already been salved.")
|
||||
user.balloon_alert(user, "[M]'s [affecting.name] have already been salved.")
|
||||
return 1
|
||||
user.balloon_alert_visible("[user] salved wounds on [M]'s [affecting.name].", \
|
||||
"salved wounds on [M]'s [affecting.name]." )
|
||||
@@ -357,19 +357,19 @@
|
||||
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
|
||||
|
||||
if(affecting.open)
|
||||
balloon_alert(user, "the [affecting.name] is cut open!")
|
||||
user.balloon_alert(user, "the [affecting.name] is cut open!")
|
||||
|
||||
if(affecting.is_salved())
|
||||
balloon_alert(user, "[M]'s [affecting.name] has already been salved.")
|
||||
user.balloon_alert(user, "[M]'s [affecting.name] has already been salved.")
|
||||
return 1
|
||||
else
|
||||
user.balloon_alert_visible("\the [user] starts salving wounds on [M]'s [affecting.name].", \
|
||||
"salving the wounds on [M]'s [affecting.name]." )
|
||||
if(!do_after(user, 1 SECOND, affecting))
|
||||
balloon_alert(user, "stand still to salve wounds.")
|
||||
user.balloon_alert(user, "stand still to salve wounds.")
|
||||
return 1
|
||||
if(affecting.is_salved()) // We do a second check after the delay, in case it was bandaged after the first check.
|
||||
balloon_alert(user, "[M]'s [affecting.name] have already been salved.")
|
||||
user.balloon_alert(user, "[M]'s [affecting.name] have already been salved.")
|
||||
return 1
|
||||
user.balloon_alert_visible("[user] covers wounds on [M]'s [affecting.name] with regenerative membrane.", \
|
||||
"covered wounds on [M]'s [affecting.name] with regenerative membrane." )
|
||||
|
||||
@@ -29,23 +29,23 @@
|
||||
|
||||
//ERT
|
||||
|
||||
/obj/item/card/id/centcom/ERT
|
||||
/obj/item/card/id/centcom/ert
|
||||
name = "Emergency Responder ID"
|
||||
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-red", "stripe-red")
|
||||
|
||||
/obj/item/card/id/centcom/ERT/medic
|
||||
/obj/item/card/id/centcom/ert/medic
|
||||
name = "Emergency Medical Responder ID"
|
||||
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-medblu", "stripe-medblu")
|
||||
|
||||
/obj/item/card/id/centcom/ERT/commander
|
||||
/obj/item/card/id/centcom/ert/commander
|
||||
name = "Emergency Response Commander ID"
|
||||
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold", "stripe-gold")
|
||||
|
||||
/obj/item/card/id/centcom/ERT/engineer
|
||||
/obj/item/card/id/centcom/ert/engineer
|
||||
name = "Emergency Engineering Responder ID"
|
||||
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-orange", "stripe-orange")
|
||||
|
||||
/obj/item/card/id/centcom/ERT/janitor
|
||||
/obj/item/card/id/centcom/ert/janitor
|
||||
name = "Emergency Cleanup Responder ID"
|
||||
initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-purple", "stripe-purple")
|
||||
|
||||
|
||||
@@ -220,13 +220,13 @@
|
||||
. = ..()
|
||||
access |= get_all_station_access()
|
||||
|
||||
/obj/item/card/id/centcom/ERT
|
||||
/obj/item/card/id/centcom/ert
|
||||
name = "\improper " + JOB_EMERGENCY_RESPONSE_TEAM + "ID"
|
||||
assignment = JOB_EMERGENCY_RESPONSE_TEAM
|
||||
icon_state = "ert-id"
|
||||
rank = JOB_EMERGENCY_RESPONSE_TEAM
|
||||
|
||||
/obj/item/card/id/centcom/ERT/Initialize(mapload)
|
||||
/obj/item/card/id/centcom/ert/Initialize(mapload)
|
||||
. = ..()
|
||||
access |= get_all_station_access()
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
. = ..(user)
|
||||
if(.)
|
||||
return TRUE
|
||||
if((user.mind && !wizards.is_antagonist(user.mind)))
|
||||
if((user.mind && !GLOB.wizards.is_antagonist(user.mind)))
|
||||
to_chat(user, span_warning("You stare at the scroll but cannot make sense of the markings!"))
|
||||
return
|
||||
|
||||
|
||||
@@ -168,10 +168,10 @@
|
||||
overlays.Remove(blood_overlay)
|
||||
if(gurgled && clean_types & CLEAN_WASH)
|
||||
gurgled = FALSE
|
||||
cut_overlay(gurgled_overlays[gurgled_color])
|
||||
cut_overlay(GLOB.gurgled_overlays[gurgled_color])
|
||||
if(contaminated && clean_types & CLEAN_RAD) // Phoron and stuff, washing machine needed
|
||||
contaminated = FALSE
|
||||
cut_overlay(contamination_overlay)
|
||||
cut_overlay(GLOB.contamination_overlay)
|
||||
|
||||
/obj/vv_get_dropdown()
|
||||
. = ..()
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
if(choice && choice == "Yes")
|
||||
var/mob/living/carbon/human/vox/vox = new(get_turf(src),SPECIES_VOX)
|
||||
vox.gender = user.gender
|
||||
raiders.equip(vox)
|
||||
GLOB.raiders.equip(vox)
|
||||
if(user.mind)
|
||||
user.mind.transfer_to(vox)
|
||||
spawn(1)
|
||||
@@ -145,6 +145,6 @@
|
||||
newname = L.get_random_name()
|
||||
vox.real_name = newname
|
||||
vox.name = vox.real_name
|
||||
raiders.update_access(vox)
|
||||
GLOB.raiders.update_access(vox)
|
||||
qdel(user)
|
||||
..()
|
||||
|
||||
+4
-4
@@ -373,7 +373,7 @@ GLOBAL_LIST_INIT(wf_speak_vomva_sound, list ('sound/talksounds/wf/vomva_1.ogg',
|
||||
// var/list/species_sounds = list()
|
||||
|
||||
// Global list containing all of our sound options.
|
||||
var/list/species_sound_map = list(
|
||||
GLOBAL_LIST_INIT(species_sound_map, list(
|
||||
"Canine" = canine_sounds,
|
||||
"Cervine" = cervine_sounds,
|
||||
"Feline" = feline_sounds,
|
||||
@@ -392,7 +392,7 @@ var/list/species_sound_map = list(
|
||||
"Xeno" = xeno_sounds,
|
||||
"None" = no_sounds,
|
||||
"Unset" = use_default
|
||||
)
|
||||
))
|
||||
|
||||
/*
|
||||
* Call this for when you need a sound from an already-identified list - IE, "Canine". pick() cannot parse procs.
|
||||
@@ -406,9 +406,9 @@ var/list/species_sound_map = list(
|
||||
* get_species_sound(H.species.species_sounds_male)["emote"] // If we're male, and want an emote sound gendered correctly.
|
||||
*/
|
||||
/proc/get_species_sound(var/sounds)
|
||||
if(!islist(species_sound_map[sounds])) // We check here if this list actually has anything in it, or if we're about to return a null index
|
||||
if(!islist(GLOB.species_sound_map[sounds])) // We check here if this list actually has anything in it, or if we're about to return a null index
|
||||
return null // Shitty failsafe but better than rewriting an entire litany of procs rn when I'm low on time - Rykka // list('sound/voice/silence.ogg')
|
||||
return species_sound_map[sounds] // Otherwise, successfully return our sound
|
||||
return GLOB.species_sound_map[sounds] // Otherwise, successfully return our sound
|
||||
|
||||
/*
|
||||
* The following helper proc will select a species' default sounds - useful for if we're set to "Unset"
|
||||
|
||||
+17
-19
@@ -128,8 +128,8 @@ GLOBAL_VAR(restart_counter)
|
||||
/world/New()
|
||||
log_world("World loaded at [time_stamp()]!")
|
||||
|
||||
world_startup_time = world.timeofday
|
||||
rollover_safety_date = world.realtime - world.timeofday // 00:00 today (ish, since floating point error with world.realtime) of today
|
||||
GLOB.world_startup_time = world.timeofday
|
||||
GLOB.rollover_safety_date = world.realtime - world.timeofday // 00:00 today (ish, since floating point error with world.realtime) of today
|
||||
|
||||
InitTgs()
|
||||
|
||||
@@ -303,8 +303,8 @@ GLOBAL_VAR(restart_counter)
|
||||
world.log = file("[GLOB.log_directory]/dd.log") //not all runtimes trigger world/Error, so this is the only way to ensure we can see all of them.
|
||||
#endif
|
||||
|
||||
var/world_topic_spam_protect_ip = "0.0.0.0"
|
||||
var/world_topic_spam_protect_time = world.timeofday
|
||||
GLOBAL_VAR_INIT(world_topic_spam_protect_ip, "0.0.0.0")
|
||||
GLOBAL_VAR_INIT(world_topic_spam_protect_time, world.timeofday)
|
||||
|
||||
/world/Topic(T, addr, master, key)
|
||||
TGS_TOPIC
|
||||
@@ -462,14 +462,14 @@ var/world_topic_spam_protect_time = world.timeofday
|
||||
var/input[] = params2list(T)
|
||||
var/password = CONFIG_GET(string/comms_password)
|
||||
if(!password || input["key"] != password)
|
||||
if(world_topic_spam_protect_ip == addr && abs(world_topic_spam_protect_time - world.time) < 50)
|
||||
if(GLOB.world_topic_spam_protect_ip == addr && abs(GLOB.world_topic_spam_protect_time - world.time) < 50)
|
||||
|
||||
spawn(50)
|
||||
world_topic_spam_protect_time = world.time
|
||||
GLOB.world_topic_spam_protect_time = world.time
|
||||
return
|
||||
|
||||
world_topic_spam_protect_time = world.time
|
||||
world_topic_spam_protect_ip = addr
|
||||
GLOB.world_topic_spam_protect_time = world.time
|
||||
GLOB.world_topic_spam_protect_ip = addr
|
||||
|
||||
return "Bad Key"
|
||||
|
||||
@@ -691,8 +691,7 @@ var/world_topic_spam_protect_time = world.timeofday
|
||||
src.status = s
|
||||
|
||||
#define FAILED_DB_CONNECTION_CUTOFF 5
|
||||
var/failed_db_connections = 0
|
||||
var/failed_old_db_connections = 0
|
||||
GLOBAL_VAR_INIT(failed_db_connections, 0)
|
||||
|
||||
/hook/startup/proc/connectDB()
|
||||
if(!CONFIG_GET(flag/sql_enabled))
|
||||
@@ -706,7 +705,7 @@ var/failed_old_db_connections = 0
|
||||
/proc/setup_database_connection()
|
||||
if(!CONFIG_GET(flag/sql_enabled))
|
||||
return 0
|
||||
if(failed_db_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to conenct anymore.
|
||||
if(GLOB.failed_db_connections > FAILED_DB_CONNECTION_CUTOFF) //If it failed to establish a connection more than 5 times in a row, don't bother attempting to conenct anymore.
|
||||
return 0
|
||||
|
||||
if(!SSdbcore)
|
||||
@@ -721,16 +720,15 @@ var/failed_old_db_connections = 0
|
||||
SSdbcore.Connect("dbi:mysql:[db]:[address]:[port]","[user]","[pass]")
|
||||
. = SSdbcore.IsConnected()
|
||||
if ( . )
|
||||
failed_db_connections = 0 //If this connection succeeded, reset the failed connections counter.
|
||||
else
|
||||
failed_db_connections++ //If it failed, increase the failed connections counter.
|
||||
log_sql(SSdbcore.ErrorMsg())
|
||||
|
||||
return .
|
||||
GLOB.failed_db_connections = 0 //If this connection succeeded, reset the failed connections counter.
|
||||
return
|
||||
GLOB.failed_db_connections++ //If it failed, increase the failed connections counter.
|
||||
log_sql(SSdbcore.ErrorMsg())
|
||||
return
|
||||
|
||||
//This proc ensures that the connection to the feedback database (global variable dbcon) is established
|
||||
/proc/establish_db_connection()
|
||||
if(failed_db_connections > FAILED_DB_CONNECTION_CUTOFF)
|
||||
if(GLOB.failed_db_connections > FAILED_DB_CONNECTION_CUTOFF)
|
||||
return 0
|
||||
|
||||
if(!SSdbcore || !SSdbcore.IsConnected())
|
||||
@@ -741,7 +739,7 @@ var/failed_old_db_connections = 0
|
||||
// Cleans up DB connections and recreates them
|
||||
/proc/reset_database_connections()
|
||||
var/list/results = list("-- Resetting DB connections --")
|
||||
failed_db_connections = 0
|
||||
GLOB.failed_db_connections = 0
|
||||
|
||||
if(SSdbcore?.IsConnected())
|
||||
SSdbcore.Disconnect()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless
|
||||
var/list/admin_verbs_admin = list(
|
||||
GLOBAL_LIST_INIT(admin_verbs_admin, list(
|
||||
/client/proc/toggle_vantag_hud,
|
||||
/datum/admins/proc/set_tcrystals,
|
||||
/datum/admins/proc/add_tcrystals,
|
||||
@@ -87,17 +87,17 @@ var/list/admin_verbs_admin = list(
|
||||
/client/proc/toggle_spawning_with_recolour,
|
||||
/client/proc/start_vote,
|
||||
/client/proc/hide_motion_tracker_feedback
|
||||
)
|
||||
))
|
||||
|
||||
var/list/admin_verbs_sounds = list(
|
||||
GLOBAL_LIST_INIT(admin_verbs_sounds, list(
|
||||
/client/proc/play_local_sound,
|
||||
/client/proc/play_sound,
|
||||
/client/proc/play_server_sound,
|
||||
/client/proc/play_web_sound,
|
||||
/client/proc/play_z_sound
|
||||
)
|
||||
))
|
||||
|
||||
var/list/admin_verbs_fun = list(
|
||||
GLOBAL_LIST_INIT(admin_verbs_fun, list(
|
||||
/client/proc/object_talk,
|
||||
/datum/admins/proc/cmd_admin_dress,
|
||||
/client/proc/drop_bomb,
|
||||
@@ -119,10 +119,9 @@ var/list/admin_verbs_fun = list(
|
||||
/client/proc/getPlayerStatus,
|
||||
/client/proc/manage_event_triggers,
|
||||
/client/proc/fake_pdaconvos
|
||||
))
|
||||
|
||||
)
|
||||
|
||||
var/list/admin_verbs_spawn = list(
|
||||
GLOBAL_LIST_INIT(admin_verbs_spawn, list(
|
||||
/datum/admins/proc/spawn_fruit,
|
||||
/datum/admins/proc/spawn_custom_item,
|
||||
/datum/admins/proc/check_custom_items,
|
||||
@@ -143,9 +142,9 @@ var/list/admin_verbs_spawn = list(
|
||||
/client/proc/AdminCreateVirus,
|
||||
/client/proc/ReleaseVirus,
|
||||
/client/proc/spawn_reagent
|
||||
)
|
||||
))
|
||||
|
||||
var/list/admin_verbs_server = list(
|
||||
GLOBAL_LIST_INIT(admin_verbs_server, list(
|
||||
/datum/admins/proc/capture_map,
|
||||
/client/proc/Set_Holiday,
|
||||
/client/proc/ToRban,
|
||||
@@ -170,9 +169,9 @@ var/list/admin_verbs_server = list(
|
||||
/client/proc/panicbunker,
|
||||
/client/proc/paranoia_logging,
|
||||
/client/proc/ip_reputation
|
||||
)
|
||||
))
|
||||
|
||||
var/list/admin_verbs_debug = list(
|
||||
GLOBAL_LIST_INIT(admin_verbs_debug, list(
|
||||
/client/proc/cmd_admin_list_open_jobs,
|
||||
/client/proc/Debug2,
|
||||
/client/proc/kill_air,
|
||||
@@ -219,10 +218,10 @@ var/list/admin_verbs_debug = list(
|
||||
/datum/admins/proc/view_feedback,
|
||||
/client/proc/stop_sounds,
|
||||
/client/proc/spawn_reagent
|
||||
)
|
||||
))
|
||||
|
||||
//verbs which can be hidden - needs work
|
||||
var/list/admin_verbs_hideable = list(
|
||||
GLOBAL_LIST_INIT(admin_verbs_hideable, list(
|
||||
// /client/proc/deadchat,
|
||||
/datum/admins/proc/show_traitor_panel,
|
||||
/datum/admins/proc/toggleenter,
|
||||
@@ -285,8 +284,9 @@ var/list/admin_verbs_hideable = list(
|
||||
/datum/admins/proc/set_uplink,
|
||||
/datum/admins/proc/set_tcrystals,
|
||||
/client/proc/stop_sounds
|
||||
)
|
||||
var/list/admin_verbs_mod = list(
|
||||
))
|
||||
|
||||
GLOBAL_LIST_INIT(admin_verbs_mod, list(
|
||||
/client/proc/cmd_admin_pm_context, //right-click adminPM interface,
|
||||
/client/proc/cmd_admin_pm_panel, //admin-pm list,
|
||||
/datum/admins/proc/PlayerNotes,
|
||||
@@ -309,9 +309,9 @@ var/list/admin_verbs_mod = list(
|
||||
/datum/admins/proc/sendFax,
|
||||
/datum/admins/proc/view_persistent_data,
|
||||
/client/proc/start_vote
|
||||
)
|
||||
))
|
||||
|
||||
var/list/admin_verbs_event_manager = list(
|
||||
GLOBAL_LIST_INIT(admin_verbs_event_manager, list(
|
||||
/client/proc/toggle_vantag_hud,
|
||||
/client/proc/cmd_admin_pm_context,
|
||||
/client/proc/cmd_admin_pm_panel,
|
||||
@@ -440,4 +440,4 @@ var/list/admin_verbs_event_manager = list(
|
||||
/client/proc/hide_motion_tracker_feedback,
|
||||
/client/proc/modify_event_collector,
|
||||
/client/proc/induce_malfunction
|
||||
)
|
||||
))
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
var/rights = holder.rank_flags()
|
||||
if(rights & R_HOLDER)
|
||||
if(rights & R_BUILDMODE) add_verb(src, /client/proc/togglebuildmodeself)
|
||||
if(rights & R_ADMIN) add_verb(src, admin_verbs_admin)
|
||||
if(rights & R_FUN) add_verb(src, admin_verbs_fun)
|
||||
if(rights & R_SERVER) add_verb(src, admin_verbs_server)
|
||||
if(rights & R_DEBUG) add_verb(src, admin_verbs_debug)
|
||||
if(rights & R_SOUNDS) add_verb(src, admin_verbs_sounds)
|
||||
if(rights & R_SPAWN) add_verb(src, admin_verbs_spawn)
|
||||
if(rights & R_MOD) add_verb(src, admin_verbs_mod)
|
||||
if(rights & R_EVENT) add_verb(src, admin_verbs_event_manager)
|
||||
if(rights & R_ADMIN) add_verb(src, GLOB.admin_verbs_admin)
|
||||
if(rights & R_FUN) add_verb(src, GLOB.admin_verbs_fun)
|
||||
if(rights & R_SERVER) add_verb(src, GLOB.admin_verbs_server)
|
||||
if(rights & R_DEBUG) add_verb(src, GLOB.admin_verbs_debug)
|
||||
if(rights & R_SOUNDS) add_verb(src, GLOB.admin_verbs_sounds)
|
||||
if(rights & R_SPAWN) add_verb(src, GLOB.admin_verbs_spawn)
|
||||
if(rights & R_MOD) add_verb(src, GLOB.admin_verbs_mod)
|
||||
if(rights & R_EVENT) add_verb(src, GLOB.admin_verbs_event_manager)
|
||||
|
||||
// NEW ADMIN VERBS SYSTEM
|
||||
SSadmin_verbs.assosciate_admin(src)
|
||||
@@ -19,13 +19,13 @@
|
||||
// OLD ADMIN VERB SYSTEM
|
||||
remove_verb(src, list(
|
||||
/client/proc/togglebuildmodeself,
|
||||
admin_verbs_admin,
|
||||
admin_verbs_fun,
|
||||
admin_verbs_server,
|
||||
admin_verbs_debug,
|
||||
admin_verbs_sounds,
|
||||
admin_verbs_spawn,
|
||||
debug_verbs
|
||||
GLOB.admin_verbs_admin,
|
||||
GLOB.admin_verbs_fun,
|
||||
GLOB.admin_verbs_server,
|
||||
GLOB.admin_verbs_debug,
|
||||
GLOB.admin_verbs_sounds,
|
||||
GLOB.admin_verbs_spawn,
|
||||
GLOB.debug_verbs
|
||||
))
|
||||
|
||||
// NEW ADMIN VERBS SYSTEM
|
||||
@@ -35,7 +35,7 @@
|
||||
set name = "Adminverbs - Hide Most"
|
||||
set category = "Admin.Misc"
|
||||
|
||||
remove_verb(src, list(/client/proc/hide_most_verbs, admin_verbs_hideable))
|
||||
remove_verb(src, list(/client/proc/hide_most_verbs, GLOB.admin_verbs_hideable))
|
||||
add_verb(src, /client/proc/show_verbs)
|
||||
|
||||
to_chat(src, span_filter_system(span_interface("Most of your adminverbs have been hidden.")))
|
||||
|
||||
@@ -128,7 +128,7 @@ GLOBAL_LIST_BOILERPLATE(all_debugging_effects, /obj/effect/debugging)
|
||||
qdel(F)
|
||||
feedback_add_details("admin_verb","mIRD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
var/list/debug_verbs = list (
|
||||
GLOBAL_LIST_INIT(debug_verbs, list(
|
||||
/client/proc/do_not_use_these
|
||||
,/client/proc/camera_view
|
||||
,/client/proc/sec_camera_report
|
||||
@@ -159,7 +159,7 @@ var/list/debug_verbs = list (
|
||||
,/client/proc/atmos_toggle_debug
|
||||
,/client/proc/spawn_tanktransferbomb
|
||||
,/client/proc/take_picture
|
||||
)
|
||||
))
|
||||
|
||||
|
||||
/client/proc/enable_debug_verbs()
|
||||
@@ -168,7 +168,7 @@ var/list/debug_verbs = list (
|
||||
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
|
||||
add_verb(src, debug_verbs)
|
||||
add_verb(src, GLOB.debug_verbs)
|
||||
|
||||
feedback_add_details("admin_verb","mDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -178,7 +178,7 @@ var/list/debug_verbs = list (
|
||||
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
|
||||
remove_verb(src, debug_verbs)
|
||||
remove_verb(src, GLOB.debug_verbs)
|
||||
|
||||
feedback_add_details("admin_verb","hDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
@@ -154,10 +154,10 @@ ADMIN_VERB(secrets, R_HOLDER, "Secrets", "Abuse harder than you ever have before
|
||||
SSnightshift.update_nightshift(active = FALSE, announce = TRUE, forced = TRUE)
|
||||
|
||||
if("trigger_xenomorph_infestation")
|
||||
xenomorphs.attempt_random_spawn()
|
||||
GLOB.xenomorphs.attempt_random_spawn()
|
||||
|
||||
if("trigger_cortical_borer_infestation")
|
||||
borers.attempt_random_spawn()
|
||||
GLOB.borers.attempt_random_spawn()
|
||||
|
||||
if("jump_shuttle")
|
||||
var/shuttle_tag = tgui_input_list(holder, "Which shuttle do you want to jump?", "Shuttle Choice", SSshuttles.shuttles)
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
|
||||
switch(choice)
|
||||
if("Heavy Asset Protection")
|
||||
team = deathsquad
|
||||
team = GLOB.deathsquad
|
||||
if("Mercenaries")
|
||||
team = commandos
|
||||
team = GLOB.commandos
|
||||
else
|
||||
return
|
||||
|
||||
@@ -111,10 +111,10 @@ GLOBAL_VAR_INIT(silent_ert, 0)
|
||||
if(jobban_isbanned(usr, JOB_SYNDICATE) || jobban_isbanned(usr, JOB_EMERGENCY_RESPONSE_TEAM) || jobban_isbanned(usr, JOB_SECURITY_OFFICER))
|
||||
to_chat(usr, span_danger("You are jobbanned from the emergency reponse team!"))
|
||||
return
|
||||
if(ert.current_antagonists.len >= ert.hard_cap)
|
||||
if(GLOB.ert.current_antagonists.len >= GLOB.ert.hard_cap)
|
||||
to_chat(usr, "The emergency response team is already full!")
|
||||
return
|
||||
ert.create_default(usr)
|
||||
GLOB.ert.create_default(usr)
|
||||
else
|
||||
to_chat(usr, "You need to be an observer or new player to use this.")
|
||||
|
||||
|
||||
@@ -46,10 +46,10 @@ GLOBAL_VAR_INIT(can_call_traders, 1)
|
||||
if(!GLOB.send_beruang)
|
||||
to_chat(usr, "The Beruang is not currently heading to the station.")
|
||||
return
|
||||
if(traders.current_antagonists.len >= traders.hard_cap)
|
||||
if(GLOB.traders.current_antagonists.len >= GLOB.traders.hard_cap)
|
||||
to_chat(usr, "The number of trader slots is already full!")
|
||||
return
|
||||
traders.create_default(usr)
|
||||
GLOB.traders.create_default(usr)
|
||||
else
|
||||
to_chat(usr, "You need to be an observer or new player to use this.")
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
// Step 1, find out what we can see.
|
||||
/datum/ai_holder/proc/list_targets()
|
||||
. = ohearers(vision_range, holder)
|
||||
. -= dview_mob // Not the dview mob!
|
||||
. -= GLOB.dview_mob // Not the dview mob!
|
||||
|
||||
var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha, /obj/structure/blob))
|
||||
|
||||
|
||||
@@ -223,12 +223,12 @@
|
||||
if(tmr.timing)
|
||||
to_chat(usr, span_notice("Clock is ticking already."))
|
||||
else
|
||||
var/ntime = tgui_input_number(usr, "Enter desired time in seconds", "Time", "5", 1000, 0)
|
||||
if (ntime>0 && ntime<1000)
|
||||
var/ntime = tgui_input_number(usr, "Enter desired time in seconds", "Time", 5, 1000, 0)
|
||||
if (ntime > 0 && ntime < 1000)
|
||||
tmr.time = ntime
|
||||
name = initial(name) + "([tmr.time] secs)"
|
||||
to_chat(usr, span_notice("Timer set to [tmr.time] seconds."))
|
||||
else
|
||||
to_chat(usr, span_notice("Timer can't be [ntime<=0?"negative":"more than 1000 seconds"]."))
|
||||
to_chat(usr, span_notice("Timer can't be [ntime <= 0 ? "negative" : "more than 1000 seconds"]."))
|
||||
else
|
||||
to_chat(usr, span_notice("You cannot do this while [usr.stat?"unconscious/dead":"restrained"]."))
|
||||
to_chat(usr, span_notice("You cannot do this while [usr.stat ? "unconscious/dead" : "restrained"]."))
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
load_immediately = TRUE
|
||||
|
||||
/datum/asset/spritesheet_batched/chat/create_spritesheets()
|
||||
insert_all_icons("", text_tag_icons, prefix_with_dirs = FALSE) // OOC, LOOC ect icons
|
||||
insert_all_icons("", GLOB.text_tag_icons, prefix_with_dirs = FALSE) // OOC, LOOC ect icons
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
SEND_SOUND(user, S)
|
||||
|
||||
if("customize_species_sounds") // You shouldn't be able to see this option if you don't have the option to select a custom icon base, so we don't need to re-check for safety here.
|
||||
var/list/possible_species_sound_types = species_sound_map
|
||||
var/list/possible_species_sound_types = GLOB.species_sound_map
|
||||
var/choice = tgui_input_list(user, "Which set of sounds would you like to use for your character's species sounds? (Cough, Sneeze, Scream, Pain, Gasp, Death)", "Species Sounds", possible_species_sound_types)
|
||||
if(choice)
|
||||
pref.species_sound = choice
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
should_generate_icons = TRUE
|
||||
|
||||
/datum/preference/choiced/ui_style/init_possible_values()
|
||||
return assoc_to_keys(all_ui_styles)
|
||||
return assoc_to_keys(GLOB.all_ui_styles)
|
||||
|
||||
/datum/preference/choiced/ui_style/icon_for(value)
|
||||
var/icon/icon_file = all_ui_styles[value]
|
||||
var/icon/icon_file = GLOB.all_ui_styles[value]
|
||||
|
||||
var/icon/icon = icon(icon_file, "r_hand_inactive")
|
||||
icon.Crop(1, 1, ICON_SIZE_X * 2, ICON_SIZE_Y)
|
||||
@@ -17,7 +17,7 @@
|
||||
return icon
|
||||
|
||||
/datum/preference/choiced/ui_style/create_default_value()
|
||||
return all_ui_styles[1]
|
||||
return GLOB.all_ui_styles[1]
|
||||
|
||||
/datum/preference/choiced/ui_style/apply_to_client_updated(client/client, value)
|
||||
client.mob?.update_ui_style(UI_style_new = value)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
//Toggles for preferences, normal clients
|
||||
/client/verb/toggle_be_special(role in be_special_flags)
|
||||
/client/verb/toggle_be_special(role in GLOB.be_special_flags)
|
||||
set name = "Toggle Special Role Candidacy"
|
||||
set category = "Preferences.Character"
|
||||
set desc = "Toggles which special roles you would like to be a candidate for, during events."
|
||||
|
||||
var/role_flag = be_special_flags[role]
|
||||
var/role_flag = GLOB.be_special_flags[role]
|
||||
if(!role_flag) return
|
||||
|
||||
prefs.be_special ^= role_flag
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/proc/ui_style2icon(ui_style)
|
||||
if(ui_style in all_ui_styles)
|
||||
return all_ui_styles[ui_style]
|
||||
return all_ui_styles["White"]
|
||||
if(ui_style in GLOB.all_ui_styles)
|
||||
return GLOB.all_ui_styles[ui_style]
|
||||
return GLOB.all_ui_styles["White"]
|
||||
|
||||
|
||||
/client/verb/change_ui()
|
||||
@@ -17,7 +17,7 @@
|
||||
var/current_style = prefs.read_preference(/datum/preference/choiced/ui_style)
|
||||
var/current_alpha = prefs.read_preference(/datum/preference/numeric/ui_style_alpha)
|
||||
var/current_color = prefs.read_preference(/datum/preference/color/ui_style_color)
|
||||
var/UI_style_new = tgui_input_list(src, "Select a style. White is recommended for customization", "UI Style Choice", all_ui_styles, current_style)
|
||||
var/UI_style_new = tgui_input_list(src, "Select a style. White is recommended for customization", "UI Style Choice", GLOB.all_ui_styles, current_style)
|
||||
if(!UI_style_new) return
|
||||
|
||||
var/UI_style_alpha_new = tgui_input_number(src, "Select a new alpha (transparency) parameter for your UI, between 50 and 255", null, current_alpha, 255, 50)
|
||||
|
||||
@@ -741,7 +741,7 @@
|
||||
if(holding)
|
||||
add_overlay("[icon_state]_knife")
|
||||
if(contaminated)
|
||||
add_overlay(contamination_overlay)
|
||||
add_overlay(GLOB.contamination_overlay)
|
||||
if(gurgled) //VOREStation Edit Start
|
||||
wash(CLEAN_ALL)
|
||||
gurgle_contaminate() //VOREStation Edit End
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
// Customizable Foods //////////////////////////////////////////
|
||||
var/global/deepFriedEverything = 0
|
||||
var/global/deepFriedNutriment = 0
|
||||
var/global/foodNesting = 0
|
||||
var/global/recursiveFood = 0
|
||||
var/global/ingredientLimit = 20
|
||||
#define INGREDIENT_LIMIT 20
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/customizable
|
||||
@@ -27,7 +23,7 @@ var/global/ingredientLimit = 20
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/customizable/attackby(obj/item/I, mob/user)
|
||||
if(istype(I,/obj/item/reagent_containers/food/snacks))
|
||||
if((contents.len >= ingMax) || (contents.len >= ingredientLimit))
|
||||
if((contents.len >= ingMax) || (contents.len >= INGREDIENT_LIMIT))
|
||||
to_chat(user, span_warning("That's already looking pretty stuffed."))
|
||||
return
|
||||
|
||||
@@ -37,7 +33,7 @@ var/global/ingredientLimit = 20
|
||||
if(fullyCustom && SC.fullyCustom)
|
||||
to_chat(user, span_warning("You slap yourself on the back of the head for thinking that stacking plates is an interesting dish."))
|
||||
return
|
||||
if(!recursiveFood && istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
//to_chat(user, span_warning("[pick("As uniquely original as that idea is, you can't figure out how to perform it.","That would be a straining topological exercise.","This world just isn't ready for your cooking genius.","It's possible that you may have a problem.","It won't fit.","You don't think that would taste very good.","Quit goofin' around.")]"))
|
||||
to_chat(user, span_warning("As uniquely original as that idea is, you can't figure out how to perform it."))
|
||||
return
|
||||
@@ -184,7 +180,7 @@ var/global/ingredientLimit = 20
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/slice/bread/attackby(obj/item/I,mob/user,params)
|
||||
if(istype(I,/obj/item/reagent_containers/food/snacks))
|
||||
if(!recursiveFood && istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
to_chat(user, span_warning("Sorry, no recursive food."))
|
||||
return
|
||||
var/obj/F = new/obj/item/reagent_containers/food/snacks/customizable/sandwich(get_turf(src),I) //boy ain't this a mouthful
|
||||
@@ -216,7 +212,7 @@ var/global/ingredientLimit = 20
|
||||
qdel(src)
|
||||
|
||||
if(istype(I,/obj/item/reagent_containers/food/snacks))
|
||||
if(!recursiveFood && istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
to_chat(user, span_warning("Sorry, no recursive food."))
|
||||
return
|
||||
var/obj/F = new/obj/item/reagent_containers/food/snacks/customizable/burger(get_turf(src),I)
|
||||
@@ -227,7 +223,7 @@ var/global/ingredientLimit = 20
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/flatdough/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks))
|
||||
if(!recursiveFood && istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
to_chat(user, span_warning("Sorry, no recursive food."))
|
||||
return
|
||||
var/obj/F = new/obj/item/reagent_containers/food/snacks/customizable/pizza(get_turf(src),I)
|
||||
@@ -238,7 +234,7 @@ var/global/ingredientLimit = 20
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/spagetti/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks))
|
||||
if(!recursiveFood && istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
to_chat(user, span_warning("Sorry, no recursive food."))
|
||||
return
|
||||
var/obj/F = new/obj/item/reagent_containers/food/snacks/customizable/pasta(get_turf(src),I)
|
||||
@@ -269,7 +265,7 @@ var/global/ingredientLimit = 20
|
||||
|
||||
/obj/item/trash/bowl/attackby(obj/item/I, mob/user)
|
||||
if(istype(I,/obj/item/reagent_containers/food/snacks))
|
||||
if(!recursiveFood && istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
if(istype(I, /obj/item/reagent_containers/food/snacks/customizable))
|
||||
to_chat(user, span_warning("Sorry, no recursive food."))
|
||||
return
|
||||
var/obj/F = new/obj/item/reagent_containers/food/snacks/customizable/soup(get_turf(src),I)
|
||||
@@ -277,3 +273,5 @@ var/global/ingredientLimit = 20
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
#undef INGREDIENT_LIMIT
|
||||
|
||||
@@ -1296,11 +1296,6 @@
|
||||
M.show_message(span_warning("You lose sensation of your body."))
|
||||
return
|
||||
|
||||
|
||||
//egglaying
|
||||
var/eggs = 0
|
||||
|
||||
|
||||
/mob/living/proc/mobegglaying()
|
||||
set name = "Egg laying"
|
||||
set desc = "you can lay Eggs"
|
||||
|
||||
@@ -21,3 +21,4 @@
|
||||
var/list/custom_cold = list()
|
||||
var/can_climb = FALSE //Checked by turfs when using climb_wall(). Defined here for silicons and simple mobs
|
||||
var/climbing_delay = 1.5 //By default, mobs climb at quarter speed. To be overriden by specific simple mobs or species speed
|
||||
var/eggs = 0
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
/mob/living/simple_mob/animal/borer/Login()
|
||||
. = ..()
|
||||
if(antag && mind)
|
||||
borers.add_antagonist(mind)
|
||||
GLOB.borers.add_antagonist(mind)
|
||||
|
||||
/mob/living/simple_mob/animal/borer/Initialize(mapload)
|
||||
add_language("Cortical Link")
|
||||
@@ -284,7 +284,7 @@
|
||||
return
|
||||
|
||||
if(host.mind)
|
||||
borers.remove_antagonist(host.mind)
|
||||
GLOB.borers.remove_antagonist(host.mind)
|
||||
|
||||
if(!QDELETED(src))
|
||||
forceMove(get_turf(host.loc))
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
|
||||
//Update their traitor status.
|
||||
if(host.mind)
|
||||
borers.add_antagonist_mind(host.mind, 1, borers.faction_role_text, borers.faction_welcome)
|
||||
GLOB.borers.add_antagonist_mind(host.mind, 1, GLOB.borers.faction_role_text, GLOB.borers.faction_welcome)
|
||||
|
||||
/* This is likely not desired, and has some major issues with ghost behavior. Disabling for now
|
||||
// No brain organ, so the borer moves in and replaces it permanently.
|
||||
|
||||
@@ -63,14 +63,14 @@
|
||||
/mob/living/simple_mob/mechanical/viscerator/mercenary/IIsAlly(mob/living/L)
|
||||
. = ..()
|
||||
if(!. && isliving(L)) // Not friendly, see if they're a baddie first.
|
||||
if(L.mind && mercs.is_antagonist(L.mind))
|
||||
if(L.mind && GLOB.mercs.is_antagonist(L.mind))
|
||||
return TRUE
|
||||
|
||||
// Similar to above but for raiders.
|
||||
/mob/living/simple_mob/mechanical/viscerator/raider/IIsAlly(mob/living/L)
|
||||
. = ..()
|
||||
if(!. && isliving(L)) // Not friendly, see if they're a baddie first.
|
||||
if(L.mind && raiders.is_antagonist(L.mind))
|
||||
if(L.mind && GLOB.raiders.is_antagonist(L.mind))
|
||||
return TRUE
|
||||
|
||||
// Variant that is neutral, and thus on the station's side. It checks records.
|
||||
|
||||
+14
-14
@@ -1,4 +1,4 @@
|
||||
var/list/command_cartridges = list(
|
||||
GLOBAL_LIST_INIT(command_cartridges, list(
|
||||
/obj/item/cartridge/captain,
|
||||
/obj/item/cartridge/hop,
|
||||
/obj/item/cartridge/hos,
|
||||
@@ -7,42 +7,42 @@ var/list/command_cartridges = list(
|
||||
/obj/item/cartridge/cmo,
|
||||
/obj/item/cartridge/head,
|
||||
/obj/item/cartridge/lawyer // Internal Affaris,
|
||||
)
|
||||
))
|
||||
|
||||
var/list/security_cartridges = list(
|
||||
GLOBAL_LIST_INIT(security_cartridges, list(
|
||||
/obj/item/cartridge/security,
|
||||
/obj/item/cartridge/detective,
|
||||
/obj/item/cartridge/hos
|
||||
)
|
||||
))
|
||||
|
||||
var/list/engineering_cartridges = list(
|
||||
GLOBAL_LIST_INIT(engineering_cartridges, list(
|
||||
/obj/item/cartridge/engineering,
|
||||
/obj/item/cartridge/atmos,
|
||||
/obj/item/cartridge/ce
|
||||
)
|
||||
))
|
||||
|
||||
var/list/medical_cartridges = list(
|
||||
GLOBAL_LIST_INIT(medical_cartridges, list(
|
||||
/obj/item/cartridge/medical,
|
||||
/obj/item/cartridge/chemistry,
|
||||
/obj/item/cartridge/cmo
|
||||
)
|
||||
))
|
||||
|
||||
var/list/research_cartridges = list(
|
||||
GLOBAL_LIST_INIT(research_cartridges, list(
|
||||
/obj/item/cartridge/signal/science,
|
||||
/obj/item/cartridge/rd
|
||||
)
|
||||
))
|
||||
|
||||
var/list/cargo_cartridges = list(
|
||||
GLOBAL_LIST_INIT(cargo_cartridges, list(
|
||||
/obj/item/cartridge/quartermaster, // This also covers cargo-techs, apparently,
|
||||
/obj/item/cartridge/miner,
|
||||
/obj/item/cartridge/hop
|
||||
)
|
||||
))
|
||||
|
||||
var/list/civilian_cartridges = list(
|
||||
GLOBAL_LIST_INIT(civilian_cartridges, list(
|
||||
/obj/item/cartridge/janitor,
|
||||
/obj/item/cartridge/service,
|
||||
/obj/item/cartridge/hop
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/cartridge
|
||||
name = "generic cartridge"
|
||||
|
||||
@@ -175,43 +175,43 @@
|
||||
. = ..()
|
||||
owner = "Command Department"
|
||||
name = "Command Department (Relay)"
|
||||
cartridges_to_send_to = command_cartridges
|
||||
cartridges_to_send_to = GLOB.command_cartridges
|
||||
|
||||
/obj/item/pda/multicaster/security/Initialize(mapload)
|
||||
. = ..()
|
||||
owner = "Security Department"
|
||||
name = "Security Department (Relay)"
|
||||
cartridges_to_send_to = security_cartridges
|
||||
cartridges_to_send_to = GLOB.security_cartridges
|
||||
|
||||
/obj/item/pda/multicaster/engineering/Initialize(mapload)
|
||||
. = ..()
|
||||
owner = "Engineering Department"
|
||||
name = "Engineering Department (Relay)"
|
||||
cartridges_to_send_to = engineering_cartridges
|
||||
cartridges_to_send_to = GLOB.engineering_cartridges
|
||||
|
||||
/obj/item/pda/multicaster/medical/Initialize(mapload)
|
||||
. = ..()
|
||||
owner = "Medical Department"
|
||||
name = "Medical Department (Relay)"
|
||||
cartridges_to_send_to = medical_cartridges
|
||||
cartridges_to_send_to = GLOB.medical_cartridges
|
||||
|
||||
/obj/item/pda/multicaster/research/Initialize(mapload)
|
||||
. = ..()
|
||||
owner = "Research Department"
|
||||
name = "Research Department (Relay)"
|
||||
cartridges_to_send_to = research_cartridges
|
||||
cartridges_to_send_to = GLOB.research_cartridges
|
||||
|
||||
/obj/item/pda/multicaster/cargo/Initialize(mapload)
|
||||
. = ..()
|
||||
owner = "Cargo Department"
|
||||
name = "Cargo Department (Relay)"
|
||||
cartridges_to_send_to = cargo_cartridges
|
||||
cartridges_to_send_to = GLOB.cargo_cartridges
|
||||
|
||||
/obj/item/pda/multicaster/civilian/Initialize(mapload)
|
||||
. = ..()
|
||||
owner = "Civilian Services Department"
|
||||
name = "Civilian Services Department (Relay)"
|
||||
cartridges_to_send_to = civilian_cartridges
|
||||
cartridges_to_send_to = GLOB.civilian_cartridges
|
||||
|
||||
/obj/item/pda/clown/Crossed(atom/movable/AM as mob|obj) //Clown PDA is slippery.
|
||||
if(AM.is_incorporeal())
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
charge_meter = 0
|
||||
|
||||
/obj/item/gun/energy/staff/special_check(var/mob/user)
|
||||
if((user.mind && !wizards.is_antagonist(user.mind)))
|
||||
if((user.mind && !GLOB.wizards.is_antagonist(user.mind)))
|
||||
to_chat(user, span_warning("You focus your mind on \the [src], but nothing happens!"))
|
||||
return 0
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/maze_cell_count = 0
|
||||
GLOBAL_VAR_INIT(maze_cell_count, 0)
|
||||
|
||||
/datum/maze_cell
|
||||
var/name
|
||||
@@ -9,8 +9,8 @@ var/maze_cell_count = 0
|
||||
var/oy
|
||||
|
||||
/datum/maze_cell/New(var/nx,var/ny,var/nox,var/noy)
|
||||
maze_cell_count++
|
||||
uid = maze_cell_count
|
||||
GLOB.maze_cell_count++
|
||||
uid = GLOB.maze_cell_count
|
||||
name = "cell #[uid]"
|
||||
x = nx
|
||||
y = ny
|
||||
|
||||
@@ -339,7 +339,7 @@
|
||||
qdel(src)
|
||||
return
|
||||
else if(D.has_tool_quality(TOOL_WIRECUTTER))
|
||||
balloon_alert(user, "you cut a big hole in \the [src] with \the [D]. It's kinda useless now.")
|
||||
to_chat(user, span_notice("You cut a big hole in \the [src] with \the [D]. It's kinda useless as a bucket now."))
|
||||
user.put_in_hands(new /obj/item/clothing/head/helmet/bucket)
|
||||
user.drop_from_inventory(src)
|
||||
qdel(src)
|
||||
@@ -349,16 +349,16 @@
|
||||
if (M.use(1))
|
||||
var/obj/item/secbot_assembly/edCLN_assembly/B = new /obj/item/secbot_assembly/edCLN_assembly
|
||||
B.loc = get_turf(src)
|
||||
balloon_alert(user, "armed the robot frame.")
|
||||
to_chat(user, span_notice("You armed the robot frame."))
|
||||
if (user.get_inactive_hand()==src)
|
||||
user.remove_from_mob(src)
|
||||
user.put_in_inactive_hand(B)
|
||||
qdel(src)
|
||||
else
|
||||
balloon_alert(user, "one sheet of metal is needed to arm the robot frame.")
|
||||
to_chat(user, span_warning("You need one sheet of metal to arm the robot frame."))
|
||||
else if(istype(D, /obj/item/mop) || istype(D, /obj/item/soap) || istype(D, /obj/item/reagent_containers/glass/rag))
|
||||
if(reagents.total_volume < 1)
|
||||
balloon_alert(user, "\the [src] is empty!")
|
||||
to_chat(user, span_warning("\The [src] is empty!"))
|
||||
else
|
||||
reagents.trans_to_obj(D, 5)
|
||||
to_chat(user, span_notice("You wet \the [D] in \the [src]."))
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
#define KW_ERR 2 //Non-fatal error, keyword couldn't be handled properly. Ignore keyword but continue on.
|
||||
#define KW_WARN 3 //Warning
|
||||
|
||||
/*
|
||||
var/const/Class: n_Keyword
|
||||
var/const/Represents a special statement in the code triggered by a keyword.
|
||||
*/
|
||||
|
||||
/*
|
||||
Var: inline
|
||||
1 if the keyword is in an expression (e.g. the new keyword in many languages), 0 otherwise (such as the if and else keywords).
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
. = ..(user)
|
||||
if(.)
|
||||
return TRUE
|
||||
if((user.mind && !wizards.is_antagonist(user.mind)))
|
||||
if((user.mind && !GLOB.wizards.is_antagonist(user.mind)))
|
||||
to_chat(user, span_warning("You stare into the orb and see nothing but your own reflection."))
|
||||
return
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
return FALSE
|
||||
if(!user)
|
||||
return
|
||||
if((user.mind && !wizards.is_antagonist(user.mind)))
|
||||
if((user.mind && !GLOB.wizards.is_antagonist(user.mind)))
|
||||
to_chat(user, span_warning("You stare at the book but cannot make sense of the markings!"))
|
||||
return
|
||||
|
||||
|
||||
@@ -551,7 +551,7 @@
|
||||
changed_hook(APPEARANCECHANGER_CHANGED_RACE)
|
||||
return TRUE
|
||||
if("species_sound")
|
||||
var/list/possible_species_sound_types = species_sound_map
|
||||
var/list/possible_species_sound_types = GLOB.species_sound_map
|
||||
var/choice = tgui_input_list(ui.user, "Which set of sounds would you like to use? (Cough, Sneeze, Scream, Pain, Gasp, Death)", "Species Sounds", possible_species_sound_types)
|
||||
if(choice && can_change(owner, APPEARANCE_MISC))
|
||||
owner.species.species_sounds = choice
|
||||
|
||||
@@ -388,7 +388,7 @@
|
||||
to_chat(user, span_notice("Cannot establish a bluespace connection."))
|
||||
return
|
||||
|
||||
if(deathsquad.deployed)
|
||||
if(GLOB.deathsquad.deployed)
|
||||
to_chat(user, "[using_map.boss_short] will not allow the shuttle to be called. Consider all contracts terminated.")
|
||||
return
|
||||
|
||||
@@ -437,7 +437,7 @@
|
||||
to_chat(user, "[using_map.boss_short] does not currently have a shuttle available in your sector. Please try again later.")
|
||||
return
|
||||
|
||||
if(deathsquad.deployed == 1)
|
||||
if(GLOB.deathsquad.deployed == 1)
|
||||
to_chat(user, "[using_map.boss_short] will not allow the shuttle to be called. Consider all contracts terminated.")
|
||||
return
|
||||
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
* bunch of ChangeTurf() calls.
|
||||
*/
|
||||
|
||||
var/list/turbolifts = list()
|
||||
GLOBAL_LIST_EMPTY(turbolifts)
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
var/list/areas_to_use = list()
|
||||
|
||||
/obj/turbolift_map_holder/Destroy()
|
||||
turbolifts -= src
|
||||
GLOB.turbolifts -= src
|
||||
return ..()
|
||||
|
||||
/obj/turbolift_map_holder/Initialize(mapload)
|
||||
..()
|
||||
turbolifts += src
|
||||
GLOB.turbolifts += src
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
/obj/turbolift_map_holder/LateInitialize()
|
||||
|
||||
@@ -655,12 +655,12 @@
|
||||
owner.handle_belly_update() // This is run whenever a belly's contents are changed.
|
||||
var/obj/item/I = thing
|
||||
if(I.gurgled)
|
||||
I.cut_overlay(gurgled_overlays[I.gurgled_color]) //No double-overlay for worn items.
|
||||
I.add_overlay(gurgled_overlays[I.gurgled_color])
|
||||
I.cut_overlay(GLOB.gurgled_overlays[I.gurgled_color]) //No double-overlay for worn items.
|
||||
I.add_overlay(GLOB.gurgled_overlays[I.gurgled_color])
|
||||
if(I.d_mult < 1)
|
||||
if(I.d_stage_overlay)
|
||||
I.cut_overlay(I.d_stage_overlay)
|
||||
var/image/temp = new /image(gurgled_overlays[I.gurgled_color ? I.gurgled_color : "green"])
|
||||
var/image/temp = new /image(GLOB.gurgled_overlays[I.gurgled_color ? I.gurgled_color : "green"])
|
||||
temp.filters += filter(type = "alpha", icon = icon(I.icon, I.icon_state))
|
||||
I.d_stage_overlay = temp
|
||||
for(var/count in I.d_mult to 1 step 0.25)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/list/gurgled_overlays = list(
|
||||
GLOBAL_LIST_INIT(gurgled_overlays, list(
|
||||
"green" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "green"),
|
||||
"white" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "white"),
|
||||
"black" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "black"),
|
||||
@@ -14,7 +14,7 @@ var/list/gurgled_overlays = list(
|
||||
"cyan" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "cyan"),
|
||||
"beige" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "beige"),
|
||||
"pink" = image('icons/effects/sludgeoverlay_vr.dmi', icon_state = "pink")
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/proc/gurgle_contaminate(atom/movable/item_storage = null, contamination_flavor = "Generic", contamination_color = "green")
|
||||
if(!can_gurgle())
|
||||
@@ -27,7 +27,7 @@ var/list/gurgled_overlays = list(
|
||||
gurgled = TRUE
|
||||
gurgled_color = contamination_color
|
||||
if(!isbelly(src.loc)) //Moved non-worn overlay stuff to belly_obj_vr.dm Exited proc. No need to add overlays to things that won't make it out.
|
||||
add_overlay(gurgled_overlays[gurgled_color])
|
||||
add_overlay(GLOB.gurgled_overlays[gurgled_color])
|
||||
var/list/pickfrom = GLOB.contamination_flavors[contamination_flavor]
|
||||
var/gurgleflavor = pick(pickfrom)
|
||||
cleanname = src.name
|
||||
|
||||
@@ -15,11 +15,6 @@
|
||||
#define THERMITE_PATH /datum/reagent/thermite
|
||||
#define TOXIN_PATH /datum/reagent/toxin
|
||||
|
||||
var/list/water_reagents = list(HYDROGEN_PATH, WATER_PATH)
|
||||
var/list/acid_reagents = list(ACID_PATH, DIETHYLAMINE_PATH)
|
||||
var/list/volatile_reagents = list(PHORON_PATH, HYDROPHORON_PATH, THERMITE_PATH)
|
||||
var/list/toxic_reagents = list(TOXIN_PATH)
|
||||
|
||||
/atom/proc/is_anomalous()
|
||||
return (GetComponent(/datum/component/artifact_master))
|
||||
|
||||
@@ -64,6 +59,11 @@ var/list/toxic_reagents = list(TOXIN_PATH)
|
||||
|
||||
var/artifact_id
|
||||
|
||||
var/static/list/water_reagents = list(HYDROGEN_PATH, WATER_PATH)
|
||||
var/static/list/acid_reagents = list(ACID_PATH, DIETHYLAMINE_PATH)
|
||||
var/static/list/volatile_reagents = list(PHORON_PATH, HYDROPHORON_PATH, THERMITE_PATH)
|
||||
var/static/list/toxic_reagents = list(TOXIN_PATH)
|
||||
|
||||
/datum/component/artifact_master/New()
|
||||
. = ..()
|
||||
holder = parent
|
||||
@@ -354,25 +354,25 @@ var/list/toxic_reagents = list(TOXIN_PATH)
|
||||
if(my_effect.trigger == TRIGGER_WATER)
|
||||
for(var/datum/reagent/R in W.reagents.reagent_list) //What chems are in the beaker?
|
||||
var/T = R.type
|
||||
if(is_path_in_list(T,water_reagents)) //Check the reagent and activate!
|
||||
if(is_path_in_list(T, water_reagents)) //Check the reagent and activate!
|
||||
my_effect.ToggleActivate()
|
||||
|
||||
else if(my_effect.trigger == TRIGGER_ACID)
|
||||
for(var/datum/reagent/R in W.reagents.reagent_list)
|
||||
var/T = R.type
|
||||
if(is_path_in_list(T,acid_reagents))
|
||||
if(is_path_in_list(T, acid_reagents))
|
||||
my_effect.ToggleActivate()
|
||||
|
||||
else if(my_effect.trigger == TRIGGER_VOLATILE)
|
||||
for(var/datum/reagent/R in W.reagents.reagent_list)
|
||||
var/T = R.type
|
||||
if(is_path_in_list(T,volatile_reagents))
|
||||
if(is_path_in_list(T, volatile_reagents))
|
||||
my_effect.ToggleActivate()
|
||||
|
||||
else if(my_effect.trigger == TRIGGER_TOXIN)
|
||||
for(var/datum/reagent/R in W.reagents.reagent_list)
|
||||
var/T = R.type
|
||||
if(is_path_in_list(T,toxic_reagents))
|
||||
if(is_path_in_list(T, toxic_reagents))
|
||||
my_effect.ToggleActivate()
|
||||
//If we weren't splashed, let's see if we were hit by a energy item and if we're energy activation.
|
||||
else if(istype(W,/obj/item/melee/baton) && W:status ||\
|
||||
@@ -404,16 +404,16 @@ var/list/toxic_reagents = list(TOXIN_PATH)
|
||||
var/T = touching.type //What type of reagent is being splashed on it?
|
||||
|
||||
for(var/datum/artifact_effect/my_effect in my_effects)
|
||||
if(is_path_in_list(T,water_reagents))
|
||||
if(is_path_in_list(T, water_reagents))
|
||||
if(my_effect.trigger == TRIGGER_WATER)
|
||||
my_effect.ToggleActivate()
|
||||
else if(is_path_in_list(T,acid_reagents))
|
||||
else if(is_path_in_list(T, acid_reagents))
|
||||
if(my_effect.trigger == TRIGGER_ACID)
|
||||
my_effect.ToggleActivate()
|
||||
else if(is_path_in_list(T,volatile_reagents))
|
||||
else if(is_path_in_list(T, volatile_reagents))
|
||||
if(my_effect.trigger == TRIGGER_VOLATILE)
|
||||
my_effect.ToggleActivate()
|
||||
else if(is_path_in_list(T,toxic_reagents))
|
||||
else if(is_path_in_list(T, toxic_reagents))
|
||||
if(my_effect.trigger == TRIGGER_TOXIN)
|
||||
my_effect.ToggleActivate()
|
||||
|
||||
|
||||
@@ -7,24 +7,24 @@
|
||||
|
||||
if(!holder) return
|
||||
|
||||
if(!xenobio_controller || !xenobio_controller.gene_tag_masks)
|
||||
if(!GLOB.xenobio_controller || !GLOB.xenobio_controller.gene_tag_masks)
|
||||
to_chat(usr, "Gene masks not set.")
|
||||
return
|
||||
|
||||
for(var/mask in xenobio_controller.gene_tag_masks)
|
||||
to_chat(usr, "[mask]: [xenobio_controller.gene_tag_masks[mask]]")
|
||||
for(var/mask in GLOB.xenobio_controller.gene_tag_masks)
|
||||
to_chat(usr, "[mask]: [GLOB.xenobio_controller.gene_tag_masks[mask]]")
|
||||
|
||||
var/global/datum/controller/xenobio/xenobio_controller // Set in New().
|
||||
GLOBAL_DATUM(xenobio_controller, /datum/controller/xenobio)
|
||||
|
||||
/datum/controller/xenobio
|
||||
|
||||
var/list/gene_tag_masks = list() // Gene obfuscation for delicious trial and error goodness.
|
||||
|
||||
/datum/controller/xenobio/New()
|
||||
if(xenobio_controller && xenobio_controller != src)
|
||||
if(GLOB.xenobio_controller && GLOB.xenobio_controller != src)
|
||||
log_runtime("Rebuilding xenobio controller.")
|
||||
qdel(xenobio_controller)
|
||||
xenobio_controller = src
|
||||
qdel(GLOB.xenobio_controller)
|
||||
GLOB.xenobio_controller = src
|
||||
setup()
|
||||
|
||||
|
||||
|
||||
@@ -152,8 +152,8 @@
|
||||
var/list/data = list()
|
||||
|
||||
var/list/geneMasks[0]
|
||||
for(var/gene_tag in xenobio_controller.gene_tag_masks)
|
||||
geneMasks.Add(list(list("tag" = gene_tag, "mask" = xenobio_controller.gene_tag_masks[gene_tag])))
|
||||
for(var/gene_tag in GLOB.xenobio_controller.gene_tag_masks)
|
||||
geneMasks.Add(list(list("tag" = gene_tag, "mask" = GLOB.xenobio_controller.gene_tag_masks[gene_tag])))
|
||||
data["geneMasks"] = geneMasks
|
||||
|
||||
data["activity"] = active
|
||||
@@ -231,8 +231,8 @@
|
||||
|
||||
loaded_disk.genesource = "[genetics.source]"
|
||||
|
||||
loaded_disk.name += " ([xenobio_controller.gene_tag_masks[href_list["get_gene"]]], [genetics.source])"
|
||||
loaded_disk.desc += " The label reads \'gene [xenobio_controller.gene_tag_masks[href_list["get_gene"]]], sampled from [genetics.source]\'."
|
||||
loaded_disk.name += " ([GLOB.xenobio_controller.gene_tag_masks[href_list["get_gene"]]], [genetics.source])"
|
||||
loaded_disk.desc += " The label reads \'gene [GLOB.xenobio_controller.gene_tag_masks[href_list["get_gene"]]], sampled from [genetics.source]\'."
|
||||
eject_disk = 1
|
||||
|
||||
degradation += rand(20,60)
|
||||
@@ -306,7 +306,7 @@
|
||||
|
||||
for(var/datum/xeno/genes/X in loaded_disk.genes)
|
||||
if(data["locus"] != "") data["locus"] += ", "
|
||||
data["locus"] += "[xenobio_controller.gene_tag_masks[X.genetype]]"
|
||||
data["locus"] += "[GLOB.xenobio_controller.gene_tag_masks[X.genetype]]"
|
||||
|
||||
else
|
||||
data["disk"] = 0
|
||||
|
||||
@@ -1052,7 +1052,6 @@
|
||||
#include "code\game\antagonist\outsider\commando.dm"
|
||||
#include "code\game\antagonist\outsider\deathsquad.dm"
|
||||
#include "code\game\antagonist\outsider\ert.dm"
|
||||
#include "code\game\antagonist\outsider\ert_vr.dm"
|
||||
#include "code\game\antagonist\outsider\mercenary.dm"
|
||||
#include "code\game\antagonist\outsider\ninja.dm"
|
||||
#include "code\game\antagonist\outsider\raider.dm"
|
||||
|
||||
Reference in New Issue
Block a user