Ventcrawling Item Whitelist Memory Savings (#18881)

* lets fix these

* adminbus

* organization
This commit is contained in:
Will
2025-12-11 06:51:32 -05:00
committed by GitHub
parent b2bdc9ce6e
commit afc9d5cfb5
10 changed files with 82 additions and 61 deletions
@@ -507,6 +507,7 @@
if(blob.mob_radio)
blob.mob_radio.forceMove(src)
equip_to_appropriate_slot(blob.mob_radio) // Actually put it back on the mob in a slot
blob.mob_radio = null
if(blob.myid)
blob.myid = null
@@ -572,6 +572,7 @@
if(blob.mob_radio)
blob.mob_radio.forceMove(src)
equip_to_appropriate_slot(blob.mob_radio) // Actually put it back on the mob in a slot
blob.mob_radio = null
if(blob.myid)
blob.myid = null
@@ -39,9 +39,6 @@ var/list/mob_hat_cache = list()
can_pull_size = ITEMSIZE_NO_CONTAINER
can_pull_mobs = MOB_PULL_SMALLER
can_enter_vent_with = list(
/obj,
/atom/movable/emissive_blocker)
mob_bump_flag = SIMPLE_ANIMAL
mob_swap_flags = SIMPLE_ANIMAL
@@ -80,6 +77,14 @@ var/list/mob_hat_cache = list()
/mob/living/silicon/robot/drone/is_sentient()
return FALSE
/mob/living/silicon/robot/drone/ventcrawl_get_item_whitelist()
// Yes this allows any object, yes it's silly. I don't know if it's ever been abused by drones though.
return list(
/atom/movable/emissive_blocker,
/atom/movable/screen,
/obj
)
/mob/living/silicon/robot/drone/construction
name = "construction drone"
icon_state = "constructiondrone"
@@ -22,9 +22,6 @@
can_pull_size = ITEMSIZE_NO_CONTAINER
can_pull_mobs = MOB_PULL_SMALLER
can_enter_vent_with = list(
/obj,
/atom/movable/emissive_blocker)
mob_always_swap = 1
@@ -60,42 +60,6 @@
allow_mind_transfer = TRUE
can_enter_vent_with = list(
/obj/item/implant,
/obj/item/radio/borg,
/obj/item/holder,
/obj/machinery/camera,
/obj/belly,
/obj/soulgem,
/atom/movable/screen,
/atom/movable/emissive_blocker,
/obj/item/material,
/obj/item/melee,
/obj/item/stack/,
/obj/item/tool,
/obj/item/reagent_containers/food,
/obj/item/coin,
/obj/item/aliencoin,
/obj/item/ore,
/obj/item/disk/nuclear,
/obj/item/toy,
/obj/item/card,
/obj/item/radio,
/obj/item/perfect_tele_beacon,
/obj/item/clipboard,
/obj/item/paper,
/obj/item/pen,
/obj/item/canvas,
/obj/item/paint_palette,
/obj/item/paint_brush,
/obj/item/camera,
/obj/item/photo,
/obj/item/camera_film,
/obj/item/taperecorder,
/obj/item/rectape
)
vore_active = 1
vore_capacity = 1
vore_bump_chance = 1
@@ -126,6 +90,24 @@
B.absorbchance = 1
B.escapechance = 15
/mob/living/simple_mob/vore/alienanimals/catslug/ventcrawl_get_item_whitelist()
return list(
VENTCRAWL_BASE_WHITELIST,
VENTCRAWL_VORE_WHITELIST,
VENTCRAWL_SMALLITEM_WHITELIST,
// Catslug unique items.
/obj/item/material,
/obj/item/melee,
/obj/item/stack/,
/obj/item/tool,
/obj/item/reagent_containers/food,
/obj/item/ore,
/obj/item/disk/nuclear,
/obj/item/card,
/obj/item/radio,
/obj/item/perfect_tele_beacon,
)
/datum/ai_holder/simple_mob/melee/evasive/catslug
hostile = FALSE
cooperative = FALSE
@@ -80,8 +80,6 @@ var/list/_slime_default_emotes = list(
var/injection_amount = 5 // This determines how much.
var/mood = ":3" // Icon to use to display 'mood', as an overlay.
can_enter_vent_with = list(/obj/item/clothing/head, /obj/soulgem)
can_be_drop_prey = FALSE
species_sounds = "Slime"
@@ -109,6 +107,14 @@ var/list/_slime_default_emotes = list(
drop_hat()
return ..()
/mob/living/silicon/robot/drone/ventcrawl_get_item_whitelist()
return list(
VENTCRAWL_BASE_WHITELIST,
VENTCRAWL_VORE_WHITELIST,
// Slime unique items
/obj/item/clothing/head,
)
/mob/living/simple_mob/slime/death()
// Make dead slimes stop glowing.
glow_toggle = FALSE
+2
View File
@@ -182,6 +182,8 @@
var/voice_name = "unidentifiable voice"
var/list/ventcraw_item_admin_allow = null // If this is a list, it will be appended to the default list of items the mob is allowed to ventcrawl with
var/faction = FACTION_NEUTRAL //Used for checking whether hostile simple animals will attack you, possibly more stuff later
var/can_be_antagged = FALSE // To prevent pAIs/mice/etc from getting antag in autotraitor and future auto- modes. Uses inheritance instead of a bunch of typechecks.
+11 -17
View File
@@ -3,22 +3,6 @@ var/list/ventcrawl_machinery = list(
/obj/machinery/atmospherics/unary/vent_scrubber
)
// Vent crawling whitelisted items, whoo
/mob/living/var/list/can_enter_vent_with = list(
/obj/item/implant,
/obj/item/radio/borg,
/obj/item/radio/headset/mob_headset,
/obj/item/holder,
/obj/machinery/camera,
/obj/belly,
/obj/soulgem,
/atom/movable/screen,
/atom/movable/emissive_blocker,
/obj/item/rig/protean
)
//VOREStation Edit : added /obj/belly, to this list, CI is complaining about this in his indentation check. Added mob_headset for those with radios so there's no weirdness.
//mob/living/simple_mob/borer, //VORESTATION AI TEMPORARY REMOVAL REPLACE BACK IN LIST WHEN RESOLVED //VOREStation Edit
/mob/living/var/list/icon/pipes_shown = list()
/mob/living/var/last_played_vent
/mob/living/var/is_ventcrawling = FALSE
@@ -75,7 +59,10 @@ var/list/ventcrawl_machinery = list(
return TRUE
//Try to find it in our allowed list (istype includes subtypes)
var/listed = FALSE
for(var/test_type in can_enter_vent_with)
var/list/vent_allow = ventcrawl_get_item_whitelist()
if(islist(ventcraw_item_admin_allow)) // If mob has a list varedited onto it, we allow anything in this list as well
vent_allow += ventcraw_item_admin_allow
for(var/test_type in vent_allow)
if(istype(carried_item,test_type))
listed = TRUE
break
@@ -108,6 +95,13 @@ var/list/ventcrawl_machinery = list(
return FALSE
return TRUE
/mob/living/proc/ventcrawl_get_item_whitelist()
return list(
VENTCRAWL_BASE_WHITELIST,
VENTCRAWL_VORE_WHITELIST,
VENTCRAWL_SMALLITEM_WHITELIST
)
/mob/living/simple_mob/protean_blob/ventcrawl_carry()
for(var/atom/A in contents)
if(!is_allowed_vent_crawl_item(A))