Refactored the abstract meta propriety (#19797)

Refactored the abstract meta propriety into defines.
It's now more easy to spot/see abstract types thanks to the macro that
defines them.
Added a check on initialization of atoms to avoid spawning abstract
types.
Made the spawn_atom proc check for abstractness.
Made the spawn_atom proc use tgui_list for types list shorter than 1000
elements, which enables to search in them. It's too laggy on larger
lists so above 1000 it uses the builtin input.
Made the spawn_atom use a list subtraction instead of a double list,
it's lighter on memory and processing.
This commit is contained in:
Fluffy
2024-08-23 10:49:28 +00:00
committed by GitHub
parent cc5a31ab59
commit 41a05bc196
43 changed files with 177 additions and 146 deletions
@@ -1,5 +1,4 @@
/datum/gear/accessory
abstract_type = /datum/gear/accessory
ABSTRACT_TYPE(/datum/gear/accessory)
sort_category = "Accessories"
/datum/gear/accessory/locket
@@ -4,8 +4,7 @@
sort_category = "Modular Computers"
cost = 2
/datum/gear/computer/handheld
abstract_type = /datum/gear/computer/handheld
ABSTRACT_TYPE(/datum/gear/computer/handheld)
/datum/gear/computer/handheld/tablet
display_name = "tablet"
@@ -26,8 +25,7 @@
tablets["machinist tablet"] = /obj/item/modular_computer/handheld/preset/supply/machinist
gear_tweaks += new /datum/gear_tweak/path(tablets)
/datum/gear/computer/handheld/wristbound
abstract_type = /datum/gear/computer/handheld/wristbound
ABSTRACT_TYPE(/datum/gear/computer/handheld/wristbound)
/datum/gear/computer/handheld/wristbound/selection
display_name = "wristbound computer selection"
@@ -1,10 +1,8 @@
/datum/gear/religion
abstract_type = /datum/gear/religion
ABSTRACT_TYPE(/datum/gear/religion)
sort_category = "Religion"
flags = GEAR_HAS_DESC_SELECTION
/datum/gear/religion/trinary
abstract_type = /datum/gear/religion/trinary
ABSTRACT_TYPE(/datum/gear/religion/trinary)
religion = RELIGION_TRINARY
/datum/gear/religion/trinary/mask
@@ -105,8 +103,7 @@
slot = slot_tie
flags = GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION
/datum/gear/religion/dominia
abstract_type = /datum/gear/religion/dominia
ABSTRACT_TYPE(/datum/gear/religion/dominia)
religion = RELIGION_MOROZ
/datum/gear/religion/dominia/robe
@@ -219,8 +216,7 @@
dominiaicon["icon of the martyr, valeria"] = /obj/item/sign/painting_frame/martyr/valeria
gear_tweaks += new /datum/gear_tweak/path(dominiaicon)
/datum/gear/religion/assunzione
abstract_type = /datum/gear/religion/assunzione
ABSTRACT_TYPE(/datum/gear/religion/assunzione)
religion = RELIGION_LUCEISM
/datum/gear/religion/assunzione/scripture
@@ -380,8 +380,7 @@
jacket["departmental jacket, service"] = /obj/item/clothing/suit/storage/toggle/serv_dep_jacket
gear_tweaks += new /datum/gear_tweak/path(jacket)
/datum/gear/suit/miscellaneous
abstract_type = /datum/gear/suit/miscellaneous
ABSTRACT_TYPE(/datum/gear/suit/miscellaneous)
/datum/gear/suit/miscellaneous/peacoat
display_name = "peacoat"
@@ -8,8 +8,7 @@
flags = GEAR_NO_SELECTION
culture_restriction = list(/singleton/origin_item/culture/diona_sol)
/datum/gear/suit/diona
abstract_type = /datum/gear/suit/diona
ABSTRACT_TYPE(/datum/gear/suit/diona)
/datum/gear/suit/diona/eternal
display_name = "mesh weave robes"
@@ -128,8 +127,7 @@
sort_category = "Xenowear - Diona"
culture_restriction = list(/singleton/origin_item/culture/dionae_nralakk, /singleton/origin_item/culture/xrim)
/datum/gear/accessory/diona
abstract_type = /datum/gear/accessory/diona
ABSTRACT_TYPE(/datum/gear/accessory/diona)
/datum/gear/accessory/diona/skrell_passport
display_name = "dionae nralakk federation passport"
@@ -140,8 +140,7 @@
goldendeep["golden deep skirtsuit"] = /obj/item/clothing/under/goldendeep/skirtsuit
gear_tweaks += new /datum/gear_tweak/path(goldendeep)
/datum/gear/augment/machine
abstract_type = /datum/gear/augment/machine
ABSTRACT_TYPE(/datum/gear/augment/machine)
/datum/gear/augment/machine/gustatorial
display_name = "gustatorial centre (tongue)"
@@ -1,5 +1,4 @@
/datum/gear/ears/skrell
abstract_type = /datum/gear/ears/skrell
ABSTRACT_TYPE(/datum/gear/ears/skrell)
/datum/gear/ears/skrell/chains //Chains
display_name = "headtail chain selection"
@@ -298,8 +297,7 @@ var/datum/gear_tweak/social_credit/social_credit_tweak = new()
outfit["iqi medical"] = /obj/item/clothing/under/skrell/nralakk/iqi/med
gear_tweaks += new /datum/gear_tweak/path(outfit)
/datum/gear/suit/skrell
abstract_type = /datum/gear/suit/skrell
ABSTRACT_TYPE(/datum/gear/suit/skrell)
/datum/gear/suit/skrell/jacket
display_name = "work jackets"
@@ -333,8 +331,8 @@ var/datum/gear_tweak/social_credit/social_credit_tweak = new()
jacket["iqi medical"] = /obj/item/clothing/suit/storage/toggle/skrell/iqi/med
gear_tweaks += new /datum/gear_tweak/path(jacket)
/datum/gear/accessory/skrell
abstract_type = /datum/gear/accessory/skrell
ABSTRACT_TYPE(/datum/gear/accessory/skrell)
/datum/gear/accessory/skrell/starcoat
display_name = "star coat"
path = /obj/item/clothing/suit/storage/toggle/skrell/starcoat
@@ -1,5 +1,4 @@
/datum/gear/shoes/tajara
abstract_type = /datum/gear/shoes/tajara
ABSTRACT_TYPE(/datum/gear/shoes/tajara)
/datum/gear/shoes/tajara/boots
display_name = "tajaran boots selection"
@@ -232,8 +232,7 @@
whitelisted = list(SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BREEDER, SPECIES_VAURCA_BULWARK)
flags = GEAR_NO_SELECTION
/datum/gear/ears/vaurca
abstract_type = /datum/gear/ears/vaurca
ABSTRACT_TYPE(/datum/gear/ears/vaurca)
/datum/gear/ears/vaurca/rings
display_name = "bulwark horn rings"