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 @@