some modsuits now have some modules pinned by default (#72258)

## About The Pull Request
cleans up some modsuit code i dont like about their modules
removes mod theme blacklists, they are unused and weve not needed them
at all so far
adds support for premade suits to have modules they pin by default
the default pins currently are:

advanced suit: jetpack
loader suit: clamp, magnet, hydraulic arms
mining suit: sphere transformation
safeguard suit: jetpack
magnate suit: advanced jetpack
traitor suit: armor booster, jetpack
elite traitor suit: armor booster, advanced jetpack
nukie suit: armor booster, advanced jetpack
elite nukie suit: armor booster, advanced jetpack
spetsnaz pyro suit: armor booster, advanced jetpack, flamethrower
prototype suit: tether, kinesis
apocryphal suit: jetpack
chrono suit: timestopper, rewinder, timeline jumper, kinesis plus,
timeline eradication
ninja suit: advanced stealth, star dispenser, emp pulse, weapon recall,
adrenaline boost, energy net

## Why It's Good For The Game
quickens some stuff up

## Changelog
🆑
qol: some modsuits now have some modules pinned by default
/🆑
This commit is contained in:
Fikou
2022-12-28 04:37:36 -08:00
committed by GitHub
parent 3d4840b149
commit 0151eb46b9
6 changed files with 125 additions and 53 deletions
+6 -13
View File
@@ -78,8 +78,6 @@
var/list/mod_parts = list()
/// Associated list of parts that can overslot to their overslot (overslot means the part can cover another layer of clothing).
var/list/overslotting_parts = list()
/// Modules the MOD should spawn with.
var/list/initial_modules = list()
/// Modules the MOD currently possesses.
var/list/modules = list()
/// Currently used module.
@@ -87,7 +85,7 @@
/// AI mob inhabiting the MOD.
var/mob/living/silicon/ai/ai
/// Delay between moves as AI.
var/movedelay = 0
var/static/movedelay = 0
/// Cooldown for AI moves.
COOLDOWN_DECLARE(cooldown_mod_move)
/// Person wearing the MODsuit.
@@ -95,6 +93,8 @@
/obj/item/mod/control/Initialize(mapload, datum/mod_theme/new_theme, new_skin, obj/item/mod/core/new_core)
. = ..()
if(!movedelay)
movedelay = CONFIG_GET(number/movedelay/run_delay)
if(new_theme)
theme = new_theme
theme = GLOB.mod_themes[theme]
@@ -105,7 +105,6 @@
complexity_max = theme.complexity_max
ui_theme = theme.ui_theme
charge_drain = theme.charge_drain
initial_modules += theme.inbuilt_modules
wires = new /datum/wires/mod(src)
if(length(req_access))
locked = TRUE
@@ -136,12 +135,11 @@
RegisterSignal(part, COMSIG_PARENT_QDELETING, PROC_REF(on_part_deletion))
set_mod_skin(new_skin || theme.default_skin)
update_speed()
for(var/obj/item/mod/module/module as anything in initial_modules)
module = new module(src)
install(module)
RegisterSignal(src, COMSIG_ATOM_EXITED, PROC_REF(on_exit))
RegisterSignal(src, COMSIG_SPEED_POTION_APPLIED, PROC_REF(on_potion))
movedelay = CONFIG_GET(number/movedelay/run_delay)
for(var/obj/item/mod/module/module as anything in theme.inbuilt_modules)
module = new module(src)
install(module)
/obj/item/mod/control/Destroy()
if(active)
@@ -533,11 +531,6 @@
balloon_alert(user, "[new_module] incompatible with [old_module]!")
playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
if(is_type_in_list(new_module, theme.module_blacklist))
if(user)
balloon_alert(user, "[src] doesn't accept [new_module]!")
playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE)
return
var/complexity_with_module = complexity
complexity_with_module += new_module.complexity
if(complexity_with_module > complexity_max)
-2
View File
@@ -45,8 +45,6 @@
var/ui_theme = "ntos"
/// List of inbuilt modules. These are different from the pre-equipped suits, you should mainly use these for unremovable modules with 0 complexity.
var/list/inbuilt_modules = list()
/// Modules blacklisted from the MOD.
var/list/module_blacklist = list()
/// Allowed items in the chestplate's suit storage.
var/list/allowed_suit_storage = list()
/// List of skins with their appropriate clothing flags.
+116 -32
View File
@@ -5,17 +5,41 @@
var/applied_core = /obj/item/mod/core/standard
/// The cell we apply to the core. Only applies to standard core suits.
var/applied_cell = /obj/item/stock_parts/cell/high
/// List of modules we spawn with.
var/list/applied_modules = list()
/// Modules that we pin when the suit is installed for the first time, for convenience, can be applied or theme inbuilt modules.
var/list/default_pins = list()
/obj/item/mod/control/pre_equipped/Initialize(mapload, new_theme, new_skin, new_core)
for(var/module_to_pin in default_pins)
default_pins[module_to_pin] = list()
new_skin = applied_skin
new_core = new applied_core(src)
if(istype(new_core, /obj/item/mod/core/standard))
var/obj/item/mod/core/standard/cell_core = new_core
cell_core.cell = new applied_cell()
return ..()
. = ..()
for(var/obj/item/mod/module/module as anything in applied_modules)
module = new module(src)
install(module)
/obj/item/mod/control/pre_equipped/set_wearer(mob/living/carbon/human/user)
. = ..()
for(var/obj/item/mod/module/module as anything in modules)
if(!default_pins[module.type]) //this module isnt meant to be pinned by default
continue
if(REF(wearer) in default_pins[module.type]) //if we already had pinned once to this user, don care anymore
continue
default_pins[module.type] += REF(wearer)
module.pin(wearer)
/obj/item/mod/control/pre_equipped/uninstall(obj/item/mod/module/old_module, deleting)
. = ..()
if(default_pins[old_module.type])
default_pins -= old_module
/obj/item/mod/control/pre_equipped/standard
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/flashlight,
@@ -23,7 +47,7 @@
/obj/item/mod/control/pre_equipped/engineering
theme = /datum/mod_theme/engineering
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/rad_protection,
@@ -33,7 +57,7 @@
/obj/item/mod/control/pre_equipped/atmospheric
theme = /datum/mod_theme/atmospheric
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/rad_protection,
@@ -44,37 +68,48 @@
/obj/item/mod/control/pre_equipped/advanced
theme = /datum/mod_theme/advanced
applied_cell = /obj/item/stock_parts/cell/super
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/welding,
/obj/item/mod/module/rad_protection,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/jetpack,
)
default_pins = list(
/obj/item/mod/module/jetpack,
)
/obj/item/mod/control/pre_equipped/loader
theme = /datum/mod_theme/loader
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/paper_dispenser,
/obj/item/mod/module/stamp,
)
default_pins = list(
/obj/item/mod/module/clamp/loader,
/obj/item/mod/module/magnet,
/obj/item/mod/module/hydraulic,
)
/obj/item/mod/control/pre_equipped/mining
theme = /datum/mod_theme/mining
applied_core = /obj/item/mod/core/plasma
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/gps,
/obj/item/mod/module/orebag,
/obj/item/mod/module/clamp,
/obj/item/mod/module/drill,
)
default_pins = list(
/obj/item/mod/module/sphere_transform,
)
/obj/item/mod/control/pre_equipped/medical
theme = /datum/mod_theme/medical
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/health_analyzer,
@@ -84,7 +119,7 @@
/obj/item/mod/control/pre_equipped/rescue
theme = /datum/mod_theme/rescue
applied_cell = /obj/item/stock_parts/cell/super
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/health_analyzer,
@@ -94,7 +129,7 @@
/obj/item/mod/control/pre_equipped/research
theme = /datum/mod_theme/research
applied_cell = /obj/item/stock_parts/cell/super
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/welding,
/obj/item/mod/module/flashlight,
@@ -104,7 +139,7 @@
/obj/item/mod/control/pre_equipped/security
theme = /datum/mod_theme/security
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/flashlight,
@@ -116,7 +151,7 @@
/obj/item/mod/control/pre_equipped/safeguard
theme = /datum/mod_theme/safeguard
applied_cell = /obj/item/stock_parts/cell/super
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/flashlight,
@@ -125,21 +160,27 @@
/obj/item/mod/module/projectile_dampener,
/obj/item/mod/module/pepper_shoulders,
)
default_pins = list(
/obj/item/mod/module/jetpack,
)
/obj/item/mod/control/pre_equipped/magnate
theme = /datum/mod_theme/magnate
applied_cell = /obj/item/stock_parts/cell/hyper
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/hat_stabilizer,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/pathfinder,
)
default_pins = list(
/obj/item/mod/module/jetpack/advanced,
)
/obj/item/mod/control/pre_equipped/cosmohonk
theme = /datum/mod_theme/cosmohonk
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/waddle,
/obj/item/mod/module/bikehorn,
@@ -148,7 +189,7 @@
/obj/item/mod/control/pre_equipped/traitor
theme = /datum/mod_theme/syndicate
applied_cell = /obj/item/stock_parts/cell/super
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/syndicate,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
@@ -157,11 +198,15 @@
/obj/item/mod/module/flashlight,
/obj/item/mod/module/dna_lock,
)
default_pins = list(
/obj/item/mod/module/armor_booster,
/obj/item/mod/module/jetpack,
)
/obj/item/mod/control/pre_equipped/traitor_elite
theme = /datum/mod_theme/elite
applied_cell = /obj/item/stock_parts/cell/bluespace
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/syndicate,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
@@ -169,33 +214,45 @@
/obj/item/mod/module/flashlight,
/obj/item/mod/module/dna_lock,
)
default_pins = list(
/obj/item/mod/module/armor_booster,
/obj/item/mod/module/jetpack/advanced,
)
/obj/item/mod/control/pre_equipped/nuclear
theme = /datum/mod_theme/syndicate
applied_cell = /obj/item/stock_parts/cell/hyper
req_access = list(ACCESS_SYNDICATE)
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/syndicate,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/flashlight,
)
default_pins = list(
/obj/item/mod/module/armor_booster,
/obj/item/mod/module/jetpack/advanced,
)
/obj/item/mod/control/pre_equipped/elite
theme = /datum/mod_theme/elite
applied_cell = /obj/item/stock_parts/cell/bluespace
req_access = list(ACCESS_SYNDICATE)
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/syndicate,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/flashlight,
)
default_pins = list(
/obj/item/mod/module/armor_booster,
/obj/item/mod/module/jetpack/advanced,
)
/obj/item/mod/control/pre_equipped/elite/flamethrower
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/syndicate,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
@@ -204,11 +261,16 @@
/obj/item/mod/module/flashlight,
/obj/item/mod/module/flamethrower,
)
default_pins = list(
/obj/item/mod/module/armor_booster,
/obj/item/mod/module/jetpack/advanced,
/obj/item/mod/module/flamethrower,
)
/obj/item/mod/control/pre_equipped/infiltrator
theme = /datum/mod_theme/infiltrator
applied_cell = /obj/item/stock_parts/cell/super
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/quick_carry,
@@ -218,7 +280,7 @@
/obj/item/mod/control/pre_equipped/enchanted
theme = /datum/mod_theme/enchanted
applied_core = /obj/item/mod/core/infinite
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/energy_shield/wizard,
/obj/item/mod/module/emp_shield/advanced,
@@ -227,7 +289,7 @@
/obj/item/mod/control/pre_equipped/ninja
theme = /datum/mod_theme/ninja
applied_cell = /obj/item/stock_parts/cell/ninja
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/noslip,
/obj/item/mod/module/status_readout,
@@ -236,23 +298,35 @@
/obj/item/mod/module/dna_lock/reinforced,
/obj/item/mod/module/emp_shield/pulse,
)
default_pins = list(
/obj/item/mod/module/stealth/ninja,
/obj/item/mod/module/dispenser/ninja,
/obj/item/mod/module/emp_shield/pulse,
/obj/item/mod/module/weapon_recall,
/obj/item/mod/module/adrenaline_boost,
/obj/item/mod/module/energy_net,
)
/obj/item/mod/control/pre_equipped/prototype
theme = /datum/mod_theme/prototype
req_access = list(ACCESS_AWAY_GENERAL)
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage,
/obj/item/mod/module/welding,
/obj/item/mod/module/rad_protection,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/tether,
)
default_pins = list(
/obj/item/mod/module/tether,
/obj/item/mod/module/anomaly_locked/kinesis/prebuilt/prototype,
)
/obj/item/mod/control/pre_equipped/responsory
theme = /datum/mod_theme/responsory
applied_cell = /obj/item/stock_parts/cell/hyper
req_access = list(ACCESS_CENT_GENERAL)
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/welding,
/obj/item/mod/module/emp_shield,
@@ -265,8 +339,8 @@
var/additional_module = /obj/item/mod/module
/obj/item/mod/control/pre_equipped/responsory/Initialize(mapload, new_theme, new_skin, new_core)
initial_modules.Insert(1, insignia_type)
initial_modules.Add(additional_module)
applied_modules.Insert(1, insignia_type)
applied_modules.Add(additional_module)
return ..()
/obj/item/mod/control/pre_equipped/responsory/commander
@@ -299,7 +373,7 @@
/obj/item/mod/control/pre_equipped/responsory/inquisitory
applied_skin = "inquisitory"
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/anti_magic,
/obj/item/mod/module/storage/large_capacity,
/obj/item/mod/module/welding,
@@ -328,19 +402,22 @@
theme = /datum/mod_theme/apocryphal
applied_cell = /obj/item/stock_parts/cell/bluespace
req_access = list(ACCESS_CENT_SPECOPS)
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/bluespace,
/obj/item/mod/module/welding,
/obj/item/mod/module/emp_shield/advanced,
/obj/item/mod/module/magnetic_harness,
/obj/item/mod/module/jetpack,
)
default_pins = list(
/obj/item/mod/module/jetpack,
)
/obj/item/mod/control/pre_equipped/corporate
theme = /datum/mod_theme/corporate
applied_core = /obj/item/mod/core/infinite
req_access = list(ACCESS_CENT_SPECOPS)
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/bluespace,
/obj/item/mod/module/hat_stabilizer,
/obj/item/mod/module/magnetic_harness,
@@ -350,7 +427,7 @@
/obj/item/mod/control/pre_equipped/chrono
theme = /datum/mod_theme/chrono
applied_core = /obj/item/mod/core/infinite
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/eradication_lock,
/obj/item/mod/module/emp_shield,
/obj/item/mod/module/timeline_jumper,
@@ -359,11 +436,18 @@
/obj/item/mod/module/tem,
/obj/item/mod/module/anomaly_locked/kinesis/plus,
)
default_pins = list(
/obj/item/mod/module/timestopper,
/obj/item/mod/module/timeline_jumper,
/obj/item/mod/module/rewinder,
/obj/item/mod/module/tem,
/obj/item/mod/module/anomaly_locked/kinesis/plus,
)
/obj/item/mod/control/pre_equipped/debug
theme = /datum/mod_theme/debug
applied_core = /obj/item/mod/core/infinite
initial_modules = list( //one of every type of module, for testing if they all work correctly
applied_modules = list( //one of every type of module, for testing if they all work correctly
/obj/item/mod/module/storage/bluespace,
/obj/item/mod/module/welding,
/obj/item/mod/module/flashlight,
@@ -376,7 +460,7 @@
/obj/item/mod/control/pre_equipped/administrative
theme = /datum/mod_theme/administrative
applied_core = /obj/item/mod/core/infinite
initial_modules = list(
applied_modules = list(
/obj/item/mod/module/storage/bluespace,
/obj/item/mod/module/emp_shield/advanced,
/obj/item/mod/module/welding,
+1 -1
View File
@@ -25,7 +25,7 @@
"description" = module.desc,
"module_type" = module.module_type,
"module_active" = module.active,
"pinned" = module.pinned_to[user],
"pinned" = module.pinned_to[REF(user)],
"idle_power" = module.idle_power_cost,
"active_power" = module.active_power_cost,
"use_power" = module.use_power_cost,