mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-08-26 20:57:06 +01:00
## About The Pull Request adds generic system for atom health / integrity / damage everything that isn't flagged with not-bludgeonable can, well, now be bludgeoned. ## Why It's Good For The Game more interactive game world through the means of making people able to break Everything. ## Changelog 🆑 add: atom damage - (almost) everything is now breakable. refactor: new /atom level materials system refactor: a lot of the combat system / click code refactor: melee attack styles /🆑 --------- Co-authored-by: silicons <no@you.cat>
75 lines
4.4 KiB
Plaintext
75 lines
4.4 KiB
Plaintext
//* This file is explicitly licensed under the MIT license. *//
|
|
//* Copyright (c) 2023 Citadel Station developers. *//
|
|
|
|
//? master file for balancing / efficiency tuning
|
|
|
|
//* Efficiency
|
|
|
|
/// scale a lathe's efficiency to upgrade level
|
|
#define MATERIAL_EFFICIENCY_LATHE_SCALE(tier) max(0, 1.1 - tier * 0.1)
|
|
|
|
//* Attributes - Resistance
|
|
|
|
/// used to signify an interpolation, with 'HOW_MUCH' being a linear gradient of how far between it is from B1 to B2
|
|
#define MATERIAL_RESISTANCE_BETWEEN(B1, B2, HOW_MUCH) (B1 + (B2 - B1) * HOW_MUCH)
|
|
|
|
/// the level at which vulnerability is comedically high
|
|
#define MATERIAL_RESISTANCE_CATASTROPHICALLY_VULNERABLE -800
|
|
#define MATERIAL_RESISTANCE_ABOVE_CATASTROPHICALLY_VULNERABLE(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_CATASTROPHICALLY_VULNERABLE, MATERIAL_RESISTANCE_SUPER_VULNERABLE, HOW_MUCH)
|
|
/// the level at which vulnerability is very high
|
|
#define MATERIAL_RESISTANCE_SUPER_VULNERABLE -400
|
|
#define MATERIAL_RESISTANCE_ABOVE_SUPER_VULNERABLE(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_SUPER_VULNERABLE, MATERIAL_RESISTANCE_VERY_VULNERABLE, HOW_MUCH)
|
|
/// the level at which vulnerability is high
|
|
#define MATERIAL_RESISTANCE_VERY_VULNERABLE -200
|
|
#define MATERIAL_RESISTANCE_ABOVE_VERY_VULNERABLE(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_VERY_VULNERABLE, MATERIAL_RESISTANCE_VULNERABLE, HOW_MUCH)
|
|
/// the level at which vulnerability is high
|
|
#define MATERIAL_RESISTANCE_VULNERABLE -100
|
|
#define MATERIAL_RESISTANCE_ABOVE_VULNERABLE(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_VULNERABLE, MATERIAL_RESISTANCE_SOMEWHAT_VULNERABLE, HOW_MUCH)
|
|
/// the level at which vulnerability is present
|
|
#define MATERIAL_RESISTANCE_SOMEWHAT_VULNERABLE -50
|
|
#define MATERIAL_RESISTANCE_ABOVE_SOMEWHAT_VULNERABLE(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_SOMEWHAT_VULNERABLE, MATERIAL_RESISTANCE_NEGLIGIBLY_VULNERABLE, HOW_MUCH)
|
|
/// the level at which vulnerability is slightly there
|
|
#define MATERIAL_RESISTANCE_NEGLIGIBLY_VULNERABLE -25
|
|
#define MATERIAL_RESISTANCE_ABOVE_NEGLIGIBLY_VULNERABLE(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_NEGLIGIBLY_VULNERABLE, MATERIAL_RESISTANCE_NONE, HOW_MUCH)
|
|
/// baseline MATERIAL_RESISTANCE for nothing
|
|
#define MATERIAL_RESISTANCE_NONE 0
|
|
#define MATERIAL_RESISTANCE_ABOVE_NONE(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_NONE, MATERIAL_RESISTANCE_NEGLIGIBLE, HOW_MUCH)
|
|
/// the level at which resistance is barely there
|
|
#define MATERIAL_RESISTANCE_NEGLIGIBLE 25
|
|
#define MATERIAL_RESISTANCE_ABOVE_NEGLIGIBLE(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_NEGLIGIBLE, MATERIAL_RESISTANCE_LOW, HOW_MUCH)
|
|
/// the level at which resistance is workable
|
|
#define MATERIAL_RESISTANCE_LOW 50
|
|
#define MATERIAL_RESISTANCE_ABOVE_LOW(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_LOW, MATERIAL_RESISTANCE_MODERATE, HOW_MUCH)
|
|
/// the level at which resistance is good
|
|
#define MATERIAL_RESISTANCE_MODERATE 100
|
|
#define MATERIAL_RESISTANCE_ABOVE_MODERATE(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_MODERATE, MATERIAL_RESISTANCE_HIGH, HOW_MUCH)
|
|
/// the level at which resistance is high
|
|
#define MATERIAL_RESISTANCE_HIGH 200
|
|
#define MATERIAL_RESISTANCE_ABOVE_HIGH(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_HIGH, MATERIAL_RESISTANCE_EXTREME, HOW_MUCH)
|
|
/// the level at which resistance is very high
|
|
#define MATERIAL_RESISTANCE_EXTREME 400
|
|
#define MATERIAL_RESISTANCE_ABOVE_EXTREME(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_EXTREME, MATERIAL_RESISTANCE_IMPERMEABLE, HOW_MUCH)
|
|
/// the level at which resistance is nearly impermeable
|
|
#define MATERIAL_RESISTANCE_IMPERMEABLE 800
|
|
#define MATERIAL_RESISTANCE_ABOVE_IMPERMEABLE(HOW_MUCH) MATERIAL_RESISTANCE_BETWEEN(MATERIAL_RESISTANCE_IMPERMEABLE, 1600, HOW_MUCH)
|
|
|
|
//* Conductvitiy
|
|
/// relative_conductivity threshold considered NOCONDUCT
|
|
#define MATERIAL_CONDUCTIVITY_NOCONDUCT 0.05
|
|
|
|
//* Opacity
|
|
|
|
/// threshold for block
|
|
#define MATERIAL_OPACITY_THRESHOLD 0.6
|
|
/// opacity to alpha; uses quadratic falloff and a constant because we don't want stuff to just be invisible
|
|
#define MATERIAL_OPACITY_TO_ALPHA(opacity) max((255 * (1 - (1 - opacity)**2)), 25)
|
|
|
|
//* Radioactivity
|
|
|
|
#define MATERIAL_RADIOACTIVITY_MULTIPLIER_WALL 1.5
|
|
#define MATERIAL_RADIOACTIVITY_MULTIPLIER_GIRDER 1
|
|
#define MATERIAL_RADIOACTIVITY_MULTIPLIER_NORMAL 1
|
|
#define MATERIAL_RADIOACTIVITY_MULTIPLIER_GRILLE 0.33
|
|
#define MATERIAL_RADIOACTIVITY_MULTIPLIER_ITEM 0.25
|
|
#define MATERIAL_RADIOACTIVITY_MULTIPLIER_SHARD 0.25
|