diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 099ffd935a..af5a02cb63 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -1668,3 +1668,136 @@ return else ..() + +//jacknoir413:Areax Third +/obj/item/weapon/melee/baton/stunstaff + name = "Electrostaff" + desc = "Six-foot long staff from dull, rugged metal, with two thin spikes protruding from each end. Small etching near to the middle of it reads 'Children Of Nyx Facilities: Product No. 12'." + icon = 'icons/vore/custom_items_vr.dmi' + item_icons = list(slot_l_hand_str = 'icons/vore/custom_items_left_hand_vr.dmi', slot_r_hand_str = 'icons/vore/custom_items_right_hand_vr.dmi') + icon_state = "stunstaff00" + var/base_icon = "stunstaff" + force = 5 + sharp = 0 + edge = 0 + throwforce = 7 + w_class = ITEMSIZE_HUGE + origin_tech = list(TECH_COMBAT = 2) + attack_verb = list("beaten") + lightcolor = "#CC33FF" + + //Two Handed + var/wielded = 0 + var/base_name = "stunstaff" + +/obj/item/weapon/melee/baton/stunstaff/New() + ..() + bcell = new/obj/item/weapon/cell/device/weapon(src) + update_icon() + return + +/obj/item/weapon/melee/baton/stunstaff/update_held_icon() + var/mob/living/M = loc + if(istype(M) && !issmall(M) && M.item_is_in_hands(src) && !M.hands_are_full()) + wielded = 1 + force = 15 + name = "[base_name] (wielded)" + update_icon() + else + wielded = 0 + force = 8 + name = "[base_name]" + update_icon() + ..() + +/obj/item/weapon/melee/baton/stunstaff/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") + if(wielded && default_parry_check(user, attacker, damage_source) && prob(30)) + 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/melee/baton/stunstaff/update_icon() + icon_state = "[base_icon][wielded][status]" + item_state = icon_state + if(status==1) + set_light(2, 2, lightcolor) + else + set_light(0) + +/obj/item/weapon/melee/baton/stunstaff/dropped() + ..() + if(wielded) + wielded = 0 + spawn(0) + update_held_icon() + +/obj/item/weapon/melee/baton/stunstaff/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone) + if(isrobot(target)) + return ..() + + var/agony = agonyforce + var/stun = stunforce + var/obj/item/organ/external/affecting = null + if(ishuman(target)) + var/mob/living/carbon/human/H = target + affecting = H.get_organ(hit_zone) + + if(user.a_intent == I_HURT || user.a_intent == I_DISARM) + . = ..() + agony *= 0.5 + stun *= 0.5 + + else if(!status) + if(affecting) + target.visible_message("[target] has been prodded in the [affecting.name] with [src] by [user]. Luckily it was off.") + else + target.visible_message("[target] has been prodded with [src] by [user]. Luckily it was off.") + else + if(affecting) + target.visible_message("[target] has been prodded in the [affecting.name] with [src] by [user]!") + else + target.visible_message("[target] has been prodded with [src] by [user]!") + playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) + + //stun effects + if(status) + target.stun_effect_act(stun, agony, hit_zone, src) + msg_admin_attack("[key_name(user)] stunned [key_name(target)] with the [src].") + + if(ishuman(target)) + var/mob/living/carbon/human/H = target + H.forcesay(hit_appends) + powercheck(hitcost) + +/obj/item/weapon/melee/baton/stunstaff/attack_self(mob/user) + if(bcell && bcell.charge > hitcost) + status = !status + user << "[src] is now [status ? "on" : "off"]." + if(status == 0) + playsound(user, 'sound/weapons/saberoff.ogg', 50, 1) + else + playsound(user, 'sound/weapons/saberon.ogg', 50, 1) + else + status = 0 + user << "[src] is out of charge." + update_held_icon() + add_fingerprint(user) + +/obj/item/weapon/storage/box/stunstaff + name = "Electrostaff sheath" + icon = 'icons/vore/custom_items_vr.dmi' + icon_state = "holster_stunstaff" + desc = "A sturdy synthetic leather sheath with matching belt and rubberized interior." + slot_flags = SLOT_BACK + item_icons = list(slot_back_str = 'icons/vore/custom_onmob_vr.dmi') + + can_hold = list(/obj/item/weapon/melee/baton/stunstaff) + + w_class = ITEMSIZE_HUGE + max_w_class = ITEMSIZE_HUGE + max_storage_space = 16 + +/obj/item/weapon/storage/box/stunstaff/New() + ..() + new /obj/item/weapon/melee/baton/stunstaff(src) \ No newline at end of file diff --git a/config/custom_items.txt b/config/custom_items.txt index 315d8e72e0..02aa42875f 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -890,3 +890,9 @@ ckey: zodiacshadow character_name: Nehi Maximus item_path: /obj/item/device/radio/headset/fluff/zodiacshadow } + +{ +ckey: jacknoir413 +character_name: Areax Third +item_path: /obj/item/weapon/storage/box/stunstaff +} diff --git a/icons/vore/custom_items_left_hand_vr.dmi b/icons/vore/custom_items_left_hand_vr.dmi index 2e07a2b029..ec963c255a 100644 Binary files a/icons/vore/custom_items_left_hand_vr.dmi and b/icons/vore/custom_items_left_hand_vr.dmi differ diff --git a/icons/vore/custom_items_right_hand_vr.dmi b/icons/vore/custom_items_right_hand_vr.dmi index 1ff9723b8e..0b5ac6ab66 100644 Binary files a/icons/vore/custom_items_right_hand_vr.dmi and b/icons/vore/custom_items_right_hand_vr.dmi differ diff --git a/icons/vore/custom_items_vr.dmi b/icons/vore/custom_items_vr.dmi index d3a876e0e1..752b3f46c5 100644 Binary files a/icons/vore/custom_items_vr.dmi and b/icons/vore/custom_items_vr.dmi differ diff --git a/icons/vore/custom_onmob_vr.dmi b/icons/vore/custom_onmob_vr.dmi index bcb6c5270a..b30e7bf7ad 100644 Binary files a/icons/vore/custom_onmob_vr.dmi and b/icons/vore/custom_onmob_vr.dmi differ