Skip to content

Global AP rebalance (No longer shotgun nerf!) #6480

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
4 changes: 2 additions & 2 deletions code/game/atom_defense.dm
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
return round(atom_integrity / max_integrity, 0.01)

///returns the damage value of the attack after processing the atom's various armor protections
/atom/proc/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0)
/atom/proc/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0, armour_ignorance = 0)
if(!uses_integrity)
CRASH("/atom/proc/run_atom_armor was called on [src] without being implemented as a type that uses integrity!")
if(damage_flag == MELEE && damage_amount < damage_deflection)
Expand All @@ -75,7 +75,7 @@
if(damage_flag)
armor_protection = get_armor_rating(damage_flag)
if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor.
armor_protection = clamp(armor_protection - armour_penetration, min(armor_protection, 0), 100)
armor_protection = clamp(round((armor_protection * ((100 - armour_penetration) * 0.01)), 1) - armour_ignorance, min(armor_protection, 0), 100) //Armor penetration is now a percent reduction - I.E. 20 AP = armor is 20% *less* effective
return round(damage_amount * (100 - armor_protection) * 0.01, DAMAGE_PRECISION)

///the sound played when the atom is damaged.
Expand Down
2 changes: 2 additions & 0 deletions code/game/objects/items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@
var/slowdown = 0
///percentage of armour effectiveness to remove
var/armour_penetration = 0
///flat armour pen, like the way old armour pen worked. Applied AFTER percentage pen
var/armour_ignorance = 0
///Whether or not our object is easily hindered by the presence of armor
var/weak_against_armour = FALSE
/// The click cooldown given after attacking. Lower numbers means faster attacks
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/bear_armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
bear_target.armored = TRUE
bear_target.maxHealth += 60
bear_target.health += 60
bear_target.armour_penetration += 20
bear_target.armour_penetration += 40
bear_target.melee_damage_lower += 3
bear_target.melee_damage_upper += 5
bear_target.wound_bonus += 5
Expand Down
3 changes: 2 additions & 1 deletion code/game/objects/items/dualsaber.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
sharpness = SHARP_EDGED
w_class = WEIGHT_CLASS_SMALL
hitsound = SFX_SWING_HIT
armour_penetration = 35
armour_penetration = 75
armour_ignorance = 5
light_system = OVERLAY_LIGHT
light_outer_range = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD
light_color = LIGHT_COLOR_ELECTRIC_GREEN
Expand Down
3 changes: 2 additions & 1 deletion code/game/objects/items/melee/energy.dm
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,8 @@
throwforce = 5
throw_speed = 3
throw_range = 5
armour_penetration = 35
armour_penetration = 60
armour_ignorance = 5
block_chance = 50
block_sound = 'sound/weapons/block_blade.ogg'
embedding = list("embed_chance" = 75, "impact_pain_mult" = 10)
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/melee/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@
throwforce = 10
attack_speed = CLICK_CD_RAPID
block_chance = 20
armour_penetration = 65
armour_penetration = 100
attack_verb_continuous = list("slashes", "stings", "prickles", "pokes")
attack_verb_simple = list("slash", "sting", "prickle", "poke")
hitsound = 'sound/weapons/rapierhit.ogg'
Expand Down Expand Up @@ -461,6 +461,6 @@
throwforce = 8
block_chance = 10
block_sound = 'sound/weapons/genhit.ogg'
armour_penetration = 50
armour_penetration = 75
attack_verb_continuous = list("smacks", "strikes", "cracks", "beats")
attack_verb_simple = list("smack", "strike", "crack", "beat")
3 changes: 2 additions & 1 deletion code/game/objects/items/mop.dm
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,8 @@
throw_speed = 4
demolition_mod = 0.75
embedding = list("impact_pain_mult" = 2, "remove_pain_mult" = 4, "jostle_chance" = 2.5)
armour_penetration = 10
armour_penetration = 20
armour_ignorance = 10
attack_verb_continuous = list("mops", "stabs", "shanks", "jousts")
attack_verb_simple = list("mop", "stab", "shank", "joust")
sharpness = SHARP_EDGED //spears aren't pointy either. Just assume it's carved into a naginata-style blade
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/spear.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
throw_speed = 4
demolition_mod = 0.75
embedding = list("impact_pain_mult" = 2, "remove_pain_mult" = 4, "jostle_chance" = 2.5)
armour_penetration = 10
armour_penetration = 30
custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass= HALF_SHEET_MATERIAL_AMOUNT * 2)
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb_continuous = list("attacks", "pokes", "jabs", "tears", "lacerates", "gores")
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/weaponry.dm
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
throwforce = 20
throw_speed = 3
throw_range = 5
armour_penetration = 35
armour_penetration = 60

/obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS
desc = "<b><i>THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!</i></b>\nActivate it in your hand to point to the nearest victim."
Expand Down Expand Up @@ -377,7 +377,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
throwforce = 10 //10 + 2 (WEIGHT_CLASS_SMALL) * 4 (EMBEDDED_IMPACT_PAIN_MULTIPLIER) = 18 damage on hit due to guaranteed embedding
throw_speed = 4
embedding = list("pain_mult" = 4, "embed_chance" = 100, "fall_chance" = 0)
armour_penetration = 40
armour_penetration = 75

