mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-09 16:09:15 +00:00
Afterattack() Signal (#38606)
* adds signal and modifies each call of afterattack to call it's inherited proc * uses new macro for sendsignal() * map fuck * skip precommithooks * combine and negate 2 ifs
This commit is contained in:
committed by
Emmett Gaines
parent
e2093f11f5
commit
bee0b5b2c3
@@ -127,6 +127,7 @@
|
||||
#define COMPONENT_NO_ATTACK_OBJ 1
|
||||
#define COMSIG_ITEM_PRE_ATTACK "item_pre_attack" //from base of obj/item/pre_attack(): (atom/target, mob/user, params)
|
||||
#define COMPONENT_NO_ATTACK 1
|
||||
#define COMSIG_ITEM_AFTERATTACK "item_afterattack" //from base of obj/item/afterattack(): (atom/target, mob/user, params)
|
||||
#define COMSIG_ITEM_EQUIPPED "item_equip" //from base of obj/item/equipped(): (/mob/equipper, slot)
|
||||
#define COMSIG_ITEM_DROPPED "item_drop" //from base of obj/item/dropped(): (mob/user)
|
||||
#define COMSIG_ITEM_PICKUP "item_pickup" //from base of obj/item/pickup(): (/mob/taker)
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
// Proximity_flag is 1 if this afterattack was called on something adjacent, in your square, or on your person.
|
||||
// Click parameters is the params string from byond Click() code, see that documentation.
|
||||
/obj/item/proc/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
return
|
||||
SEND_SIGNAL(src, COMSIG_ITEM_AFTERATTACK, target, user, proximity_flag, click_parameters)
|
||||
|
||||
|
||||
/obj/item/proc/get_clamped_volume()
|
||||
|
||||
@@ -120,6 +120,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/tk_grab/afterattack(atom/target, mob/living/carbon/user, proximity, params)//TODO: go over this
|
||||
. = ..()
|
||||
if(!target || !user)
|
||||
return
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
/datum/wires/explosive/c4/explode()
|
||||
var/obj/item/grenade/plastic/c4/P = holder
|
||||
P.explode()
|
||||
P.prime()
|
||||
|
||||
|
||||
/datum/wires/explosive/pizza
|
||||
|
||||
@@ -373,6 +373,7 @@ RLD
|
||||
return FALSE
|
||||
|
||||
/obj/item/construction/rcd/afterattack(atom/A, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!prox_check(proximity))
|
||||
return
|
||||
rcd_create(A, user)
|
||||
@@ -479,6 +480,7 @@ RLD
|
||||
has_ammobar = FALSE
|
||||
|
||||
/obj/item/construction/rcd/arcd/afterattack(atom/A, mob/user)
|
||||
. = ..()
|
||||
if(!range_check(A,user))
|
||||
return
|
||||
if(target_check(A,user))
|
||||
@@ -549,6 +551,7 @@ RLD
|
||||
|
||||
|
||||
/obj/item/construction/rld/afterattack(atom/A, mob/user)
|
||||
. = ..()
|
||||
if(!range_check(A,user))
|
||||
return
|
||||
var/turf/start = get_turf(src)
|
||||
|
||||
@@ -62,6 +62,7 @@ RSF
|
||||
// Change mode
|
||||
|
||||
/obj/item/rsf/afterattack(atom/A, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if (!(istype(A, /obj/structure/table) || isfloorturf(A)))
|
||||
@@ -159,6 +160,7 @@ RSF
|
||||
matter++
|
||||
|
||||
/obj/item/cookiesynth/afterattack(atom/A, mob/user, proximity)
|
||||
. = ..()
|
||||
if(cooldown > world.time)
|
||||
return
|
||||
if(!proximity)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
deploy_bodybag(user, user.loc)
|
||||
|
||||
/obj/item/bodybag/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(proximity)
|
||||
if(isopenturf(target))
|
||||
deploy_bodybag(user, target)
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
return
|
||||
|
||||
/obj/item/card/emag/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
var/atom/A = target
|
||||
if(!proximity && prox_check)
|
||||
return
|
||||
|
||||
@@ -144,6 +144,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/mask/cigarette/afterattack(obj/item/reagent_containers/glass/glass, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity || lit) //can't dip if cigarette is lit (it will heat the reagents in the glass instead)
|
||||
return
|
||||
if(istype(glass)) //you can dip cigarettes into beakers
|
||||
@@ -681,6 +682,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/rollingpaper/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(istype(target, /obj/item/reagent_containers/food/snacks/grown))
|
||||
@@ -696,8 +698,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
R.desc = "Dried [target.name] rolled up in a thin piece of paper."
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to dry this first!</span>")
|
||||
else
|
||||
..()
|
||||
|
||||
///////////////
|
||||
//VAPE NATION//
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
return (TOXLOSS)
|
||||
|
||||
/obj/item/soap/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity || !check_allowed_items(target))
|
||||
return
|
||||
//I couldn't feasibly fix the overlay bugs caused by cleaning items we are wearing.
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
// Airlock remote works by sending NTNet packets to whatever it's pointed at.
|
||||
/obj/item/door_remote/afterattack(atom/A, mob/user)
|
||||
. = ..()
|
||||
GET_COMPONENT_FROM(target_interface, /datum/component/ntnet_interface, A)
|
||||
|
||||
if(!target_interface)
|
||||
|
||||
@@ -241,6 +241,7 @@
|
||||
return jointext(out,"")
|
||||
|
||||
/obj/item/toy/crayon/afterattack(atom/target, mob/user, proximity, params)
|
||||
. = ..()
|
||||
if(!proximity || !check_allowed_items(target))
|
||||
return
|
||||
|
||||
|
||||
@@ -835,6 +835,7 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
user.show_message("<span class='notice'>No radiation detected.</span>")
|
||||
|
||||
/obj/item/pda/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
switch(scanmode)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
return BRUTELOSS
|
||||
|
||||
/obj/item/aicard/afterattack(atom/target, mob/user, proximity)
|
||||
..()
|
||||
. = ..()
|
||||
if(!proximity || !target)
|
||||
return
|
||||
if(AI) //AI is on the card, implies user wants to upload it.
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
to_chat(user, "<span class='warning'>You can't use [src] while inside something!</span>")
|
||||
|
||||
/obj/item/chameleon/afterattack(atom/target, mob/user , proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(!check_sprite(target))
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
return TRUE //The actual circuit magic itself is done on a per-object basis
|
||||
|
||||
/obj/item/electroadaptive_pseudocircuit/afterattack(atom/target, mob/living/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(!is_type_in_typecache(target, recycleable_circuits))
|
||||
|
||||
@@ -168,6 +168,7 @@
|
||||
var/holo_cooldown = 0
|
||||
|
||||
/obj/item/flashlight/pen/afterattack(atom/target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(!proximity_flag)
|
||||
if(holo_cooldown > world.time)
|
||||
to_chat(user, "<span class='warning'>[src] is not ready yet!</span>")
|
||||
@@ -177,7 +178,6 @@
|
||||
new /obj/effect/temp_visual/medical_holosign(T,user) //produce a holographic glow
|
||||
holo_cooldown = world.time + 100
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/effect/temp_visual/medical_holosign
|
||||
name = "medical holosign"
|
||||
@@ -380,6 +380,7 @@
|
||||
return
|
||||
|
||||
/obj/item/flashlight/emp/afterattack(atom/movable/A, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
var/field_distance_limit = 7
|
||||
|
||||
/obj/item/forcefield/afterattack(atom/target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(!check_allowed_items(target, 1))
|
||||
return
|
||||
if(istype(target, /obj/structure/projected_forcefield))
|
||||
|
||||
@@ -132,6 +132,7 @@
|
||||
to_chat(user, "<span class='notice'>[icon2html(src, user)] You switch [scanning ? "on" : "off"] [src].</span>")
|
||||
|
||||
/obj/item/geiger_counter/afterattack(atom/target, mob/user)
|
||||
. = ..()
|
||||
if(user.a_intent == INTENT_HELP)
|
||||
if(!(obj_flags & EMAGGED))
|
||||
user.visible_message("<span class='notice'>[user] scans [target] with [src].</span>", "<span class='notice'>You scan [target]'s radiation levels with [src]...</span>")
|
||||
@@ -141,7 +142,6 @@
|
||||
target.rad_act(radiation_count)
|
||||
radiation_count = 0
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/item/geiger_counter/proc/scan(atom/A, mob/user)
|
||||
var/rad_strength = 0
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/laser_pointer/afterattack(atom/target, mob/living/user, flag, params)
|
||||
. = ..()
|
||||
laser_act(target, user, params)
|
||||
|
||||
/obj/item/laser_pointer/proc/laser_act(atom/target, mob/living/user, params)
|
||||
|
||||
@@ -239,6 +239,7 @@
|
||||
return 0
|
||||
|
||||
/obj/item/lightreplacer/afterattack(atom/T, mob/U, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(!isturf(T))
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
materials = list(MAT_METAL=5000, MAT_GLASS=2000)
|
||||
|
||||
/obj/item/pipe_painter/afterattack(atom/A, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
//Make sure we only paint adjacent items
|
||||
if(!proximity_flag)
|
||||
return
|
||||
|
||||
@@ -120,6 +120,7 @@
|
||||
return 0
|
||||
|
||||
/obj/item/extinguisher/afterattack(atom/target, mob/user , flag)
|
||||
. = ..()
|
||||
// Make it so the extinguisher doesn't spray yourself when you click your inventory items
|
||||
if (target.loc == user)
|
||||
return
|
||||
@@ -201,9 +202,6 @@
|
||||
break
|
||||
sleep(2)
|
||||
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/extinguisher/AltClick(mob/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
|
||||
return
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
return
|
||||
|
||||
/obj/item/flamethrower/afterattack(atom/target, mob/user, flag)
|
||||
. = ..()
|
||||
if(flag)
|
||||
return // too close
|
||||
if(ishuman(user))
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
to_chat(user, "Timer set for [det_time] seconds.")
|
||||
|
||||
/obj/item/grenade/plastic/afterattack(atom/movable/AM, mob/user, flag)
|
||||
. = ..()
|
||||
aim_dir = get_dir(user,AM)
|
||||
if(!flag)
|
||||
return
|
||||
@@ -171,7 +172,6 @@
|
||||
name = "C4"
|
||||
desc = "Used to put holes in specific areas without too much extra hole. A saboteur's favorite."
|
||||
gender = PLURAL
|
||||
var/timer = 10
|
||||
var/open_panel = 0
|
||||
can_attach_mob = TRUE
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [name] at [ADMIN_VERBOSEJMP(src)]")
|
||||
log_game("[key_name(user)] suicided with [name] at [AREACOORD(user)]")
|
||||
sleep(10)
|
||||
explode(get_turf(user))
|
||||
prime()
|
||||
user.gib(1, 1)
|
||||
|
||||
/obj/item/grenade/plastic/c4/attackby(obj/item/I, mob/user, params)
|
||||
@@ -204,41 +204,7 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/grenade/plastic/c4/attack_self(mob/user)
|
||||
var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num
|
||||
if(user.get_active_held_item() == src)
|
||||
newtime = CLAMP(newtime, 10, 60000)
|
||||
timer = newtime
|
||||
to_chat(user, "Timer set for [timer] seconds.")
|
||||
|
||||
/obj/item/grenade/plastic/c4/afterattack(atom/movable/AM, mob/user, flag)
|
||||
if (!flag)
|
||||
return
|
||||
if(ismob(AM) && !can_attach_mob)
|
||||
return
|
||||
if(loc == AM)
|
||||
return
|
||||
if(SEND_SIGNAL(AM, COMSIG_CONTAINS_STORAGE) && !SEND_SIGNAL(AM, COMSIG_IS_STORAGE_LOCKED))
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>You start planting the bomb...</span>")
|
||||
|
||||
if(do_after(user, 30, target = AM))
|
||||
if(!user.temporarilyRemoveItemFromInventory(src))
|
||||
return
|
||||
src.target = AM
|
||||
moveToNullspace()
|
||||
|
||||
var/message = "[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_VERBOSEJMP(target)] with [timer] second fuse"
|
||||
GLOB.bombers += message
|
||||
message_admins(message,0,1)
|
||||
log_game("[key_name(user)] planted [name] on [target.name] at [AREACOORD(target)] with [timer] second fuse")
|
||||
|
||||
target.add_overlay(plastic_overlay, TRUE)
|
||||
to_chat(user, "<span class='notice'>You plant the bomb. Timer counting down from [timer].</span>")
|
||||
addtimer(CALLBACK(src, .proc/explode), timer * 10)
|
||||
|
||||
/obj/item/grenade/plastic/c4/proc/explode()
|
||||
/obj/item/grenade/plastic/c4/prime()
|
||||
if(QDELETED(src))
|
||||
return
|
||||
var/turf/location
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
var/holocreator_busy = FALSE //to prevent placing multiple holo barriers at once
|
||||
|
||||
/obj/item/holosign_creator/afterattack(atom/target, mob/user, flag)
|
||||
. = ..()
|
||||
if(flag)
|
||||
if(!check_allowed_items(target, 1))
|
||||
return
|
||||
|
||||
@@ -503,6 +503,7 @@
|
||||
hitsound = 'sound/weapons/blade1.ogg'
|
||||
|
||||
/obj/item/nullrod/pride_hammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(prob(30) && ishuman(A))
|
||||
|
||||
@@ -91,8 +91,9 @@
|
||||
to_chat(user, "<span class='userdanger'>You have a really bad feeling about [src]!</span>")
|
||||
|
||||
/obj/item/hot_potato/afterattack(atom/target, mob/user, adjacent, params)
|
||||
. = ..()
|
||||
if(!adjacent || !ismob(target))
|
||||
return ..()
|
||||
return
|
||||
force_onto(target, user)
|
||||
|
||||
/obj/item/hot_potato/proc/force_onto(mob/living/victim, mob/user)
|
||||
|
||||
@@ -281,11 +281,11 @@
|
||||
consume_turf(T)
|
||||
|
||||
/obj/item/melee/supermatter_sword/afterattack(target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(user && target == user)
|
||||
user.dropItemToGround(src)
|
||||
if(proximity_flag)
|
||||
consume_everything(target)
|
||||
..()
|
||||
|
||||
/obj/item/melee/supermatter_sword/throw_impact(target)
|
||||
..()
|
||||
@@ -355,11 +355,11 @@
|
||||
hitsound = 'sound/weapons/chainhit.ogg'
|
||||
|
||||
/obj/item/melee/curator_whip/afterattack(target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(ishuman(target) && proximity_flag)
|
||||
var/mob/living/carbon/human/H = target
|
||||
H.drop_all_held_items()
|
||||
H.visible_message("<span class='danger'>[user] disarms [H]!</span>", "<span class='userdanger'>[user] disarmed you!</span>")
|
||||
..()
|
||||
|
||||
/obj/item/melee/roastingstick
|
||||
name = "advanced roasting stick"
|
||||
@@ -441,6 +441,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/melee/roastingstick/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if (!on)
|
||||
return
|
||||
if (is_type_in_typecache(target, ovens))
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
|
||||
|
||||
/obj/item/mop/afterattack(atom/A, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
|
||||
|
||||
/obj/item/paint/afterattack(turf/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(paintleft <= 0)
|
||||
@@ -96,6 +97,7 @@
|
||||
icon_state = "paint_neutral"
|
||||
|
||||
/obj/item/paint/paint_remover/afterattack(turf/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(istype(target) && target.color != initial(target.color))
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
return TRUE
|
||||
|
||||
/obj/item/pneumatic_cannon/afterattack(atom/target, mob/living/user, flag, params)
|
||||
. = ..()
|
||||
if(flag && user.a_intent == INTENT_HARM) //melee attack
|
||||
return
|
||||
if(!istype(user))
|
||||
|
||||
@@ -288,6 +288,7 @@
|
||||
|
||||
|
||||
/obj/item/godstaff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
if(staffcooldown + staffwait > world.time)
|
||||
return
|
||||
user.visible_message("[user] chants deeply and waves [user.p_their()] staff!")
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
|
||||
/obj/item/malf_upgrade/afterattack(mob/living/silicon/ai/AI, mob/user)
|
||||
. = ..()
|
||||
if(!istype(AI))
|
||||
return
|
||||
if(AI.malf_picker)
|
||||
@@ -30,6 +31,7 @@
|
||||
icon_state = "datadisk3"
|
||||
|
||||
/obj/item/surveillance_upgrade/afterattack(mob/living/silicon/ai/AI, mob/user)
|
||||
. = ..()
|
||||
if(!istype(AI))
|
||||
return
|
||||
if(AI.eyeobj)
|
||||
|
||||
@@ -172,6 +172,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/borg/charger/afterattack(obj/item/target, mob/living/silicon/robot/user, proximity_flag)
|
||||
. = ..()
|
||||
if(!proximity_flag || !iscyborg(user))
|
||||
return
|
||||
if(mode == "draw")
|
||||
@@ -448,6 +449,7 @@
|
||||
check_amount()
|
||||
|
||||
/obj/item/borg/lollipop/afterattack(atom/target, mob/living/user, proximity, click_params)
|
||||
. = ..()
|
||||
check_amount()
|
||||
if(iscyborg(user))
|
||||
var/mob/living/silicon/robot/R = user
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
return
|
||||
|
||||
/obj/item/twohanded/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(wielded)
|
||||
|
||||
@@ -268,6 +268,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
pixel_y = rand(-5, 5)
|
||||
|
||||
/obj/item/shard/afterattack(atom/A as mob|obj, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity || !(src in user))
|
||||
return
|
||||
if(isturf(A))
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/telecrystal/afterattack(obj/item/I, mob/user, proximity)
|
||||
. = ..()
|
||||
if(istype(I, /obj/item/cartridge/virus/frame))
|
||||
var/obj/item/cartridge/virus/frame/cart = I
|
||||
if(!cart.charges)
|
||||
@@ -29,8 +30,6 @@
|
||||
cart.telecrystals += amount
|
||||
use(amount)
|
||||
to_chat(user, "<span class='notice'>You slot [src] into [cart]. The next time it's used, it will also give telecrystals.</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/telecrystal/five
|
||||
amount = 5
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
return 0
|
||||
|
||||
/obj/item/stack/packageWrap/afterattack(obj/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(!istype(target))
|
||||
|
||||
@@ -153,6 +153,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible",
|
||||
playsound(src.loc, "punch", 25, 1, -1)
|
||||
|
||||
/obj/item/storage/book/bible/afterattack(atom/A, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(isfloorturf(A))
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
return list()
|
||||
|
||||
/obj/item/taster/afterattack(atom/O, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
|
||||
@@ -229,6 +229,7 @@
|
||||
icon_state = "supermatter_tongs"
|
||||
|
||||
/obj/item/hemostat/supermatter/afterattack(atom/O, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!sliver)
|
||||
return
|
||||
if(ismovableatom(O) && O != sliver)
|
||||
|
||||
@@ -120,6 +120,7 @@
|
||||
|
||||
|
||||
/obj/item/weldingtool/afterattack(atom/O, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(!status && O.is_refillable())
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
return
|
||||
|
||||
/obj/item/toy/balloon/afterattack(atom/A as mob|obj, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if (istype(A, /obj/structure/reagent_dispensers))
|
||||
@@ -176,6 +177,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/gun/afterattack(atom/target as mob|obj|turf|area, mob/user, flag)
|
||||
. = ..()
|
||||
if (flag)
|
||||
return
|
||||
if (!user.IsAdvancedToolUser())
|
||||
@@ -1033,6 +1035,7 @@
|
||||
throwforce = 12 //pelt your enemies to death with lumps of snow
|
||||
|
||||
/obj/item/toy/snowball/afterattack(atom/target as mob|obj|turf|area, mob/user)
|
||||
. = ..()
|
||||
if(user.dropItemToGround(src))
|
||||
throw_at(target, throw_range, throw_speed)
|
||||
|
||||
@@ -1052,6 +1055,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY //Stops people from hiding it in their bags/pockets
|
||||
|
||||
/obj/item/toy/beach_ball/afterattack(atom/target as mob|obj|turf|area, mob/user)
|
||||
. = ..()
|
||||
if(user.dropItemToGround(src))
|
||||
throw_at(target, throw_range, throw_speed)
|
||||
|
||||
|
||||
@@ -247,6 +247,7 @@
|
||||
return (BRUTELOSS)
|
||||
|
||||
/obj/item/twohanded/fireaxe/afterattack(atom/A, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(wielded) //destroys windows and grilles in one hit
|
||||
@@ -505,6 +506,7 @@
|
||||
icon_state = "spearglass[wielded]"
|
||||
|
||||
/obj/item/twohanded/spear/afterattack(atom/movable/AM, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(isopenturf(AM)) //So you can actually melee with it
|
||||
@@ -635,7 +637,7 @@
|
||||
attack_verb = list("gored")
|
||||
|
||||
/obj/item/twohanded/spear/grey_tide/afterattack(atom/movable/AM, mob/living/user, proximity)
|
||||
..()
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
user.faction |= "greytide([REF(user)])"
|
||||
@@ -716,6 +718,7 @@
|
||||
..()
|
||||
|
||||
/obj/item/twohanded/pitchfork/demonic/ascended/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity || !wielded)
|
||||
return
|
||||
if(iswallturf(target))
|
||||
@@ -725,7 +728,6 @@
|
||||
W.break_wall()
|
||||
W.ScrapeAway()
|
||||
return
|
||||
..()
|
||||
|
||||
//HF blade
|
||||
|
||||
|
||||
@@ -579,6 +579,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
|
||||
|
||||
/obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(proximity_flag)
|
||||
if(is_type_in_typecache(target, strong_against))
|
||||
new /obj/effect/decal/cleanable/insectguts(target.drop_location())
|
||||
|
||||
@@ -127,6 +127,7 @@
|
||||
deploy_roller(user, user.loc)
|
||||
|
||||
/obj/item/roller/afterattack(obj/target, mob/user , proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(isopenturf(target))
|
||||
|
||||
@@ -307,7 +307,7 @@
|
||||
return 0
|
||||
|
||||
/obj/item/chair/afterattack(atom/target, mob/living/carbon/user, proximity)
|
||||
..()
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(prob(break_chance))
|
||||
|
||||
@@ -208,7 +208,7 @@
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user, flag, params)
|
||||
..()
|
||||
. = ..()
|
||||
var/obj/machinery/manned_turret/E = user.buckled
|
||||
E.calculated_projectile_vars = calculate_projectile_angle_and_pixel_offsets(user, params)
|
||||
E.direction_track(user, targeted_atom)
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
var/sign_path = /obj/structure/sign/basic //the type of sign that will be created when placed on a turf
|
||||
|
||||
/obj/item/sign_backing/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(isturf(target) && proximity)
|
||||
var/turf/T = target
|
||||
user.visible_message("<span class='notice'>[user] fastens [src] to [T].</span>", \
|
||||
@@ -111,8 +112,6 @@
|
||||
var/obj/structure/sign/S = new sign_path(T)
|
||||
S.setDir(dir)
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/sign_backing/Move(atom/new_loc, direct = 0)
|
||||
// pulling, throwing, or conveying a sign backing does not rotate it
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
|
||||
|
||||
/obj/item/abductor/gizmo/afterattack(atom/target, mob/living/user, flag, params)
|
||||
. = ..()
|
||||
if(flag)
|
||||
return
|
||||
if(!ScientistCheck(user))
|
||||
@@ -251,6 +252,7 @@
|
||||
radio_off(M, user)
|
||||
|
||||
/obj/item/abductor/silencer/afterattack(atom/target, mob/living/user, flag, params)
|
||||
. = ..()
|
||||
if(flag)
|
||||
return
|
||||
if(!AbductorCheck(user))
|
||||
@@ -303,6 +305,7 @@
|
||||
to_chat(user, "<span class='notice'>You switch the device to [mode==MIND_DEVICE_MESSAGE? "TRANSMISSION": "COMMAND"] MODE</span>")
|
||||
|
||||
/obj/item/abductor/mind_device/afterattack(atom/target, mob/living/user, flag, params)
|
||||
. = ..()
|
||||
if(!ScientistCheck(user))
|
||||
return
|
||||
|
||||
|
||||
@@ -159,6 +159,7 @@
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
sharpness = IS_SHARP
|
||||
var/can_drop = FALSE
|
||||
var/fake = FALSE
|
||||
|
||||
/obj/item/melee/arm_blade/Initialize(mapload,silent,synthetic)
|
||||
. = ..()
|
||||
@@ -169,6 +170,7 @@
|
||||
AddComponent(/datum/component/butchering, 60, 80)
|
||||
|
||||
/obj/item/melee/arm_blade/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(istype(target, /obj/structure/table))
|
||||
|
||||
@@ -119,9 +119,7 @@
|
||||
/obj/item/melee/arm_blade/false
|
||||
desc = "A grotesque mass of flesh that used to be your arm. Although it looks dangerous at first, you can tell it's actually quite dull and useless."
|
||||
force = 5 //Basically as strong as a punch
|
||||
|
||||
/obj/item/melee/arm_blade/false/afterattack(atom/target, mob/user, proximity)
|
||||
return
|
||||
fake = TRUE
|
||||
|
||||
/obj/effect/proc_holder/changeling/sting/false_armblade/can_sting(mob/user, mob/target)
|
||||
if(!..())
|
||||
|
||||
@@ -383,6 +383,7 @@
|
||||
M.lastattackerckey = user.ckey
|
||||
|
||||
/obj/item/melee/blood_magic/afterattack(atom/target, mob/living/carbon/user, proximity)
|
||||
. = ..()
|
||||
if(invocation)
|
||||
user.whisper(invocation, language = /datum/language/common)
|
||||
if(health_cost)
|
||||
|
||||
@@ -804,6 +804,7 @@
|
||||
|
||||
|
||||
/obj/item/blood_beam/afterattack(atom/A, mob/living/user, flag, params)
|
||||
. = ..()
|
||||
if(firing || charging)
|
||||
return
|
||||
var/C = user.client
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
to_chat(user, "<span class='notice'>[src] is not currently linked to a cargo console.</span>")
|
||||
|
||||
/obj/item/export_scanner/afterattack(obj/O, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!istype(O) || !proximity)
|
||||
return
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
icon_state = "electricity2"
|
||||
|
||||
/obj/item/wizard_armour_charge/afterattack(obj/item/clothing/suit/space/hardsuit/shielded/wizard/W, mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(!istype(W))
|
||||
to_chat(user, "<span class='warning'>The rune can only be used on battlemage armour!</span>")
|
||||
return
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/evidencebag/afterattack(obj/item/I, mob/user,proximity)
|
||||
. = ..()
|
||||
if(!proximity || loc == I)
|
||||
return
|
||||
evidencebagEquip(I, user)
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
return (OXYLOSS)
|
||||
|
||||
/obj/item/reagent_containers/glass/rag/afterattack(atom/A as obj|turf|area, mob/user,proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(iscarbon(A) && A.reagents && reagents.total_volume)
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
scanning = 0
|
||||
|
||||
/obj/item/detective_scanner/afterattack(atom/A, mob/user, params)
|
||||
. = ..()
|
||||
scan(A, user)
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
var/one_use = TRUE
|
||||
|
||||
/obj/item/upgradescroll/afterattack(obj/item/target, mob/user , proximity)
|
||||
. = ..()
|
||||
if(!proximity || !istype(target))
|
||||
return
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
return 1
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/afterattack(obj/target, mob/user , proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
@@ -93,8 +94,6 @@
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
|
||||
to_chat(user, "<span class='notice'>You fill [src] with [trans] units of the contents of [target].</span>")
|
||||
|
||||
else
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/attackby(obj/item/I, mob/user, params)
|
||||
var/hotness = I.is_hot()
|
||||
if(hotness && reagents)
|
||||
|
||||
@@ -115,6 +115,7 @@
|
||||
..()
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/afterattack(obj/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if((!proximity) || !check_allowed_items(target,target_self=1))
|
||||
return
|
||||
|
||||
@@ -124,5 +125,4 @@
|
||||
reagents.reaction(target, TOUCH)
|
||||
reagents.clear_reagents()
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
return 1
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/afterattack(obj/target, mob/user , proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
|
||||
@@ -146,6 +147,7 @@
|
||||
return (TOXLOSS)
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/saltshaker/afterattack(obj/target, mob/living/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(isturf(target))
|
||||
@@ -156,7 +158,6 @@
|
||||
reagents.remove_reagent("sodiumchloride", 2)
|
||||
new/obj/effect/decal/cleanable/salt(target)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/peppermill
|
||||
name = "pepper mill"
|
||||
@@ -241,6 +242,7 @@
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/pack/afterattack(obj/target, mob/user , proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
|
||||
@@ -120,11 +120,6 @@
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/afterattack(obj/target, mob/user , proximity)
|
||||
return
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/examine(mob/user)
|
||||
..()
|
||||
if(bitecount == 0)
|
||||
|
||||
@@ -199,6 +199,7 @@
|
||||
log_game("[key_name(user)] set [key_name(M)] on fire with [src] at [AREACOORD(user)]")
|
||||
|
||||
/obj/item/grown/novaflower/afterattack(atom/A as mob|obj, mob/user,proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(force > 0)
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
return TRUE
|
||||
|
||||
/obj/item/grown/nettle/afterattack(atom/A as mob|obj, mob/user,proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(force > 0)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
|
||||
/obj/item/integrated_electronics/analyzer/afterattack(var/atom/A, var/mob/living/user)
|
||||
. = ..()
|
||||
if(istype(A, /obj/item/electronic_assembly))
|
||||
var/saved = "[A.name] analyzed! On circuit printers with cloning enabled, you may use the code below to clone the circuit:<br><br><code>[SScircuit.save_electronic_assembly(A)]</code>"
|
||||
if(saved)
|
||||
@@ -14,5 +15,3 @@
|
||||
user << browse(saved, "window=circuit_scan;size=500x600;border=1;can_resize=1;can_close=1;can_minimize=1")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[A] is not complete enough to be encoded!</span>")
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -420,6 +420,7 @@
|
||||
|
||||
|
||||
/obj/item/electronic_assembly/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
for(var/obj/item/integrated_circuit/input/S in assembly_components)
|
||||
if(S.sense(target,user,proximity))
|
||||
visible_message("<span class='notice'> [user] waves [src] around [target].</span>")
|
||||
|
||||
@@ -38,14 +38,13 @@
|
||||
to_chat(user, "<span class='notice'>You set \the [src]'s memory to absolutely nothing.</span>")
|
||||
|
||||
/obj/item/integrated_electronics/debugger/afterattack(atom/target, mob/living/user, proximity)
|
||||
. = ..()
|
||||
if(accepting_refs && proximity)
|
||||
data_to_write = WEAKREF(target)
|
||||
visible_message("<span class='notice'>[user] slides \a [src]'s over \the [target].</span>")
|
||||
to_chat(user, "<span class='notice'>You set \the [src]'s memory to a reference to [target.name] \[Ref\]. The ref scanner is \
|
||||
now off.</span>")
|
||||
accepting_refs = FALSE
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/integrated_electronics/debugger/proc/write_data(var/datum/integrated_io/io, mob/user)
|
||||
if(io.io_type == DATA_CHANNEL)
|
||||
|
||||
@@ -129,6 +129,7 @@
|
||||
to_chat(user, "<span class='notice'>You set \the [src]'s memory to absolutely nothing.</span>")
|
||||
|
||||
/obj/item/integrated_circuit/memory/constant/afterattack(atom/target, mob/living/user, proximity)
|
||||
. = ..()
|
||||
if(accepting_refs && proximity)
|
||||
var/datum/integrated_io/O = outputs[1]
|
||||
O.data = WEAKREF(target)
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
to_chat(user, "It has [remaining_uses] uses left.")
|
||||
|
||||
/obj/item/soapstone/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
var/turf/T = get_turf(target)
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
C.total_damage += target_health - target.health //we did some damage, but let's not assume how much we did
|
||||
|
||||
/obj/item/twohanded/required/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams)
|
||||
. = ..()
|
||||
if(!proximity_flag && charged)//Mark a target, or mine a tile.
|
||||
var/turf/proj_turf = user.loc
|
||||
if(!isturf(proj_turf))
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it
|
||||
|
||||
/obj/item/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(!loaded)
|
||||
return
|
||||
if(isliving(target) && proximity_flag)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user)
|
||||
. = ..()
|
||||
var/obj/item/organ/regenerative_core/C = M
|
||||
if(!istype(C, /obj/item/organ/regenerative_core))
|
||||
to_chat(user, "<span class='warning'>The stabilizer only works on certain types of monster organs, generally regenerative in nature.</span>")
|
||||
@@ -66,6 +67,7 @@
|
||||
ui_action_click()
|
||||
|
||||
/obj/item/organ/regenerative_core/afterattack(atom/target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(proximity_flag && ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(inert)
|
||||
@@ -83,7 +85,6 @@
|
||||
SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self"))
|
||||
H.revive(full_heal = 1)
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
/obj/item/organ/regenerative_core/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
|
||||
. = ..()
|
||||
|
||||
@@ -38,6 +38,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
|
||||
to_chat(user, "You link the extraction pack to the beacon system.")
|
||||
|
||||
/obj/item/extraction_pack/afterattack(atom/movable/A, mob/living/carbon/human/user, flag, params)
|
||||
. = ..()
|
||||
if(!beacon)
|
||||
to_chat(user, "[src] is not linked to a beacon, and cannot be used.")
|
||||
return
|
||||
|
||||
@@ -899,7 +899,7 @@
|
||||
var/static/list/banned_turfs = typecacheof(list(/turf/open/space/transit, /turf/closed))
|
||||
|
||||
/obj/item/lava_staff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
..()
|
||||
. = ..()
|
||||
if(timer > world.time)
|
||||
return
|
||||
|
||||
@@ -1097,7 +1097,7 @@
|
||||
qdel(user)
|
||||
|
||||
/obj/item/hierophant_club/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
..()
|
||||
. = ..()
|
||||
var/turf/T = get_turf(target)
|
||||
if(!T || timer > world.time)
|
||||
return
|
||||
|
||||
@@ -259,6 +259,7 @@
|
||||
icon_state = "data"
|
||||
|
||||
/obj/item/card/mining_access_card/afterattack(atom/movable/AM, mob/user, proximity)
|
||||
. = ..()
|
||||
if(istype(AM, /obj/item/card/id) && proximity)
|
||||
var/obj/item/card/id/I = AM
|
||||
I.access |= ACCESS_MINING
|
||||
@@ -267,7 +268,6 @@
|
||||
I.access |= ACCESS_CARGO
|
||||
to_chat(user, "You upgrade [I] with mining access.")
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/mining_conscript
|
||||
name = "mining conscription kit"
|
||||
|
||||
@@ -270,6 +270,7 @@
|
||||
icon = 'icons/obj/module.dmi'
|
||||
|
||||
/obj/item/mine_bot_upgrade/afterattack(mob/living/simple_animal/hostile/mining_drone/M, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!istype(M) || !proximity)
|
||||
return
|
||||
upgrade_bot(M, user)
|
||||
|
||||
@@ -180,6 +180,7 @@
|
||||
AddComponent(/datum/component/butchering, 80, 70)
|
||||
|
||||
/obj/item/light_eater/afterattack(atom/movable/AM, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(isopenturf(AM)) //So you can actually melee with it
|
||||
|
||||
@@ -81,6 +81,7 @@
|
||||
icon_state = "bear_armor_upgrade"
|
||||
|
||||
/obj/item/bear_armor/afterattack(atom/target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(istype(target, /mob/living/simple_animal/hostile/bear) && proximity_flag)
|
||||
var/mob/living/simple_animal/hostile/bear/A = target
|
||||
if(A.armored)
|
||||
|
||||
@@ -127,6 +127,7 @@
|
||||
var/list/banned_mobs
|
||||
|
||||
/obj/item/fugu_gland/afterattack(atom/target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(proximity_flag && isanimal(target))
|
||||
var/mob/living/simple_animal/A = target
|
||||
if(A.buffed || (A.type in banned_mobs) || A.stat)
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
to_chat(user, "<span class='notice'>You [dash_toggled ? "enable" : "disable"] the dash function on [src].</span>")
|
||||
|
||||
/obj/item/energy_katana/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
if(dash_toggled)
|
||||
jaunt.Teleport(user, target)
|
||||
if(proximity_flag && (isobj(target) || issilicon(target)))
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
return OXYLOSS
|
||||
|
||||
/obj/item/hand_labeler/afterattack(atom/A, mob/user,proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(!mode) //if it's off, give up.
|
||||
@@ -89,7 +90,7 @@
|
||||
name = "cyborg-hand labeler"
|
||||
|
||||
/obj/item/hand_labeler/borg/afterattack(atom/A, mob/user, proximity)
|
||||
..(A, user, proximity)
|
||||
. = ..(A, user, proximity)
|
||||
if(!iscyborg(user))
|
||||
return
|
||||
|
||||
|
||||
@@ -123,6 +123,7 @@
|
||||
. = ..()
|
||||
|
||||
/obj/item/pen/afterattack(obj/O, mob/living/user, proximity)
|
||||
. = ..()
|
||||
//Changing Name/Description of items. Only works if they have the 'unique_rename' flag set
|
||||
if(isobj(O) && proximity && (O.obj_flags & UNIQUE_RENAME))
|
||||
var/penchoice = input(user, "What would you like to edit?", "Rename or change description?") as null|anything in list("Rename","Change description")
|
||||
|
||||
@@ -459,6 +459,7 @@
|
||||
viewpichelper(Ainfo)
|
||||
|
||||
/obj/item/camera/afterattack(atom/target, mob/user, flag)
|
||||
. = ..()
|
||||
if(!on || !pictures_left || !isturf(target.loc))
|
||||
return
|
||||
if (disk)
|
||||
|
||||
@@ -405,7 +405,7 @@
|
||||
var/delay = 0
|
||||
|
||||
/obj/item/turret_control/afterattack(atom/targeted_atom, mob/user, proxflag, clickparams)
|
||||
..()
|
||||
. = ..()
|
||||
var/obj/machinery/power/emitter/E = user.buckled
|
||||
E.setDir(get_dir(E,targeted_atom))
|
||||
user.setDir(E.dir)
|
||||
|
||||
@@ -130,6 +130,7 @@
|
||||
O.emp_act(severity)
|
||||
|
||||
/obj/item/gun/afterattack(atom/target, mob/living/user, flag, params)
|
||||
. = ..()
|
||||
if(firing_burst)
|
||||
return
|
||||
if(flag) //It's adjacent, is the user, or is on the user's person
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/gun/ballistic/automatic/c20r/afterattack()
|
||||
..()
|
||||
. = ..()
|
||||
empty_alarm()
|
||||
return
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
if(select == 2)
|
||||
underbarrel.afterattack(target, user, flag, params)
|
||||
else
|
||||
..()
|
||||
. = ..()
|
||||
return
|
||||
/obj/item/gun/ballistic/automatic/m90/attackby(obj/item/A, mob/user, params)
|
||||
if(istype(A, /obj/item/ammo_casing))
|
||||
@@ -264,7 +264,7 @@
|
||||
icon_state = "bulldog[chambered ? "" : "-e"]"
|
||||
|
||||
/obj/item/gun/ballistic/automatic/shotgun/bulldog/afterattack()
|
||||
..()
|
||||
. = ..()
|
||||
empty_alarm()
|
||||
return
|
||||
|
||||
@@ -317,7 +317,7 @@
|
||||
if(cover_open)
|
||||
to_chat(user, "<span class='warning'>[src]'s cover is open! Close it before firing!</span>")
|
||||
else
|
||||
..()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
//ATTACK HAND IGNORING PARENT RETURN VALUE
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
/obj/item/gun/ballistic/minigun/afterattack(atom/target, mob/living/user, flag, params)
|
||||
if(!ammo_pack || ammo_pack.loc != user)
|
||||
to_chat(user, "You need the backpack power source to fire the gun!")
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/item/gun/ballistic/minigun/dropped(mob/living/user)
|
||||
ammo_pack.attach_gun(user)
|
||||
|
||||
@@ -191,6 +191,7 @@
|
||||
..()
|
||||
|
||||
/obj/item/gun/ballistic/revolver/russian/afterattack(atom/target, mob/living/user, flag, params)
|
||||
. = ..()
|
||||
if(flag)
|
||||
if(!(target in user.contents) && ismob(target))
|
||||
if(user.a_intent == INTENT_HARM) // Flogging action
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
return
|
||||
else
|
||||
no_den_usage = 0
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/item/gun/magic/can_shoot()
|
||||
return charges
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
no_den_usage = 0
|
||||
zap_self(user)
|
||||
else
|
||||
..()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
|
||||
|
||||
@@ -28,16 +28,10 @@
|
||||
else
|
||||
to_chat(usr, "<span class='danger'>The grenade launcher cannot hold more grenades.</span>")
|
||||
|
||||
/obj/item/gun/grenadelauncher/afterattack(obj/target, mob/user , flag)
|
||||
if(target == user)
|
||||
return
|
||||
/obj/item/gun/grenadelauncher/can_shoot()
|
||||
return grenades.len
|
||||
|
||||
if(grenades.len)
|
||||
fire_grenade(target,user)
|
||||
else
|
||||
to_chat(user, "<span class='danger'>The grenade launcher is empty.</span>")
|
||||
|
||||
/obj/item/gun/grenadelauncher/proc/fire_grenade(atom/target, mob/user)
|
||||
/obj/item/gun/grenadelauncher/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0)
|
||||
user.visible_message("<span class='danger'>[user] fired a grenade!</span>", \
|
||||
"<span class='danger'>You fire the grenade launcher!</span>")
|
||||
var/obj/item/grenade/F = grenades[1] //Now with less copypasta!
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
gun = newloc
|
||||
|
||||
/obj/item/firing_pin/afterattack(atom/target, mob/user, proximity_flag)
|
||||
. = ..()
|
||||
if(proximity_flag)
|
||||
if(istype(target, /obj/item/gun))
|
||||
var/obj/item/gun/G = target
|
||||
@@ -156,7 +157,7 @@
|
||||
var/unique_enzymes = null
|
||||
|
||||
/obj/item/firing_pin/dna/afterattack(atom/target, mob/user, proximity_flag)
|
||||
..()
|
||||
. = ..()
|
||||
if(proximity_flag && iscarbon(target))
|
||||
var/mob/living/carbon/M = target
|
||||
if(M.dna && M.dna.unique_enzymes)
|
||||
|
||||
@@ -45,9 +45,6 @@
|
||||
if(user.a_intent == INTENT_HARM)
|
||||
return ..()
|
||||
|
||||
/obj/item/reagent_containers/afterattack(obj/target, mob/user , flag)
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/proc/canconsume(mob/eater, mob/user)
|
||||
if(!iscarbon(eater))
|
||||
return 0
|
||||
|
||||
@@ -197,6 +197,7 @@ Borg Shaker
|
||||
RG.add_reagent(reagent_ids[valueofi], 5)
|
||||
|
||||
/obj/item/reagent_containers/borghypo/borgshaker/afterattack(obj/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
container_type = TRANSPARENT
|
||||
|
||||
/obj/item/reagent_containers/dropper/afterattack(obj/target, mob/user , proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
return
|
||||
if(!target.reagents)
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
|
||||
|
||||
/obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if((!proximity) || !check_allowed_items(target,target_self=1))
|
||||
return
|
||||
|
||||
|
||||
@@ -9,9 +9,7 @@
|
||||
apply_type = PATCH
|
||||
apply_method = "apply"
|
||||
self_delay = 30 // three seconds
|
||||
|
||||
/obj/item/reagent_containers/pill/patch/afterattack(obj/target, mob/user , proximity)
|
||||
return // thanks inheritance again
|
||||
dissolvable = FALSE
|
||||
|
||||
/obj/item/reagent_containers/pill/patch/attack(mob/living/L, mob/user)
|
||||
if(ishuman(L))
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user