holy crap

This commit is contained in:
silicons
2020-10-03 21:48:10 -07:00
parent 3534555299
commit d1cd094d03
81 changed files with 162 additions and 422 deletions

View File

@@ -123,7 +123,7 @@ PathNode
/proc/PathWeightCompare(PathNode/a, PathNode/b)
return a.estimated_cost - b.estimated_cost
/proc/AStar(var/start, var/end, var/procpath/adjacent, var/procpath/dist, var/max_nodes, var/max_node_depth = 30, var/min_target_dist = 0, var/min_node_dist, var/id, var/datum/exclude)
/proc/AStar(var/start, var/end, var/adjacent, var/dist, var/max_nodes, var/max_node_depth = 30, var/min_target_dist = 0, var/min_node_dist, var/id, var/datum/exclude)
var/PriorityQueue/open = new /PriorityQueue(/proc/PathWeightCompare)
var/list/closed = list()
var/list/path

View File

@@ -36,7 +36,7 @@
///Can the mover object pass this atom, while heading for the target turf
/atom/proc/CanPass(atom/movable/mover, turf/target)
SHOULD_CALL_PARENT(TRUE)
SHOULD_BE_PURE(TRUE)
// SHOULD_BE_PURE(TRUE)
if(mover.movement_type & UNSTOPPABLE)
return TRUE
. = CanAllowThrough(mover, target)
@@ -47,5 +47,5 @@
/// Returns true or false to allow the mover to move through src
/atom/proc/CanAllowThrough(atom/movable/mover, turf/target)
SHOULD_CALL_PARENT(TRUE)
SHOULD_BE_PURE(TRUE)
// SHOULD_BE_PURE(TRUE)
return !density

View File

@@ -158,11 +158,3 @@
var/t = pick(spawnable)
new t(src.loc)
qdel(src)
/obj/effect/gateway/active/Crossed(var/atom/A)
if(!istype(A, /mob/living))
return
var/mob/living/M = A
to_chat(M, "<span class='danger'>Walking into \the [src] is probably a bad idea, you think.</span>")

View File

@@ -309,11 +309,11 @@ var/global/list/additional_antag_types = list()
if(ishuman(M))
if(M.stat != DEAD)
surviving_humans++
if(M.loc && M.loc.loc && M.loc.loc.type in escape_locations)
if(M.loc && M.loc.loc && (M.loc.loc.type in escape_locations))
escaped_humans++
if(M.stat != DEAD)
surviving_total++
if(M.loc && M.loc.loc && M.loc.loc.type in escape_locations)
if(M.loc && M.loc.loc && (M.loc.loc.type in escape_locations))
escaped_total++
if(M.loc && M.loc.loc && M.loc.loc.type == /area/shuttle/escape/centcom)

View File

@@ -30,7 +30,7 @@
"wizard's cloak" = "wizard_cloak"
)
// Some spell-specific variables go here, since spells themselves are temporary. Cores are more long term and more accessable than \
// Some spell-specific variables go here, since spells themselves are temporary. Cores are more long term and more accessable than
// mind datums. It may also allow creative players to try to pull off a 'soul jar' scenario.
var/list/summoned_mobs = list() // Maintained horribly with maintain_summon_list().
var/list/wards_in_use = list() // Wards don't count against the cap for other summons.

View File

@@ -1,7 +1,7 @@
/datum/technomancer/equipment/default_core
name = "Manipulation Core"
// desc = "The default core that you most likely already have. This is here in-case you change your mind after buying \
// another core, don't forget to refund the old core. This has a capacity of 10,000 units of energy, and recharges at a \
// desc = "The default core that you most likely already have. This is here in-case you change your mind after buying
// another core, don't forget to refund the old core. This has a capacity of 10,000 units of energy, and recharges at a
// rate of 50 units. It also reduces incoming instability from functions by 20%."
desc = "The default core that you most likely already have. This is here in-case you change your mind after buying \
another core, don't forget to refund the old core.<br>\

View File

@@ -111,6 +111,7 @@
/var/list/priv_station_access
/proc/get_all_station_access()
RETURN_TYPE(/list)
if(!priv_station_access)
priv_station_access = get_access_ids(ACCESS_TYPE_STATION)
@@ -118,6 +119,7 @@
/var/list/priv_centcom_access
/proc/get_all_centcom_access()
RETURN_TYPE(/list)
if(!priv_centcom_access)
priv_centcom_access = get_access_ids(ACCESS_TYPE_CENTCOM)
@@ -125,6 +127,7 @@
/var/list/priv_syndicate_access
/proc/get_all_syndicate_access()
RETURN_TYPE(/list)
if(!priv_syndicate_access)
priv_syndicate_access = get_access_ids(ACCESS_TYPE_SYNDICATE)
@@ -132,6 +135,7 @@
/var/list/priv_private_access
/proc/get_all_private_access()
RETURN_TYPE(/list)
if(!priv_private_access)
priv_private_access = get_access_ids(ACCESS_TYPE_PRIVATE)
@@ -139,6 +143,7 @@
/var/list/priv_region_access
/proc/get_region_accesses(var/code)
RETURN_TYPE(/list)
if(code == ACCESS_REGION_ALL)
return get_all_station_access()

View File

