|
22 | 22 | return FALSE |
23 | 23 | return TRUE |
24 | 24 |
|
| 25 | +/datum/martial_art/liquidator/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) |
| 26 | + if(!can_use(A)) |
| 27 | + return |
| 28 | + if(findtext(streak, DAGGER_COMBO)) |
| 29 | + hidden_knife(A,D) |
| 30 | + streak = "" |
| 31 | + return TRUE |
| 32 | + |
| 33 | + if(findtext(streak, FINGERGUN_COMBO)) |
| 34 | + fingergun(A,D) |
| 35 | + streak = "" |
| 36 | + return TRUE //don't upgrade the grab |
| 37 | + |
25 | 38 | /datum/martial_art/liquidator/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) |
26 | 39 | if(!can_use(A)) |
27 | 40 | return FALSE |
|
41 | 54 | check_streak(A,D) |
42 | 55 | return FALSE ///We need it work like a generic, non martial art attack at all times |
43 | 56 |
|
44 | | - |
45 | 57 | /datum/martial_art/liquidator/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) |
46 | 58 | if(!(can_use(A))) |
47 | 59 | return FALSE |
48 | 60 |
|
49 | | - injection(A, D) |
50 | | - return FALSE //always looks like a generic push |
51 | | - |
52 | | -/datum/martial_art/liquidator/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) |
53 | | - if(!can_use(A)) |
54 | | - return |
55 | | - if(findtext(streak, DAGGER_COMBO)) |
56 | | - hidden_knife(A,D) |
57 | | - streak = "" |
58 | | - return |
59 | | - |
60 | | - if(findtext(streak, FINGERGUN_COMBO)) |
61 | | - fingergun(A,D) |
62 | | - streak = "" |
63 | | - return TRUE //don't upgrade the grab |
64 | | - |
65 | | -/datum/martial_art/liquidator/proc/hidden_knife(mob/living/carbon/human/A, mob/living/carbon/human/D) if(findtext(streak, DAGGER_COMBO)) |
66 | | - var/selected_zone = A.zone_selected |
67 | | - var/armor_block = D.run_armor_check(selected_zone, MELEE, armour_penetration = 40) |
68 | | - D.apply_damage(A.get_punchdamagehigh() * 4, BRUTE, selected_zone, armor_block, sharpness = SHARP_EDGED) //28 damage |
69 | | - to_chat(A, span_warning("You stab [D] with a hidden blade!")) |
70 | | - to_chat(D, span_userdanger("You are suddenly stabbed with a blade!")) |
71 | | - A.playsound_local(src, 'sound/weapons/batonextend.ogg', 25, TRUE) //sound only to you as audio feedback that you stabbed them |
72 | | - A.playsound_local(src, 'sound/weapons/bladeslice.ogg', 25, TRUE) |
73 | | - |
74 | | -/datum/martial_art/liquidator/proc/injection(mob/living/carbon/human/A, mob/living/carbon/human/D) |
75 | 61 | var/datum/reagent/picked_chem = default_chem |
76 | 62 | var/amount = injection_chems[picked_chem] |
77 | 63 |
|
|
86 | 72 | to_chat(A, span_warning("You inject [initial(picked_chem.name)] into [D]!")) |
87 | 73 | to_chat(D, span_notice("You feel a tiny prick.")) |
88 | 74 |
|
| 75 | + return FALSE //always looks like a generic push |
| 76 | + |
| 77 | +////////////////////////////////////////////////////////////////////////////////// |
| 78 | +//------------------------------Hidden knife------------------------------------// |
| 79 | +////////////////////////////////////////////////////////////////////////////////// |
| 80 | +/datum/martial_art/liquidator/proc/hidden_knife(mob/living/carbon/human/A, mob/living/carbon/human/D) |
| 81 | + var/selected_zone = D.get_bodypart(A.zone_selected) ? A.zone_selected || BODY_ZONE_CHEST //check if the zone exists, if not, default to chest |
| 82 | + |
| 83 | + var/armor_block = D.run_armor_check(selected_zone, MELEE, armour_penetration = 40) |
| 84 | + D.apply_damage(A.get_punchdamagehigh() * 4, BRUTE, selected_zone, armor_block, sharpness = SHARP_EDGED) //28 damage by default |
| 85 | + to_chat(A, span_warning("You stab [D] with a hidden blade!")) |
| 86 | + to_chat(D, span_userdanger("You are suddenly stabbed with a blade!")) |
| 87 | + A.playsound_local(A, 'sound/weapons/batonextend.ogg', 35, TRUE) //sound only to you as audio feedback that you stabbed them |
| 88 | + A.playsound_local(D, 'sound/weapons/bladeslice.ogg', 25, TRUE) |
| 89 | + |
89 | 90 | /*--------------------------------------------------------------- |
90 | 91 |
|
91 | 92 | start of fingergun section |
|
95 | 96 | var/obj/item/gun/ballistic/automatic/pistol/martial/gun = new /obj/item/gun/ballistic/automatic/pistol/martial (A) ///I don't check does the user have an item in a hand, because it is a martial art action, and to use it... you need to have a empty hand |
96 | 97 | gun.gun_owner = A |
97 | 98 | A.put_in_hands(gun) |
98 | | - A.playsound_local(A, 'sound/items/change_jaws.ogg', 10, TRUE) //sound only to you as audio feedback that you pulled out a gun |
| 99 | + A.playsound_local(A, 'sound/items/change_jaws.ogg', 15, TRUE) //sound only to you as audio feedback that you pulled out a gun |
99 | 100 | to_chat(A, span_notice("You extract a hidden gun from your hand.")) |
100 | | - D.Paralyze(1 SECONDS) |
| 101 | + D.Stun(1 SECONDS) |
101 | 102 |
|
102 | 103 | /obj/item/gun/ballistic/automatic/pistol/martial |
103 | 104 | desc = "A concelated version of a stechkin APS pistol, that comes with special Preternis upgrade modules." |
|
111 | 112 | /obj/item/ammo_box/magazine/m10mm/martial |
112 | 113 | max_ammo = 1 |
113 | 114 |
|
114 | | -/obj/item/gun/ballistic/automatic/pistol/martial/pre_attack(atom/target, mob/living/user, params) |
| 115 | +/obj/item/gun/ballistic/automatic/pistol/martial/pre_attack(atom/target, mob/living/user, params) //prevents using this as a melee weapon, and allows its use in point blank while in combat mode |
115 | 116 | afterattack(target, user, FALSE, params) //call afterattack so the gun still shoots |
116 | 117 | return TRUE //prevent the regular attack |
117 | 118 |
|
|
128 | 129 | ADD_TRAIT(src, TRAIT_NODROP, "martial") |
129 | 130 | RegisterSignal(src, COMSIG_ITEM_PREDROPPED, PROC_REF(on_drop)) |
130 | 131 |
|
| 132 | +/obj/item/gun/ballistic/automatic/pistol/martial/Destroy() |
| 133 | + UnregisterSignal(src, COMSIG_ITEM_PREDROPPED) |
| 134 | + return ..() |
| 135 | + |
131 | 136 | /obj/item/gun/ballistic/automatic/pistol/martial/attack_self(mob/living/user) |
132 | 137 | on_drop() |
133 | 138 |
|
|
0 commit comments