mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 02:54:41 +01:00
for-the-strength-from-which-he-gives-is-unerring
This commit is contained in:
@@ -33441,7 +33441,6 @@
|
||||
"bgD" = (
|
||||
/obj/item/book/manual/security_space_law,
|
||||
/obj/machinery/newscaster{
|
||||
hitstaken = 1;
|
||||
pixel_y = -32
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
|
||||
|
||||
@@ -126,8 +126,8 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/displaycase{
|
||||
alert = 0;
|
||||
desc = "A display case containing an expensive forgery, probably.";
|
||||
locked = 1;
|
||||
pixel_y = -4;
|
||||
req_access_txt = "48";
|
||||
start_showpiece_type = /obj/item/fakeartefact
|
||||
|
||||
@@ -107,11 +107,11 @@
|
||||
to_chat(user, "<span class='notice'>You reverse the circulator's valve settings. The inlet of the circulator is now on the [get_inlet_side(dir)] side.</span>")
|
||||
desc = "A gas circulator pump and heat exchanger. Its input port is on the [get_inlet_side(dir)] side, and its output port is on the [get_outlet_side(dir)] side."
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/binary/circulator/update_icon()
|
||||
..()
|
||||
|
||||
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
icon_state = "circ[side]-p"
|
||||
else if(last_pressure_delta > 0)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
/obj/machinery/atmospherics/binary/valve/update_icon(animation)
|
||||
..()
|
||||
|
||||
|
||||
if(animation)
|
||||
flick("valve[src.open][!src.open]",src)
|
||||
else
|
||||
@@ -146,7 +146,7 @@
|
||||
if(istype(W, /obj/item/multitool))
|
||||
update_multitool_menu(user)
|
||||
return 1
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/binary/valve/digital/multitool_menu(var/mob/user,var/obj/item/multitool/P)
|
||||
return {"
|
||||
|
||||
@@ -5,6 +5,12 @@
|
||||
|
||||
#define MAX_FLAG 65535
|
||||
|
||||
/proc/is_wire_tool(obj/item/I)
|
||||
if(ismultitool(I))
|
||||
return TRUE
|
||||
if(iswirecutter(I))
|
||||
return TRUE
|
||||
|
||||
var/list/same_wires = list()
|
||||
// 12 colours, if you're adding more than 12 wires then add more colours here
|
||||
var/list/wireColours = list("red", "blue", "green", "black", "orange", "brown", "gold", "gray", "cyan", "navy", "purple", "pink")
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
to_chat(user, "<span class='notice'>The maintenance panel is locked.</span>")
|
||||
return
|
||||
default_deconstruction_screwdriver(user, "[icon_state]_maintenance", "[initial(icon_state)]", item)
|
||||
|
||||
return
|
||||
if(exchange_parts(user, item))
|
||||
return
|
||||
|
||||
@@ -233,27 +233,27 @@
|
||||
item.forceMove(src)
|
||||
user.visible_message("[user] adds \a [item] to \the [src]!", "You add \a [item] to \the [src]!")
|
||||
return
|
||||
else if(!istype(item, /obj/item/grab))
|
||||
if(istype(item, /obj/item/grab))
|
||||
var/obj/item/grab/G = item
|
||||
if(!ismob(G.affecting))
|
||||
return
|
||||
if(src.occupant)
|
||||
to_chat(user, "<span class='boldnotice'>The scanner is already occupied!</span>")
|
||||
return
|
||||
if(G.affecting.abiotic())
|
||||
to_chat(user, "<span class='boldnotice'>Subject cannot have abiotic items on.</span>")
|
||||
return
|
||||
if(G.affecting.has_buckled_mobs()) //mob attached to us
|
||||
to_chat(user, "<span class='warning'>will not fit into the [src] because [G.affecting.p_they()] [G.affecting.p_have()] a slime latched onto [G.affecting.p_their()] head.</span>")
|
||||
return
|
||||
if(panel_open)
|
||||
to_chat(usr, "<span class='boldnotice'>Close the maintenance panel first.</span>")
|
||||
return
|
||||
put_in(G.affecting)
|
||||
src.add_fingerprint(user)
|
||||
qdel(G)
|
||||
return
|
||||
var/obj/item/grab/G = item
|
||||
if(!ismob(G.affecting))
|
||||
return
|
||||
if(src.occupant)
|
||||
to_chat(user, "<span class='boldnotice'>The scanner is already occupied!</span>")
|
||||
return
|
||||
if(G.affecting.abiotic())
|
||||
to_chat(user, "<span class='boldnotice'>Subject cannot have abiotic items on.</span>")
|
||||
return
|
||||
if(G.affecting.has_buckled_mobs()) //mob attached to us
|
||||
to_chat(user, "<span class='warning'>will not fit into the [src] because [G.affecting.p_they()] [G.affecting.p_have()] a slime latched onto [G.affecting.p_their()] head.</span>")
|
||||
return
|
||||
if(panel_open)
|
||||
to_chat(usr, "<span class='boldnotice'>Close the maintenance panel first.</span>")
|
||||
return
|
||||
put_in(G.affecting)
|
||||
src.add_fingerprint(user)
|
||||
qdel(G)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/dna_scannernew/relaymove(mob/user as mob)
|
||||
if(user.incapacitated())
|
||||
@@ -353,7 +353,7 @@
|
||||
SSnanoui.update_uis(src) // update all UIs attached to src()
|
||||
return
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/New()
|
||||
..()
|
||||
|
||||
@@ -29,23 +29,21 @@
|
||||
|
||||
//Cult versions cuase fuck map conflicts
|
||||
/obj/structure/cult/functional
|
||||
max_integrity = 100
|
||||
var/cooldowntime = 0
|
||||
var/health = 100
|
||||
var/death_message = "<span class='warning'>The structure falls apart.</span>" //The message shown when the structure is destroyed
|
||||
var/death_sound = 'sound/items/bikehorn.ogg'
|
||||
var/heathen_message = "You're a huge nerd, go away. Also, a coder forgot to put a message here."
|
||||
var/selection_title = "Oops"
|
||||
var/selection_prompt = "Choose your weapon, nerdwad"
|
||||
var/creation_delay = 2400
|
||||
var/list/choosable_items = list(
|
||||
"A coder forgot to set this" = /obj/item/grown/bananapeel
|
||||
)
|
||||
var/list/choosable_items = list("A coder forgot to set this" = /obj/item/grown/bananapeel)
|
||||
var/creation_message = "A dank smoke comes out, and you pass out. When you come to, you notice a %ITEM%!"
|
||||
|
||||
/obj/structure/cult/functional/proc/destroy_structure()
|
||||
/obj/structure/cult/functional/obj_destruction()
|
||||
visible_message(death_message)
|
||||
playsound(src, death_sound, 50, 1)
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
/obj/structure/cult/functional/examine(mob/user)
|
||||
. = ..()
|
||||
@@ -54,10 +52,6 @@
|
||||
. += "<span class='notice'>\The [src] is [anchored ? "":"not "]secured to the floor.</span>"
|
||||
|
||||
/obj/structure/cult/functional/attackby(obj/I, mob/user, params)
|
||||
if(HULK in user.mutations)
|
||||
to_chat(user, "<span class='danger'>You cannot seem to manipulate this structure with your bulky hands!</span>")
|
||||
return
|
||||
|
||||
if(istype(I, /obj/item/tome) && iscultist(user))
|
||||
anchored = !anchored
|
||||
to_chat(user, "<span class='notice'>You [anchored ? "":"un"]secure \the [src] [anchored ? "to":"from"] the floor.</span>")
|
||||
@@ -66,22 +60,16 @@
|
||||
icon_state = "[initial(icon_state)]_off"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/cult/functional/proc/updatehealth()
|
||||
if(health <= 0)
|
||||
destroy_structure()
|
||||
|
||||
/obj/structure/cult/functional/attackby(obj/item/I, mob/living/user)
|
||||
..()
|
||||
take_damage(I.force, I.damtype)
|
||||
playsound(loc, I.hitsound, 80, 1)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/cult/functional/attack_hand(mob/living/user)
|
||||
if(!iscultist(user))
|
||||
to_chat(user, "[heathen_message]")
|
||||
return
|
||||
if(HULK in user.mutations)
|
||||
to_chat(user, "<span class='danger'>You cannot seem to manipulate this structure with your bulky hands!</span>")
|
||||
return
|
||||
if(!anchored)
|
||||
to_chat(user, "<span class='cultitalic'>You need to anchor [src] to the floor with a tome first.</span>")
|
||||
return
|
||||
@@ -107,7 +95,7 @@
|
||||
name = "altar"
|
||||
desc = "A bloodstained altar dedicated to a cult."
|
||||
icon_state = "talismanaltar"
|
||||
health = 150 //Sturdy
|
||||
max_integrity = 150 //Sturdy
|
||||
death_message = "<span class='warning'>The altar breaks into splinters, releasing a cascade of spirits into the air!</span>"
|
||||
death_sound = 'sound/effects/altar_break.ogg'
|
||||
heathen_message = "<span class='warning'>There is a foreboding aura to the altar and you want nothing to do with it.</span>"
|
||||
@@ -121,7 +109,7 @@
|
||||
name = "daemon forge"
|
||||
desc = "A forge used in crafting the unholy weapons used by the armies of a cult."
|
||||
icon_state = "forge"
|
||||
health = 300 //Made of metal
|
||||
max_integrity = 300 //Made of metal
|
||||
death_message = "<span class='warning'>The forge falls apart, its lava cooling and winking away!</span>"
|
||||
death_sound = 'sound/effects/forge_destroy.ogg'
|
||||
heathen_message = "<span class='warning'>Your hand feels like it's melting off as you try to touch the forge.</span>"
|
||||
@@ -155,8 +143,7 @@
|
||||
C.apply_damage(30, BURN, "head") //30 fire damage because it's FUCKING LAVA
|
||||
head.disfigure() //Your face is unrecognizable because it's FUCKING LAVA
|
||||
return 1
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
var/list/blacklisted_pylon_turfs = typecacheof(list(
|
||||
/turf/simulated/floor/engine/cult,
|
||||
@@ -174,7 +161,7 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
|
||||
icon_state = "pylon"
|
||||
light_range = 5
|
||||
light_color = "#3e0000"
|
||||
health = 50 //Very fragile
|
||||
max_integrity = 50 //Very fragile
|
||||
death_message = "<span class='warning'>The pylon's crystal vibrates and glows fiercely before violently shattering!</span>"
|
||||
death_sound = 'sound/effects/pylon_shatter.ogg'
|
||||
|
||||
@@ -244,7 +231,7 @@ var/list/blacklisted_pylon_turfs = typecacheof(list(
|
||||
name = "archives"
|
||||
desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl."
|
||||
icon_state = "tomealtar"
|
||||
health = 125 //Slightly sturdy
|
||||
max_integrity = 125 //Slightly sturdy
|
||||
death_message = "<span class='warning'>The desk breaks apart, its books falling to the floor.</span>"
|
||||
death_sound = 'sound/effects/wood_break.ogg'
|
||||
heathen_message = "<span class='cultlarge'>What do you hope to seek?</span>"
|
||||
|
||||
@@ -63,7 +63,7 @@ To draw a rune, use an arcane tome.
|
||||
to_chat(user, "<span class='notice'>You carefully erase the [lowertext(cultist_name)] rune.</span>")
|
||||
qdel(src)
|
||||
return
|
||||
else if(istype(I, /obj/item/nullrod))
|
||||
if(istype(I, /obj/item/nullrod))
|
||||
if(iscultist(user))//cultist..what are doing..cultist..staph...
|
||||
user.drop_item()
|
||||
user.visible_message("<span class='warning'>[I] suddenly glows with white light, forcing [user] to drop it in pain!</span>", \
|
||||
@@ -72,6 +72,7 @@ To draw a rune, use an arcane tome.
|
||||
to_chat(user,"<span class='danger'>You disrupt the magic of [src] with [I].</span>")
|
||||
qdel(src)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/effect/rune/attack_hand(mob/living/user)
|
||||
if(!iscultist(user))
|
||||
@@ -541,14 +542,12 @@ var/list/teleport_runes = list()
|
||||
if(do_after(user, 50, target = src)) //Prevents accidental erasures.
|
||||
log_game("Summon Narsie rune erased by [key_name(user)] with a tome")
|
||||
message_admins("[key_name_admin(user)] erased a Narsie rune with a tome")
|
||||
..()
|
||||
return
|
||||
else
|
||||
if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me.
|
||||
log_game("Summon Narsie rune erased by [key_name(user)] using a null rod")
|
||||
message_admins("[key_name_admin(user)] erased a Narsie rune with a null rod")
|
||||
..()
|
||||
return
|
||||
return
|
||||
if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me.
|
||||
log_game("Summon Narsie rune erased by [key_name(user)] using a null rod")
|
||||
message_admins("[key_name_admin(user)] erased a Narsie rune with a null rod")
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
@@ -579,14 +578,12 @@ var/list/teleport_runes = list()
|
||||
if(do_after(user, 50, target = src)) //Prevents accidental erasures.
|
||||
log_game("Summon demon rune erased by [key_name(user)] with a tome")
|
||||
message_admins("[key_name_admin(user)] erased a demon rune with a tome")
|
||||
..()
|
||||
return
|
||||
else
|
||||
if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me.
|
||||
log_game("Summon demon rune erased by [key_name(user)] using a null rod")
|
||||
message_admins("[key_name_admin(user)] erased a demon rune with a null rod")
|
||||
..()
|
||||
return
|
||||
return
|
||||
if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me.
|
||||
log_game("Summon demon rune erased by [key_name(user)] using a null rod")
|
||||
message_admins("[key_name_admin(user)] erased a demon rune with a null rod")
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/effect/rune/slaughter/invoke(var/list/invokers)
|
||||
|
||||
@@ -160,9 +160,10 @@
|
||||
|
||||
/obj/effect/meteor/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/pickaxe))
|
||||
make_debris()
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/meteor/proc/make_debris()
|
||||
for(var/throws = dropamt, throws > 0, throws--)
|
||||
|
||||
@@ -692,7 +692,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
|
||||
for(var/i = 1, i <= framestackamount, i++)
|
||||
new framestack(get_turf(src))
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
if(istype(I, /obj/item/stack/sheet/mineral/abductor))
|
||||
var/obj/item/stack/sheet/P = I
|
||||
if(P.get_amount() < 1)
|
||||
@@ -714,6 +714,8 @@ Congratulations! You are now trained for invasive xenobiology research!"}
|
||||
P.use(1)
|
||||
new /obj/machinery/optable/abductor(loc)
|
||||
qdel(src)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/table/abductor
|
||||
name = "alien table"
|
||||
|
||||
@@ -200,6 +200,8 @@
|
||||
icon_state = "experiment"
|
||||
add_fingerprint(user)
|
||||
qdel(G)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/abductor/experiment/ex_act(severity)
|
||||
if(occupant)
|
||||
|
||||
@@ -88,7 +88,7 @@ var/bomb_set
|
||||
return attack_hand(user)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You need to deploy \the [src] first. Right click on the sprite, select 'Make Deployable' then click on \the [src] with an empty hand.</span>")
|
||||
return
|
||||
return
|
||||
|
||||
if(anchored)
|
||||
switch(removal_stage)
|
||||
@@ -157,7 +157,8 @@ var/bomb_set
|
||||
anchored = 0
|
||||
removal_stage = 5
|
||||
return
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/nuclearbomb/attack_ghost(mob/user as mob)
|
||||
if(extended)
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
user.visible_message("<span class='danger'>[user] seals \the [src] with \the [I].</span>")
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/rend/singularity_pull()
|
||||
return
|
||||
@@ -806,7 +806,8 @@ var/global/list/multiverse = list()
|
||||
link = I
|
||||
to_chat(user, "You attach [I] to the doll.")
|
||||
update_targets()
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/voodoo/check_eye(mob/user as mob)
|
||||
if(loc != user)
|
||||
|
||||
@@ -614,6 +614,7 @@
|
||||
to_chat(user, "<span class='notice'>You feed the contract back into the spellbook, refunding your points.</span>")
|
||||
uses+=2
|
||||
qdel(O)
|
||||
return
|
||||
|
||||
if(istype(O, /obj/item/antag_spawner/slaughter_demon))
|
||||
to_chat(user, "<span class='notice'>On second thought, maybe summoning a demon is a bad idea. You refund your points.</span>")
|
||||
@@ -628,6 +629,7 @@
|
||||
if(!isnull(BB.limit))
|
||||
BB.limit++
|
||||
qdel(O)
|
||||
return
|
||||
|
||||
if(istype(O, /obj/item/antag_spawner/morph))
|
||||
to_chat(user, "<span class='notice'>On second thought, maybe awakening a morph is a bad idea. You refund your points.</span>")
|
||||
@@ -636,6 +638,8 @@
|
||||
if(!isnull(OB.limit))
|
||||
OB.limit++
|
||||
qdel(O)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/spellbook/proc/GetCategoryHeader(var/category)
|
||||
var/dat = ""
|
||||
|
||||
@@ -77,8 +77,8 @@
|
||||
break
|
||||
build_network()
|
||||
update_icon()
|
||||
else
|
||||
return ..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/cold_sink/freezer/update_icon()
|
||||
if(panel_open)
|
||||
@@ -244,8 +244,8 @@
|
||||
break
|
||||
build_network()
|
||||
update_icon()
|
||||
else
|
||||
return ..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/update_icon()
|
||||
if(panel_open)
|
||||
|
||||
@@ -37,21 +37,18 @@
|
||||
return
|
||||
if(istype(user, /mob/living/silicon))
|
||||
return attack_hand(user)
|
||||
else // trying to unlock the interface
|
||||
if(allowed(usr))
|
||||
locked = !locked
|
||||
to_chat(user, "You [locked ? "lock" : "unlock"] the device.")
|
||||
if(locked)
|
||||
if(user.machine == src)
|
||||
user.unset_machine()
|
||||
user << browse(null, "window=ai_slipper")
|
||||
else
|
||||
if(user.machine == src)
|
||||
attack_hand(usr)
|
||||
if(allowed(usr)) // trying to unlock the interface
|
||||
locked = !locked
|
||||
to_chat(user, "You [locked ? "lock" : "unlock"] the device.")
|
||||
if(locked)
|
||||
if(user.machine == src)
|
||||
user.unset_machine()
|
||||
user << browse(null, "window=ai_slipper")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
return
|
||||
return
|
||||
if(user.machine == src)
|
||||
attack_hand(usr)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/ai_slipper/proc/ToggleOn()
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
|
||||
@@ -82,8 +82,8 @@
|
||||
new /obj/item/pipe_gsensor(src.loc)
|
||||
qdel(src)
|
||||
return 1
|
||||
if(..())
|
||||
return 1
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/air_sensor/process_atmos()
|
||||
if(on)
|
||||
@@ -182,8 +182,8 @@
|
||||
/obj/machinery/computer/general_air_control/attackby(I as obj, user as mob, params)
|
||||
if(istype(I, /obj/item/multitool))
|
||||
update_multitool_menu(user)
|
||||
if(..())
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/computer/general_air_control/receive_signal(datum/signal/signal)
|
||||
@@ -386,8 +386,8 @@
|
||||
/obj/machinery/computer/general_air_control/large_tank_control/attackby(I as obj, user as mob)
|
||||
if(istype(I, /obj/item/multitool))
|
||||
update_multitool_menu(user)
|
||||
if(..())
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/computer/general_air_control/large_tank_control/multitool_menu(mob/user, obj/item/multitool/P)
|
||||
@@ -598,8 +598,8 @@
|
||||
/obj/machinery/computer/general_air_control/fuel_injection/attackby(I as obj, user as mob, params)
|
||||
if(istype(I, /obj/item/multitool))
|
||||
update_multitool_menu(user)
|
||||
if(..())
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/general_air_control/fuel_injection/process()
|
||||
if(automation)
|
||||
|
||||
@@ -125,8 +125,7 @@
|
||||
T.loc = src
|
||||
src.holding = T
|
||||
update_icon()
|
||||
return
|
||||
|
||||
return
|
||||
else if(istype(W, /obj/item/wrench))
|
||||
if(connected_port)
|
||||
disconnect()
|
||||
@@ -145,12 +144,11 @@
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Nothing happens.</span>")
|
||||
return
|
||||
|
||||
else if((istype(W, /obj/item/analyzer)) && get_dist(user, src) <= 1)
|
||||
return
|
||||
if((istype(W, /obj/item/analyzer)) && get_dist(user, src) <= 1)
|
||||
atmosanalyzer_scan(air_contents, user)
|
||||
|
||||
return
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/portable_atmospherics/attacked_by(obj/item/I, mob/user)
|
||||
if(I.force < 10 && !(stat & BROKEN))
|
||||
|
||||
@@ -206,8 +206,10 @@
|
||||
to_chat(user, "<span class='notice'>You [anchored ? "wrench" : "unwrench"] \the [src].</span>")
|
||||
return
|
||||
|
||||
else if((istype(W, /obj/item/analyzer)) && get_dist(user, src) <= 1)
|
||||
if((istype(W, /obj/item/analyzer)) && get_dist(user, src) <= 1)
|
||||
atmosanalyzer_scan(air_contents, user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/portable_atmospherics/scrubber/huge/stationary
|
||||
name = "Stationary Air Scrubber"
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
return attack_hand(user)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/driver_button/multitool_menu(var/mob/user, var/obj/item/multitool/P)
|
||||
return {"
|
||||
@@ -178,9 +178,6 @@
|
||||
if(user.can_advanced_admin_interact())
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/ignition_switch/attackby(obj/item/W, mob/user, params)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/ignition_switch/attack_hand(mob/user)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The screws on [name]'s screen won't budge and it emits a warning beep!.</span>")
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/aifixer/attack_ai(var/mob/user as mob)
|
||||
ui_interact(user)
|
||||
|
||||
@@ -406,7 +406,8 @@
|
||||
return
|
||||
else
|
||||
to_chat(user, "DERP! BUG! Report this (And what you were doing to cause it) to Agouri")
|
||||
return
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
if(istype(I,/obj/item/card/id)||istype(I, /obj/item/pda))
|
||||
@@ -440,7 +441,8 @@
|
||||
to_chat(user, "<span class='notice'>Access protocols set to [console_choice].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Access Denied</span>")
|
||||
return
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/computerframe/attackby(obj/item/P as obj, mob/user as mob, params)
|
||||
switch(state)
|
||||
@@ -461,6 +463,7 @@
|
||||
if(!src || !WT.isOn()) return
|
||||
to_chat(user, "<span class='notice'>You deconstruct the frame.</span>")
|
||||
deconstruct(TRUE)
|
||||
return
|
||||
if(1)
|
||||
if(istype(P, /obj/item/wrench))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
@@ -491,6 +494,7 @@
|
||||
icon_state = "0"
|
||||
circuit.loc = loc
|
||||
circuit = null
|
||||
return
|
||||
if(2)
|
||||
if(istype(P, /obj/item/screwdriver) && circuit)
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
@@ -512,7 +516,7 @@
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need five lengths of cable to wire the frame.</span>")
|
||||
return
|
||||
return
|
||||
if(3)
|
||||
if(istype(P, /obj/item/wirecutters))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
@@ -537,7 +541,7 @@
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need two sheets of glass for this.</span>")
|
||||
return
|
||||
return
|
||||
if(4)
|
||||
if(istype(P, /obj/item/crowbar))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
@@ -558,6 +562,8 @@
|
||||
var/obj/item/circuitboard/supplycomp/C = circuit
|
||||
SC.can_order_contraband = C.contraband_enabled
|
||||
qdel(src)
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
@@ -585,6 +591,7 @@
|
||||
if(!src || !WT.isOn()) return
|
||||
to_chat(user, "<span class='notice'>You deconstruct the frame.</span>")
|
||||
deconstruct(TRUE)
|
||||
return
|
||||
if(1)
|
||||
if(istype(P, /obj/item/wrench))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
@@ -615,6 +622,7 @@
|
||||
icon_state = "0"
|
||||
circuit.loc = loc
|
||||
circuit = null
|
||||
return
|
||||
if(2)
|
||||
if(istype(P, /obj/item/screwdriver) && circuit)
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
@@ -636,7 +644,7 @@
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need five lengths of cable to wire the frame.</span>")
|
||||
return
|
||||
return
|
||||
if(3)
|
||||
if(istype(P, /obj/item/wirecutters))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
@@ -661,7 +669,7 @@
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need two sheets of glass for this.</span>")
|
||||
return
|
||||
return
|
||||
if(4)
|
||||
if(istype(P, /obj/item/crowbar))
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
@@ -678,3 +686,5 @@
|
||||
if(circuit.records) B:records = circuit.records
|
||||
if(circuit.frequency) B:frequency = circuit.frequency
|
||||
qdel(src)
|
||||
return
|
||||
return ..()
|
||||
@@ -79,14 +79,6 @@
|
||||
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/computer/security/attackby(obj/item/I, user as mob, params)
|
||||
if(isscrewdriver(I))
|
||||
..()
|
||||
else if(I.GetAccess()) // If hit by something with access.
|
||||
attack_hand(user)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/security/telescreen/attackby(obj/item/I, mob/user, params)
|
||||
if(ismultitool(I))
|
||||
var/direction = input(user, "Which direction?", "Select direction!") as null|anything in list("North", "East", "South", "West", "Centre")
|
||||
@@ -104,7 +96,7 @@
|
||||
if("West")
|
||||
pixel_x = -32
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/security/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
@@ -116,7 +108,7 @@
|
||||
|
||||
/obj/machinery/computer/security/proc/get_user_access(mob/user)
|
||||
var/list/access = list()
|
||||
|
||||
|
||||
if(emagged)
|
||||
access = get_all_accesses() // Assume captain level access when emagged
|
||||
else if(ishuman(user))
|
||||
|
||||
@@ -36,10 +36,10 @@
|
||||
|
||||
if(scanner.occupant && can_autoprocess())
|
||||
scan_mob(scanner.occupant)
|
||||
|
||||
|
||||
if(!LAZYLEN(records))
|
||||
return
|
||||
|
||||
|
||||
for(var/obj/machinery/clonepod/pod in pods)
|
||||
if(!(pod.occupant || pod.mess) && (pod.efficiency > 5))
|
||||
for(var/datum/dna2/record/R in records)
|
||||
@@ -103,8 +103,7 @@
|
||||
P.name = "[initial(P.name)] #[pods.len]"
|
||||
to_chat(user, "<span class='notice'>You connect [P] to [src].</span>")
|
||||
else
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/computer/cloning/attack_ai(mob/user as mob)
|
||||
|
||||
@@ -115,5 +115,4 @@
|
||||
A.icon_state = "4"
|
||||
qdel(src)
|
||||
else
|
||||
src.attack_hand(user)
|
||||
return
|
||||
return ..()
|
||||
@@ -34,7 +34,8 @@
|
||||
O.forceMove(src)
|
||||
scan = O
|
||||
ui_interact(user)
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/med_data/attack_hand(mob/user)
|
||||
if(..())
|
||||
|
||||
@@ -42,9 +42,7 @@
|
||||
//Stops people from just unscrewing the monitor and putting it back to get the console working again.
|
||||
to_chat(user, "<span class='warning'>It is too hot to mess with!</span>")
|
||||
return
|
||||
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/message_monitor/emag_act(user as mob)
|
||||
// Will create sparks and print out the console's password. You will then have to wait a while for the console to be back online.
|
||||
|
||||
@@ -36,10 +36,6 @@
|
||||
moving = 0
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/computer/salvage_ship/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/salvage_ship/attack_ai(mob/user as mob)
|
||||
src.add_hiddenprint(user)
|
||||
return attack_hand(user)
|
||||
|
||||
@@ -35,7 +35,8 @@
|
||||
O.forceMove(src)
|
||||
scan = O
|
||||
ui_interact(user)
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
//Someone needs to break down the dat += into chunks instead of long ass lines.
|
||||
/obj/machinery/computer/secure_data/attack_hand(mob/user)
|
||||
|
||||
@@ -33,7 +33,8 @@
|
||||
O.forceMove(src)
|
||||
scan = O
|
||||
ui_interact(user)
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
//Someone needs to break down the dat += into chunks instead of long ass lines.
|
||||
/obj/machinery/computer/skills/attack_hand(mob/user)
|
||||
|
||||
@@ -254,7 +254,7 @@ var/specops_shuttle_timeleft = 0
|
||||
if(istype(I,/obj/item/card/emag))
|
||||
to_chat(user, "<span class='notice'>The electronic systems in this console are far too advanced for your primitive hacking peripherals.</span>")
|
||||
else
|
||||
return attack_hand(user)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/specops_shuttle/attack_hand(var/mob/user as mob)
|
||||
if(!allowed(user))
|
||||
|
||||
@@ -177,9 +177,6 @@ var/syndicate_elite_shuttle_timeleft = 0
|
||||
if(syndicate_elite_shuttle_moving_to_station || syndicate_elite_shuttle_moving_to_mothership) return 0
|
||||
else return 1
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/attackby(I as obj, user as mob, params)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/attack_ai(var/mob/user as mob)
|
||||
to_chat(user, "<span class='warning'>Access Denied.</span>")
|
||||
return 1
|
||||
@@ -188,7 +185,7 @@ var/syndicate_elite_shuttle_timeleft = 0
|
||||
if(istype(I,/obj/item/card/emag))
|
||||
to_chat(user, "<span class='notice'>The electronic systems in this console are far too advanced for your primitive hacking peripherals.</span>")
|
||||
else
|
||||
return attack_hand(user)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/attack_hand(var/mob/user as mob)
|
||||
if(!allowed(user))
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
playsound(src.loc, P.usesound, 75, 1)
|
||||
to_chat(user, "<span class='notice'>You dismantle the frame.</span>")
|
||||
deconstruct(TRUE)
|
||||
return
|
||||
if(2)
|
||||
if(istype(P, /obj/item/circuitboard))
|
||||
var/obj/item/circuitboard/B = P
|
||||
@@ -111,6 +112,7 @@
|
||||
update_req_desc()
|
||||
else
|
||||
to_chat(user, "<span class='danger'>This frame does not accept circuit boards of this type!</span>")
|
||||
return
|
||||
if(istype(P, /obj/item/wirecutters))
|
||||
playsound(src.loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You remove the cables.</span>")
|
||||
@@ -118,6 +120,8 @@
|
||||
icon_state = "box_0"
|
||||
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil(src.loc,5)
|
||||
A.amount = 5
|
||||
return
|
||||
return
|
||||
|
||||
if(3)
|
||||
if(istype(P, /obj/item/crowbar))
|
||||
@@ -135,6 +139,7 @@
|
||||
req_components = null
|
||||
components = null
|
||||
icon_state = "box_1"
|
||||
return
|
||||
|
||||
if(istype(P, /obj/item/screwdriver))
|
||||
var/component_check = 1
|
||||
@@ -155,7 +160,7 @@
|
||||
circuit.loc = null
|
||||
new_machine.RefreshParts()
|
||||
qdel(src)
|
||||
return
|
||||
return
|
||||
|
||||
if(istype(P, /obj/item/storage/part_replacer) && P.contents.len && get_req_components_amt())
|
||||
var/obj/item/storage/part_replacer/replacer = P
|
||||
@@ -208,6 +213,8 @@
|
||||
if(!success)
|
||||
to_chat(user, "<span class='danger'>You cannot add that to the machine!</span>")
|
||||
return 0
|
||||
return
|
||||
return ..()
|
||||
|
||||
//Machine Frame Circuit Boards
|
||||
/*Common Parts: Parts List: Ignitor, Timer, Infra-red laser, Infra-red sensor, t_scanner, Capacitor, Valve, sensor unit,
|
||||
@@ -329,6 +336,8 @@ to destroy them and players will be able to make replacements.
|
||||
build_path = /obj/machinery/atmospherics/unary/cold_sink/freezer
|
||||
name = "circuit board (Freezer)"
|
||||
to_chat(user, "<span class='notice'>You set the board to cooling.</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/circuitboard/recharger
|
||||
name = "circuit board (Recharger)"
|
||||
@@ -515,6 +524,8 @@ to destroy them and players will be able to make replacements.
|
||||
/obj/item/circuitboard/smartfridge/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/screwdriver))
|
||||
set_type(null, user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/circuitboard/smartfridge/proc/set_type(typepath, mob/user)
|
||||
var/new_name = ""
|
||||
@@ -804,6 +815,8 @@ to destroy them and players will be able to make replacements.
|
||||
if(L.locked_location)
|
||||
target = get_turf(L.locked_location)
|
||||
to_chat(user, "<span class='caution'>You upload the data from [L]</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/circuitboard/telesci_pad
|
||||
name = "Circuit board (Telepad)"
|
||||
@@ -1057,6 +1070,8 @@ to destroy them and players will be able to make replacements.
|
||||
/obj/item/circuitboard/logic_gate/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/screwdriver))
|
||||
set_type(null, user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/circuitboard/logic_gate/proc/set_type(typepath, mob/user)
|
||||
var/new_name = "Logic Base"
|
||||
|
||||
@@ -300,6 +300,7 @@
|
||||
beaker = B
|
||||
add_attack_logs(user, null, "Added [B] containing [B.reagents.log_list()] to a cryo cell at [COORD(src)]")
|
||||
user.visible_message("[user] adds \a [B] to [src]!", "You add \a [B] to [src]!")
|
||||
return
|
||||
|
||||
|
||||
if(istype(G, /obj/item/screwdriver))
|
||||
@@ -312,7 +313,8 @@
|
||||
if(exchange_parts(user, G))
|
||||
return
|
||||
|
||||
default_deconstruction_crowbar(G)
|
||||
if(default_deconstruction_crowbar(G))
|
||||
return
|
||||
|
||||
if(istype(G, /obj/item/grab))
|
||||
var/obj/item/grab/GG = G
|
||||
@@ -327,7 +329,8 @@
|
||||
var/mob/M = GG.affecting
|
||||
if(put_mob(M))
|
||||
qdel(GG)
|
||||
return
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/cryo_cell/update_icon()
|
||||
handle_update_icon()
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
density = 0
|
||||
interact_offline = 1
|
||||
req_one_access = list(access_heads, access_armory) //Heads of staff or the warden can go here to claim recover items from their department that people went were cryodormed with.
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
flags = NODECONSTRUCT
|
||||
var/mode = null
|
||||
|
||||
//Used for logging people entering cryosleep and important items they are carrying.
|
||||
@@ -193,7 +195,8 @@
|
||||
icon_state = "body_scanner_0"
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
flags = NODECONSTRUCT
|
||||
var/base_icon_state = "body_scanner_0"
|
||||
var/occupied_icon_state = "body_scanner_1"
|
||||
var/on_store_message = "has entered long-term storage."
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
to_chat(user,"<span class='notice'>You unsecure and disconnect [src].</span>")
|
||||
anchored = FALSE
|
||||
playsound(src, 'sound/items/deconstruct.ogg', 50, 1)
|
||||
return
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/disco/update_icon()
|
||||
|
||||
@@ -37,23 +37,9 @@
|
||||
to_chat(user, "Error, no route to host.")
|
||||
|
||||
/obj/machinery/door_control/attackby(obj/item/W, mob/user as mob, params)
|
||||
/* For later implementation
|
||||
if(istype(W, /obj/item/screwdriver))
|
||||
{
|
||||
if(wiresexposed)
|
||||
icon_state = "doorctrl0"
|
||||
wiresexposed = 0
|
||||
|
||||
else
|
||||
icon_state = "doorctrl-open"
|
||||
wiresexposed = 1
|
||||
|
||||
return
|
||||
}
|
||||
*/
|
||||
if(istype(W, /obj/item/detective_scanner))
|
||||
return
|
||||
return attack_hand(user)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door_control/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
if(istype(I, /obj/item/card/id) || istype(I, /obj/item/pda))
|
||||
attack_hand(user)
|
||||
return
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/access_button/attack_ghost(mob/user)
|
||||
if(user.can_advanced_admin_interact())
|
||||
|
||||
@@ -51,12 +51,13 @@ var/list/doppler_arrays = list()
|
||||
power_change()
|
||||
to_chat(user, "<span class='notice'>You unfasten [src].</span>")
|
||||
playsound(loc, I.usesound, 50, 1)
|
||||
return
|
||||
if(istype(I, /obj/item/disk/tech_disk))
|
||||
var/obj/item/disk/tech_disk/disk = I
|
||||
disk.load_tech(toxins_tech)
|
||||
to_chat(user, "<span class='notice'>You swipe the disk into [src].</span>")
|
||||
else
|
||||
return ..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/doppler_array/attack_hand(mob/user)
|
||||
if(..())
|
||||
|
||||
@@ -46,8 +46,8 @@
|
||||
user.visible_message("<span class='notice'>[user] fills the [HD] up with some dye.</span>","<span class='notice'>You fill the [HD] up with some hair dye.</span>")
|
||||
HD.dye_color = dye_color
|
||||
HD.update_dye_overlay()
|
||||
else
|
||||
return ..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
//Hair Dye Bottle
|
||||
|
||||
|
||||
@@ -142,8 +142,8 @@ FIRE ALARM
|
||||
playsound(get_turf(src), I.usesound, 50, 1)
|
||||
qdel(src)
|
||||
|
||||
else
|
||||
return ..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/firealarm/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
|
||||
. = ..()
|
||||
|
||||
@@ -135,9 +135,6 @@
|
||||
if(user.can_advanced_admin_interact())
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/flasher_button/attackby(obj/item/W, mob/user as mob, params)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/flasher_button/attack_hand(mob/user as mob)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
@@ -106,6 +106,8 @@
|
||||
"<span class='notice'> You have loosened \the [src]'s casters.</span>", \
|
||||
"You hear ratchet.")
|
||||
anchored = FALSE
|
||||
updateicon()
|
||||
return
|
||||
if(istype(W, /obj/item/screwdriver))
|
||||
if(!open)
|
||||
if(unlocked)
|
||||
@@ -114,7 +116,8 @@
|
||||
else
|
||||
unlocked = TRUE
|
||||
to_chat(user, "You unscrew the battery panel.")
|
||||
|
||||
updateicon()
|
||||
return
|
||||
if(istype(W, /obj/item/crowbar))
|
||||
if(unlocked)
|
||||
if(open)
|
||||
@@ -125,7 +128,8 @@
|
||||
if(unlocked)
|
||||
open = TRUE
|
||||
to_chat(user, "You remove the battery panel.")
|
||||
|
||||
updateicon()
|
||||
return
|
||||
if(istype(W, /obj/item/stock_parts/cell))
|
||||
if(open)
|
||||
if(cell)
|
||||
@@ -135,7 +139,9 @@
|
||||
W.loc = src
|
||||
cell = W
|
||||
to_chat(user, "You insert the power cell.")
|
||||
updateicon()
|
||||
updateicon()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/floodlight/extinguish_light()
|
||||
on = 0
|
||||
|
||||
@@ -99,5 +99,4 @@
|
||||
|
||||
if(default_deconstruction_crowbar(I, ignore_panel = TRUE))
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
@@ -57,8 +57,8 @@
|
||||
updateUsrDialog()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There is already ID card inside.</span>")
|
||||
else
|
||||
return ..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/guestpass/proc/get_changeable_accesses()
|
||||
return giver.access
|
||||
|
||||
@@ -111,8 +111,7 @@ var/list/holopads = list()
|
||||
|
||||
if(default_deconstruction_crowbar(I))
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/hologram/holopad/attack_hand(mob/living/carbon/human/user)
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
/obj/machinery/holosign_switch/attackby(obj/item/W, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/detective_scanner))
|
||||
return
|
||||
return src.attack_hand(user)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/holosign_switch/attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
@@ -90,8 +90,8 @@
|
||||
icon_state = "[base_state]"
|
||||
else
|
||||
icon_state = "[base_state]-p"
|
||||
else
|
||||
return ..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/sparker/attack_ai()
|
||||
if(src.anchored)
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
return src.attack_hand(user)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/light_switch/multitool_menu(var/mob/user, var/obj/item/multitool/P)
|
||||
return {"
|
||||
|
||||
@@ -122,6 +122,7 @@
|
||||
build++
|
||||
update_icon()
|
||||
return 1
|
||||
return
|
||||
if(1) // Fixed to the floor
|
||||
if(istype(W, /obj/item/wrench))
|
||||
to_chat(user, "You begin to de-anchor \the [src] from the floor.")
|
||||
@@ -144,6 +145,7 @@
|
||||
build++
|
||||
update_icon()
|
||||
return 1
|
||||
return
|
||||
if(2) // Welded to the floor
|
||||
if(istype(W, /obj/item/weldingtool))
|
||||
var/obj/item/weldingtool/WT = W
|
||||
@@ -165,6 +167,7 @@
|
||||
to_chat(user, "<span class='notice'>You've added cables to \the [src].</span>")
|
||||
build++
|
||||
update_icon()
|
||||
return
|
||||
if(3) // Wired
|
||||
if(istype(W, /obj/item/wirecutters))
|
||||
to_chat(user, "You begin to remove the wiring from \the [src].")
|
||||
@@ -185,6 +188,7 @@
|
||||
build++
|
||||
update_icon()
|
||||
return 1
|
||||
return
|
||||
if(4) // Grille in place
|
||||
if(istype(W, /obj/item/crowbar))
|
||||
to_chat(user, "You begin to pry off the grille from \the [src]...")
|
||||
@@ -201,7 +205,8 @@
|
||||
M.dir = src.dir
|
||||
qdel(src)
|
||||
return 1
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/mass_driver_frame/update_icon()
|
||||
icon_state = "mass_driver_b[build]"
|
||||
|
||||
@@ -799,6 +799,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
scribble = s
|
||||
attack_self(user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
////////////////////////////////////helper procs
|
||||
|
||||
@@ -324,8 +324,6 @@
|
||||
return rotate()
|
||||
|
||||
/obj/item/pipe/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
|
||||
..()
|
||||
|
||||
if(!istype(W, /obj/item/wrench))
|
||||
return ..()
|
||||
|
||||
@@ -526,8 +524,6 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/obj/item/pipe_meter/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
|
||||
..()
|
||||
|
||||
if(!istype(W, /obj/item/wrench))
|
||||
return ..()
|
||||
if(!locate(/obj/machinery/atmospherics/pipe, src.loc))
|
||||
@@ -553,7 +549,6 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
|
||||
/obj/item/pipe_gsensor/attackby(var/obj/item/W as obj, var/mob/user as mob)
|
||||
..()
|
||||
if(!istype(W, /obj/item/wrench))
|
||||
return ..()
|
||||
new/obj/machinery/air_sensor( src.loc )
|
||||
|
||||
@@ -13,9 +13,6 @@
|
||||
idle_power_usage = 50 //when inactive, this turret takes up constant 50 Equipment power
|
||||
active_power_usage = 300 //when active, this turret takes up constant 300 Equipment power
|
||||
power_channel = EQUIP //drains power from the EQUIPMENT channel
|
||||
|
||||
max_integrity = 160 //the turret's health
|
||||
integrity_failure = 80
|
||||
armor = list(melee = 50, bullet = 30, laser = 30, energy = 30, bomb = 30, bio = 0, rad = 0, fire = 90, acid = 90)
|
||||
var/raised = 0 //if the turret cover is "open" and the turret is raised
|
||||
var/raising= 0 //if the turret is currently opening or closing its cover
|
||||
@@ -418,6 +415,29 @@ var/list/turret_icons
|
||||
|
||||
..()
|
||||
|
||||
/obj/machinery/porta_turret/attack_animal(mob/living/simple_animal/M)
|
||||
M.changeNext_move(CLICK_CD_MELEE)
|
||||
M.do_attack_animation(src)
|
||||
if(M.melee_damage_upper == 0 || (M.melee_damage_type != BRUTE && M.melee_damage_type != BURN))
|
||||
return
|
||||
if(!(stat & BROKEN))
|
||||
visible_message("<span class='danger'>[M] [M.attacktext] [src]!</span>")
|
||||
take_damage(M.melee_damage_upper)
|
||||
else
|
||||
to_chat(M, "<span class='danger'>That object is useless to you.</span>")
|
||||
return
|
||||
|
||||
/obj/machinery/porta_turret/attack_alien(mob/living/carbon/alien/humanoid/M)
|
||||
M.changeNext_move(CLICK_CD_MELEE)
|
||||
M.do_attack_animation(src)
|
||||
if(!(stat & BROKEN))
|
||||
playsound(src.loc, 'sound/weapons/slash.ogg', 25, 1, -1)
|
||||
visible_message("<span class='danger'>[M] has slashed at [src]!</span>")
|
||||
take_damage(15)
|
||||
else
|
||||
to_chat(M, "<span class='noticealien'>That object is useless to you.</span>")
|
||||
return
|
||||
|
||||
/obj/machinery/porta_turret/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
//Emagging the turret makes it go bonkers and stun everyone. It also makes
|
||||
@@ -432,6 +452,33 @@ var/list/turret_icons
|
||||
sleep(60) //6 seconds for the traitor to gtfo of the area before the turret decides to ruin his shit
|
||||
enabled = 1 //turns it back on. The cover popUp() popDown() are automatically called in process(), no need to define it here
|
||||
|
||||
/obj/machinery/porta_turret/take_damage(force)
|
||||
if(!raised && !raising)
|
||||
force = force / 8
|
||||
if(force < 5)
|
||||
return
|
||||
|
||||
health -= force
|
||||
if(force > 5 && prob(45) && spark_system)
|
||||
spark_system.start()
|
||||
if(health <= 0)
|
||||
die() //the death process :(
|
||||
|
||||
/obj/machinery/porta_turret/bullet_act(obj/item/projectile/Proj)
|
||||
if(Proj.damage_type == STAMINA)
|
||||
return
|
||||
|
||||
if(enabled)
|
||||
if(!attacked && !emagged)
|
||||
attacked = 1
|
||||
spawn(60)
|
||||
attacked = 0
|
||||
|
||||
..()
|
||||
|
||||
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
||||
take_damage(Proj.damage)
|
||||
|
||||
/obj/machinery/porta_turret/emp_act(severity)
|
||||
if(enabled && emp_vulnerable)
|
||||
//if the turret is on, the EMP no matter how severe disables the turret for a while
|
||||
@@ -451,21 +498,6 @@ var/list/turret_icons
|
||||
|
||||
..()
|
||||
|
||||
/obj/machinery/porta_turret/take_damage(damage, damage_type = BRUTE, damage_flag = 0, sound_effect = 1)
|
||||
. = ..()
|
||||
if(. && obj_integrity > 0) //damage received
|
||||
if(prob(30))
|
||||
spark_system.start()
|
||||
if(enabled && !attacked && !emagged)
|
||||
attacked = TRUE
|
||||
addtimer(CALLBACK(src, .proc/reset_attacked), 60)
|
||||
|
||||
/obj/machinery/porta_turret/proc/reset_attacked()
|
||||
attacked = FALSE
|
||||
|
||||
/obj/machinery/porta_turret/deconstruct(disassembled = TRUE)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/porta_turret/ex_act(severity)
|
||||
switch(severity)
|
||||
if(1)
|
||||
@@ -1047,4 +1079,4 @@ var/list/turret_icons
|
||||
desc = "Syndicate exterior defense turret chambered for 4.6x30mm rounds. Designed to be fitted to assault pods, it uses low calliber bullets to save space."
|
||||
health = 100
|
||||
projectile = /obj/item/projectile/bullet/weakbullet3
|
||||
eprojectile = /obj/item/projectile/bullet/weakbullet3
|
||||
eprojectile = /obj/item/projectile/bullet/weakbullet3
|
||||
@@ -305,6 +305,7 @@
|
||||
return
|
||||
if(panel_open)
|
||||
wires.Interact(user)
|
||||
return
|
||||
|
||||
if(state_open)
|
||||
if(store_item(I, user))
|
||||
@@ -313,6 +314,8 @@
|
||||
to_chat(user, "<span class='notice'>You load the [I] into the storage compartment.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The unit already contains that item.</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/suit_storage_unit/proc/store_item(obj/item/I, mob/user)
|
||||
|
||||
@@ -208,8 +208,9 @@
|
||||
A.icon_state = "4"
|
||||
A.anchored = 1
|
||||
qdel(src)
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
updateUsrDialog()
|
||||
return
|
||||
return ..()
|
||||
|
||||
emag_act(user as mob)
|
||||
if(!emagged)
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
to_chat(user, "You unfasten the bolts.")
|
||||
playsound(src.loc, P.usesound, 50, 1)
|
||||
construct_op++
|
||||
return
|
||||
if(1)
|
||||
if(istype(P, /obj/item/screwdriver))
|
||||
to_chat(user, "You fasten the bolts.")
|
||||
@@ -32,6 +33,7 @@
|
||||
to_chat(user, "You dislodge the external plating.")
|
||||
playsound(src.loc, P.usesound, 75, 1)
|
||||
construct_op++
|
||||
return
|
||||
if(2)
|
||||
if(istype(P, /obj/item/wrench))
|
||||
to_chat(user, "You secure the external plating.")
|
||||
@@ -44,6 +46,7 @@
|
||||
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( user.loc )
|
||||
A.amount = 5
|
||||
stat |= BROKEN // the machine's been borked!
|
||||
return
|
||||
if(3)
|
||||
if(istype(P, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/cable_coil/A = P
|
||||
@@ -56,6 +59,7 @@
|
||||
qdel(A)
|
||||
construct_op--
|
||||
stat &= ~BROKEN // the machine's not borked anymore!
|
||||
return
|
||||
if(istype(P, /obj/item/crowbar))
|
||||
to_chat(user, "You begin prying out the circuit board other components...")
|
||||
playsound(src.loc, P.usesound, 50, 1)
|
||||
@@ -85,6 +89,8 @@
|
||||
var/obj/machinery/constructable_frame/machine_frame/F = new
|
||||
F.loc = src.loc
|
||||
qdel(src)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/telecomms/proc/formatInput(var/label,var/varname, var/input)
|
||||
var/value = vars[varname]
|
||||
|
||||
@@ -150,8 +150,9 @@
|
||||
A.icon_state = "4"
|
||||
A.anchored = 1
|
||||
qdel(src)
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
updateUsrDialog()
|
||||
return
|
||||
return ..()
|
||||
|
||||
emag_act(user as mob)
|
||||
if(!emagged)
|
||||
|
||||
@@ -13,10 +13,9 @@
|
||||
/obj/machinery/computer/telecomms/traffic/attackby(obj/item/I, mob/user)
|
||||
if(ismultitool(I))
|
||||
unlocked = !unlocked
|
||||
to_chat(user, "<span class='notice'>This computer is now [unlocked ? "<span class='good'>Unlocked</span>" : "<span class='bad'>Locked</span>"]. \
|
||||
Reopen the UI to see the difference.</span>")
|
||||
to_chat(user, "<span class='notice'>This computer is now [unlocked ? "<span class='good'>Unlocked</span>" : "<span class='bad'>Locked</span>"]. Reopen the UI to see the difference.</span>")
|
||||
return
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/telecomms/traffic/attack_hand(mob/user)
|
||||
interact(user)
|
||||
@@ -26,7 +25,7 @@ Reopen the UI to see the difference.</span>")
|
||||
return 0
|
||||
|
||||
if(GLOB.nttc_config.valid_languages.len == 1)
|
||||
GLOB.nttc_config.update_languages() // this is silly but it has to be done because NTTC inits before languages do
|
||||
GLOB.nttc_config.update_languages() // this is silly but it has to be done because NTTC inits before languages do
|
||||
|
||||
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/nttc)
|
||||
assets.send(user)
|
||||
|
||||
@@ -208,10 +208,11 @@
|
||||
user.drop_item()
|
||||
crayon = W
|
||||
crayon.loc = src
|
||||
update_icon()
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
else if(istype(W,/obj/item/grab))
|
||||
if( (state == 1) && hacked)
|
||||
var/obj/item/grab/G = W
|
||||
@@ -219,8 +220,9 @@
|
||||
G.affecting.loc = src
|
||||
qdel(G)
|
||||
state = 3
|
||||
update_icon()
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
else if(istype(W,/obj/item/stack/sheet/hairlesshide) || \
|
||||
istype(W,/obj/item/clothing/under) || \
|
||||
istype(W,/obj/item/clothing/mask) || \
|
||||
@@ -283,9 +285,9 @@
|
||||
to_chat(user, "<span class='notice'>You can't put the item in right now.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>The washing machine is full.</span>")
|
||||
update_icon()
|
||||
else
|
||||
..()
|
||||
update_icon()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/washing_machine/attack_hand(mob/user as mob)
|
||||
switch(state)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
/obj/item/mecha_parts/chassis/attackby(obj/item/W, mob/user, params)
|
||||
if(!construct || !construct.action(W, user))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/mecha_parts/chassis/attack_hand()
|
||||
return
|
||||
|
||||
@@ -76,8 +76,7 @@
|
||||
else
|
||||
to_chat(user, "You don't see anything that can be pried with [W].")
|
||||
else
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/effect/decal/mecha_wreckage/gygax
|
||||
|
||||
@@ -94,6 +94,8 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You carefully remove the poster from the wall.</span>")
|
||||
roll_and_drop(user.loc)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/sign/poster/attack_hand(mob/user)
|
||||
if(ruined)
|
||||
|
||||
@@ -39,13 +39,13 @@
|
||||
src.overlays += image(src.icon, "bodybag_label")
|
||||
else
|
||||
src.name = "body bag"
|
||||
//..() //Doesn't need to run the parent. Since when can fucking bodybags be welded shut? -Agouri
|
||||
return
|
||||
else if(istype(W, /obj/item/wirecutters))
|
||||
if(istype(W, /obj/item/wirecutters))
|
||||
to_chat(user, "You cut the tag off the bodybag")
|
||||
src.name = "body bag"
|
||||
src.overlays.Cut()
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/structure/closet/body_bag/close()
|
||||
|
||||
@@ -32,23 +32,27 @@
|
||||
|
||||
|
||||
/obj/item/candle/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weldingtool))
|
||||
var/obj/item/weldingtool/WT = W
|
||||
if(WT.isOn()) //Badasses dont get blinded by lighting their candle with a welding tool
|
||||
light("<span class='notice'>[user] casually lights [src] with [WT], what a badass.")
|
||||
else if(istype(W, /obj/item/lighter))
|
||||
return
|
||||
if(istype(W, /obj/item/lighter))
|
||||
var/obj/item/lighter/L = W
|
||||
if(L.lit)
|
||||
light("<span class='notice'>After some fiddling, [user] manages to light [src] with [L].</span>")
|
||||
else if(istype(W, /obj/item/match))
|
||||
return
|
||||
if(istype(W, /obj/item/match))
|
||||
var/obj/item/match/M = W
|
||||
if(M.lit)
|
||||
light("<span class='notice'>[user] lights [src] with [M]</span>")
|
||||
else if(istype(W, /obj/item/candle))
|
||||
return
|
||||
if(istype(W, /obj/item/candle))
|
||||
var/obj/item/candle/C = W
|
||||
if(C.lit)
|
||||
light("<span class='notice'>[user] tilts [C] and lights [src] with it.</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/candle/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var/rolled = FALSE
|
||||
|
||||
/obj/item/flag/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
. = ..()
|
||||
if(is_hot(W) && !(resistance_flags & ON_FIRE))
|
||||
user.visible_message("<span class='notice'>[user] lights [src] with [W].</span>", "<span class='notice'>You light [src] with [W].</span>", "<span class='warning'>You hear a low whoosh.</span>")
|
||||
fire_act()
|
||||
@@ -251,7 +251,7 @@
|
||||
boobytrap = null
|
||||
trapper = null
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/flag/chameleon/attackby(obj/item/W, mob/user, params)
|
||||
if(is_hot(W) && !(resistance_flags & ON_FIRE) && boobytrap && trapper)
|
||||
@@ -260,7 +260,7 @@
|
||||
message_admins("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
|
||||
log_game("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).")
|
||||
investigate_log("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).", INVESTIGATE_BOMB)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/flag/chameleon/burn()
|
||||
if(boobytrap)
|
||||
|
||||
@@ -6,23 +6,26 @@
|
||||
mount_reqs = list("simfloor", "nospace")
|
||||
|
||||
/obj/item/mounted/frame/apc_frame/try_build(turf/on_wall, mob/user)
|
||||
if(..())
|
||||
var/turf/turf_loc = get_turf(user)
|
||||
var/area/area_loc = turf_loc.loc
|
||||
if(area_loc.get_apc())
|
||||
to_chat(user, "<span class='warning'>This area already has an APC.</span>")
|
||||
return //only one APC per area
|
||||
for(var/obj/machinery/power/terminal/T in turf_loc)
|
||||
if(T.master)
|
||||
to_chat(user, "<span class='warning'>There is another network terminal here.</span>")
|
||||
return
|
||||
else
|
||||
var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(turf_loc)
|
||||
C.amount = 10
|
||||
to_chat(user, "You cut the cables and disassemble the unused power terminal.")
|
||||
qdel(T)
|
||||
return 1
|
||||
return
|
||||
if(!..())
|
||||
return
|
||||
var/turf/T = get_turf(user)
|
||||
var/area/A = get_area(T)
|
||||
if(A.get_apc())
|
||||
to_chat(user, "<span class='warning'>This area already has an APC!</span>")
|
||||
return //only one APC per area
|
||||
if(!A.requires_power)
|
||||
to_chat(user, "<span class='warning'>You cannot place [src] in this area!</span>")
|
||||
return //can't place apcs in areas with no power requirement
|
||||
for(var/obj/machinery/power/terminal/E in T)
|
||||
if(E.master)
|
||||
to_chat(user, "<span class='warning'>There is another network terminal here!</span>")
|
||||
return
|
||||
else
|
||||
var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(T)
|
||||
C.amount = 10
|
||||
to_chat(user, "<span class='notice'>You cut the cables and disassemble the unused power terminal.</span>")
|
||||
qdel(E)
|
||||
return TRUE
|
||||
|
||||
/obj/item/mounted/frame/apc_frame/do_build(turf/on_wall, mob/user)
|
||||
new /obj/machinery/power/apc(get_turf(src), get_dir(user, on_wall), 1)
|
||||
|
||||
@@ -74,9 +74,6 @@
|
||||
|
||||
|
||||
/obj/structure/sign/barsign/attackby(var/obj/item/I, var/mob/user)
|
||||
if(!allowed(user))
|
||||
to_chat(user, "<span class = 'info'>Access denied.</span>")
|
||||
return
|
||||
if( istype(I, /obj/item/screwdriver))
|
||||
if(!panel_open)
|
||||
to_chat(user, "<span class='notice'>You open the maintenance panel.</span>")
|
||||
@@ -106,6 +103,8 @@
|
||||
broken = 0
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need at least two lengths of cable!</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
coat.loc = src
|
||||
update_icon()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You cannot hang [W] on [src]</span>")
|
||||
return ..()
|
||||
|
||||
/obj/structure/coatrack/CanPass(atom/movable/mover, turf/target, height=0)
|
||||
|
||||
@@ -213,6 +213,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Out of charges.</span>")
|
||||
return
|
||||
return
|
||||
|
||||
if(opened)
|
||||
if(istype(W, /obj/item/grab))
|
||||
@@ -258,8 +259,10 @@
|
||||
update_icon()
|
||||
for(var/mob/M in viewers(src))
|
||||
M.show_message("<span class='warning'>[src] has been [welded?"welded shut":"unwelded"] by [user.name].</span>", 3, "You hear welding.", 2)
|
||||
else
|
||||
else if(user.a_intent != INTENT_HARM)
|
||||
attack_hand(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/MouseDrop_T(atom/movable/O, mob/user)
|
||||
..()
|
||||
|
||||
@@ -86,4 +86,4 @@
|
||||
else if((istype(W, /obj/item/card/emag) || istype(W, /obj/item/melee/energy/blade)) && !broken)
|
||||
emag_act(user)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Access Denied</span>")
|
||||
return ..()
|
||||
|
||||
@@ -86,9 +86,11 @@
|
||||
else if((istype(W, /obj/item/card/emag)||istype(W, /obj/item/melee/energy/blade)) && !broken)
|
||||
emag_act(user)
|
||||
else if(istype(W,/obj/item/stack/packageWrap) || istype(W,/obj/item/weldingtool))
|
||||
return ..(W,user)
|
||||
else
|
||||
return ..(W, user)
|
||||
else if(user.a_intent != INTENT_HARM)
|
||||
togglelock(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/secure_closet/emag_act(mob/user)
|
||||
if(!broken)
|
||||
|
||||
@@ -176,7 +176,10 @@
|
||||
playsound(loc, W.usesound, 100, 1)
|
||||
rigged = FALSE
|
||||
return
|
||||
else return attack_hand(user)
|
||||
else if(user.a_intent != INTENT_HARM)
|
||||
attack_hand(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/singularity_act()
|
||||
dump_contents()
|
||||
@@ -464,7 +467,7 @@
|
||||
"<span class='notice'>You have secured [src]'s floor casters.</span>")
|
||||
anchored = TRUE
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/crate/radiation
|
||||
desc = "A crate with a radiation sign on it."
|
||||
|
||||
@@ -45,8 +45,10 @@
|
||||
"<span class='notice'>You pry open \the [src].</span>", \
|
||||
"<span class='notice'>You hear splitting wood.</span>")
|
||||
qdel(src)
|
||||
else if(user.a_intent != INTENT_HARM)
|
||||
attack_hand(user)
|
||||
else
|
||||
return attack_hand(user)
|
||||
return ..()
|
||||
|
||||
/obj/structure/largecrate/mule
|
||||
|
||||
@@ -56,7 +58,7 @@
|
||||
/obj/structure/largecrate/lisa/attackby(obj/item/W as obj, mob/user as mob) //ugly but oh well
|
||||
if(istype(W, /obj/item/crowbar))
|
||||
new /mob/living/simple_animal/pet/dog/corgi/Lisa(loc)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/largecrate/cow
|
||||
name = "cow crate"
|
||||
@@ -65,7 +67,7 @@
|
||||
/obj/structure/largecrate/cow/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/crowbar))
|
||||
new /mob/living/simple_animal/cow(loc)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/largecrate/goat
|
||||
name = "goat crate"
|
||||
@@ -74,7 +76,7 @@
|
||||
/obj/structure/largecrate/goat/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/crowbar))
|
||||
new /mob/living/simple_animal/hostile/retaliate/goat(loc)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/largecrate/chick
|
||||
name = "chicken crate"
|
||||
@@ -85,7 +87,7 @@
|
||||
var/num = rand(4, 6)
|
||||
for(var/i = 0, i < num, i++)
|
||||
new /mob/living/simple_animal/chick(loc)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/largecrate/cat
|
||||
name = "cat crate"
|
||||
@@ -94,4 +96,4 @@
|
||||
/obj/structure/largecrate/cat/attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/crowbar))
|
||||
new /mob/living/simple_animal/pet/cat(loc)
|
||||
..()
|
||||
return ..()
|
||||
@@ -68,7 +68,7 @@
|
||||
to_chat(user, "<span class='notice'>You cut apart [src].</span>")
|
||||
deconstruct()
|
||||
else
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/curtain/deconstruct(disassembled = TRUE)
|
||||
new /obj/item/stack/sheet/cloth(loc, 2)
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
part = null
|
||||
qdel(src)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/chair/e_chair/verb/activate_e_chair()
|
||||
set name = "Activate Electric Chair"
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
else
|
||||
playsound(loc, 'sound/machines/click.ogg', 15, TRUE, -3)
|
||||
opened = !opened
|
||||
update_icon()
|
||||
else if(istype(O, /obj/item/weldingtool))
|
||||
if(has_extinguisher)
|
||||
to_chat(user, "<span class='warning'>You need to remove the extinguisher before deconstructing the cabinet!</span>")
|
||||
@@ -95,10 +96,13 @@
|
||||
"<span class='notice'>You cut [src] apart with [WT].</span>",
|
||||
"<span class='italics'>You hear welding.</span>")
|
||||
deconstruct(TRUE)
|
||||
else
|
||||
else if(user.a_intent != INTENT_HARM)
|
||||
playsound(loc, 'sound/machines/click.ogg', 15, TRUE, -3)
|
||||
opened = !opened
|
||||
update_icon()
|
||||
update_icon()
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/structure/extinguisher_cabinet/attack_hand(mob/user)
|
||||
if(isrobot(user) || isalien(user))
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
new/obj/item/stack/sheet/metal(drop_location())
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/fluff/empty_terrarium //Empty terrariums are created when a preserved terrarium in a lavaland seed vault is activated.
|
||||
name = "empty terrarium"
|
||||
|
||||
@@ -451,6 +451,8 @@
|
||||
var/turf/T = get_turf(src)
|
||||
T.ChangeTurf(/turf/simulated/wall/cult)
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/girder/cult/narsie_act()
|
||||
return
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
new /obj/structure/kitchenspike(loc)
|
||||
add_fingerprint(user)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/structure/kitchenspike
|
||||
@@ -62,16 +65,15 @@
|
||||
return
|
||||
if(has_buckled_mobs())
|
||||
to_chat(user, "<span class = 'danger'>The spike already has something on it, finish collecting its meat first!</span>")
|
||||
else
|
||||
if(isliving(G.affecting))
|
||||
if(!has_buckled_mobs())
|
||||
if(do_mob(user, src, 120))
|
||||
if(spike(G.affecting))
|
||||
G.affecting.visible_message("<span class='danger'>[user] slams [G.affecting] onto the meat spike!</span>", "<span class='userdanger'>[user] slams you onto the meat spike!</span>", "<span class='italics'>You hear a squishy wet noise.</span>")
|
||||
qdel(G)
|
||||
return
|
||||
to_chat(user, "<span class='danger'>You can't use that on the spike!</span>")
|
||||
return
|
||||
if(isliving(G.affecting))
|
||||
if(!has_buckled_mobs())
|
||||
if(do_mob(user, src, 120))
|
||||
if(spike(G.affecting))
|
||||
G.affecting.visible_message("<span class='danger'>[user] slams [G.affecting] onto the meat spike!</span>", "<span class='userdanger'>[user] slams you onto the meat spike!</span>", "<span class='italics'>You hear a squishy wet noise.</span>")
|
||||
qdel(G)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/kitchenspike/proc/spike(mob/living/victim)
|
||||
|
||||
|
||||
@@ -11,9 +11,6 @@
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
return attack_hand(user)
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
to_chat(user, "Civilians: NT is recruiting! Please head SOUTH to the NT Recruitment office to join the station's crew!")
|
||||
|
||||
@@ -26,11 +23,6 @@
|
||||
anchored = 1
|
||||
density = 0
|
||||
|
||||
attackby(obj/item/W as obj, mob/user as mob, params)
|
||||
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
attack_hand(mob/user as mob)
|
||||
|
||||
|
||||
|
||||
@@ -32,4 +32,6 @@
|
||||
to_chat(user, "<span class='notice'>You wet the mop</span>")
|
||||
playsound(src.loc, 'sound/effects/slosh.ogg', 25, 1)
|
||||
if(src.reagents.total_volume < 1)
|
||||
to_chat(user, "<span class='notice'>Out of water!</span>")
|
||||
to_chat(user, "<span class='notice'>Out of water!</span>")
|
||||
return
|
||||
return ..()
|
||||
@@ -133,8 +133,9 @@
|
||||
else
|
||||
name = "Morgue"
|
||||
overlays.Cut()
|
||||
add_fingerprint(user)
|
||||
return
|
||||
add_fingerprint(user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/morgue/relaymove(mob/user as mob)
|
||||
if(user.stat)
|
||||
@@ -325,8 +326,9 @@
|
||||
name = text("Crematorium- '[]'", t)
|
||||
else
|
||||
name = "Crematorium"
|
||||
add_fingerprint(user)
|
||||
return
|
||||
add_fingerprint(user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/crematorium/relaymove(mob/user as mob)
|
||||
if(user.stat || locked)
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
to_chat(user, "<span class='notice'>You pin the paper to the noticeboard.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You reach to pin your paper to the board but hesitate. You are certain your paper will not be seen among the many others already attached.</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/noticeboard/attack_hand(user as mob)
|
||||
var/dat = "<B>Noticeboard</B><BR>"
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
P.add_fingerprint(user)
|
||||
qdel(src)
|
||||
else
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/plasticflaps/CanPass(atom/A, turf/T)
|
||||
if(istype(A) && A.checkpass(PASSGLASS))
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
to_chat(user, "You dismantle [src].")
|
||||
new /obj/item/stack/sheet/metal(src.loc, 5)
|
||||
qdel(src)
|
||||
return
|
||||
if(istype(W, /obj/item/weldingtool))
|
||||
var/obj/item/weldingtool/WT = W
|
||||
if(!anchored)
|
||||
@@ -70,6 +71,7 @@
|
||||
return
|
||||
anchored = 0
|
||||
to_chat(user, "<span class='notice'>You cut [src] free from the floor.</span>")
|
||||
return
|
||||
//Finishing the frame
|
||||
if(istype(W,/obj/item/stack/sheet))
|
||||
if(finished)
|
||||
@@ -96,6 +98,8 @@
|
||||
S.use(1)
|
||||
new /obj/structure/reflector/box (src.loc)
|
||||
qdel(src)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/reflector/proc/get_reflection(srcdir,pdir)
|
||||
return 0
|
||||
|
||||
@@ -28,7 +28,8 @@
|
||||
//S.icon = I.Scale(24, 24)
|
||||
S.sign_state = icon_state
|
||||
qdel(src)
|
||||
else ..()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/sign
|
||||
name = "sign"
|
||||
@@ -62,7 +63,8 @@
|
||||
S.icon_state = sign_state
|
||||
to_chat(user, "You fasten \the [S] with your [tool].")
|
||||
qdel(src)
|
||||
else ..()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/sign/double/map
|
||||
name = "station map"
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
/obj/structure/statue/uranium/attackby(obj/item/W, mob/user, params)
|
||||
radiate()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/statue/uranium/Bumped(atom/user)
|
||||
radiate()
|
||||
@@ -137,7 +137,7 @@
|
||||
investigate_log("[key_name(user)] ignited a plasma statue at [COORD(loc)]", "atmos")
|
||||
ignite(is_hot(W))
|
||||
return
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/statue/plasma/proc/PlasmaBurn()
|
||||
atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 160)
|
||||
@@ -230,7 +230,7 @@
|
||||
|
||||
/obj/structure/statue/bananium/attackby(obj/item/W, mob/user, params)
|
||||
honk()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/statue/bananium/attack_hand(mob/user)
|
||||
honk()
|
||||
|
||||
@@ -78,6 +78,8 @@
|
||||
user.visible_message("<span class='notice'>[user] collapses \the [name].</span>", "<span class='notice'>You collapse \the [name].</span>")
|
||||
new/obj/item/roller(get_turf(src))
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/bed/roller/post_buckle_mob(mob/living/M)
|
||||
density = TRUE
|
||||
|
||||
@@ -542,7 +542,7 @@
|
||||
to_chat(user, "<span class='notice'>You weaken the table.</span>")
|
||||
deconstruction_ready = TRUE
|
||||
else
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/table/reinforced/brass
|
||||
name = "brass table"
|
||||
@@ -753,7 +753,7 @@
|
||||
new /obj/item/stack/sheet/metal(user.loc)
|
||||
qdel(src)
|
||||
else
|
||||
. = ..()
|
||||
return ..()
|
||||
|
||||
/obj/item/rack_parts/attack_self(mob/user)
|
||||
if(building)
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] is full.</span>")
|
||||
SSnanoui.update_uis(src)
|
||||
return
|
||||
if(istype(I, /obj/item/tank/plasma))
|
||||
if(plasmatanks < 10)
|
||||
user.drop_item()
|
||||
@@ -74,6 +75,7 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] is full.</span>")
|
||||
SSnanoui.update_uis(src)
|
||||
return
|
||||
if(istype(I, /obj/item/wrench))
|
||||
if(anchored)
|
||||
to_chat(user, "<span class='notice'>You lean down and unwrench [src].</span>")
|
||||
@@ -81,6 +83,8 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You wrench [src] into place.</span>")
|
||||
anchored = 1
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/dispenser/Topic(href, href_list)
|
||||
if(..())
|
||||
|
||||
@@ -24,10 +24,7 @@
|
||||
|
||||
/obj/structure/target_stake/attackby(obj/item/W, mob/user, params)
|
||||
// Putting objects on the stake. Most importantly, targets
|
||||
if(pinned_target)
|
||||
return // get rid of that pinned target first!
|
||||
|
||||
if(istype(W, /obj/item/target))
|
||||
if(istype(W, /obj/item/target) && !pinned_target)
|
||||
density = 0
|
||||
W.density = 1
|
||||
user.drop_item(src)
|
||||
@@ -35,6 +32,8 @@
|
||||
W.layer = 3.1
|
||||
pinned_target = W
|
||||
to_chat(user, "You slide the target into the stake.")
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/target_stake/attack_hand(mob/user)
|
||||
// taking pinned targets off!
|
||||
|
||||
@@ -76,9 +76,11 @@
|
||||
var/obj/item/stack/spacecash/C = O
|
||||
if(pay_with_cash(C, user))
|
||||
tokens += 1
|
||||
return
|
||||
return
|
||||
if(panel_open && component_parts && istype(O, /obj/item/crowbar))
|
||||
default_deconstruction_crowbar(O)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/arcade/update_icon()
|
||||
return
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
/obj/machinery/computer/mob_battle_terminal/attackby(obj/item/O, mob/user)
|
||||
if(istype(O, /obj/item/nanomob_card))
|
||||
insert_card(O, user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/mob_battle_terminal/proc/insert_card(obj/item/nanomob_card/new_card, mob/user)
|
||||
if(!new_card)
|
||||
@@ -287,6 +289,8 @@
|
||||
/obj/machinery/computer/mob_healer_terminal/attackby(obj/item/O, mob/user)
|
||||
if(istype(O, /obj/item/nanomob_card))
|
||||
heal_card(O, user)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/mob_healer_terminal/proc/heal_card(obj/item/nanomob_card/patient, mob/user)
|
||||
if(!patient)
|
||||
|
||||
@@ -53,6 +53,8 @@
|
||||
if(tickets) //save the tickets!
|
||||
print_tickets()
|
||||
default_deconstruction_crowbar(O)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/prize_counter/attack_hand(mob/user as mob)
|
||||
if(..())
|
||||
|
||||
@@ -115,14 +115,14 @@
|
||||
var/obj/item/assembly/A = W
|
||||
if(!A.secured && !secured)
|
||||
attach_assembly(A, user)
|
||||
return
|
||||
return
|
||||
if(isscrewdriver(W))
|
||||
if(toggle_secure())
|
||||
to_chat(user, "<span class='notice'>[src] is ready!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] can now be attached!</span>")
|
||||
return
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/assembly/process()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
@@ -162,6 +162,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
|
||||
if(istype(W,/obj/item/multitool))
|
||||
to_chat(user, "The gate is already calibrated, there is no work for you to do here.")
|
||||
return
|
||||
return ..()
|
||||
|
||||
/////////////////////////////////////Away////////////////////////
|
||||
|
||||
@@ -290,4 +291,5 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
|
||||
else
|
||||
to_chat(user, "<span class='boldnotice'>Recalibration successful!</span><span class='notice'>: This gate's systems have been fine tuned. Travel to this gate will now be on target.</span>")
|
||||
calibrated = 1
|
||||
return
|
||||
return
|
||||
return ..()
|
||||
@@ -256,4 +256,5 @@
|
||||
to_chat(user, "<span class='danger'>Activating the machine has unlocked a way forward!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Your ID card already has all the access this machine can give.</span>")
|
||||
. = 1
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -276,7 +276,7 @@ BLIND // can't see anything
|
||||
to_chat(user, "<span class='notice'>[src] have already been clipped!</span>")
|
||||
return
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/under/proc/set_sensors(mob/user as mob)
|
||||
var/mob/M = user
|
||||
@@ -474,9 +474,9 @@ BLIND // can't see anything
|
||||
update_icon()
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] have already had [p_their()] toes cut open!</span>")
|
||||
return
|
||||
return
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/shoes/proc/step_action(var/mob/living/carbon/human/H) //squeek squeek
|
||||
SEND_SIGNAL(src, COMSIG_SHOES_STEP_ACTION)
|
||||
|
||||
@@ -105,7 +105,7 @@ log transactions
|
||||
SSnanoui.update_uis(src)
|
||||
C.use(C.amount)
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atm/attack_hand(mob/user)
|
||||
if(..())
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
else
|
||||
to_chat(user, "[bicon(src)]<span class='warning'>Unable to connect to accounts database.</span>")
|
||||
else
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/eftpos/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user