@@ -37,7 +37,8 @@
return 1
get_access()
return get_all_accesses().Copy()
var/list/all = get_all_accesses()
return all.Copy()
/*/datum/job/centcom_visitor //For Pleasure // You mean for admin abuse... -Ace
title = "CentCom Visitor"

View File

@@ -211,7 +211,8 @@ Barricades
icon_state = "barrier[locked]"
/obj/machinery/deployable/barrier/CanAllowThrough(atom/movable/mover, turf/target)//So bullets will fly over and stuff.
if(istype(mover) && mover.checkpass(PASSTABLE))
. = ..()
if(mover.checkpass(PASSTABLE))
return TRUE
return FALSE

View File

@@ -88,6 +88,7 @@
addtimer(CALLBACK(src, .proc/close), check_access(null)? 50 : 20)
/obj/machinery/door/window/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
if(istype(mover) && mover.checkpass(PASSGLASS))
return TRUE
if(get_dir(mover, loc) == turn(dir, 180)) //Make sure looking at appropriate border

View File

@@ -239,8 +239,6 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
if(prob(50))
isbroken=1
update_icon()
return
return
/obj/machinery/newscaster/attack_ai(mob/user as mob)
return attack_hand(user)

View File

@@ -568,7 +568,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
var/list/memory = list() // stored memory
var/rawcode = "" // the code to compile (raw text)
var/datum/TCS_Compiler/Compiler // the compiler that compiles and runs the code
var/autoruncode = 0 // 1 if the code is set to run every time a signal is picked up
var/encryption = "null" // encryption key: ie "password"
@@ -579,8 +578,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
/obj/machinery/telecomms/server/New()
..()
Compiler = new()
Compiler.Holder = src
server_radio = new()
/obj/machinery/telecomms/server/Initialize()
@@ -667,9 +664,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
var/identifier = num2text( rand(-1000,1000) + world.time )
log.name = "data packet ([md5(identifier)])"
if(Compiler && autoruncode)
Compiler.Run(signal) // execute the code
var/can_send = relay_information(signal, "/obj/machinery/telecomms/hub")
if(!can_send)
relay_information(signal, "/obj/machinery/telecomms/broadcaster")
@@ -680,10 +674,6 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
if(istext(t))
rawcode = t
/obj/machinery/telecomms/server/proc/compile()
if(Compiler)
return Compiler.Compile(rawcode)
/obj/machinery/telecomms/server/proc/update_logs()
// start deleting the very first log entry
if(logs >= 400)

View File

@@ -1,216 +0,0 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
/obj/machinery/computer/telecomms/traffic
name = "Telecommunications Traffic Control"
icon_screen = "generic"
var/screen = 0 // the screen number:
var/list/servers = list() // the servers located by the computer
var/mob/editingcode
var/mob/lasteditor
var/list/viewingcode = list()
var/obj/machinery/telecomms/server/SelectedServer
circuit = /obj/item/circuitboard/comm_traffic
var/network = "NULL" // the network to probe
var/temp = "" // temporary feedback messages
var/storedcode = "" // code stored
proc/update_ide()
// loop if there's someone manning the keyboard
while(editingcode)
if(!editingcode.client)
editingcode = null
break
// For the typer, the input is enabled. Buffer the typed text
if(editingcode)
storedcode = "[winget(editingcode, "tcscode", "text")]"
if(editingcode) // double if's to work around a runtime error
winset(editingcode, "tcscode", "is-disabled=false")
// If the player's not manning the keyboard anymore, adjust everything
if( (!(editingcode in range(1, src)) && !issilicon(editingcode)) || (editingcode.machine != src && !issilicon(editingcode)))
if(editingcode)
winshow(editingcode, "Telecomms IDE", 0) // hide the window!
editingcode = null
break
// For other people viewing the typer type code, the input is disabled and they can only view the code
// (this is put in place so that there's not any magical shenanigans with 50 people inputting different code all at once)
if(length(viewingcode))
// This piece of code is very important - it escapes quotation marks so string aren't cut off by the input element
var/showcode = replacetext(storedcode, "\\\"", "\\\\\"")
showcode = replacetext(storedcode, "\"", "\\\"")
for(var/mob/M in viewingcode)
if( (M.machine == src && M in view(1, src) ) || issilicon(M))
winset(M, "tcscode", "is-disabled=true")
winset(M, "tcscode", "text=\"[showcode]\"")
else
viewingcode.Remove(M)
winshow(M, "Telecomms IDE", 0) // hide the window!
sleep(5)
if(length(viewingcode) > 0)
editingcode = pick(viewingcode)
viewingcode.Remove(editingcode)
update_ide()
req_access = list(access_tcomsat)
attack_hand(mob/user as mob)
if(stat & (BROKEN|NOPOWER))
return
user.set_machine(src)
var/dat = "<TITLE>Telecommunication Traffic Control</TITLE><center><b>Telecommunications Traffic Control</b></center>"
switch(screen)
// --- Main Menu ---
if(0)
dat += "<br>[temp]<br>"
dat += "<br>Current Network: <a href='?src=\ref[src];network=1'>[network]</a><br>"
if(servers.len)
dat += "<br>Detected Telecommunication Servers:<ul>"
for(var/obj/machinery/telecomms/T in servers)
dat += "<li><a href='?src=\ref[src];viewserver=[T.id]'>\ref[T] [T.name]</a> ([T.id])</li>"
dat += "</ul>"
dat += "<br><a href='?src=\ref[src];operation=release'>\[Flush Buffer\]</a>"
else
dat += "<br>No servers detected. Scan for servers: <a href='?src=\ref[src];operation=scan'>\[Scan\]</a>"
// --- Viewing Server ---
if(1)
dat += "<br>[temp]<br>"
dat += "<center><a href='?src=\ref[src];operation=mainmenu'>\[Main Menu\]</a> <a href='?src=\ref[src];operation=refresh'>\[Refresh\]</a></center>"
dat += "<br>Current Network: [network]"
dat += "<br>Selected Server: [SelectedServer.id]<br><br>"
dat += "<br><a href='?src=\ref[src];operation=editcode'>\[Edit Code\]</a>"
dat += "<br>Signal Execution: "
if(SelectedServer.autoruncode)
dat += "<a href='?src=\ref[src];operation=togglerun'>ALWAYS</a>"
else
dat += "<a href='?src=\ref[src];operation=togglerun'>NEVER</a>"
user << browse(dat, "window=traffic_control;size=575x400")
onclose(user, "server_control")
temp = ""
return
Topic(href, href_list)
if(..())
return
add_fingerprint(usr)
usr.set_machine(src)
if(!src.allowed(usr) && !emagged)
to_chat(usr, "<span class='warning'>ACCESS DENIED.</span>")
return
if(href_list["viewserver"])
screen = 1
for(var/obj/machinery/telecomms/T in servers)
if(T.id == href_list["viewserver"])
SelectedServer = T
break
if(href_list["operation"])
switch(href_list["operation"])
if("release")
servers = list()
screen = 0
if("mainmenu")
screen = 0
if("scan")
if(servers.len > 0)
temp = "<font color = #D70B00>- FAILED: CANNOT PROBE WHEN BUFFER FULL -</font>"
else
for(var/obj/machinery/telecomms/server/T in range(25, src))
if(T.network == network)
servers.Add(T)
if(!servers.len)
temp = "<font color = #D70B00>- FAILED: UNABLE TO LOCATE SERVERS IN \[[network]\] -</font>"
else
temp = "<font color = #336699>- [servers.len] SERVERS PROBED & BUFFERED -</font>"
screen = 0
if("editcode")
if(editingcode == usr) return
if(usr in viewingcode) return
if(!editingcode)
lasteditor = usr
editingcode = usr
winshow(editingcode, "Telecomms IDE", 1) // show the IDE
winset(editingcode, "tcscode", "is-disabled=false")
winset(editingcode, "tcscode", "text=\"\"")
var/showcode = replacetext(storedcode, "\\\"", "\\\\\"")
showcode = replacetext(storedcode, "\"", "\\\"")
winset(editingcode, "tcscode", "text=\"[showcode]\"")
spawn()
update_ide()
else
viewingcode.Add(usr)
winshow(usr, "Telecomms IDE", 1) // show the IDE
winset(usr, "tcscode", "is-disabled=true")
winset(editingcode, "tcscode", "text=\"\"")
var/showcode = replacetext(storedcode, "\"", "\\\"")
winset(usr, "tcscode", "text=\"[showcode]\"")
if("togglerun")
SelectedServer.autoruncode = !(SelectedServer.autoruncode)
if(href_list["network"])
var/newnet = input(usr, "Which network do you want to view?", "Comm Monitor", network) as null|text
if(newnet && ((usr in range(1, src) || issilicon(usr))))
if(length(newnet) > 15)
temp = "<font color = #D70B00>- FAILED: NETWORK TAG STRING TOO LENGHTLY -</font>"
else
network = newnet
screen = 0
servers = list()
temp = "<font color = #336699>- NEW NETWORK TAG SET IN ADDRESS \[[network]\] -</font>"
updateUsrDialog()
return
/obj/machinery/computer/telecomms/traffic/emag_act(var/remaining_charges, var/mob/user)
if(!emagged)
playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
emagged = 1
to_chat(user, "<span class='notice'>You you disable the security protocols</span>")
src.updateUsrDialog()
return 1

View File

@@ -112,7 +112,7 @@
var/obj/item/organ/O = occupant.internal_organs_by_name[O_BRAIN]
O.take_damage(severity * 2)
visible_message("<span class='danger'>\The [src]'s internal lighting flashes rapidly, before the hatch swings open with a cloud of smoke.</span>")
smoke.set_up(n = severity, 0, src)
smoke.set_up(severity, 0, src)
smoke.start("#202020")
go_out()

View File

@@ -755,7 +755,6 @@
E.status &= ~ORGAN_BROKEN
/obj/item/mecha_parts/mecha_equipment/crisis_drone/proc/toggle_drone()
..()
if(chassis)
enabled = !enabled
if(enabled)

View File

@@ -1016,7 +1016,6 @@
return
/obj/item/mecha_parts/mecha_equipment/combat_shield/proc/toggle_shield()
..()
if(chassis)
my_shield.attack_self(chassis.occupant)
if(my_shield.active)

View File

@@ -143,6 +143,7 @@
return
/obj/effect/alien/resin/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
if(istype(mover) && mover.checkpass(PASSGLASS))
return !opacity
return !density

View File

@@ -29,6 +29,7 @@
return ..()
/obj/effect/decal/cleanable/chemcoating/Crossed(AM as mob|obj)
. = ..()
Bumped(AM)
/obj/effect/decal/cleanable/chemcoating/update_icon()

View File

@@ -74,6 +74,7 @@
qdel(src)
/obj/effect/effect/foam/Crossed(var/atom/movable/AM)
. = ..()
if(metal)
return
if(istype(AM, /mob/living))

View File

@@ -66,6 +66,7 @@ var/global/list/image/splatter_cache=list()
desc = initial(desc)
/obj/effect/decal/cleanable/blood/Crossed(mob/living/carbon/human/perp)
. = ..()
if (!istype(perp))
return
if(amount < 1)

View File

@@ -36,6 +36,7 @@
..()
/obj/effect/mine/Crossed(AM as mob|obj)
. = ..()
Bumped(AM)
/obj/effect/mine/Bumped(mob/M as mob|obj)

View File

@@ -15,16 +15,11 @@ GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal)
/obj/effect/portal/Bumped(mob/M as mob|obj)
if(istype(M,/mob) && !(istype(M,/mob/living)))
return //do not send ghosts, zshadows, ai eyes, etc
spawn(0)
src.teleport(M)
return
return
teleport(M)
/obj/effect/portal/Crossed(AM as mob|obj)
spawn(0)
src.teleport(AM)
return
return
. = ..()
teleport(AM)
/obj/effect/portal/attack_hand(mob/user as mob)
if(istype(user) && !(istype(user,/mob/living)))

View File

@@ -63,6 +63,7 @@
return ..()
/obj/effect/spider/stickyweb/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
if(istype(mover, /mob/living/simple_mob/animal/giant_spider))
return TRUE
else if(istype(mover, /mob/living))
@@ -180,21 +181,6 @@
var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = get_safe_ventcrawl_target(entry_vent)
if(!exit_vent)
return
if(1) //To maintain indentation level
//VOREStation Edit End
/* //VOREStation Removal Start - prevent spiders in dorms
if(entry_vent.network && entry_vent.network.normal_members.len)
var/list/vents = list()
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in entry_vent.network.normal_members)
vents.Add(temp_vent)
if(!vents.len)
entry_vent = null
return
var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents)
*/ //VOREStation Removal End
/*if(prob(50))
src.visible_message("<B>[src] scrambles into the ventillation ducts!</B>")*/
spawn(rand(20,60))
loc = exit_vent
var/travel_time = round(get_dist(loc, exit_vent.loc) / 2)
@@ -218,8 +204,7 @@
var/area/new_area = get_area(loc)
if(new_area)
new_area.Entered(src)
else
entry_vent = null
//=================
if(isturf(loc))

