Merge pull request #7015 from Zuhayr/attackverbremoval

Attack proc removal/refactor.
This commit is contained in:
Chinsky
2014-11-14 11:18:43 +03:00
170 changed files with 909 additions and 2011 deletions

View File

@@ -981,7 +981,6 @@
#include "code\modules\mob\living\carbon\human\examine.dm" #include "code\modules\mob\living\carbon\human\examine.dm"
#include "code\modules\mob\living\carbon\human\human.dm" #include "code\modules\mob\living\carbon\human\human.dm"
#include "code\modules\mob\living\carbon\human\human_attackhand.dm" #include "code\modules\mob\living\carbon\human\human_attackhand.dm"
#include "code\modules\mob\living\carbon\human\human_attackpaw.dm"
#include "code\modules\mob\living\carbon\human\human_damage.dm" #include "code\modules\mob\living\carbon\human\human_damage.dm"
#include "code\modules\mob\living\carbon\human\human_defense.dm" #include "code\modules\mob\living\carbon\human\human_defense.dm"
#include "code\modules\mob\living\carbon\human\human_defines.dm" #include "code\modules\mob\living\carbon\human\human_defines.dm"

View File

@@ -172,9 +172,6 @@
/obj/machinery/atmospherics/tvalve/attack_ai(mob/user as mob) /obj/machinery/atmospherics/tvalve/attack_ai(mob/user as mob)
return return
/obj/machinery/atmospherics/tvalve/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/machinery/atmospherics/tvalve/attack_hand(mob/user as mob) /obj/machinery/atmospherics/tvalve/attack_hand(mob/user as mob)
src.add_fingerprint(usr) src.add_fingerprint(usr)
update_icon(1) update_icon(1)

View File

@@ -65,9 +65,6 @@
/obj/machinery/atmospherics/unary/freezer/attack_ai(mob/user as mob) /obj/machinery/atmospherics/unary/freezer/attack_ai(mob/user as mob)
src.ui_interact(user) src.ui_interact(user)
/obj/machinery/atmospherics/unary/freezer/attack_paw(mob/user as mob)
src.ui_interact(user)
/obj/machinery/atmospherics/unary/freezer/attack_hand(mob/user as mob) /obj/machinery/atmospherics/unary/freezer/attack_hand(mob/user as mob)
src.ui_interact(user) src.ui_interact(user)

View File

@@ -18,7 +18,7 @@
use_power = 0 use_power = 0
idle_power_usage = 5 //5 Watts for thermostat related circuitry idle_power_usage = 5 //5 Watts for thermostat related circuitry
active_power_usage //50 kW. The power rating of the heater active_power_usage //50 kW. The power rating of the heater
var/max_power_usage = 20000 //power rating when the usage is turned up to 100 var/max_power_usage = 20000 //power rating when the usage is turned up to 100
var/power_setting = 100 var/power_setting = 100
@@ -35,7 +35,7 @@
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src) component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
component_parts += new /obj/item/weapon/stock_parts/capacitor(src) component_parts += new /obj/item/weapon/stock_parts/capacitor(src)
active_power_usage = max_power_usage * (power_setting/100) active_power_usage = max_power_usage * (power_setting/100)
/obj/machinery/atmospherics/unary/heater/initialize() /obj/machinery/atmospherics/unary/heater/initialize()
@@ -86,9 +86,6 @@
/obj/machinery/atmospherics/unary/heater/attack_ai(mob/user as mob) /obj/machinery/atmospherics/unary/heater/attack_ai(mob/user as mob)
src.ui_interact(user) src.ui_interact(user)
/obj/machinery/atmospherics/unary/heater/attack_paw(mob/user as mob)
src.ui_interact(user)
/obj/machinery/atmospherics/unary/heater/attack_hand(mob/user as mob) /obj/machinery/atmospherics/unary/heater/attack_hand(mob/user as mob)
src.ui_interact(user) src.ui_interact(user)
@@ -164,10 +161,10 @@
/obj/machinery/atmospherics/unary/heater/proc/set_power_level(var/new_power_setting) /obj/machinery/atmospherics/unary/heater/proc/set_power_level(var/new_power_setting)
power_setting = new_power_setting power_setting = new_power_setting
var/old_power_usage = active_power_usage var/old_power_usage = active_power_usage
active_power_usage = max_power_usage * (power_setting/100) active_power_usage = max_power_usage * (power_setting/100)
if (use_power >= 2 && old_power_usage != active_power_usage) if (use_power >= 2 && old_power_usage != active_power_usage)
force_power_update() force_power_update()

View File

@@ -130,9 +130,6 @@
/obj/machinery/atmospherics/valve/attack_ai(mob/user as mob) /obj/machinery/atmospherics/valve/attack_ai(mob/user as mob)
return return
/obj/machinery/atmospherics/valve/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/machinery/atmospherics/valve/attack_hand(mob/user as mob) /obj/machinery/atmospherics/valve/attack_hand(mob/user as mob)
src.add_fingerprint(usr) src.add_fingerprint(usr)
update_icon(1) update_icon(1)

View File

@@ -55,9 +55,6 @@
del target del target
return ..() return ..()
attack_paw(var/mob/M)
return attack_hand(M)
attackby(obj/item/C as obj, mob/user as mob) attackby(obj/item/C as obj, mob/user as mob)
(..) (..)

View File

@@ -68,7 +68,7 @@
harm_intent_damage = 8 harm_intent_damage = 8
melee_damage_lower = 15 melee_damage_lower = 15
melee_damage_upper = 15 melee_damage_upper = 15
attacktext = "slashes" attacktext = "slashed"
attack_sound = 'sound/weapons/bite.ogg' attack_sound = 'sound/weapons/bite.ogg'
layer = 3.1 //so they can stay hidde under the /obj/structure/bush layer = 3.1 //so they can stay hidde under the /obj/structure/bush
@@ -126,7 +126,7 @@
harm_intent_damage = 2 harm_intent_damage = 2
melee_damage_lower = 3 melee_damage_lower = 3
melee_damage_upper = 10 melee_damage_upper = 10
attacktext = "bites" attacktext = "bitten"
attack_sound = 'sound/weapons/bite.ogg' attack_sound = 'sound/weapons/bite.ogg'
layer = 3.1 //so they can stay hidde under the /obj/structure/bush layer = 3.1 //so they can stay hidde under the /obj/structure/bush

View File

@@ -71,9 +71,6 @@
/obj/machinery/computer/guestpass/attack_ai(var/mob/user as mob) /obj/machinery/computer/guestpass/attack_ai(var/mob/user as mob)
return attack_hand(user) return attack_hand(user)
/obj/machinery/computer/guestpass/attack_paw(var/mob/user as mob)
return attack_hand(user)
/obj/machinery/computer/guestpass/attack_hand(var/mob/user as mob) /obj/machinery/computer/guestpass/attack_hand(var/mob/user as mob)
if(..()) if(..())
return return

View File

@@ -34,9 +34,6 @@
/obj/machinery/computer/atmoscontrol/attack_ai(var/mob/user as mob) /obj/machinery/computer/atmoscontrol/attack_ai(var/mob/user as mob)
return interact(user) return interact(user)
/obj/machinery/computer/atmoscontrol/attack_paw(var/mob/user as mob)
return interact(user)
/obj/machinery/computer/atmoscontrol/attack_hand(mob/user) /obj/machinery/computer/atmoscontrol/attack_hand(mob/user)
if(..()) if(..())
return return

View File

@@ -135,8 +135,7 @@
else else
breaktape(null, user) breaktape(null, user)
/obj/item/tape/attack_paw(mob/user as mob)
breaktape(/obj/item/weapon/wirecutters,user)
/obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob) /obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob)
if(user.a_intent == "help" && ((!can_puncture(W) && src.allowed(user)))) if(user.a_intent == "help" && ((!can_puncture(W) && src.allowed(user))))

View File

@@ -38,9 +38,6 @@ var/list/alldepartments = list("Central Command")
/obj/machinery/faxmachine/attack_ai(mob/user as mob) /obj/machinery/faxmachine/attack_ai(mob/user as mob)
return attack_hand(user) return attack_hand(user)
/obj/machinery/faxmachine/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/machinery/faxmachine/attack_hand(mob/user as mob) /obj/machinery/faxmachine/attack_hand(mob/user as mob)
user.set_machine(src) user.set_machine(src)

View File

@@ -154,7 +154,6 @@
/mob/proc/DblClickOn(var/atom/A, var/params) /mob/proc/DblClickOn(var/atom/A, var/params)
ClickOn(A,params) ClickOn(A,params)
/* /*
Translates into attack_hand, etc. Translates into attack_hand, etc.
@@ -168,6 +167,21 @@
/mob/proc/UnarmedAttack(var/atom/A, var/proximity_flag) /mob/proc/UnarmedAttack(var/atom/A, var/proximity_flag)
return return
/mob/living/UnarmedAttack(var/atom/A, var/proximity_flag)
if(!ticker)
src << "You cannot attack people before the game has started."
return 0
if (istype(get_area(src), /area/start))
src << "No attacking people at spawn, you jackass."
return 0
if(stat)
return 0
return 1
/* /*
Ranged unarmed attack: Ranged unarmed attack:

View File

@@ -1,3 +1,7 @@
// Generic damage proc (slimes and monkeys).
/atom/proc/attack_generic(mob/user as mob)
return 0
/* /*
Humans: Humans:
Adds an exception for gloves, to allow special glove types like the ninja ones. Adds an exception for gloves, to allow special glove types like the ninja ones.
@@ -5,15 +9,19 @@
Otherwise pretty standard. Otherwise pretty standard.
*/ */
/mob/living/carbon/human/UnarmedAttack(var/atom/A, var/proximity) /mob/living/carbon/human/UnarmedAttack(var/atom/A, var/proximity)
var/obj/item/clothing/gloves/G = gloves // not typecast specifically enough in defines
if(!..())
return
// Special glove functions: // Special glove functions:
// If the gloves do anything, have them return 1 to stop // If the gloves do anything, have them return 1 to stop
// normal attack_hand() here. // normal attack_hand() here.
if(proximity && istype(G) && G.Touch(A,1)) var/obj/item/clothing/gloves/G = gloves // not typecast specifically enough in defines
if(istype(G) && G.Touch(A,1))
return return
A.attack_hand(src) A.attack_hand(src)
/atom/proc/attack_hand(mob/user as mob) /atom/proc/attack_hand(mob/user as mob)
return return
@@ -41,23 +49,20 @@
return return
A.attack_tk(src) A.attack_tk(src)
/*
Animals & All Unspecified
*/
/mob/living/UnarmedAttack(var/atom/A)
A.attack_animal(src)
/atom/proc/attack_animal(mob/user as mob)
return
/mob/living/RestrainedClickOn(var/atom/A) /mob/living/RestrainedClickOn(var/atom/A)
return return
/* /*
Monkeys Monkeys
*/ */
/mob/living/carbon/monkey/UnarmedAttack(var/atom/A)
A.attack_paw(src)
/atom/proc/attack_paw(mob/user as mob) /mob/living/carbon/monkey/UnarmedAttack(var/atom/A, var/proximity)
return
if(!..())
return
A.attack_hand(src)
/* /*
Monkey RestrainedClickOn() was apparently the Monkey RestrainedClickOn() was apparently the
@@ -88,26 +93,91 @@
/* /*
Aliens Aliens
Defaults to same as monkey in most places
*/ */
/mob/living/carbon/alien/RestrainedClickOn(var/atom/A) /mob/living/carbon/alien/RestrainedClickOn(var/atom/A)
return return
/mob/living/carbon/alien/UnarmedAttack(var/atom/A, var/proximity)
if(!..())
return 0
A.attack_generic(src,rand(5,6),"bitten")
/* /*
Slimes Slimes
Nothing happening here Nothing happening here
*/ */
/mob/living/carbon/slime/UnarmedAttack(var/atom/A)
A.attack_slime(src)
/atom/proc/attack_slime(mob/user as mob)
return
/mob/living/carbon/slime/RestrainedClickOn(var/atom/A) /mob/living/carbon/slime/RestrainedClickOn(var/atom/A)
return return
/mob/living/carbon/slime/UnarmedAttack(var/atom/A, var/proximity)
if(!..())
return
// Eating
if(Victim)
return
// Basic attack.
A.attack_generic(src, (is_adult ? rand(20,40) : rand(5,25)), "glomped")
// Handle mob shocks.
var/mob/living/M = A
if(istype(M) && powerlevel > 0 && !istype(A,/mob/living/carbon/slime))
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.species.flags & IS_SYNTHETIC || H.species.insulated)
return
var/power = max(0,min(10,(powerlevel+rand(0,3))))
var/stunprob = 10
switch(power*10)
if(1 to 2) stunprob = 20
if(3 to 4) stunprob = 30
if(5 to 6) stunprob = 40
if(7 to 8) stunprob = 60
if(9) stunprob = 70
if(10) stunprob = 95
if(prob(stunprob))
powerlevel = max(0,powerlevel-3)
src.visible_message("\red <B>The [name] has shocked [M]!</B>")
M.Weaken(power)
M.Stun(power)
if (M.stuttering < power) M.stuttering = power
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, M)
s.start()
if(prob(stunprob) && powerlevel >= 8)
M.adjustFireLoss(powerlevel * rand(6,10))
M.updatehealth()
/* /*
New Players: New Players:
Have no reason to click on anything at all. Have no reason to click on anything at all.
*/ */
/mob/new_player/ClickOn() /mob/new_player/ClickOn()
return return
/*
Animals
*/
/mob/living/simple_animal/UnarmedAttack(var/atom/A, var/proximity)
if(!..())
return
if(melee_damage_upper == 0 && istype(A,/mob/living))
custom_emote(1,"[friendly] [src]!")
return
var/damage = rand(melee_damage_lower, melee_damage_upper)
if(A.attack_generic(src,damage,attacktext,wall_smash) && loc && attack_sound)
playsound(loc, attack_sound, 50, 1, 1)

