Skip to content

Commit

Permalink
Reverts Sojourn's PR 5029 armour changes (#69)
Browse files Browse the repository at this point in the history
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
<details>
<summary>
This PR aims to revert armour changes that happened in
sojourn-13#5029
</summary>
<hr>

This draft is here mostly to make it visible (not just a branch on my
fork), not sure why I have done it honestly but I was bored, I done it,
and now it is here.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
<hr>
</details>

This draft does the following :
- Reverts the armour code to pre 5029 (Bulk combat changes; Armor
Divisors, bullet balance, mob health/armor, etc.) PR state
- Keeps most of other changes that the PR made (like global health
modifiers for PVE factions or blocking)
- Adds ABSOLUTE armour to the armour calculation (currently disabled,
controlled by ABSOLUTE_ARMOR_EFFICIENCY variable)
- Adds RELATIVE_ARMOR_EFFICIENCY and ABSOLUTE_ARMOR_EFFICIENCY both
being multipliers for their respective armour type

What is not yet there :
- Overpenetration/halloss damage in PVE
- ablative_armor is not accounted for in armour calculations
- ALOT OF TESTING
- ALOT OF CLEANUP (Both armor_penetration and armor_list should have
their values set by defines among other things)

### SO WHY DID I DO IT
I don't know, but if I did it already might as well keep it around as a
draft ? perhaps it will be educational, or something

Technically we could merge it (after fixes) but as far as I understand
we are still testing and figuring out current armour system.

There probably are broken things, it feels like I frankensteined alot of
things together into a lump that works.
code\modules\mob\living\living_defense.dm above all will need a look at,
alot of commented out code for PVE interactions especially

## Changelog
:cl:
add: Added ABSOLUTE and RELATIVE armour to armour system
del: Removed old code for armour
tweak: tweaked armour
balance: rebalanced armour back to what it was (more or less)
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

---------

Co-authored-by: Takykardi <[email protected]>
Co-authored-by: valkyria-gk <[email protected]>
  • Loading branch information
3 people authored Nov 25, 2024
1 parent 87370aa commit 4c203e7
Show file tree
Hide file tree
Showing 230 changed files with 1,756 additions and 1,700 deletions.
22 changes: 11 additions & 11 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@
#define DEFAULT_ATTACK_COOLDOWN 8 //Default timeout for aggressive actions
#define DEFAULT_QUICK_COOLDOWN 4

#define FAST_WEAPON_COOLDOWN -2
#define FAST_WEAPON_COOLDOWN 3
#define DEFAULT_WEAPON_COOLDOWN 5
#define SLOW_WEAPON_COOLDOWN 7

Expand All @@ -116,23 +116,23 @@
// Mobs may have multiple types, attached to a max() operator. this is mostly because some 'miscelaneous' mobs are grouped more generally.
// If you don't see something here that seems to fit what you want, it may very well not have a define.
#define ROACH_HEALTH_MOD 1 //all roaches other than kaisers./
#define SPIDER_HEALTH_MOD 0.5 //all spiders other than reapers./
#define TERMITE_HEALTH_MOD 0.5 //all termites./
#define CAVEMOB_HEALTH_MOD 0.70 //wurms, Sargoyle./
#define AMGOLEM_HEALTH_MOD 0.70 //ameridien golems./
#define SPIDER_HEALTH_MOD 1 //all spiders other than reapers./
#define TERMITE_HEALTH_MOD 1 //all termites./
#define CAVEMOB_HEALTH_MOD 1 //wurms, Sargoyle./
#define AMGOLEM_HEALTH_MOD 1 //ameridien golems./
#define CHURCHMOB_HEALTH_MOD 1 //Rooks and other church related mobs.
#define XENOMORPH_HEALTH_MOD 1 //Xenos, duh. includes queens.
#define REPUBLICON_HEALTH_MOD 1 //preppers bots, including seekers and drones.
#define GREYSONWEAK_HEALTH_MOD 0.8 //Weak greyson bots
#define GREYSONROBUST_HEALTH_MOD 0.70 //Strong greyson bots
#define GREYSONWEAK_HEALTH_MOD 1 //Weak greyson bots
#define GREYSONROBUST_HEALTH_MOD 1 //Strong greyson bots
#define CARP_HEALTH_MOD 1 //All space carp./
#define VOIDWOLF_HEALTH_MOD 0.75 //all voidwolves other than reavers.
#define VOIDWOLF_HEALTH_MOD 1 //all voidwolves other than reavers.
#define MEGAFAUNA_HEALTH_MOD 1 //all megafauna other than levaiathans. Renders, mukwah, nightmare stalkers.
#define VOXBIRD_HEALTH_MOD 1 //all the tribal birds./
#define EXCELSIOR_HEALTH_MOD 0.7 //all the excelsior mobs, including mindslaves, and bears.
#define EXCELSIOR_HEALTH_MOD 1 //all the excelsior mobs, including mindslaves, and bears.
#define LEVIATHAN_HEALTH_MOD 1 //leviathans; Kaiser, Reaper, Patriarch, etc./
#define PSIMOB_HEALTH_MOD 0.5 //Deepmaints mobs other than bosses./
#define DVEY_HEALTH_MOD 0.6 //'corrupted beings', I.E Daskvey and their pets./
#define PSIMOB_HEALTH_MOD 1 //Deepmaints mobs other than bosses./
#define DVEY_HEALTH_MOD 1 //'corrupted beings', I.E Daskvey and their pets./
#define PSIBOSS_HEALTH_MOD 1 //deepmaints bosses, be careful with this one. it's generally preferable to manually tweak them because they're...yknow, uniques./