View File

@@ -2,7 +2,6 @@
proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, z_transfer = UP|DOWN, shaped)
var/multi_z_scalar = config_legacy.multi_z_explosion_scalar
src = null //so we don't abort once src is deleted
spawn(0)
var/start = world.timeofday
epicenter = get_turf(epicenter)

View File

@@ -498,7 +498,7 @@ GLOBAL_LIST_EMPTY(PDAs)
var/auto_update = 1
if(mode in no_auto_update)
auto_update = 0
if(old_ui && (mode == lastmode && ui_tick % 5 && mode in update_every_five))
if(old_ui && (mode == lastmode && (ui_tick % 5) && (mode in update_every_five)))
return
lastmode = mode
@@ -1484,6 +1484,7 @@ GLOBAL_LIST_EMPTY(PDAs)
return ..()
/obj/item/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery.
. = ..()
if (istype(AM, /mob/living))
var/mob/living/M = AM

View File

@@ -30,16 +30,16 @@
else
..()
/obj/item/multitool/hacktool/resolve_attackby(atom/A, mob/user)
/obj/item/multitool/hacktool/resolve_attackby(obj/item/W, mob/user, params, attack_modifier)
sanity_check()
if(!in_hack_mode)
return ..()
if(!attempt_hack(user, A))
if(!attempt_hack(user, W))
return 0
A.ui_interact(user, state = hack_state)
W.ui_interact(user, state = hack_state)
return 1
/obj/item/multitool/hacktool/proc/attempt_hack(var/mob/user, var/atom/target)