w_class = WEIGHT_CLASS_SMALL
sharpness = SHARP_POINTY
Expand Down
3 changes: 2 additions & 1 deletion code/modules/antagonists/heretic/items/heretic_blades.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
toolspeed = 0.375
demolition_mod = 0.8
hitsound = 'sound/weapons/bladeslice.ogg'
armour_penetration = 35
armour_penetration = 60
armour_ignorance = 5
attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "rends")
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "rend")
var/after_use_message = ""
Expand Down
2 changes: 1 addition & 1 deletion code/modules/antagonists/ninja/energy_katana.dm
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
force = 30
throwforce = 30
block_chance = 50
armour_penetration = 50
armour_penetration = 90
w_class = WEIGHT_CLASS_NORMAL
hitsound = 'sound/weapons/bladeslice.ogg'
pickup_sound = 'sound/items/unsheath.ogg'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
melee_damage_lower = 35
melee_attack_cooldown = CLICK_CD_MELEE
mob_size = MOB_SIZE_HUGE
armour_penetration = 30
armour_penetration = 75
pixel_x = -16
base_pixel_x = -16
maptext_height = 64
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/basic/trooper/pirate.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
name = "Pirate Swashbuckler"
melee_damage_lower = 30
melee_damage_upper = 30
armour_penetration = 35
armour_penetration = 75
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
attack_sound = 'sound/weapons/blade1.ogg'
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/basic/trooper/syndicate.dm
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
attack_verb_continuous = "slashes"
attack_verb_simple = "slash"
attack_sound = 'sound/weapons/blade1.ogg'
armour_penetration = 35
armour_penetration = 75
projectile_deflect_chance = 50
light_outer_range = 2
light_power = 2.5
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Difficulty: Hard
friendly_verb_simple = "stare down"
icon = 'icons/mob/simple/lavaland/96x96megafauna.dmi'
speak_emote = list("gurgles")
armour_penetration = 40
armour_penetration = 60
melee_damage_lower = 40
melee_damage_upper = 40
speed = 5
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
friendly_verb_simple = "stare down"
icon = 'icons/mob/simple/lavaland/96x96megafauna.dmi'
speak_emote = list("roars")
armour_penetration = 40
armour_penetration = 60
melee_damage_lower = 40
melee_damage_upper = 40
speed = 10
Expand Down Expand Up @@ -184,7 +184,7 @@
name = "death bolt"
icon_state = "chronobolt"
damage = 25
armour_penetration = 50
armour_penetration = 85
speed = 2
damage_type = BRUTE
pass_flags = PASSTABLE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
friendly_verb_continuous = "stares down"
friendly_verb_simple = "stare down"
speak_emote = list("roars")
armour_penetration = 40
armour_penetration = 60
melee_damage_lower = 40
melee_damage_upper = 40
speed = 5
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Difficulty: Hard
icon = 'icons/mob/simple/lavaland/hierophant_new.dmi'
faction = list(FACTION_BOSS) //asteroid mobs? get that shit out of my beautiful square house
speak_emote = list("preaches")
armour_penetration = 50
armour_penetration = 75
melee_damage_lower = 15
melee_damage_upper = 15
speed = 10
Expand Down
13 changes: 13 additions & 0 deletions code/modules/projectiles/projectile.dm
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,8 @@
var/armor_flag = BULLET
///How much armor this projectile pierces.
var/armour_penetration = 0
///Flat armor ignorance, applied AFTER penetration has reduced the amount of armor by %
var/armour_ignorance = 0
///Whether or not our bullet lacks penetrative power, and is easily stopped by armor.
var/weak_against_armour = FALSE
var/projectile_type = /obj/projectile
Expand Down Expand Up @@ -209,6 +211,11 @@
var/wound_falloff_tile
///How much we want to drop the embed_chance value, if we can embed, per tile, for falloff purposes
var/embed_falloff_tile
///Stamina and damage dropoff over distance, for shotguns and the like
///It is a flat value that is SUBTRACTED from damage for every tile it moves, I.E 5 dropoff means the projectile looses 5 damage for every tile it moves past the first tile
var/tile_dropoff = 0
var/tile_dropoff_s = 0

var/static/list/projectile_connections = list(
COMSIG_ATOM_ENTERED = PROC_REF(on_entered),
)
Expand Down Expand Up @@ -238,6 +245,12 @@
bare_wound_bonus = max(0, bare_wound_bonus + wound_falloff_tile)
if(embedding)
embedding["embed_chance"] += embed_falloff_tile
if(damage > 0)
damage -= tile_dropoff
if(stamina > 0)
stamina -= tile_dropoff_s
if(damage < 0 && stamina < 0)
qdel(src)
SEND_SIGNAL(src, COMSIG_PROJECTILE_RANGE)
if(range <= 0 && loc)
on_range()
Expand Down
2 changes: 1 addition & 1 deletion code/modules/projectiles/projectile/beams.dm
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
damage = 15

