Skip to content

Commit

Permalink
Armor defines (#20563)
Browse files Browse the repository at this point in the history
Added armor defines
Converted raw strings use to defines
Added UT test to ensure people set the armor var correctly (to a list)

No player facing changes
  • Loading branch information
FluffyGhoster authored Mar 9, 2025
1 parent 660f3e9 commit c5dabb9
Show file tree
Hide file tree
Showing 109 changed files with 1,666 additions and 1,578 deletions.
28 changes: 28 additions & 0 deletions code/__DEFINES/combat.dm
Original file line number Diff line number Diff line change
@@ -1,3 +1,31 @@
//Damage flag defines //

/// Involves corrosive substances.
#define ACID "acid"
/// Involved in checking whether a disease can infect or spread. Also involved in xeno neurotoxin.
#define BIO "bio"
/// Involves a shockwave, usually from an explosion.
#define BOMB "bomb"
/// Involves a solid projectile.
#define BULLET "bullet"
/// Involves being eaten
#define CONSUME "consume"
/// Involves an EMP or energy-based projectile.
#define ENERGY "energy"
/// Involves fire or temperature extremes.
#define FIRE "fire"
/// Involves a laser.
#define LASER "laser"
/// Involves a melee attack or a thrown object.
#define MELEE "melee"
/// Involved in checking the likelihood of applying a wound to a mob.
#define WOUND "wound"
/// Aurora snowflake, radiations
#define RAD "rad"

#define ARMOR_ALL "all_damage_types"


//bullet_act() return values
#define BULLET_ACT_HIT "HIT" //It's a successful hit, whatever that means in the context of the thing it's hitting.
#define BULLET_ACT_BLOCK "BLOCK" //It's a blocked hit, whatever that means in the context of the thing it's hitting.
Expand Down
2 changes: 1 addition & 1 deletion code/__DEFINES/damage_organs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#define CUT "cut"
#define BRUISE "bruise"
#define PIERCE "pierce"
#define LASER "laser"
//#define LASER "laser"

#define DAMAGE_FLAG_EDGE 1
#define DAMAGE_FLAG_SHARP 2
Expand Down
18 changes: 9 additions & 9 deletions code/datums/components/armor/armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
if(isnull(armor_values[key]))
return 0
if(armor_flags & ARMOR_TYPE_RIG)
if(key == "bio" && sealed)
if(key == BIO && sealed)
return 100
return min(armor_values[key], 100)

Expand All @@ -90,23 +90,23 @@
switch(damage_type)
if(DAMAGE_BRUTE)
if(damage_flags & DAMAGE_FLAG_BULLET)
key = "bullet"
key = BULLET
else if(damage_flags & DAMAGE_FLAG_EXPLODE)
key = "bomb"
key = BOMB
else
key = "melee"
key = MELEE
if(DAMAGE_BURN)
if(damage_flags & DAMAGE_FLAG_LASER)
key = "laser"
key = LASER
else if(damage_flags & DAMAGE_FLAG_EXPLODE)
key = "bomb"
key = BOMB
else
key = "energy"
key = ENERGY
if (DAMAGE_TOXIN)
if(damage_flags & DAMAGE_FLAG_BIO)
key = "bio" // Otherwise just not blocked by default.
key = BIO // Otherwise just not blocked by default.
if (DAMAGE_RADIATION)
key = "rad"
key = RAD
return key

/datum/component/armor/toggle
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
return TRUE

/mob/proc/changeling_armor()
AddComponent(/datum/component/armor, list(melee = ARMOR_MELEE_RESISTANT, bullet = ARMOR_BALLISTIC_CARBINE, laser = ARMOR_LASER_MEDIUM))
AddComponent(/datum/component/armor, list(MELEE = ARMOR_MELEE_RESISTANT, BULLET = ARMOR_BALLISTIC_CARBINE, LASER = ARMOR_LASER_MEDIUM))
return TRUE

//removes the need to breathe
Expand Down
24 changes: 12 additions & 12 deletions code/game/gamemodes/cult/items/armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
desc = "A bulky armored voidsuit helmet, bristling with menacing spikes. It looks space proof."
icon_state = "cult_helmet"
armor = list(
melee = ARMOR_MELEE_VERY_HIGH,
bullet = ARMOR_BALLISTIC_CARBINE,
laser = ARMOR_LASER_RIFLE,
bomb = ARMOR_BOMB_PADDED,
bio = ARMOR_BIO_SHIELDED,
rad = ARMOR_RAD_RESISTANT
MELEE = ARMOR_MELEE_VERY_HIGH,
BULLET = ARMOR_BALLISTIC_CARBINE,
LASER = ARMOR_LASER_RIFLE,
BOMB = ARMOR_BOMB_PADDED,
BIO = ARMOR_BIO_SHIELDED,
RAD = ARMOR_RAD_RESISTANT
)
siemens_coefficient = 0
light_overlay = "helmet_light_dual_red"
Expand All @@ -43,12 +43,12 @@
allowed = list(/obj/item/book/tome, /obj/item/melee/cultblade, /obj/item/gun/energy/rifle/cult, /obj/item/tank, /obj/item/device/suit_cooling_unit)
slowdown = 1
armor = list(
melee = ARMOR_MELEE_VERY_HIGH,
bullet = ARMOR_BALLISTIC_CARBINE,
laser = ARMOR_LASER_RIFLE,
bomb = ARMOR_BOMB_PADDED,
bio = ARMOR_BIO_SHIELDED,
rad = ARMOR_RAD_RESISTANT
MELEE = ARMOR_MELEE_VERY_HIGH,
BULLET = ARMOR_BALLISTIC_CARBINE,
LASER = ARMOR_LASER_RIFLE,
BOMB = ARMOR_BOMB_PADDED,
BIO = ARMOR_BIO_SHIELDED,
RAD = ARMOR_RAD_RESISTANT
)
siemens_coefficient = 0
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS
Expand Down
30 changes: 15 additions & 15 deletions code/game/gamemodes/cult/items/clothes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
flags_inv = HIDEFACE|HIDEEARS|HIDEEYES
body_parts_covered = HEAD|EYES
armor = list(
melee = ARMOR_MELEE_RESISTANT,
bullet = ARMOR_BALLISTIC_CARBINE,
laser = ARMOR_LASER_RIFLE,
bomb = ARMOR_BOMB_PADDED,
bio = ARMOR_BIO_SMALL
MELEE = ARMOR_MELEE_RESISTANT,
BULLET = ARMOR_BALLISTIC_CARBINE,
LASER = ARMOR_LASER_RIFLE,
BOMB = ARMOR_BOMB_PADDED,
BIO = ARMOR_BIO_SMALL
)
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
Expand All @@ -33,11 +33,11 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
allowed = list(/obj/item/book/tome, /obj/item/melee/cultblade)
armor = list(
melee = ARMOR_MELEE_RESISTANT,
bullet = ARMOR_BALLISTIC_CARBINE,
laser = ARMOR_LASER_RIFLE,
bomb = ARMOR_BOMB_PADDED,
bio = ARMOR_BIO_SMALL
MELEE = ARMOR_MELEE_RESISTANT,
BULLET = ARMOR_BALLISTIC_CARBINE,
LASER = ARMOR_LASER_RIFLE,
BOMB = ARMOR_BOMB_PADDED,
BIO = ARMOR_BIO_SMALL
)
flags_inv = HIDEJUMPSUIT
siemens_coefficient = 0
Expand All @@ -62,11 +62,11 @@
silent = 1
siemens_coefficient = 0.35 //antags don't get exceptions, it's just heavy armor by magical standards
armor = list(
melee = ARMOR_MELEE_RESISTANT,
bullet = ARMOR_BALLISTIC_MEDIUM,
laser = ARMOR_LASER_MEDIUM,
bomb = ARMOR_BOMB_PADDED,
bio = ARMOR_BIO_SMALL
MELEE = ARMOR_MELEE_RESISTANT,
BULLET = ARMOR_BALLISTIC_MEDIUM,
LASER = ARMOR_LASER_MEDIUM,
BOMB = ARMOR_BOMB_PADDED,
BIO = ARMOR_BIO_SMALL
)
cold_protection = FEET
min_cold_protection_temperature = SHOE_MIN_COLD_PROTECTION_TEMPERATURE
Expand Down
64 changes: 32 additions & 32 deletions code/game/gamemodes/technomancer/clothing.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS|FEET|HANDS
allowed = list(/obj/item/tank)
armor = list(
melee = ARMOR_MELEE_MAJOR,
bullet = ARMOR_BALLISTIC_SMALL,
laser = ARMOR_LASER_PISTOL,
energy = ARMOR_ENERGY_RESISTANT,
bomb = ARMOR_BOMB_MINOR,
rad = ARMOR_RAD_RESISTANT
MELEE = ARMOR_MELEE_MAJOR,
BULLET = ARMOR_BALLISTIC_SMALL,
LASER = ARMOR_LASER_PISTOL,
ENERGY = ARMOR_ENERGY_RESISTANT,
BOMB = ARMOR_BOMB_MINOR,
RAD = ARMOR_RAD_RESISTANT
)
siemens_coefficient = 0.75

Expand All @@ -26,7 +26,7 @@
icon = 'icons/obj/clothing/technomancer.dmi'
contained_sprite = TRUE
armor = list(
melee = ARMOR_MELEE_MINOR,
MELEE = ARMOR_MELEE_MINOR,
)
siemens_coefficient = 0.3

Expand Down Expand Up @@ -54,7 +54,7 @@
icon_state = "initiate_hat"
item_state = "initiate_hat"
armor = list(
melee = ARMOR_MELEE_MINOR,
MELEE = ARMOR_MELEE_MINOR,
)
siemens_coefficient = 0.3
icon = 'icons/obj/clothing/technomancer.dmi'
Expand All @@ -78,40 +78,40 @@

/obj/item/clothing/under/chameleon/technomancer
armor = list(
melee = ARMOR_MELEE_MAJOR,
bullet = ARMOR_BALLISTIC_SMALL,
laser = ARMOR_LASER_PISTOL,
energy = ARMOR_ENERGY_RESISTANT,
bomb = ARMOR_BOMB_MINOR,
rad = ARMOR_RAD_RESISTANT
MELEE = ARMOR_MELEE_MAJOR,
BULLET = ARMOR_BALLISTIC_SMALL,
LASER = ARMOR_LASER_PISTOL,
ENERGY = ARMOR_ENERGY_RESISTANT,
BOMB = ARMOR_BOMB_MINOR,
RAD = ARMOR_RAD_RESISTANT
)

/obj/item/clothing/head/chameleon/technomancer
armor = list(
melee = ARMOR_MELEE_MAJOR,
bullet = ARMOR_BALLISTIC_SMALL,
laser = ARMOR_LASER_PISTOL,
energy = ARMOR_ENERGY_RESISTANT,
bomb = ARMOR_BOMB_MINOR,
rad = ARMOR_RAD_RESISTANT
MELEE = ARMOR_MELEE_MAJOR,
BULLET = ARMOR_BALLISTIC_SMALL,
LASER = ARMOR_LASER_PISTOL,
ENERGY = ARMOR_ENERGY_RESISTANT,
BOMB = ARMOR_BOMB_MINOR,
RAD = ARMOR_RAD_RESISTANT
)

/obj/item/clothing/shoes/chameleon/technomancer
armor = list(
melee = ARMOR_MELEE_MAJOR,
bullet = ARMOR_BALLISTIC_SMALL,
laser = ARMOR_LASER_PISTOL,
energy = ARMOR_ENERGY_RESISTANT,
bomb = ARMOR_BOMB_MINOR,
rad = ARMOR_RAD_RESISTANT
MELEE = ARMOR_MELEE_MAJOR,
BULLET = ARMOR_BALLISTIC_SMALL,
LASER = ARMOR_LASER_PISTOL,
ENERGY = ARMOR_ENERGY_RESISTANT,
BOMB = ARMOR_BOMB_MINOR,
RAD = ARMOR_RAD_RESISTANT
)

/obj/item/clothing/suit/chameleon/technomancer
armor = list(
melee = ARMOR_MELEE_MAJOR,
bullet = ARMOR_BALLISTIC_SMALL,
laser = ARMOR_LASER_PISTOL,
energy = ARMOR_ENERGY_RESISTANT,
bomb = ARMOR_BOMB_MINOR,
rad = ARMOR_RAD_RESISTANT
MELEE = ARMOR_MELEE_MAJOR,
BULLET = ARMOR_BALLISTIC_SMALL,
LASER = ARMOR_LASER_PISTOL,
ENERGY = ARMOR_ENERGY_RESISTANT,
BOMB = ARMOR_BOMB_MINOR,
RAD = ARMOR_RAD_RESISTANT
)
10 changes: 9 additions & 1 deletion code/game/gamemodes/technomancer/devices/shield_armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,15 @@
icon_state = "shield_armor_0"
blood_overlay_type = "armor"
slowdown = 0
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
armor = list(
MELEE = 0,
BULLET = 0,
LASER = 0,
ENERGY = 0,
BOMB = 0,
BIO = 0,
RAD = 0
)
action_button_name = "Toggle Shield Projector"
var/active = 0
var/damage_to_energy_multiplier = 50.0 //Determines how much energy to charge for blocking, e.g. 20 damage attack = 750 energy cost
Expand Down
10 changes: 9 additions & 1 deletion code/game/gamemodes/technomancer/devices/tesla_armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,15 @@
icon_state = "tesla_armor_1"
blood_overlay_type = "armor"
slowdown = 1
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
armor = list(
MELEE = 0,
BULLET = 0,
LASER = 0,
ENERGY = 0,
BOMB = 0,
BIO = 0,
RAD = 0
)
action_button_name = "Toggle Tesla Armor"
var/active = 1 //Determines if the armor will zap or block
var/ready = 1 //Determines if the next attack will be blocked, as well if a strong lightning bolt is sent out at the attacker.
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/weapons/material/material_armor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Protectiveness | Armor %
item_state = "material_armor"
contained_sprite = 1
armor = list(
melee = ARMOR_MELEE_MINOR
MELEE = ARMOR_MELEE_MINOR
)
pocket_slots = 1

Expand Down Expand Up @@ -98,7 +98,7 @@ Protectiveness | Armor %
icon_state = "bucket"
item_state = "bucket"
armor = list(
melee = ARMOR_MELEE_MINOR
MELEE = ARMOR_MELEE_MINOR
)
contained_sprite = 1

Expand Down
Loading

0 comments on commit c5dabb9

Please sign in to comment.