Makes the code pass dreamchecker (#13161)

* Initial Commit - Trying to add DC to Travis

* Forgot to chmod

* This took too long

* Farie Fixes

* Fixes new code

* Job factions are fucking smelly

* Loadouts work again

* Runtime fixes
This commit is contained in:
AffectedArc07
2020-04-11 15:59:16 -06:00
committed by GitHub
parent ded391b325
commit 928a8f0e04
121 changed files with 315 additions and 285 deletions
+1 -1
View File
@@ -261,7 +261,7 @@
/datum/pm_tracker
var/current_title = ""
var/open = FALSE
var/list/pms = list()
var/list/datum/pm_convo/pms = list()
var/show_archived = FALSE
var/window_id = "pms_window"
+1 -1
View File
@@ -85,7 +85,7 @@
var/output = "<b>Radio Report</b><hr>"
for(var/fq in SSradio.frequencies)
output += "<b>Freq: [fq]</b><br>"
var/list/datum/radio_frequency/fqs = SSradio.frequencies[fq]
var/datum/radio_frequency/fqs = SSradio.frequencies[fq]
if(!fqs)
output += "&nbsp;&nbsp;<b>ERROR</b><br>"
continue
+2 -1
View File
@@ -7,4 +7,5 @@ GLOBAL_LIST_INIT(open_logging_views, list())
if(!GLOB.open_logging_views[usr.client.ckey])
GLOB.open_logging_views[usr.client.ckey] = new /datum/log_viewer()
GLOB.open_logging_views[usr.client.ckey].show_ui(usr)
var/datum/log_viewer/LV = GLOB.open_logging_views[usr.client.ckey]
LV.show_ui(usr)
+1 -1
View File
@@ -543,7 +543,7 @@ GLOBAL_LIST_INIT(VVpixelmovement, list("step_x", "step_y", "step_size", "bound_h
var/var_value
if(param_var_name)
if(!param_var_name in O.vars)
if(!(param_var_name in O.vars))
to_chat(src, "A variable with this name ([param_var_name]) doesn't exist in this datum ([O])")
return
variable = param_var_name
+1 -1
View File
@@ -82,7 +82,7 @@
else if((H in GLOB.team_bravo) && (A in GLOB.team_bravo))
to_chat(A, "<span class='warning'>He's on your team!</span>")
return
else if(!A in GLOB.team_alpha && !A in GLOB.team_bravo)
else if(!(A in GLOB.team_alpha) && !(A in GLOB.team_bravo))
to_chat(A, "<span class='warning'>You're not part of the dodgeball game, sorry!</span>")
return
else
+1 -1
View File
@@ -533,7 +533,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
var/list/mobs = list()
var/list/ghosts = list()
var/list/sortmob = sortAtom(GLOB.mob_list) // get the mob list.
/var/any=0
var/any=0
for(var/mob/dead/observer/M in sortmob)
mobs.Add(M) //filter it where it's only ghosts
any = 1 //if no ghosts show up, any will just be 0
+1 -1
View File
@@ -58,7 +58,7 @@ GLOBAL_VAR(claw_game_html)
atom_say("WINNER!")
new /obj/item/toy/prizeball(get_turf(src))
playsound(src.loc, 'sound/arcade/win.ogg', 50, 1, extrarange = -3, falloff = 10)
addtimer(CALLBACK(src, .update_icon), 10)
addtimer(CALLBACK(src, .proc/update_icon), 10)
/obj/machinery/arcade/claw/start_play(mob/user as mob)
..()
+1 -1
View File
@@ -89,7 +89,7 @@
/obj/item/assembly/mousetrap/attack_hand(mob/living/user)
if(armed)
if((user.getBrainLoss() >= 60 || CLUMSY in user.mutations) && prob(50))
if((user.getBrainLoss() >= 60 || (CLUMSY in user.mutations)) && prob(50))
var/which_hand = "l_hand"
if(!user.hand)
which_hand = "r_hand"
@@ -22,7 +22,7 @@
field = json["field"]
Evaluate()
if(sensor && field && sensor in parent.sensor_information)
if(sensor && field && (sensor in parent.sensor_information))
return parent.sensor_information[sensor][field]
return 0
-84
View File
@@ -172,87 +172,3 @@ GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "config/away
new /obj/effect/landmark/ruin(central_turf, src)
return TRUE
return FALSE
/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = /area/space, list/potentialRuins)
if(!z_levels || !z_levels.len)
WARNING("No Z levels provided - Not generating ruins")
return
for(var/zl in z_levels)
var/turf/T = locate(1, 1, zl)
if(!T)
WARNING("Z level [zl] does not exist - Not generating ruins")
return
var/list/ruins = potentialRuins.Copy()
var/list/forced_ruins = list() //These go first on the z level associated (same random one by default)
var/list/ruins_availible = list() //we can try these in the current pass
var/forced_z //If set we won't pick z level and use this one instead.
//Set up the starting ruin list
for(var/key in ruins)
var/datum/map_template/ruin/R = ruins[key]
if(R.cost > budget) //Why would you do that
continue
if(R.always_place)
forced_ruins[R] = -1
if(R.unpickable)
continue
ruins_availible[R] = R.placement_weight
while(budget > 0 && (ruins_availible.len || forced_ruins.len))
var/datum/map_template/ruin/current_pick
var/forced = FALSE
if(forced_ruins.len) //We have something we need to load right now, so just pick it
for(var/ruin in forced_ruins)
current_pick = ruin
if(forced_ruins[ruin] > 0) //Load into designated z
forced_z = forced_ruins[ruin]
forced = TRUE
break
else //Otherwise just pick random one
current_pick = pickweight(ruins_availible)
var/placement_tries = PLACEMENT_TRIES
var/failed_to_place = TRUE
var/z_placed = 0
while(placement_tries > 0)
placement_tries--
z_placed = pick(z_levels)
if(!current_pick.try_to_place(forced_z ? forced_z : z_placed,whitelist))
continue
else
failed_to_place = FALSE
break
//That's done remove from priority even if it failed
if(forced)
//TODO : handle forced ruins with multiple variants
forced_ruins -= current_pick
forced = FALSE
if(failed_to_place)
for(var/datum/map_template/ruin/R in ruins_availible)
if(R.id == current_pick.id)
ruins_availible -= R
log_world("Failed to place [current_pick.name] ruin.")
else
budget -= current_pick.cost
if(!current_pick.allow_duplicates)
for(var/datum/map_template/ruin/R in ruins_availible)
if(R.id == current_pick.id)
ruins_availible -= R
if(current_pick.never_spawn_with)
for(var/blacklisted_type in current_pick.never_spawn_with)
for(var/possible_exclusion in ruins_availible)
if(istype(possible_exclusion,blacklisted_type))
ruins_availible -= possible_exclusion
forced_z = 0
//Update the availible list
for(var/datum/map_template/ruin/R in ruins_availible)
if(R.cost > budget)
ruins_availible -= R
log_world("Ruin loader finished with [budget] left to spend.")
+19 -10
View File
@@ -46,17 +46,21 @@
if(!M.id || M.id == "")
M.id = input(user, "Please select an ID for the button", "Buildmode", "")
if(!M.id || M.id == "")
goto line_jump
speed_execute()
return
if(P.id_tag == M.id && P.id_tag && P.id_tag != "")
P.id_tag = null
to_chat(user, "[P] unlinked.")
goto line_jump
speed_execute()
return
if(!M.normaldoorcontrol)
if(link_lines.len && alert(user, "Warning: This will disable links to connected pod doors. Continue?", "Buildmode", "Yes", "No") == "No")
goto line_jump
speed_execute()
return
M.normaldoorcontrol = 1
if(P.id_tag && alert(user, "Warning: This will unlink something else from the door. Continue?", "Buildmode", "Yes", "No") == "No")
goto line_jump
speed_execute()
return
P.id_tag = M.id
if(istype(link_obj, /obj/machinery/door_control) && istype(object, /obj/machinery/door/poddoor))
var/obj/machinery/door_control/M = link_obj
@@ -64,24 +68,29 @@
if(!M.id || M.id == "")
M.id = input(user, "Please select an ID for the button", "Buildmode", "")
if(!M.id || M.id == "")
goto line_jump
speed_execute()
return
if(P.id_tag == M.id && P.id_tag && P.id_tag != "")
P.id_tag = null
to_chat(user, "[P] unlinked.")
goto line_jump
speed_execute()
return
if(M.normaldoorcontrol)
if(link_lines.len && alert(user, "Warning: This will disable links to connected airlocks. Continue?", "Buildmode", "Yes", "No") == "No")
goto line_jump
speed_execute()
return
M.normaldoorcontrol = 0
if(!M.id || M.id == "")
M.id = input(user, "Please select an ID for the button", "Buildmode", "")
if(!M.id || M.id == "")
goto line_jump
speed_execute()
return
if(P.id_tag && P.id_tag != 1 && alert(user, "Warning: This will unlink something else from the door. Continue?", "Buildmode", "Yes", "No") == "No")
goto line_jump
speed_execute()
return
P.id_tag = M.id
line_jump // For the goto
/datum/buildmode_mode/link/proc/speed_execute() // For exiting out of hell
clear_lines()
if(istype(link_obj, /obj/machinery/door_control))
+1 -1
View File
@@ -427,7 +427,7 @@
/client/proc/is_connecting_from_localhost()
var/localhost_addresses = list("127.0.0.1", "::1") // Adresses
if(!isnull(address) && address in localhost_addresses)
if(!isnull(address) && (address in localhost_addresses))
return TRUE
return FALSE
+13 -13
View File
@@ -200,7 +200,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
var/unlock_content = 0
//Gear stuff
var/list/gear = list()
var/list/loadout_gear = list()
var/gear_tab = "General"
// Parallax
var/parallax = PARALLAX_HIGH
@@ -508,9 +508,9 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
if(TAB_GEAR)
var/total_cost = 0
var/list/type_blacklist = list()
if(gear && gear.len)
for(var/i = 1, i <= gear.len, i++)
var/datum/gear/G = GLOB.gear_datums[gear[i]]
if(loadout_gear && loadout_gear.len)
for(var/i = 1, i <= loadout_gear.len, i++)
var/datum/gear/G = GLOB.gear_datums[loadout_gear[i]]
if(G)
if(!G.subtype_cost_overlap)
if(G.subtype_path in type_blacklist)
@@ -543,7 +543,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
dat += "<tr><td colspan=4><hr></td></tr>"
for(var/gear_name in LC.gear)
var/datum/gear/G = LC.gear[gear_name]
var/ticked = (G.display_name in gear)
var/ticked = (G.display_name in loadout_gear)
if(G.donator_tier > user.client.donator_level)
dat += "<tr style='vertical-align:top;'><td width=15%><B>[G.display_name]</B></td>"
else
@@ -576,10 +576,10 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
/datum/preferences/proc/get_gear_metadata(var/datum/gear/G)
. = gear[G.display_name]
. = loadout_gear[G.display_name]
if(!.)
. = list()
gear[G.display_name] = .
loadout_gear[G.display_name] = .
/datum/preferences/proc/get_tweak_metadata(var/datum/gear/G, var/datum/gear_tweak/tweak)
var/list/metadata = get_gear_metadata(G)
@@ -721,7 +721,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
HTML += "</td></tr>"
for(var/i = 1, i < (limit - index), i += 1) // Finish the column so it is even
HTML += "<tr bgcolor='[lastJob.selection_color]'><td width='60%' align='right'>&nbsp</td><td>&nbsp</td></tr>"
HTML += "<tr bgcolor='[lastJob ? lastJob.selection_color : "#ffffff"]'><td width='60%' align='right'>&nbsp</td><td>&nbsp</td></tr>"
HTML += "</td'></tr></table>"
@@ -1162,15 +1162,15 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
if(href_list["preference"] == "gear")
if(href_list["toggle_gear"])
var/datum/gear/TG = GLOB.gear_datums[href_list["toggle_gear"]]
if(TG.display_name in gear)
gear -= TG.display_name
if(TG.display_name in loadout_gear)
loadout_gear -= TG.display_name
else
if(TG.donator_tier && user.client.donator_level < TG.donator_tier)
to_chat(user, "<span class='warning'>That gear is only available at a higher donation tier than you are on.</span>")
return
var/total_cost = 0
var/list/type_blacklist = list()
for(var/gear_name in gear)
for(var/gear_name in loadout_gear)
var/datum/gear/G = GLOB.gear_datums[gear_name]
if(istype(G))
if(!G.subtype_cost_overlap)
@@ -1180,7 +1180,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
total_cost += G.cost
if((total_cost + TG.cost) <= max_gear_slots)
gear += TG.display_name
loadout_gear += TG.display_name
else if(href_list["gear"] && href_list["tweak"])
var/datum/gear/gear = GLOB.gear_datums[href_list["gear"]]
@@ -1194,7 +1194,7 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
else if(href_list["select_category"])
gear_tab = href_list["select_category"]
else if(href_list["clear_loadout"])
gear.Cut()
loadout_gear.Cut()
ShowChoices(user)
return
@@ -259,7 +259,7 @@
//socks
socks = query.item[49]
body_accessory = query.item[50]
gear = params2list(query.item[51])
loadout_gear = params2list(query.item[51])
autohiss_mode = text2num(query.item[52])
//Sanitize
@@ -318,7 +318,7 @@
if(!player_alt_titles) player_alt_titles = new()
if(!organ_data) src.organ_data = list()
if(!rlimb_data) src.rlimb_data = list()
if(!gear) gear = list()
if(!loadout_gear) loadout_gear = list()
return 1
@@ -336,8 +336,8 @@
rlimblist = list2params(rlimb_data)
if(!isemptylist(player_alt_titles))
playertitlelist = list2params(player_alt_titles)
if(!isemptylist(gear))
gearlist = list2params(gear)
if(!isemptylist(loadout_gear))
gearlist = list2params(loadout_gear)
var/DBQuery/firstquery = GLOB.dbcon.NewQuery("SELECT slot FROM [format_table_name("characters")] WHERE ckey='[C.ckey]' ORDER BY slot")
firstquery.Execute()
@@ -493,7 +493,8 @@
/datum/preferences/proc/SetChangelog(client/C,hash)
lastchangelog=hash
if(GLOB.preferences_datums[C.ckey].toggles & UI_DARKMODE)
var/datum/preferences/P = GLOB.preferences_datums[C.ckey]
if(P.toggles & UI_DARKMODE)
winset(C, "rpane.changelog", "background-color=#40628a;font-color=#ffffff;font-style=none")
else
winset(C, "rpane.changelog", "background-color=none;font-style=none")
+1 -2
View File
@@ -335,7 +335,6 @@ BLIND // can't see anything
set category = "Object"
set src in usr
set_sensors(usr)
..()
//Head
/obj/item/clothing/head
@@ -739,7 +738,7 @@ BLIND // can't see anything
if(!usr.incapacitated())
if(copytext(item_color,-2) != "_d")
basecolor = item_color
if(basecolor + "_d_s" in icon_states('icons/mob/uniform.dmi'))
if((basecolor + "_d_s") in icon_states('icons/mob/uniform.dmi'))
item_color = item_color == "[basecolor]" ? "[basecolor]_d" : "[basecolor]"
usr.update_inv_w_uniform()
else
@@ -95,7 +95,7 @@
phaseanim.loc = to_turf
sleep(7)
if(holder)
if(user && user in holder.contents)
if(user && (user in holder.contents))
user.loc = to_turf
if(user.client)
if(camera)
@@ -23,7 +23,7 @@
to_chat(usr, "Your module is not installed in a hardsuit.")
return
module.holder.ui_interact(usr, nano_state = GLOB.contained_state)
module.holder.ui_interact(usr, state = GLOB.contained_state)
/obj/item/rig_module/ai_container
+1 -1
View File
@@ -958,7 +958,7 @@
if(linked_staff.faith >= 100) //if the linked staff is fully recharged, do nothing
return
if(!linked_staff in range(3, get_turf(src))) //staff won't charge at range (to prevent it from being handed off / stolen and used)
if(!(linked_staff in range(3, get_turf(src)))) //staff won't charge at range (to prevent it from being handed off / stolen and used)
if(prob(10)) //10% chance per process should avoid being too spammy, can tweak if it ends up still being too frequent.
to_chat(H, "<span class='warning'>Your staff is unable to charge at this range. Get closer!</span>")
return
@@ -35,7 +35,7 @@
/obj/item/reagent_containers/glass/rag/afterattack(atom/A as obj|turf|area, mob/user as mob,proximity)
if(!proximity) return
if(istype(A) && src in user)
if(istype(A) && (src in user))
user.visible_message("[user] starts to wipe down [A] with [src]!")
if(do_after(user, wipespeed, target = A))
user.visible_message("[user] finishes wiping off the [A]!")
+1 -1
View File
@@ -40,7 +40,7 @@ GLOBAL_VAR(current_date_string)
return 0
if(ACCESS_CENT_COMMANDER in held_card.access)
return 2
else if(ACCESS_HOP in held_card.access || ACCESS_CAPTAIN in held_card.access)
else if((ACCESS_HOP in held_card.access) || (ACCESS_CAPTAIN in held_card.access))
return 1
/obj/machinery/computer/account_database/proc/accounting_letterhead(report_name)
+1 -5
View File
@@ -150,7 +150,7 @@
var/obj/item/I = usr.get_active_hand()
if(istype(I, /obj/item/card))
var/obj/item/card/id/C = I
if(ACCESS_CENT_COMMANDER in C.access || ACCESS_HOP in C.access || ACCESS_CAPTAIN in C.access)
if((ACCESS_CENT_COMMANDER in C.access) || (ACCESS_HOP in C.access) || (ACCESS_CAPTAIN in C.access))
access_code = 0
to_chat(usr, "[bicon(src)]<span class='info'>Access code reset to 0.</span>")
else if(istype(I, /obj/item/card/emag))
@@ -190,8 +190,4 @@
playsound(src, 'sound/machines/chime.ogg', 50, 1)
visible_message("[bicon(src)] The [src] chimes.")
transaction_paid = 1
else
..()
//emag?
+11 -6
View File
@@ -80,18 +80,23 @@
if(!M.mind || !M.client || M.client.inactivity > 10 * 10 * 60) // longer than 10 minutes AFK counts them as inactive
continue
if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "engineering robot module")
active_with_role["Engineer"]++
if(istype(M, /mob/living/silicon/robot))
var/mob/living/silicon/robot/R = M
if(R.module && (R.module.name == "engineering robot module"))
active_with_role["Engineer"]++
if(R.module && (R.module.name == "medical robot module"))
active_with_role["Medical"]++
if(R.module && (R.module.name == "security robot module"))
active_with_role["Security"]++
if(M.mind.assigned_role in list("Chief Engineer", "Station Engineer"))
active_with_role["Engineer"]++
if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "medical robot module")
active_with_role["Medical"]++
if(M.mind.assigned_role in list("Chief Medical Officer", "Medical Doctor"))
active_with_role["Medical"]++
if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "security robot module")
active_with_role["Security"]++
if(M.mind.assigned_role in GLOB.security_positions)
active_with_role["Security"]++
+1 -1
View File
@@ -491,7 +491,7 @@
return message
/proc/generate_static_ion_law()
/var/list/players = list()
var/list/players = list()
for(var/mob/living/carbon/human/player in GLOB.player_list)
if( !player.mind || player.mind.assigned_role == player.mind.special_role || player.client.inactivity > MinutesToTicks(10))
continue
+1 -1
View File
@@ -19,7 +19,7 @@ GLOBAL_LIST_INIT(unused_trade_stations, list("sol"))
if(seclevel2num(get_security_level()) >= SEC_LEVEL_RED)
GLOB.event_announcement.Announce("A trading shuttle from Jupiter Station has been denied docking permission due to the heightened security alert aboard [station_name()].", "Trader Shuttle Docking Request Refused")
// if the docking request was refused, fire another major event in 60 seconds
var/list/datum/event_container/EC = SSevents.event_containers[EVENT_LEVEL_MAJOR]
var/datum/event_container/EC = SSevents.event_containers[EVENT_LEVEL_MAJOR]
EC.next_event_time = world.time + (60 * 10)
return
+1 -1
View File
@@ -732,7 +732,7 @@ GLOBAL_LIST_INIT(non_fakeattack_weapons, list(/obj/item/gun/projectile, /obj/ite
var/radio_messages = list("Xenos!","Singularity loose!","Comms down!","They are arming the nuke!","They butchered Ian!","H-help!","[pick("Cult", "Wizard", "Ling", "Ops", "Revenant", "Murderer", "Harm", "I hear flashing", "Help")] in [pick(GLOB.teleportlocs)][prob(50)?"!":"!!"]","Where's [target.name]?","Call the shuttle!","AI rogue!!")
var/list/mob/living/carbon/people = list()
var/list/mob/living/carbon/person = null
var/mob/living/carbon/person = null
for(var/mob/living/carbon/H in view(target))
if(H == target)
continue
@@ -88,7 +88,7 @@
bro.cell.use(chargeAmount)
to_chat(user, "<span class='notice'>Now synthesizing [trans] units of [refillName]...</span>")
addtimer(CALLBACK(reagents, /datum/reagents.proc/add_reagent, refill, trans), 300)
addtimer(CALLBACK(GLOBAL_PROC, .proc/__to_chat, user, "<span class='notice'>Cyborg [src] refilled.</span>"), 300)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, user, "<span class='notice'>Cyborg [src] refilled.</span>"), 300)
else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us.
if(!is_refillable())
+3 -3
View File
@@ -348,14 +348,14 @@
for(var/i in 1 to seed.growthstages)
if("[seed.icon_grow][i]" in states)
continue
log_runtime("[seed.name] ([seed.type]) lacks the [seed.icon_grow][i] icon!", src)
log_runtime("[seed.name] ([seed.type]) lacks the [seed.icon_grow][i] icon!")
if(!(seed.icon_dead in states))
log_runtime("[seed.name] ([seed.type]) lacks the [seed.icon_dead] icon!", src)
log_runtime("[seed.name] ([seed.type]) lacks the [seed.icon_dead] icon!")
if(seed.icon_harvest) // mushrooms have no grown sprites, same for items with no product
if(!(seed.icon_harvest in states))
log_runtime("[seed.name] ([seed.type]) lacks the [seed.icon_harvest] icon!", src)
log_runtime("[seed.name] ([seed.type]) lacks the [seed.icon_harvest] icon!")
/obj/item/seeds/proc/randomize_stats()
set_lifespan(rand(25, 60))
+1 -1
View File
@@ -14,7 +14,7 @@
var/points = 0 //How many points this ore gets you from the ore redemption machine
var/refined_type = null //What this ore defaults to being refined into
/obj/item/stack/ore/New()
/obj/item/stack/ore/New(loc, new_amount, merge = TRUE)
..()
pixel_x = rand(0, 16) - 8
pixel_y = rand(0, 8) - 8
@@ -117,7 +117,6 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
MA.blend_mode = COPY.blend_mode
MA.color = COPY.color
MA.dir = COPY.dir
MA.gender = COPY.gender
MA.icon = COPY.icon
MA.icon_state = COPY.icon_state
MA.layer = COPY.layer
@@ -131,7 +130,6 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
if(!isicon(MA.icon) && !LAZYLEN(MA.overlays)) // Gibbing/dusting/melting removes the icon before ghostize()ing the mob, so we need to account for that
MA.icon = initial(icon)
MA.icon_state = initial(icon_state)
MA.suffix = COPY.suffix
MA.underlays = COPY.underlays
. = MA
+1 -1
View File
@@ -90,7 +90,7 @@
if(speaker_name != speaker.real_name && speaker.real_name)
speaker_name = "[speaker.real_name] ([speaker_name])"
track = "([ghost_follow_link(speaker, ghost=src)]) "
if(client.prefs.toggles & CHAT_GHOSTEARS && speaker in view(src))
if(client.prefs.toggles & CHAT_GHOSTEARS && (speaker in view(src)))
message = "<b>[message]</b>"
if(!can_hear())
@@ -83,7 +83,7 @@
else //Maybe uses plasma in the future, although that wouldn't make any sense...
leaping = 1
update_icons()
throw_at(A, MAX_ALIEN_LEAP_DIST, 1, spin = 0, diagonals_first = 1, callback = CALLBACK(src, .leap_end))
throw_at(A, MAX_ALIEN_LEAP_DIST, 1, spin = 0, diagonals_first = 1, callback = CALLBACK(src, .proc/leap_end))
/mob/living/carbon/alien/humanoid/hunter/proc/leap_end()
leaping = 0
@@ -83,7 +83,7 @@
return Attach(AM)
return 0
/obj/item/clothing/mask/facehugger/throw_at(atom/target, range, speed)
/obj/item/clothing/mask/facehugger/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, force)
if(!..())
return
if(stat == CONSCIOUS)
@@ -111,7 +111,7 @@
var/obj/item/organ/external/O = get_organ(organ_name)
if(amount > 0)
O.receive_damage(amount, 0, sharp=is_sharp(damage_source), used_weapon=damage_source, list(), FALSE, updating_health)
O.receive_damage(amount, 0, sharp=is_sharp(damage_source), used_weapon=damage_source, forbidden_limbs = list(), ignore_resists=FALSE, updating_health=updating_health)
else
//if you don't want to heal robot organs, they you will have to check that yourself before using this proc.
O.heal_damage(-amount, 0, internal = 0, robo_repair = O.is_robotic(), updating_health = updating_health)
@@ -23,7 +23,7 @@ GLOBAL_DATUM_INIT(default_martial_art, /datum/martial_art, new())
var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack.
//Equipment slots
var/obj/item/w_uniform = null
var/obj/item/clothing/under/w_uniform = null
var/obj/item/shoes = null
var/obj/item/belt = null
var/obj/item/gloves = null
+2 -2
View File
@@ -897,7 +897,7 @@
// Not on the station or mining?
var/turf/temp_turf = get_turf(remoteview_target)
if(!temp_turf in config.contact_levels)
if(!(temp_turf in config.contact_levels))
to_chat(src, "<span class='alert'>Your psy-connection grows too faint to maintain!</span>")
isRemoteObserve = 0
@@ -1123,4 +1123,4 @@
// Need this in species.
//#undef HUMAN_MAX_OXYLOSS
//#undef HUMAN_CRIT_MAX_OXYLOSS
//#undef HUMAN_CRIT_MAX_OXYLOSS
@@ -347,7 +347,7 @@
if(H.LAssailant && ishuman(H.LAssailant)) //superheros still get the comical hit markers
var/mob/living/carbon/human/A = H.LAssailant
if(A.mind && A.mind in (SSticker.mode.superheroes || SSticker.mode.supervillains || SSticker.mode.greyshirts))
if(A.mind && (A.mind in (SSticker.mode.superheroes) || SSticker.mode.supervillains || SSticker.mode.greyshirts))
var/list/attack_bubble_recipients = list()
var/mob/living/user
for(var/mob/O in viewers(user, src))
@@ -963,7 +963,7 @@ It'll return null if the organ doesn't correspond, so include null checks when u
/datum/species/proc/spec_hitby(atom/movable/AM, mob/living/carbon/human/H)
/datum/species/proc/spec_attacked_by(obj/item/I, mob/living/user, obj/item/bodypart/affecting, intent, mob/living/carbon/human/H)
/datum/species/proc/spec_attacked_by(obj/item/I, mob/living/user, obj/item/organ/external/affecting, intent, mob/living/carbon/human/H)
/proc/get_random_species(species_name = FALSE) // Returns a random non black-listed or hazardous species, either as a string or datum
var/static/list/random_species = list()
@@ -474,7 +474,7 @@
if(P.is_reflectable)
H.visible_message("<span class='danger'>The [P.name] gets reflected by [H]'s glass skin!</span>", \
"<span class='userdanger'>The [P.name] gets reflected by [H]'s glass skin!</span>")
P.reflect_back(H)
return FALSE
@@ -534,7 +534,7 @@
if(world.time > last_teleport + teleport_cooldown && M != H && M.a_intent != INTENT_HELP)
reactive_teleport(H)
/datum/species/golem/bluespace/spec_attacked_by(obj/item/I, mob/living/user, obj/item/bodypart/affecting, intent, mob/living/carbon/human/H)
/datum/species/golem/bluespace/spec_attacked_by(obj/item/I, mob/living/user, obj/item/organ/external/affecting, intent, mob/living/carbon/human/H)
..()
if(world.time > last_teleport + teleport_cooldown && user != H)
reactive_teleport(H)
@@ -654,7 +654,7 @@
new/obj/item/grown/bananapeel/specialpeel(get_turf(H))
last_banana = world.time
/datum/species/golem/bananium/spec_attacked_by(obj/item/I, mob/living/user, obj/item/bodypart/affecting, intent, mob/living/carbon/human/H)
/datum/species/golem/bananium/spec_attacked_by(obj/item/I, mob/living/user, obj/item/organ/external/affecting, intent, mob/living/carbon/human/H)
..()
if(world.time > last_banana + banana_cooldown && user != H)
new/obj/item/grown/bananapeel/specialpeel(get_turf(H))
@@ -575,7 +575,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts)
bloodsies.color = w_uniform.blood_color
standing.overlays += bloodsies
if(w_uniform:accessories.len) //WE CHECKED THE TYPE ABOVE. THIS REALLY SHOULD BE FINE. // oh my god kys whoever made this if statement jfc :gun:
if(w_uniform.accessories.len) //WE CHECKED THE TYPE ABOVE. THIS REALLY SHOULD BE FINE. // oh my god kys whoever made this if statement jfc :gun:
for(var/obj/item/clothing/accessory/A in w_uniform:accessories)
var/tie_color = A.item_color
if(!tie_color)
-1
View File
@@ -9,7 +9,6 @@
prepare_data_huds()
/mob/living/proc/prepare_data_huds()
..()
med_hud_set_health()
med_hud_set_status()
@@ -48,7 +48,7 @@
if(radio)
radio.wires.CutWireIndex(RADIO_WIRE_TRANSMIT)
if(camera && "Robots" in camera.network)
if(camera && ("Robots" in camera.network))
camera.network.Add("Engineering")
//They are unable to be upgraded, so let's give them a bit of a better battery.
@@ -328,7 +328,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
if("Miner")
module = new /obj/item/robot_module/miner(src)
module.channels = list("Supply" = 1)
if(camera && "Robots" in camera.network)
if(camera && ("Robots" in camera.network))
camera.network.Add("Mining Outpost")
module_sprites["Basic"] = "Miner_old"
module_sprites["Advanced Droid"] = "droid-miner"
@@ -340,7 +340,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
if("Medical")
module = new /obj/item/robot_module/medical(src)
module.channels = list("Medical" = 1)
if(camera && "Robots" in camera.network)
if(camera && ("Robots" in camera.network))
camera.network.Add("Medical")
module_sprites["Basic"] = "Medbot"
module_sprites["Surgeon"] = "surgeon"
@@ -366,7 +366,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
if("Engineering")
module = new /obj/item/robot_module/engineering(src)
module.channels = list("Engineering" = 1)
if(camera && "Robots" in camera.network)
if(camera && ("Robots" in camera.network))
camera.network.Add("Engineering")
module_sprites["Basic"] = "Engineering"
module_sprites["Antique"] = "engineerrobot"
@@ -184,7 +184,7 @@
if(L == user)
continue
var/turf/T = get_turf(L.loc)
if(T && T in targets)
if(T && (T in targets))
L.EyeBlind(4)
return
@@ -374,11 +374,11 @@
return
return
if(parrot_interest && parrot_interest in view(src))
if(parrot_interest && (parrot_interest in view(src)))
parrot_state = PARROT_SWOOP | PARROT_STEAL
return
if(parrot_perch && parrot_perch in view(src))
if(parrot_perch && (parrot_perch in view(src)))
parrot_state = PARROT_SWOOP | PARROT_RETURN
return
@@ -261,7 +261,7 @@
Feedon(Food)
return ..()
/mob/living/simple_animal/slime/unEquip(obj/item/I)
/mob/living/simple_animal/slime/unEquip(obj/item/I, force)
return
/mob/living/simple_animal/slime/start_pulling(atom/movable/AM, state, force = move_force, supress_message = FALSE)
@@ -60,7 +60,6 @@ GLOBAL_VAR_INIT(totaltribbles, 0) //global variable so it updates for all trib
/mob/living/simple_animal/tribble/proc/procreate()
..()
if(GLOB.totaltribbles <= maxtribbles)
for(var/mob/living/simple_animal/tribble/F in src.loc)
if(!F || F == src)
+1 -1
View File
@@ -384,7 +384,7 @@
if(GLOB.summon_magic_triggered)
give_magic(character)
if(!thisjob.is_position_available() && thisjob in SSjobs.prioritized_jobs)
if(!thisjob.is_position_available() && (thisjob in SSjobs.prioritized_jobs))
SSjobs.prioritized_jobs -= thisjob
qdel(src)
+1 -1
View File
@@ -12,7 +12,7 @@
if(monitored_alarm_ids)
for(var/obj/machinery/alarm/alarm in GLOB.machines)
if(alarm.alarm_id && alarm.alarm_id in monitored_alarm_ids)
if(alarm.alarm_id && (alarm.alarm_id in monitored_alarm_ids))
monitored_alarms += alarm
// machines may not yet be ordered at this point
monitored_alarms = dd_sortedObjectList(monitored_alarms)
+1 -1
View File
@@ -37,7 +37,7 @@
*
* @return nothing
*/
/datum/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/nano_ui/master_ui = null, var/datum/topic_state/state = GLOB.default_state)
/datum/proc/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/nanoui/master_ui = null, var/datum/topic_state/state = GLOB.default_state)
return
/**
-2
View File
@@ -135,7 +135,6 @@
P.name = "paper - '[G.fields["name"]]'"
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
//before the records have been generated, so we do this inside the loop.
..()
/obj/structure/filingcabinet/security/attack_hand()
populate()
@@ -169,7 +168,6 @@
P.name = "paper - '[G.fields["name"]]'"
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
//before the records have been generated, so we do this inside the loop.
..()
/obj/structure/filingcabinet/medical/attack_hand()
populate()
+2 -7
View File
@@ -1,8 +1,3 @@
#define APC_WIRE_IDSCAN 1
#define APC_WIRE_MAIN_POWER1 2
#define APC_WIRE_MAIN_POWER2 3
#define APC_WIRE_AI_CONTROL 4
//update_state
#define UPSTATE_CELL_IN 1
#define UPSTATE_OPENED1 2
@@ -430,11 +425,11 @@
if(stat & (NOPOWER | BROKEN))
return
if(!second_pass) //The first time, we just cut overlays
addtimer(CALLBACK(src, .get_spooked, TRUE), 1)
addtimer(CALLBACK(src, /obj/machinery/power/apc/proc.get_spooked, TRUE), 1)
cut_overlays()
else
flick("apcemag", src) //Second time we cause the APC to update its icon, then add a timer to update icon later
addtimer(CALLBACK(src, .proc/update_icon, TRUE), 10)
addtimer(CALLBACK(src, /obj/machinery/power/apc/proc.update_icon, TRUE), 10)
//attack with an item - open/close cover, insert cell, or (un)lock interface
/obj/machinery/power/apc/attackby(obj/item/W, mob/living/user, params)
+1 -1
View File
@@ -40,7 +40,7 @@
chambered.newshot(params)
return
/obj/item/gun/magic/process_fire()
/obj/item/gun/magic/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override, bonus_spread = 0)
newshot()
return ..()
+1 -1
View File
@@ -106,7 +106,7 @@
target.adjustBruteLoss(-4)
target.adjustFireLoss(-4)
if(ishuman(target))
var/var/mob/living/carbon/human/H = target
var/mob/living/carbon/human/H = target
for(var/obj/item/organ/external/E in H.bodyparts)
if(prob(10))
E.mend_fracture()
@@ -178,7 +178,7 @@
/datum/reagent/consumable/drink/banana/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
if((ishuman(M) && COMIC in M.mutations) || issmall(M))
if((ishuman(M) && (COMIC in M.mutations)) || issmall(M))
update_flags |= M.adjustBruteLoss(-1, FALSE)
update_flags |= M.adjustFireLoss(-1, FALSE)
return ..() | update_flags
@@ -409,7 +409,7 @@
/datum/reagent/consumable/drink/bananahonk/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
if((ishuman(M) && COMIC in M.mutations) || issmall(M))
if((ishuman(M) && (COMIC in M.mutations)) || issmall(M))
update_flags |= M.adjustBruteLoss(-1, FALSE)
update_flags |= M.adjustFireLoss(-1, FALSE)
return ..() | update_flags
@@ -426,7 +426,7 @@
/datum/reagent/consumable/drink/silencer/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
if(ishuman(M) && M.job in list("Mime"))
if(ishuman(M) && (M.job in list("Mime")))
update_flags |= M.adjustBruteLoss(-1, FALSE)
update_flags |= M.adjustFireLoss(-1, FALSE)
return ..() | update_flags
@@ -376,7 +376,7 @@
/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
if(ishuman(M) && M.job in list("Security Officer", "Security Pod Pilot", "Detective", "Warden", "Head of Security", "Brig Physician", "Internal Affairs Agent", "Magistrate"))
if(ishuman(M) && (M.job in list("Security Officer", "Security Pod Pilot", "Detective", "Warden", "Head of Security", "Brig Physician", "Internal Affairs Agent", "Magistrate")))
update_flags |= M.adjustBruteLoss(-1, FALSE)
update_flags |= M.adjustFireLoss(-1, FALSE)
return ..() | update_flags
@@ -69,7 +69,7 @@
var/datum/reagents/R = reagent_list[reagent_list.len]
R.add_reagent(reagent, 30)
/obj/item/reagent_containers/borghypo/attack(mob/living/M, mob/user)
/obj/item/reagent_containers/borghypo/attack(mob/living/carbon/human/M, mob/user)
var/datum/reagents/R = reagent_list[mode]
if(!R.total_volume)
to_chat(user, "<span class='warning'>The injector is empty.</span>")
+2 -1
View File
@@ -98,7 +98,7 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE)
ert_role_prefs.Add(input_ranked_async(M, "Please order ERT roles from most to least preferred (20 seconds):", GLOB.active_team.get_slot_list()))
addtimer(CALLBACK(GLOBAL_PROC, .proc/dispatch_response_team, response_team_members, ert_gender_prefs, ert_role_prefs), 200)
/proc/dispatch_response_team(list/response_team_members, list/ert_gender_prefs, list/ert_role_prefs)
/proc/dispatch_response_team(list/response_team_members, list/datum/async_input/ert_gender_prefs, list/datum/async_input/ert_role_prefs)
var/spawn_index = 1
for(var/i = 1, i <= response_team_members.len, i++)
@@ -227,6 +227,7 @@ GLOBAL_VAR_INIT(ert_request_answered, FALSE)
return cyborg_unlock
/datum/response_team/proc/get_slot_list()
RETURN_TYPE(/list)
var/list/slots_available = list()
for(var/role in slots)
if(slots[role])
+2 -2
View File
@@ -24,7 +24,7 @@
layer = 3.9
infra_luminosity = 15
var/list/mob/pilot //There is only ever one pilot and he gets all the privledge
var/mob/pilot //There is only ever one pilot and he gets all the privledge
var/list/mob/passengers = list() //passengers can't do anything and are variable in number
var/max_passengers = 0
var/obj/item/storage/internal/cargo_hold
@@ -698,7 +698,7 @@
return 1
/obj/spacepod/MouseDrop_T(atom/A, mob/user)
if(user == pilot || user in passengers)
if(user == pilot || (user in passengers))
return
if(istype(A,/mob))
@@ -111,9 +111,9 @@
/obj/item/organ/internal/cyberimp/brain/anti_drop/proc/release_items()
active = FALSE
if(!l_hand_ignore && l_hand_obj in owner.contents)
if(!l_hand_ignore && (l_hand_obj in owner.contents))
l_hand_obj.flags ^= NODROP
if(!r_hand_ignore && r_hand_obj in owner.contents)
if(!r_hand_ignore && (r_hand_obj in owner.contents))
r_hand_obj.flags ^= NODROP
/obj/item/organ/internal/cyberimp/brain/anti_drop/remove(var/mob/living/carbon/M, special = 0)
+1 -1
View File
@@ -67,7 +67,7 @@
owner.SetEyeBlurry(0)
owner.SetEyeBlind(0)
/obj/item/organ/internal/eyes/robotize()
/obj/item/organ/internal/eyes/robotize(make_tough)
colourmatrix = null
..() //Make sure the organ's got the robotic status indicators before updating the client colour.
if(owner)
+1 -1
View File
@@ -248,7 +248,7 @@
return
damage = max(damage - amount, 0)
/obj/item/organ/proc/robotize() //Being used to make robutt hearts, etc
/obj/item/organ/proc/robotize(make_tough) //Being used to make robutt hearts, etc
status &= ~ORGAN_BROKEN
status &= ~ORGAN_SPLINTED
status |= ORGAN_ROBOT
@@ -404,7 +404,7 @@ Note that amputating the affected organ does in fact remove the infection from t
fracture()
/obj/item/organ/external/proc/check_for_internal_bleeding(damage)
if(owner && NO_BLOOD in owner.dna.species.species_traits)
if(owner && (NO_BLOOD in owner.dna.species.species_traits))
return
var/local_damage = brute_dam + damage
if(damage > 15 && local_damage > 30 && prob(damage) && !is_robotic())
@@ -589,12 +589,12 @@ Note that amputating the affected organ does in fact remove the infection from t
holder = owner
if(!holder)
return
if(holder.handcuffed && body_part in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT))
if(holder.handcuffed && (body_part in list(ARM_LEFT, ARM_RIGHT, HAND_LEFT, HAND_RIGHT)))
holder.visible_message(\
"\The [holder.handcuffed.name] falls off of [holder.name].",\
"\The [holder.handcuffed.name] falls off you.")
holder.unEquip(holder.handcuffed)
if(holder.legcuffed && body_part in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT))
if(holder.legcuffed && (body_part in list(FOOT_LEFT, FOOT_RIGHT, LEG_LEFT, LEG_RIGHT)))
holder.visible_message(\
"\The [holder.legcuffed.name] falls off of [holder.name].",\
"\The [holder.legcuffed.name] falls off you.")
@@ -141,7 +141,7 @@
// Brain is defined in brain_item.dm.
/obj/item/organ/internal/robotize()
/obj/item/organ/internal/robotize(make_tough)
if(!is_robotic())
var/list/states = icon_states('icons/obj/surgery.dmi') //Insensitive to specially-defined icon files for species like the Drask or whomever else. Everyone gets the same robotic heart.
if(slot == "heart" && ("[slot]-c-on" in states) && ("[slot]-c-off" in states)) //Give the robotic heart its robotic heart icons if they exist.
+1 -1
View File
@@ -152,7 +152,7 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby"))
message = lowertext(message)
playsound(get_turf(owner), 'sound/magic/invoke_general.ogg', 300, 1, 5)
var/mob/living/list/listeners = list()
var/list/mob/living/listeners = list()
for(var/mob/living/L in get_mobs_in_view(8, owner, TRUE))
if(L.can_hear() && !L.null_rod_check() && L != owner && L.stat != DEAD)
if(ishuman(L))
+1 -1
View File
@@ -13,7 +13,7 @@
toolspeed = 1
usesound = 'sound/items/deconstruct.ogg'
/obj/item/stack/ore/bluespace_crystal/New()
/obj/item/stack/ore/bluespace_crystal/New(loc, new_amount, merge = TRUE)
..()
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)