Gives the bartender their own version of judo (#21886)

This commit is contained in:
GDN
2023-09-01 23:20:47 +01:00
committed by GitHub
parent 7336750e48
commit 08eb183875
4 changed files with 34 additions and 3 deletions
+2 -1
View File
@@ -166,7 +166,8 @@
H.dna.default_blocks.Add(GLOB.soberblock)
H.check_mutations = 1
ADD_TRAIT(H, TRAIT_TABLE_LEAP, ROUNDSTART_TRAIT)
var/datum/martial_art/judo/under_siege/bouncer_delight = new
bouncer_delight.teach(H)
/datum/job/chef
+1 -1
View File
@@ -66,7 +66,7 @@
* * user - The attacking user
*/
/obj/item/melee/classic_baton/proc/baton_knockdown(mob/living/target, mob/living/user)
if(user.mind?.martial_art?.no_baton)
if(user.mind?.martial_art?.no_baton && user.mind?.martial_art?.can_use(user))
to_chat(user, user.mind.martial_art.no_baton_reason)
return
if(issilicon(target))
+1 -1
View File
@@ -170,7 +170,7 @@
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_themselves()] with [src]!</span>",
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
return
if(user.mind?.martial_art?.no_baton)
if(user.mind?.martial_art?.no_baton && user.mind?.martial_art?.can_use(user))
to_chat(user, user.mind.martial_art.no_baton_reason)
return
if(issilicon(M)) // Can't stunbaton borgs and AIs
+30
View File
@@ -63,3 +63,33 @@
/datum/martial_art/cqc/explaination_footer(user)
to_chat(user, "<b>Your unarmed strikes hit about twice as hard as your peers, on average.</b>")
/datum/martial_art/judo/under_siege
name = "Professional Bodyguarding"
var/static/list/areas_under_siege = typecacheof(list(/area/crew_quarters/kitchen, /area/crew_quarters/bar))
/datum/martial_art/judo/under_siege/teach(mob/living/carbon/human/H, make_temporary)
RegisterSignal(H, COMSIG_AREA_ENTERED, PROC_REF(bar_check))
return ..()
/datum/martial_art/judo/under_siege/remove(mob/living/carbon/human/H)
UnregisterSignal(H, COMSIG_AREA_ENTERED)
return ..()
/datum/martial_art/judo/under_siege/proc/bar_check(mob/living/carbon/human/H, area/entered_area)
SIGNAL_HANDLER
if(!is_type_in_typecache(entered_area, areas_under_siege))
var/list/held_items = list(H.get_active_hand(), H.get_inactive_hand())
for(var/obj/item/slapper/parry/smacking_hand in held_items)
qdel(smacking_hand)
can_parry = FALSE
weight = 0
else
can_parry = TRUE
weight = 5
/datum/martial_art/judo/under_siege/can_use(mob/living/carbon/human/H)
var/area/A = get_area(H)
if(!(is_type_in_typecache(A, areas_under_siege)))
return FALSE
return ..()