View File

@@ -322,6 +322,7 @@
qdel(src)
/obj/item/toy/snappop/Crossed(H as mob|obj)
. = ..()
if((ishuman(H))) //i guess carp and shit shouldn't set them off
var/mob/living/carbon/M = H
if(M.m_intent == "run")

View File

@@ -11,8 +11,3 @@
name = T_BOARD("telecommunications server monitor console")
build_path = /obj/machinery/computer/telecomms/server
origin_tech = list(TECH_DATA = 3)
/obj/item/circuitboard/comm_traffic
name = T_BOARD("telecommunications traffic control console")
build_path = /obj/machinery/computer/telecomms/traffic
origin_tech = list(TECH_DATA = 3)

View File

@@ -9,6 +9,7 @@
* Banana Peals
*/
/obj/item/bananapeel/Crossed(AM as mob|obj)
. = ..()
if (istype(AM, /mob/living))
var/mob/living/M = AM
M.slip("the [src.name]",4)
@@ -24,6 +25,7 @@
reagents.add_reagent("cleaner", 5)
/obj/item/soap/Crossed(AM as mob|obj)
. = ..()
if (istype(AM, /mob/living))
var/mob/living/M = AM
M.slip("the [src.name]",3)

View File

@@ -100,20 +100,20 @@
origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2)
var/uses = 10
/obj/item/card/emag/resolve_attackby(atom/A, mob/user)
/obj/item/card/emag/resolve_attackby(obj/item/W, mob/user, params, attack_modifier)
var/used_uses = A.emag_act(uses, user, src)
if(used_uses < 0)
return ..(A, user)
return ..(W, user)
uses -= used_uses
A.add_fingerprint(user)
W.add_fingerprint(user)
//Vorestation Edit: Because some things (read lift doors) don't get emagged
if(used_uses)
log_and_message_admins("emagged \an [A].")
log_and_message_admins("emagged \an [W].")
else
log_and_message_admins("attempted to emag \an [A].")
log_and_message_admins("attempted to emag \an [W].")
// Vorestation Edit: End of Edit
log_and_message_admins("emagged \an [A].")
log_and_message_admins("emagged \an [W].")
if(uses<1)
user.visible_message("<span class='warning'>\The [src] fizzles and sparks - it seems it's been used once too often, and is now spent.</span>")

View File

@@ -9,7 +9,7 @@
w_class = ITEMSIZE_TINY
var/implanted = null
var/mob/imp_in = null
var/obj/item/organ/external/part = null
var/obj/item/organ/external/part
var/implant_color = "b"
var/allow_reagents = 0
var/malfunction = 0

View File