View File

@@ -193,11 +193,6 @@
return src.master.attackby(a, b) return src.master.attackby(a, b)
return return
/atom/movable/overlay/attack_paw(a, b, c)
if (src.master)
return src.master.attack_paw(a, b, c)
return
/atom/movable/overlay/attack_hand(a, b, c) /atom/movable/overlay/attack_hand(a, b, c)
if (src.master) if (src.master)
return src.master.attack_hand(a, b, c) return src.master.attack_hand(a, b, c)

View File

@@ -324,8 +324,6 @@
return return
return return
*/ */
/obj/machinery/computer/scan_consolenew/attack_paw(user as mob)
ui_interact(user)
/obj/machinery/computer/scan_consolenew/attack_ai(user as mob) /obj/machinery/computer/scan_consolenew/attack_ai(user as mob)
src.add_hiddenprint(user) src.add_hiddenprint(user)
@@ -424,15 +422,15 @@
if (connected.beaker.reagents && connected.beaker.reagents.reagent_list.len) if (connected.beaker.reagents && connected.beaker.reagents.reagent_list.len)
for(var/datum/reagent/R in connected.beaker.reagents.reagent_list) for(var/datum/reagent/R in connected.beaker.reagents.reagent_list)
data["beakerVolume"] += R.volume data["beakerVolume"] += R.volume
// update the ui if it exists, returns null if no ui is passed/found // update the ui if it exists, returns null if no ui is passed/found
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui) if (!ui)
// the ui does not exist, so we'll create a new() one // the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
ui = new(user, src, ui_key, "dna_modifier.tmpl", "DNA Modifier Console", 660, 700) ui = new(user, src, ui_key, "dna_modifier.tmpl", "DNA Modifier Console", 660, 700)
// when the ui is first opened this is the data it will use // when the ui is first opened this is the data it will use
ui.set_initial_data(data) ui.set_initial_data(data)
// open the new ui window // open the new ui window
ui.open() ui.open()
// auto update every Master Controller tick // auto update every Master Controller tick

View File

@@ -34,7 +34,7 @@
maxHealth = 20 maxHealth = 20
melee_damage_lower = 4 melee_damage_lower = 4
melee_damage_upper = 8 melee_damage_upper = 8
attacktext = "hits" attacktext = "hit"
attack_sound = 'sound/weapons/genhit1.ogg' attack_sound = 'sound/weapons/genhit1.ogg'
var/obj/effect/blob/factory/factory = null var/obj/effect/blob/factory/factory = null
faction = "blob" faction = "blob"

View File

@@ -1473,9 +1473,6 @@ It is possible to destroy the net by the occupant or someone else.
healthcheck() healthcheck()
return return
attack_paw()
return attack_hand()
attackby(obj/item/weapon/W as obj, mob/user as mob) attackby(obj/item/weapon/W as obj, mob/user as mob)
var/aforce = W.force var/aforce = W.force
health = max(0, health - aforce) health = max(0, health - aforce)

View File

@@ -165,9 +165,6 @@ var/bomb_set
return return
..() ..()
/obj/machinery/nuclearbomb/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/nuclearbomb/attack_hand(mob/user as mob) /obj/machinery/nuclearbomb/attack_hand(mob/user as mob)
if (src.extended) if (src.extended)
if (!ishuman(user)) if (!ishuman(user))

View File

@@ -45,19 +45,6 @@
if(prob(75)) if(prob(75))
del(src) del(src)
/obj/machinery/optable/attack_paw(mob/user as mob)
if ((HULK in usr.mutations))
usr << text("\blue You destroy the operating table.")
visible_message("\red [usr] destroys the operating table!")
src.density = 0
del(src)
if (!( locate(/obj/machinery/optable, user.loc) ))
step(user, get_dir(user, src))
if (user.loc == src.loc)
user.layer = TURF_LAYER
visible_message("The monkey hides under the table!")
return
/obj/machinery/optable/attack_hand(mob/user as mob) /obj/machinery/optable/attack_hand(mob/user as mob)
if (HULK in usr.mutations) if (HULK in usr.mutations)
usr << text("\blue You destroy the table.") usr << text("\blue You destroy the table.")

View File