Expand Down
23 changes: 11 additions & 12 deletions code/__DEFINES/weapons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,13 @@
#define WEAPON_FORCE_GODLIKE 88 // currently only used by the energy axe, which can only be obtained via admin verbs

//Armor Penetration: Ignores a certain amount of armor for the purposes of inflicting damage.
#define ARMOR_PEN_GRAZING 1.2
#define ARMOR_PEN_SHALLOW 1.4
#define ARMOR_PEN_MODERATE 1.6
#define ARMOR_PEN_DEEP 1.8
#define ARMOR_PEN_HALF 2
#define ARMOR_PEN_EXTREME 2.5
#define ARMOR_PEN_MASSIVE 3
#define ARMOR_PEN_MAX 10
#define ARMOR_PEN_GRAZING 5
#define ARMOR_PEN_SHALLOW 10
#define ARMOR_PEN_MODERATE 15
#define ARMOR_PEN_DEEP 20
#define ARMOR_PEN_EXTREME 25
#define ARMOR_PEN_MASSIVE 30
#define ARMOR_PEN_HALF 50

//Wounding Multiplier: Increases damage taken, applied after armor.
#define WOUNDING_HARMLESS 0.25
Expand Down Expand Up @@ -84,10 +83,10 @@ Fire delay 15 = 40 rounds per minute
*/

//Quick defines for fire modes
#define FULL_AUTO_150 list(mode_name = "full auto", mode_desc = "150 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 4 , icon="auto")
#define FULL_AUTO_200 list(mode_name = "full auto", mode_desc = "200 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 3 , icon="auto")
#define FULL_AUTO_300 list(mode_name = "full auto", mode_desc = "300 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 2 , icon="auto")
#define FULL_AUTO_600 list(mode_name = "fuller auto", mode_desc = "600 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 1 , icon="fuller")
#define FULL_AUTO_150 list(mode_name = "full auto", mode_desc = "150 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 4 , icon="auto", damage_mult_add = -0.2)
#define FULL_AUTO_200 list(mode_name = "full auto", mode_desc = "200 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 3 , icon="auto", damage_mult_add = -0.2)
#define FULL_AUTO_300 list(mode_name = "full auto", mode_desc = "300 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 2 , icon="auto", damage_mult_add = -0.2)
#define FULL_AUTO_600 list(mode_name = "fuller auto", mode_desc = "600 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 1 , icon="fuller", damage_mult_add = -0.2)

#define FULL_AUTO_150_NOLOSS list(mode_name = "full auto", mode_desc = "150 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 4 , icon="auto")
#define FULL_AUTO_200_NOLOSS list(mode_name = "full auto", mode_desc = "200 rounds per minute", mode_type = /datum/firemode/automatic, fire_delay = 3 , icon="auto")
Expand Down
7 changes: 3 additions & 4 deletions code/_onclick/item_attack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ avoid code duplication. This includes items that may sometimes act as a standard
if(!i==0)
T = get_step(T, get_dir(user, A))
force = force * 0.8 //20% less damage each step forwards
armor_divisor -= 0.2 //Lower AD a little, per tile
armor_penetration -= 10 //Lower AP a little, per tile
//else
//message_admins("0th tile bypassed")

Expand Down Expand Up @@ -357,7 +357,6 @@ avoid code duplication. This includes items that may sometimes act as a standard

if (is_hot() >= HEAT_MOBIGNITE_THRESHOLD)
target.IgniteMob()

var/power = force
if(ishuman(user))
var/mob/living/carbon/human/H = user
Expand All @@ -366,8 +365,8 @@ avoid code duplication. This includes items that may sometimes act as a standard
power *= H.damage_multiplier
if(H.holding_back)
power /= 2
if(HULK in user.mutations)
power *= 2
// if(HULK in user.mutations)
// power *= 2
if(target.faction in effective_faction) // Is the mob's in our list of factions we're effective against?
power *= damage_mult // Increase the damage
target.hit_with_weapon(src, user, power, hit_zone)
Expand Down
20 changes: 10 additions & 10 deletions code/datums/stat_modifiers/mob_modifiers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
var/inherent_projectile_increment_adjustment