@@ -132,7 +132,7 @@ Frequency:
/obj/item/hand_tele/attack_self(mob/user as mob)
var/turf/current_location = get_turf(user)//What turf is the user on?
if(!current_location || current_location.z in GLOB.using_map.admin_levels || current_location.block_tele)//If turf was not found or they're on z level 2 or >7 which does not currently exist.
if(!current_location || (current_location.z in GLOB.using_map.admin_levels) || current_location.block_tele)//If turf was not found or they're on z level 2 or >7 which does not currently exist.
to_chat(user, "<span class='notice'>\The [src] is malfunctioning.</span>")
return
var/list/L = list( )

View File

@@ -28,6 +28,7 @@
return ..()
/obj/structure/coatrack/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
var/can_hang = 0
for (var/T in allowed)
if(istype(mover,T))
@@ -36,7 +37,7 @@
if (can_hang && !coat)
src.visible_message("[mover] lands on \the [src].")
coat = mover
coat.loc = src
coat.forceMove(src)
update_icon()
return 0
else

View File

@@ -44,6 +44,7 @@
return
/obj/structure/closet/grave/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
if(opened && ismob(mover))
var/mob/M = mover
add_fingerprint(M)

View File

@@ -49,6 +49,7 @@
attack_generic(user,damage_dealt,attack_message)
/obj/structure/grille/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
if(istype(mover) && mover.checkpass(PASSGRILLE))
return TRUE
if(istype(mover, /obj/item/projectile))

View File

@@ -95,11 +95,9 @@
activate()
/obj/machinery/holoplant/Crossed(var/mob/living/L)
. = ..()
if(!interference && plant && istype(L))
flicker()
/obj/machinery/holoplant/shipped
anchored = FALSE
/obj/machinery/holoplant/shipped/Initialize()
. = ..()

View File

@@ -174,6 +174,7 @@
return TryToSwitchState(user)
/obj/structure/inflatable/door/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
if(istype(mover, /obj/effect/beam))
return !opacity
return !density

View File

@@ -37,6 +37,7 @@
solidledge = 0
/obj/structure/ledge/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
if(istype(mover) && mover.checkpass(PASSTABLE))
return TRUE
if(solidledge && get_dir(mover, target) == turn(dir, 180))

View File

@@ -35,6 +35,7 @@
R.update_icon()
/obj/structure/railing/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
if(mover.checkpass(PASSTABLE) || mover.throwing)
return TRUE
if(get_dir(mover, target) & turn(dir, 180))

View File

@@ -65,6 +65,7 @@
return TryToSwitchState(user)
/obj/structure/simple_door/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
if(istype(mover, /obj/effect/beam))
return !opacity
return !density

View File

@@ -119,7 +119,7 @@
if(pod.contents.len)
to_chat(AM, "<span class='notice'>The pod is already occupied.</span>")
return
else if(!pod.moving && pod.dir in directions())
else if(!pod.moving && (pod.dir in directions()))
AM.loc = pod
return
@@ -127,7 +127,7 @@
/obj/structure/transit_tube/station/attack_hand(mob/user as mob)
if(!pod_moving)
for(var/obj/structure/transit_tube_pod/pod in loc)
if(!pod.moving && pod.dir in directions())
if(!pod.moving && (pod.dir in directions()))
if(icon_state == "closed")
open_animation()

View File

@@ -5,12 +5,14 @@
/client/proc/admin_memo(task in list("write","show","delete"))
set name = "Memo"
set category = "Server"
if(!ENABLE_MEMOS) return
if(!check_rights(0)) return
#if ENABLE_MEMOS
if(!check_rights(0))
return
switch(task)
if("write") admin_memo_write()
if("show") admin_memo_show()
if("delete") admin_memo_delete()
#endif
//write a message
/client/proc/admin_memo_write()
@@ -31,11 +33,12 @@
//show all memos
/client/proc/admin_memo_show()
if(ENABLE_MEMOS)
#if ENABLE_MEMOS
var/savefile/F = new(MEMOFILE)
if(F)
for(var/ckey in F.dir)
to_chat(src, "<center><span class='motd'><b>Admin Memo</b><i> by [F[ckey]]</i></span></center>")
#endif
//delete your own or somebody else's memo
/client/proc/admin_memo_delete()

View File

@@ -12,7 +12,7 @@
for(var/mob/living/carbon/human/H in mob_list)
var/turf/T = get_turf(H)
var/security = 0
if((T && T in GLOB.using_map.admin_levels) || prisonwarped.Find(H))
if((T && (T in GLOB.using_map.admin_levels)) || prisonwarped.Find(H))
//don't warp them if they aren't ready or are already there
continue
H.Paralyse(5)

View File

@@ -331,9 +331,9 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null
var/list/select_text
//Runtime tracked
//These three are weird. For best performance, they are only a number when they're not being changed by the SDQL searching/execution code. They only become numbers when they finish changing.
var/list/obj_count_all
var/list/obj_count_eligible
var/list/obj_count_finished
var/obj_count_all
var/obj_count_eligible
var/obj_count_finished
//Statclick
var/obj/effect/statclick/SDQL2_delete/delete_click
@@ -716,7 +716,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null
SDQL2_TICK_CHECK
SDQL2_HALT_CHECK
if(islist(obj_count_finished))
obj_count_finished = obj_count_finished.len
obj_count_finished = length(obj_count_finished)
state = SDQL2_STATE_SWITCHING
/datum/SDQL2_query/proc/SDQL_print(object, list/text_list, print_nulls = TRUE)

View File

@@ -206,4 +206,5 @@
icon_state = "blob_damaged"
/obj/effect/blob/shield/CanAllowThrough(var/atom/movable/mover, var/turf/target)
. = ..()
return !density

View File

