mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 01:49:19 +00:00
@@ -86,6 +86,10 @@
|
|||||||
|
|
||||||
/obj/structure/grille/attack_animal(mob/user)
|
/obj/structure/grille/attack_animal(mob/user)
|
||||||
. = ..()
|
. = ..()
|
||||||
|
if(!user.CheckActionCooldown(CLICK_CD_MELEE))
|
||||||
|
return
|
||||||
|
user.DelayNextAction(flush = TRUE)
|
||||||
|
user.do_attack_animation(src)
|
||||||
if(!shock(user, 70) && !QDELETED(src)) //Last hit still shocks but shouldn't deal damage to the grille)
|
if(!shock(user, 70) && !QDELETED(src)) //Last hit still shocks but shouldn't deal damage to the grille)
|
||||||
take_damage(rand(5,10), BRUTE, "melee", 1)
|
take_damage(rand(5,10), BRUTE, "melee", 1)
|
||||||
|
|
||||||
@@ -114,12 +118,12 @@
|
|||||||
/obj/structure/grille/attack_alien(mob/living/user)
|
/obj/structure/grille/attack_alien(mob/living/user)
|
||||||
if(!user.CheckActionCooldown(CLICK_CD_MELEE))
|
if(!user.CheckActionCooldown(CLICK_CD_MELEE))
|
||||||
return
|
return
|
||||||
|
user.DelayNextAction(flush = TRUE)
|
||||||
user.do_attack_animation(src)
|
user.do_attack_animation(src)
|
||||||
user.visible_message("<span class='warning'>[user] mangles [src].</span>", null, null, COMBAT_MESSAGE_RANGE)
|
user.visible_message("<span class='warning'>[user] mangles [src].</span>", null, null, COMBAT_MESSAGE_RANGE)
|
||||||
if(!shock(user, 70))
|
if(!shock(user, 70))
|
||||||
take_damage(20, BRUTE, "melee", 1)
|
take_damage(20, BRUTE, "melee", 1)
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/grille/CanPass(atom/movable/mover, turf/target)
|
/obj/structure/grille/CanPass(atom/movable/mover, turf/target)
|
||||||
if(istype(mover) && (mover.pass_flags & PASSGRILLE))
|
if(istype(mover) && (mover.pass_flags & PASSGRILLE))
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|||||||
@@ -97,9 +97,12 @@ All foods are distributed among various categories. Use common sense.
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/attack(mob/living/M, mob/living/user, def_zone)
|
/obj/item/reagent_containers/food/snacks/attack(mob/living/M, mob/living/user, attackchain_flags = NONE, damage_multiplier = 1)
|
||||||
if(user.a_intent == INTENT_HARM)
|
if(user.a_intent == INTENT_HARM)
|
||||||
return ..()
|
return ..()
|
||||||
|
INVOKE_ASYNC(src, .proc/attempt_forcefeed, M, user)
|
||||||
|
|
||||||
|
/obj/item/reagent_containers/food/snacks/proc/attempt_forcefeed(mob/living/M, mob/living/user)
|
||||||
if(!eatverb)
|
if(!eatverb)
|
||||||
eatverb = pick("bite","chew","nibble","gnaw","gobble","chomp")
|
eatverb = pick("bite","chew","nibble","gnaw","gobble","chomp")
|
||||||
if(!reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it.
|
if(!reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it.
|
||||||
|
|||||||
@@ -103,6 +103,7 @@
|
|||||||
throwforce = 5
|
throwforce = 5
|
||||||
throw_speed = 2
|
throw_speed = 2
|
||||||
throw_range = 3
|
throw_range = 3
|
||||||
|
attack_speed = CLICK_CD_MELEE
|
||||||
w_class = WEIGHT_CLASS_BULKY
|
w_class = WEIGHT_CLASS_BULKY
|
||||||
flags_1 = CONDUCT_1
|
flags_1 = CONDUCT_1
|
||||||
armour_penetration = 20
|
armour_penetration = 20
|
||||||
@@ -125,9 +126,12 @@
|
|||||||
playsound(src,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
|
playsound(src,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1)
|
||||||
return (BRUTELOSS)
|
return (BRUTELOSS)
|
||||||
|
|
||||||
/obj/item/scythe/pre_attack(atom/A, mob/living/user, params)
|
/obj/item/scythe/pre_attack(atom/A, mob/living/user, params, attackchain_flags, damage_multiplier)
|
||||||
|
. = ..()
|
||||||
|
if(. & STOP_ATTACK_PROC_CHAIN)
|
||||||
|
return
|
||||||
if(swiping || !istype(A, /obj/structure/spacevine) || get_turf(A) == get_turf(user))
|
if(swiping || !istype(A, /obj/structure/spacevine) || get_turf(A) == get_turf(user))
|
||||||
return ..()
|
return
|
||||||
else
|
else
|
||||||
var/turf/user_turf = get_turf(user)
|
var/turf/user_turf = get_turf(user)
|
||||||
var/dir_to_target = get_dir(user_turf, get_turf(A))
|
var/dir_to_target = get_dir(user_turf, get_turf(A))
|
||||||
@@ -138,11 +142,12 @@
|
|||||||
var/turf/T = get_step(user_turf, turn(dir_to_target, i))
|
var/turf/T = get_step(user_turf, turn(dir_to_target, i))
|
||||||
for(var/obj/structure/spacevine/V in T)
|
for(var/obj/structure/spacevine/V in T)
|
||||||
if(user.Adjacent(V))
|
if(user.Adjacent(V))
|
||||||
melee_attack_chain(user, V)
|
melee_attack_chain(user, V, attackchain_flags = ATTACK_IGNORE_CLICKDELAY)
|
||||||
stam_gain += 5 //should be hitcost
|
stam_gain += 5 //should be hitcost
|
||||||
swiping = FALSE
|
swiping = FALSE
|
||||||
stam_gain += 2 //Initial hitcost
|
stam_gain += 2 //Initial hitcost
|
||||||
user.adjustStaminaLoss(-stam_gain)
|
user.adjustStaminaLoss(-stam_gain)
|
||||||
|
user.DelayNextAction()
|
||||||
|
|
||||||
// *************************************
|
// *************************************
|
||||||
// Nutrient defines for hydroponics
|
// Nutrient defines for hydroponics
|
||||||
|
|||||||
@@ -87,7 +87,7 @@
|
|||||||
if(user != src && (user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM))
|
if(user != src && (user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM))
|
||||||
for(var/datum/surgery/S in surgeries)
|
for(var/datum/surgery/S in surgeries)
|
||||||
if(S.next_step(user,user.a_intent))
|
if(S.next_step(user,user.a_intent))
|
||||||
return 1
|
return STOP_ATTACK_PROC_CHAIN
|
||||||
|
|
||||||
if(!all_wounds || !(user.a_intent == INTENT_HELP || user == src))
|
if(!all_wounds || !(user.a_intent == INTENT_HELP || user == src))
|
||||||
return ..()
|
return ..()
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
for(var/i in shuffle(all_wounds))
|
for(var/i in shuffle(all_wounds))
|
||||||
var/datum/wound/W = i
|
var/datum/wound/W = i
|
||||||
if(W.try_treating(I, user))
|
if(W.try_treating(I, user))
|
||||||
return 1
|
return STOP_ATTACK_PROC_CHAIN
|
||||||
|
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,10 @@
|
|||||||
var/stream_range = 1 //the range of tiles the sprayer will reach when in stream mode.
|
var/stream_range = 1 //the range of tiles the sprayer will reach when in stream mode.
|
||||||
var/stream_amount = 10 //the amount of reagents transfered when in stream mode.
|
var/stream_amount = 10 //the amount of reagents transfered when in stream mode.
|
||||||
var/spray_delay = 3 //The amount of sleep() delay between each chempuff step.
|
var/spray_delay = 3 //The amount of sleep() delay between each chempuff step.
|
||||||
|
/// Last world.time of spray
|
||||||
|
var/last_spray = 0
|
||||||
|
/// Spray cooldown
|
||||||
|
var/spray_cooldown = CLICK_CD_MELEE
|
||||||
var/can_fill_from_container = TRUE
|
var/can_fill_from_container = TRUE
|
||||||
amount_per_transfer_from_this = 5
|
amount_per_transfer_from_this = 5
|
||||||
volume = 250
|
volume = 250
|
||||||
@@ -27,8 +31,6 @@
|
|||||||
|
|
||||||
/obj/item/reagent_containers/spray/afterattack(atom/A, mob/user)
|
/obj/item/reagent_containers/spray/afterattack(atom/A, mob/user)
|
||||||
. = ..()
|
. = ..()
|
||||||
if(!user.CheckActionCooldown(CLICK_CD_MELEE))
|
|
||||||
return
|
|
||||||
if(istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics))
|
if(istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/hydroponics))
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -49,7 +51,8 @@
|
|||||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||||
return
|
return
|
||||||
|
|
||||||
spray(A)
|
if(!spray(A))
|
||||||
|
return
|
||||||
|
|
||||||
playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6)
|
playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6)
|
||||||
user.last_action = world.time
|
user.last_action = world.time
|
||||||
@@ -64,10 +67,10 @@
|
|||||||
if(reagents.has_reagent(/datum/reagent/lube))
|
if(reagents.has_reagent(/datum/reagent/lube))
|
||||||
message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [ADMIN_VERBOSEJMP(T)].")
|
message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [ADMIN_VERBOSEJMP(T)].")
|
||||||
log_game("[key_name(user)] fired Space lube from \a [src] at [AREACOORD(T)].")
|
log_game("[key_name(user)] fired Space lube from \a [src] at [AREACOORD(T)].")
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/reagent_containers/spray/proc/spray(atom/A)
|
/obj/item/reagent_containers/spray/proc/spray(atom/A)
|
||||||
|
if((last_spray + spray_cooldown) > world.time)
|
||||||
|
return
|
||||||
var/range = clamp(get_dist(src, A), 1, current_range)
|
var/range = clamp(get_dist(src, A), 1, current_range)
|
||||||
var/obj/effect/decal/chempuff/D = new /obj/effect/decal/chempuff(get_turf(src))
|
var/obj/effect/decal/chempuff/D = new /obj/effect/decal/chempuff(get_turf(src))
|
||||||
D.create_reagents(amount_per_transfer_from_this, NONE, NO_REAGENTS_VALUE)
|
D.create_reagents(amount_per_transfer_from_this, NONE, NO_REAGENTS_VALUE)
|
||||||
@@ -79,10 +82,11 @@
|
|||||||
reagents.trans_to(D, amount_per_transfer_from_this, 1/range)
|
reagents.trans_to(D, amount_per_transfer_from_this, 1/range)
|
||||||
D.color = mix_color_from_reagents(D.reagents.reagent_list)
|
D.color = mix_color_from_reagents(D.reagents.reagent_list)
|
||||||
var/wait_step = max(round(2+ spray_delay * INVERSE(range)), 2)
|
var/wait_step = max(round(2+ spray_delay * INVERSE(range)), 2)
|
||||||
do_spray(A, wait_step, D, range, puff_reagent_left)
|
last_spray = world.time
|
||||||
|
INVOKE_ASYNC(src, .proc/do_spray, A, wait_step, D, range, puff_reagent_left)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
/obj/item/reagent_containers/spray/proc/do_spray(atom/A, wait_step, obj/effect/decal/chempuff/D, range, puff_reagent_left)
|
/obj/item/reagent_containers/spray/proc/do_spray(atom/A, wait_step, obj/effect/decal/chempuff/D, range, puff_reagent_left)
|
||||||
set waitfor = FALSE
|
|
||||||
var/range_left = range
|
var/range_left = range
|
||||||
for(var/i=0, i<range, i++)
|
for(var/i=0, i<range, i++)
|
||||||
range_left--
|
range_left--
|
||||||
|
|||||||
Reference in New Issue
Block a user