diff --git a/code/game/objects/items/weapons/highlander_swords.dm b/code/game/objects/items/weapons/highlander_swords.dm new file mode 100644 index 00000000000..22686b90c96 --- /dev/null +++ b/code/game/objects/items/weapons/highlander_swords.dm @@ -0,0 +1,50 @@ + +//Highlander Style Martial Art +// Prevents use of guns, but makes the highlander impervious to ranged attacks. Their bravery in battle shields them from the weapons of COWARDS! + +/datum/martial_art/highlander + name = "Highlander Style" + deflection_chance = 100 + no_guns = TRUE + no_guns_message = "You'd never stoop so low as to use the weapon of a COWARD!" + + +//Highlander Claymore +// Grants the wielder the Highlander Style Martial Art + +/obj/item/weapon/claymore/highlander + name = "Highlander Claymore" + desc = "Imbues the wielder with legendary martial prowress and a nigh-unquenchable thirst for glorious battle!" + var/datum/martial_art/highlander/style = new + +/obj/item/weapon/claymore/highlander/Destroy() + if(ishuman(loc)) //just in case it gets destroyed while in someone's possession, such as due to acid or something? + var/mob/living/carbon/human/H = loc + style.remove(H) + QDEL_NULL(style) + return ..() + +/obj/item/weapon/claymore/highlander/equipped(mob/user, slot) + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + if(slot == slot_r_hand || slot == slot_l_hand) + if(H.martial_art && H.martial_art != style) + style.teach(H, 1) + to_chat(H, "THERE CAN ONLY BE ONE!") + else if(H.martial_art && H.martial_art == style) + style.remove(H) + var/obj/item/weapon/claymore/highlander/sword = H.is_in_hands(/obj/item/weapon/claymore/highlander) + if(sword) + //if we have a highlander sword in the other hand, relearn the style from that sword. + sword.style.teach(H, 1) + +/obj/item/weapon/claymore/highlander/dropped(mob/user) + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + style.remove(H) + var/obj/item/weapon/claymore/highlander/sword = H.is_in_hands(/obj/item/weapon/claymore/highlander) + if(sword) + //if we have a highlander sword in the other hand, relearn the style from that sword. + sword.style.teach(H, 1) diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index 9bfe544cef5..79914745e79 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -37,7 +37,7 @@ H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_l_ear) H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/weapon/claymore(H), slot_r_hand) + H.equip_to_slot_or_del(new /obj/item/weapon/claymore/highlander(H), slot_r_hand) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(H.loc), slot_l_store) diff --git a/code/modules/martial_arts/martial.dm b/code/modules/martial_arts/martial.dm index 3f1705f4651..10b3e8f3ad0 100644 --- a/code/modules/martial_arts/martial.dm +++ b/code/modules/martial_arts/martial.dm @@ -7,6 +7,8 @@ var/datum/martial_art/base = null // The permanent style var/deflection_chance = 0 //Chance to deflect projectiles var/help_verb = null + var/no_guns = FALSE //set to TRUE to prevent users of this style from using guns (sleeping carp, highlander). They can still pick them up, but not fire them. + var/no_guns_message = "" //message to tell the style user if they try and use a gun while no_guns = TRUE (DISHONORABRU!) /datum/martial_art/proc/disarm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) return 0 diff --git a/code/modules/martial_arts/sleeping_carp.dm b/code/modules/martial_arts/sleeping_carp.dm index 960844a063a..c6af4679552 100644 --- a/code/modules/martial_arts/sleeping_carp.dm +++ b/code/modules/martial_arts/sleeping_carp.dm @@ -8,6 +8,8 @@ name = "The Sleeping Carp" deflection_chance = 100 help_verb = /mob/living/carbon/human/proc/sleeping_carp_help + no_guns = TRUE + no_guns_message = "Use of ranged weaponry would bring dishonor to the clan." /datum/martial_art/the_sleeping_carp/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(findtext(streak,WRIST_WRENCH_COMBO)) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 000a7a52bd0..e8737175b23 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1985,8 +1985,8 @@ to_chat(src, "Your fingers don't fit in the trigger guard!") return 0 - if(martial_art && martial_art.name == "The Sleeping Carp") //great dishonor to famiry - to_chat(src, "Use of ranged weaponry would bring dishonor to the clan.") + if(martial_art && martial_art.no_guns) //great dishonor to famiry + to_chat(src, "[martial_art.no_guns_message]") return 0 return . diff --git a/paradise.dme b/paradise.dme index beaa0b5ed14..71edb0e003d 100644 --- a/paradise.dme +++ b/paradise.dme @@ -806,6 +806,7 @@ #include "code\game\objects\items\weapons\garrote.dm" #include "code\game\objects\items\weapons\gift_wrappaper.dm" #include "code\game\objects\items\weapons\handcuffs.dm" +#include "code\game\objects\items\weapons\highlander_swords.dm" #include "code\game\objects\items\weapons\holosign.dm" #include "code\game\objects\items\weapons\holy_weapons.dm" #include "code\game\objects\items\weapons\kitchen.dm"