Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The tale about shoves and martials (Public Testing needed) #14

Open
wants to merge 64 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
c9735ef
Shoves and martials
MrCastmer Feb 2, 2024
c6c701c
Shoves, tables
MrCastmer Feb 2, 2024
2c01054
fix
MrCastmer Feb 2, 2024
d588ba1
fix2
MrCastmer Feb 2, 2024
c5040d0
fix3
MrCastmer Feb 2, 2024
efef97a
fix4
MrCastmer Feb 2, 2024
bf908a2
fix5?
MrCastmer Feb 3, 2024
4ad7331
Merge branch 'master' into new-martial-art-quirk
MrCastmer Feb 3, 2024
c1034e7
fix6
MrCastmer Feb 3, 2024
90896b7
Merge branch 'new-martial-art-quirk' of https://github.com/MrCastmer/…
MrCastmer Feb 3, 2024
8b21afc
SIGNAL_HANDLER war
MrCastmer Feb 3, 2024
295e2f4
eh
MrCastmer Feb 3, 2024
6f469c4
Merge branch 'master' into new-martial-art-quirk
MrCastmer Feb 5, 2024
7d63412
tweak
MrCastmer Feb 22, 2024
8dac007
Merge branch 'master' into new-martial-art-quirk
MrCastmer Feb 22, 2024
7e02702
velvetfu fix
MrCastmer Feb 23, 2024
1b4c53e
Update species.dm
MrCastmer Feb 23, 2024
42d0c5c
Update species.dm
MrCastmer Feb 24, 2024
0be1bd4
some quirk mess
MrCastmer Feb 24, 2024
c669763
sanity adjusts block chances
MrCastmer Feb 24, 2024
6eb5237
Merge branch 'master' into new-martial-art-quirk
Blundir Feb 24, 2024
9eb2b5a
stance adjust (tweak)
MrCastmer Feb 25, 2024
291efae
fix
MrCastmer Feb 25, 2024
9214560
Merge branch 'master' into new-martial-art-quirk
MrCastmer Feb 28, 2024
c69e18c
Merge branch 'master' into new-martial-art-quirk
MrCastmer Feb 29, 2024
285e254
Merge branch 'master' into new-martial-art-quirk
MrCastmer Mar 9, 2024
6d7c320
Merge branch 'master' into new-martial-art-quirk
MrCastmer Mar 10, 2024
14232c3
minor tweak
MrCastmer Mar 11, 2024
f01ec05
Keybind&next move grabs
MrCastmer Mar 11, 2024
8a05441
Merge branch 'master' into new-martial-art-quirk
MrCastmer Mar 27, 2024
85068fa
Merge branch 'master' into new-martial-art-quirk
MrCastmer Mar 27, 2024
8055cbd
Merge branch 'master' into new-martial-art-quirk
MrCastmer Apr 6, 2024
db5842f
mood - be table
MrCastmer Apr 8, 2024
329821a
Merge branch 'master' into new-martial-art-quirk
MrCastmer Apr 10, 2024
9305d38
Update includes.dm
MrCastmer Apr 10, 2024
bd9e0ca
Update includes.dm
MrCastmer Apr 10, 2024
cb158b2
Update includes.dm
MrCastmer Apr 10, 2024
edbb8a5
Update includes.dm
MrCastmer Apr 10, 2024
fdad2c6
upgrading table
MrCastmer Apr 10, 2024
8d07118
better code
MrCastmer Apr 10, 2024
66f613a
better slam
MrCastmer Apr 10, 2024
19bbb56
adding jani his tape
MrCastmer Apr 10, 2024
d9389c1
uh, i don`t want to talk about this
MrCastmer Apr 10, 2024
befc300
Update uplink_items.dm
MrCastmer Apr 10, 2024
2dafbaa
sanity
MrCastmer Apr 10, 2024
ffec734
Merge branch 'master' into new-martial-art-quirk
MrCastmer Apr 12, 2024
be83313
drunk fix
MrCastmer Apr 12, 2024
303674e
surgeon quirk fix
MrCastmer Apr 12, 2024
5a076c9
throw stuff
MrCastmer Apr 14, 2024
2b52839
Merge branch 'master' into new-martial-art-quirk
MrCastmer Apr 19, 2024
a931a95
animations
Blundir Apr 22, 2024
a058264
some training updating
MrCastmer Apr 23, 2024
b18f125
Update trained.dm
MrCastmer Apr 24, 2024
d53e7f4
Merge branch 'master' into new-martial-art-quirk
MrCastmer Apr 26, 2024
7d8fd85
Update effects.dmi
MrCastmer Apr 26, 2024
c11d2ce
Merge branch 'master' into new-martial-art-quirk
MrCastmer Apr 26, 2024
6619842
Update effects.dmi
MrCastmer Apr 26, 2024
dabb622
Merge branch 'new-martial-art-quirk' of https://github.com/MrCastmer/…
MrCastmer Apr 26, 2024
3b9f217
Merge branch 'master' into new-martial-art-quirk
Blundir Apr 27, 2024
84c09f1
Merge branch 'master' into new-martial-art-quirk
Blundir May 26, 2024
a3700b6
Merge branch 'master' into new-martial-art-quirk
MrCastmer Jul 18, 2024
9c42464
Merge branch 'master' into new-martial-art-quirk
MrCastmer Jul 18, 2024
75d642f
Merge branch 'master' into new-martial-art-quirk
MrCastmer Aug 15, 2024
b5e83cd
Merge branch 'master' into new-martial-art-quirk
MrCastmer Aug 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion code/__DEFINES/combat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@
#define DEFAULT_MESSAGE_RANGE 7

//Shove knockdown lengths (deciseconds)
#define SHOVE_KNOCKDOWN_HUMAN 10
#define SHOVE_KNOCKDOWN_HUMAN 20 //dripstation edit
#define SHOVE_CHAIN_PARALYZE 30
//Shove slowdown
#define SHOVE_SLOWDOWN_LENGTH 30
Expand Down
3 changes: 3 additions & 0 deletions code/__DEFINES/{dripstation_defines}/combat.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#define ATTACK_EFFECT_GRAB "grab"
#define ATTACK_EFFECT_DISARM2 "disarm_2"

2 changes: 2 additions & 0 deletions code/__DEFINES/{dripstation_defines}/melee.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#define MARTIALART_VELVETFU "velvetfu"
#define MARTIALART_TRAINED "trained"
4 changes: 4 additions & 0 deletions code/__DEFINES/{dripstation_defines}/mobs.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/// Throw modes, defines whether or not to turn off throw mode after
#define THROW_MODE_DISABLED 0
#define THROW_MODE_TOGGLE 1
#define THROW_MODE_HOLD 2
8 changes: 8 additions & 0 deletions code/datums/martial/cqc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,10 @@
if(D.mobility_flags & MOBILITY_STAND)
D.visible_message(span_warning("[A] slams [D] into the ground!"), \
span_userdanger("[A] slams you into the ground!"))
/* dripstation edit
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) //using hit_kick because for some stupid reason slam.ogg is delayed
*/
playsound(get_turf(A), 'modular_dripstation/sound/slam.ogg', 50, 1, -1) //dripstation edit, it`s delayed because it`s performed
A.do_attack_animation(D, ATTACK_EFFECT_SMASH)
D.apply_damage(A.get_punchdamagehigh() + 5, STAMINA) //15 damage
D.Paralyze(30)
Expand Down Expand Up @@ -165,6 +168,7 @@
log_combat(A, D, "restrained (CQC)")
D.visible_message(span_warning("[A] locks [D] into a restraining position!"), \
span_userdanger("[A] locks you into a restraining position!"))
A.do_attack_animation(D, ATTACK_EFFECT_GRAB) //dripstation edit
D.Stun(20)
if(!(A.pulling == D))
D.grabbedby(A, 1)
Expand Down Expand Up @@ -193,6 +197,7 @@
D.apply_damage(consecutivedamage, STAMINA)
return TRUE

/*
///CQC grab, stuns for 1.5 seconds on use
/datum/martial_art/cqc/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
if(A.a_intent == INTENT_GRAB && A!=D && (can_use(A) && can_use(D))) // A!=D prevents grabbing yourself
Expand All @@ -206,6 +211,7 @@
return TRUE
else
return FALSE
*/

///CQC harm intent, deals 15 stamina damage and immobilizes for 1.5 seconds, if the attacker is prone, they knock the defender down and stand up
/datum/martial_art/cqc/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
Expand Down Expand Up @@ -311,6 +317,7 @@
if(D.getOxyLoss() >= 50)
return TRUE

/* I hate yog coders, just check handspells on this shit, dripstation edit, check CQC file in dripstation module
///CQC counter: attacker's weapon is placed in the defender's offhand and they are knocked down
/datum/martial_art/cqc/handle_counter(mob/living/carbon/human/user, mob/living/carbon/human/attacker) //I am going to fucking gut whoever did the old counter system also whoever made martial arts
if(!can_use(user))
Expand All @@ -326,6 +333,7 @@
I.forceMove(get_turf(attacker))
attacker.Knockdown(60)
user.adjustStaminaLoss(10) //Can't block forever. Really, if this becomes a problem you're already screwed.
*/

/**
* CQC help proc
Expand Down
21 changes: 21 additions & 0 deletions code/datums/status_effects/debuffs/drunk.dm
Original file line number Diff line number Diff line change
Expand Up @@ -148,8 +148,12 @@
if(HAS_TRAIT(owner, TRAIT_LIGHT_DRINKER) & (drunk_value >= 11))
owner.adjust_slurring_up_to(2.4 SECONDS, 10 SECONDS)
if(HAS_TRAIT(owner, TRAIT_DRUNK_HEALING) & (drunk_value >= 11)) // To save headache this will be separate for drunken resilience & effects stack with lower tiers
/* Dripstation edit start
owner.adjustBruteLoss(-0.1, FALSE)
owner.adjustFireLoss(-0.06, FALSE)
*/
owner.adjustBruteLoss(-0.1, FALSE, FALSE, required_status = BODYPART_ORGANIC)
owner.adjustFireLoss(-0.06, FALSE, FALSE, required_status = BODYPART_ORGANIC) //We making sure that alcohol heals only organics, Dripstation edit end

// Over 41, we have a 30% chance to gain confusion, and we will always have 20 seconds of dizziness.
if(drunk_value >= 41)
Expand All @@ -159,8 +163,12 @@
owner.set_dizzy_if_lower(20 SECONDS)
ADD_TRAIT(src, TRAIT_SURGERY_PREPARED, "drunk")
if(HAS_TRAIT(owner, TRAIT_DRUNK_HEALING))
/* Dripstation edit start
owner.adjustBruteLoss(-0.2, FALSE)
owner.adjustFireLoss(-0.09, FALSE)
*/
owner.adjustBruteLoss(-0.2, FALSE, FALSE, required_status = BODYPART_ORGANIC)
owner.adjustFireLoss(-0.09, FALSE, FALSE, required_status = BODYPART_ORGANIC) //We making sure that alcohol heals only organics, Dripstation edit end

// Over 51, we have a 3% chance to gain a lot of confusion and vomit, and we will always have 50 seconds of dizziness and normal drinkers will start to slur
if(drunk_value >= 51)
Expand All @@ -177,8 +185,13 @@
if(drunk_value >= 71)
owner.adjust_eye_blur(drunk_value * 2 - 140)
if(HAS_TRAIT(owner, TRAIT_DRUNK_HEALING))
/* Dripstation edit start
owner.adjustBruteLoss(-0.1, FALSE)
owner.adjustFireLoss(-0.05, FALSE)
*/
owner.adjustBruteLoss(-0.5, FALSE, FALSE, required_status = BODYPART_ORGANIC)
owner.adjustFireLoss(-0.2, FALSE, FALSE, required_status = BODYPART_ORGANIC) //We making sure that alcohol heals only organics, Dripstation edit end


// Over 81, we will gain constant toxloss and experienced drunks will now begin to slur
if(drunk_value >= 81)
Expand All @@ -201,15 +214,23 @@
to_chat(owner, span_warning("Just a quick nap..."))
owner.Sleeping(90 SECONDS)
if(HAS_TRAIT(owner, TRAIT_DRUNK_HEALING))
/* Dripstation edit start
owner.adjustBruteLoss(-0.05, FALSE)
owner.adjustFireLoss(-0.05, FALSE)
*/
owner.adjustBruteLoss(-0.05, FALSE, FALSE, required_status = BODYPART_ORGANIC)
owner.adjustFireLoss(-0.05, FALSE, FALSE, required_status = BODYPART_ORGANIC) //We making sure that alcohol heals only organics, Dripstation edit end

// And finally, over 100 - let's be honest, you shouldn't be alive by now.
if(drunk_value >= 101)
owner.adjustToxLoss(2)
if(HAS_TRAIT(owner, TRAIT_DRUNK_HEALING))
/* Dripstation edit start
owner.adjustBruteLoss(-0.15, FALSE)
owner.adjustFireLoss(-0.15, FALSE)
*/
owner.adjustBruteLoss(-0.15, FALSE, FALSE, required_status = BODYPART_ORGANIC)
owner.adjustFireLoss(-0.15, FALSE, FALSE, required_status = BODYPART_ORGANIC) //We making sure that alcohol heals only organics, Dripstation edit end

/// Status effect for being fully drunk (not tipsy).
/atom/movable/screen/alert/status_effect/drunk
Expand Down
6 changes: 6 additions & 0 deletions code/game/objects/items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1144,7 +1144,10 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
/atom/movable/proc/do_item_attack_animation(atom/attacked_atom, visual_effect_icon, obj/item/used_item)
var/image/attack_image
if(visual_effect_icon)
/* //Dripstation edit
attack_image = image('icons/effects/effects.dmi', attacked_atom, visual_effect_icon, attacked_atom.layer + 0.1)
*/
attack_image = image('modular_dripstation/icons/effects/effects.dmi', attacked_atom, visual_effect_icon, attacked_atom.layer + 0.1) //Dripstation edit
else if(used_item)
attack_image = image(icon = used_item, loc = attacked_atom, layer = attacked_atom.layer + 0.1)
attack_image.plane = attacked_atom.plane
Expand Down Expand Up @@ -1177,7 +1180,10 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
if(ismob(src) && ismob(attacked_atom) && (!used_item))
var/mob/M = src
t_color = M.a_intent == INTENT_HARM ? "#ff0000" : "#ffffff"
/*
animate(attack_image, alpha = 175, transform = matrix() * 0.75, pixel_x = 0, pixel_y = 0, pixel_z = 0, time = 3, color = t_color)
*/
animate(attack_image, alpha = 175, pixel_x = 0, pixel_y = 0, pixel_z = 0, time = 3, color = t_color) //Dripstation edit
animate(time = 1)
animate(alpha = 0, time = 3, easing = CIRCULAR_EASING|EASE_OUT) //yogs end

Expand Down
15 changes: 15 additions & 0 deletions code/game/objects/structures/tables_racks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,24 @@
if(pushed_mob.buckled)
to_chat(user, span_warning("[pushed_mob] is buckled to [pushed_mob.buckled]!"))
return
/* dripstation edit start
if(user.a_intent == INTENT_GRAB)
if(user.grab_state < GRAB_AGGRESSIVE)
*/
if(user.a_intent != INTENT_HELP)
if(user.grab_state == GRAB_PASSIVE)
to_chat(user, span_warning("You need a better grip to do that!"))
return
/*
if(do_after(user, 3.5 SECONDS, pushed_mob))
*/
if(user.grab_state == GRAB_AGGRESSIVE)
tablepush(user, pushed_mob)
if(user.grab_state == GRAB_NECK || user.grab_state == GRAB_KILL)
if(user.a_intent == INTENT_DISARM)
tablelimbsmash(user, pushed_mob, FALSE)
else
tablelimbsmash(user, pushed_mob, TRUE) //dripstation edit end
if(user.a_intent == INTENT_HELP)
pushed_mob.visible_message(span_notice("[user] begins to place [pushed_mob] onto [src]..."), \
span_userdanger("[user] begins to place [pushed_mob] onto [src]..."))
Expand Down Expand Up @@ -177,14 +189,17 @@
pushed_mob.pass_flags &= ~PASSTABLE
if(pushed_mob.loc != loc) //Something prevented the tabling
return
/*
pushed_mob.Paralyze(40)
*/
pushed_mob.visible_message(span_danger("[user] pushes [pushed_mob] onto [src]."), \
span_userdanger("[user] pushes [pushed_mob] onto [src]."))
log_combat(user, pushed_mob, "tabled", null, "onto [src]")
if(!ishuman(pushed_mob))
return
var/mob/living/carbon/human/H = pushed_mob
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "table", /datum/mood_event/table)
H.Knockdown(SHOVE_KNOCKDOWN_HUMAN*2)

/obj/structure/table/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/rsf)) // Stops RSF from placing itself instead of glasses
Expand Down
7 changes: 7 additions & 0 deletions code/modules/mob/living/carbon/carbon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@
playsound(src,'sound/weapons/punch1.ogg',50,1)


/*
//Throwing stuff
/mob/living/carbon/proc/toggle_throw_mode()
if(stat)
Expand All @@ -151,14 +152,18 @@
in_throw_mode = 1
if(client && hud_used)
hud_used.throw_icon.icon_state = "act_throw_on"
*/

/mob/proc/throw_item(atom/target)
SEND_SIGNAL(src, COMSIG_MOB_THROW, target)
return

/mob/living/carbon/throw_item(atom/target)
. = ..()
/*
throw_mode_off()
*/
throw_mode_off(THROW_MODE_TOGGLE) //dripstation edit
if(!target || !isturf(loc))
return
if(istype(target, /atom/movable/screen))
Expand Down Expand Up @@ -202,6 +207,8 @@
if(thrown_thing)
if(HAS_TRAIT(src, TRAIT_HULK))
power_throw++
do_attack_animation(target, no_effect = 1) //Dripstation edit
playsound(loc, 'sound/weapons/punchmiss.ogg', 50, TRUE, -1) //Dripstation edit
visible_message(span_danger("[src] throws [thrown_thing][power_throw ? " really hard!" : "."]"), \
span_danger("You throw [thrown_thing][power_throw ? " really hard!" : "."]"))
log_message("has thrown [thrown_thing] [power_throw ? "really hard" : ""]", LOG_ATTACK)
Expand Down
3 changes: 3 additions & 0 deletions code/modules/mob/living/carbon/carbon_defense.dm
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,10 @@
//If() explanation: if we have a mind and a martial art that we can use, check if it has a block or deflect chance or it's sleeping carp
//Assuming any of that isnt true, then throw mode isnt helpful and it gets turned off. Otherwise, it stays on.
if(!(mind && mind.martial_art && mind.martial_art.can_use(src) && (mind.martial_art.deflection_chance || mind.martial_art.block_chance || mind.martial_art.id == "sleeping carp")))
/*
throw_mode_off()
*/
throw_mode_off(THROW_MODE_TOGGLE) //dripstation edit
return TRUE
..()

Expand Down
8 changes: 8 additions & 0 deletions code/modules/mob/living/carbon/human/human_defense.dm
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,15 @@

/mob/living/carbon/human/proc/check_block()
if(mind)
/* dripstation edit start
if(mind.martial_art && prob(mind.martial_art.block_chance) && mind.martial_art.can_use(src) && in_throw_mode && !incapacitated(FALSE, TRUE))
*/
var/sane_mod = 0
var/datum/component/mood/mood = GetComponent(/datum/component/mood)
if(mood)
sane_mod = min(30, 30 - 0.32 * mood.sanity)
sane_mod = max(-10, sane_mod)
if(mind.martial_art && prob(mind.martial_art.block_chance - sane_mod) && mind.martial_art.can_use(src) && in_throw_mode && !incapacitated(FALSE, TRUE)) //dripstation edit end
return mind.martial_art //need to use this where blocks are handled to handle counters since check_block doesn't reference the attacker
return FALSE

Expand Down
46 changes: 46 additions & 0 deletions code/modules/mob/living/carbon/human/species.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1742,8 +1742,10 @@ GLOBAL_LIST_EMPTY(features_by_species)
if(user.pulledby && user.pulledby.grab_state >= GRAB_AGGRESSIVE)
return FALSE
else
/* //Dripstation edit
user.do_attack_animation(target, ATTACK_EFFECT_DISARM)
playsound(target, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
*/

if(target.w_uniform)
target.w_uniform.add_fingerprint(user)
Expand All @@ -1755,6 +1757,7 @@ GLOBAL_LIST_EMPTY(features_by_species)
var/turf/target_shove_turf = get_step(target.loc, shove_dir)
var/mob/living/carbon/human/target_collateral_human
var/shove_blocked = FALSE //Used to check if a shove is blocked so that if it is knockdown logic can be applied
var/shove_on_table = FALSE //Used for table check, dripstation edit

//Thank you based whoneedsspace
target_collateral_human = locate(/mob/living/carbon/human) in target_shove_turf.contents
Expand All @@ -1764,18 +1767,41 @@ GLOBAL_LIST_EMPTY(features_by_species)
else
target.Move(target_shove_turf, shove_dir)
if(get_turf(target) != target_shove_turf)
/* dripstation edit start
shove_blocked = TRUE

*/
for(var/obj/O in target_shove_turf)
if(istype(O, /obj/structure/table))
shove_on_table = TRUE
if(shove_on_table)
target.Knockdown(SHOVE_KNOCKDOWN_HUMAN)
user.visible_message(span_danger("[user.name] shoves [target.name] onto \the table!"),
span_danger("You shove [target.name] onto \the table!"), null, COMBAT_MESSAGE_RANGE)
target.throw_at(target_shove_turf, 1, 1, null, FALSE) //1 speed throws with no spin are basically just forcemoves with a hard collision check
user.do_attack_animation(target, ATTACK_EFFECT_DISARM2) //dripstation edit
playsound(target, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) //dripstation edit
log_combat(user, target, "shoved", "onto (table)")
else
shove_blocked = TRUE
/*
if(target.IsKnockdown() && !target.IsParalyzed())
*/
if(target.IsKnockdown() && !target.IsParalyzed() && !shove_on_table) //dripstation edit end
var/armor_block = target.run_armor_check(affecting, MELEE, "Your armor prevents your fall!", "Your armor softens your fall!")
target.apply_effect(SHOVE_CHAIN_PARALYZE, EFFECT_PARALYZE, armor_block)
target.visible_message(span_danger("[user.name] kicks [target.name] onto their side!"),
span_danger("[user.name] kicks you onto your side!"), null, COMBAT_MESSAGE_RANGE)
user.do_attack_animation(target, ATTACK_EFFECT_KICK) //dripstation edit
playsound(target, 'modular_dripstation/sound/weapons/knockdown.ogg', 25, TRUE, -1) //dripstation edit
var/reset_timer = SHOVE_CHAIN_PARALYZE * (100-armor_block)/100
addtimer(CALLBACK(target, /mob/living/proc/SetKnockdown, 0), reset_timer)
log_combat(user, target, "kicks", "onto their side (paralyzing)")

/* dripstation edit
if(shove_blocked && !target.is_shove_knockdown_blocked() && !target.buckled)
*/
else if(shove_blocked && !target.is_shove_knockdown_blocked() && !target.buckled) //dripstation edit
var/directional_blocked = FALSE
if(shove_dir in GLOB.cardinals) //Directional checks to make sure that we're not shoving through a windoor or something like that
var/target_turf = get_turf(target)
Expand All @@ -1788,22 +1814,42 @@ GLOBAL_LIST_EMPTY(features_by_species)
if(O.flags_1 & ON_BORDER_1 && O.dir == turn(shove_dir, 180) && O.density)
directional_blocked = TRUE
break
if((!bothstanding || directional_blocked) && (target.mobility_flags & MOBILITY_STAND)) //dripstation edit
/* //dripstation edit start
if(!bothstanding || directional_blocked)
var/obj/item/I = target.get_active_held_item()
if(target.dropItemToGround(I))
user.visible_message(span_danger("[user.name] shoves [target.name], disarming them!"),
span_danger("You shove [target.name], disarming them!"), null, COMBAT_MESSAGE_RANGE)
log_combat(user, target, "shoved", "disarming them")
*/
target.Knockdown(SHOVE_KNOCKDOWN_HUMAN)
target.visible_message(span_danger("[user.name] shoves [target.name], knocking [target.p_them()] down!"),
span_danger("You're knocked down from a shove by [name]!"), null, COMBAT_MESSAGE_RANGE)
user.do_attack_animation(target, ATTACK_EFFECT_DISARM2) //dripstation edit
playsound(target, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) //dripstation edit
log_combat(user, target, "shoved", "knocking them down") //dripstation edit end
else if(bothstanding)
target.Knockdown(SHOVE_KNOCKDOWN_HUMAN)
if(!target_collateral_human.is_shove_knockdown_blocked())
target_collateral_human.Knockdown(SHOVE_KNOCKDOWN_HUMAN)
user.visible_message(span_danger("[user.name] shoves [target.name] into [target_collateral_human.name]!"),
span_danger("You shove [target.name] into [target_collateral_human.name]!"), null, COMBAT_MESSAGE_RANGE)
user.do_attack_animation(target, ATTACK_EFFECT_DISARM2) //dripstation edit
playsound(target, 'modular_dripstation/sound/weapons/knockdown.ogg', 25, TRUE, -1) //dripstation edit
log_combat(user, target, "shoved", "into [target_collateral_human.name]")
/* dripstation edit start
else
*/
else
to_chat(user, span_danger("You try to shove [target.name], but you can`t do anything to [target.p_them()]!"))
user.do_attack_animation(target, ATTACK_EFFECT_DISARM) //dripstation edit
playsound(target, 'sound/weapons/punchmiss.ogg', 50, TRUE, -1) //dripstation edit
else if(!shove_on_table) //dripstation edit end
user.visible_message(span_danger("[user.name] shoves [target.name]!"),
span_danger("You shove [target.name]!"), null, COMBAT_MESSAGE_RANGE)
user.do_attack_animation(target, ATTACK_EFFECT_DISARM) //dripstation edit
playsound(target, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) //dripstation edit
var/target_held_item = target.get_active_held_item()
var/knocked_item = FALSE
if(!is_type_in_typecache(target_held_item, GLOB.shove_disarming_types))
Expand Down
Loading
Loading