mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-09 07:46:20 +00:00
## About The Pull Request Most of these changes are centered around removing `mod.wearer` references in module function bubble alerts. However, I cleaned up a few other things that I thought were easy fixes. ~~This PR should be testmerged~~ nah send it. I think I did a pretty good job testing, but there might be a bug or two I missed. (debug modsuit should allow conflicting modules and have unlimited complexity btw) ### Track who clicks the activate button * Adds `mob/activator` to `on_select()`, `activate()`, `deactivate()`, `used()`, `on_activation()`, `on_deactivation()` and `on_use()` * `mod_ui` now passes `ui.user`, which is who actually clicked the button in the UI.1 * module action proc now passes the person clicking. * **Alert bubbles:** Modifies many module code bubbles to pass the activation bubble text to `mob/activator` instead of `mob.wearer` so that pAIs get feedback on why clicking the button isn't working. ### Cargo clamp * **Clamp code cleanup:** The cargo clamp now has a variable for the max creature weight it can support, and the logic is changed around a bit to support this. * The cargo clamp uses an `accepted_items` typecache. ### Code cleanup * **Button malfunction chance** is controlled by a `MOD_MALFUNCTION_PROB` define. * **Pathfinder runtime:** `mod_control`'s `GetAccess()` now checks if there is an access before returning it. (This previously caused runtimes when using the pathfinder module if you didn't swipe your ID) * **Pathfinder code tweaks:** Reworks the code for the pathfinder module a bit. Activation logic is now stored in the module instead of the implant. The suit is prevented from being recalled by pAIs, which is controlled by a variable. * Adds `MODULE_ALLOW_UNWORN`, which lets you activate modules in suits that aren't currently being worn. Module activation code now smoothly supports modules being activated while not worn. * Chameleon module now works when unworn. This will probably be a Part 1, with a Part 2 to follow. Actions are kinda funky and could probably be cleaned up a little better. Plus, I want to make selectable modules theoretically usable by the AI, even if I leave it disabled. ## Why It's Good For The Game This PR doesn't contain any balance changes, and I manually disabled any new serious functionality that pAIs might gain. (Such as being able to activate the pathfinder implant) They *can* use the chameleon module with no wearer- but I'm going to consider this a bug that they couldn't before. Paves the way for more pAI modsuit nonsense I'm doing downsteam. ## Changelog 🆑 Stonetear refactor: MODsuit module code now knows who clicked the activation button. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
67 lines
2.7 KiB
Plaintext
67 lines
2.7 KiB
Plaintext
/// Default value for the max_complexity var on MODsuits
|
|
#define DEFAULT_MAX_COMPLEXITY 15
|
|
|
|
/// The default cell drain of a modsuit. The standard modsuit active power usage drains this much energy per modsuit second.
|
|
#define DEFAULT_CHARGE_DRAIN (0.005 * STANDARD_CELL_CHARGE) // A standard cell lasts 200 seconds with this on active power usage, while a high power one lasts 2,000 seconds.
|
|
|
|
/// Default time for a part of the suit to seal.
|
|
#define MOD_ACTIVATION_STEP_TIME (1 SECONDS)
|
|
|
|
/// How likely the UI is to fail when malfunctioning
|
|
#define MOD_MALFUNCTION_PROB 75
|
|
|
|
/// Passive module, just acts when put in naturally.
|
|
#define MODULE_PASSIVE 0
|
|
/// Usable module, does something when you press a button.
|
|
#define MODULE_USABLE 1
|
|
/// Toggle module, you turn it on/off and it does stuff.
|
|
#define MODULE_TOGGLE 2
|
|
/// Actively usable module, you may only have one selected at a time.
|
|
#define MODULE_ACTIVE 3
|
|
|
|
/// This module can be used during phaseout
|
|
#define MODULE_ALLOW_PHASEOUT (1<<0)
|
|
/// This module can be used while incapacitated
|
|
#define MODULE_ALLOW_INCAPACITATED (1<<1)
|
|
/// This module can be used while the suit is off
|
|
#define MODULE_ALLOW_INACTIVE (1<<2)
|
|
/// This module can be used (by button) while the suit is unworn
|
|
#define MODULE_ALLOW_UNWORN (1<<3)
|
|
|
|
#define UNSEALED_LAYER "unsealed_layer"
|
|
#define SEALED_LAYER "sealed_layer"
|
|
#define UNSEALED_CLOTHING "unsealed_clothing"
|
|
#define SEALED_CLOTHING "sealed_clothing"
|
|
#define UNSEALED_INVISIBILITY "unsealed_invisibility"
|
|
#define SEALED_INVISIBILITY "sealed_invisibility"
|
|
#define UNSEALED_COVER "unsealed_cover"
|
|
#define SEALED_COVER "sealed_cover"
|
|
#define CAN_OVERSLOT "can_overslot"
|
|
#define UNSEALED_MESSAGE "unsealed_message"
|
|
#define SEALED_MESSAGE "sealed_message"
|
|
|
|
//Defines used to override MOD clothing's icon and worn icon files in the skin.
|
|
#define MOD_ICON_OVERRIDE "mod_icon_override"
|
|
#define MOD_WORN_ICON_OVERRIDE "mod_worn_icon_override"
|
|
|
|
//Defines for MODlink frequencies
|
|
#define MODLINK_FREQ_NANOTRASEN "NT"
|
|
#define MODLINK_FREQ_SYNDICATE "SYND"
|
|
#define MODLINK_FREQ_CHARLIE "CHRL"
|
|
#define MODLINK_FREQ_CENTCOM "CC"
|
|
|
|
//Default text for different messages for the user.
|
|
#define HELMET_UNSEAL_MESSAGE "hisses open"
|
|
#define HELMET_SEAL_MESSAGE "hisses closed"
|
|
#define CHESTPLATE_UNSEAL_MESSAGE "releases your chest"
|
|
#define CHESTPLATE_SEAL_MESSAGE "cinches tightly around your chest"
|
|
#define GAUNTLET_UNSEAL_MESSAGE "become loose around your fingers"
|
|
#define GAUNTLET_SEAL_MESSAGE "tighten around your fingers and wrists"
|
|
#define BOOT_UNSEAL_MESSAGE "relax their grip on your legs"
|
|
#define BOOT_SEAL_MESSAGE "seal around your feet"
|
|
|
|
/// Global list of all /datum/mod_theme
|
|
GLOBAL_LIST_INIT(mod_themes, setup_mod_themes())
|
|
/// Global list of all ids associated to a /datum/mod_link instance
|
|
GLOBAL_LIST_EMPTY(mod_link_ids)
|