From 15bfb052d76ae152a0032bf80c2c48e61b7ba839 Mon Sep 17 00:00:00 2001 From: Alberyk Date: Sun, 10 Mar 2019 18:38:00 -0300 Subject: [PATCH] Martial arts improvements and additions (#6094) -adds framework for weapons based martial arts, implementing a very basic swordsmanship -makes the martial art books more modular -fixes some minor issues with some of the martial art code -adds amohdan swordsmen gear, to be used in a future event/sold by the merchant - fixes #6083 --- aurorastation.dme | 1 + code/_onclick/item_attack.dm | 9 ++- code/datums/trading/misc.dm | 2 + .../highly visible and dangerous weapons.dm | 4 +- .../objects/items/weapons/material/swords.dm | 48 ++++++++++++++- code/modules/clothing/head/helmet.dm | 13 +++++ code/modules/clothing/suits/armor.dm | 15 ++++- code/modules/martial_arts/martial.dm | 25 +++++++- code/modules/martial_arts/plasma_fist.dm | 15 +---- code/modules/martial_arts/skrell.dm | 20 ++----- code/modules/martial_arts/sleeping_carp.dm | 19 +----- code/modules/martial_arts/sol_combat.dm | 44 ++++---------- code/modules/martial_arts/swordsmanship.dm | 11 ++++ code/modules/martial_arts/tajara.dm | 22 ++----- code/modules/martial_arts/unathi.dm | 21 ++----- code/modules/martial_arts/vaurca.dm | 55 ++++++++---------- code/modules/martial_arts/wrestling.dm | 14 +---- .../mob/living/carbon/human/human_defense.dm | 9 +-- html/changelogs/alberyk-martial.yml | 6 ++ icons/obj/sword.dmi | Bin 13726 -> 14921 bytes icons/obj/tajara_items.dmi | Bin 32215 -> 36451 bytes 21 files changed, 187 insertions(+), 166 deletions(-) create mode 100644 code/modules/martial_arts/swordsmanship.dm create mode 100644 html/changelogs/alberyk-martial.yml diff --git a/aurorastation.dme b/aurorastation.dme index a7b40d6b48f..b0135610e24 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1544,6 +1544,7 @@ #include "code\modules\martial_arts\skrell.dm" #include "code\modules\martial_arts\sleeping_carp.dm" #include "code\modules\martial_arts\sol_combat.dm" +#include "code\modules\martial_arts\swordsmanship.dm" #include "code\modules\martial_arts\tajara.dm" #include "code\modules\martial_arts\unathi.dm" #include "code\modules\martial_arts\vaurca.dm" diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index d741a25cab0..1f29c59efa9 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -91,10 +91,17 @@ avoid code duplication. This includes items that may sometimes act as a standard var/power = force if(HULK in user.mutations) power *= 2 - if(istype(user, /mob/living/carbon/human)) + if(ishuman(user)) var/mob/living/carbon/human/X = user if(X.gloves && istype(X.gloves,/obj/item/clothing/gloves/force)) var/obj/item/clothing/gloves/force/G = X.gloves power *= G.amplification + + if(ishuman(target)) + if(X.martial_art && X.martial_art.weapon_affinity && istype(src, X.martial_art.weapon_affinity)) + perform_technique(target, X, hit_zone) + return target.hit_with_weapon(src, user, power, hit_zone) +/obj/item/proc/perform_technique(var/mob/living/carbon/human/target, var/mob/living/carbon/human/user, var/target_zone) //used when weapons have special interactions with martial arts + return \ No newline at end of file diff --git a/code/datums/trading/misc.dm b/code/datums/trading/misc.dm index b41b467d52d..94dfd0500e3 100644 --- a/code/datums/trading/misc.dm +++ b/code/datums/trading/misc.dm @@ -141,6 +141,7 @@ /obj/item/clothing/head/plaguedoctorhat = TRADER_THIS_TYPE, /obj/item/clothing/head/helmet/unathi = TRADER_THIS_TYPE, /obj/item/clothing/head/helmet/tank = TRADER_ALL, + /obj/item/clothing/head/helmet/tajara = TRADER_THIS_TYPE, /obj/item/clothing/glasses/monocle = TRADER_THIS_TYPE, /obj/item/clothing/mask/smokable/pipe = TRADER_THIS_TYPE, /obj/item/clothing/mask/gas/plaguedoctor = TRADER_THIS_TYPE, @@ -150,6 +151,7 @@ /obj/item/clothing/suit/wizrobe/magusred = TRADER_THIS_TYPE, /obj/item/clothing/suit/wizrobe/magusblue = TRADER_THIS_TYPE, /obj/item/clothing/suit/armor/unathi = TRADER_THIS_TYPE, + /obj/item/clothing/suit/armor/tajara = TRADER_THIS_TYPE, /obj/item/clothing/under/gladiator = TRADER_THIS_TYPE, /obj/item/clothing/under/kilt = TRADER_THIS_TYPE, /obj/item/clothing/under/redcoat = TRADER_THIS_TYPE, diff --git a/code/datums/uplink/highly visible and dangerous weapons.dm b/code/datums/uplink/highly visible and dangerous weapons.dm index e403d458c5b..1004d10141c 100644 --- a/code/datums/uplink/highly visible and dangerous weapons.dm +++ b/code/datums/uplink/highly visible and dangerous weapons.dm @@ -77,12 +77,12 @@ /datum/uplink_item/item/visible_weapons/wrestling name = "Wrestling Manual" item_cost = 6 - path = /obj/item/wrestling_manual + path = /obj/item/martial_manual/wrestling /datum/uplink_item/item/visible_weapons/solcom name = "SolCom Manual" item_cost = 6 - path = /obj/item/sol_combat_manual + path = /obj/item/martial_manual /datum/uplink_item/item/visible_weapons/heavysniper name = "Anti-materiel Rifle" diff --git a/code/game/objects/items/weapons/material/swords.dm b/code/game/objects/items/weapons/material/swords.dm index 2e640352af1..0da54ef43b3 100644 --- a/code/game/objects/items/weapons/material/swords.dm +++ b/code/game/objects/items/weapons/material/swords.dm @@ -12,16 +12,51 @@ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") hitsound = 'sound/weapons/bladeslice.ogg' can_embed = 0 - var/parry_chance = 50 + var/parry_chance = 40 /obj/item/weapon/material/sword/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") + var/parry_bonus = 1 - if(default_parry_check(user, attacker, damage_source) && prob(parry_chance)) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.martial_art && H.martial_art.weapon_affinity && istype(src, H.martial_art.weapon_affinity)) + parry_bonus = H.martial_art.parry_multiplier + + if(default_parry_check(user, attacker, damage_source) && prob(parry_chance * parry_bonus)) user.visible_message("\The [user] parries [attack_text] with \the [src]!") playsound(user.loc, 'sound/weapons/punchmiss.ogg', 50, 1) return 1 return 0 +/obj/item/weapon/material/sword/perform_technique(var/mob/living/carbon/human/target, var/mob/living/carbon/human/user, var/target_zone) + var/armor_reduction = target.run_armor_check(target_zone,"melee") + var/obj/item/organ/external/affecting = target.get_organ(target_zone) + if(!affecting) + return + + user.do_attack_animation(target) + + if(target_zone == "head" || target_zone == "eyes" || target_zone == "mouth") + if(prob(70 - armor_reduction)) + target.eye_blurry += 5 + target.confused += 10 + return TRUE + + if(target_zone == "r_arm" || target_zone == "l_arm" || target_zone == "r_hand" || target_zone == "l_hand") + if(prob(80 - armor_reduction)) + if(target_zone == "r_arm" || target_zone == "r_hand") + target.drop_r_hand() + else + target.drop_l_hand() + return TRUE + + if(target_zone == "r_feet" || target_zone == "l_feet" || target_zone == "r_leg" || target_zone == "l_leg") + if(prob(60 - armor_reduction)) + target.Weaken(5) + return TRUE + + return FALSE + /obj/item/weapon/material/sword/katana name = "katana" desc = "Woefully underpowered in D20. This one looks pretty sharp." @@ -104,3 +139,12 @@ item_state = "gladius" contained_sprite = 1 slot_flags = SLOT_BELT + +/obj/item/weapon/material/sword/amohdan_sword + name = "amohdan blade" + desc = "A tajaran sword, commonly used by the swordsmen of the island of Amohda." + icon = 'icons/obj/sword.dmi' + icon_state = "amohdan_sword" + item_state = "amohdan_sword" + contained_sprite = 1 + slot_flags = SLOT_BELT \ No newline at end of file diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 023b7383c63..b785398a483 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -248,3 +248,16 @@ body_parts_covered = HEAD|FACE|EYES flags_inv = HIDEEARS|HIDEEYES|HIDEFACE armor = list(melee = 50, bullet = 30, laser = 30, energy = 15, bomb = 40, bio = 0, rad = 0) + +/obj/item/clothing/head/helmet/tajara + name = "amohdan swordsmen helmet" + desc = "A helmet used by the traditional warriors of Amohhda." + icon = 'icons/obj/tajara_items.dmi' + icon_state = "amohdan_helmet" + item_state = "amohdan_helmet" + contained_sprite = TRUE + body_parts_covered = HEAD|FACE|EYES + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR + species_restricted = list("Tajara") + armor = list(melee = 60, bullet = 50, laser = 20, energy = 10, bomb = 5, bio = 0, rad = 0) + allow_hair_covering = FALSE \ No newline at end of file diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 8f65cfe0b3c..5ff51e7ffe9 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -498,10 +498,23 @@ icon = 'icons/obj/unathi_items.dmi' icon_state = "unathi_armor" item_state = "unathi_armor" - contained_sprite = 1 + contained_sprite = TRUE species_restricted = list("Unathi") armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) +/obj/item/clothing/suit/armor/tajara + name = "amohdan swordsmen armor" + desc = "A suit of armor used by the traditional warriors of Amohhda." + icon = 'icons/obj/tajara_items.dmi' + icon_state = "amohdan_armor" + item_state = "amohdan_armor" + contained_sprite = TRUE + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS + allowed = list(/obj/item/weapon/gun,/obj/item/weapon/material/sword) + flags_inv = HIDEJUMPSUIT|HIDETAIL + species_restricted = list("Tajara") + armor = list(melee = 60, bullet = 50, laser = 20, energy = 10, bomb = 5, bio = 0, rad = 0) + //tau ceti foreign legion armor /obj/item/clothing/suit/storage/vest/legion diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm index 890bcd4a136..e1f9950220f 100644 --- a/code/modules/martial_arts/martial.dm +++ b/code/modules/martial_arts/martial.dm @@ -9,6 +9,9 @@ var/no_guns = FALSE //set to TRUE to prevent users of this style from using guns var/no_guns_message = "" //message to tell the style user if they try and use a gun while no_guns = TRUE (DISHONORABRU!) var/temporary = 0 + var/weapon_affinity //if this martial art has any interaction with a weapon, also spawns said weapon when the manual is used + var/parry_multiplier = 1 //if this martial art increases the chance of parrying with the weapon + var/list/possible_weapons //if any weapon is spawned when you use the martial art manual /datum/martial_art/proc/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) return 0 @@ -165,4 +168,24 @@ if(!A) break A.set_dir(i) - playsound(A.loc, 'sound/weapons/punch1.ogg', 15, 1, -1) \ No newline at end of file + playsound(A.loc, 'sound/weapons/punch1.ogg', 15, 1, -1) + +/obj/item/martial_manual + name = "SolCom manual" + desc = "A manual designated to teach the user about the martial art of solarian combat, a style based on traditional human martial arts." + icon = 'icons/obj/library.dmi' + icon_state ="cqcmanual" + var/martial_art = /datum/martial_art/sol_combat + +/obj/item/martial_manual/attack_self(mob/user as mob) + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + var/datum/martial_art/F = new martial_art(null) + F.teach(H) + to_chat(H, "You have learned the martial art of [F.name].") + if(F.possible_weapons) + var/weapon = pick(F.possible_weapons) + var/obj/item/W = new weapon(get_turf(user)) + H.put_in_hands(W) + qdel(src) \ No newline at end of file diff --git a/code/modules/martial_arts/plasma_fist.dm b/code/modules/martial_arts/plasma_fist.dm index 2665468173c..4e99aee6644 100644 --- a/code/modules/martial_arts/plasma_fist.dm +++ b/code/modules/martial_arts/plasma_fist.dm @@ -107,20 +107,9 @@ to_chat(usr, "Throwback: Disarm Harm Disarm. Throws the target and an item at them.") to_chat(usr, "The Plasma Fist: Harm Disarm Disarm Disarm Harm. Knocks the brain out of the opponent and gibs their body.") -/obj/item/plasma_fist_scroll +/obj/item/martial_manual/plasma_fist name = "frayed scroll" desc = "An aged and frayed scrap of paper written in shifting runes. There are hand-drawn illustrations of pugilism." icon = 'icons/obj/wizard.dmi' icon_state ="scroll2" - -/obj/item/plasma_fist_scroll/attack_self(mob/user as mob) - if(!ishuman(user)) - return - var/mob/living/carbon/human/H = user - var/datum/martial_art/plasma_fist/F = new/datum/martial_art/plasma_fist(null) - F.teach(H) - to_chat(H, "You have learned the ancient martial art of Plasma Fist.") - visible_message("[src] lights up in fire and quickly burns to ash.") - new /obj/effect/decal/cleanable/ash(get_turf(src)) - user.drop_from_inventory(src,get_turf(src)) - qdel(src) \ No newline at end of file + martial_art = /datum/martial_art/plasma_fist diff --git a/code/modules/martial_arts/skrell.dm b/code/modules/martial_arts/skrell.dm index bea3f6d2f46..6fe745868f3 100644 --- a/code/modules/martial_arts/skrell.dm +++ b/code/modules/martial_arts/skrell.dm @@ -78,22 +78,6 @@ datum/martial_art/karak_virul/grab_act(var/mob/living/carbon/human/A, var/mob/li basic_hit(A,D) return 1 - -/obj/item/karak_virul_manual - name = "karak virul manual" - desc = "A manual designated to teach the user about the skrellian martial art of Karak Virul." - icon = 'icons/obj/library.dmi' - icon_state ="cqcmanual" - -/obj/item/karak_virul_manual/attack_self(mob/user as mob) - if(!ishuman(user)) - return - var/mob/living/carbon/human/H = user - var/datum/martial_art/karak_virul/F = new/datum/martial_art/karak_virul(null) - F.teach(H) - to_chat(H, "You have learned the martial art of Karak Virul.") - qdel(src) - /datum/martial_art/karak_virul/proc/karak_virul_help() set name = "Recall Teachings" set desc = "Remember the martial techniques of the Karak Virul." @@ -104,3 +88,7 @@ datum/martial_art/karak_virul/grab_act(var/mob/living/carbon/human/A, var/mob/li to_chat(usr, "Leg Sweep: Disarm Harm Disarm.. Trips the victim, rendering them prone and unable to move for a short time.") to_chat(usr, "Dislocating Strike: Harm Disarm Disarm Disarm. Delivers a strong punch that can dislocate your target's limb.") +/obj/item/martial_manual/skrell + name = "karak virul manual" + desc = "A manual designated to teach the user about the skrellian martial art of Karak Virul." + martial_art = /datum/martial_art/karak_virul \ No newline at end of file diff --git a/code/modules/martial_arts/sleeping_carp.dm b/code/modules/martial_arts/sleeping_carp.dm index c389ccaf86e..b32caa9da9e 100644 --- a/code/modules/martial_arts/sleeping_carp.dm +++ b/code/modules/martial_arts/sleeping_carp.dm @@ -122,24 +122,9 @@ to_chat(usr, "Head Kick: Disarm Harm Harm. Decent damage, forces opponent to drop item in hand.") to_chat(usr, "Elbow Drop: Harm Disarm Harm Disarm Harm. Opponent must be on the ground. Deals huge damage, instantly kills anyone in critical condition.") -/obj/item/sleeping_carp_scroll +/obj/item/martial_manual/sleeping_carp name = "mysterious scroll" desc = "A scroll filled with strange markings. It seems to be drawings of some sort of martial art." icon = 'icons/obj/wizard.dmi' icon_state = "scroll2" - -/obj/item/sleeping_carp_scroll/attack_self(mob/living/carbon/human/user as mob) - if(!istype(user) || !user) - return - to_chat(user, "You have learned the ancient martial art of the Sleeping Carp! \ - Your hand-to-hand combat has become much more effective, and you are now able to deflect any projectiles directed toward you. \ - However, you are also unable to use any ranged weaponry. \ - You can learn more about your newfound art by using the Recall Teachings verb in the Sleeping Carp tab.") - - - var/datum/martial_art/the_sleeping_carp/theSleepingCarp = new(null) - theSleepingCarp.teach(user) - visible_message("[src] lights up in fire and quickly burns to ash.") - new /obj/effect/decal/cleanable/ash(get_turf(src)) - user.drop_from_inventory(src,get_turf(src)) - qdel(src) \ No newline at end of file + martial_art = /datum/martial_art/the_sleeping_carp \ No newline at end of file diff --git a/code/modules/martial_arts/sol_combat.dm b/code/modules/martial_arts/sol_combat.dm index d0012c68ec4..07f2dbe3c68 100644 --- a/code/modules/martial_arts/sol_combat.dm +++ b/code/modules/martial_arts/sol_combat.dm @@ -25,7 +25,7 @@ A.do_attack_animation(D) if(D.stat || D.weakened) return 0 - D.visible_message("[A] leg sweeps [D]!") + A.visible_message("[A] leg sweeps [D]!") playsound(get_turf(A), "swing_hit", 50, 1, -1) D.apply_damage(5, BRUTE) D.Weaken(2) @@ -33,7 +33,7 @@ /datum/martial_art/sol_combat/proc/quick_choke(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)//is actually lung punch A.do_attack_animation(D) - D.visible_message("[A] pounds [D] on the chest!") + A.visible_message("[A] pounds [D] on the chest!") playsound(get_turf(A), 'sound/weapons/punch1.ogg', 50, 1, -1) if(!(D.species.flags & NO_BREATHE)) D.losebreath += 5 @@ -42,7 +42,7 @@ /datum/martial_art/sol_combat/proc/neck_chop(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) A.do_attack_animation(D) - D.visible_message("[A] karate chops [D]'s neck!") + A.visible_message("[A] karate chops [D]'s neck!") playsound(get_turf(A), "punch", 50, 1, -1) D.apply_damage(5, BRUTE) D.silent += 10 @@ -70,7 +70,7 @@ datum/martial_art/sol_combat/grab_act(var/mob/living/carbon/human/A, var/mob/liv else playsound(get_turf(D), "punch", 50, 1, -1) - D.visible_message("[A] [picked_hit_type] [D]!") + A.visible_message("[A] [picked_hit_type] [D]!") A.attack_log += text("\[[time_stamp()]\] ["[picked_hit_type]"] [D.name] ([D.ckey])") D.attack_log += text("\[[time_stamp()]\] ["Has Been [picked_hit_type]"] by [A.name] ([A.ckey])") msg_admin_attack("[key_name(A)] ["has [picked_hit_type]"] [key_name(D)] (JMP)",ckey=key_name(A),ckey_target=key_name(D)) @@ -88,39 +88,17 @@ datum/martial_art/sol_combat/grab_act(var/mob/living/carbon/human/A, var/mob/liv msg_admin_attack("[key_name(A)] disarmed [D.name] ([D.ckey]) (JMP)",ckey=key_name(D),ckey_target=key_name(A)) if(prob(60)) - if(D.hand) - if(istype(D.l_hand, /obj/item)) - var/obj/item/I = D.l_hand - D.drop_item() - A.put_in_hands(I) - else - if(istype(D.r_hand, /obj/item)) - var/obj/item/I = D.r_hand - D.drop_item() - A.put_in_hands(I) - D.visible_message("[A] has disarmed [D]!") - playsound(D, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + var/obj/item/I = D.get_active_hand() + if(I) + A.visible_message("[A] has disarmed [D]!") + playsound(D, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + D.drop_from_inventory(I) + A.put_in_hands(I) else - D.visible_message("[A] attempted to disarm [D]!") + A.visible_message("[A] attempted to disarm [D]!") playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1) return 1 -/obj/item/sol_combat_manual - name = "SolCom manual" - desc = "A manual designated to teach the user about the martial art of solarian combat, a style based on traditional human martial arts." - icon = 'icons/obj/library.dmi' - icon_state ="cqcmanual" - -/obj/item/sol_combat_manual/attack_self(mob/user as mob) - if(!ishuman(user)) - return - var/mob/living/carbon/human/H = user - var/datum/martial_art/sol_combat/F = new/datum/martial_art/sol_combat(null) - F.teach(H) - to_chat(H, "You have learned the martial art of Solarian Combat.") - qdel(src) - - /datum/martial_art/sol_combat/proc/sol_combat_help() set name = "Recall Teachings" set desc = "Remember the martial techniques of the Solarian Combat." diff --git a/code/modules/martial_arts/swordsmanship.dm b/code/modules/martial_arts/swordsmanship.dm new file mode 100644 index 00000000000..ba0124fdcdd --- /dev/null +++ b/code/modules/martial_arts/swordsmanship.dm @@ -0,0 +1,11 @@ +/datum/martial_art/swordsmanship + name = "Swordsmanship" + weapon_affinity = /obj/item/weapon/material/sword + parry_multiplier = 2 + possible_weapons = list(/obj/item/weapon/material/sword, /obj/item/weapon/material/sword/katana, /obj/item/weapon/material/sword/rapier) + +/obj/item/martial_manual/swordsmanship + name = "swordsmanship manual" + desc = "A manual containing basic swordsmanship instruction and techniques." + icon_state ="rulebook" + martial_art = /datum/martial_art/swordsmanship diff --git a/code/modules/martial_arts/tajara.dm b/code/modules/martial_arts/tajara.dm index 60bd8fa6638..58f9d080f77 100644 --- a/code/modules/martial_arts/tajara.dm +++ b/code/modules/martial_arts/tajara.dm @@ -81,7 +81,6 @@ basic_hit(A,D) return 1 - /datum/martial_art/baghrar/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) add_to_streak("D",D) if(check_streak(A,D)) @@ -89,22 +88,6 @@ basic_hit(A,D) return 1 - -/obj/item/baghrar_manual - name = "baghrar manual" - desc = "A manual designated to teach the user about the tajaran martial art of Baghrar." - icon = 'icons/obj/library.dmi' - icon_state ="cqcmanual" - -/obj/item/baghrar_manual/attack_self(mob/user as mob) - if(!ishuman(user)) - return - var/mob/living/carbon/human/H = user - var/datum/martial_art/baghrar/F = new/datum/martial_art/baghrar(null) - F.teach(H) - to_chat(H, "You have learned the martial art of Baqhrar.") - qdel(src) - /datum/martial_art/baghrar/proc/baghrar_help() set name = "Recall Teachings" set desc = "Remember the martial techniques of the Baghrar." @@ -115,3 +98,8 @@ to_chat(usr, "Claw Punch: Disarm Harm Harm. Hits your target with your claws, dealing damage and causing bleeding.") to_chat(usr, "Rrak'narrr Stab: Harm Harm Disarm Disarm. Stabs your target with your claws, dealing more damage based on how hurt they are.") +/obj/item/martial_manual/tajara + name = "baghrar manual" + desc = "A manual designated to teach the user about the tajaran martial art of Baghrar." + martial_art = /datum/martial_art/baghrar + diff --git a/code/modules/martial_arts/unathi.dm b/code/modules/martial_arts/unathi.dm index 695321aeeda..8ffcadea96c 100644 --- a/code/modules/martial_arts/unathi.dm +++ b/code/modules/martial_arts/unathi.dm @@ -88,21 +88,6 @@ var/atom/throw_target = get_edge_target_turf(D, get_dir(D, get_step_away(D, A))) D.throw_at(throw_target, 200, 4,A) -/obj/item/kis_khan_manual - name = "kis khan scroll" - desc = "A parched scroll.It seems to be drawings of some sort of martial art involving tails." - icon = 'icons/obj/wizard.dmi' - icon_state = "scroll2" - -/obj/item/kis_khan_manual/attack_self(mob/user as mob) - if(!ishuman(user)) - return - var/mob/living/carbon/human/H = user - var/datum/martial_art/kis_khan/F = new/datum/martial_art/kis_khan(null) - F.teach(H) - to_chat(H, "You have learned the martial art of Kis Khan.") - qdel(src) - /datum/martial_art/kis_khan/proc/kis_khan_help() set name = "Recall Teachings" set desc = "Remember the martial techniques of the Kis-khan." @@ -113,3 +98,9 @@ to_chat(usr, "Swift Disarm: Disarm Disarm Grab. Strikes your target's weapon, trying to disarm it from their hands.") to_chat(usr, "Hammering Strike: Disarm Harm Disarm. Delivers a strikes that will push the target away from you.") +/obj/item/martial_manual/unathi + name = "kis khan scroll" + desc = "A parched scroll.It seems to be drawings of some sort of martial art involving tails." + icon = 'icons/obj/wizard.dmi' + icon_state = "scroll2" + martial_art = /datum/martial_art/kis_khan \ No newline at end of file diff --git a/code/modules/martial_arts/vaurca.dm b/code/modules/martial_arts/vaurca.dm index a17ccafa1d2..ad663959b1e 100644 --- a/code/modules/martial_arts/vaurca.dm +++ b/code/modules/martial_arts/vaurca.dm @@ -56,45 +56,30 @@ /datum/martial_art/vkutet/proc/swift_bite(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) D.grabbedby(A,1) - var/obj/item/weapon/grab/G = A.get_active_hand() - if(G && prob(50)) - G.state = GRAB_AGGRESSIVE - D.visible_message("[A] gets a strong grip on [D]!") - if(isvaurca(A)) - A.bugbite() - qdel(G) + if(istype(A.get_active_hand(),/obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = A.get_active_hand() + if(G && G.affecting == D) + G.state = GRAB_AGGRESSIVE + D.visible_message("[A] gets a strong grip on [D]!") + if(isvaurca(A)) + A.bugbite() + qdel(G) return 1 /datum/martial_art/vkutet/proc/crushing_jaws(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(!isvaurca(A)) return 0 - if(istype(A.get_inactive_hand(),/obj/item/weapon/grab)) - D.grabbedby(A,1) - var/obj/item/weapon/grab/G = A.get_inactive_hand() - if(G.affecting == D) - if(G.affecting == D) - var/armor_block = D.run_armor_check(null, "melee") - A.visible_message("[A] crushes [D] with its mandibles!") - D.apply_damage(30, BRUTE, null, armor_block) - D.apply_effect(6, WEAKEN, armor_block) - qdel(G) + D.grabbedby(A,1) + if(istype(A.get_active_hand(),/obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = A.get_active_hand() + if(G && G.affecting == D) + var/armor_block = D.run_armor_check(null, "melee") + A.visible_message("[A] crushes [D] with its mandibles!") + D.apply_damage(30, BRUTE, null, armor_block) + D.apply_effect(6, WEAKEN, armor_block) + qdel(G) return 1 -/obj/item/vkutet_manual - name = "vk'utet data disk" - desc = "A data disk containing information about the vaurca fighting technice know as Vk'utet." - icon = 'icons/obj/vaurca_items.dmi' - icon_state = "harddisk" - -/obj/item/vkutet_manual/attack_self(mob/user as mob) - if(!ishuman(user)) - return - var/mob/living/carbon/human/H = user - var/datum/martial_art/vkutet/F = new/datum/martial_art/vkutet(null) - F.teach(H) - to_chat(H, "You have learned the martial art of Vk'utet.") - qdel(src) - /datum/martial_art/vkutet/proc/vkutet_help() set name = "Recall Teachings" set desc = "Remember the martial techniques of the Vk'utet." @@ -105,3 +90,9 @@ to_chat(usr, "Swift Bite: Disarm Disarm Grab. Quickly grabs your victim and bites them with your mandibles.") to_chat(usr, "Crushing Jaws: Harm Harm Disarm Grab. Grabs your victim and violently crushes them with your mandibles, inflicting heavy damage.") +/obj/item/martial_manual/vaurca + name = "vk'utet data disk" + desc = "A data disk containing information about the vaurca fighting technice know as Vk'utet." + icon = 'icons/obj/vaurca_items.dmi' + icon_state = "harddisk" + martial_art = /datum/martial_art/vkutet \ No newline at end of file diff --git a/code/modules/martial_arts/wrestling.dm b/code/modules/martial_arts/wrestling.dm index ffa3136746e..beeb6e4e881 100644 --- a/code/modules/martial_arts/wrestling.dm +++ b/code/modules/martial_arts/wrestling.dm @@ -62,17 +62,7 @@ to_chat(usr, "Suplex: Disarm someone you are grabbing. Suplexes your target to the floor. Greatly injures them and leaves both you and your target on the floor.") to_chat(usr, "Advanced grab: Grab. Passively causes pain when grabbing someone.") -/obj/item/wrestling_manual +/obj/item/martial_manual/wrestling name = "wrestling manual" desc = "A manual designated to teach the user about the art of wrestling." - icon = 'icons/obj/library.dmi' - icon_state ="cqcmanual" - -/obj/item/wrestling_manual/attack_self(mob/user as mob) - if(!ishuman(user)) - return - var/mob/living/carbon/human/H = user - var/datum/martial_art/wrestling/F = new/datum/martial_art/wrestling(null) - F.teach(H) - to_chat(H, "You have learned the martial art of wrestling.") - qdel(src) \ No newline at end of file + martial_art = /datum/martial_art/wrestling diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 7a294b30bed..81078a3a1ac 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -15,10 +15,11 @@ emp_act if(species_check) return species_check - if(martial_art && martial_art.deflection_chance) - if(prob(martial_art.deflection_chance)) - src.visible_message("\The [src] deflects \the [P]!") - return 0 + if(!is_physically_disabled()) + if(martial_art && martial_art.deflection_chance) + if(prob(martial_art.deflection_chance)) + src.visible_message("\The [src] deflects \the [P]!") + return 0 def_zone = check_zone(def_zone) if(!has_organ(def_zone)) diff --git a/html/changelogs/alberyk-martial.yml b/html/changelogs/alberyk-martial.yml new file mode 100644 index 00000000000..35ee40842b2 --- /dev/null +++ b/html/changelogs/alberyk-martial.yml @@ -0,0 +1,6 @@ +author: Alberyk, Kyres1 + +delete-after: True + +changes: + - rscadd: "Added some tajaran related gear to the merchant console." diff --git a/icons/obj/sword.dmi b/icons/obj/sword.dmi index 796d2d34888d5fa5978644dcfb6fe2db1672cd3c..d1d283466e75efaa8b16bdec9d057e62e3f43462 100644 GIT binary patch literal 14921 zcma*OWmH_v5;i(G0|X5oBxrEA-~@tua2Yg&5G*9F?HY)s&r zV9Q)J;Dem^E5i@+wrQ0||313cMu)XXjQ;=b>?Ji&_He@o8 zd9l}{kHVNHcy?iSL^3w+IWs$6)4ECNP=Dm^J;EK6DR9qRHc{{e9lt52CWNdk5dDJB zPGu+U?MV3N~~Jylu$u1`h_eM?_PfG zVyTA2tK0ZjNL9zKKrBxJnMEL)`*>PZ#t?3vslr&N#(21O8cu~@6H(qX4bC55(NtsV zF0gz)PC(r2OF)5FcBW)&@a#=TRkK2WGTz()FX&`R@>QeO}$-NnfLpQUPy!| zkNokQW^dF-3L4+Di@<`9t2Aw?wi67TmY)SOs>C!WK090Vn!t*RlgddLdqv4y`P-iH z{mb}`(Y-d~Eb`&`j_o)(@84GhjZDY$4aA2}Kp=XMvb^jo&-DEaf9T`M#Y5?uNWy-e zwad82-E>6Yf<(f%ptMJNV}>d%Qe@3C?E|{sxy(=UEb5{kuhgURC7SHLXr5xnaLSf) z#9&v7u=y;VL$CdbUY;mhnUNtT2L1DD=8dAn;NI(+)I~A7jiJ5EJMUv+-XX-XH;)Cq%{jGElJ9NxXdLo@~BlC$qpsbZ*|Fk{P+IZT(^`dsX_!+dW#9>{g| zI+DOCYpR4nYE;zJ$B50W&cjPA8Uc?3)B2CQ`ZC&J6CE@bL~(bbfw?ldOc>!pB?}q1 zX;GPZ%kwV275}J^mcs_+H0o_s4I4ypV^Kx(iAudqKXIot$4~JA_?Z~*+yk>}lBi#4 zbsy|)s32ICv=R^T+%~q0;d#lj?>Aw`Z`q!r`*{gt28F|)G7YDeYwaflS)=PXHhyO~ zcuUyNv8g8o<%13NH+F**h)cFg=`*Fow(}CsKW*lTjlwTHsVxr{e(o)LEGf9UR&8ex zRx_3MHiG)u%bK`tnXV$#;@4&%Q9|5|S4b zoJ3#Ryu49gp~_Fl#!9-GwniO34|jZ=dVxQ%`9^y4@~th%i&v(NQ*Vg3NyI5asq*@XX+ zX=(Ily_HmfdRjrt?aAPqH*d5qZmW%9PilyTnJq}y2CL+7^p$(?W@l%Me*B328+D)e z?#&yE{QP{Kses99z6er>yxQ7V@YDN~K^_x+I%?r}ZC@Ty+lY{myZ0wszwB^54AfGF zd7ovCr>3UL-As*+w#n1!Vy>^Rj|Wlw#UFi&p1R-n^~al1Q%3z^Y3IRkcdKqE#Lh|+ zqxtoq^P@xYC=N7zJy=_}=G!q=SzFtD#x>jz=`s4YyZY$~z>wbtC{r?rhSbWctH*`h z2x6d-aRnLUDt3!R6Y6w}IE^_ufqJiAp_3;J0E#l_OiWBHEhUU{Rb5kq0y3$8*Z${+ zZXzk~sF&Ocvi?bhvE{X?q`q zHOnkwcE>F@s>5VNP`P<{?AX}YMpYZj%ke`9==9Ay&}AF3So=lDenFYFy}ZQI_-%0l zqDqtLu{-b=*dgC>QQQzylam-C=X6p~(W?ix8)obdoCQt@ePBT6y6Q)fK>EELcx-gx z-oY0^2B#N{2x4^EKGvK7Wf;0F;YsX?3PT`0c8*V8Yf>gXc3>zTI0YD*MX3#F6_!N> zfP=Sf<&WG70RsaHfEqLC|Fnb1|IUZcy*#bRnSKG>BZplV>9|+CAYng(3u70F4kP=n zjbBJsEqQbKbo-lCb}utZh~)<9M9`epyY)D@`q+J=7jj;8c^}x!p zwIu|F=Hw2(;W$&{pH+0w(-nMK&w!{PSnX)=#+57=L=pd3mFCr5s}lO;v&jbIP4QEA zj~7(cHJZ6L1T^6xbUvuaF=#~3DWinlC3>GG4JAJ8jrHh?y6gzl-d)gM99e79`)p|q zHP^KziGOfwW}E9GGT)ZnQKgL|DvApf=^^GkH>TnQ`ip)07W;aMX1lpx8O^SVaZwhls~y{cSP znBC3sgKR2!l1A))y)%2Vlg*Z{#Kj>!H#@mP>U4d!P$XaPI;D|9*Y8$wf40@225jvN z4j0KZ1j+3FJe|4Uk&f~A<$e#S{>x7(;Xm`_jMo=31JMs}eA0!7&a2o;?p!Y!E$g#W zV-p4_iTgz!H}r^6nc2dQ0d-x+oWP~unua6Qr{i-j|IJ+`LWE34QMhy@NRLg?<%{>t zx9dyrQwyRvo#Qno#Fy16QAI|H)Af%AnZEDA0|zhi-u-#kWcv4Sg1+NM8HRCG13WEE zg?NMfIlTKEm5hxoQ9~on`I%Fso8T{YaTi2Sns3h>mbeN^u~G{E^0UT|s$~C>XypXs zxf5B6m&2zGb^Ana^S@Z)yOr$7yRb_Qs{)Oxm>mvp9N%?^lO|ziuK5s&^omi%t~n^u zy=ugMT^O`v_&)guu1kO_2J~!8d;2DKqE^>rJ$u6RM_8~Beu_w0avo7uoQYmMnRFJY`Q^x1RIf0M z&14bi0&*XmW)oHK&{id6pKM7F7}+E-<}j_Y!Z<~AEu6d|7o^+JmWAawwIoL3kZ)LJ z&r`WDaC^$()w&N^7eWyvlS6;^ZG|-ATwbB@m^Ny0aB~-s^n-vvNJ>tQ+wyF44N-{T z1?H_2-xdC>%cLe`5vWBdj?uSUq>)%bJK4KB;P?i8#pYF?lpd*m>5-bD-ZL~7>|iZP zYsM})N?zG#nEfKI-|_xI9AryiC7763mM};?CIB2r|1J<+jS!tESRI!AF5bB)Ax-Qb zR5Dw>B(287i*<*tph~417wtLv16Wlx`W4>3G}spyFHaYP1jptQ+?j1I^2!QHN|4Jl zt!U-@T)zFn1Echji#k^LTm}!;L&h|TjGK&$U90>XOw;+99`5D_y|t&n%)gjTVXsFA zMbKW1QXI+XQ_2+u#Fw-6WZvBr;Q`{=%E$2}7c3d{-Aciwb_Dpqk`bq~EK6GMp110y zl)WqGN-F+O8_``?Oj=?k8Y#)kM=+Y%7zoq}(Z|5tOB()%;O~5+v5=kJ#>Fww2IJG5 zfJZ*uxFFu4cv6X%rR#W%*uw#r1Wr8wHm!N;Zb`WZ(&vpQLQ&|~3CJgt8o29EWZ?^M zhdnO4;m-@uQ9!$K(4q{%FcpCEVfQxu3h*)@uLP7cQFehR{@K63_0U_E;jPR}()q1J7q&z`OQ6$Bh?Z<0d}=P~PS#h)y#hKT z{eKQHZzJ8i?NjgHl6=fh2btKTOuD6*8Q6Pdc}B$Iv5>O0M>yOb21H4=hM=Ce<2spZ z(qG+p@?;7DLnBA^yvZPlEy##FDf^ocAOgS&0AX%Qz3E5v+isd_mT3;sJ7*rk9~GZ( zfBsSf5Yj3oxNzX!&so!(*pf}@CmcOgn$!~bK1fZ>7j7VGDztDP3T^C8?_8ac97;%|>k|?QjO@S+Mv!4G2IfYz>+mSaa z@G~==`BjQU+&j1~)fKEZM7 zBS5@lsP?b=&O>wboM-8D*Pk1F?fa{(yYy1)J8dLN^!A=Xk2-m*QYc=dIQU2Xm3%gx zM>A^+sT+I>v6+G(tgU`@7m~f`I!s>dJ+8Od- z2YV2mYZa5YXF>WG-*EDF@_Sg-TDb=K>MI5^@T72kRUq|=>qYKoWJI~hNSEC@kAE}} z#YMGJcQDr@{CXp=!OCet@Zkv&U7&tLHiUz{D;tR3bqy$yKCm_+%|)Wy8$cO&r#2Wh zkQOLPl@aHI%+|psespWtHr>VqO}QV(dkJD32vlQcl1RgVoNCyrJM70?zcbk#75~js z3h)?RZEU3g{@+QA(*4-iuUhM{_8nz*2%ICX+*WL{N>s34yPi|?buio5Snl}ugaM%= z+T`(y8zcNJjMULkxpbFDf7J+HWo7royX+qCQ6#ID%L}PE-GHfw8>_A?T|L;M*^t{u zOwKr@@oN0;!ruK}$AEdbgIW)75^r<<(szb054`pm!Si~Jb*w0r6AW&g#uC4u&(X-j z=DG30zHAhrrQSf#9hDqqP_8g4a_@O6y>7T|ys>gl5~JpXE2?(ZOIj`LSg-8}PA~fv zcFDmr^zIN+eVT97UUipBj*S^TKPTq^ICUA;^;lk$>^2nN(`E8F4s|8%8axK<^aeL| z3DWmf0xuN(2^!N%x$@c1Djk?ci!c!`pcS>&VNSFcay#=9@H$->fR>Eq9}nX|kGq%n#4cZ%e!a}%&D};v9087`*Z!pjMoXLCYK*5BkB(!(8#gB z_GU|u<;YjCR~jvEQdF3}K{cI!5<(Z4T4#D1Qh&U13Po=vdhyUD3_3zENmeO~?LlQ!%;((1?$Z!qhKD7>= z_uRL;%>!FEbW%}DqINdGlKRPY15t^&UnmwbPz|h}8rW;FNq3G$7P!2fF?_6L9y6|)eEaTyUXPa25T0kO*FZ?ADXV=2~ zym`9*HVvADK|X}~Xj6lV`eV&@u2O?CJXgLiQbr)>>%Pm1;&sj#*Yzm(YmDFRT&2nO z$rJ#bjXJ`c*#!sPB95-o3=Ig%LX(vm&W((4LjUL+G*GcHq(NU$`ck_PJl6EWCUwF5 z@||xPn4Em@CN^iRMl@^RK~vxOgOq<_eTC%D!9pfx)a&XPAhg*e8KQg}_5aiTZ63#NZqW@~Cfp}!Y%8!+9Co!q?rT=+bZ zEF*B|nEcnHNPn}H_LD_l*%WBSz_2yQ#b(JoUpm|76__y-Oe8b->hZ z=<6hQ{H>x8?TBS&X$))PkMQ_ax|)Ed9VH)X-n-F!WI*gwcT&s>Q*I~UP0a@|Mh}33 zUg_sia5|daznAj~Cg{kR((I2!W5?Vpshw7w6U{e?T`v2-lj|HjV5QqU9mbEO5m#Z4 zoyFwOe`0n;PGVD15Pz*mz(ilEy`m;_@$4yS9XA8mN_fwDZuT)cGTgO4FABx;jCX!U z?Uh9UK+pJ}`50i8byBXe{lT=!S>bonbA>@52q^11zW`)Ck;zZ&y5+hDb{Zu>mkc}@MhFN1%Yp@#~W{ZMLEl<)q_+qT%Q64reWlh}0B#|xuR zS1SDXaV&+jVEGO=Kh2{I(Per=#)Hf^LGu32uS$o!R4 zeJ;X2QfDs6(6fUnKcZZF6>+B3KH)t_;m5LUCTS2Tgip=Ss5KP7`h=Jh$$u$R!$rN zQ^onyxeG>@HWIZyxWr)QWZ%63ILJ|Ty@TKS#wlOli4G$ev0 zU4Frh%T1#+Me~I|JoS)QlkAIE^>WjV9IwzO!(Si>^IhJ!oSupRv@sOpy2bns$t)#R zJyInTY|l6sgONlBAWR+6Wvy*8@`{kw2rSm&y4k8myi`m4c(S*M(G^?8%pX)=lXW#PC_A(< zLGc6n$Rpt0Q9log=~jG4FGrmAW&+=Irw8>yn6w2fd@pe6nb0;;d0dVWSf(jCKnHw*+R z!JK;fSz#tF-gwW!hLD+!`5*keOpR!$*kz~Qk|<}XDNKSl>*-6s6ydf6jD}TQeQ&6n zA6qv-hb5w?!!*%rNLnkjwxD8nMguw1BLLl>mV`XF0yB)$d$BQy{FL;x40Em_M)dW& zoaKl11Slf-g8&>obF(cB==7+jxU;}pGWj8wF;@PqM0+)3w>)Y+fwk&m@Rrb8f>>A` zCJjP)JL1K|mKm`z);(ZI?P+)$YP63H6ye>695%(7LF|6du@24g@Y-4E0`G7k^sxt? zYnL7KcS_2>S+Am6$9_i1cZqAD{hkeZ@|)>F+cBPiGj@Y11=`I!rNJC}eJ%H;8$^a? z0HI-r_^P}AUXx8(lP*RQW*ghqAhD~@3RGyco|2!I-M=Z}20mo4pF~cvl7`uqH(g%_ z7@s;P$*0A8_RJ}_`4pO&E;}wo-`--RGKZAAtd{k$f0qXTGHI^5E!8WUDJP%=S!{wS9ycfqa>gtioK4KO5@=8Eiuhk)% z9@}U8#P^scP8&{dDi57h`%47(L_ zKGw9@Ba+@&K3RNNbL+!6k_y?bxN~? z{XMZe>g0nTjmLhz^2#KzyFVdDCiuzw_es#RrF2vYRg)8|0Ex8f-;=&2c+wVdf9KLm zCx_#QrW{78(3#+_;t7Rr^0I#JdNFG zJL)Kl>%&1U&TZ5uBhXg!dn^fw0>T@&ijMP|!!LGA&b*?dBxy_j~y1|uv8bb8g zWu^XrpU@I>FRo`x_h?u~3`;+rBVd0|-O`6!NRp-M$WlY1;YNo>+b6?vjPJ9c_-;L4 zJ2M}Dca$MAzaP{;^Sm*W5Td7<@W0~)Oa~i8%x_`tUgW(lwCCsMtOcvX!Z%DpL;+7+ zae4d1-SHkwX3$h8g!(QbW?$C6L#82(XOY;wWM`I+jG@?RH=3OcTN z_mw{8??ZqoYhVusbUMIt71y&}7ARB&mK1SdVHuF00Z8S;r=2?^H+iZ!PltU^#E`n8 zD`16xMp^2d_Bd!i&oT>S^wo7enI?#Zf&;gL2vHP^5oA%+pMweR7vhE*R18kn$rlPP z2D@$@(|GSLZ4G(EPLWod^8BsfMIH!}b>WD2y?ohtJTAxybro8QlETz*qNiI#d43^ib#t3GiNdUPce#n!ChvE&T|deRq1B-?!yUsp02K zk$JMdQt|8Cp@+T{r{w9Pgg+Z5jeVN|3)xD|0*7|Xp=7#O8K&ZOfz>$UY2px+d?<^& zn%cJWm(ZNRNO^l8;?$He)rBE){+ZLatZv8NncD@_(z25Fp3*TY(7Pe3vNGTU@ZGe^ zKa%qz`);32|RwWLw=DW-3#Fe4UhOy>4DuiQO71MHF;0?6l zaHgMZC@Unj=Cw!o$d``}wZN5i`>odu%(}2dqvH*r1?r7W=N9ft#7~SAvvVjb*b$g^ zxZIoe)D8Ej!JPbw7_2;0*eSO!Ju3wR>aWZ;F?b0$x1s)NhH=X9#_dPO`P=+kKj;Vz z#a)`+=)?YtaR(THL+{>N3O703M-%?_^ERdm_deIJ-)Qpf)zBApQhNn3VW|TQ-d${9BxSWYIDM@$lvXJlw9ih_3~yew z8m>T6t@}Z&(}%A$$^6JUF7>Qk2iB1pgyXOC&#nkaz{J4vrtspI>$xg$< z`=T$!AuE2@qh@=S@p#`&c_6YxdNhntx%_Jo^IM!tA#oQlY)1X!*1Gt2f9W45 zX1_|mN@^i4EpANCPiO@2-00Zag>pke`V4G_J&^9%zbQ`hkCc!m)aVhm_GMR* zHWMGFJYT)Frn2VH)I`G8qsM-x*))kk?+~cuo11@A1%PM*O5*0QE*>I?Zlwet<7xtX z6m#0jeMvknu6_k}(OrPhDdGNIR7VpNOJKi9xGfgI-cUUgq)9TKeOwFow zcRGFNQ+OSh_zQl`G24&_t7wZlcj1|PMg@|}SvOkAp1%Qc1`SqA<%?VMt^Sq1i39iz z$@*_|xo5-Ei5S(CpWQAknj8PkFBP$JOjlJtkPy@XP#O3x zehr}1&nvMp|~6bTglGoX@j+>OT< z6(v_oo*uvbSFH(L_A4#l&?bjSHMzs9VRuKy^OT;C<0~>9*A>+MC=1xm;jx&!$srVT zBF)1tQU!r1>XEeo^8z^COO*QxWhhG!odMy8Gj!PLjEpKjBzJ$%ul_~Xg``X?%y+cm z0rclQ;Jpwe>fVO0N%ZU?Q$y}%E({~QwPtl`U!jq0;&ml!;S_wO)qhb3;XVl)8WKsm z&>M!@=H$4%>Nr5eF2WY!x*47uh4Xk6ThA1R8dpT8nuWS_5HH_8+&q*fWg^_CVd1Gf zK(x&rq~<$opma8DcsZ{xJwD*4@D9>so1TC2$hq}sg!EZ?@q`kvHyBF)%;N4sfSbyjfg9RJ6Elb8#>2d50Lo$Id1+6yS zf?*42#o<@#DERP51XoKp|JXb$Hp8*fcrwY=^g&bu=99`iw101p5Pr7%{$lNq_mFv( z?KYVJ{*ql<5x`es8$Cf57uTF?Unwk2SczMF1L=w5Q!=rD?F8A-7c&mqK#o6jh920^ zv;>QZiPic`;UUvGNiKUcd`(T?p8$I&^m#94oo$dC4ob{ILWvntzDSI&9TxcKP90@c z)fcL&5sQmj#K@lGO6uyiTwGiUckU?24N|tFU(PwNTY(Mi#iFt1nTB08Oe~o z51;`t`+dZGR8{|ZQ+||Krtkt`gbSkB@Fr3r<{0Sxol>$M3j~C)_>1DFlZJr%N75!1 zzN2>UvU>HPCVJN;GO${2{SLUcop*W9sRXNn&sI7`UJTVZR05oHTGjJE>{H@&kIFte zQ*h!7P1Q__kg#e6wbI7NilMNp!}-k zgoR6yUH6YmFVD6o-q_nKQy>Orev!G-@wQTYI2@vE zC-FD&ie=R3I`SK6T&@Q|)fMqq-0jPs2=A4uN>o3-H{KUY%|07Jxo{qMAa(S^zlg8& zgZ#Y1+LByd-EQ={f}iZi+V^izTwPzaT4>tEbzbR1Q3ca##ap_M{rU?41pZ-~AFe-P zxY*e2ZWm!2bc*in7>FB1(ygvv?BV|Cp0@;Q90@ECNeMFd1a$JDU%_`34}FR~26Xc7 z?!usts`xS?oNlmF+Hxltre2xfgfFMse#~J3`*)8_1bjQpn{@%86@sjp&}!#uP{6z@ zM;+kib$jXq5@h<-d=7%$t+<}IWidQ1d}R8%`p-Y1v^^lsX$2onwewZ+)0Kk>xgkdK zq(^{^J(^M+WOdj`j@bCv*547Hhe_LyAJXdC^))$Kd{ zvh_yMrTH9-&Z@-+^5swa+k+@}wSB_M#XH{c5~SZzcwSI*FL9JpgclUB*kbGnZrQ&< zm;GQR^RkFa3HBa|4r5_H2ZNmfcmz8HQe8^0lkY(71R>GNxjBBnfdmpHu+#qe>VGyY zElK`uK@RZWdWrwLp5lM@IMqhS$2+c6Rjh-Nd!3eX6NQ?LwBUIb3rc4S=5%lwM#rNr zMoSa)cWXhp@zrP|LulP;E&>3E7@L{V1k5nM`x#*EWmZednoptuWj(9n_9FaO?-5Viw z6IpkUt3+1WR}s%-dG2c54Bm|KZhQe_S4nY0tS9%r@&hs97{26+W-8^@h!lC6RIJ}x zJ0~e!&rU3yc83~=&Uq?_qiiUdPU|di1%2DswqI+$JFP=-GxN8F#^1d5O{~r-t>y); z5+U!yhd3|NG^Pb1{mbcaGu+#mVjHO-N#yOu73U7Y569|zb9J~J2IaMmk}0!@?}{pz z(2u7={P@&?r1J@9#O~w$OSRK;Fk>QIj;UA8T4e9IRFgQzK+6>mh~_e4%%Ohr82V*E zK9(B%yxsv4f8E5rq%N%{1eF?lEw@SS+t%{LU3Rjm3P|+YnvI~KU`!BKPz(4?ZUEwR z(*(w1Y;2q|y(`283CR31#RWLg{>}#e53xtAw)+|z69#kp2Xb<&mnN5=ntd*v^tH9y z8=>$r#1}X_${;cR2(0w}EgeD2>DudXrgJTR0RbV$$4Al?8SHf#^G;3bVO|Y49MXlw zlNG@g3LMugI=0mSYiY zn97yADES2y<7XOLZ?YXE`${Wm3~!ZxLhX_r0Peu|B-;~CXMjZEft_coF@O@NSbq0G zT190-r_K6#Cu;=-1<&PASV8HfKSF#tc}8H)v>NdhwC08P2Og~sgZe_bT9|5t;c>}! zka>+H9{L6rPU3+8upE8x52^Ye#n$5A7k$IXGrb&g)7c=BK%qjF$fp(`aVOjQCg~Mq z*Fe{C_im-5q4{lKk1VSFw=>Du|4047|6g~WVOgFof!JO@u;5fh8C={l&E4*5J35hw zk%fhGq58F4>m_Ao;((MiHPuss3+WoPZALU1hFdc|t)AXog;7Pw_q<0r4HkR7rw$6> zvvyVq4JMZY7Gs%N@~Qrk$31cv$0U4YVNrlXCy_RKt%UW}KO-Ug9G>bd8b*xUA&0U{ zzL8QTlKo@56cYr5453W6M%R^(LdYTL8b(@aYpP;=Z{@>-O@R6`OJ-)~FYwo40Zk?; zPG+7t8lG{LUayjQSc$A;P35oAX044*_1hn6;wRQ2pPn6W28T+o|-P`9Slx8WncD82ON$So2c1dKkphJ&M4u3wVKCb^&MuOTD;dq-)1ao;G;%4VIT($JwErsLtwR89Enyi9uq z)b7Yp|CJPm(WcVoTTbRMc_{f*sC{u3~PlA!;V7XD8t{I}fa zf88yJ17nDy=5A#e=(4z?f`TTas*0-&5bS){{D6t^@tBMZM-LI~K>D0j6_keBS`bJ_ zSCtjC4_K+_)z;QlQad*jiTw4nZjj!6j#5}qP~H9+OI!!0 z_*Ph}M?)!iD#a9Fq+_io~-KkqDZdKHMH=!_iH&K79ymW!-c zi7KF{KAyi7(MO)1&<*$9bRTu`cqzI%+W@~?kFoHXP?TZJ$MMsX;Zcqd)PPa3)l=^4M)#+>UsoI{%;u}U zdrJ%rknyk?u= znJwjEvqJ0r%MR4nh6LDVp0S$WHSx3hG#{N~_1*C%Q{u{$dH$h;hT1~UWkX|l=$Grx z63;(XU{d_Xq>vKw;mj3PfI-`lqrjmxdk1m0wa|n1S3nI1Jr^7m0LbySWpf4;pjtk5V(pd!zbML%2KgK99}~3?ILPhe8qk5EbBTP>rRT``#Lef zc#`juf%8R5>`be_G>{kZ4}}6&CpfuQ@-Vj<1pfurcFQB@9tp}2eBi&?$@3yqAOBfs zsH;m--k6iivIt0~PB-xZ6Ay%R*#(%4FNf5iibAx&KFZKT%T)!lUu)L+{ye#XscW## zI8aZ#cy!W9YJk@rZ2nL_iPY7jheUfUuosy;q98r4*3 zT^a!hrR&ZgHt5w#$iKC3%*vaYII%n+q?V5?C44l|<1RC?ZG6Y^q2u_sHR|a>KcTxj zJIkktXQ#lV#KsSLQ_3&~BAvkHE2z{+a__C&A3kK+@(c#K%g!=}&I03^Yl2^^H2sMu z2ghYaMx7 za!?{2P?SN_u@oA+fYzVPk{hxG2UvdNqimqS1b|C;<3WZCfIb?Z{vqi97q_>h1X2g! z8{RA>WVK>tP5qj=~ z1munwz0;53LDsQ6GRW#{!fKvIG1-o)sCgZfR`WY{al;#p!hYZ{KJwQGpdPlYQ+Q^P z;$)>MbRxZN?CHb~V}^C}?O@_4j6w8U@ADE)NlBsA2Wo)}7Lbg$H+y>h(J#iiM(gfy zgsU~)nTzbVL>q%%cb!rN%X57J5#?R^Qgg6 zzH$!zZJD41HDBxuQe>VADgG5B8EK5n$;zs+GjX+UH(YVEQJ~hh3WjD-?Rr+3z`Oyp zpIuLeM9s|^+ivte8%HmNq#Sb&0HdV#b-yEh-Rqcuyxt?32p2A0w%8X}`$E6?c-Ig( zv+$%)#ZU#DbHDtefV_ZY9rpv&Ho;d8mAti}ps>(tvRF?C7PviMBz+ZQ-MVq?8Tz%q zSg(W=z-=n5CT(qCJ6$ZN^h2QaRPkdJJHQ>1${jzH$`2on|29jCYyw!=1#pGr*R>bl zzWsi?J@?WExXap_jgj_rV|ZdOv@WBF9irjjP@-?jOMyGkz%kuW?$Tuv8~%kv^r3l7N@~xj z7?r?osrUzJ^-0y^;63;T=-_^Z2L+U?7+pXh2u2cZd2CY{8oxx*+!b%X0Rz$@0=L$2 z+q6x7rDFpbvQYY5*quOJMKIIsB1$0rpALa5{jX2Nh#x(A#3>*U&%{Xt(E31Z;QfA1 zNO%mA0ZuIqx425z;sS{~!mCHvz(OJ6PUXwLK8d6s43@_TXnnmVP=XAs%KzWj-s|Xl zYX)j0W7#vr^3MjqDXoSh2Yx9EYZMFobiGkDHBHn&O;|mSXq@4hvq)X8CIcZCb;FQi zo(Q|Bmnpg>**y9absdc)7s1)Ch_ublA8-b2q8SDY#<=%6A8h)PJ2yL(fzo>Pr#OQc zPa^WtKfE7E;OSN7QTX7H4whp|!V#ra7F$`Xm4j(?l)18Cj~TL92*l|i{!^?@5`@P| zREe$p!}EO{aEb`ohin{!Q%8qABb{kUYk|rxFedC3O4EPq&}XqpNl8^MMjQ~V z5E32q^sFobj(QtXa=iMz$=PaKxI9^c^K>{arfT$Qm341SRu)eQc;f$AFQ585xitrE zXSncH0;!tPJ&y-^1hFh&JTtzRiy?(sepF{T9=p#tGTO{%d}#ezm;R*B->EQovzp?? zK*N-vs{8zP97b9&GZPCBR`l-+6Qe^~Mn?SugM+~tkATBNUt4qLe}wL}Qg6Hv1d^z8 zxIQEBhr4Smoq6s2q3ja_zr>p<(sE*6qVPTf#vF$Nwba12fa92tvYv>Ob(Jnx;JNm0 z5vK!ZiX$iMgR=mer(w06#%`>xj+^}R=R0tu$uJf9x8%nUqHhYu3c$e{YO(iB;o;$L zq?iQkem~)2WJLRf0?&UU4O{@r)T+AM?sZ%cfy7b3`+U*AtcA)c+#N(gAa-_kLpQe? z7cnjfEPa;CLP}Uh9XQ@J`*TdJ=7u5Nf!`vqk|YzODH7=?eQExf-(k>C5xx>98(H~@ zLGp3{e18fpjpk1Ih8*F8}tGe!?h@swCI>$4K`M74S=vA zr;TYdbaXFn1{}KLE21Jn`k9j9Kh^h2TKCeTQgnnV$&ER{5mAt`f`)v# IoJHXO0hBBh#sB~S literal 13726 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 b9`kzztt-ojAUW{6E0ChBnoQX%)6o9`E4{?g diff --git a/icons/obj/tajara_items.dmi b/icons/obj/tajara_items.dmi index 0b9d07edb56885925047ad8b2419c9f94e6ff3be..6f827ae838578695e2d2b6e5800e275efaef6880 100644 GIT binary patch delta 13710 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 DH@*Y?