From d1a30fc4a0229c3bf21bf88abac5342ff6c0ebb3 Mon Sep 17 00:00:00 2001 From: Matt Atlas Date: Tue, 2 Mar 2021 20:40:03 +0100 Subject: [PATCH] Unnerf security's non-lethals, revert pain decay changes. (#11305) --- code/__defines/guns.dm | 4 +- code/game/objects/items/weapons/stunbaton.dm | 4 +- .../mob/living/carbon/human/human_defense.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 8 +-- code/modules/mob/living/living_defense.dm | 7 --- .../living/simple_animal/hostile/hivebot.dm | 5 +- .../living/simple_animal/hostile/sarlacc.dm | 3 +- code/modules/mob/mob_grab_specials.dm | 4 +- .../programs/security/guntracker.dm | 2 +- code/modules/organs/organ_external.dm | 3 +- code/modules/projectiles/guns/energy.dm | 1 + .../projectiles/guns/energy/disrupter.dm | 9 +-- code/modules/projectiles/pins.dm | 56 ++++++++----------- code/modules/projectiles/projectile.dm | 5 +- code/modules/projectiles/projectile/beams.dm | 13 ++--- .../modules/projectiles/projectile/bullets.dm | 2 +- code/modules/projectiles/projectile/energy.dm | 14 ++--- .../Chemistry-Reagents-Medicine.dm | 6 +- html/changelogs/mattatlas-bokunosensou.yml | 50 +++++++++++++++++ .../view/mcomputer/security/guntracker.vue | 8 +-- 20 files changed, 119 insertions(+), 87 deletions(-) create mode 100644 html/changelogs/mattatlas-bokunosensou.yml diff --git a/code/__defines/guns.dm b/code/__defines/guns.dm index d1b51aa9c91..3976fbe2ef3 100644 --- a/code/__defines/guns.dm +++ b/code/__defines/guns.dm @@ -9,7 +9,7 @@ #define SOUNDS_ION_ANY list('sound/effects/projectile_impact/ion_any.ogg') //Used in determining the currently permissable firemodes of wireless-control firing pins. -#define WIRELESS_PIN_AUTOMATIC 1 -#define WIRELESS_PIN_DISABLED 2 +#define WIRELESS_PIN_DISABLED 1 +#define WIRELESS_PIN_AUTOMATIC 2 #define WIRELESS_PIN_STUN 3 #define WIRELESS_PIN_LETHAL 4 \ No newline at end of file diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 30a06fe2cad..a81b454672f 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -18,7 +18,7 @@ origin_tech = list(TECH_COMBAT = 2) attack_verb = list("beaten") var/stunforce = 0 - var/agonyforce = 70 + var/agonyforce = 60 var/status = 0 //whether the thing is on or not var/obj/item/cell/bcell var/hitcost = 1000 @@ -188,7 +188,7 @@ L.visible_message("[L] has been prodded with \the [src] by [user]!") //stun effects - L.stun_effect_act(stun, agony, used_weapon = src, damage_flags = DAM_DISPERSED) + L.stun_effect_act(stun, agony, target_zone, src) playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 3c5ef6efe23..c830abcc55a 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -117,7 +117,7 @@ emp_act if (!def_zone) return 1.0 - var/siemens_coefficient = species.siemens_coefficient + var/siemens_coefficient = max(species.siemens_coefficient, 0) var/list/clothing_items = list(head, wear_mask, wear_suit, w_uniform, gloves, shoes) // What all are we checking? for(var/obj/item/clothing/C in clothing_items) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 129e09721b8..7457a736560 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -730,7 +730,7 @@ if(hallucination && !(species.flags & (NO_POISON|IS_PLANT))) handle_hallucinations() - if(get_shock() >= (species.total_health * 0.75)) + if(get_shock() >= (species.total_health * 0.6)) if(!stat) to_chat(src, "[species.halloss_message_self]") src.visible_message("[src] [species.halloss_message]") @@ -741,7 +741,7 @@ if(sleeping) stat = UNCONSCIOUS - adjustHalLoss(-7) + adjustHalLoss(-5) if (species.tail) animate_tail_reset() if(prob(2) && is_asystole() && isSynthetic()) @@ -777,11 +777,11 @@ if(resting) dizziness = max(0, dizziness - 15) jitteriness = max(0, jitteriness - 15) - adjustHalLoss(-5) + adjustHalLoss(-3) else dizziness = max(0, dizziness - 3) jitteriness = max(0, jitteriness - 3) - adjustHalLoss(-3) + adjustHalLoss(-1) //Other handle_statuses() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 44185c04e11..1585b3c4f40 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -37,13 +37,6 @@ src.visible_message("[src] triggers their deadman's switch!") signaler.signal() - //Stun Beams - if(P.taser_effect) - stun_effect_act(0, P.agony, def_zone, P) - to_chat(src, "You have been hit by [P]!") - qdel(P) - return - //Armor var/damage = P.damage var/flags = P.damage_flags() diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 52e00441e89..07d7bf9faea 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -193,8 +193,7 @@ /obj/item/projectile/beam/hivebot name = "electrical discharge" damage = 10 - damage_type = PAIN - taser_effect = 1 + damage_type = BURN agony = 30 armor_penetration = 40 muzzle_type = /obj/effect/projectile/muzzle/stun @@ -205,7 +204,6 @@ name = "harmless electrical discharge" damage = 0 damage_type = PAIN - taser_effect = TRUE agony = 0 /obj/item/projectile/beam/hivebot/incendiary @@ -213,7 +211,6 @@ damage_type = BURN damage = 20 incinerate = 5 - taser_effect = 0 muzzle_type = /obj/effect/projectile/muzzle/laser/blue tracer_type = /obj/effect/projectile/tracer/laser/blue impact_type = /obj/effect/projectile/impact/laser/blue diff --git a/code/modules/mob/living/simple_animal/hostile/sarlacc.dm b/code/modules/mob/living/simple_animal/hostile/sarlacc.dm index 8a74d2828ab..fa823549a90 100644 --- a/code/modules/mob/living/simple_animal/hostile/sarlacc.dm +++ b/code/modules/mob/living/simple_animal/hostile/sarlacc.dm @@ -361,8 +361,7 @@ /obj/item/projectile/energy/thoughtbubble name = "psionic blast" icon_state = "ion" - nodamage = 1 - taser_effect = 1 + nodamage = TRUE agony = 20 check_armor = "energy" pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE diff --git a/code/modules/mob/mob_grab_specials.dm b/code/modules/mob/mob_grab_specials.dm index 628097ea179..82a73daa78a 100644 --- a/code/modules/mob/mob_grab_specials.dm +++ b/code/modules/mob/mob_grab_specials.dm @@ -55,10 +55,10 @@ return attacker.visible_message("[attacker] [pick("bent", "twisted")] [target]'s [organ.name] into a jointlock!") - var/armor = 100 * target.get_blocked_ratio(target, BRUTE, damage = 30) + var/armor = 100 * affecting.get_blocked_ratio(target, BRUTE, damage = 30) if(armor < 70) to_chat(target, "You feel extreme pain!") - affecting.adjustHalLoss(Clamp(0, 60-affecting.getHalLoss(), 30)) //up to 60 halloss + affecting.adjustHalLoss(Clamp(0, 60 - affecting.getHalLoss(), 30)) //up to 60 halloss /obj/item/grab/proc/attack_eye(mob/living/carbon/human/target, mob/living/carbon/human/attacker) if(!istype(attacker)) diff --git a/code/modules/modular_computers/file_system/programs/security/guntracker.dm b/code/modules/modular_computers/file_system/programs/security/guntracker.dm index a3cbf3a436f..27ef545fe8e 100644 --- a/code/modules/modular_computers/file_system/programs/security/guntracker.dm +++ b/code/modules/modular_computers/file_system/programs/security/guntracker.dm @@ -52,7 +52,7 @@ "gun_name" = capitalize_first_letters(P.gun.name), "registered_info" = P.registered_user ? P.registered_user : "Unregistered", "ref" = "\ref[P]", - "lockstatus" = P.lockstatus + "lock_status" = P.lock_status ) wireless_firing_pins_data[++wireless_firing_pins_data.len] = guntracker_info diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index c0349938b3f..97cc4b8c92e 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1443,7 +1443,8 @@ Note that amputating the affected organ does in fact remove the infection from t amount -= (owner.chem_effects[CE_PAINKILLER]/3) if(amount <= 0) return - pain = max(0, min(max_damage, pain + amount)) + var/threshold = max_damage * 2 + pain = max(0, min(threshold, pain + amount)) if(owner && ((amount > 15 && prob(20)) || (amount > 30 && prob(60)))) owner.emote("scream") return pain-last_pain diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 1d3b0c59a3e..ae214abf305 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -23,6 +23,7 @@ var/projectile_type = /obj/item/projectile/beam/practice //also passed to turrets var/modifystate var/charge_meter = 1 //if set, the icon state will be chosen based on the current charge + var/list/required_firemode_auth //This list matches with firemode index, used to determine which firemodes get unlocked with what level of authorization. //self-recharging var/self_recharge = 0 //if set, the weapon will recharge itself diff --git a/code/modules/projectiles/guns/energy/disrupter.dm b/code/modules/projectiles/guns/energy/disrupter.dm index ec12cef41d1..efa78deddbf 100644 --- a/code/modules/projectiles/guns/energy/disrupter.dm +++ b/code/modules/projectiles/guns/energy/disrupter.dm @@ -15,17 +15,18 @@ matter = list(DEFAULT_WALL_MATERIAL = 2000) projectile_type = /obj/item/projectile/energy/disruptorstun secondary_projectile_type = /obj/item/projectile/energy/blaster - max_shots = 8 + max_shots = 10 charge_cost = 150 accuracy = 1 has_item_ratio = FALSE modifystate = "disruptorpistolstun" sel_mode = 1 - var/selectframecheck = FALSE firemodes = list( list(mode_name="stun", projectile_type=/obj/item/projectile/energy/disruptorstun, modifystate="disruptorpistolstun", fire_sound = 'sound/weapons/gunshot/bolter.ogg'), list(mode_name="lethal", projectile_type=/obj/item/projectile/energy/blaster/disruptor, modifystate="disruptorpistolkill", recoil = 1, fire_sound = 'sound/weapons/gunshot/bolter.ogg') ) + required_firemode_auth = list(WIRELESS_PIN_STUN, WIRELESS_PIN_LETHAL) + var/selectframecheck = FALSE /obj/item/gun/energy/disruptorpistol/security pin = /obj/item/device/firing_pin/wireless @@ -34,7 +35,7 @@ name = "miniature disruptor pistol" desc = "A Nanotrasen designed blaster pistol with two settings: stun and lethal. This is the miniature version." icon = 'icons/obj/guns/disruptorpistol/disruptorpistolc.dmi' - max_shots = 6 + max_shots = 8 force = 3 slot_flags = SLOT_BELT|SLOT_HOLSTER|SLOT_POCKET w_class = ITEMSIZE_SMALL @@ -46,7 +47,7 @@ name = "magnum disruptor pistol" desc = "A Nanotrasen designed blaster pistol with two settings: stun and lethal. This is the magnum version." icon = 'icons/obj/guns/disruptorpistol/disruptorpistolm.dmi' - max_shots = 12 + max_shots = 15 force = 6 /obj/item/gun/energy/disruptorpistol/magnum/security diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index c617135d158..21a68092f91 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -70,7 +70,7 @@ Firing pins as a rule can't be removed without replacing them, blame a really sh return 1 /obj/item/device/firing_pin/proc/auth_fail(mob/living/carbon/human/user) - user.show_message(fail_message, 1) + to_chat(user, fail_message) if(selfdestruct)//sound stolen from the lawgiver. todo, remove this from the lawgiver. there can only be one. user.show_message("SELF-DESTRUCTING...
", 1) visible_message("\The [gun] explodes!") @@ -235,11 +235,11 @@ var/list/wireless_firing_pins = list() //A list of all initialized wireless firi desc = "This firing pin is wirelessly controlled. On automatic mode it allow allows weapons to be fired on stun unless the alert level is elevated. Otherwise, it can be controlled from a firearm control console." fail_message = "The wireless-control firing pin clicks!" var/registered_user = null - var/lockstatus = WIRELESS_PIN_AUTOMATIC + var/lock_status = WIRELESS_PIN_AUTOMATIC /obj/item/device/firing_pin/wireless/examine_info(mob/user) var/wireless_description - switch(lockstatus) + switch(lock_status) if(WIRELESS_PIN_AUTOMATIC) wireless_description = "is in automatic mode" if(WIRELESS_PIN_DISABLED) @@ -248,7 +248,7 @@ var/list/wireless_firing_pins = list() //A list of all initialized wireless firi wireless_description = "is in stun-only mode" if(WIRELESS_PIN_LETHAL) wireless_description = "is in unrestricted mode" - to_chat(user, "The wireless-control firing pin [wireless_description].") + to_chat(user, SPAN_NOTICE("The wireless-control firing pin [wireless_description].")) /obj/item/device/firing_pin/wireless/Initialize() //Adds wireless pins to the list of initialized wireless firing pins. wireless_firing_pins += src @@ -259,9 +259,8 @@ var/list/wireless_firing_pins = list() //A list of all initialized wireless firi return ..() /* - The return of this pin_auth is dependent on the wireless pin's lockstatus. For the purposes of this, only energy projectiles - that have a taser_effect are considered "stun" projectiles. All ballistic firearms are considered as being lethal, regardless - of ammunition loaded. Behaviours should be as follows: + The return of this pin_auth is dependent on the wireless pin's lock_status. The required_firemode_auth list has to match up index-wise with the firemodes. + All ballistic firearms are considered as being lethal, regardless of ammunition loaded. Behaviours should be as follows: Automatic: The weapon will only fire on stun while the security level is Green or Blue. On Yellow, Red & Delta alert the weapon is unrestricted Disabled: The weapon will not fire under any circumstance. Stun-Only: The weapon will only fire on stun regardless of the current security level. @@ -269,81 +268,73 @@ var/list/wireless_firing_pins = list() //A list of all initialized wireless firi */ /obj/item/device/firing_pin/wireless/pin_auth(mob/living/user) if(!registered_user) - fail_message = "Unable to fire - User not registered" + fail_message = SPAN_WARNING("Unable to fire: no registered user detected.") return FALSE if(emagged) return TRUE - if(lockstatus == WIRELESS_PIN_DISABLED) - fail_message = "Unable to fire - Weapon Disabled" + if(lock_status == WIRELESS_PIN_DISABLED) + fail_message = SPAN_WARNING("Unable to fire: firearm remotely disabled.") return FALSE - else if(lockstatus == WIRELESS_PIN_LETHAL) + else if(lock_status == WIRELESS_PIN_LETHAL) return TRUE - else if(lockstatus == WIRELESS_PIN_STUN) + else if(lock_status == WIRELESS_PIN_STUN) if(istype(gun, /obj/item/gun/energy)) var/obj/item/gun/energy/EG = gun - var/obj/item/projectile/energy/P = new EG.projectile_type - if(!P) - fail_message = "Unable to fire - Internal Error" - return FALSE - if(!P.taser_effect) - fail_message = "Unable to fire - Weapon not in stun-mode" + if(EG.required_firemode_auth[EG.sel_mode] == WIRELESS_PIN_LETHAL) + fail_message = SPAN_WARNING("Unable to fire: firearm not in stun mode.") return FALSE return TRUE else - fail_message = "Unable to fire - Weapon has not stun-mode" + fail_message = SPAN_WARNING("Unable to fire: no stun mode detected.") return FALSE else //Automatic Mode if(istype(gun, /obj/item/gun/energy)) var/obj/item/gun/energy/EG = gun - var/obj/item/projectile/energy/P = new EG.projectile_type - if(!P) - fail_message = "Unable to fire - Internal Error" - return FALSE - if(P.taser_effect) //The gun can always be used on stun + if(EG.required_firemode_auth[EG.sel_mode] == WIRELESS_PIN_STUN) return TRUE else if (security_level == SEC_LEVEL_YELLOW || security_level == SEC_LEVEL_RED) return TRUE else - fail_message = "Unable to fire - Insufficient security level for lethal mode" + fail_message = SPAN_WARNING("Unable to fire: insufficient security level.") return FALSE else if (security_level == SEC_LEVEL_YELLOW || security_level == SEC_LEVEL_RED) return TRUE else - fail_message = "Unable to fire - Insufficient security level for lethal mode" + fail_message = SPAN_WARNING("Unable to fire: insufficient security level.") return FALSE -/obj/item/device/firing_pin/wireless/proc/set_mode(var/new_mode) // Changes the current lockstatus of the weapon, and sends a message and sfx to whoever is holding it. +/obj/item/device/firing_pin/wireless/proc/set_mode(var/new_mode) // Changes the current lock_status of the weapon, and sends a message and sfx to whoever is holding it. var/mob/user = get_holding_mob(src) - if(new_mode == lockstatus) + if(new_mode == lock_status) return else if(new_mode == WIRELESS_PIN_AUTOMATIC) playsound(user, 'sound/weapons/laser_safetyon.ogg') to_chat(user, SPAN_NOTICE("\The [gun.name]'s wireless-control firing pin is now set to automatic.")) - lockstatus = WIRELESS_PIN_AUTOMATIC + lock_status = WIRELESS_PIN_AUTOMATIC else if(new_mode == WIRELESS_PIN_DISABLED) playsound(user, 'sound/weapons/laser_safetyoff.ogg') to_chat(user, SPAN_WARNING("\The wireless-control firing pin locks \the [gun.name]'s trigger!")) - lockstatus = WIRELESS_PIN_DISABLED + lock_status = WIRELESS_PIN_DISABLED else if(new_mode == WIRELESS_PIN_STUN) playsound(user, 'sound/weapons/laser_safetyon.ogg') to_chat(user, SPAN_NOTICE("\The [gun.name]'s wireless-control firing pin is now set to stun only.")) - lockstatus = WIRELESS_PIN_STUN + lock_status = WIRELESS_PIN_STUN else if(new_mode == WIRELESS_PIN_LETHAL) playsound(user, 'sound/weapons/laser_safetyon.ogg') to_chat(user, SPAN_NOTICE("\The [gun.name]'s wireless-control firing pin is now unrestricted.")) - lockstatus = WIRELESS_PIN_LETHAL + lock_status = WIRELESS_PIN_LETHAL return @@ -355,6 +346,7 @@ var/list/wireless_firing_pins = list() //A list of all initialized wireless firi registered_user = null return TRUE to_chat(user, SPAN_NOTICE("You press your ID against the RFID reader and it chimes as it registers your identity.")) + playsound(user, 'sound/machines/chime.ogg', 20) registered_user = idcard.registered_name return TRUE return FALSE diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 288a4572e5f..99e5d31da2d 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -25,8 +25,6 @@ //used for shooting at blank range, you shouldn't be able to miss var/can_miss = 0 - var/taser_effect = 0 //If set then the projectile will apply it's agony damage using stun_effect_act() to mobs it hits, and other damage will be ignored - //Effects var/damage = 10 var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE, PAIN are the only things that should be in here @@ -121,7 +119,8 @@ if(hit_effect) new hit_effect(target.loc) - L.apply_effects(stun, weaken, paralyze, 0, stutter, eyeblur, drowsy, agony, incinerate, blocked) + L.apply_effects(0, weaken, paralyze, 0, stutter, eyeblur, drowsy, 0, incinerate, blocked) + L.stun_effect_act(stun, agony, def_zone, src, damage_flags) L.apply_damage(irradiate, IRRADIATE, damage_flags = DAM_DISPERSED) //radiation protection is handled separately from other armor types. return 1 diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index a54b0693fdc..cb7750d7489 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -170,12 +170,11 @@ /obj/item/projectile/beam/stun name = "stun beam" icon_state = "stun" - nodamage = 1 - taser_effect = 1 - sharp = 0 + damage = 1 + sharp = FALSE eyeblur = 1 - agony = 40 - damage_type = PAIN + agony = 45 + damage_type = BURN muzzle_type = /obj/effect/projectile/muzzle/stun tracer_type = /obj/effect/projectile/tracer/stun @@ -194,8 +193,8 @@ /obj/item/projectile/beam/mousegun name = "electrical arc" icon_state = "stun" - nodamage = 1 - damage_type = PAIN + damage = 1 + damage_type = BURN muzzle_type = /obj/effect/projectile/muzzle/stun tracer_type = /obj/effect/projectile/tracer/stun diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index fa41aef57af..e6b7a801dd0 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -184,7 +184,7 @@ //Overall less damage than slugs in exchange for more damage at very close range and more embedding /obj/item/projectile/bullet/pellet/shotgun name = "shrapnel" - damage = 30 + damage = 14 pellets = 6 range_step = 1 spread_step = 10 diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 38c205a78d9..4e8565cee50 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -50,7 +50,6 @@ icon_state = "spark" damage = 2 //Flavor. damage_type = BURN - taser_effect = 1 agony = 40 eyeblur = 1 //Damage will be handled on the MOB side, to prevent window shattering. @@ -58,7 +57,6 @@ /obj/item/projectile/energy/electrode/stunshot name = "stunshot" damage = 5 - taser_effect = 1 agony = 80 /obj/item/projectile/energy/declone @@ -78,13 +76,15 @@ /obj/item/projectile/energy/bolt name = "bolt" icon_state = "cbbolt" - damage_type = PAIN + damage = 1 + damage_type = BURN agony = 45 stutter = 10 /obj/item/projectile/energy/bolt/large name = "largebolt" - damage_type = PAIN + damage = 2 + damage_type = BURN agony = 60 /obj/item/projectile/energy/neurotoxin @@ -208,10 +208,10 @@ /obj/item/projectile/energy/disruptorstun name = "disruptor bolt" icon_state = "blue_laser" - agony = 30 + damage = 1 + agony = 40 speed = 0.4 - damage_type = PAIN // Can't blow your own head off with a stunbolt. - taser_effect = TRUE + damage_type = BURN eyeblur = TRUE pass_flags = PASSTABLE muzzle_type = /obj/effect/projectile/muzzle/bolt diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 4a4b41fe14a..6c36549fc41 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -1615,13 +1615,13 @@ /decl/reagent/adrenaline/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) if(alien == IS_DIONA) return - if(M.chem_doses[type] < 1) //not that effective after initial rush + if(M.chem_doses[type] < 0.2) //not that effective after initial rush M.add_chemical_effect(CE_PAINKILLER, min(15*REAGENT_VOLUME(holder, type), 35)) M.add_chemical_effect(CE_PULSE, 1) - else + else if(M.chem_doses[type] < 1) M.add_chemical_effect(CE_PAINKILLER, min(10*REAGENT_VOLUME(holder, type), 15)) M.add_chemical_effect(CE_PULSE, 2) - if(M.chem_doses[type] > 5) + if(M.chem_doses[type] > 10) M.make_jittery(5) if(REAGENT_VOLUME(holder, type) >= 5 && M.is_asystole()) remove_self(5, holder) diff --git a/html/changelogs/mattatlas-bokunosensou.yml b/html/changelogs/mattatlas-bokunosensou.yml new file mode 100644 index 00000000000..534113f9e8b --- /dev/null +++ b/html/changelogs/mattatlas-bokunosensou.yml @@ -0,0 +1,50 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: MattAtlas + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - experiment: "Human mobs now get knocked out by pain sooner; from 200 halloss to 120." + - experiment: "Pain decay nerfs have been reverted as well." + - tweak: "Disruptor projectiles have been buffed. They now knock down a human mob in about six shots, and they have 10 shots available before recharging." + - tweak: "Nerfed shotgun lethal pellets." + - tweak: "Adrenaline has been nerfed once again, now only having its full effect for a short amount of time. Its jittering now happens when the dose is very high, instead of at a mediocre amount." + - backend: "Reworked how disruptor lethal authorization works in the backend. No user-facing changes." + - tweak: "Touched up wireless firing mode failure messages and added a sound to gun registration." + - tweak: "All gun agony damage now goes through the siemens coefficient." + - tweak: "Stun baton pain damage has been slightly nerfed to compensate." + - tweak: "Security's non-lethal guns now do one burn damage. Think of it as flavour." diff --git a/vueui/src/components/view/mcomputer/security/guntracker.vue b/vueui/src/components/view/mcomputer/security/guntracker.vue index 1ec27b0f2c4..4e0c0776859 100644 --- a/vueui/src/components/view/mcomputer/security/guntracker.vue +++ b/vueui/src/components/view/mcomputer/security/guntracker.vue @@ -11,10 +11,10 @@ {{ gun.registered_info }} {{ gun.gun_name }} - Disabled - Automatic - Stun Only - Unrestricted + Disabled + Automatic + Stun Only + Unrestricted