/// Any projectiles fired by the holder will have their armor penetration increased by this much, added after the mult
var/projectile_armor_divisor_adjustment
var/projectile_armor_penetration_adjustment
/// Any projectiles fired by the holder will have their armor penetration multiplied by this much, added first
var/projectile_armor_divisor_mult_increment
var/projectile_armor_penetration_mult_increment

/// Inverted, lower = higher speed
var/projectile_speed_increment_adjustment
Expand Down Expand Up @@ -66,10 +66,10 @@
for (var/entry in projectile_damage_mult)
livingholder.projectile_damage_mult[entry] = ZERO_OR_MORE((livingholder.projectile_damage_mult[entry] - projectile_damage_mult[entry]))

if (projectile_armor_divisor_adjustment)
livingholder.projectile_armor_divisor_adjustment = ZERO_OR_MORE((livingholder.projectile_armor_divisor_adjustment - projectile_armor_divisor_adjustment))
if (projectile_armor_divisor_mult_increment)
livingholder.projectile_armor_divisor_mult = ZERO_OR_MORE((livingholder.projectile_armor_divisor_mult - projectile_armor_divisor_mult_increment))
if (projectile_armor_penetration_adjustment)
livingholder.projectile_armor_penetration_adjustment = ZERO_OR_MORE((livingholder.projectile_armor_penetration_adjustment - projectile_armor_penetration_adjustment))
if (projectile_armor_penetration_mult_increment)
livingholder.projectile_armor_penetration_mult = ZERO_OR_MORE((livingholder.projectile_armor_penetration_mult - projectile_armor_penetration_mult_increment))

if (projectile_speed_increment_adjustment)
livingholder.projectile_speed_increment = ZERO_OR_MORE((livingholder.projectile_speed_increment - projectile_speed_increment_adjustment))
Expand Down Expand Up @@ -110,10 +110,10 @@
for (var/entry in projectile_damage_mult)
livingtarget.projectile_damage_mult[entry] = ZERO_OR_MORE((livingtarget.projectile_damage_mult[entry] + projectile_damage_mult[entry]))

if (projectile_armor_divisor_adjustment)
livingtarget.projectile_armor_divisor_adjustment = ZERO_OR_MORE((livingtarget.projectile_armor_divisor_adjustment + projectile_armor_divisor_adjustment))
if (projectile_armor_divisor_mult_increment)
livingtarget.projectile_armor_divisor_mult = ZERO_OR_MORE((livingtarget.projectile_armor_divisor_mult + projectile_armor_divisor_mult_increment))
if (projectile_armor_penetration_adjustment)
livingtarget.projectile_armor_penetration_adjustment = ZERO_OR_MORE((livingtarget.projectile_armor_penetration_adjustment + projectile_armor_penetration_adjustment))
if (projectile_armor_penetration_mult_increment)
livingtarget.projectile_armor_penetration_mult = ZERO_OR_MORE((livingtarget.projectile_armor_penetration_mult + projectile_armor_penetration_mult_increment))

if (projectile_speed_increment_adjustment)
livingtarget.projectile_speed_increment = ZERO_OR_MORE((livingtarget.projectile_speed_increment + projectile_speed_increment_adjustment))
Expand Down
36 changes: 18 additions & 18 deletions code/datums/stat_modifiers/modifiers/mob/superior/armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@

/datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/positive/low
armor_adjustment = list(
melee = 2,
bullet = 2,
energy = 2,
melee = 10,
bullet = 10,
energy = 10,
bomb = 10,
bio = 10,
rad = 10,
Expand All @@ -103,9 +103,9 @@

/datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/positive/medium
armor_adjustment = list(
melee = 3,
bullet = 3,
energy = 3,
melee = 20,
bullet = 20,
energy = 20,
bomb = 20,
bio = 20,
rad = 20,
Expand All @@ -114,9 +114,9 @@

/datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/positive/high
armor_adjustment = list(
melee = 4,
bullet = 4,
energy = 4,
melee = 30,
bullet = 30,
energy = 30,
bomb = 30,
bio = 30,
rad = 30,
Expand Down Expand Up @@ -161,9 +161,9 @@

/datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/negative/low
armor_adjustment = list(
melee = -2,
bullet = -2,
energy = -2,
melee = -10,
bullet = -10,
energy = -10,
bomb = -10,
bio = -10,
rad = -10,
Expand All @@ -172,9 +172,9 @@

/datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/negative/medium
armor_adjustment = list(
melee = -5,
bullet = -5,
energy = -5,
melee = -20,
bullet = -20,
energy = -20,
bomb = -20,
bio = -20,
rad = -20,
Expand All @@ -183,9 +183,9 @@

/datum/stat_modifier/mob/living/carbon/superior_animal/armor/flat/negative/high
armor_adjustment = list(
melee = -7,
bullet = -7,
energy = -7,
melee = -30,
bullet = -30,
energy = -30,
bomb = -30,
bio = -30,
rad = -30,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/datum/stat_modifier/mob/living/carbon/superior_animal/deadeye

inherent_projectile_mult_increment = 1 //a little more dps, but more easily avoided
projectile_armor_divisor_mult_increment = 1.25
projectile_armor_penetration_mult_increment = 0.25

delay_for_range_mult = 1.4
delay_for_rapid_range_mult = 1.4
Expand Down Expand Up @@ -34,7 +34,7 @@
rapid_fire_shooting_amount_mult = 2 //pretty noticable damage increase
delay_for_rapid_range_mult = 0.5 //half the delay

projectile_armor_divisor_mult_increment = -0.5 //significantly worse armor penetration because they're just shooting whatever part of you they can
projectile_armor_penetration_mult_increment = -0.5 //significantly worse armor penetration because they're just shooting whatever part of you they can

inherent_projectile_mult_increment = -0.3 // but still with higher DPS because theyre shooting you twice as much for 70% damage

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
/datum/stat_modifier/mob/living/carbon/superior_animal/biosilicified

armor_adjustment = list(
melee = 2,
bullet = 1,
melee = 10,
bullet = 5,
bomb = 10,
agony = 15 //Rubbers deal way less to us!
)

armor_divisor_increment = 1.5
armor_penetration_increment = 15

stattags = DEFENSE_STATTAG | MELEE_STATTAG

Expand All @@ -18,12 +18,12 @@
/datum/stat_modifier/mob/living/carbon/superior_animal/lambertian

armor_adjustment = list(
energy = 2,
agony = 1
energy = 10,
agony = 10
)

flash_resistances_increment = 2
armor_divisor_increment = 1.15
armor_penetration_increment = 5

stattags = DEFENSE_STATTAG

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,20 @@
/datum/stat_modifier/mob/living/carbon/superior_animal/aggressive/savage

armor_adjustment = list(
melee = -10,
bullet = -8,
energy = -8,
melee = -40,
bullet = -35,
energy = -35,
bomb = -40,
agony = 12 //it doesnt care, it just wants you dead
agony = 50 //it doesnt care, it just wants you dead
)

maxHealth_mult = 0.8 //80% hp

move_to_delay_increment = -1.3 // fast

projectile_armor_divisor_mult_increment = 0.5
armor_divisor_mult = 1.5
armor_divisor_zeroth = 0.1
projectile_armor_penetration_mult_increment = 0.5
armor_penetration_mult = 1.5
armor_penetration_zeroth = 0.1

melee_damage_lower_mult = 1.5
melee_damage_upper_mult = 1.5
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
)

flash_resistances_increment = 2
armor_divisor_increment = 1.25
armor_penetration_increment = 15

prefix = "Lustrous"

Expand All @@ -16,13 +16,13 @@
/datum/stat_modifier/mob/living/carbon/superior_animal/durable/spider

armor_adjustment = list(
melee = 1,
bullet = 1,
melee = 5,
bullet = 5,
bomb = 15,
agony = 7
agony = 30
)

armor_divisor_increment = 1.1
armor_penetration_increment = 5
flash_resistances_increment = 1
maxHealth_increment = 20

Expand All @@ -33,10 +33,10 @@
/datum/stat_modifier/mob/living/carbon/superior_animal/young/spider

armor_adjustment = list(
melee = -1,
bullet = -1,
energy = -1,
agony = -1
melee = -5,
bullet = -5,
energy = -5,
agony = -5
)

maxHealth_increment = -10
Expand All @@ -51,10 +51,10 @@
/datum/stat_modifier/mob/living/carbon/superior_animal/old/spider

armor_adjustment = list(
melee = 1,
bullet = 1,
melee = 5,
bullet = 5,
bomb = 10,
agony = 5 //just cant feel it
agony = 20 //just cant feel it
)

maxHealth_increment = 20 //life already seen them by
Expand All @@ -71,7 +71,7 @@
bomb = 5,
bio = 15,
rad = 15,
agony = 2
agony = 10
)

stattags = DEFENSE_STATTAG | MELEE_STATTAG
Expand Down
Loading

0 comments on commit 4c203e7

Please sign in to comment.