mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-31 00:59:16 +01:00
Hopefully fixes conflicts.
This commit is contained in:
@@ -29,11 +29,10 @@
|
||||
show_log = 0
|
||||
var/datum/seed/seed
|
||||
|
||||
/datum/effect/effect/system/smoke_spread/chem/spores/New(seed_name)
|
||||
if(seed_name && plant_controller)
|
||||
seed = plant_controller.seeds[seed_name]
|
||||
if(!seed)
|
||||
qdel(src)
|
||||
/datum/effect/effect/system/smoke_spread/chem/spores/New(_seed)
|
||||
seed = _seed
|
||||
if(!istype(seed))
|
||||
CRASH("Invalid seed datum passed! [seed] ([seed?.type])")
|
||||
..()
|
||||
|
||||
/datum/effect/effect/system/smoke_spread/chem/New()
|
||||
|
||||
@@ -15,25 +15,30 @@
|
||||
var/expand = 1
|
||||
var/metal = 0
|
||||
|
||||
/obj/effect/effect/foam/New(var/loc, var/ismetal = 0)
|
||||
..(loc)
|
||||
/obj/effect/effect/foam/Initialize(var/mapload, var/ismetal = 0)
|
||||
. = ..()
|
||||
icon_state = "[ismetal? "m" : ""]foam"
|
||||
metal = ismetal
|
||||
playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3)
|
||||
spawn(3 + metal * 3)
|
||||
process()
|
||||
checkReagents()
|
||||
spawn(120)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
sleep(30)
|
||||
if(metal)
|
||||
var/obj/structure/foamedmetal/M = new(src.loc)
|
||||
M.metal = metal
|
||||
M.updateicon()
|
||||
flick("[icon_state]-disolve", src)
|
||||
sleep(5)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
addtimer(CALLBACK(src, .proc/post_spread), 3 + metal * 3)
|
||||
addtimer(CALLBACK(src, .proc/pre_harden), 12 SECONDS)
|
||||
addtimer(CALLBACK(src, .proc/harden), 15 SECONDS)
|
||||
|
||||
/obj/effect/effect/foam/proc/post_spread()
|
||||
process()
|
||||
checkReagents()
|
||||
|
||||
/obj/effect/effect/foam/proc/pre_harden()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/effect/effect/foam/proc/harden()
|
||||
if(metal)
|
||||
var/obj/structure/foamedmetal/M = new(src.loc)
|
||||
M.metal = metal
|
||||
M.updateicon()
|
||||
flick("[icon_state]-disolve", src)
|
||||
QDEL_IN(src, 5)
|
||||
|
||||
/obj/effect/effect/foam/proc/checkReagents() // transfer any reagents to the floor
|
||||
if(!metal && reagents)
|
||||
|
||||
@@ -5,11 +5,9 @@
|
||||
mouse_opacity = 0
|
||||
pass_flags = PASSTABLE | PASSGRILLE | PASSBLOB
|
||||
|
||||
/obj/effect/effect/water/New(loc)
|
||||
..()
|
||||
spawn(150) // In case whatever made it forgets to delete it
|
||||
if(src)
|
||||
qdel(src)
|
||||
/obj/effect/effect/water/Initialize()
|
||||
. = ..()
|
||||
QDEL_IN(src, 15 SECONDS)
|
||||
|
||||
/obj/effect/effect/water/proc/set_color() // Call it after you move reagents to it
|
||||
icon += reagents.get_color()
|
||||
|
||||
@@ -20,7 +20,6 @@ var/global/list/image/splatter_cache=list()
|
||||
var/synthblood = 0
|
||||
var/list/datum/disease2/disease/virus2 = list()
|
||||
var/amount = 5
|
||||
var/drytime
|
||||
|
||||
/obj/effect/decal/cleanable/blood/reveal_blood()
|
||||
if(!fluorescent)
|
||||
@@ -33,13 +32,8 @@ var/global/list/image/splatter_cache=list()
|
||||
if(invisibility != 100)
|
||||
invisibility = 100
|
||||
amount = 0
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
..(ignore=1)
|
||||
|
||||
/obj/effect/decal/cleanable/blood/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/effect/decal/cleanable/blood/New()
|
||||
..()
|
||||
update_icon()
|
||||
@@ -52,12 +46,7 @@ var/global/list/image/splatter_cache=list()
|
||||
if (B.blood_DNA)
|
||||
blood_DNA |= B.blood_DNA.Copy()
|
||||
qdel(B)
|
||||
drytime = world.time + DRYING_TIME * (amount+1)
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/effect/decal/cleanable/blood/process()
|
||||
if(world.time > drytime)
|
||||
dry()
|
||||
addtimer(CALLBACK(src, .proc/dry), DRYING_TIME * (amount+1))
|
||||
|
||||
/obj/effect/decal/cleanable/blood/update_icon()
|
||||
if(basecolor == "rainbow") basecolor = "#[get_random_colour(1)]"
|
||||
@@ -116,7 +105,6 @@ var/global/list/image/splatter_cache=list()
|
||||
desc = drydesc
|
||||
color = adjust_brightness(color, -50)
|
||||
amount = 0
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/effect/decal/cleanable/blood/attack_hand(mob/living/carbon/human/user)
|
||||
..()
|
||||
@@ -241,14 +229,18 @@ var/global/list/image/splatter_cache=list()
|
||||
random_icon_states = list("mucus")
|
||||
|
||||
var/list/datum/disease2/disease/virus2 = list()
|
||||
var/dry=0 // Keeps the lag down
|
||||
var/dry = 0 // Keeps the lag down
|
||||
|
||||
/obj/effect/decal/cleanable/mucus/New()
|
||||
spawn(DRYING_TIME * 2)
|
||||
dry=1
|
||||
/obj/effect/decal/cleanable/mucus/Initialize()
|
||||
. = ..()
|
||||
VARSET_IN(src, dry, TRUE, DRYING_TIME * 2)
|
||||
|
||||
//This version should be used for admin spawns and pre-mapped virus vectors (e.g. in PoIs), this version does not dry
|
||||
/obj/effect/decal/cleanable/mucus/mapped/New()
|
||||
..()
|
||||
/obj/effect/decal/cleanable/mucus/mapped/Initialize()
|
||||
. = ..()
|
||||
virus2 |= new /datum/disease2/disease
|
||||
virus2[1].makerandom()
|
||||
|
||||
/obj/effect/decal/cleanable/mucus/mapped/Destroy()
|
||||
virus2.Cut()
|
||||
return ..()
|
||||
|
||||
@@ -36,8 +36,7 @@ GLOBAL_LIST_EMPTY(all_beam_points)
|
||||
if(make_beams_on_init)
|
||||
create_beams()
|
||||
if(use_timer)
|
||||
spawn(initial_delay)
|
||||
handle_beam_timer()
|
||||
addtimer(CALLBACK(src, .proc/handle_beam_timer), initial_delay)
|
||||
return ..()
|
||||
|
||||
/obj/effect/map_effect/beam_point/Destroy()
|
||||
|
||||
@@ -14,11 +14,10 @@
|
||||
invisibility = 0
|
||||
var/time_to_die = 10 SECONDS // Afer which, it will delete itself.
|
||||
|
||||
/obj/effect/temporary_effect/New()
|
||||
..()
|
||||
/obj/effect/temporary_effect/Initialize()
|
||||
. = ..()
|
||||
if(time_to_die)
|
||||
spawn(time_to_die)
|
||||
qdel(src)
|
||||
QDEL_IN(src, time_to_die)
|
||||
|
||||
// Shown really briefly when attacking with axes.
|
||||
/obj/effect/temporary_effect/cleave_attack
|
||||
|
||||
@@ -38,12 +38,9 @@ GLOBAL_LIST_BOILERPLATE(all_portals, /obj/effect/portal)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/effect/portal/New()
|
||||
..() // Necessary for the list boilerplate to work
|
||||
spawn(300)
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
/obj/effect/portal/Initialize()
|
||||
. = ..()
|
||||
QDEL_IN(src, 30 SECONDS)
|
||||
|
||||
/obj/effect/portal/proc/teleport(atom/movable/M as mob|obj)
|
||||
if(istype(M, /obj/effect)) //sparks don't teleport
|
||||
|
||||
@@ -78,8 +78,8 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
// Parameters: None
|
||||
// Description: Adds the new communicator to the global list of all communicators, sorts the list, obtains a reference to the Exonet node, then tries to
|
||||
// assign the device to the holder's name automatically in a spectacularly shitty way.
|
||||
/obj/item/device/communicator/New()
|
||||
..()
|
||||
/obj/item/device/communicator/Initialize()
|
||||
. = ..()
|
||||
all_communicators += src
|
||||
all_communicators = sortAtom(all_communicators)
|
||||
node = get_exonet_node()
|
||||
@@ -87,16 +87,22 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
camera = new(src)
|
||||
camera.name = "[src] #[rand(100,999)]"
|
||||
camera.c_tag = camera.name
|
||||
|
||||
//This is a pretty terrible way of doing this.
|
||||
spawn(5 SECONDS) //Wait for our mob to finish spawning.
|
||||
if(ismob(loc))
|
||||
register_device(loc.name)
|
||||
initialize_exonet(loc)
|
||||
else if(istype(loc, /obj/item/weapon/storage))
|
||||
var/obj/item/weapon/storage/S = loc
|
||||
if(ismob(S.loc))
|
||||
register_device(S.loc.name)
|
||||
initialize_exonet(S.loc)
|
||||
addtimer(CALLBACK(src, .proc/register_to_holder), 5 SECONDS)
|
||||
|
||||
// Proc: register_to_holder()
|
||||
// Parameters: None
|
||||
// Description: Tries to register ourselves to the mob that we've presumably spawned in. Not the most amazing way of doing this.
|
||||
/obj/item/device/communicator/proc/register_to_holder()
|
||||
if(ismob(loc))
|
||||
register_device(loc.name)
|
||||
initialize_exonet(loc)
|
||||
else if(istype(loc, /obj/item/weapon/storage))
|
||||
var/obj/item/weapon/storage/S = loc
|
||||
if(ismob(S.loc))
|
||||
register_device(S.loc.name)
|
||||
initialize_exonet(S.loc)
|
||||
|
||||
// Proc: examine()
|
||||
// Parameters: user - the user doing the examining
|
||||
@@ -275,14 +281,13 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
|
||||
// Proc: New()
|
||||
// Parameters: None
|
||||
// Description: Gives ghosts an exonet address based on their key and ghost name.
|
||||
/mob/observer/dead/New()
|
||||
/mob/observer/dead/Initialize()
|
||||
. = ..()
|
||||
spawn(20)
|
||||
exonet = new(src)
|
||||
if(client)
|
||||
exonet.make_address("communicator-[src.client]-[src.client.prefs.real_name]")
|
||||
else
|
||||
exonet.make_address("communicator-[key]-[src.real_name]")
|
||||
exonet = new(src)
|
||||
if(client)
|
||||
exonet.make_address("communicator-[src.client]-[src.client.prefs.real_name]")
|
||||
else
|
||||
exonet.make_address("communicator-[key]-[src.real_name]")
|
||||
|
||||
// Proc: Destroy()
|
||||
// Parameters: None
|
||||
|
||||
@@ -99,9 +99,7 @@ var/list/GPS_list = list()
|
||||
gps_data["gps_tag"] = G.gps_tag
|
||||
|
||||
var/area/A = get_area(G)
|
||||
gps_data["area_name"] = A.name
|
||||
if(istype(A, /area/submap))
|
||||
gps_data["area_name"] = "Unknown Area" // Avoid spoilers.
|
||||
gps_data["area_name"] = A.get_name()
|
||||
|
||||
gps_data["z_name"] = using_map.get_zlevel_name(T.z)
|
||||
gps_data["direction"] = get_adir(curr, T)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink)
|
||||
|
||||
/obj/item/device/uplink
|
||||
var/welcome = "Welcome, Operative" // Welcoming menu message
|
||||
var/uses // Numbers of crystals
|
||||
@@ -12,32 +14,29 @@
|
||||
var/datum/mind/uplink_owner = null
|
||||
var/used_TC = 0
|
||||
var/offer_time = 10 MINUTES //The time increment per discount offered
|
||||
var/next_offer_time //The time a discount will next be offered
|
||||
var/next_offer_time
|
||||
var/datum/uplink_item/discount_item //The item to be discounted
|
||||
var/discount_amount //The amount as a percent the item will be discounted by
|
||||
|
||||
/obj/item/device/uplink/nano_host()
|
||||
return loc
|
||||
|
||||
/obj/item/device/uplink/New(var/location, var/datum/mind/owner = null, var/telecrystals = DEFAULT_TELECRYSTAL_AMOUNT)
|
||||
..()
|
||||
src.uplink_owner = owner
|
||||
/obj/item/device/uplink/Initialize(var/mapload, var/datum/mind/owner = null, var/telecrystals = DEFAULT_TELECRYSTAL_AMOUNT)
|
||||
. = ..()
|
||||
uplink_owner = owner
|
||||
purchase_log = list()
|
||||
world_uplinks += src
|
||||
if(owner)
|
||||
uses = owner.tcrystals
|
||||
else
|
||||
uses = telecrystals
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/device/uplink/Destroy()
|
||||
world_uplinks -= src
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
addtimer(CALLBACK(src, .proc/next_offer), offer_time) //It seems like only the /hidden type actually makes use of this...
|
||||
|
||||
/obj/item/device/uplink/get_item_cost(var/item_type, var/item_cost)
|
||||
return (discount_item && (item_type == discount_item)) ? max(1, round(item_cost*discount_amount)) : item_cost
|
||||
|
||||
/obj/item/device/uplink/proc/next_offer()
|
||||
return //Stub, used on children.
|
||||
|
||||
// HIDDEN UPLINK - Can be stored in anything but the host item has to have a trigger for it.
|
||||
/* How to create an uplink in 3 easy steps!
|
||||
|
||||
@@ -58,21 +57,20 @@
|
||||
var/exploit_id // Id of the current exploit record we are viewing
|
||||
|
||||
// The hidden uplink MUST be inside an obj/item's contents.
|
||||
/obj/item/device/uplink/hidden/New()
|
||||
spawn(2)
|
||||
if(!istype(src.loc, /obj/item))
|
||||
qdel(src)
|
||||
..()
|
||||
/obj/item/device/uplink/hidden/Initialize()
|
||||
. = ..()
|
||||
if(!isitem(loc))
|
||||
return INITIALIZE_HINT_QDEL
|
||||
nanoui_data = list()
|
||||
update_nano_data()
|
||||
|
||||
/obj/item/device/uplink/hidden/process()
|
||||
if(world.time > next_offer_time)
|
||||
discount_item = default_uplink_selection.get_random_item(INFINITY)
|
||||
discount_amount = pick(90;0.9, 80;0.8, 70;0.7, 60;0.6, 50;0.5, 40;0.4, 30;0.3, 20;0.2, 10;0.1)
|
||||
next_offer_time = world.time + offer_time
|
||||
update_nano_data()
|
||||
SSnanoui.update_uis(src)
|
||||
/obj/item/device/uplink/hidden/next_offer()
|
||||
discount_item = default_uplink_selection.get_random_item(INFINITY)
|
||||
discount_amount = pick(90;0.9, 80;0.8, 70;0.7, 60;0.6, 50;0.5, 40;0.4, 30;0.3, 20;0.2, 10;0.1)
|
||||
update_nano_data()
|
||||
SSnanoui.update_uis(src)
|
||||
next_offer_time = world.time + offer_time
|
||||
addtimer(CALLBACK(src, .proc/next_offer), offer_time)
|
||||
|
||||
// Toggles the uplink on and off. Normally this will bypass the item's normal functions and go to the uplink menu, if activated.
|
||||
/obj/item/device/uplink/hidden/proc/toggle()
|
||||
|
||||
@@ -4,21 +4,15 @@
|
||||
desc = "This item spawns stack of 50 of a given material."
|
||||
icon = 'icons/misc/mark.dmi'
|
||||
icon_state = "x4"
|
||||
// var/material = ""
|
||||
var/obj/item/stack/type_to_spawn = null
|
||||
|
||||
/obj/fiftyspawner/New()
|
||||
spawn()
|
||||
//spawns the 50-stack and qdels self
|
||||
..()
|
||||
if(istype(src.loc, /obj/structure/loot_pile)) //Spawning from a lootpile is weird, need to wait until we're out of it to do our work.
|
||||
while(istype(src.loc, /obj/structure/loot_pile))
|
||||
sleep(1)
|
||||
// var/obj_path = text2path("/obj/item/stack/[material]")
|
||||
var/obj/item/stack/M = new type_to_spawn(src.loc)
|
||||
M.amount = M.max_amount //some stuff spawns with 60, we're still calling it fifty
|
||||
M.update_icon() // Some stacks have different sprites depending on how full they are.
|
||||
qdel(src)
|
||||
/obj/fiftyspawner/Initialize()
|
||||
..() //We're not returning . because we're going to ask to be deleted.
|
||||
|
||||
var/obj/item/stack/M = new type_to_spawn(get_turf(src))
|
||||
M.amount = M.max_amount //some stuff spawns with 60, we're still calling it fifty
|
||||
M.update_icon() // Some stacks have different sprites depending on how full they are.
|
||||
return INITIALIZE_HINT_QDEL //Bye!
|
||||
|
||||
/obj/fiftyspawner/rods
|
||||
name = "stack of rods" //this needs to be defined for cargo
|
||||
|
||||
@@ -60,6 +60,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
burn_out()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/flame/match/proc/light(var/mob/user)
|
||||
playsound(src, 'sound/items/cigs_lighters/matchstick_lit.ogg', 25, 0, -1)
|
||||
lit = 1
|
||||
damtype = "burn"
|
||||
icon_state = "match_lit"
|
||||
name = "burning match"
|
||||
desc = "A match. This one is presently on fire."
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/weapon/flame/match/proc/burn_out()
|
||||
lit = 0
|
||||
burnt = 1
|
||||
|
||||
@@ -407,17 +407,13 @@
|
||||
can_hold = list(/obj/item/weapon/flame/match)
|
||||
starts_with = list(/obj/item/weapon/flame/match = 10)
|
||||
|
||||
/obj/item/weapon/storage/box/matches/attackby(obj/item/weapon/flame/match/W as obj, mob/user as mob)
|
||||
/obj/item/weapon/storage/box/matches/attackby(var/obj/item/weapon/flame/match/W, var/mob/user)
|
||||
if(istype(W) && !W.lit && !W.burnt)
|
||||
if(prob(25))
|
||||
playsound(src.loc, 'sound/items/cigs_lighters/matchstick_lit.ogg', 25, 0, -1)
|
||||
W.light(user)
|
||||
user.visible_message("<span class='notice'>[user] manages to light the match on the matchbox.</span>")
|
||||
W.lit = 1
|
||||
W.damtype = "burn"
|
||||
W.icon_state = "match_lit"
|
||||
START_PROCESSING(SSprocessing, W)
|
||||
else
|
||||
playsound(src.loc, 'sound/items/cigs_lighters/matchstick_hit.ogg', 25, 0, -1)
|
||||
playsound(src, 'sound/items/cigs_lighters/matchstick_hit.ogg', 25, 0, -1)
|
||||
W.update_icon()
|
||||
return
|
||||
|
||||
|
||||
@@ -46,12 +46,12 @@
|
||||
desc = "A compact yet rebalanced personal defense weapon. Can be concealed when folded."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "telebaton0"
|
||||
item_state = "telebaton0"
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = ITEMSIZE_SMALL
|
||||
force = 3
|
||||
var/on = 0
|
||||
|
||||
|
||||
/obj/item/weapon/melee/telebaton/attack_self(mob/user as mob)
|
||||
on = !on
|
||||
if(on)
|
||||
@@ -59,6 +59,7 @@
|
||||
"<span class='warning'>You extend the baton.</span>",\
|
||||
"You hear an ominous click.")
|
||||
icon_state = "telebaton1"
|
||||
item_state = icon_state
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
force = 15//quite robust
|
||||
attack_verb = list("smacked", "struck", "slapped")
|
||||
@@ -67,6 +68,7 @@
|
||||
"<span class='notice'>You collapse the baton.</span>",\
|
||||
"You hear a click.")
|
||||
icon_state = "telebaton0"
|
||||
item_state = icon_state
|
||||
w_class = ITEMSIZE_SMALL
|
||||
force = 3//not so robust now
|
||||
attack_verb = list("hit", "punched")
|
||||
|
||||
@@ -78,7 +78,6 @@ var/list/global/tank_gauge_cache = list()
|
||||
if(istype(loc, /obj/item/device/transfer_valve))
|
||||
var/obj/item/device/transfer_valve/TTV = loc
|
||||
TTV.remove_tank(src)
|
||||
qdel(TTV)
|
||||
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -64,10 +64,9 @@
|
||||
icon_state = "vehiclecrate"
|
||||
|
||||
/obj/structure/largecrate/vehicle/Initialize()
|
||||
..()
|
||||
spawn(1)
|
||||
for(var/obj/O in contents)
|
||||
O.update_icon()
|
||||
. = ..()
|
||||
for(var/obj/O in contents)
|
||||
O.update_icon()
|
||||
|
||||
/obj/structure/largecrate/vehicle/bike
|
||||
name = "spacebike crate"
|
||||
|
||||
@@ -61,18 +61,13 @@
|
||||
|
||||
/obj/structure/ghost_pod/automatic/Initialize()
|
||||
. = ..()
|
||||
spawn(delay_to_self_open)
|
||||
if(src)
|
||||
trigger()
|
||||
addtimer(CALLBACK(src, .proc/trigger), delay_to_self_open)
|
||||
|
||||
/obj/structure/ghost_pod/automatic/trigger()
|
||||
. = ..()
|
||||
if(. == FALSE) // If we failed to get a volunteer, try again later if allowed to.
|
||||
if(delay_to_try_again)
|
||||
spawn(delay_to_try_again)
|
||||
if(src)
|
||||
trigger()
|
||||
|
||||
addtimer(CALLBACK(src, .proc/trigger), delay_to_try_again)
|
||||
|
||||
// This type is triggered by a ghost clicking on it, as opposed to a living player. A ghost query type isn't needed.
|
||||
/obj/structure/ghost_pod/ghost_activated
|
||||
|
||||
@@ -197,16 +197,18 @@
|
||||
P.rotate_auto(new_bearing)
|
||||
|
||||
/obj/structure/prop/prismcontrol/Initialize()
|
||||
..()
|
||||
. = ..()
|
||||
if(my_turrets.len) //Preset controls.
|
||||
for(var/obj/structure/prop/prism/P in my_turrets)
|
||||
P.remote_dial = src
|
||||
return
|
||||
spawn()
|
||||
for(var/obj/structure/prop/prism/P in orange(src, world.view)) //Don't search a huge area.
|
||||
if(P.dialID == dialID && !P.remote_dial && P.external_control_lock)
|
||||
my_turrets |= P
|
||||
P.remote_dial = src
|
||||
else
|
||||
. = INITIALIZE_HINT_LATELOAD
|
||||
|
||||
/obj/structure/prop/prismcontrol/LateInitialize()
|
||||
for(var/obj/structure/prop/prism/P in orange(src, world.view)) //Don't search a huge area.
|
||||
if(P.dialID == dialID && !P.remote_dial && P.external_control_lock)
|
||||
my_turrets |= P
|
||||
P.remote_dial = src
|
||||
|
||||
/obj/structure/prop/prismcontrol/Destroy()
|
||||
for(var/obj/structure/prop/prism/P in my_turrets)
|
||||
|
||||
@@ -8,11 +8,9 @@
|
||||
buckle_lying = 0 //force people to sit up in chairs when buckled
|
||||
var/propelled = 0 // Check for fire-extinguisher-driven chairs
|
||||
|
||||
/obj/structure/bed/chair/New()
|
||||
..() //Todo make metal/stone chairs display as thrones
|
||||
spawn(3) //sorry. i don't think there's a better way to do this.
|
||||
update_layer()
|
||||
return
|
||||
/obj/structure/bed/chair/Initialize()
|
||||
. = ..()
|
||||
update_layer()
|
||||
|
||||
/obj/structure/bed/chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
|
||||
Reference in New Issue
Block a user