mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-10 07:29:39 +01:00
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
This commit is contained in:
@@ -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
|
||||
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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("<span class='danger'>\The [user] parries [attack_text] with \the [src]!</span>")
|
||||
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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
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, "<span class='notice'>You have learned the martial art of [F.name].</span>")
|
||||
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)
|
||||
@@ -107,20 +107,9 @@
|
||||
to_chat(usr, "<span class='notice'>Throwback</span>: Disarm Harm Disarm. Throws the target and an item at them.")
|
||||
to_chat(usr, "<span class='notice'>The Plasma Fist</span>: 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, "<span class='boldannounce'>You have learned the ancient martial art of Plasma Fist.</span>")
|
||||
visible_message("<span class='warning'>[src] lights up in fire and quickly burns to ash.</span>")
|
||||
new /obj/effect/decal/cleanable/ash(get_turf(src))
|
||||
user.drop_from_inventory(src,get_turf(src))
|
||||
qdel(src)
|
||||
martial_art = /datum/martial_art/plasma_fist
|
||||
|
||||
@@ -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, "<span class='notice'>You have learned the martial art of Karak Virul.</span>")
|
||||
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, "<span class='notice'>Leg Sweep</span>: Disarm Harm Disarm.. Trips the victim, rendering them prone and unable to move for a short time.")
|
||||
to_chat(usr, "<span class='notice'>Dislocating Strike</span>: 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
|
||||
@@ -122,24 +122,9 @@
|
||||
to_chat(usr, "<span class='notice'>Head Kick</span>: Disarm Harm Harm. Decent damage, forces opponent to drop item in hand.")
|
||||
to_chat(usr, "<span class='notice'>Elbow Drop</span>: 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, "<span class='sciradio'>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.</span>")
|
||||
|
||||
|
||||
var/datum/martial_art/the_sleeping_carp/theSleepingCarp = new(null)
|
||||
theSleepingCarp.teach(user)
|
||||
visible_message("<span class='warning'>[src] lights up in fire and quickly burns to ash.</span>")
|
||||
new /obj/effect/decal/cleanable/ash(get_turf(src))
|
||||
user.drop_from_inventory(src,get_turf(src))
|
||||
qdel(src)
|
||||
martial_art = /datum/martial_art/the_sleeping_carp
|
||||
@@ -25,7 +25,7 @@
|
||||
A.do_attack_animation(D)
|
||||
if(D.stat || D.weakened)
|
||||
return 0
|
||||
D.visible_message("<span class='warning'>[A] leg sweeps [D]!</span>")
|
||||
A.visible_message("<span class='warning'>[A] leg sweeps [D]!</span>")
|
||||
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("<span class='warning'>[A] pounds [D] on the chest!</span>")
|
||||
A.visible_message("<span class='warning'>[A] pounds [D] on the chest!</span>")
|
||||
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("<span class='warning'>[A] karate chops [D]'s neck!</span>")
|
||||
A.visible_message("<span class='warning'>[A] karate chops [D]'s neck!</span>")
|
||||
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("<span class='danger'>[A] [picked_hit_type] [D]!</span>")
|
||||
A.visible_message("<span class='danger'>[A] [picked_hit_type] [D]!</span>")
|
||||
A.attack_log += text("\[[time_stamp()]\] <font color='red'>["[picked_hit_type]"] [D.name] ([D.ckey])</font>")
|
||||
D.attack_log += text("\[[time_stamp()]\] <font color='orange'>["Has Been [picked_hit_type]"] by [A.name] ([A.ckey])</font>")
|
||||
msg_admin_attack("[key_name(A)] ["has [picked_hit_type]"] [key_name(D)] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[A.x];Y=[A.y];Z=[A.z]'>JMP</a>)",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]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[D.x];Y=[D.y];Z=[D.z]'>JMP</a>)",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("<span class='danger'>[A] has disarmed [D]!</span>")
|
||||
playsound(D, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
var/obj/item/I = D.get_active_hand()
|
||||
if(I)
|
||||
A.visible_message("<span class='danger'>[A] has disarmed [D]!</span>")
|
||||
playsound(D, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
D.drop_from_inventory(I)
|
||||
A.put_in_hands(I)
|
||||
else
|
||||
D.visible_message("<span class='danger'>[A] attempted to disarm [D]!</span>")
|
||||
A.visible_message("<span class='danger'>[A] attempted to disarm [D]!</span>")
|
||||
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, "<span class='notice'>You have learned the martial art of Solarian Combat.</span>")
|
||||
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."
|
||||
|
||||
@@ -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
|
||||
@@ -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, "<span class='notice'>You have learned the martial art of Baqhrar.</span>")
|
||||
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, "<span class='notice'>Claw Punch</span>: Disarm Harm Harm. Hits your target with your claws, dealing damage and causing bleeding.")
|
||||
to_chat(usr, "<span class='notice'>Rrak'narrr Stab</span>: 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
|
||||
|
||||
|
||||
@@ -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, "<span class='notice'>You have learned the martial art of Kis Khan.</span>")
|
||||
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, "<span class='notice'>Swift Disarm</span>: Disarm Disarm Grab. Strikes your target's weapon, trying to disarm it from their hands.")
|
||||
to_chat(usr, "<span class='notice'>Hammering Strike</span>: 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
|
||||
@@ -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("<span class='danger'>[A] gets a strong grip on [D]!</span>")
|
||||
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("<span class='danger'>[A] gets a strong grip on [D]!</span>")
|
||||
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("<span class='warning'>[A] crushes [D] with its mandibles!</span>")
|
||||
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("<span class='warning'>[A] crushes [D] with its mandibles!</span>")
|
||||
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, "<span class='notice'>You have learned the martial art of Vk'utet.</span>")
|
||||
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, "<span class='notice'>Swift Bite</span>: Disarm Disarm Grab. Quickly grabs your victim and bites them with your mandibles.")
|
||||
to_chat(usr, "<span class='notice'>Crushing Jaws</span>: 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
|
||||
@@ -62,17 +62,7 @@
|
||||
to_chat(usr, "<span class='notice'>Suplex</span>: 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, "<span class='notice'>Advanced grab</span>: 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, "<span class='notice'>You have learned the martial art of wrestling.</span>")
|
||||
qdel(src)
|
||||
martial_art = /datum/martial_art/wrestling
|
||||
|
||||
@@ -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("<span class='danger'>\The [src] deflects \the [P]!</span>")
|
||||
return 0
|
||||
if(!is_physically_disabled())
|
||||
if(martial_art && martial_art.deflection_chance)
|
||||
if(prob(martial_art.deflection_chance))
|
||||
src.visible_message("<span class='danger'>\The [src] deflects \the [P]!</span>")
|
||||
return 0
|
||||
|
||||
def_zone = check_zone(def_zone)
|
||||
if(!has_organ(def_zone))
|
||||
|
||||
Reference in New Issue
Block a user