@@ -39,7 +39,7 @@
/obj/item/clothing/accessory/proc/get_mob_overlay()
if(!istype(loc,/obj/item/clothing/)) //don't need special handling if it's worn as normal item.
return ..()
return
var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]"
if(ishuman(has_suit.loc))
wearer = has_suit.loc

View File

@@ -26,8 +26,6 @@
hides_bulges = TRUE
var/original_size
/obj/item/clothing/under/bluespace/verb/toggle_fibers()
set category = "Object"
set name = "Adjust fibers"
@@ -35,7 +33,6 @@
set src in usr
adjust_fibers(usr)
..()
/obj/item/clothing/under/bluespace/proc/adjust_fibers(mob/user)
if(hides_bulges == FALSE)
@@ -45,16 +42,11 @@
hides_bulges = FALSE
to_chat(user, "You relax the suit fibers, showing your stomach(s).")
/obj/item/clothing/under/bluespace/verb/resize()
set name = "Adjust Size"
set category = "Object"
set src in usr
bluespace_size(usr)
..()
/obj/item/clothing/under/bluespace/proc/bluespace_size(mob/usr as mob)
if (!ishuman(usr))

View File

@@ -87,7 +87,7 @@
/obj/machinery/microscope/proc/remove_sample(var/mob/living/remover)
if(!istype(remover) || remover.incapacitated() || !Adjacent(remover))
return ..()
return
if(!sample)
to_chat(remover, "<span class='warning'>\The [src] does not have a sample in it.</span>")
return

View File

@@ -71,12 +71,12 @@
name = lowertext("[fullname] sandwich")
if(length(name) > 80) name = "[pick(list("absurd","colossal","enormous","ridiculous"))] sandwich"
w_class = n_ceil(clamp((ingredients.len/2),2,4))
w_class = CEILING(clamp((ingredients.len/2),2,4), 1)
/obj/item/reagent_containers/food/snacks/csandwich/Destroy()
for(var/obj/item/O in ingredients)
qdel(O)
..()
return ..()
/obj/item/reagent_containers/food/snacks/csandwich/examine(mob/user)
..(user)

View File

@@ -15,6 +15,6 @@
"Jelly" = /obj/item/reagent_containers/food/snacks/variable/jelly
)
/obj/machinery/appliance/mixer/candy/change_product_appearance(var/obj/item/reagent_containers/food/snacks/cooked/product)
/obj/machinery/appliance/mixer/candy/change_product_appearance(obj/item/reagent_containers/food/snacks/product)
food_color = get_random_colour(1)
. = ..()

View File

