for-the-strength-from-which-he-gives-is-unerring

This commit is contained in:
Fox McCloud
2019-10-05 02:08:11 -04:00
parent 5170f3fbae
commit 67dc33ac3f
141 changed files with 722 additions and 542 deletions
@@ -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{
+1 -1
View File
@@ -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 {"
+6
View File
@@ -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")
+22 -22
View File
@@ -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()
..()
+14 -27
View File
@@ -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>"
+14 -17
View File
@@ -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)
+2 -1
View File
@@ -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)
+3 -2
View File
@@ -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)
+3 -2
View File
@@ -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)
+4
View File
@@ -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 = ""
+4 -4
View File
@@ -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)
+11 -14
View File
@@ -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))
+5 -5
View File
@@ -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))
+3 -1
View File
@@ -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"
+1 -4
View File
@@ -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
+1 -1
View File
@@ -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)
+16 -6
View File
@@ -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 ..()
+2 -10
View File
@@ -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))
+3 -4
View File
@@ -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)
+1 -2
View File
@@ -115,5 +115,4 @@
A.icon_state = "4"
qdel(src)
else
src.attack_hand(user)
return
return ..()
+2 -1
View File
@@ -34,7 +34,8 @@
O.forceMove(src)
scan = O
ui_interact(user)
..()
return
return ..()
/obj/machinery/computer/med_data/attack_hand(mob/user)
if(..())
+1 -3
View File
@@ -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)
+2 -1
View File
@@ -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)
+2 -1
View File
@@ -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))
+16 -1
View File
@@ -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"
+5 -2
View File
@@ -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()
+4 -1
View File
@@ -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."
+1 -1
View File
@@ -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()
+1 -15
View File
@@ -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)
+1 -1
View File
@@ -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())
+3 -2
View File
@@ -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(..())
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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)
. = ..()
-3
View File
@@ -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
+9 -3
View File
@@ -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
+1 -2
View File
@@ -99,5 +99,4 @@
if(default_deconstruction_crowbar(I, ignore_panel = TRUE))
return
else
return ..()
return ..()
+2 -2
View File
@@ -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
+1 -2
View File
@@ -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)
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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 {"
+6 -1
View File
@@ -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]"
+1
View File
@@ -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
-5
View File
@@ -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 )
+51 -19
View File
@@ -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
+3
View File
@@ -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)
+3 -2
View File
@@ -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]
+3 -2
View File
@@ -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)
+7 -5
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -2
View File
@@ -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)
+2 -2
View File
@@ -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()
+8 -4
View File
@@ -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)
+3 -3
View File
@@ -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)
+2 -3
View File
@@ -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 ..()
+1 -1
View File
@@ -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"
+6 -2
View File
@@ -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))
+1 -1
View File
@@ -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"
+2
View File
@@ -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
+11 -9
View File
@@ -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)
-8
View File
@@ -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)
+3 -1
View File
@@ -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 ..()
+6 -4
View File
@@ -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>"
+1 -1
View File
@@ -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
+4 -2
View File
@@ -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"
+3 -3
View File
@@ -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
+2 -2
View File
@@ -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(..())
+3 -4
View File
@@ -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!
+3 -1
View File
@@ -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)
+2
View File
@@ -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(..())
+2 -2
View File
@@ -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)
+3 -1
View File
@@ -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 ..()
+3 -3
View File
@@ -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)
+1 -1
View File
@@ -105,7 +105,7 @@ log transactions
SSnanoui.update_uis(src)
C.use(C.amount)
else
..()
return ..()
/obj/machinery/atm/attack_hand(mob/user)
if(..())
+1 -1
View File
@@ -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