/obj/projectile/beam/weak/penetrator
armour_penetration = 50
armour_penetration = 80

/obj/projectile/beam/practice
name = "practice laser"
Expand Down
5 changes: 3 additions & 2 deletions code/modules/projectiles/projectile/bullets/lmg.dm
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,14 @@
/obj/projectile/bullet/mm712x82
name = "7.12x82mm bullet"
damage = 30
armour_penetration = 5
armour_penetration = 10
armour_ignorance = 10
wound_bonus = -50
wound_falloff_tile = 0

/obj/projectile/bullet/mm712x82/ap
name = "7.12x82mm armor-piercing bullet"
armour_penetration = 75
armour_penetration = 85
speed = 0.3 //monke edit

/obj/projectile/bullet/mm712x82/hp
Expand Down
4 changes: 2 additions & 2 deletions code/modules/projectiles/projectile/bullets/pistol.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
/obj/projectile/bullet/c9mm/ap
name = "9mm armor-piercing bullet"
damage = 27
armour_penetration = 40
armour_penetration = 75
embedding = null
shrapnel_type = null

Expand All @@ -31,7 +31,7 @@
/obj/projectile/bullet/c10mm/ap
name = "10mm armor-piercing bullet"
damage = 35
armour_penetration = 40
armour_penetration = 60

/obj/projectile/bullet/c10mm/hp
name = "10mm hollow-point bullet"
Expand Down
19 changes: 10 additions & 9 deletions code/modules/projectiles/projectile/bullets/rifle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/obj/projectile/bullet/a556
name = "5.56mm bullet"
damage = 35
armour_penetration = 30
armour_penetration = 75
wound_bonus = -40

/obj/projectile/bullet/a556/weak //centcom
Expand All @@ -13,22 +13,23 @@
name = "5.56mm phasic bullet"
icon_state = "gaussphase"
damage = 20
armour_penetration = 70
armour_penetration = 80
projectile_phasing = PASSTABLE | PASSGLASS | PASSGRILLE | PASSCLOSEDTURF | PASSMACHINE | PASSSTRUCTURE | PASSDOORS

// 7.62 (Nagant Rifle)

/obj/projectile/bullet/a762
name = "7.62 bullet"
damage = 60
armour_penetration = 10
armour_penetration = 0
armour_ignorance = 10
wound_bonus = -45
wound_falloff_tile = 0

/obj/projectile/bullet/a762/surplus
name = "7.62 surplus bullet"
weak_against_armour = TRUE //this is specifically more important for fighting carbons than fighting noncarbons. Against a simple mob, this is still a full force bullet
armour_penetration = 0
armour_ignorance = 0

/obj/projectile/bullet/a762/enchanted
name = "enchanted 7.62 bullet"
Expand All @@ -41,7 +42,7 @@
name = "harpoon"
icon_state = "gauss"
damage = 60
armour_penetration = 50
armour_penetration = 80
wound_bonus = -20
bare_wound_bonus = 80
embedding = list(embed_chance=100, fall_chance=3, jostle_chance=4, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=10)
Expand All @@ -54,7 +55,7 @@
damage = 30
speed = 0.4
dismemberment = 1 //because a 1 in 100 chance to just blow someones arm off is enough to be cool but also not enough to be reliable
armour_penetration = 10
armour_penetration = 20
wound_bonus = -20
bare_wound_bonus = 20
embedding = list("embed_chance" = 60, "fall_chance" = 2, "jostle_chance" = 2, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.4, "pain_mult" = 4, "jostle_pain_mult" = 2, "rip_time" = 10)
Expand All @@ -70,7 +71,7 @@
damage = 55
speed = 0.4
dismemberment = 2 //It's a budget sniper rifle.
armour_penetration = 20 //A bit better versus armor. Gets past anti laser armor or a vest, but doesnt wound proc on sec armor.
armour_penetration = 40 //A bit better versus armor.
wound_bonus = 10
bare_wound_bonus = 20
embedding = list("embed_chance" = 80, "fall_chance" = 1, "jostle_chance" = 3, "ignore_throwspeed_threshold" = TRUE, "pain_stam_pct" = 0.4, "pain_mult" = 3, "jostle_pain_mult" = 2, "rip_time" = 14)
Expand Down Expand Up @@ -99,7 +100,7 @@
speed = 0.6
dismemberment = 0 //goes through clean.
damage_type = BRUTE
armour_penetration = 30 //very pointy.
armour_penetration = 75 //very pointy.
projectile_piercing = PASSMOB //felt this might have been a nice compromise for the lower damage for the difficulty of getting it
wound_bonus = -15
bare_wound_bonus = 10
Expand Down Expand Up @@ -178,7 +179,7 @@
/obj/projectile/bullet/a223
name = ".223 bullet"
damage = 35
armour_penetration = 30
armour_penetration = 40
wound_bonus = -40

/obj/projectile/bullet/a223/weak //centcom
Expand Down
Loading
Loading