@@ -198,7 +198,7 @@
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Has [cook_type] \the [victim] ([victim.ckey]) in \a [src]</font>")
victim.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been [cook_type] in \a [src] by [user.name] ([user.ckey])</font>")
msg_admin_attack("[key_name_admin(user)] [cook_type] \the [victim] ([victim.ckey]) in \a [src]. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)",ckey=key_name(user),ckey_target=key_name(victim))
msg_admin_attack("[key_name_admin(user)] [cook_type] \the [victim] ([victim.ckey]) in \a [src]. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
//Coat the victim in some oil
oil.trans_to(victim, 40)

View File

@@ -48,10 +48,9 @@
SSholomaps.station_holomaps -= src
stopWatching()
holomap_datum = null
. = ..()
return ..()
/obj/machinery/station_map/proc/setup_holomap()
. = ..()
bogus = FALSE
var/turf/T = get_turf(src)
original_zLevel = T.z

View File

@@ -238,7 +238,7 @@
return
else if(!isnull(seed.chems["pineapplejuice"]))
to_chat(user, "You slice \the [src] into slices.")
for(var/i=i;i<=4;i++)
for(var/i in 1 to 4)
new /obj/item/reagent_containers/food/snacks/pineapple_ring(get_turf(src))
qdel(src)
return

View File

@@ -41,6 +41,7 @@
manual_unbuckle(user)
/obj/effect/plant/Crossed(atom/movable/O)
. = ..()
if(isliving(O))
trodden_on(O)

View File

@@ -218,6 +218,7 @@
..()
/obj/machinery/portable_atmospherics/hydroponics/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
if(istype(mover) && mover.checkpass(PASSTABLE))
return TRUE
return FALSE

View File

@@ -1,7 +1,7 @@
/obj/machinery/portable_atmospherics/hydroponics/soil
name = "soil"
icon_state = "soil"
density = 0
density = FALSE
use_power = USE_POWER_OFF
mechanical = 0
tray_light = 0
@@ -11,7 +11,7 @@
if(istype(O,/obj/item/tank))
return
else
..()
return ..()
/obj/machinery/portable_atmospherics/hydroponics/soil/New()
..()
@@ -19,9 +19,6 @@
verbs -= /obj/machinery/portable_atmospherics/hydroponics/verb/remove_label
verbs -= /obj/machinery/portable_atmospherics/hydroponics/verb/setlight
/obj/machinery/portable_atmospherics/hydroponics/soil/CanAllowThrough()
return 1
// Holder for vine plants.
// Icons for plants are generated as overlays, so setting it to invisible wouldn't work.
// Hence using a blank icon.

View File

@@ -187,7 +187,7 @@ var/list/name_to_material
if(islist(composite_material))
for(var/material_string in composite_material)
temp_matter[material_string] = composite_material[material_string]
else if(SHEET_MATERIAL_AMOUNT)
else
temp_matter[name] = SHEET_MATERIAL_AMOUNT
return temp_matter

View File

@@ -152,6 +152,7 @@
M.manifest(user)
/mob/observer/dead/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
return TRUE
/*
Transfer_mind is there to check if mob is being deleted/not going to have a body.

View File

@@ -28,9 +28,9 @@
add_language(LANGUAGE_GALCOM)
verbs += /mob/living/carbon/alien/diona/proc/merge
/mob/living/carbon/alien/diona/put_in_hands(var/obj/item/W) // No hands.
W.loc = get_turf(src)
return 1
/mob/living/carbon/alien/diona/put_in_hands(obj/item/I, del_on_fail = FALSE, merge_stacks = TRUE, forced = FALSE)
I.forceMove(drop_location())
return TRUE
/mob/living/carbon/alien/diona/proc/wear_hat(var/obj/item/new_hat)
if(hat)

View File

@@ -253,9 +253,9 @@
else
to_chat(src, "<span class='notice'>You need to disable a module first!</span>")
/mob/living/silicon/robot/put_in_hands(var/obj/item/W) // No hands.
W.loc = get_turf(src)
return 1
/mob/living/silicon/robot/put_in_hands(obj/item/I, del_on_fail = FALSE, merge_stacks = TRUE, forced = FALSE)
I.forceMove(drop_location())
return TRUE
/mob/living/silicon/robot/is_holding_item_of_type(typepath)
for(var/obj/item/I in list(module_state_1, module_state_2, module_state_3))

View File

@@ -252,7 +252,7 @@
..()
// Checks to see if mob doesn't like this kind of turf
/mob/living/simple_mob/IMove(newloc)
/mob/living/simple_mob/IMove(turf/newloc, safety = TRUE)
if(istype(newloc,/turf/unsimulated/floor/sky))
return MOVEMENT_FAILED //Mobs aren't that stupid, probably
return ..() // Procede as normal.

View File

@@ -32,7 +32,7 @@
)
// Makes the AI unable to willingly go on land.
/mob/living/simple_mob/animal/passive/fish/IMove(newloc)
/mob/living/simple_mob/animal/passive/fish/IMove(turf/newloc, safety = TRUE)
if(is_type_in_list(newloc, suitable_turf_types))
return ..() // Procede as normal.
return MOVEMENT_FAILED // Don't leave the water!

View File

@@ -193,15 +193,6 @@
T.assume_air(GM)
return
spawn(rand(1,5))
if(src && !ruptured)
visible_message("<span class='critical'>\The [src]'s suit sparks!</span>")
spark_system.set_up(5, 0, src)
spark_system.attach(src)
spark_system.start()
ruptured = 1
return ..()
//Ammo Mouse
/mob/living/simple_mob/animal/space/mouse_army/ammo
name = "ammo mouse"

View File

@@ -16,7 +16,7 @@
/obj/effect/overmap/proc/get_scan_data(mob/user)
return desc
/obj/effect/overmap/Initialize()
/obj/effect/overmap/Initialize(mapload)
. = ..()
if(!GLOB.using_map.use_overmap)
return INITIALIZE_HINT_QDEL
@@ -29,11 +29,13 @@
update_icon()
/obj/effect/overmap/Crossed(var/obj/effect/overmap/visitable/other)
. = ..()
if(istype(other))
for(var/obj/effect/overmap/visitable/O in loc)
SSskybox.rebuild_skyboxes(O.map_z)
/obj/effect/overmap/Uncrossed(var/obj/effect/overmap/visitable/other)
. = ..()
if(istype(other))
SSskybox.rebuild_skyboxes(other.map_z)
for(var/obj/effect/overmap/visitable/O in loc)

View File

@@ -19,6 +19,7 @@ var/list/cached_space = list()
/obj/effect/overmap/visitable/sector/temporary/Destroy()
map_sectors["[map_z]"] = null
testing("Temporary sector at [x],[y] was deleted.")
return ..()
/obj/effect/overmap/visitable/sector/temporary/proc/can_die(var/mob/observer)
testing("Checking if sector at [map_z[1]] can die.")

View File

@@ -64,20 +64,17 @@ proc/cardinalrange(var/center)
qdel(src)
return
/obj/machinery/am_shielding/Destroy()
if(control_unit) control_unit.remove_shielding(src)
if(processing) shutdown_core()
visible_message("<font color='red'>The [src.name] melts!</font>")
//Might want to have it leave a mess on the floor but no sprites for now
..()
return
return ..()
/obj/machinery/am_shielding/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
return FALSE
/obj/machinery/am_shielding/process()
if(!processing) . = PROCESS_KILL
//TODO: core functions and stability

View File

@@ -618,6 +618,7 @@
check_trajectory(target, user, pass_flags, flags)
/obj/item/projectile/CanAllowThrough()
. = ..()
return TRUE
//Called when the projectile intercepts a mob. Returns 1 if the projectile hit the mob, 0 if it missed and should keep flying.

View File

@@ -101,9 +101,8 @@
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
return
/obj/item/projectile/energy/hook/proc/perform_intent_unique(atom/target)
playsound(src.loc, impact_sound, 40, 1)
playsound(src, impact_sound, 40, 1)
var/success = FALSE
if(istype(target,/turf))
if(launcher_intent)
@@ -113,7 +112,7 @@
if(!target_mob)
return
if(Bump(target_mob, forced=1)) //If we hit a turf, try to force an interaction with a mob on the turf.
if(Bump(target_mob)) //If we hit a turf, try to force an interaction with a mob on the turf.
done_mob_unique = TRUE
success = TRUE
else if(firer)

View File

@@ -41,8 +41,8 @@
/datum/random_map/droppod/generate_map()
// No point calculating these 200 times.
var/x_midpoint = n_ceil(limit_x / 2)
var/y_midpoint = n_ceil(limit_y / 2)
var/x_midpoint = CEILING(limit_x / 2, 1)
var/y_midpoint = CEILING(limit_y / 2, 1)
// Draw walls/floors/doors.
for(var/x = 1, x <= limit_x, x++)
@@ -80,7 +80,7 @@
/datum/random_map/droppod/apply_to_map()
if(placement_explosion_dev || placement_explosion_heavy || placement_explosion_light || placement_explosion_flash)
var/turf/T = locate((origin_x + n_ceil(limit_x / 2)-1), (origin_y + n_ceil(limit_y / 2)-1), origin_z)
var/turf/T = locate((origin_x + CEILING(limit_x / 2, 1)-1), (origin_y + CEILING(limit_y / 2, 1)-1), origin_z)
if(istype(T))
explosion(T, placement_explosion_dev, placement_explosion_heavy, placement_explosion_light, placement_explosion_flash)
sleep(15) // Let the explosion finish proccing before we ChangeTurf(), otherwise it might destroy our spawned objects.
@@ -97,8 +97,8 @@
// Pods are circular. Get the direction this object is facing from the center of the pod.
/datum/random_map/droppod/get_spawn_dir(var/x, var/y)
var/x_midpoint = n_ceil(limit_x / 2)
var/y_midpoint = n_ceil(limit_y / 2)
var/x_midpoint = CEILING(limit_x / 2, 1)
var/y_midpoint = CEILING(limit_y / 2, 1)
if(x == x_midpoint && y == y_midpoint)
return null
var/turf/target = locate(origin_x+x-1, origin_y+y-1, origin_z)

View File

@@ -49,7 +49,7 @@
throw_range = 5
w_class = ITEMSIZE_SMALL
matter = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000)
var/obj/item/implant/backup/list/imps = list()
var/list/obj/item/implant/backup/imps = list()
var/max_implants = 4 //Iconstates need to exist due to the update proc!
/obj/item/backup_implanter/New()

View File

@@ -27,8 +27,8 @@
var/original_mobs = 0
// In-use spawns from the area
var/obj/asteroid_spawner/list/rockspawns = list()
var/obj/rogue_mobspawner/list/mobspawns = list()
var/list/obj/asteroid_spawner/rockspawns = list()
var/list/obj/rogue_mobspawner/mobspawns = list()
/datum/rogue/zonemaster/New(var/area/A)
ASSERT(A)

View File

@@ -472,7 +472,7 @@
if(37)
// Alien boats.
apply_prefix = FALSE
var/new_boat_mat = pickweight(
var/new_boat_mat = pickweight(list(
MAT_WOOD = 100,
MAT_SIFWOOD = 200,
DEFAULT_WALL_MATERIAL = 60,
@@ -489,7 +489,7 @@
MAT_DURASTEEL = 2,
MAT_MORPHIUM = 2,
MAT_SUPERMATTER = 1
)
))
var/list/alien_stuff = list(
/obj/vehicle/boat,
/obj/vehicle/boat/dragon
@@ -522,7 +522,7 @@
new_item = new /obj/item/telecube/randomized(src.loc)
if(istype(new_item, /obj/item/material))
var/new_item_mat = pickweight(
var/new_item_mat = pickweight(list(
DEFAULT_WALL_MATERIAL = 80,
MAT_WOOD = 20,
MAT_SIFWOOD = 40,
@@ -539,7 +539,7 @@
MAT_DURASTEEL = 2,
MAT_MORPHIUM = 2,
MAT_SUPERMATTER = 1
)
))
var/obj/item/material/MW = new_item
MW.applies_material_colour = TRUE
MW.set_material(new_item_mat)

View File

@@ -191,8 +191,8 @@
icon_state = "anodev[round(p,25)]"
/obj/item/anodevice/Destroy()
return ..()
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/anodevice/attack(mob/living/M as mob, mob/living/user as mob, def_zone)
if (!istype(M))

View File

@@ -232,8 +232,8 @@
START_PROCESSING(SSobj, src)
/obj/item/beacon_locator/Destroy()
return ..()
STOP_PROCESSING(SSobj, src)
return ..()
/obj/item/beacon_locator/process()
if(target_radio)

View File

@@ -957,10 +957,6 @@
},
/area/tcommsat/chamber)
"cl" = (
/obj/machinery/computer/telecomms/traffic{
dir = 8;
network = "tcommsat"
},
/turf/simulated/floor/tiled/dark,
/area/tcommsat/computer)
"cm" = (

View File

@@ -56,6 +56,9 @@
rare_count++
else
deep_count++
admin_notice("RARE COUNT [rare_count]", R_DEBUG)
admin_notice("SURFACE COUNT [surface_count]", R_DEBUG)
admin_notice("DEEP COUNT [deep_count]", R_DEBUG)
// Sanity check.
if(surface_count < 100)
admin_notice("<span class='danger'>Insufficient surface minerals. Rerolling...</span>", R_DEBUG)
@@ -68,6 +71,3 @@
return 0
else
return 1
admin_notice("RARE COUNT [rare_count]", R_DEBUG)
admin_notice("SURFACE COUNT [surface_count]", R_DEBUG)
admin_notice("DEEP COUNT [deep_count]", R_DEBUG)

View File

@@ -44,6 +44,7 @@
return TRUE
/obj/effect/ceiling/CanAllowThrough(atom/movable/mover, turf/target, height=0, air_group=0)
. = ..()
if(mover && mover.z > src.z)
return FALSE // Block entry from above to our turf
return TRUE

View File

@@ -886,7 +886,6 @@
#include "code\game\machinery\telecomms\presets_vr.dm"
#include "code\game\machinery\telecomms\telecomunications.dm"
#include "code\game\machinery\telecomms\telemonitor.dm"
#include "code\game\machinery\telecomms\traffic_control.dm"
#include "code\game\machinery\virtual_reality\ar_console.dm"
#include "code\game\machinery\virtual_reality\vr_console.dm"
#include "code\game\magic\Uristrunes.dm"