diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 66cb9dcbca7..c2b75a0bf0f 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -74,6 +74,8 @@ #define STATUS_EFFECT_NECKSLICE /datum/status_effect/neck_slice //Creates the flavor messages for the neck-slice +#define STATUS_EFFECT_CONVULSING /datum/status_effect/convulsing + #define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse #define STATUS_EFFECT_HIVEMIND_CURSE /datum/status_effect/necropolis_curse/hivemind #define CURSE_BLINDING 1 //makes the edges of the target's screen obscured diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 33f58a710e6..75bcd5569c0 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -523,6 +523,29 @@ owner.log_message("threw [I] due to a Muscle Spasm", LOG_ATTACK) owner.throw_item(pick(targets)) +/datum/status_effect/convulsing + id = "convulsing" + duration = 150 + status_type = STATUS_EFFECT_REFRESH + alert_type = /obj/screen/alert/status_effect/convulsing + +/datum/status_effect/convulsing/on_creation(mob/living/zappy_boy) + . = ..() + to_chat(zappy_boy, "You feel a shock moving through your body! Your hands start shaking!") + +/datum/status_effect/convulsing/tick() + var/mob/living/carbon/H = owner + if(prob(40)) + var/obj/item/I = H.get_active_held_item() + if(I && H.dropItemToGround(I)) + H.visible_message("[H]'s hand convulses, and they drop their [I.name]!","Your hand convulses violently, and you drop what you were holding!") + H.jitteriness += 5 + +/obj/screen/alert/status_effect/convulsing + name = "Shaky Hands" + desc = "You've been zapped with something and your hands can't stop shaking! You can't seem to hold on to anything." + icon_state = "convulsing" + /datum/status_effect/dna_melt id = "dna_melt" duration = 600 diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 9499c07e140..f923cfb44c1 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -281,6 +281,13 @@ update_icon() return +/obj/item/defibrillator/compact/combat/loaded/nanotrasen + name = "elite nanotrasen defibrillator" + desc = "A belt-equipped state-of-the-art defibrillator. Can revive through spacesuits, has an experimental self-recharging battery, and can be utilized in combat via applying the paddles in a disarming or agressive manner." + icon_state = "defibnt" //needs defib inhand sprites + item_state = "defibnt" + paddle_type = /obj/item/twohanded/shockpaddles/syndicate/nanotrasen + //paddles /obj/item/twohanded/shockpaddles @@ -483,12 +490,14 @@ busy = TRUE M.visible_message("[user] has touched [M] with [src]!", \ "[user] has touched [M] with [src]!") - M.adjustStaminaLoss(50) - M.Paralyze(100) - M.updatehealth() //forces health update before next life tick //isn't this done by adjustStaminaLoss anyway? + M.adjustStaminaLoss(60) + M.Knockdown(75) + M.Jitter(50) + M.apply_status_effect(STATUS_EFFECT_CONVULSING) playsound(src, 'sound/machines/defib_zap.ogg', 50, TRUE, -1) - M.emote("gasp") - log_combat(user, M, "stunned", src) + if(HAS_TRAIT(M,MOB_ORGANIC)) + M.emote("gasp") + log_combat(user, M, "zapped", src) if(req_defib) defib.deductcharge(revivecost) cooldown = TRUE @@ -508,7 +517,7 @@ "You overcharge the paddles and begin to place them onto [H]'s chest...") busy = TRUE update_icon() - if(do_after(user, 30, target = H)) + if(do_after(user, 15, target = H)) user.visible_message("[user] places [src] on [H]'s chest.", "You place [src] on [H]'s chest and begin to charge them.") var/turf/T = get_turf(defib) @@ -517,7 +526,7 @@ T.audible_message("\The [defib] lets out an urgent beep and lets out a steadily rising hum...") else user.audible_message("[src] let out an urgent beep.") - if(do_after(user, 30, target = H)) //Takes longer due to overcharging + if(do_after(user, 15, target = H)) //Takes longer due to overcharging if(!H) busy = FALSE update_icon() @@ -678,13 +687,20 @@ /obj/item/twohanded/shockpaddles/syndicate name = "syndicate defibrillator paddles" - desc = "A pair of paddles used to revive deceased operatives. It possesses both the ability to penetrate armor and to deliver powerful or disabling shocks offensively." + desc = "A pair of paddles used to revive deceased operatives. They possess both the ability to penetrate armor and to deliver powerful or disabling shocks offensively." combat = TRUE icon = 'icons/obj/defib.dmi' icon_state = "syndiepaddles0" item_state = "syndiepaddles0" base_icon_state = "syndiepaddles" +/obj/item/twohanded/shockpaddles/syndicate/nanotrasen + name = "elite nanotrasen defibrillator paddles" + desc = "A pair of paddles used to revive deceased ERT members. They possess both the ability to penetrate armor and to deliver powerful or disabling shocks offensively." + icon_state = "ntpaddles0" + item_state = "ntpaddles0" + base_icon_state = "ntpaddles" + /obj/item/twohanded/shockpaddles/syndicate/cyborg req_defib = FALSE diff --git a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm index 4be0b3df370..165dac720c0 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm @@ -46,7 +46,7 @@ new /obj/item/storage/firstaid/fire(src) new /obj/item/storage/firstaid/brute(src) new /obj/item/storage/firstaid/regular(src) - new /obj/item/defibrillator/compact/combat/loaded(src) + new /obj/item/defibrillator/compact/combat/loaded/nanotrasen(src) new /mob/living/simple_animal/bot/medbot(src) /obj/structure/closet/secure_closet/ertEngi diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 0561641318f..a1113001231 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -3,8 +3,6 @@ //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, // eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. - - ///Set the jitter of a mob /mob/proc/Jitter(amount) jitteriness = max(jitteriness,amount,0) diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index 9f8a894f57a..177812d8639 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/inhands/equipment/medical_lefthand.dmi b/icons/mob/inhands/equipment/medical_lefthand.dmi index 1cc9305cebc..e26eb4e04da 100644 Binary files a/icons/mob/inhands/equipment/medical_lefthand.dmi and b/icons/mob/inhands/equipment/medical_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/medical_righthand.dmi b/icons/mob/inhands/equipment/medical_righthand.dmi index 6370c2179a3..ff4060e4284 100644 Binary files a/icons/mob/inhands/equipment/medical_righthand.dmi and b/icons/mob/inhands/equipment/medical_righthand.dmi differ diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi index 59b324f644a..f7ee72b5f56 100755 Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ diff --git a/icons/obj/defib.dmi b/icons/obj/defib.dmi index e78a2069b51..68a1f232114 100644 Binary files a/icons/obj/defib.dmi and b/icons/obj/defib.dmi differ