mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2025-12-10 03:55:50 +00:00
holy crap
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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>\
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/effect/decal/cleanable/chemcoating/Crossed(AM as mob|obj)
|
||||
. = ..()
|
||||
Bumped(AM)
|
||||
|
||||
/obj/effect/decal/cleanable/chemcoating/update_icon()
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/effect/foam/Crossed(var/atom/movable/AM)
|
||||
. = ..()
|
||||
if(metal)
|
||||
return
|
||||
if(istype(AM, /mob/living))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
..()
|
||||
|
||||
/obj/effect/mine/Crossed(AM as mob|obj)
|
||||
. = ..()
|
||||
Bumped(AM)
|
||||
|
||||
/obj/effect/mine/Bumped(mob/M as mob|obj)
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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( )
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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()
|
||||
. = ..()
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -206,4 +206,5 @@
|
||||
icon_state = "blob_damaged"
|
||||
|
||||
/obj/effect/blob/shield/CanAllowThrough(var/atom/movable/mover, var/turf/target)
|
||||
. = ..()
|
||||
return !density
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
. = ..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
manual_unbuckle(user)
|
||||
|
||||
/obj/effect/plant/Crossed(atom/movable/O)
|
||||
. = ..()
|
||||
if(isliving(O))
|
||||
trodden_on(O)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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!
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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" = (
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user