mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 01:34:01 +00:00
Krav Maga > Kaza Ruk: Tail sweep criminals (#93773)
This commit is contained in:
@@ -152,7 +152,7 @@
|
|||||||
/area/awaymission/caves/bmp_asteroid/level_four)
|
/area/awaymission/caves/bmp_asteroid/level_four)
|
||||||
"ba" = (
|
"ba" = (
|
||||||
/obj/structure/table/wood/fancy,
|
/obj/structure/table/wood/fancy,
|
||||||
/obj/item/clothing/gloves/krav_maga/combatglovesplus,
|
/obj/item/clothing/gloves/kaza_ruk/combatglovesplus,
|
||||||
/turf/open/floor/engine/cult,
|
/turf/open/floor/engine/cult,
|
||||||
/area/awaymission/caves/bmp_asteroid/level_four)
|
/area/awaymission/caves/bmp_asteroid/level_four)
|
||||||
"bf" = (
|
"bf" = (
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#define MARTIALART_CQC "CQC"
|
#define MARTIALART_CQC "CQC"
|
||||||
#define MARTIALART_EVIL_BOXING "evil boxing"
|
#define MARTIALART_EVIL_BOXING "evil boxing"
|
||||||
#define MARTIALART_HUNTER_BOXING "hunter boxing"
|
#define MARTIALART_HUNTER_BOXING "hunter boxing"
|
||||||
#define MARTIALART_KRAVMAGA "krav maga"
|
#define MARTIALART_KAZA_RUK "Kaza Ruk"
|
||||||
#define MARTIALART_MUSHPUNCH "mushroom punch"
|
#define MARTIALART_MUSHPUNCH "mushroom punch"
|
||||||
#define MARTIALART_PLASMAFIST "plasma fist"
|
#define MARTIALART_PLASMAFIST "plasma fist"
|
||||||
#define MARTIALART_PSYCHOBRAWL "psychotic brawling"
|
#define MARTIALART_PSYCHOBRAWL "psychotic brawling"
|
||||||
|
|||||||
@@ -1,19 +1,29 @@
|
|||||||
/datum/martial_art/krav_maga
|
/datum/martial_art/kaza_ruk
|
||||||
name = "Krav Maga"
|
name = "Kaza Ruk"
|
||||||
id = MARTIALART_KRAVMAGA
|
id = MARTIALART_KAZA_RUK
|
||||||
|
grab_damage_modifier = 5
|
||||||
|
grab_escape_chance_modifier = -10
|
||||||
VAR_PRIVATE/datum/action/neck_chop/neckchop
|
VAR_PRIVATE/datum/action/neck_chop/neckchop
|
||||||
VAR_PRIVATE/datum/action/leg_sweep/legsweep
|
VAR_PRIVATE/datum/action/low_sweep/lowsweep
|
||||||
VAR_PRIVATE/datum/action/lung_punch/lungpunch
|
VAR_PRIVATE/datum/action/lung_punch/lungpunch
|
||||||
|
|
||||||
/datum/martial_art/krav_maga/New()
|
/datum/martial_art/kaza_ruk/activate_style(mob/living/new_holder)
|
||||||
|
. = ..()
|
||||||
|
RegisterSignal(new_holder, COMSIG_HUMAN_PUNCHED, PROC_REF(blow_followup))
|
||||||
|
|
||||||
|
/datum/martial_art/kaza_ruk/deactivate_style(mob/living/old_holder)
|
||||||
|
. = ..()
|
||||||
|
UnregisterSignal(old_holder, COMSIG_HUMAN_PUNCHED)
|
||||||
|
|
||||||
|
/datum/martial_art/kaza_ruk/New()
|
||||||
. = ..()
|
. = ..()
|
||||||
neckchop = new(src)
|
neckchop = new(src)
|
||||||
legsweep = new(src)
|
lowsweep = new(src)
|
||||||
lungpunch = new(src)
|
lungpunch = new(src)
|
||||||
|
|
||||||
/datum/martial_art/krav_maga/Destroy()
|
/datum/martial_art/kaza_ruk/Destroy()
|
||||||
neckchop = null
|
neckchop = null
|
||||||
legsweep = null
|
lowsweep = null
|
||||||
lungpunch = null
|
lungpunch = null
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
@@ -36,24 +46,24 @@
|
|||||||
owner.visible_message(span_danger("[owner] assumes the Neck Chop stance!"), "<b><i>Your next attack will be a Neck Chop.</i></b>")
|
owner.visible_message(span_danger("[owner] assumes the Neck Chop stance!"), "<b><i>Your next attack will be a Neck Chop.</i></b>")
|
||||||
source.streak = "neck_chop"
|
source.streak = "neck_chop"
|
||||||
|
|
||||||
/datum/action/leg_sweep
|
/datum/action/low_sweep
|
||||||
name = "Leg Sweep"
|
name = "Low Sweep"
|
||||||
desc = "Trips the victim, knocking them down for a brief moment."
|
desc = "Trips the victim, knocking them down for a brief moment."
|
||||||
button_icon = 'icons/mob/actions/actions_items.dmi'
|
button_icon = 'icons/mob/actions/actions_items.dmi'
|
||||||
button_icon_state = "legsweep"
|
button_icon_state = "legsweep"
|
||||||
check_flags = AB_CHECK_INCAPACITATED|AB_CHECK_HANDS_BLOCKED|AB_CHECK_CONSCIOUS
|
check_flags = AB_CHECK_INCAPACITATED|AB_CHECK_HANDS_BLOCKED|AB_CHECK_CONSCIOUS
|
||||||
|
|
||||||
/datum/action/leg_sweep/Trigger(mob/clicker, trigger_flags)
|
/datum/action/low_sweep/Trigger(mob/clicker, trigger_flags)
|
||||||
. = ..()
|
. = ..()
|
||||||
if(!.)
|
if(!.)
|
||||||
return
|
return
|
||||||
var/datum/martial_art/source = target
|
var/datum/martial_art/source = target
|
||||||
if (source.streak == "leg_sweep")
|
if (source.streak == "low_sweep")
|
||||||
owner.visible_message(span_danger("[owner] assumes a neutral stance."), "<b><i>Your next attack is cleared.</i></b>")
|
owner.visible_message(span_danger("[owner] assumes a neutral stance."), "<b><i>Your next attack is cleared.</i></b>")
|
||||||
source.streak = ""
|
source.streak = ""
|
||||||
else
|
else
|
||||||
owner.visible_message(span_danger("[owner] assumes the Leg Sweep stance!"), "<b><i>Your next attack will be a Leg Sweep.</i></b>")
|
owner.visible_message(span_danger("[owner] assumes the Low Sweep stance!"), "<b><i>Your next attack will be a Low Sweep.</i></b>")
|
||||||
source.streak = "leg_sweep"
|
source.streak = "low_sweep"
|
||||||
|
|
||||||
/datum/action/lung_punch//referred to internally as 'quick choke'
|
/datum/action/lung_punch//referred to internally as 'quick choke'
|
||||||
name = "Lung Punch"
|
name = "Lung Punch"
|
||||||
@@ -74,30 +84,30 @@
|
|||||||
owner.visible_message(span_danger("[owner] assumes the Lung Punch stance!"), "<b><i>Your next attack will be a Lung Punch.</i></b>")
|
owner.visible_message(span_danger("[owner] assumes the Lung Punch stance!"), "<b><i>Your next attack will be a Lung Punch.</i></b>")
|
||||||
source.streak = "quick_choke"//internal name for lung punch
|
source.streak = "quick_choke"//internal name for lung punch
|
||||||
|
|
||||||
/datum/martial_art/krav_maga/activate_style(mob/living/new_holder)
|
/datum/martial_art/kaza_ruk/activate_style(mob/living/new_holder)
|
||||||
. = ..()
|
. = ..()
|
||||||
to_chat(new_holder, span_userdanger("You know the arts of [name]!"))
|
to_chat(new_holder, span_userdanger("You know the arts of [name]!"))
|
||||||
to_chat(new_holder, span_danger("Place your cursor over a move at the top of the screen to see what it does."))
|
to_chat(new_holder, span_danger("Place your cursor over a move at the top of the screen to see what it does."))
|
||||||
neckchop.Grant(new_holder)
|
neckchop.Grant(new_holder)
|
||||||
legsweep.Grant(new_holder)
|
lowsweep.Grant(new_holder)
|
||||||
lungpunch.Grant(new_holder)
|
lungpunch.Grant(new_holder)
|
||||||
|
|
||||||
/datum/martial_art/krav_maga/deactivate_style(mob/living/remove_from)
|
/datum/martial_art/kaza_ruk/deactivate_style(mob/living/remove_from)
|
||||||
to_chat(remove_from, span_userdanger("You suddenly forget the arts of [name]..."))
|
to_chat(remove_from, span_userdanger("You suddenly forget the arts of [name]..."))
|
||||||
neckchop?.Remove(remove_from)
|
neckchop?.Remove(remove_from)
|
||||||
legsweep?.Remove(remove_from)
|
lowsweep?.Remove(remove_from)
|
||||||
lungpunch?.Remove(remove_from)
|
lungpunch?.Remove(remove_from)
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/datum/martial_art/krav_maga/proc/check_streak(mob/living/attacker, mob/living/defender)
|
/datum/martial_art/kaza_ruk/proc/check_streak(mob/living/attacker, mob/living/defender)
|
||||||
switch(streak)
|
switch(streak)
|
||||||
if("neck_chop")
|
if("neck_chop")
|
||||||
streak = ""
|
streak = ""
|
||||||
neck_chop(attacker, defender)
|
neck_chop(attacker, defender)
|
||||||
return TRUE
|
return TRUE
|
||||||
if("leg_sweep")
|
if("low_sweep")
|
||||||
streak = ""
|
streak = ""
|
||||||
leg_sweep(attacker, defender)
|
low_sweep(attacker, defender)
|
||||||
return TRUE
|
return TRUE
|
||||||
if("quick_choke")//is actually lung punch
|
if("quick_choke")//is actually lung punch
|
||||||
streak = ""
|
streak = ""
|
||||||
@@ -105,26 +115,40 @@
|
|||||||
return TRUE
|
return TRUE
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
/datum/martial_art/krav_maga/proc/leg_sweep(mob/living/attacker, mob/living/defender)
|
/datum/martial_art/kaza_ruk/proc/low_sweep(mob/living/attacker, mob/living/defender)
|
||||||
if(defender.stat != CONSCIOUS || defender.IsParalyzed())
|
if(defender.stat != CONSCIOUS || defender.IsParalyzed())
|
||||||
return MARTIAL_ATTACK_INVALID
|
return MARTIAL_ATTACK_INVALID
|
||||||
if(HAS_TRAIT(attacker, TRAIT_PACIFISM))
|
if(HAS_TRAIT(attacker, TRAIT_PACIFISM))
|
||||||
return MARTIAL_ATTACK_INVALID // Does 5 damage, so we can't let pacifists leg sweep.
|
return MARTIAL_ATTACK_INVALID // Does 5 damage, so we can't let pacifists leg sweep.
|
||||||
|
|
||||||
|
var/tail_sweeping = FALSE
|
||||||
|
var/sweeping_language = "leg"
|
||||||
|
if(ishuman(attacker))
|
||||||
|
var/mob/living/carbon/possible_human = attacker
|
||||||
|
var/obj/item/organ/tail/lizard/possible_lizard_tail = possible_human.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
|
||||||
|
if(possible_lizard_tail)
|
||||||
|
tail_sweeping = TRUE
|
||||||
|
sweeping_language = "tail"
|
||||||
|
|
||||||
defender.visible_message(
|
defender.visible_message(
|
||||||
span_warning("[attacker] leg sweeps [defender]!"),
|
span_warning("[attacker] [sweeping_language] sweeps [defender]!"),
|
||||||
span_userdanger("Your legs are sweeped by [attacker]!"),
|
span_userdanger("Your legs are sweeped by [attacker]!"),
|
||||||
span_hear("You hear a sickening sound of flesh hitting flesh!"),
|
span_hear("You hear a sickening sound of flesh hitting flesh!"),
|
||||||
null,
|
null,
|
||||||
attacker,
|
attacker,
|
||||||
)
|
)
|
||||||
to_chat(attacker, span_danger("You leg sweep [defender]!"))
|
to_chat(attacker, span_danger("You [sweeping_language] sweep [defender]!"))
|
||||||
playsound(attacker, 'sound/effects/hit_kick.ogg', 50, TRUE, -1)
|
playsound(attacker, 'sound/effects/hit_kick.ogg', 50, TRUE, -1)
|
||||||
|
|
||||||
|
if(tail_sweeping)
|
||||||
|
attacker.emote("spin")
|
||||||
|
|
||||||
defender.apply_damage(5, BRUTE, BODY_ZONE_CHEST)
|
defender.apply_damage(5, BRUTE, BODY_ZONE_CHEST)
|
||||||
defender.Knockdown(6 SECONDS)
|
defender.Knockdown(6 SECONDS)
|
||||||
log_combat(attacker, defender, "leg sweeped")
|
log_combat(attacker, defender, "leg sweeped")
|
||||||
return MARTIAL_ATTACK_SUCCESS
|
return MARTIAL_ATTACK_SUCCESS
|
||||||
|
|
||||||
/datum/martial_art/krav_maga/proc/quick_choke(mob/living/attacker, mob/living/defender)//is actually lung punch
|
/datum/martial_art/kaza_ruk/proc/quick_choke(mob/living/attacker, mob/living/defender)//is actually lung punch
|
||||||
attacker.do_attack_animation(defender)
|
attacker.do_attack_animation(defender)
|
||||||
defender.visible_message(
|
defender.visible_message(
|
||||||
span_warning("[attacker] pounds [defender] on the chest!"),
|
span_warning("[attacker] pounds [defender] on the chest!"),
|
||||||
@@ -141,7 +165,7 @@
|
|||||||
log_combat(attacker, defender, "quickchoked")
|
log_combat(attacker, defender, "quickchoked")
|
||||||
return MARTIAL_ATTACK_SUCCESS
|
return MARTIAL_ATTACK_SUCCESS
|
||||||
|
|
||||||
/datum/martial_art/krav_maga/proc/neck_chop(mob/living/attacker, mob/living/defender)
|
/datum/martial_art/kaza_ruk/proc/neck_chop(mob/living/attacker, mob/living/defender)
|
||||||
if(HAS_TRAIT(attacker, TRAIT_PACIFISM))
|
if(HAS_TRAIT(attacker, TRAIT_PACIFISM))
|
||||||
return MARTIAL_ATTACK_INVALID // Does 10 damage, so we can't let pacifists neck chop.
|
return MARTIAL_ATTACK_INVALID // Does 10 damage, so we can't let pacifists neck chop.
|
||||||
attacker.do_attack_animation(defender)
|
attacker.do_attack_animation(defender)
|
||||||
@@ -159,39 +183,16 @@
|
|||||||
log_combat(attacker, defender, "neck chopped")
|
log_combat(attacker, defender, "neck chopped")
|
||||||
return MARTIAL_ATTACK_SUCCESS
|
return MARTIAL_ATTACK_SUCCESS
|
||||||
|
|
||||||
/datum/martial_art/krav_maga/harm_act(mob/living/attacker, mob/living/defender)
|
/datum/martial_art/kaza_ruk/harm_act(mob/living/attacker, mob/living/defender)
|
||||||
var/picked_hit_type = pick("punch", "kick")
|
if(defender.check_block(attacker, 10, attacker.name, UNARMED_ATTACK))
|
||||||
var/bonus_damage = 0
|
|
||||||
if(defender.body_position == LYING_DOWN)
|
|
||||||
bonus_damage += 5
|
|
||||||
picked_hit_type = "stomp"
|
|
||||||
|
|
||||||
if(defender.check_block(attacker, 10 + bonus_damage, "[attacker]'s [picked_hit_type]", UNARMED_ATTACK))
|
|
||||||
return MARTIAL_ATTACK_FAIL
|
return MARTIAL_ATTACK_FAIL
|
||||||
|
|
||||||
if(check_streak(attacker, defender))
|
if(check_streak(attacker, defender))
|
||||||
return MARTIAL_ATTACK_SUCCESS
|
return MARTIAL_ATTACK_SUCCESS
|
||||||
|
|
||||||
log_combat(attacker, defender, "[picked_hit_type]ed")
|
return MARTIAL_ATTACK_INVALID
|
||||||
var/obj/item/bodypart/affecting = defender.get_bodypart(defender.get_random_valid_zone(attacker.zone_selected))
|
|
||||||
defender.apply_damage(10 + bonus_damage, attacker.get_attack_type(), affecting)
|
|
||||||
if(picked_hit_type == "kick" || picked_hit_type == "stomp")
|
|
||||||
attacker.do_attack_animation(defender, ATTACK_EFFECT_KICK)
|
|
||||||
playsound(defender, 'sound/effects/hit_kick.ogg', 50, TRUE, -1)
|
|
||||||
else
|
|
||||||
attacker.do_attack_animation(defender, ATTACK_EFFECT_PUNCH)
|
|
||||||
playsound(defender, 'sound/effects/hit_punch.ogg', 50, TRUE, -1)
|
|
||||||
defender.visible_message(
|
|
||||||
span_danger("[attacker] [picked_hit_type]s [defender]!"),
|
|
||||||
span_userdanger("You're [picked_hit_type]ed by [attacker]!"),
|
|
||||||
span_hear("You hear a sickening sound of flesh hitting flesh!"),
|
|
||||||
COMBAT_MESSAGE_RANGE,
|
|
||||||
attacker,
|
|
||||||
)
|
|
||||||
to_chat(attacker, span_danger("You [picked_hit_type] [defender]!"))
|
|
||||||
log_combat(attacker, defender, "[picked_hit_type] with [name]")
|
|
||||||
return MARTIAL_ATTACK_SUCCESS
|
|
||||||
|
|
||||||
/datum/martial_art/krav_maga/disarm_act(mob/living/attacker, mob/living/defender)
|
/datum/martial_art/kaza_ruk/disarm_act(mob/living/attacker, mob/living/defender)
|
||||||
if(defender.check_block(attacker, 0, attacker.name, UNARMED_ATTACK))
|
if(defender.check_block(attacker, 0, attacker.name, UNARMED_ATTACK))
|
||||||
return MARTIAL_ATTACK_FAIL
|
return MARTIAL_ATTACK_FAIL
|
||||||
if(check_streak(attacker, defender))
|
if(check_streak(attacker, defender))
|
||||||
@@ -208,22 +209,65 @@
|
|||||||
)
|
)
|
||||||
to_chat(attacker, span_danger("You disarm [defender]!"))
|
to_chat(attacker, span_danger("You disarm [defender]!"))
|
||||||
playsound(defender, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
|
playsound(defender, 'sound/items/weapons/thudswoosh.ogg', 50, TRUE, -1)
|
||||||
log_combat(attacker, defender, "disarmed (Krav Maga)", addition = "(disarmed of [stuff_in_hand])")
|
log_combat(attacker, defender, "disarmed (Kaza Ruk)", addition = "(disarmed of [stuff_in_hand])")
|
||||||
return MARTIAL_ATTACK_INVALID // normal shove
|
return MARTIAL_ATTACK_INVALID // normal shove
|
||||||
|
|
||||||
//Krav Maga Gloves
|
/// First, determine if we're going to execute our followup attack
|
||||||
|
|
||||||
/obj/item/clothing/gloves/krav_maga
|
/datum/martial_art/kaza_ruk/proc/blow_followup(mob/living/source, mob/living/target, damage, attack_type, obj/item/bodypart/affecting, final_armor_block, kicking, limb_sharpness)
|
||||||
abstract_type = /obj/item/clothing/gloves/krav_maga
|
SIGNAL_HANDLER
|
||||||
|
|
||||||
|
if(!prob(50))
|
||||||
|
return
|
||||||
|
|
||||||
|
addtimer(CALLBACK(src, PROC_REF(execute_followup), source, target, damage, attack_type, affecting, final_armor_block, kicking, limb_sharpness), 0.25 SECONDS)
|
||||||
|
|
||||||
|
/// After our delay, do the followup.
|
||||||
|
|
||||||
|
/datum/martial_art/kaza_ruk/proc/execute_followup(mob/living/source, mob/living/target, damage, attack_type, obj/item/bodypart/affecting, final_armor_block, kicking, limb_sharpness)
|
||||||
|
if(QDELETED(source) || QDELETED(target))
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!source.Adjacent(target))
|
||||||
|
return
|
||||||
|
|
||||||
|
var/tail_usage = FALSE
|
||||||
|
var/kick_language = "an axe kick"
|
||||||
|
var/strike_language = "an elbow strike"
|
||||||
|
if(ishuman(source))
|
||||||
|
var/mob/living/carbon/possible_human = source
|
||||||
|
var/obj/item/organ/tail/lizard/possible_lizard_tail = possible_human.get_organ_slot(ORGAN_SLOT_EXTERNAL_TAIL)
|
||||||
|
if(possible_lizard_tail)
|
||||||
|
tail_usage = TRUE
|
||||||
|
kick_language = "a helmsplitter tail strike"
|
||||||
|
strike_language = "a whiplash tail spin"
|
||||||
|
|
||||||
|
source.visible_message(
|
||||||
|
span_warning("[source] follows up with [kicking ? kick_language : strike_language] against [target]!"),
|
||||||
|
span_notice("You deliver [kicking ? kick_language : strike_language] against [target]!"),
|
||||||
|
span_hear("You hear a sickening sound of flesh hitting flesh!"),
|
||||||
|
)
|
||||||
|
if(tail_usage)
|
||||||
|
source.emote(kicking ? "flip" : "spin")
|
||||||
|
playsound(source, 'sound/effects/hit_punch.ogg', 50, TRUE, -1)
|
||||||
|
source.do_attack_animation(target, ATTACK_EFFECT_KICK)
|
||||||
|
target.apply_damage(round(damage/3,1), attack_type, affecting, final_armor_block, wound_bonus = damage) //Ostensibly, apply a third of our damage again // We're not being too fussy about limb bonuses for this
|
||||||
|
log_combat(source, target, "auto-followup strike (Kaza Ruk)")
|
||||||
|
|
||||||
|
//Kaza Ruk Gloves
|
||||||
|
|
||||||
|
/obj/item/clothing/gloves/kaza_ruk
|
||||||
|
abstract_type = /obj/item/clothing/gloves/kaza_ruk
|
||||||
clothing_traits = list(TRAIT_FAST_CUFFING)
|
clothing_traits = list(TRAIT_FAST_CUFFING)
|
||||||
|
|
||||||
/obj/item/clothing/gloves/krav_maga/Initialize(mapload)
|
/obj/item/clothing/gloves/kaza_ruk/Initialize(mapload)
|
||||||
. = ..()
|
. = ..()
|
||||||
AddComponent(/datum/component/martial_art_giver, /datum/martial_art/krav_maga)
|
AddComponent(/datum/component/martial_art_giver, /datum/martial_art/kaza_ruk)
|
||||||
|
|
||||||
/obj/item/clothing/gloves/krav_maga/sec//more obviously named, given to sec
|
/obj/item/clothing/gloves/kaza_ruk/sec//more obviously named, given to sec
|
||||||
name = "krav maga gloves"
|
name = "kaza ruk gloves"
|
||||||
desc = "These gloves can teach you to perform Krav Maga using nanochips."
|
desc = "These gloves seem to guide you through a non-lizardperson friendly variant of the Tiziran martial art, Kaza Ruk. \
|
||||||
|
You're not entirely sure how they do that. Probably nanites."
|
||||||
icon_state = "fightgloves"
|
icon_state = "fightgloves"
|
||||||
greyscale_colors = "#c41e0d"
|
greyscale_colors = "#c41e0d"
|
||||||
cold_protection = HANDS
|
cold_protection = HANDS
|
||||||
@@ -232,9 +276,9 @@
|
|||||||
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
||||||
resistance_flags = NONE
|
resistance_flags = NONE
|
||||||
|
|
||||||
/obj/item/clothing/gloves/krav_maga/combatglovesplus
|
/obj/item/clothing/gloves/kaza_ruk/combatglovesplus
|
||||||
name = "combat gloves plus"
|
name = "combat gloves plus"
|
||||||
desc = "These tactical gloves are fireproof and electrically insulated, and through the use of nanochip technology will teach you the martial art of krav maga."
|
desc = "These tactical gloves are fireproof and electrically insulated. These gloves seem to guide you through a non-lizardperson friendly variant of the Tiziran martial art, Kaza Ruk."
|
||||||
icon_state = "black"
|
icon_state = "black"
|
||||||
greyscale_colors = "#2f2e31"
|
greyscale_colors = "#2f2e31"
|
||||||
siemens_coefficient = 0
|
siemens_coefficient = 0
|
||||||
@@ -244,9 +288,9 @@
|
|||||||
heat_protection = HANDS
|
heat_protection = HANDS
|
||||||
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
||||||
resistance_flags = NONE
|
resistance_flags = NONE
|
||||||
armor_type = /datum/armor/krav_maga_combatglovesplus
|
armor_type = /datum/armor/kaza_ruk_combatglovesplus
|
||||||
|
|
||||||
/datum/armor/krav_maga_combatglovesplus
|
/datum/armor/kaza_ruk_combatglovesplus
|
||||||
bio = 90
|
bio = 90
|
||||||
fire = 80
|
fire = 80
|
||||||
acid = 50
|
acid = 50
|
||||||
41
code/game/objects/items/implants/implant_kaza_ruk.dm
Normal file
41
code/game/objects/items/implants/implant_kaza_ruk.dm
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/obj/item/implant/kaza_ruk
|
||||||
|
name = "kaza ruk implant"
|
||||||
|
desc = "Teaches you the Tiziran martial arts of Kaza Ruk in 5 short instructional videos beamed directly into your eyeballs."
|
||||||
|
icon = 'icons/obj/scrolls.dmi'
|
||||||
|
icon_state ="scroll2"
|
||||||
|
/// The martial art style this implant teaches.
|
||||||
|
var/datum/martial_art/kaza_ruk/style
|
||||||
|
|
||||||
|
/obj/item/implant/kaza_ruk/get_data()
|
||||||
|
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||||
|
<b>Name:</b> Kaza Ruk Implant<BR>
|
||||||
|
<b>Life:</b> 4 hours after death of host<BR>
|
||||||
|
<b>Implant Details:</b> <BR>
|
||||||
|
<b>Function:</b> Teaches even the clumsiest host the arts of Kaza Ruk."}
|
||||||
|
return dat
|
||||||
|
|
||||||
|
/obj/item/implant/kaza_ruk/Initialize(mapload)
|
||||||
|
. = ..()
|
||||||
|
style = new(src)
|
||||||
|
|
||||||
|
/obj/item/implant/kaza_ruk/Destroy()
|
||||||
|
QDEL_NULL(style)
|
||||||
|
return ..()
|
||||||
|
|
||||||
|
/obj/item/implant/kaza_ruk/activate()
|
||||||
|
. = ..()
|
||||||
|
if(isnull(imp_in.mind))
|
||||||
|
return
|
||||||
|
if(style.unlearn(imp_in))
|
||||||
|
return
|
||||||
|
|
||||||
|
style.teach(imp_in)
|
||||||
|
|
||||||
|
/obj/item/implanter/kaza_ruk
|
||||||
|
name = "implanter (kaza ruk)"
|
||||||
|
imp_type = /obj/item/implant/kaza_ruk
|
||||||
|
|
||||||
|
/obj/item/implantcase/kaza_ruk
|
||||||
|
name = "implant case - 'Kaza Ruk'"
|
||||||
|
desc = "A glass case containing an implant that can teach the user the Tiziran martial arts of Kaza Ruk."
|
||||||
|
imp_type = /obj/item/implant/kaza_ruk
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
/obj/item/implant/krav_maga
|
|
||||||
name = "krav maga implant"
|
|
||||||
desc = "Teaches you the arts of Krav Maga in 5 short instructional videos beamed directly into your eyeballs."
|
|
||||||
icon = 'icons/obj/scrolls.dmi'
|
|
||||||
icon_state ="scroll2"
|
|
||||||
/// The martial art style this implant teaches.
|
|
||||||
var/datum/martial_art/krav_maga/style
|
|
||||||
|
|
||||||
/obj/item/implant/krav_maga/get_data()
|
|
||||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
|
||||||
<b>Name:</b> Krav Maga Implant<BR>
|
|
||||||
<b>Life:</b> 4 hours after death of host<BR>
|
|
||||||
<b>Implant Details:</b> <BR>
|
|
||||||
<b>Function:</b> Teaches even the clumsiest host the arts of Krav Maga."}
|
|
||||||
return dat
|
|
||||||
|
|
||||||
/obj/item/implant/krav_maga/Initialize(mapload)
|
|
||||||
. = ..()
|
|
||||||
style = new(src)
|
|
||||||
|
|
||||||
/obj/item/implant/krav_maga/Destroy()
|
|
||||||
QDEL_NULL(style)
|
|
||||||
return ..()
|
|
||||||
|
|
||||||
/obj/item/implant/krav_maga/activate()
|
|
||||||
. = ..()
|
|
||||||
if(isnull(imp_in.mind))
|
|
||||||
return
|
|
||||||
if(style.unlearn(imp_in))
|
|
||||||
return
|
|
||||||
|
|
||||||
style.teach(imp_in)
|
|
||||||
|
|
||||||
/obj/item/implanter/krav_maga
|
|
||||||
name = "implanter (krav maga)"
|
|
||||||
imp_type = /obj/item/implant/krav_maga
|
|
||||||
|
|
||||||
/obj/item/implantcase/krav_maga
|
|
||||||
name = "implant case - 'Krav Maga'"
|
|
||||||
desc = "A glass case containing an implant that can teach the user the arts of Krav Maga."
|
|
||||||
imp_type = /obj/item/implant/krav_maga
|
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
new /obj/item/clothing/suit/armor/vest/warden/alt(src)
|
new /obj/item/clothing/suit/armor/vest/warden/alt(src)
|
||||||
new /obj/item/clothing/under/rank/security/warden/formal(src)
|
new /obj/item/clothing/under/rank/security/warden/formal(src)
|
||||||
new /obj/item/clothing/under/rank/security/warden/skirt(src)
|
new /obj/item/clothing/under/rank/security/warden/skirt(src)
|
||||||
new /obj/item/clothing/gloves/krav_maga/sec(src)
|
new /obj/item/clothing/gloves/kaza_ruk/sec(src)
|
||||||
new /obj/item/clothing/glasses/hud/security/sunglasses(src)
|
new /obj/item/clothing/glasses/hud/security/sunglasses(src)
|
||||||
new /obj/item/clothing/mask/gas/sechailer(src)
|
new /obj/item/clothing/mask/gas/sechailer(src)
|
||||||
|
|
||||||
|
|||||||
@@ -301,7 +301,7 @@
|
|||||||
new /obj/item/clothing/head/helmet/marine/pmc(src)
|
new /obj/item/clothing/head/helmet/marine/pmc(src)
|
||||||
new /obj/item/clothing/mask/gas/sechailer(src)
|
new /obj/item/clothing/mask/gas/sechailer(src)
|
||||||
new /obj/item/clothing/glasses/night(src) // 3~ TC
|
new /obj/item/clothing/glasses/night(src) // 3~ TC
|
||||||
new /obj/item/clothing/gloves/krav_maga/combatglovesplus(src) //5TC
|
new /obj/item/clothing/gloves/kaza_ruk/combatglovesplus(src) //5TC
|
||||||
new /obj/item/clothing/shoes/jackboots(src)
|
new /obj/item/clothing/shoes/jackboots(src)
|
||||||
new /obj/item/storage/belt/military/assault/fisher(src) //items in this belt easily costs 18 TC
|
new /obj/item/storage/belt/military/assault/fisher(src) //items in this belt easily costs 18 TC
|
||||||
|
|
||||||
|
|||||||
@@ -580,7 +580,7 @@
|
|||||||
name = "Random martial arts"
|
name = "Random martial arts"
|
||||||
description = "Everyone learns a random martial art!"
|
description = "Everyone learns a random martial art!"
|
||||||
blacklisted_maps = list(/datum/lazy_template/deathmatch/meatower)
|
blacklisted_maps = list(/datum/lazy_template/deathmatch/meatower)
|
||||||
// krav maga excluded because its too common and too simple, mushpunch excluded because its horrible and not even funny
|
// kaza ruk excluded because its too common and too simple, mushpunch excluded because its horrible and not even funny
|
||||||
var/static/list/weighted_martial_arts = list(
|
var/static/list/weighted_martial_arts = list(
|
||||||
// common
|
// common
|
||||||
/datum/martial_art/cqc = 30,
|
/datum/martial_art/cqc = 30,
|
||||||
|
|||||||
@@ -31,10 +31,10 @@
|
|||||||
item = /obj/item/clothing/gloves/combat
|
item = /obj/item/clothing/gloves/combat
|
||||||
cost = 1
|
cost = 1
|
||||||
|
|
||||||
/datum/uplink_item/spy_unique/krav_maga
|
/datum/uplink_item/spy_unique/kaza_ruk
|
||||||
name = "Combat Gloves Plus"
|
name = "Combat Gloves Plus"
|
||||||
desc = "A pair of combat gloves plus. They're insulated AND you can do martial arts with it!"
|
desc = "A pair of combat gloves plus. They're insulated AND you can do martial arts with it!"
|
||||||
item = /obj/item/clothing/gloves/krav_maga/combatglovesplus
|
item = /obj/item/clothing/gloves/kaza_ruk/combatglovesplus
|
||||||
|
|
||||||
/datum/uplink_item/spy_unique/tackle_gloves
|
/datum/uplink_item/spy_unique/tackle_gloves
|
||||||
name = "Guerrilla Gloves"
|
name = "Guerrilla Gloves"
|
||||||
|
|||||||
@@ -1757,7 +1757,7 @@
|
|||||||
#include "code\datums\martial\boxing.dm"
|
#include "code\datums\martial\boxing.dm"
|
||||||
#include "code\datums\martial\cqc.dm"
|
#include "code\datums\martial\cqc.dm"
|
||||||
#include "code\datums\martial\junglearts.dm"
|
#include "code\datums\martial\junglearts.dm"
|
||||||
#include "code\datums\martial\krav_maga.dm"
|
#include "code\datums\martial\kaza_ruk.dm"
|
||||||
#include "code\datums\martial\mushpunch.dm"
|
#include "code\datums\martial\mushpunch.dm"
|
||||||
#include "code\datums\martial\plasma_fist.dm"
|
#include "code\datums\martial\plasma_fist.dm"
|
||||||
#include "code\datums\martial\psychotic_brawl.dm"
|
#include "code\datums\martial\psychotic_brawl.dm"
|
||||||
@@ -2735,7 +2735,7 @@
|
|||||||
#include "code\game\objects\items\implants\implant_deathrattle.dm"
|
#include "code\game\objects\items\implants\implant_deathrattle.dm"
|
||||||
#include "code\game\objects\items\implants\implant_explosive.dm"
|
#include "code\game\objects\items\implants\implant_explosive.dm"
|
||||||
#include "code\game\objects\items\implants\implant_freedom.dm"
|
#include "code\game\objects\items\implants\implant_freedom.dm"
|
||||||
#include "code\game\objects\items\implants\implant_krav_maga.dm"
|
#include "code\game\objects\items\implants\implant_kaza_ruk.dm"
|
||||||
#include "code\game\objects\items\implants\implant_mindshield.dm"
|
#include "code\game\objects\items\implants\implant_mindshield.dm"
|
||||||
#include "code\game\objects\items\implants\implant_misc.dm"
|
#include "code\game\objects\items\implants\implant_misc.dm"
|
||||||
#include "code\game\objects\items\implants\implant_spell.dm"
|
#include "code\game\objects\items\implants\implant_spell.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user