@@ -10,7 +10,7 @@
anchored = 1 //About time someone fixed this. anchored = 1 //About time someone fixed this.
density = 1 density = 1
var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r" var/orient = "LEFT" // "RIGHT" changes the dir suffix to "-r"
use_power = 1 use_power = 1
idle_power_usage = 40 idle_power_usage = 40
@@ -50,9 +50,6 @@
/obj/machinery/sleep_console/attack_ai(mob/user as mob) /obj/machinery/sleep_console/attack_ai(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/sleep_console/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/sleep_console/attack_hand(mob/user as mob) /obj/machinery/sleep_console/attack_hand(mob/user as mob)
if(..()) if(..())
return return
@@ -166,7 +163,7 @@
var/amounts = list(5, 10) var/amounts = list(5, 10)
var/obj/item/weapon/reagent_containers/glass/beaker = null var/obj/item/weapon/reagent_containers/glass/beaker = null
var/filtering = 0 var/filtering = 0
use_power = 1 use_power = 1
idle_power_usage = 15 idle_power_usage = 15
active_power_usage = 200 //builtin health analyzer, dialysis machine, injectors. active_power_usage = 200 //builtin health analyzer, dialysis machine, injectors.
@@ -188,7 +185,7 @@
process() process()
if (stat & (NOPOWER|BROKEN)) if (stat & (NOPOWER|BROKEN))
return return
if(filtering > 0) if(filtering > 0)
if(beaker) if(beaker)
if(beaker.reagents.total_volume < beaker.reagents.maximum_volume) if(beaker.reagents.total_volume < beaker.reagents.maximum_volume)
@@ -338,7 +335,7 @@
proc/inject_chemical(mob/living/user as mob, chemical, amount) proc/inject_chemical(mob/living/user as mob, chemical, amount)
if (stat & (BROKEN|NOPOWER)) if (stat & (BROKEN|NOPOWER))
return return
if(src.occupant && src.occupant.reagents) if(src.occupant && src.occupant.reagents)
if(src.occupant.reagents.get_reagent_amount(chemical) + amount <= 20) if(src.occupant.reagents.get_reagent_amount(chemical) + amount <= 20)
use_power(amount * CHEM_SYNTH_ENERGY) use_power(amount * CHEM_SYNTH_ENERGY)

View File

@@ -211,10 +211,6 @@
*/ */
/obj/machinery/body_scanconsole/attack_paw(user as mob)
return src.attack_hand(user)
/obj/machinery/body_scanconsole/attack_ai(user as mob) /obj/machinery/body_scanconsole/attack_ai(user as mob)
return src.attack_hand(user) return src.attack_hand(user)

View File

@@ -1094,9 +1094,6 @@ FIRE ALARM
/obj/machinery/firealarm/bullet_act(BLAH) /obj/machinery/firealarm/bullet_act(BLAH)
return src.alarm() return src.alarm()
/obj/machinery/firealarm/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/firealarm/emp_act(severity) /obj/machinery/firealarm/emp_act(severity)
if(prob(50/severity)) alarm() if(prob(50/severity)) alarm()
..() ..()
@@ -1379,9 +1376,6 @@ Code shamelessly copied from apc_frame
idle_power_usage = 2 idle_power_usage = 2
active_power_usage = 6 active_power_usage = 6
/obj/machinery/partyalarm/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/machinery/partyalarm/attack_hand(mob/user as mob) /obj/machinery/partyalarm/attack_hand(mob/user as mob)
if(user.stat || stat & (NOPOWER|BROKEN)) if(user.stat || stat & (NOPOWER|BROKEN))
return return

View File

@@ -21,9 +21,6 @@
attack_ai(var/mob/user as mob) attack_ai(var/mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
attack_paw(var/mob/user as mob)
return
attack_hand(var/mob/user as mob) attack_hand(var/mob/user as mob)
if(..(user)) if(..(user))
return return

View File

@@ -243,9 +243,6 @@ update_flag
/obj/machinery/portable_atmospherics/canister/attack_ai(var/mob/user as mob) /obj/machinery/portable_atmospherics/canister/attack_ai(var/mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/portable_atmospherics/canister/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/portable_atmospherics/canister/attack_hand(var/mob/user as mob) /obj/machinery/portable_atmospherics/canister/attack_hand(var/mob/user as mob)
return src.ui_interact(user) return src.ui_interact(user)

View File

@@ -10,7 +10,7 @@
var/target_pressure = 100 var/target_pressure = 100
volume = 1000 volume = 1000
power_rating = 7500 //7500 W ~ 10 HP power_rating = 7500 //7500 W ~ 10 HP
power_losses = 150 power_losses = 150
@@ -53,16 +53,16 @@
/obj/machinery/portable_atmospherics/powered/pump/process() /obj/machinery/portable_atmospherics/powered/pump/process()
..() ..()
var/power_draw = -1 var/power_draw = -1
if(on && cell && cell.charge) if(on && cell && cell.charge)
var/datum/gas_mixture/environment var/datum/gas_mixture/environment
if(holding) if(holding)
environment = holding.air_contents environment = holding.air_contents
else else
environment = loc.return_air() environment = loc.return_air()
var/pressure_delta var/pressure_delta
var/output_volume var/output_volume
var/air_temperature var/air_temperature
if(direction_out) if(direction_out)
pressure_delta = target_pressure - environment.return_pressure() pressure_delta = target_pressure - environment.return_pressure()
@@ -72,15 +72,15 @@
pressure_delta = target_pressure - air_contents.return_pressure() pressure_delta = target_pressure - air_contents.return_pressure()
output_volume = air_contents.volume * air_contents.group_multiplier output_volume = air_contents.volume * air_contents.group_multiplier
air_temperature = air_contents.temperature? air_contents.temperature : environment.temperature air_temperature = air_contents.temperature? air_contents.temperature : environment.temperature
var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION) var/transfer_moles = pressure_delta*output_volume/(air_temperature * R_IDEAL_GAS_EQUATION)
if (pressure_delta > 0.01) if (pressure_delta > 0.01)
if (direction_out) if (direction_out)
power_draw = pump_gas(src, air_contents, environment, transfer_moles, power_rating) power_draw = pump_gas(src, air_contents, environment, transfer_moles, power_rating)
else else
power_draw = pump_gas(src, environment, air_contents, transfer_moles, power_rating) power_draw = pump_gas(src, environment, air_contents, transfer_moles, power_rating)
if (power_draw < 0) if (power_draw < 0)
last_flow_rate = 0 last_flow_rate = 0
last_power_draw = 0 last_power_draw = 0
@@ -88,13 +88,13 @@
power_draw = max(power_draw, power_losses) power_draw = max(power_draw, power_losses)
cell.use(power_draw * CELLRATE) cell.use(power_draw * CELLRATE)
last_power_draw = power_draw last_power_draw = power_draw
update_connected_network() update_connected_network()
//ran out of charge //ran out of charge
if (!cell.charge) if (!cell.charge)
update_icon() update_icon()
src.updateDialog() src.updateDialog()
/obj/machinery/portable_atmospherics/powered/pump/return_air() /obj/machinery/portable_atmospherics/powered/pump/return_air()
@@ -103,9 +103,6 @@
/obj/machinery/portable_atmospherics/powered/pump/attack_ai(var/mob/user as mob) /obj/machinery/portable_atmospherics/powered/pump/attack_ai(var/mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/portable_atmospherics/powered/pump/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/portable_atmospherics/powered/pump/attack_hand(var/mob/user as mob) /obj/machinery/portable_atmospherics/powered/pump/attack_hand(var/mob/user as mob)
user.set_machine(src) user.set_machine(src)

View File

@@ -9,7 +9,7 @@
var/volume_rate = 800 var/volume_rate = 800
volume = 750 volume = 750
power_rating = 7500 //7500 W ~ 10 HP power_rating = 7500 //7500 W ~ 10 HP
power_losses = 150 power_losses = 150
@@ -48,7 +48,7 @@
/obj/machinery/portable_atmospherics/powered/scrubber/process() /obj/machinery/portable_atmospherics/powered/scrubber/process()
..() ..()
var/power_draw = -1 var/power_draw = -1
if(on && cell && cell.charge) if(on && cell && cell.charge)
@@ -57,11 +57,11 @@
environment = holding.air_contents environment = holding.air_contents
else else
environment = loc.return_air() environment = loc.return_air()
var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles
power_draw = scrub_gas(src, scrubbing_gas, environment, air_contents, transfer_moles, power_rating) power_draw = scrub_gas(src, scrubbing_gas, environment, air_contents, transfer_moles, power_rating)
if (power_draw < 0) if (power_draw < 0)
last_flow_rate = 0 last_flow_rate = 0
last_power_draw = 0 last_power_draw = 0
@@ -69,13 +69,13 @@
power_draw = max(power_draw, power_losses) power_draw = max(power_draw, power_losses)
cell.use(power_draw * CELLRATE) cell.use(power_draw * CELLRATE)
last_power_draw = power_draw last_power_draw = power_draw
update_connected_network() update_connected_network()
//ran out of charge //ran out of charge
if (!cell.charge) if (!cell.charge)
update_icon() update_icon()
//src.update_icon() //src.update_icon()
src.updateDialog() src.updateDialog()
@@ -85,9 +85,6 @@
/obj/machinery/portable_atmospherics/powered/scrubber/attack_ai(var/mob/user as mob) /obj/machinery/portable_atmospherics/powered/scrubber/attack_ai(var/mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/portable_atmospherics/powered/scrubber/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/portable_atmospherics/powered/scrubber/attack_hand(var/mob/user as mob) /obj/machinery/portable_atmospherics/powered/scrubber/attack_hand(var/mob/user as mob)
user.set_machine(src) user.set_machine(src)
@@ -156,14 +153,14 @@ Flow Rate Regulator: <A href='?src=\ref[src];volume_adj=-1000'>-</A> <A href='?s
use_power = 1 use_power = 1
idle_power_usage = 500 //internal circuitry, friction losses and stuff idle_power_usage = 500 //internal circuitry, friction losses and stuff
active_power_usage = 100000 //100 kW ~ 135 HP active_power_usage = 100000 //100 kW ~ 135 HP
var/global/gid = 1 var/global/gid = 1
var/id = 0 var/id = 0
/obj/machinery/portable_atmospherics/powered/scrubber/huge/New() /obj/machinery/portable_atmospherics/powered/scrubber/huge/New()
..() ..()
cell = null cell = null
id = gid id = gid
gid++ gid++
@@ -192,15 +189,15 @@ Flow Rate Regulator: <A href='?src=\ref[src];volume_adj=-1000'>-</A> <A href='?s
last_flow_rate = 0 last_flow_rate = 0
last_power_draw = 0 last_power_draw = 0
return 0 return 0
var/power_draw = -1 var/power_draw = -1
var/datum/gas_mixture/environment = loc.return_air() var/datum/gas_mixture/environment = loc.return_air()
var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles
power_draw = scrub_gas(src, scrubbing_gas, environment, air_contents, transfer_moles, active_power_usage) power_draw = scrub_gas(src, scrubbing_gas, environment, air_contents, transfer_moles, active_power_usage)
if (power_draw < 0) if (power_draw < 0)
last_flow_rate = 0 last_flow_rate = 0
last_power_draw = 0 last_power_draw = 0
@@ -219,13 +216,13 @@ Flow Rate Regulator: <A href='?src=\ref[src];volume_adj=-1000'>-</A> <A href='?s
user << "\blue You [anchored ? "wrench" : "unwrench"] \the [src]." user << "\blue You [anchored ? "wrench" : "unwrench"] \the [src]."
return return
//doesn't use power cells //doesn't use power cells
if(istype(I, /obj/item/weapon/cell)) if(istype(I, /obj/item/weapon/cell))
return return
if (istype(I, /obj/item/weapon/screwdriver)) if (istype(I, /obj/item/weapon/screwdriver))
return return
//doesn't hold tanks //doesn't hold tanks
if(istype(I, /obj/item/weapon/tank)) if(istype(I, /obj/item/weapon/tank))
return return

View File

@@ -184,9 +184,6 @@
updateUsrDialog() updateUsrDialog()
return return
/obj/machinery/autolathe/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/machinery/autolathe/attack_hand(mob/user as mob) /obj/machinery/autolathe/attack_hand(mob/user as mob)
user.set_machine(src) user.set_machine(src)
interact(user) interact(user)
@@ -384,4 +381,4 @@
var/obj/item/stack/sheet/S = new T var/obj/item/stack/sheet/S = new T
if(stored_material[mat] > S.perunit) if(stored_material[mat] > S.perunit)
S.amount = round(stored_material[mat] / S.perunit) S.amount = round(stored_material[mat] / S.perunit)
S.loc = loc S.loc = loc

View File

@@ -52,18 +52,6 @@
user << "<span class='danger'>[src]'s parts look very loose!</span>" user << "<span class='danger'>[src]'s parts look very loose!</span>"
return return
/obj/machinery/bot/attack_animal(var/mob/living/simple_animal/M as mob)
if(M.melee_damage_upper == 0) return
src.health -= M.melee_damage_upper
src.visible_message("\red <B>[M] has [M.attacktext] [src]!</B>")
M.attack_log += text("\[[time_stamp()]\] <font color='red'>attacked [src.name]</font>")
if(prob(10))
new /obj/effect/decal/cleanable/blood/oil(src.loc)
healthcheck()
/obj/machinery/bot/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/machinery/bot/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/screwdriver)) if(istype(W, /obj/item/weapon/screwdriver))
if(!locked) if(!locked)

View File

@@ -96,9 +96,6 @@
src.icon_state = "medibot[src.on]" src.icon_state = "medibot[src.on]"
src.updateUsrDialog() src.updateUsrDialog()
/obj/machinery/bot/medbot/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/machinery/bot/medbot/attack_hand(mob/user as mob) /obj/machinery/bot/medbot/attack_hand(mob/user as mob)
. = ..() . = ..()
if (.) if (.)

View File

@@ -121,8 +121,7 @@
/obj/machinery/clonepod/attack_ai(mob/user as mob) /obj/machinery/clonepod/attack_ai(mob/user as mob)
src.add_hiddenprint(user) src.add_hiddenprint(user)
return attack_hand(user) return attack_hand(user)
/obj/machinery/clonepod/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/machinery/clonepod/attack_hand(mob/user as mob) /obj/machinery/clonepod/attack_hand(mob/user as mob)
if ((isnull(src.occupant)) || (stat & NOPOWER)) if ((isnull(src.occupant)) || (stat & NOPOWER))
return return

View File

@@ -43,9 +43,6 @@ var/global/list/holodeck_programs = list(
attack_ai(var/mob/user as mob) attack_ai(var/mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
attack_paw(var/mob/user as mob)
return
attack_hand(var/mob/user as mob) attack_hand(var/mob/user as mob)
if(..()) if(..())
@@ -316,15 +313,6 @@ var/global/list/holodeck_programs = list(
return return
// HOLOFLOOR DOES NOT GIVE A FUCK // HOLOFLOOR DOES NOT GIVE A FUCK
/obj/structure/table/holotable /obj/structure/table/holotable
name = "table" name = "table"
desc = "A square piece of metal standing on four metal legs. It can not move." desc = "A square piece of metal standing on four metal legs. It can not move."
@@ -335,13 +323,6 @@ var/global/list/holodeck_programs = list(
layer = 2.8 layer = 2.8
throwpass = 1 //You can throw objects over this, despite it's density. throwpass = 1 //You can throw objects over this, despite it's density.
/obj/structure/table/holotable/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/structure/table/holotable/attack_animal(mob/living/user as mob) //Removed code for larva since it doesn't work. Previous code is now a larva ability. /N
return attack_hand(user)
/obj/structure/table/holotable/attack_hand(mob/user as mob) /obj/structure/table/holotable/attack_hand(mob/user as mob)
return // HOLOTABLE DOES NOT GIVE A FUCK return // HOLOTABLE DOES NOT GIVE A FUCK
@@ -529,10 +510,6 @@ var/global/list/holodeck_programs = list(
user << "The station AI is not to interact with these devices!" user << "The station AI is not to interact with these devices!"
return return
/obj/machinery/readybutton/attack_paw(mob/user as mob)
user << "You are too primitive to use this device."
return
/obj/machinery/readybutton/New() /obj/machinery/readybutton/New()
..() ..()
@@ -541,10 +518,14 @@ var/global/list/holodeck_programs = list(
user << "The device is a solid button, there's nothing you can do with it!" user << "The device is a solid button, there's nothing you can do with it!"
/obj/machinery/readybutton/attack_hand(mob/user as mob) /obj/machinery/readybutton/attack_hand(mob/user as mob)
if(user.stat || stat & (NOPOWER|BROKEN)) if(user.stat || stat & (NOPOWER|BROKEN))
user << "This device is not powered." user << "This device is not powered."
return return
if(!user.IsAdvancedToolUser())
return 0
currentarea = get_area(src.loc) currentarea = get_area(src.loc)
if(!currentarea) if(!currentarea)
del(src) del(src)

View File

@@ -24,9 +24,6 @@
/obj/machinery/computer/aifixer/attack_ai(var/mob/user as mob) /obj/machinery/computer/aifixer/attack_ai(var/mob/user as mob)
return attack_hand(user) return attack_hand(user)
/obj/machinery/computer/aifixer/attack_paw(var/mob/user as mob)
return attack_hand(user)
/obj/machinery/computer/aifixer/attack_hand(var/mob/user as mob) /obj/machinery/computer/aifixer/attack_hand(var/mob/user as mob)
if(..()) if(..())
return return

View File

@@ -56,9 +56,6 @@
/obj/machinery/computer/arcade/attack_ai(mob/user as mob) /obj/machinery/computer/arcade/attack_ai(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/computer/arcade/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/arcade/attack_hand(mob/user as mob) /obj/machinery/computer/arcade/attack_hand(mob/user as mob)
if(..()) if(..())
return return

View File

@@ -15,11 +15,6 @@
attack_ai(var/mob/user as mob) attack_ai(var/mob/user as mob)
return attack_hand(user) return attack_hand(user)
attack_paw(var/mob/user as mob)
return attack_hand(user)
check_eye(var/mob/user as mob) check_eye(var/mob/user as mob)
if (user.stat || ((get_dist(user, src) > 1 || !( user.canmove ) || user.blinded) && !istype(user, /mob/living/silicon))) //user can't see - not sure why canmove is here. if (user.stat || ((get_dist(user, src) > 1 || !( user.canmove ) || user.blinded) && !istype(user, /mob/living/silicon))) //user can't see - not sure why canmove is here.
return null return null

View File

@@ -72,9 +72,6 @@
/obj/machinery/computer/card/attack_ai(var/mob/user as mob) /obj/machinery/computer/card/attack_ai(var/mob/user as mob)
return attack_hand(user) return attack_hand(user)
/obj/machinery/computer/card/attack_paw(var/mob/user as mob)
return attack_hand(user)
/obj/machinery/computer/card/attack_hand(mob/user as mob) /obj/machinery/computer/card/attack_hand(mob/user as mob)
if(..()) return if(..()) return
if(stat & (NOPOWER|BROKEN)) return if(stat & (NOPOWER|BROKEN)) return

View File

@@ -69,9 +69,6 @@
..() ..()
return return
/obj/machinery/computer/cloning/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/machinery/computer/cloning/attack_ai(mob/user as mob) /obj/machinery/computer/cloning/attack_ai(mob/user as mob)
return attack_hand(user) return attack_hand(user)

View File

@@ -276,11 +276,6 @@
/obj/machinery/computer/communications/attack_ai(var/mob/user as mob) /obj/machinery/computer/communications/attack_ai(var/mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/computer/communications/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/communications/attack_hand(var/mob/user as mob) /obj/machinery/computer/communications/attack_hand(var/mob/user as mob)
if(..()) if(..())
return return

View File

@@ -44,9 +44,6 @@
/obj/machinery/computer/med_data/attack_ai(user as mob) /obj/machinery/computer/med_data/attack_ai(user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/computer/med_data/attack_paw(user as mob)
return src.attack_hand(user)
/obj/machinery/computer/med_data/attack_hand(mob/user as mob) /obj/machinery/computer/med_data/attack_hand(mob/user as mob)
if(..()) if(..())
return return

View File

@@ -110,11 +110,6 @@
/obj/machinery/computer/pod/attack_ai(var/mob/user as mob) /obj/machinery/computer/pod/attack_ai(var/mob/user as mob)
return attack_hand(user) return attack_hand(user)
/obj/machinery/computer/pod/attack_paw(var/mob/user as mob)
return attack_hand(user)
/obj/machinery/computer/pod/attack_hand(var/mob/user as mob) /obj/machinery/computer/pod/attack_hand(var/mob/user as mob)
if(..()) if(..())
return return

View File

@@ -17,11 +17,6 @@
attack_ai(var/mob/user as mob) attack_ai(var/mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
attack_paw(var/mob/user as mob)
return
attack_hand(var/mob/user as mob) attack_hand(var/mob/user as mob)
if(..()) if(..())
return return

View File

@@ -21,19 +21,9 @@ var/prison_shuttle_timeleft = 0
var/allowedtocall = 0 var/allowedtocall = 0
var/prison_break = 0 var/prison_break = 0
attackby(I as obj, user as mob)
return src.attack_hand(user)
attack_ai(var/mob/user as mob) attack_ai(var/mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
attack_paw(var/mob/user as mob)
return src.attack_hand(user)
attackby(I as obj, user as mob) attackby(I as obj, user as mob)
if(istype(I, /obj/item/weapon/screwdriver)) if(istype(I, /obj/item/weapon/screwdriver))
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)

View File

@@ -20,11 +20,6 @@
/obj/machinery/computer/robotics/attack_ai(var/mob/user as mob) /obj/machinery/computer/robotics/attack_ai(var/mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/computer/robotics/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
return
/obj/machinery/computer/robotics/attack_hand(var/mob/user as mob) /obj/machinery/computer/robotics/attack_hand(var/mob/user as mob)
if(..()) if(..())
return return
@@ -197,10 +192,10 @@
else if (href_list["magbot"]) else if (href_list["magbot"])
if(src.allowed(usr)) if(src.allowed(usr))
var/mob/living/silicon/robot/R = locate(href_list["magbot"]) var/mob/living/silicon/robot/R = locate(href_list["magbot"])
// whatever weirdness this is supposed to be, but that is how the href gets added, so here it is again // whatever weirdness this is supposed to be, but that is how the href gets added, so here it is again
if(istype(R) && istype(usr, /mob/living/silicon) && usr.mind.special_role && (usr.mind.original == usr) && !R.emagged) if(istype(R) && istype(usr, /mob/living/silicon) && usr.mind.special_role && (usr.mind.original == usr) && !R.emagged)
var/choice = input("Are you certain you wish to hack [R.name]?") in list("Confirm", "Abort") var/choice = input("Are you certain you wish to hack [R.name]?") in list("Confirm", "Abort")
if(choice == "Confirm") if(choice == "Confirm")
if(R && istype(R)) if(R && istype(R))

View File

@@ -50,9 +50,6 @@
/obj/machinery/computer/secure_data/attack_ai(mob/user as mob) /obj/machinery/computer/secure_data/attack_ai(mob/user as mob)
return attack_hand(user) return attack_hand(user)
/obj/machinery/computer/secure_data/attack_paw(mob/user as mob)
return attack_hand(user)
//Someone needs to break down the dat += into chunks instead of long ass lines. //Someone needs to break down the dat += into chunks instead of long ass lines.
/obj/machinery/computer/secure_data/attack_hand(mob/user as mob) /obj/machinery/computer/secure_data/attack_hand(mob/user as mob)
if(..()) if(..())

View File

@@ -33,9 +33,6 @@
/obj/machinery/computer/skills/attack_ai(mob/user as mob) /obj/machinery/computer/skills/attack_ai(mob/user as mob)
return attack_hand(user) return attack_hand(user)
/obj/machinery/computer/skills/attack_paw(mob/user as mob)
return attack_hand(user)
//Someone needs to break down the dat += into chunks instead of long ass lines. //Someone needs to break down the dat += into chunks instead of long ass lines.
/obj/machinery/computer/skills/attack_hand(mob/user as mob) /obj/machinery/computer/skills/attack_hand(mob/user as mob)
if(..()) if(..())

View File

@@ -248,9 +248,6 @@ var/specops_shuttle_timeleft = 0
/obj/machinery/computer/specops_shuttle/attack_ai(var/mob/user as mob) /obj/machinery/computer/specops_shuttle/attack_ai(var/mob/user as mob)
return attack_hand(user) return attack_hand(user)
/obj/machinery/computer/specops_shuttle/attack_paw(var/mob/user as mob)
return attack_hand(user)
/obj/machinery/computer/specops_shuttle/attackby(I as obj, user as mob) /obj/machinery/computer/specops_shuttle/attackby(I as obj, user as mob)
if(istype(I,/obj/item/weapon/card/emag)) if(istype(I,/obj/item/weapon/card/emag))
user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals." user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals."

View File

@@ -184,9 +184,6 @@ var/syndicate_elite_shuttle_timeleft = 0
/obj/machinery/computer/syndicate_elite_shuttle/attack_ai(var/mob/user as mob) /obj/machinery/computer/syndicate_elite_shuttle/attack_ai(var/mob/user as mob)
return attack_hand(user) return attack_hand(user)
/obj/machinery/computer/syndicate_elite_shuttle/attack_paw(var/mob/user as mob)
return attack_hand(user)
/obj/machinery/computer/syndicate_elite_shuttle/attackby(I as obj, user as mob) /obj/machinery/computer/syndicate_elite_shuttle/attackby(I as obj, user as mob)
if(istype(I,/obj/item/weapon/card/emag)) if(istype(I,/obj/item/weapon/card/emag))
user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals." user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals."

View File

@@ -20,9 +20,6 @@ var/global/list/frozen_items = list()
circuit = "/obj/item/weapon/circuitboard/cryopodcontrol" circuit = "/obj/item/weapon/circuitboard/cryopodcontrol"
var/mode = null var/mode = null
/obj/machinery/computer/cryopod/attack_paw()
src.attack_hand()
/obj/machinery/computer/cryopod/attack_ai() /obj/machinery/computer/cryopod/attack_ai()
src.attack_hand() src.attack_hand()

View File

@@ -41,9 +41,6 @@
else else
user << "Error, no route to host." user << "Error, no route to host."
/obj/machinery/door_control/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/door_control/attackby(obj/item/weapon/W, mob/user as mob) /obj/machinery/door_control/attackby(obj/item/weapon/W, mob/user as mob)
/* For later implementation /* For later implementation
if (istype(W, /obj/item/weapon/screwdriver)) if (istype(W, /obj/item/weapon/screwdriver))
@@ -155,9 +152,6 @@
/obj/machinery/driver_button/attack_ai(mob/user as mob) /obj/machinery/driver_button/attack_ai(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/driver_button/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/driver_button/attackby(obj/item/weapon/W, mob/user as mob) /obj/machinery/driver_button/attackby(obj/item/weapon/W, mob/user as mob)
if(istype(W, /obj/item/device/detective_scanner)) if(istype(W, /obj/item/device/detective_scanner))

View File

@@ -606,8 +606,6 @@ About the new airlock wires panel:
s.set_up(5, 1, src) s.set_up(5, 1, src)
s.start() s.start()
return ..() return ..()
/obj/machinery/door/airlock/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/door/airlock/attack_hand(mob/user as mob) /obj/machinery/door/airlock/attack_hand(mob/user as mob)
if(!istype(usr, /mob/living/silicon)) if(!istype(usr, /mob/living/silicon))

View File

@@ -152,11 +152,6 @@
/obj/machinery/door/attack_ai(mob/user as mob) /obj/machinery/door/attack_ai(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/door/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/door/attack_hand(mob/user as mob) /obj/machinery/door/attack_hand(mob/user as mob)
return src.attackby(user, user) return src.attackby(user, user)

View File

@@ -3,7 +3,7 @@
name = "Embedded Controller" name = "Embedded Controller"
anchored = 1 anchored = 1
use_power = 1 use_power = 1
idle_power_usage = 10 idle_power_usage = 10
@@ -29,11 +29,11 @@
/obj/machinery/embedded_controller/attack_ai(mob/user as mob) /obj/machinery/embedded_controller/attack_ai(mob/user as mob)
src.ui_interact(user) src.ui_interact(user)
/obj/machinery/embedded_controller/attack_paw(mob/user as mob)
user << "You do not have the dexterity to use this."
return
/obj/machinery/embedded_controller/attack_hand(mob/user as mob) /obj/machinery/embedded_controller/attack_hand(mob/user as mob)
if(!user.IsAdvancedToolUser())
return 0
src.ui_interact(user) src.ui_interact(user)
/obj/machinery/embedded_controller/ui_interact() /obj/machinery/embedded_controller/ui_interact()
@@ -44,7 +44,7 @@
icon_state = "airlock_control_standby" icon_state = "airlock_control_standby"
power_channel = ENVIRON power_channel = ENVIRON
density = 0 density = 0
var/id_tag var/id_tag
//var/radio_power_use = 50 //power used to xmit signals //var/radio_power_use = 50 //power used to xmit signals

View File

@@ -122,9 +122,6 @@
/obj/machinery/flasher_button/attack_ai(mob/user as mob) /obj/machinery/flasher_button/attack_ai(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/flasher_button/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/flasher_button/attackby(obj/item/weapon/W, mob/user as mob) /obj/machinery/flasher_button/attackby(obj/item/weapon/W, mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)

View File

@@ -47,8 +47,6 @@
/obj/machinery/holosign_switch/attack_ai(mob/user as mob) /obj/machinery/holosign_switch/attack_ai(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/ /
obj/machinery/holosign_switch/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/holosign_switch/attackby(obj/item/weapon/W, mob/user as mob) /obj/machinery/holosign_switch/attackby(obj/item/weapon/W, mob/user as mob)
if(istype(W, /obj/item/device/detective_scanner)) if(istype(W, /obj/item/device/detective_scanner))

View File

@@ -13,9 +13,6 @@
/obj/machinery/igniter/attack_ai(mob/user as mob) /obj/machinery/igniter/attack_ai(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/igniter/attack_paw(mob/user as mob)
return
/obj/machinery/igniter/attack_hand(mob/user as mob) /obj/machinery/igniter/attack_hand(mob/user as mob)
if(..()) if(..())
return return
@@ -63,7 +60,7 @@
/obj/machinery/sparker/power_change() /obj/machinery/sparker/power_change()
..() ..()
if ( !(stat & NOPOWER) && disable == 0 ) if ( !(stat & NOPOWER) && disable == 0 )
icon_state = "[base_state]" icon_state = "[base_state]"
// src.sd_SetLuminosity(2) // src.sd_SetLuminosity(2)
else else
@@ -121,9 +118,6 @@
/obj/machinery/ignition_switch/attack_ai(mob/user as mob) /obj/machinery/ignition_switch/attack_ai(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/ignition_switch/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/ignition_switch/attackby(obj/item/weapon/W, mob/user as mob) /obj/machinery/ignition_switch/attackby(obj/item/weapon/W, mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)

View File

@@ -62,9 +62,6 @@
else else
src.overlays += image('icons/obj/kitchen.dmi', "gridle") src.overlays += image('icons/obj/kitchen.dmi', "gridle")
/obj/machinery/gibber/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/gibber/relaymove(mob/user as mob) /obj/machinery/gibber/relaymove(mob/user as mob)
src.go_out() src.go_out()
return return

View File

@@ -53,9 +53,6 @@
src.updateUsrDialog() src.updateUsrDialog()
return 0 return 0
/obj/machinery/juicer/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/juicer/attack_ai(mob/user as mob) /obj/machinery/juicer/attack_ai(mob/user as mob)
return 0 return 0

View File

@@ -138,9 +138,6 @@
return 1 return 1
src.updateUsrDialog() src.updateUsrDialog()
/obj/machinery/microwave/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/microwave/attack_ai(mob/user as mob) /obj/machinery/microwave/attack_ai(mob/user as mob)
return 0 return 0

View File

@@ -218,9 +218,6 @@
..() ..()
/obj/machinery/smartfridge/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/machinery/smartfridge/attack_ai(mob/user as mob) /obj/machinery/smartfridge/attack_ai(mob/user as mob)
return 0 return 0

View File

@@ -41,10 +41,6 @@
if(..(user, 1)) if(..(user, 1))
user << "A light switch. It is [on? "on" : "off"]." user << "A light switch. It is [on? "on" : "off"]."
/obj/machinery/light_switch/attack_paw(mob/user)
src.attack_hand(user)
/obj/machinery/light_switch/attack_hand(mob/user) /obj/machinery/light_switch/attack_hand(mob/user)
on = !on on = !on

View File

@@ -232,9 +232,6 @@ Class Procs:
else else
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/machinery/attack_hand(mob/user as mob) /obj/machinery/attack_hand(mob/user as mob)
if(inoperable(MAINT)) if(inoperable(MAINT))
return 1 return 1

View File

@@ -126,10 +126,11 @@
attack_ai(var/mob/user) attack_ai(var/mob/user)
interact(user, 1) interact(user, 1)
attack_paw()
return
attack_hand(var/mob/user) attack_hand(var/mob/user)
if(!user.IsAdvancedToolUser())
return 0
interact(user, 0) interact(user, 0)
interact(var/mob/user, var/ai = 0) interact(var/mob/user, var/ai = 0)

View File

@@ -243,8 +243,13 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/newscaster/attack_hand(mob/user as mob) //########### THE MAIN BEEF IS HERE! And in the proc below this...############ /obj/machinery/newscaster/attack_hand(mob/user as mob) //########### THE MAIN BEEF IS HERE! And in the proc below this...############
if(!src.ispowered || src.isbroken) if(!src.ispowered || src.isbroken)
return return
if(!user.IsAdvancedToolUser())
return 0
if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) ) if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) )
var/mob/living/human_or_robot_user = user var/mob/living/human_or_robot_user = user
var/dat var/dat
@@ -773,11 +778,6 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
/obj/machinery/newscaster/attack_ai(mob/user as mob) /obj/machinery/newscaster/attack_ai(mob/user as mob)
return src.attack_hand(user) //or maybe it'll have some special functions? No idea. return src.attack_hand(user) //or maybe it'll have some special functions? No idea.
/obj/machinery/newscaster/attack_paw(mob/user as mob)
user << "<font color='blue'>The newscaster controls are far too complicated for your tiny brain!</font>"
return
/datum/news_photo /datum/news_photo
var/is_synth = 0 var/is_synth = 0
var/obj/item/weapon/photo/photo = null var/obj/item/weapon/photo/photo = null

View File

@@ -7,9 +7,6 @@
var/unwrenched = 0 var/unwrenched = 0
var/wait = 0 var/wait = 0
/obj/machinery/pipedispenser/attack_paw(user as mob)
return src.attack_hand(user)
/obj/machinery/pipedispenser/attack_hand(user as mob) /obj/machinery/pipedispenser/attack_hand(user as mob)
if(..()) if(..())
return return

View File

@@ -65,9 +65,6 @@ obj/machinery/recharger/attack_hand(mob/user as mob)
charging = null charging = null
update_icon() update_icon()
obj/machinery/recharger/attack_paw(mob/user as mob)
return attack_hand(user)
obj/machinery/recharger/process() obj/machinery/recharger/process()
if(stat & (NOPOWER|BROKEN) || !anchored) if(stat & (NOPOWER|BROKEN) || !anchored)
update_use_power(0) update_use_power(0)

View File

@@ -32,9 +32,6 @@
else else
user << "The robot part maker is full. Please remove metal from the robot part maker in order to insert more." user << "The robot part maker is full. Please remove metal from the robot part maker in order to insert more."
/obj/machinery/robotic_fabricator/attack_paw(user as mob)
return src.attack_hand(user)
/obj/machinery/robotic_fabricator/attack_hand(user as mob) /obj/machinery/robotic_fabricator/attack_hand(user as mob)
var/dat var/dat
if (..()) if (..())

View File

@@ -94,6 +94,8 @@
return return
if(stat & NOPOWER) if(stat & NOPOWER)
return return
if(!user.IsAdvancedToolUser())
return 0
if(src.panelopen) //The maintenance panel is open. Time for some shady stuff if(src.panelopen) //The maintenance panel is open. Time for some shady stuff
dat+= "<HEAD><TITLE>Suit storage unit: Maintenance panel</TITLE></HEAD>" dat+= "<HEAD><TITLE>Suit storage unit: Maintenance panel</TITLE></HEAD>"
dat+= "<Font color ='black'><B>Maintenance panel controls</B></font><HR>" dat+= "<Font color ='black'><B>Maintenance panel controls</B></font><HR>"
@@ -559,12 +561,6 @@
/obj/machinery/suit_storage_unit/attack_ai(mob/user as mob) /obj/machinery/suit_storage_unit/attack_ai(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/suit_storage_unit/attack_paw(mob/user as mob)
user << "<font color='blue'>The console controls are far too complicated for your tiny brain!</font>"
return
//////////////////////////////REMINDER: Make it lock once you place some fucker inside. //////////////////////////////REMINDER: Make it lock once you place some fucker inside.
//God this entire file is fucking awful //God this entire file is fucking awful
@@ -657,10 +653,6 @@
/obj/machinery/suit_cycler/attack_ai(mob/user as mob) /obj/machinery/suit_cycler/attack_ai(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
/obj/machinery/suit_cycler/attack_paw(mob/user as mob)
user << "\blue The console controls are far too complicated for your tiny brain!"
return
/obj/machinery/suit_cycler/attackby(obj/item/I as obj, mob/user as mob) /obj/machinery/suit_cycler/attackby(obj/item/I as obj, mob/user as mob)
if(electrified != 0) if(electrified != 0)
@@ -786,6 +778,9 @@
if(..() || stat & (BROKEN|NOPOWER)) if(..() || stat & (BROKEN|NOPOWER))
return return
if(!user.IsAdvancedToolUser())
return 0
if(electrified != 0) if(electrified != 0)
if(src.shock(user, 100)) if(src.shock(user, 100))
return return

View File

@@ -77,9 +77,6 @@
return return
/obj/machinery/computer/teleporter/attack_paw()
src.attack_hand()
/obj/machinery/teleport/station/attack_ai() /obj/machinery/teleport/station/attack_ai()
src.attack_hand() src.attack_hand()
@@ -311,9 +308,6 @@
/obj/machinery/teleport/station/attackby(var/obj/item/weapon/W) /obj/machinery/teleport/station/attackby(var/obj/item/weapon/W)
src.attack_hand() src.attack_hand()
/obj/machinery/teleport/station/attack_paw()
src.attack_hand()
/obj/machinery/teleport/station/attack_ai() /obj/machinery/teleport/station/attack_ai()
src.attack_hand() src.attack_hand()

View File

@@ -338,18 +338,18 @@
spawn(13) spawn(13)
del(src) del(src)
/obj/machinery/turret/attack_animal(mob/living/M as mob) /obj/machinery/turret/attack_generic(var/mob/user, var/damage, var/attack_message)
if(M.melee_damage_upper == 0) return if(!damage)
if(!(stat & BROKEN)) return 0
visible_message("\red <B>[M] [M.attacktext] [src]!</B>") if(stat & BROKEN)
M.attack_log += text("\[[time_stamp()]\] <font color='red'>attacked [src.name]</font>") user << "That object is useless to you."
//src.attack_log += text("\[[time_stamp()]\] <font color='orange'>was attacked by [M.name] ([M.ckey])</font>") return 0
src.health -= M.melee_damage_upper visible_message("<span class='danger'>[user] [attack_message] the [src]!</span>")
if (src.health <= 0) user.attack_log += text("\[[time_stamp()]\] <font color='red'>attacked [src.name]</font>")
src.die() src.health -= damage
else if (src.health <= 0)
M << "\red That object is useless to you." src.die()
return return 1
/obj/structure/turret/gun_turret /obj/structure/turret/gun_turret
name = "Gun Turret" name = "Gun Turret"

View File

@@ -274,10 +274,6 @@
else else
usr << "\icon[src]<span class='warning'>Error: Unable to access your account. Please contact technical support if problem persists.</span>" usr << "\icon[src]<span class='warning'>Error: Unable to access your account. Please contact technical support if problem persists.</span>"
/obj/machinery/vending/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/machinery/vending/attack_ai(mob/user as mob) /obj/machinery/vending/attack_ai(mob/user as mob)
return attack_hand(user) return attack_hand(user)

View File

@@ -444,28 +444,6 @@
src.log_append_to_last("Armor saved.") src.log_append_to_last("Armor saved.")
return return
/obj/mecha/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/mecha/attack_animal(mob/living/user as mob)
src.log_message("Attack by simple animal. Attacker - [user].",1)
if(user.melee_damage_upper == 0)
user.emote("[user.friendly] [src]")
else
if(!prob(src.deflect_chance))
var/damage = rand(user.melee_damage_lower, user.melee_damage_upper)
src.take_damage(damage)
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
visible_message("\red <B>[user]</B> [user.attacktext] [src]!")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>attacked [src.name]</font>")
else
src.log_append_to_last("Armor saved.")
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1)
src.occupant_message("\blue The [user]'s attack is stopped by the armor.")
visible_message("\blue The [user] rebounds off [src.name]'s armor!")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>attacked [src.name]</font>")
return
/obj/mecha/hitby(atom/movable/A as mob|obj) //wrapper /obj/mecha/hitby(atom/movable/A as mob|obj) //wrapper
..() ..()
src.log_message("Hit by [A].",1) src.log_message("Hit by [A].",1)
@@ -1725,6 +1703,27 @@
icon_state = initial(icon_state) icon_state = initial(icon_state)
return icon_state return icon_state
/obj/mecha/attack_generic(var/mob/user, var/damage, var/attack_message)
if(!damage)
return 0
src.log_message("Attack by an animal. Attacker - [user].",1)
if(!prob(src.deflect_chance))
src.take_damage(damage)
src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
visible_message("\red <B>[user]</B> [attack_message] [src]!")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>attacked [src.name]</font>")
else
src.log_append_to_last("Armor saved.")
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1)
src.occupant_message("\blue The [user]'s attack is stopped by the armor.")
visible_message("\blue The [user] rebounds off [src.name]'s armor!")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>attacked [src.name]</font>")
return 1
////////////////////////////////////////// //////////////////////////////////////////
//////// Mecha global iterators //////// //////// Mecha global iterators ////////
////////////////////////////////////////// //////////////////////////////////////////

View File

@@ -11,9 +11,6 @@
attack_ai(var/mob/user as mob) attack_ai(var/mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)
attack_paw(var/mob/user as mob)
return src.attack_hand(user)
attack_hand(var/mob/user as mob) attack_hand(var/mob/user as mob)
if(..()) if(..())
return return

View File

@@ -127,9 +127,6 @@
healthcheck() healthcheck()
return return
/obj/effect/alien/resin/attack_paw()
return attack_hand()
/obj/effect/alien/resin/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/effect/alien/resin/attackby(obj/item/weapon/W as obj, mob/user as mob)
var/aforce = W.force var/aforce = W.force

View File

@@ -653,10 +653,6 @@ steam.start() -- spawns the effect
if(metal==1 || prob(50)) if(metal==1 || prob(50))
del(src) del(src)
attack_paw(var/mob/user)
attack_hand(user)
return
attack_hand(var/mob/user) attack_hand(var/mob/user)
if ((HULK in user.mutations) || (prob(75 - metal*25))) if ((HULK in user.mutations) || (prob(75 - metal*25)))
user << "\blue You smash through the metal foam wall." user << "\blue You smash through the metal foam wall."

View File

@@ -152,30 +152,6 @@
user.put_in_active_hand(src) user.put_in_active_hand(src)
return return
/obj/item/attack_paw(mob/user as mob)
if (istype(src.loc, /obj/item/weapon/storage))
for(var/mob/M in range(1, src.loc))
if (M.s_active == src.loc)
if (M.client)
M.client.screen -= src
src.throwing = 0
if (src.loc == user)
//canremove==0 means that object may not be removed. You can still wear it. This only applies to clothing. /N
if(istype(src, /obj/item/clothing) && !src:canremove)
return
else
user.u_equip(src)
else
if(istype(src.loc, /mob/living))
return
src.pickup(user)
user.next_move = max(user.next_move+2,world.time + 2)
user.put_in_active_hand(src)
return
// Due to storage type consolidation this should get used more now. // Due to storage type consolidation this should get used more now.
// I have cleaned it up a little, but it could probably use more. -Sayu // I have cleaned it up a little, but it could probably use more. -Sayu
/obj/item/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/item/attackby(obj/item/weapon/W as obj, mob/user as mob)

View File

@@ -58,11 +58,6 @@
else else
..() ..()
attack_paw()
return
attack_ai() attack_ai()
return return

View File

@@ -24,10 +24,6 @@
spawn (0) spawn (0)
attack_self(user) attack_self(user)
/obj/item/device/radio/intercom/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/item/device/radio/intercom/attack_hand(mob/user as mob) /obj/item/device/radio/intercom/attack_hand(mob/user as mob)
src.add_fingerprint(user) src.add_fingerprint(user)
spawn (0) spawn (0)

View File

@@ -64,7 +64,6 @@
if(!user || !src) return 0 if(!user || !src) return 0
if(!istype(user.loc,/turf)) return 0 if(!istype(user.loc,/turf)) return 0
if(!user.IsAdvancedToolUser()) if(!user.IsAdvancedToolUser())
user << "\red You don't have the dexterity to do this!"
return 0 return 0
var/title = "Sheet-Glass" var/title = "Sheet-Glass"
title += " ([src.amount] sheet\s left)" title += " ([src.amount] sheet\s left)"
@@ -145,7 +144,6 @@
if(!user || !src) return 0 if(!user || !src) return 0
if(!istype(user.loc,/turf)) return 0 if(!istype(user.loc,/turf)) return 0
if(!user.IsAdvancedToolUser()) if(!user.IsAdvancedToolUser())
user << "\red You don't have the dexterity to do this!"
return 0 return 0
var/title = "Sheet Reinf. Glass" var/title = "Sheet Reinf. Glass"
title += " ([src.amount] sheet\s left)" title += " ([src.amount] sheet\s left)"

View File

@@ -28,9 +28,6 @@
SetValue(src.value) SetValue(src.value)
//testing("[name]: DNA2 SE blocks after SetValue: [english_list(buf.dna.SE)]") //testing("[name]: DNA2 SE blocks after SetValue: [english_list(buf.dna.SE)]")
/obj/item/weapon/dnainjector/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/item/weapon/dnainjector/proc/GetRealBlock(var/selblock) /obj/item/weapon/dnainjector/proc/GetRealBlock(var/selblock)
if(selblock==0) if(selblock==0)
return block return block

View File

@@ -108,7 +108,4 @@
/obj/item/weapon/grenade/attack_hand() /obj/item/weapon/grenade/attack_hand()
walk(src, null, null) walk(src, null, null)
..() ..()
return return
/obj/item/weapon/grenade/attack_paw(mob/user as mob)
return attack_hand(user)

View File

@@ -31,9 +31,6 @@
if(..(user, 1)) if(..(user, 1))
user << text("The service panel is [src.open ? "open" : "closed"].") user << text("The service panel is [src.open ? "open" : "closed"].")
attack_paw(mob/user as mob)
return attack_hand(user)
attackby(obj/item/weapon/W as obj, mob/user as mob) attackby(obj/item/weapon/W as obj, mob/user as mob)
if(locked) if(locked)
if ( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && (!src.emagged)) if ( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && (!src.emagged))

View File

@@ -1,5 +1,6 @@
/obj/structure /obj/structure
icon = 'icons/obj/structures.dmi' icon = 'icons/obj/structures.dmi'
var/climbable var/climbable
var/breakable var/breakable
var/parts var/parts
@@ -14,22 +15,12 @@
if(breakable) if(breakable)
if(HULK in user.mutations) if(HULK in user.mutations)
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
visible_message("<span class='danger'>[user] smashes the [src] apart!</span>") attack_generic(user,1,"smashes")
destroy()
else if(istype(user,/mob/living/carbon/human)) else if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
if(H.species.can_shred(user)) if(H.species.can_shred(user))
visible_message("<span class='danger'>[H] slices [src] apart!</span>") attack_generic(user,1,"slices")
destroy() return
/obj/structure/attack_animal(mob/living/user)
if(breakable)
if(user.wall_smash)
visible_message("<span class='danger'>[user] smashes [src] apart!</span>")
destroy()
/obj/structure/attack_paw(mob/user)
if(breakable) attack_hand(user)
/obj/structure/blob_act() /obj/structure/blob_act()
if(prob(50)) if(prob(50))
@@ -175,4 +166,11 @@
if (issilicon(user)) if (issilicon(user))
user << "<span class='notice'>You need hands for this.</span>" user << "<span class='notice'>You need hands for this.</span>"
return 0 return 0
return 1
/obj/structure/attack_generic(var/mob/user, var/damage, var/attack_verb, var/wallbreaker)
if(!breakable || !damage || !wallbreaker)
return 0
visible_message("<span class='danger'>[user] [attack_verb] the [src] apart!</span>")
spawn(1) destroy()
return 1 return 1

View File

@@ -108,7 +108,7 @@ LINEN BINS
/obj/structure/bedsheetbin/examine(mob/user) /obj/structure/bedsheetbin/examine(mob/user)
..(user) ..(user)
if(amount < 1) if(amount < 1)
user << "There are no bed sheets in the bin." user << "There are no bed sheets in the bin."
return return
@@ -138,12 +138,6 @@ LINEN BINS
hidden = I hidden = I
user << "<span class='notice'>You hide [I] among the sheets.</span>" user << "<span class='notice'>You hide [I] among the sheets.</span>"
/obj/structure/bedsheetbin/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/structure/bedsheetbin/attack_hand(mob/user as mob) /obj/structure/bedsheetbin/attack_hand(mob/user as mob)
if(amount >= 1) if(amount >= 1)
amount-- amount--

View File

@@ -174,13 +174,6 @@
return return
/obj/structure/closet/attack_animal(mob/living/user as mob)
if(user.wall_smash)
visible_message("\red [user] destroys the [src]. ")
for(var/atom/movable/A as mob|obj in src)
A.loc = src.loc
del(src)
// this should probably use dump_contents() // this should probably use dump_contents()
/obj/structure/closet/blob_act() /obj/structure/closet/blob_act()
if(prob(75)) if(prob(75))
@@ -267,10 +260,6 @@
spawn(30) spawn(30)
lastbang = 0 lastbang = 0
/obj/structure/closet/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/closet/attack_hand(mob/user as mob) /obj/structure/closet/attack_hand(mob/user as mob)
src.add_fingerprint(user) src.add_fingerprint(user)
src.toggle(user) src.toggle(user)
@@ -308,4 +297,12 @@
for (var/atom/A in src) for (var/atom/A in src)
if(istype(A,/obj/)) if(istype(A,/obj/))
var/obj/O = A var/obj/O = A
O.hear_talk(M, text) O.hear_talk(M, text)
/obj/structure/closet/attack_generic(var/mob/user, var/damage, var/attack_message = "destroys", var/wallbreaker)
if(!damage || !wallbreaker)
return
visible_message("<span class='danger'>[user] [attack_message] the [src]!</span>")
dump_contents()
spawn(1) del(src)
return 1

View File

@@ -181,10 +181,6 @@
usr << "\blue The [src.name] is closed." usr << "\blue The [src.name] is closed."
update_icon() update_icon()
attack_paw(mob/user as mob)
attack_hand(user)
return
attack_ai(mob/user as mob) attack_ai(mob/user as mob)
if(src.smashed) if(src.smashed)
user << "\red The security of the cabinet is compromised." user << "\red The security of the cabinet is compromised."

View File

@@ -104,9 +104,6 @@
else else
src.toggle(user) src.toggle(user)
/obj/structure/closet/secure_closet/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/closet/secure_closet/verb/verb_togglelock() /obj/structure/closet/secure_closet/verb/verb_togglelock()
set src in oview(1) // One square distance set src in oview(1) // One square distance
set category = "Object" set category = "Object"

View File

@@ -76,9 +76,6 @@
..() ..()
return return
/obj/structure/displaycase/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/displaycase/attack_hand(mob/user as mob) /obj/structure/displaycase/attack_hand(mob/user as mob)
if (src.destroyed && src.occupied) if (src.destroyed && src.occupied)
new /obj/item/weapon/gun/energy/laser/captain( src.loc ) new /obj/item/weapon/gun/energy/laser/captain( src.loc )

View File

@@ -54,11 +54,6 @@
opened = !opened opened = !opened
update_icon() update_icon()
/obj/structure/extinguisher_cabinet/attack_paw(mob/user)
attack_hand(user)
return
/obj/structure/extinguisher_cabinet/update_icon() /obj/structure/extinguisher_cabinet/update_icon()
if(!opened) if(!opened)
icon_state = "extinguisher_closed" icon_state = "extinguisher_closed"

View File

@@ -6,200 +6,199 @@
var/state = 0 var/state = 0
var/health = 200 var/health = 200
/obj/structure/girder/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart", var/wallbreaker)
if(!damage || !wallbreaker)
return 0
visible_message("<span class='danger'>[user] [attack_message] the [src]!</span>")
spawn(1) dismantle()
return 1
bullet_act(var/obj/item/projectile/Proj) /obj/structure/girder/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj, /obj/item/projectile/beam)) if(istype(Proj, /obj/item/projectile/beam))
health -= Proj.damage health -= Proj.damage
..() ..()
if(health <= 0) if(health <= 0)
new /obj/item/stack/sheet/metal(get_turf(src)) new /obj/item/stack/sheet/metal(get_turf(src))
del(src) del(src)
return return
attackby(obj/item/W as obj, mob/user as mob) /obj/structure/girder/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/wrench) && state == 0) if(istype(W, /obj/item/weapon/wrench) && state == 0)
if(anchored && !istype(src,/obj/structure/girder/displaced)) if(anchored && !istype(src,/obj/structure/girder/displaced))
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
user << "\blue Now disassembling the girder" user << "\blue Now disassembling the girder"
if(do_after(user,40)) if(do_after(user,40))
if(!src) return
user << "\blue You dissasembled the girder!"
dismantle()
else if(!anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
user << "\blue Now securing the girder"
if(get_turf(user, 40))
user << "\blue You secured the girder!"
new/obj/structure/girder( src.loc )
del(src)
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
user << "\blue Now slicing apart the girder"
if(do_after(user,30))
if(!src) return if(!src) return
user << "\blue You slice apart the girder!" user << "\blue You dissasembled the girder!"
dismantle() dismantle()
else if(!anchored)
else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
user << "\blue You drill through the girder!" user << "\blue Now securing the girder"
dismantle() if(get_turf(user, 40))
user << "\blue You secured the girder!"
else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced))
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
user << "\blue Now unsecuring support struts"
if(do_after(user,40))
if(!src) return
user << "\blue You unsecured the support struts!"
state = 1
else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
user << "\blue Now removing support struts"
if(do_after(user,40))
if(!src) return
user << "\blue You removed the support struts!"
new/obj/structure/girder( src.loc ) new/obj/structure/girder( src.loc )
del(src) del(src)
else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored ) else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) user << "\blue Now slicing apart the girder"
user << "\blue Now dislodging the girder" if(do_after(user,30))
if(do_after(user, 40)) if(!src) return
if(!src) return user << "\blue You slice apart the girder!"
user << "\blue You dislodged the girder!" dismantle()
new/obj/structure/girder/displaced( src.loc )
del(src)
else if(istype(W, /obj/item/stack/sheet)) else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
user << "\blue You drill through the girder!"
dismantle()
var/obj/item/stack/sheet/S = W else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced))
switch(S.type) playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
user << "\blue Now unsecuring support struts"
if(do_after(user,40))
if(!src) return
user << "\blue You unsecured the support struts!"
state = 1
if(/obj/item/stack/sheet/metal, /obj/item/stack/sheet/metal/cyborg) else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1)
if(!anchored) playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
if(S.use(2)) user << "\blue Now removing support struts"
user << "<span class='notice'>You create a false wall! Push on it to open or close the passage.</span>" if(do_after(user,40))
new /obj/structure/falsewall (src.loc) if(!src) return
user << "\blue You removed the support struts!"
new/obj/structure/girder( src.loc )
del(src)
else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored )
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
user << "\blue Now dislodging the girder"
if(do_after(user, 40))
if(!src) return
user << "\blue You dislodged the girder!"
new/obj/structure/girder/displaced( src.loc )
del(src)
else if(istype(W, /obj/item/stack/sheet))
var/obj/item/stack/sheet/S = W
switch(S.type)
if(/obj/item/stack/sheet/metal, /obj/item/stack/sheet/metal/cyborg)
if(!anchored)
if(S.use(2))
user << "<span class='notice'>You create a false wall! Push on it to open or close the passage.</span>"
new /obj/structure/falsewall (src.loc)
del(src)
else
if(S.get_amount() < 2) return ..()
user << "<span class='notice'>Now adding plating...</span>"
if (do_after(user,40))
if (S.use(2))
user << "<span class='notice'>You added the plating!</span>"
var/turf/Tsrc = get_turf(src)
Tsrc.ChangeTurf(/turf/simulated/wall)
for(var/turf/simulated/wall/X in Tsrc.loc)
if(X) X.add_hiddenprint(usr)
del(src) del(src)
else return
if(S.get_amount() < 2) return ..()
user << "<span class='notice'>Now adding plating...</span>" if(/obj/item/stack/sheet/plasteel)
if (do_after(user,40)) if(!anchored)
if (S.use(2)) if(S.use(2))
user << "<span class='notice'>You added the plating!</span>" user << "\blue You create a false wall! Push on it to open or close the passage."
new /obj/structure/falserwall (src.loc)
del(src)
else
if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code...
if(S.get_amount() < 1) return ..()
user << "<span class='notice'>Now finalising reinforced wall.</span>"
if(do_after(user, 50))
if (S.use(1))
user << "<span class='notice'>Wall fully reinforced!</span>"
var/turf/Tsrc = get_turf(src) var/turf/Tsrc = get_turf(src)
Tsrc.ChangeTurf(/turf/simulated/wall) Tsrc.ChangeTurf(/turf/simulated/wall/r_wall)
for(var/turf/simulated/wall/X in Tsrc.loc) for(var/turf/simulated/wall/r_wall/X in Tsrc.loc)
if(X) X.add_hiddenprint(usr) if(X) X.add_hiddenprint(usr)
del(src) del(src)
return return
if(/obj/item/stack/sheet/plasteel)
if(!anchored)
if(S.use(2))
user << "\blue You create a false wall! Push on it to open or close the passage."
new /obj/structure/falserwall (src.loc)
del(src)
else else
if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... if(S.get_amount() < 1) return ..()
if(S.get_amount() < 1) return ..() user << "<span class='notice'>Now reinforcing girders...</span>"
user << "<span class='notice'>Now finalising reinforced wall.</span>" if (do_after(user,60))
if(do_after(user, 50)) if(S.use(1))
if (S.use(1)) user << "<span class='notice'>Girders reinforced!</span>"
user << "<span class='notice'>Wall fully reinforced!</span>" new/obj/structure/girder/reinforced( src.loc )
var/turf/Tsrc = get_turf(src) del(src)
Tsrc.ChangeTurf(/turf/simulated/wall/r_wall) return
for(var/turf/simulated/wall/r_wall/X in Tsrc.loc)
if(X) X.add_hiddenprint(usr)
del(src)
return
else
if(S.get_amount() < 1) return ..()
user << "<span class='notice'>Now reinforcing girders...</span>"
if (do_after(user,60))
if(S.use(1))
user << "<span class='notice'>Girders reinforced!</span>"
new/obj/structure/girder/reinforced( src.loc )
del(src)
return
if(S.sheettype) if(S.sheettype)
var/M = S.sheettype var/M = S.sheettype
if(!anchored) if(!anchored)
if(S.amount < 2) return if(S.amount < 2) return
S.use(2)
user << "\blue You create a false wall! Push on it to open or close the passage."
var/F = text2path("/obj/structure/falsewall/[M]")
new F (src.loc)
del(src)
else
if(S.amount < 2) return ..()
user << "\blue Now adding plating..."
if (do_after(user,40))
if(!src || !S || S.amount < 2) return
S.use(2) S.use(2)
user << "\blue You create a false wall! Push on it to open or close the passage." user << "\blue You added the plating!"
var/F = text2path("/obj/structure/falsewall/[M]") var/turf/Tsrc = get_turf(src)
new F (src.loc) Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]"))
for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
if(X) X.add_hiddenprint(usr)
del(src) del(src)
else return
if(S.amount < 2) return ..()
user << "\blue Now adding plating..."
if (do_after(user,40))
if(!src || !S || S.amount < 2) return
S.use(2)
user << "\blue You added the plating!"
var/turf/Tsrc = get_turf(src)
Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]"))
for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
if(X) X.add_hiddenprint(usr)
del(src)
return
add_hiddenprint(usr) add_hiddenprint(usr)
else if(istype(W, /obj/item/pipe)) else if(istype(W, /obj/item/pipe))
var/obj/item/pipe/P = W var/obj/item/pipe/P = W
if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds. if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
user.drop_item() user.drop_item()
P.loc = src.loc P.loc = src.loc
user << "\blue You fit the pipe into the [src]!" user << "\blue You fit the pipe into the [src]!"
else else
..() ..()
proc/dismantle() /obj/structure/girder/proc/dismantle()
new /obj/item/stack/sheet/metal(get_turf(src)) new /obj/item/stack/sheet/metal(get_turf(src))
del(src)
/obj/structure/girder/attack_hand(mob/user as mob)
if (HULK in user.mutations)
visible_message("<span class='danger'>[user] smashes [src] apart!</span>")
dismantle()
return
return ..()
/obj/structure/girder/blob_act()
if(prob(40))
del(src) del(src)
attack_hand(mob/user as mob)
if (HULK in user.mutations)
visible_message("<span class='danger'>[user] smashes [src] apart!</span>")
dismantle()
return
return ..()
attack_animal(mob/living/simple_animal/user) /obj/structure/girder/ex_act(severity)
if(user.wall_smash) switch(severity)
visible_message("<span class='danger'>[user] smashes [src] apart!</span>") if(1.0)
dismantle()
return
return ..()
blob_act()
if(prob(40))
del(src) del(src)
return
if(2.0)
ex_act(severity) if (prob(30))
switch(severity) var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
if(1.0) new remains(loc)
del(src) del(src)
return return
if(2.0) if(3.0)
if (prob(30)) if (prob(5))
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
new remains(loc) new remains(loc)
del(src) del(src)
return return
if(3.0) else
if (prob(5)) return
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
new remains(loc)
del(src)
return
else
return
/obj/structure/girder/displaced /obj/structure/girder/displaced
icon_state = "displaced" icon_state = "displaced"
@@ -219,54 +218,54 @@
layer = 2 layer = 2
var/health = 250 var/health = 250
attackby(obj/item/W as obj, mob/user as mob) /obj/structure/cultgirder/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/wrench)) if(istype(W, /obj/item/weapon/wrench))
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
user << "\blue Now disassembling the girder" user << "\blue Now disassembling the girder"
if(do_after(user,40)) if(do_after(user,40))
user << "\blue You dissasembled the girder!" user << "\blue You dissasembled the girder!"
new /obj/effect/decal/remains/human(get_turf(src))
del(src)
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
user << "\blue Now slicing apart the girder"
if(do_after(user,30))
user << "\blue You slice apart the girder!"
new /obj/effect/decal/remains/human(get_turf(src)) new /obj/effect/decal/remains/human(get_turf(src))
del(src) del(src)
else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
user << "\blue You drill through the girder!" user << "\blue Now slicing apart the girder"
new /obj/effect/decal/remains/human(get_turf(src)) if(do_after(user,30))
user << "\blue You slice apart the girder!"
new /obj/effect/decal/remains/human(get_turf(src))
del(src)
else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
user << "\blue You drill through the girder!"
new /obj/effect/decal/remains/human(get_turf(src))
del(src)
/obj/structure/cultgirder/blob_act()
if(prob(40))
del(src)
/obj/structure/cultgirder/bullet_act(var/obj/item/projectile/Proj) //No beam check- How else will you destroy the cult girder with silver bullets?????
health -= Proj.damage
..()
if(health <= 0)
new /obj/item/stack/sheet/metal(get_turf(src))
del(src)
return
/obj/structure/cultgirder/ex_act(severity)
switch(severity)
if(1.0)
del(src) del(src)
return
blob_act() if(2.0)
if(prob(40)) if (prob(30))
del(src) new /obj/effect/decal/remains/human(loc)
bullet_act(var/obj/item/projectile/Proj) //No beam check- How else will you destroy the cult girder with silver bullets?????
health -= Proj.damage
..()
if(health <= 0)
new /obj/item/stack/sheet/metal(get_turf(src))
del(src)
return
ex_act(severity)
switch(severity)
if(1.0)
del(src) del(src)
return return
if(2.0) if(3.0)
if (prob(30)) if (prob(5))
new /obj/effect/decal/remains/human(loc) new /obj/effect/decal/remains/human(loc)
del(src) del(src)
return return
if(3.0) else
if (prob(5)) return
new /obj/effect/decal/remains/human(loc)
del(src)
return
else
return

View File

@@ -26,27 +26,17 @@
/obj/structure/grille/Bumped(atom/user) /obj/structure/grille/Bumped(atom/user)
if(ismob(user)) shock(user, 70) if(ismob(user)) shock(user, 70)
/obj/structure/grille/attack_paw(mob/user as mob)
attack_hand(user)
/obj/structure/grille/attack_hand(mob/user as mob) /obj/structure/grille/attack_hand(mob/user as mob)
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
var/damage_dealt var/damage_dealt = 1
var/attack_message = "kicks"
if(istype(user,/mob/living/carbon/human)) if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
if(H.species.can_shred(H)) if(H.species.can_shred(H))
attack_message = "mangles"
damage_dealt = 5 damage_dealt = 5
user.visible_message("<span class='warning'>[user] mangles [src].</span>", \
"<span class='warning'>You mangle [src].</span>", \
"You hear twisting metal.")
if(!damage_dealt)
user.visible_message("<span class='warning'>[user] kicks [src].</span>", \
"<span class='warning'>You kick [src].</span>", \
"You hear twisting metal.")
if(shock(user, 70)) if(shock(user, 70))
return return
@@ -56,35 +46,7 @@
else else
damage_dealt += 1 damage_dealt += 1
health -= damage_dealt attack_generic(user,damage_dealt,attack_message)
healthcheck()
/obj/structure/grille/attack_slime(mob/user as mob)
var/mob/living/carbon/slime/S = user
if (!S.is_adult)
return
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
user.visible_message("<span class='warning'>[user] smashes against [src].</span>", \
"<span class='warning'>You smash against [src].</span>", \
"You hear twisting metal.")
health -= rand(2,3)
healthcheck()
return
/obj/structure/grille/attack_animal(var/mob/living/simple_animal/M as mob)
if(M.melee_damage_upper == 0) return
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
M.visible_message("<span class='warning'>[M] smashes against [src].</span>", \
"<span class='warning'>You smash against [src].</span>", \
"You hear twisting metal.")
health -= M.melee_damage_upper
healthcheck()
return
/obj/structure/grille/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) /obj/structure/grille/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0)) return 1 if(air_group || (height==0)) return 1
@@ -226,3 +188,9 @@
health -= 1 health -= 1
healthcheck() healthcheck()
..() ..()
/obj/structure/grille/attack_generic(var/mob/user, var/damage, var/attack_verb)
visible_message("<span class='danger'>[user] [attack_verb] the [src]!</span>")
health -= damage
spawn(1) healthcheck()
return 1

View File

@@ -26,128 +26,104 @@
var/health = 50.0 var/health = 50.0
New(location) /obj/structure/inflatable/New(location)
..() ..()
update_nearby_tiles(need_rebuild=1) update_nearby_tiles(need_rebuild=1)
Del() /obj/structure/inflatable/Del()
update_nearby_tiles() update_nearby_tiles()
..() ..()
proc/update_nearby_tiles(need_rebuild) //Copypasta from airlock code /obj/structure/inflatable/proc/update_nearby_tiles(need_rebuild) //Copypasta from airlock code
if(!air_master) if(!air_master)
return 0
air_master.mark_for_update(get_turf(src))
return 1
CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
return 0 return 0
air_master.mark_for_update(get_turf(src))
return 1
bullet_act(var/obj/item/projectile/Proj) /obj/structure/inflatable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
health -= Proj.damage return 0
..()
if(health <= 0) /obj/structure/inflatable/bullet_act(var/obj/item/projectile/Proj)
health -= Proj.damage
..()
if(health <= 0)
deflate(1)
return
/obj/structure/inflatable/ex_act(severity)
switch(severity)
if(1.0)
del(src)
return
if(2.0)
deflate(1) deflate(1)
return return
if(3.0)
if(prob(50))
ex_act(severity)
switch(severity)
if(1.0)
del(src)
return
if(2.0)
deflate(1) deflate(1)
return return
if(3.0)
if(prob(50))
deflate(1)
return
/obj/structure/inflatable/blob_act()
deflate(1)
blob_act() /obj/structure/inflatable/meteorhit()
deflate(1) deflate(1)
/obj/structure/inflatable/attack_hand(mob/user as mob)
meteorhit()
//world << "glass at [x],[y],[z] Mhit"
deflate(1)
attack_paw(mob/user as mob)
return attack_generic(user, 15)
attack_hand(mob/user as mob)
add_fingerprint(user) add_fingerprint(user)
return return
/obj/structure/inflatable/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(!istype(W)) return
proc/attack_generic(mob/user as mob, damage = 0) //used by attack_animal and attack_slime if (can_puncture(W))
health -= damage visible_message("\red <b>[user] pierces [src] with [W]!</b>")
if(health <= 0) deflate(1)
user.visible_message("<span class='danger'>[user] tears open [src]!</span>") if(W.damtype == BRUTE || W.damtype == BURN)
deflate(1) hit(W.force)
else //for nicer text~ ..()
user.visible_message("<span class='danger'>[user] tears at [src]!</span>") return
attack_animal(mob/user as mob) /obj/structure/inflatable/proc/hit(var/damage, var/sound_effect = 1)
if(!isanimal(user)) return health = max(0, health - damage)
var/mob/living/simple_animal/M = user if(sound_effect)
if(M.melee_damage_upper <= 0) return playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1)
attack_generic(M, M.melee_damage_upper) if(health <= 0)
deflate(1)
/obj/structure/inflatable/proc/deflate(var/violent=0)
attack_slime(mob/user as mob) playsound(loc, 'sound/machines/hiss.ogg', 75, 1)
var/mob/living/carbon/slime/S = user if(violent)
if (!S.is_adult) visible_message("[src] rapidly deflates!")
return var/obj/item/inflatable/torn/R = new /obj/item/inflatable/torn(loc)
attack_generic(user, rand(10, 15)) src.transfer_fingerprints_to(R)
del(src)
else
attackby(obj/item/weapon/W as obj, mob/user as mob) //user << "\blue You slowly deflate the inflatable wall."
if(!istype(W)) return visible_message("[src] slowly deflates.")
spawn(50)
if (can_puncture(W)) var/obj/item/inflatable/R = new /obj/item/inflatable(loc)
visible_message("\red <b>[user] pierces [src] with [W]!</b>")
deflate(1)
if(W.damtype == BRUTE || W.damtype == BURN)
hit(W.force)
..()
return
proc/hit(var/damage, var/sound_effect = 1)
health = max(0, health - damage)
if(sound_effect)
playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1)
if(health <= 0)
deflate(1)
proc/deflate(var/violent=0)
playsound(loc, 'sound/machines/hiss.ogg', 75, 1)
if(violent)
visible_message("[src] rapidly deflates!")
var/obj/item/inflatable/torn/R = new /obj/item/inflatable/torn(loc)
src.transfer_fingerprints_to(R) src.transfer_fingerprints_to(R)
del(src) del(src)
else
//user << "\blue You slowly deflate the inflatable wall."
visible_message("[src] slowly deflates.")
spawn(50)
var/obj/item/inflatable/R = new /obj/item/inflatable(loc)
src.transfer_fingerprints_to(R)
del(src)
verb/hand_deflate() /obj/structure/inflatable/verb/hand_deflate()
set name = "Deflate" set name = "Deflate"
set category = "Object" set category = "Object"
set src in oview(1) set src in oview(1)
if(isobserver(usr)) //to stop ghosts from deflating if(isobserver(usr)) //to stop ghosts from deflating
return return
deflate() deflate()
/obj/structure/inflatable/attack_generic(var/mob/user, var/damage, var/attack_verb)
health -= damage
if(health <= 0)
user.visible_message("<span class='danger'>[user] [attack_verb] open the [src]!</span>")
spawn(1) deflate(1)
else
user.visible_message("<span class='danger'>[user] [attack_verb] at [src]!</span>")
return 1
/obj/item/inflatable/door/ /obj/item/inflatable/door/
name = "inflatable door" name = "inflatable door"
@@ -175,97 +151,84 @@
var/state = 0 //closed, 1 == open var/state = 0 //closed, 1 == open
var/isSwitchingStates = 0 var/isSwitchingStates = 0
//Bumped(atom/user) /obj/structure/inflatable/door/attack_ai(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral
// ..() if(isAI(user)) //so the AI can't open it
// if(!state) return
// return TryToSwitchState(user) else if(isrobot(user)) //but cyborgs can
// return if(get_dist(user,src) <= 1) //not remotely though
return TryToSwitchState(user)
attack_ai(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral /obj/structure/inflatable/door/attack_hand(mob/user as mob)
if(isAI(user)) //so the AI can't open it return TryToSwitchState(user)
return
else if(isrobot(user)) //but cyborgs can
if(get_dist(user,src) <= 1) //not remotely though
return TryToSwitchState(user)
attack_paw(mob/user as mob) /obj/structure/inflatable/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
return TryToSwitchState(user) if(air_group)
return state
if(istype(mover, /obj/effect/beam))
return !opacity
return !density
attack_hand(mob/user as mob) /obj/structure/inflatable/door/proc/TryToSwitchState(atom/user)
return TryToSwitchState(user) if(isSwitchingStates) return
if(ismob(user))
CanPass(atom/movable/mover, turf/target, height=0, air_group=0) var/mob/M = user
if(air_group) if(world.time - user.last_bumped <= 60) return //NOTE do we really need that?
return state if(M.client)
if(istype(mover, /obj/effect/beam)) if(iscarbon(M))
return !opacity var/mob/living/carbon/C = M
return !density if(!C.handcuffed)
proc/TryToSwitchState(atom/user)
if(isSwitchingStates) return
if(ismob(user))
var/mob/M = user
if(world.time - user.last_bumped <= 60) return //NOTE do we really need that?
if(M.client)
if(iscarbon(M))
var/mob/living/carbon/C = M
if(!C.handcuffed)
SwitchState()
else
SwitchState() SwitchState()
else if(istype(user, /obj/mecha)) else
SwitchState() SwitchState()
else if(istype(user, /obj/mecha))
SwitchState()
proc/SwitchState() /obj/structure/inflatable/door/proc/SwitchState()
if(state) if(state)
Close() Close()
else else
Open() Open()
update_nearby_tiles() update_nearby_tiles()
proc/Open()
isSwitchingStates = 1
//playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1)
flick("door_opening",src)
sleep(10)
density = 0
opacity = 0
state = 1
update_icon()
isSwitchingStates = 0
proc/Close()
isSwitchingStates = 1
//playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1)
flick("door_closing",src)
sleep(10)
density = 1
opacity = 0
state = 0
update_icon()
isSwitchingStates = 0
/obj/structure/inflatable/door/proc/Open()
isSwitchingStates = 1
flick("door_opening",src)
sleep(10)
density = 0
opacity = 0
state = 1
update_icon() update_icon()
if(state) isSwitchingStates = 0
icon_state = "door_open"
else
icon_state = "door_closed"
deflate(var/violent=0) /obj/structure/inflatable/door/proc/Close()
playsound(loc, 'sound/machines/hiss.ogg', 75, 1) isSwitchingStates = 1
if(violent) flick("door_closing",src)
visible_message("[src] rapidly deflates!") sleep(10)
var/obj/item/inflatable/door/torn/R = new /obj/item/inflatable/door/torn(loc) density = 1
opacity = 0
state = 0
update_icon()
isSwitchingStates = 0
/obj/structure/inflatable/door/update_icon()
if(state)
icon_state = "door_open"
else
icon_state = "door_closed"
/obj/structure/inflatable/door/deflate(var/violent=0)
playsound(loc, 'sound/machines/hiss.ogg', 75, 1)
if(violent)
visible_message("[src] rapidly deflates!")
var/obj/item/inflatable/door/torn/R = new /obj/item/inflatable/door/torn(loc)
src.transfer_fingerprints_to(R)
del(src)
else
visible_message("[src] slowly deflates.")
spawn(50)
var/obj/item/inflatable/door/R = new /obj/item/inflatable/door(loc)
src.transfer_fingerprints_to(R) src.transfer_fingerprints_to(R)
del(src) del(src)
else
//user << "\blue You slowly deflate the inflatable wall."
visible_message("[src] slowly deflates.")
spawn(50)
var/obj/item/inflatable/door/R = new /obj/item/inflatable/door(loc)
src.transfer_fingerprints_to(R)
del(src)
/obj/item/inflatable/torn /obj/item/inflatable/torn
name = "torn inflatable wall" name = "torn inflatable wall"

View File

@@ -12,8 +12,6 @@
var/meattype = 0 // 0 - Nothing, 1 - Monkey, 2 - Xeno var/meattype = 0 // 0 - Nothing, 1 - Monkey, 2 - Xeno
/obj/structure/kitchenspike /obj/structure/kitchenspike
attack_paw(mob/user as mob)
return src.attack_hand(usr)
attackby(obj/item/weapon/grab/G as obj, mob/user as mob) attackby(obj/item/weapon/grab/G as obj, mob/user as mob)
if(!istype(G, /obj/item/weapon/grab)) if(!istype(G, /obj/item/weapon/grab))

View File

@@ -66,8 +66,5 @@
add_fingerprint(user) add_fingerprint(user)
/obj/structure/ladder/attack_paw(mob/user as mob)
return attack_hand(user)
/obj/structure/ladder/attackby(obj/item/weapon/W, mob/user as mob) /obj/structure/ladder/attackby(obj/item/weapon/W, mob/user as mob)
return attack_hand(user) return attack_hand(user)

View File

@@ -72,9 +72,6 @@
..() ..()
return return
/obj/structure/lamarr/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/lamarr/attack_hand(mob/user as mob) /obj/structure/lamarr/attack_hand(mob/user as mob)
if (src.destroyed) if (src.destroyed)
return return

View File

@@ -39,9 +39,6 @@
if(get_dist(user,src) <= 1) //not remotely though if(get_dist(user,src) <= 1) //not remotely though
return TryToSwitchState(user) return TryToSwitchState(user)
attack_paw(mob/user as mob)
return TryToSwitchState(user)
attack_hand(mob/user as mob) attack_hand(mob/user as mob)
return TryToSwitchState(user) return TryToSwitchState(user)

View File

@@ -8,7 +8,6 @@
anchored = 1 anchored = 1
var/shattered = 0 var/shattered = 0
/obj/structure/mirror/attack_hand(mob/user as mob) /obj/structure/mirror/attack_hand(mob/user as mob)
if(shattered) return if(shattered) return
@@ -17,14 +16,10 @@
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
if(H.a_intent == "hurt") if(H.a_intent == "hurt")
if(shattered)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
return
if(prob(30) || H.species.can_shred(H)) if(prob(30) || H.species.can_shred(H))
user.visible_message("<span class='danger'>[user] smashes [src]!</span>") attack_generic(user,1)
shatter()
else else
user.visible_message("<span class='danger'>[user] hits [src] and bounces off!</span>") attack_generic(user)
return return
var/userloc = H.loc var/userloc = H.loc
@@ -82,7 +77,6 @@
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
..() ..()
/obj/structure/mirror/attackby(obj/item/I as obj, mob/user as mob) /obj/structure/mirror/attackby(obj/item/I as obj, mob/user as mob)
if(shattered) if(shattered)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
@@ -95,23 +89,15 @@
visible_message("<span class='warning'>[user] hits [src] with [I]!</span>") visible_message("<span class='warning'>[user] hits [src] with [I]!</span>")
playsound(src.loc, 'sound/effects/Glasshit.ogg', 70, 1) playsound(src.loc, 'sound/effects/Glasshit.ogg', 70, 1)
/obj/structure/mirror/attack_animal(mob/user as mob) /obj/structure/mirror/attack_generic(var/mob/user, var/damage)
if(!isanimal(user)) return
var/mob/living/simple_animal/M = user
if(M.melee_damage_upper <= 0) return
if(shattered) if(shattered)
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
return return 0
user.visible_message("<span class='danger'>[user] smashes [src]!</span>")
shatter()
if(damage)
/obj/structure/mirror/attack_slime(mob/user as mob) user.visible_message("<span class='danger'>[user] smashes [src]!")
var/mob/living/carbon/slime/S = user shatter()
if (!S.is_adult) else
return user.visible_message("<span class='danger'>[user] hits [src] and bounces off!</span>")
if(shattered) return 1
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
return
user.visible_message("<span class='danger'>[user] smashes [src]!</span>")
shatter()

View File

@@ -57,9 +57,6 @@
/obj/structure/morgue/alter_health() /obj/structure/morgue/alter_health()
return src.loc return src.loc
/obj/structure/morgue/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/morgue/attack_hand(mob/user as mob) /obj/structure/morgue/attack_hand(mob/user as mob)
if (src.connected) if (src.connected)
for(var/atom/movable/A as mob|obj in src.connected.loc) for(var/atom/movable/A as mob|obj in src.connected.loc)
@@ -137,9 +134,6 @@
anchored = 1 anchored = 1
throwpass = 1 throwpass = 1
/obj/structure/m_tray/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/m_tray/attack_hand(mob/user as mob) /obj/structure/m_tray/attack_hand(mob/user as mob)
if (src.connected) if (src.connected)
for(var/atom/movable/A as mob|obj in src.loc) for(var/atom/movable/A as mob|obj in src.loc)
@@ -222,9 +216,6 @@
/obj/structure/crematorium/alter_health() /obj/structure/crematorium/alter_health()
return src.loc return src.loc
/obj/structure/crematorium/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/crematorium/attack_hand(mob/user as mob) /obj/structure/crematorium/attack_hand(mob/user as mob)
// if (cremating) AWW MAN! THIS WOULD BE SO MUCH MORE FUN ... TO WATCH // if (cremating) AWW MAN! THIS WOULD BE SO MUCH MORE FUN ... TO WATCH
// user.show_message("\red Uh-oh, that was a bad idea.", 1) // user.show_message("\red Uh-oh, that was a bad idea.", 1)
@@ -353,9 +344,6 @@
anchored = 1 anchored = 1
throwpass = 1 throwpass = 1
/obj/structure/c_tray/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/c_tray/attack_hand(mob/user as mob) /obj/structure/c_tray/attack_hand(mob/user as mob)
if (src.connected) if (src.connected)
for(var/atom/movable/A as mob|obj in src.loc) for(var/atom/movable/A as mob|obj in src.loc)

View File

@@ -29,9 +29,6 @@
..() ..()
return return
/obj/structure/stool/bed/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/structure/stool/bed/attack_hand(mob/user as mob) /obj/structure/stool/bed/attack_hand(mob/user as mob)
manual_unbuckle(user) manual_unbuckle(user)
return return

View File

@@ -150,28 +150,12 @@
"You hear a knocking sound.") "You hear a knocking sound.")
return return
/obj/structure/window/attack_generic(var/mob/user, var/damage)
/obj/structure/window/attack_paw(mob/user as mob) if(!damage)
return attack_hand(user) return
/obj/structure/window/proc/attack_generic(mob/user as mob, damage = 0) //used by attack_animal and attack_slime
user.visible_message("<span class='danger'>[user] smashes into [src]!</span>") user.visible_message("<span class='danger'>[user] smashes into [src]!</span>")
take_damage(damage) take_damage(damage)
return 1
/obj/structure/window/attack_animal(mob/user as mob)
if(!isanimal(user)) return
var/mob/living/simple_animal/M = user
if(M.melee_damage_upper <= 0) return
attack_generic(M, M.melee_damage_upper)
/obj/structure/window/attack_slime(mob/user as mob)
var/mob/living/carbon/slime/S = user
if (!S.is_adult)
return
attack_generic(user, rand(10, 15))
/obj/structure/window/attackby(obj/item/W as obj, mob/user as mob) /obj/structure/window/attackby(obj/item/W as obj, mob/user as mob)
if(!istype(W)) return//I really wish I did not need this if(!istype(W)) return//I really wish I did not need this

View File

@@ -294,19 +294,12 @@ var/list/mechtoys = list(
/obj/item/weapon/paper/manifest /obj/item/weapon/paper/manifest
name = "Supply Manifest" name = "Supply Manifest"
/obj/machinery/computer/ordercomp/attack_ai(var/mob/user as mob) /obj/machinery/computer/ordercomp/attack_ai(var/mob/user as mob)
return attack_hand(user) return attack_hand(user)
/obj/machinery/computer/ordercomp/attack_paw(var/mob/user as mob)
return attack_hand(user)
/obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob) /obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob)
return attack_hand(user) return attack_hand(user)
/obj/machinery/computer/supplycomp/attack_paw(var/mob/user as mob)
return attack_hand(user)
/obj/machinery/computer/ordercomp/attack_hand(var/mob/user as mob) /obj/machinery/computer/ordercomp/attack_hand(var/mob/user as mob)
if(..()) if(..())
return return

View File

@@ -192,10 +192,6 @@ turf/simulated/floor/proc/update_icon()
else else
return 0 return 0
/turf/simulated/floor/attack_paw(mob/user as mob)
return src.attack_hand(user)
/turf/simulated/floor/attack_hand(mob/user as mob) /turf/simulated/floor/attack_hand(mob/user as mob)
if (is_light_floor()) if (is_light_floor())
var/obj/item/stack/tile/light/T = floor_tile var/obj/item/stack/tile/light/T = floor_tile

Some files were not shown because too many files have changed in this diff Show More