mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Co-authored-by: Selis <12716288+ItsSelis@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
581 lines
27 KiB
Plaintext
581 lines
27 KiB
Plaintext
//Since it didn't really belong in any other category, I'm putting this here
|
|
//This is for procs to replace all the goddamn 'in world's that are chilling around the code
|
|
|
|
var/global/list/player_list = list() //List of all mobs **with clients attached**. Excludes /mob/new_player
|
|
var/global/list/mob_list = list() //List of all mobs, including clientless
|
|
var/global/list/human_mob_list = list() //List of all human mobs and sub-types, including clientless
|
|
var/global/list/silicon_mob_list = list() //List of all silicon mobs, including clientless
|
|
var/global/list/ai_list = list() //List of all AIs, including clientless
|
|
var/global/list/living_mob_list = list() //List of all alive mobs, including clientless. Excludes /mob/new_player
|
|
var/global/list/dead_mob_list = list() //List of all dead mobs, including clientless. Excludes /mob/new_player
|
|
var/global/list/observer_mob_list = list() //List of all /mob/observer/dead, including clientless.
|
|
var/global/list/listening_objects = list() //List of all objects which care about receiving messages (communicators, radios, etc)
|
|
var/global/list/cleanbot_reserved_turfs = list() //List of all turfs currently targeted by some cleanbot
|
|
|
|
var/global/list/cable_list = list() //Index for all cables, so that powernets don't have to look through the entire world all the time
|
|
var/global/list/landmarks_list = list() //list of all landmarks created
|
|
var/global/list/event_triggers = list() //Associative list of creator_ckey:list(landmark references) for event triggers
|
|
var/global/list/surgery_steps = list() //list of all surgery steps |BS12
|
|
var/global/list/side_effects = list() //list of all medical sideeffects types by thier names |BS12
|
|
var/global/list/mechas_list = list() //list of all mechs. Used by hostile mobs target tracking.
|
|
var/global/list/joblist = list() //list of all jobstypes, minus borg and AI
|
|
|
|
#define all_genders_define_list list(MALE,FEMALE,PLURAL,NEUTER,HERM) //VOREStaton Edit
|
|
#define all_genders_text_list list("Male","Female","Plural","Neuter","Herm") //VOREStation Edit
|
|
#define pronoun_set_to_genders list(\
|
|
"He/Him" = MALE,\
|
|
"She/Her" = FEMALE,\
|
|
"It/Its" = NEUTER,\
|
|
"They/Them" = PLURAL,\
|
|
"Shi/Hir" = HERM\
|
|
)
|
|
#define genders_to_pronoun_set list(\
|
|
MALE = "He/Him",\
|
|
FEMALE = "She/Her",\
|
|
NEUTER = "It/Its",\
|
|
PLURAL = "They/Them",\
|
|
HERM = "Shi/Hir"\
|
|
)
|
|
|
|
var/list/mannequins_
|
|
|
|
// Times that players are allowed to respawn ("ckey" = world.time)
|
|
GLOBAL_LIST_EMPTY(respawn_timers)
|
|
|
|
// Holomaps
|
|
var/global/list/holomap_markers = list()
|
|
var/global/list/mapping_units = list()
|
|
var/global/list/mapping_beacons = list()
|
|
|
|
//Preferences stuff
|
|
//Hairstyles
|
|
var/global/list/hair_styles_list = list() //stores /datum/sprite_accessory/hair indexed by name
|
|
var/global/list/hair_styles_male_list = list()
|
|
var/global/list/hair_styles_female_list = list()
|
|
var/global/list/facial_hair_styles_list = list() //stores /datum/sprite_accessory/facial_hair indexed by name
|
|
var/global/list/facial_hair_styles_male_list = list()
|
|
var/global/list/facial_hair_styles_female_list = list()
|
|
var/global/list/skin_styles_female_list = list() //unused
|
|
var/global/list/body_marking_styles_list = list() //stores /datum/sprite_accessory/marking indexed by name
|
|
var/global/list/body_marking_nopersist_list = list() // Body marking styles, minus non-genetic markings and augments
|
|
var/global/list/ear_styles_list = list() // Stores /datum/sprite_accessory/ears indexed by type
|
|
var/global/list/tail_styles_list = list() // Stores /datum/sprite_accessory/tail indexed by type
|
|
var/global/list/wing_styles_list = list() // Stores /datum/sprite_accessory/wing indexed by type
|
|
|
|
GLOBAL_LIST_INIT(custom_species_bases, new) // Species that can be used for a Custom Species icon base
|
|
//Underwear
|
|
var/datum/category_collection/underwear/global_underwear = new()
|
|
|
|
//Customizables
|
|
GLOBAL_LIST_INIT(headsetlist, list("Standard","Bowman","Earbud"))
|
|
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt", "Messenger Bag", "Sports Bag", "Strapless Satchel")
|
|
var/global/list/pdachoicelist = list("Default", "Slim", "Old", "Rugged", "Holographic", "Wrist-Bound","Slider", "Vintage")
|
|
var/global/list/exclude_jobs = list(/datum/job/ai,/datum/job/cyborg)
|
|
|
|
// Visual nets
|
|
var/list/datum/visualnet/visual_nets = list()
|
|
var/datum/visualnet/camera/cameranet = new()
|
|
var/datum/visualnet/cult/cultnet = new()
|
|
var/datum/visualnet/ghost/ghostnet = new()
|
|
|
|
// Runes
|
|
var/global/list/rune_list = new()
|
|
var/global/list/escape_list = list()
|
|
var/global/list/endgame_exits = list()
|
|
var/global/list/endgame_safespawns = list()
|
|
|
|
var/global/list/syndicate_access = list(access_maint_tunnels, access_syndicate, access_external_airlocks)
|
|
|
|
// Ores (for mining)
|
|
GLOBAL_LIST_EMPTY(ore_data)
|
|
GLOBAL_LIST_EMPTY(alloy_data)
|
|
|
|
// Strings which corraspond to bodypart covering flags, useful for outputting what something covers.
|
|
var/global/list/string_part_flags = list(
|
|
"head" = HEAD,
|
|
"face" = FACE,
|
|
"eyes" = EYES,
|
|
"upper body" = UPPER_TORSO,
|
|
"lower body" = LOWER_TORSO,
|
|
"legs" = LEGS,
|
|
"feet" = FEET,
|
|
"arms" = ARMS,
|
|
"hands" = HANDS
|
|
)
|
|
|
|
// Strings which corraspond to slot flags, useful for outputting what slot something is.
|
|
var/global/list/string_slot_flags = list(
|
|
"back" = SLOT_BACK,
|
|
"face" = SLOT_MASK,
|
|
"waist" = SLOT_BELT,
|
|
"ID slot" = SLOT_ID,
|
|
"ears" = SLOT_EARS,
|
|
"eyes" = SLOT_EYES,
|
|
"hands" = SLOT_GLOVES,
|
|
"head" = SLOT_HEAD,
|
|
"feet" = SLOT_FEET,
|
|
"exo slot" = SLOT_OCLOTHING,
|
|
"body" = SLOT_ICLOTHING,
|
|
"uniform" = SLOT_TIE,
|
|
"holster" = SLOT_HOLSTER
|
|
)
|
|
|
|
GLOBAL_LIST_EMPTY(mannequins)
|
|
/proc/get_mannequin(var/ckey = "NULL")
|
|
var/mob/living/carbon/human/dummy/mannequin/M = GLOB.mannequins[ckey]
|
|
if(!istype(M))
|
|
GLOB.mannequins[ckey] = new /mob/living/carbon/human/dummy/mannequin(null)
|
|
M = GLOB.mannequins[ckey]
|
|
return M
|
|
|
|
/proc/del_mannequin(var/ckey = "NULL")
|
|
GLOB.mannequins-= ckey
|
|
|
|
//////////////////////////
|
|
/////Initial Building/////
|
|
//////////////////////////
|
|
|
|
/proc/makeDatumRefLists()
|
|
var/list/paths
|
|
|
|
//Hair - Initialise all /datum/sprite_accessory/hair into an list indexed by hair-style name
|
|
paths = subtypesof(/datum/sprite_accessory/hair)
|
|
for(var/path in paths)
|
|
var/datum/sprite_accessory/hair/H = new path()
|
|
hair_styles_list[H.name] = H
|
|
switch(H.gender)
|
|
if(MALE) hair_styles_male_list += H.name
|
|
if(FEMALE) hair_styles_female_list += H.name
|
|
else
|
|
hair_styles_male_list += H.name
|
|
hair_styles_female_list += H.name
|
|
|
|
//Facial Hair - Initialise all /datum/sprite_accessory/facial_hair into an list indexed by facialhair-style name
|
|
paths = subtypesof(/datum/sprite_accessory/facial_hair)
|
|
for(var/path in paths)
|
|
var/datum/sprite_accessory/facial_hair/H = new path()
|
|
facial_hair_styles_list[H.name] = H
|
|
switch(H.gender)
|
|
if(MALE) facial_hair_styles_male_list += H.name
|
|
if(FEMALE) facial_hair_styles_female_list += H.name
|
|
else
|
|
facial_hair_styles_male_list += H.name
|
|
facial_hair_styles_female_list += H.name
|
|
|
|
//Body markings - Initialise all /datum/sprite_accessory/marking into an list indexed by marking name
|
|
paths = subtypesof(/datum/sprite_accessory/marking)
|
|
for(var/path in paths)
|
|
var/datum/sprite_accessory/marking/M = new path()
|
|
body_marking_styles_list[M.name] = M
|
|
if(!M.genetic)
|
|
body_marking_nopersist_list[M.name] = M
|
|
|
|
//Surgery Steps - Initialize all /datum/surgery_step into a list
|
|
paths = subtypesof(/datum/surgery_step)
|
|
for(var/T in paths)
|
|
var/datum/surgery_step/S = new T
|
|
surgery_steps += S
|
|
sort_surgeries()
|
|
|
|
//List of job. I can't believe this was calculated multiple times per tick!
|
|
paths = subtypesof(/datum/job)
|
|
paths -= exclude_jobs
|
|
for(var/T in paths)
|
|
var/datum/job/J = new T
|
|
joblist[J.title] = J
|
|
|
|
//Languages
|
|
paths = subtypesof(/datum/language)
|
|
for(var/T in paths)
|
|
var/datum/language/L = new T
|
|
if (isnull(GLOB.all_languages[L.name]))
|
|
GLOB.all_languages[L.name] = L
|
|
else
|
|
log_debug("Language name conflict! [T] is named [L.name], but that is taken by [GLOB.all_languages[L.name].type]")
|
|
if(isnull(GLOB.language_name_conflicts[L.name]))
|
|
GLOB.language_name_conflicts[L.name] = list(GLOB.all_languages[L.name])
|
|
GLOB.language_name_conflicts[L.name] += L
|
|
|
|
for (var/language_name in GLOB.all_languages)
|
|
var/datum/language/L = GLOB.all_languages[language_name]
|
|
if(!(L.flags & NONGLOBAL))
|
|
if(isnull(GLOB.language_keys[L.key]))
|
|
GLOB.language_keys[L.key] = L
|
|
else
|
|
log_debug("Language key conflict! [L] has key [L.key], but that is taken by [(GLOB.language_keys[L.key])]")
|
|
if(isnull(GLOB.language_key_conflicts[L.key]))
|
|
GLOB.language_key_conflicts[L.key] = list(GLOB.language_keys[L.key])
|
|
GLOB.language_key_conflicts[L.key] += L
|
|
|
|
//Species
|
|
var/rkey = 0
|
|
paths = subtypesof(/datum/species)
|
|
for(var/T in paths)
|
|
|
|
rkey++
|
|
|
|
var/datum/species/S = T
|
|
if(!initial(S.name))
|
|
continue
|
|
|
|
S = new T
|
|
S.race_key = rkey //Used in mob icon caching.
|
|
GLOB.all_species[S.name] = S
|
|
|
|
//Shakey shakey shake
|
|
sortTim(GLOB.all_species, GLOBAL_PROC_REF(cmp_species), associative = TRUE)
|
|
|
|
//Split up the rest
|
|
for(var/speciesname in GLOB.all_species)
|
|
var/datum/species/S = GLOB.all_species[speciesname]
|
|
if(!(S.spawn_flags & SPECIES_IS_RESTRICTED))
|
|
GLOB.playable_species += S.name
|
|
if(S.spawn_flags & SPECIES_IS_WHITELISTED)
|
|
GLOB.whitelisted_species += S.name
|
|
|
|
// Suit cyclers
|
|
paths = subtypesof(/datum/suit_cycler_choice/department)
|
|
for(var/datum/suit_cycler_choice/SCC as anything in paths)
|
|
if(!initial(SCC.name))
|
|
continue
|
|
GLOB.suit_cycler_departments += new SCC()
|
|
paths = subtypesof(/datum/suit_cycler_choice/species)
|
|
for(var/datum/suit_cycler_choice/SCC as anything in paths)
|
|
if(!initial(SCC.name))
|
|
continue
|
|
GLOB.suit_cycler_species += new SCC()
|
|
paths = subtypesof(/datum/suit_cycler_choice/department/emag)
|
|
for(var/datum/suit_cycler_choice/SCC as anything in paths)
|
|
if(!initial(SCC.name))
|
|
continue
|
|
GLOB.suit_cycler_emagged += new SCC()
|
|
|
|
//Ores
|
|
paths = subtypesof(/ore)
|
|
for(var/oretype in paths)
|
|
var/ore/OD = new oretype()
|
|
GLOB.ore_data[OD.name] = OD
|
|
|
|
paths = subtypesof(/datum/alloy)
|
|
for(var/alloytype in paths)
|
|
GLOB.alloy_data += new alloytype()
|
|
|
|
//Closet appearances
|
|
GLOB.closet_appearances = decls_repository.get_decls_of_type(/decl/closet_appearance)
|
|
|
|
paths = subtypesof(/datum/sprite_accessory/ears)
|
|
for(var/path in paths)
|
|
var/obj/item/clothing/head/instance = new path()
|
|
ear_styles_list[path] = instance
|
|
|
|
// Custom Tails
|
|
paths = subtypesof(/datum/sprite_accessory/tail) - /datum/sprite_accessory/tail/taur
|
|
for(var/path in paths)
|
|
var/datum/sprite_accessory/tail/instance = new path()
|
|
tail_styles_list[path] = instance
|
|
|
|
// Custom Wings
|
|
paths = subtypesof(/datum/sprite_accessory/wing)
|
|
for(var/path in paths)
|
|
var/datum/sprite_accessory/wing/instance = new path()
|
|
wing_styles_list[path] = instance
|
|
|
|
// VOREStation Add - Vore Modes!
|
|
paths = typesof(/datum/digest_mode)
|
|
for(var/T in paths)
|
|
var/datum/digest_mode/DM = new T
|
|
GLOB.digest_modes[DM.id] = DM
|
|
// VOREStation Add End
|
|
init_crafting_recipes(GLOB.crafting_recipes)
|
|
|
|
/*
|
|
// Custom species traits
|
|
paths = subtypesof(/datum/trait)
|
|
for(var/path in paths)
|
|
var/datum/trait/instance = new path()
|
|
if(!instance.name)
|
|
continue //A prototype or something
|
|
var/cost = instance.cost
|
|
traits_costs[path] = cost
|
|
all_traits[path] = instance
|
|
switch(cost)
|
|
if(-INFINITY to -0.1)
|
|
negative_traits[path] = instance
|
|
if(0)
|
|
neutral_traits[path] = instance
|
|
if(0.1 to INFINITY)
|
|
positive_traits[path] = instance
|
|
*/
|
|
|
|
// Custom species icon bases
|
|
var/list/blacklisted_icons = list(SPECIES_CUSTOM,SPECIES_PROMETHEAN) //VOREStation Edit
|
|
var/list/whitelisted_icons = list(SPECIES_FENNEC,SPECIES_XENOHYBRID,SPECIES_VOX,SPECIES_SHADEKIN) //CHOMPedit
|
|
for(var/species_name in GLOB.playable_species)
|
|
if(species_name in blacklisted_icons)
|
|
continue
|
|
var/datum/species/S = GLOB.all_species[species_name]
|
|
if(S.spawn_flags & SPECIES_IS_WHITELISTED)
|
|
continue
|
|
GLOB.custom_species_bases += species_name
|
|
for(var/species_name in whitelisted_icons)
|
|
GLOB.custom_species_bases += species_name
|
|
|
|
return 1 // Hooks must return 1
|
|
|
|
|
|
/// Inits the crafting recipe list, sorting crafting recipe requirements in the process.
|
|
/proc/init_crafting_recipes(list/crafting_recipes)
|
|
for(var/path in subtypesof(/datum/crafting_recipe))
|
|
var/datum/crafting_recipe/recipe = new path()
|
|
recipe.reqs = sortList(recipe.reqs, GLOBAL_PROC_REF(cmp_crafting_req_priority))
|
|
crafting_recipes += recipe
|
|
return crafting_recipes
|
|
/* // Uncomment to debug chemical reaction list.
|
|
/client/verb/debug_chemical_list()
|
|
|
|
for (var/reaction in chemical_reactions_list)
|
|
. += "chemical_reactions_list\[\"[reaction]\"\] = \"[chemical_reactions_list[reaction]]\"\n"
|
|
if(islist(chemical_reactions_list[reaction]))
|
|
var/list/L = chemical_reactions_list[reaction]
|
|
for(var/t in L)
|
|
. += " has: [t]\n"
|
|
to_world(.)
|
|
*/
|
|
//Hexidecimal numbers
|
|
var/global/list/hexNums = list("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")
|
|
|
|
/*
|
|
// Many global vars aren't GLOB type. This puts them there to be more easily inspected.
|
|
GLOBAL_LIST_EMPTY(legacy_globals)
|
|
|
|
/proc/populate_legacy_globals()
|
|
//Note: these lists cannot be changed to a new list anywhere in code!
|
|
//If they are, these will cause the old list to stay around!
|
|
//Check by searching for "<GLOBAL_NAME> =" in the entire codebase
|
|
GLOB.legacy_globals["player_list"] = player_list
|
|
GLOB.legacy_globals["mob_list"] = mob_list
|
|
GLOB.legacy_globals["human_mob_list"] = human_mob_list
|
|
GLOB.legacy_globals["silicon_mob_list"] = silicon_mob_list
|
|
GLOB.legacy_globals["ai_list"] = ai_list
|
|
GLOB.legacy_globals["living_mob_list"] = living_mob_list
|
|
GLOB.legacy_globals["dead_mob_list"] = dead_mob_list
|
|
GLOB.legacy_globals["observer_mob_list"] = observer_mob_list
|
|
GLOB.legacy_globals["listening_objects"] = listening_objects
|
|
GLOB.legacy_globals["cleanbot_reserved_turfs"] = cleanbot_reserved_turfs
|
|
GLOB.legacy_globals["cable_list"] = cable_list
|
|
GLOB.legacy_globals["landmarks_list"] = landmarks_list
|
|
GLOB.legacy_globals["event_triggers"] = event_triggers
|
|
GLOB.legacy_globals["side_effects"] = side_effects
|
|
GLOB.legacy_globals["mechas_list"] = mechas_list
|
|
GLOB.legacy_globals["mannequins_"] = mannequins_
|
|
//visual nets
|
|
GLOB.legacy_globals["visual_nets"] = visual_nets
|
|
GLOB.legacy_globals["cameranet"] = cameranet
|
|
GLOB.legacy_globals["cultnet"] = cultnet
|
|
GLOB.legacy_globals["item_tf_spawnpoints"] = item_tf_spawnpoints
|
|
GLOB.legacy_globals["existing_solargrubs"] = GLOB.existing_solargrubs
|
|
*/
|
|
|
|
var/global/list/selectable_footstep = list(
|
|
"Default" = FOOTSTEP_MOB_HUMAN,
|
|
"Claw" = FOOTSTEP_MOB_CLAW,
|
|
"Light Claw" = FOOTSTEP_MOB_TESHARI,
|
|
"Slither" = FOOTSTEP_MOB_SLITHER,
|
|
)
|
|
|
|
// Put any artifact effects that are duplicates, unique, or otherwise unwated in here! This prevents them from spawning via RNG.
|
|
var/global/list/blacklisted_artifact_effects = list(
|
|
/datum/artifact_effect/gas/sleeping,
|
|
/datum/artifact_effect/gas/oxy,
|
|
/datum/artifact_effect/gas/carbondiox,
|
|
/datum/artifact_effect/gas/fuel,
|
|
/datum/artifact_effect/gas/nitro,
|
|
/datum/artifact_effect/gas/phoron,
|
|
/datum/artifact_effect/extreme
|
|
)
|
|
|
|
//stuff that only synths can eat
|
|
var/global/list/edible_tech = list(/obj/item/cell,
|
|
/obj/item/circuitboard,
|
|
/obj/item/integrated_circuit,
|
|
/obj/item/broken_device,
|
|
/obj/item/brokenbug,
|
|
)
|
|
|
|
var/global/list/item_digestion_blacklist = list(
|
|
/obj/item/hand_tele,
|
|
/obj/item/card/id,
|
|
/obj/item/gun,
|
|
/obj/item/pinpointer,
|
|
/obj/item/clothing/shoes/magboots,
|
|
/obj/item/areaeditor/blueprints,
|
|
/obj/item/disk/nuclear,
|
|
/obj/item/perfect_tele_beacon,
|
|
/obj/item/organ/internal/brain/slime,
|
|
/obj/item/mmi/digital/posibrain,
|
|
/obj/item/mmi/digital/robot,
|
|
/obj/item/rig/protean)
|
|
|
|
var/global/list/item_tf_spawnpoints = list() // Global variable tracking which items are item tf spawnpoints
|
|
|
|
// Options for transforming into a different mob in virtual reality.
|
|
var/global/list/vr_mob_tf_options = list(
|
|
"Borg" = /mob/living/silicon/robot,
|
|
"Cortical borer" = /mob/living/simple_mob/animal/borer/non_antag,
|
|
"Hyena" = /mob/living/simple_mob/animal/hyena, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Giant spider" = /mob/living/simple_mob/animal/giant_spider/thermic,
|
|
"Armadillo" = /mob/living/simple_mob/animal/passive/armadillo, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Parrot" = /mob/living/simple_mob/animal/passive/bird/parrot,
|
|
"Cat" = /mob/living/simple_mob/animal/passive/cat,
|
|
"Corgi" = /mob/living/simple_mob/animal/passive/dog/corgi,
|
|
"Squirrel" = /mob/living/simple_mob/vore/squirrel,
|
|
"Frog" = /mob/living/simple_mob/vore/aggressive/frog,
|
|
"Seagull" =/mob/living/simple_mob/vore/seagull,
|
|
"Fox" = /mob/living/simple_mob/animal/passive/fox,
|
|
"Racoon" = /mob/living/simple_mob/animal/passive/raccoon_ch, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Shantak" = /mob/living/simple_mob/animal/sif/shantak,
|
|
"Goose" = /mob/living/simple_mob/animal/space/goose,
|
|
"Space shark" = /mob/living/simple_mob/animal/space/shark,
|
|
"Synx" = /mob/living/simple_mob/animal/synx, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Dire wolf" = /mob/living/simple_mob/vore/wolf/direwolf,
|
|
"Construct Artificer" = /mob/living/simple_mob/construct/artificer,
|
|
"Tech golem" = /mob/living/simple_mob/mechanical/technomancer_golem,
|
|
"Metroid" = /mob/living/simple_mob/metroid/juvenile/baby, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Otie" = /mob/living/simple_mob/vore/otie/cotie/chubby,
|
|
"Red-eyed Shadekin" = /mob/living/simple_mob/shadekin/red,
|
|
"Blue-eyed Shadekin" = /mob/living/simple_mob/shadekin/blue,
|
|
"Purple-eyed Shadekin" = /mob/living/simple_mob/shadekin/purple,
|
|
"Green-eyed Shadekin" = /mob/living/simple_mob/shadekin/green,
|
|
"Yellow-eyed Shadekin" = /mob/living/simple_mob/shadekin/yellow,
|
|
"Slime" = /mob/living/simple_mob/slime/xenobio/metal,
|
|
"Corrupt hound" = /mob/living/simple_mob/vore/aggressive/corrupthound,
|
|
"Deathclaw" = /mob/living/simple_mob/vore/aggressive/deathclaw/den, //Downstream uses /den variant here. //CHOMPStation Enable
|
|
"Weretiger" = /mob/living/simple_mob/vore/weretiger,
|
|
"Mimic" = /mob/living/simple_mob/vore/aggressive/mimic/floor/plating, //Downstream uses /floor/plating variant here //CHOMPStation Enable
|
|
"Giant rat" = /mob/living/simple_mob/vore/aggressive/rat,
|
|
"Catslug" = /mob/living/simple_mob/vore/alienanimals/catslug,
|
|
"Dust jumper" = /mob/living/simple_mob/vore/alienanimals/dustjumper,
|
|
"Space ghost" = /mob/living/simple_mob/vore/alienanimals/spooky_ghost,
|
|
"Teppi" = /mob/living/simple_mob/vore/alienanimals/teppi,
|
|
"Bee" = /mob/living/simple_mob/vore/bee,
|
|
"Dragon" = /mob/living/simple_mob/vore/bigdragon/friendly,
|
|
"Riftwalker" = /mob/living/simple_mob/vore/demon/wendigo, //Downstream uses /wendigo variant here //CHOMPStation Enable
|
|
"Horse" = /mob/living/simple_mob/vore/horse/big,
|
|
"Morph" = /mob/living/simple_mob/vore/morph,
|
|
"Leopardmander" = /mob/living/simple_mob/vore/leopardmander,
|
|
"Rabbit" = /mob/living/simple_mob/vore/rabbit,
|
|
"Red panda" = /mob/living/simple_mob/vore/redpanda,
|
|
"Sect drone" = /mob/living/simple_mob/vore/sect_drone,
|
|
"Armalis vox" = /mob/living/simple_mob/vox/armalis, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Xeno hunter" = /mob/living/simple_mob/xeno_ch/hunter, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Xeno queen" = /mob/living/simple_mob/xeno_ch/queen/maid, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Xeno sentinel" = /mob/living/simple_mob/xeno_ch/sentinel, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Space carp" = /mob/living/simple_mob/animal/space/carp,
|
|
"Jelly blob" = /mob/living/simple_mob/vore/jelly,
|
|
"SWOOPIE XL" = /mob/living/simple_mob/vore/aggressive/corrupthound/swoopie, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Abyss lurker" = /mob/living/simple_mob/vore/vore_hostile/abyss_lurker,
|
|
"Abyss leaper" = /mob/living/simple_mob/vore/vore_hostile/leaper,
|
|
"Gelatinous cube" = /mob/living/simple_mob/vore/vore_hostile/gelatinous_cube,
|
|
"Gryphon" = /mob/living/simple_mob/vore/gryphon //TODO: Port from Downstream //CHOMPStation Enable
|
|
)
|
|
|
|
var/global/list/vr_mob_spawner_options = list(
|
|
"Parrot" = /mob/living/simple_mob/animal/passive/bird/parrot,
|
|
"Rabbit" = /mob/living/simple_mob/vore/rabbit,
|
|
"Cat" = /mob/living/simple_mob/animal/passive/cat,
|
|
"Fox" = /mob/living/simple_mob/animal/passive/fox,
|
|
"Cow" = /mob/living/simple_mob/animal/passive/cow,
|
|
"Dog" = /mob/living/simple_mob/vore/woof,
|
|
"Horse" = /mob/living/simple_mob/vore/horse/big,
|
|
"Hippo" = /mob/living/simple_mob/vore/hippo,
|
|
"Sheep" = /mob/living/simple_mob/vore/sheep,
|
|
"Squirrel" = /mob/living/simple_mob/vore/squirrel,
|
|
"Red panda" = /mob/living/simple_mob/vore/redpanda,
|
|
"Fennec" = /mob/living/simple_mob/vore/fennec,
|
|
"Seagull" =/mob/living/simple_mob/vore/seagull,
|
|
"Corgi" = /mob/living/simple_mob/animal/passive/dog/corgi,
|
|
"Armadillo" = /mob/living/simple_mob/animal/passive/armadillo, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Racoon" = /mob/living/simple_mob/animal/passive/raccoon_ch, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Goose" = /mob/living/simple_mob/animal/space/goose,
|
|
"Frog" = /mob/living/simple_mob/vore/aggressive/frog,
|
|
"Dust jumper" = /mob/living/simple_mob/vore/alienanimals/dustjumper,
|
|
"Dire wolf" = /mob/living/simple_mob/vore/wolf/direwolf,
|
|
"Space bumblebee" = /mob/living/simple_mob/vore/bee,
|
|
"Space bear" = /mob/living/simple_mob/animal/space/bear,
|
|
"Otie" = /mob/living/simple_mob/vore/otie,
|
|
"Mutated otie" =/mob/living/simple_mob/vore/otie/feral,
|
|
"Red otie" = /mob/living/simple_mob/vore/otie/red,
|
|
"Giant rat" = /mob/living/simple_mob/vore/aggressive/rat,
|
|
"Giant snake" = /mob/living/simple_mob/vore/aggressive/giant_snake,
|
|
"Hyena" = /mob/living/simple_mob/animal/hyena, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Space shark" = /mob/living/simple_mob/animal/space/shark,
|
|
"Shantak" = /mob/living/simple_mob/animal/sif/shantak,
|
|
"Kururak" = /mob/living/simple_mob/animal/sif/kururak,
|
|
"Teppi" = /mob/living/simple_mob/vore/alienanimals/teppi,
|
|
"Slug" = /mob/living/simple_mob/vore/slug, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Catslug" = /mob/living/simple_mob/vore/alienanimals/catslug,
|
|
"Weretiger" = /mob/living/simple_mob/vore/weretiger,
|
|
"Dust jumper" = /mob/living/simple_mob/vore/alienanimals/dustjumper,
|
|
"Star treader" = /mob/living/simple_mob/vore/alienanimals/startreader,
|
|
"Space ghost" = /mob/living/simple_mob/vore/alienanimals/spooky_ghost,
|
|
"Space carp" = /mob/living/simple_mob/animal/space/carp,
|
|
"Space jelly fish" = /mob/living/simple_mob/vore/alienanimals/space_jellyfish,
|
|
"Abyss lurker" = /mob/living/simple_mob/vore/vore_hostile/abyss_lurker,
|
|
"Abyss leaper" = /mob/living/simple_mob/vore/vore_hostile/leaper,
|
|
"Gelatinous cube" = /mob/living/simple_mob/vore/vore_hostile/gelatinous_cube,
|
|
"Panther" = /mob/living/simple_mob/vore/aggressive/panther,
|
|
"Lizard man" = /mob/living/simple_mob/vore/aggressive/lizardman, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Pakkun" = /mob/living/simple_mob/vore/pakkun,
|
|
"Synx" = /mob/living/simple_mob/animal/synx, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Jelly blob" = /mob/living/simple_mob/vore/jelly,
|
|
"Voracious lizard" = /mob/living/simple_mob/vore/aggressive/dino,
|
|
"Baby metroid" = /mob/living/simple_mob/metroid/juvenile/baby, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Super metroid" = /mob/living/simple_mob/metroid/juvenile/super, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Alpha metroid" = /mob/living/simple_mob/metroid/juvenile/alpha, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Gamma metroid" = /mob/living/simple_mob/metroid/juvenile/gamma, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Zeta metroid" = /mob/living/simple_mob/metroid/juvenile/zeta, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Omega metroid" = /mob/living/simple_mob/metroid/juvenile/omega, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Queen metroid" = /mob/living/simple_mob/metroid/juvenile/queen, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Xeno hunter" = /mob/living/simple_mob/animal/space/alien,
|
|
"Xeno sentinel" = /mob/living/simple_mob/animal/space/alien/sentinel,
|
|
"Xeno Praetorian" = /mob/living/simple_mob/animal/space/alien/sentinel/praetorian,
|
|
"Xeno queen" = /mob/living/simple_mob/animal/space/alien/queen,
|
|
"Xeno Empress" = /mob/living/simple_mob/animal/space/alien/queen/empress,
|
|
"Xeno Queen Mother" = /mob/living/simple_mob/animal/space/alien/queen/empress/mother,
|
|
"Defanged xeno" = /mob/living/simple_mob/vore/xeno_defanged,
|
|
"Sect drone" = /mob/living/simple_mob/vore/sect_drone,
|
|
"Sect queen" = /mob/living/simple_mob/vore/sect_queen,
|
|
"Deathclaw" = /mob/living/simple_mob/vore/aggressive/deathclaw,
|
|
"Great White Wolf" = /mob/living/simple_mob/vore/greatwolf,
|
|
"Great Black Wolf" = /mob/living/simple_mob/vore/greatwolf/black,
|
|
"Solar grub" = /mob/living/simple_mob/vore/solargrub,
|
|
"Pitcher plant" = /mob/living/simple_mob/vore/pitcher_plant, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Red gummy kobold" = /mob/living/simple_mob/vore/candy/redcabold, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Blue gummy kobold" = /mob/living/simple_mob/vore/candy/bluecabold, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Yellow gummy kobold" = /mob/living/simple_mob/vore/candy/yellowcabold, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Marshmellow serpent" = /mob/living/simple_mob/vore/candy/marshmellowserpent, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Riftwalker" = /mob/living/simple_mob/vore/demon,
|
|
"Wendigo" = /mob/living/simple_mob/vore/demon/wendigo, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Shadekin" = /mob/living/simple_mob/shadekin,
|
|
"Catgirl" = /mob/living/simple_mob/vore/catgirl,
|
|
"Wolfgirl" = /mob/living/simple_mob/vore/wolfgirl,
|
|
"Wolftaur" = /mob/living/simple_mob/vore/wolftaur,
|
|
"Lamia" = /mob/living/simple_mob/vore/lamia,
|
|
"Corrupt hound" = /mob/living/simple_mob/vore/aggressive/corrupthound,
|
|
"Corrupt corrupt hound" = /mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi,
|
|
"SWOOPIE XL" = /mob/living/simple_mob/vore/aggressive/corrupthound/swoopie, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Cultist Teshari" = /mob/living/simple_mob/humanoid/cultist/tesh, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Burning Mage" = /mob/living/simple_mob/humanoid/cultist/human/bloodjaunt/fireball, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Converted" = /mob/living/simple_mob/humanoid/cultist/noodle, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Cultist Teshari Mage" = /mob/living/simple_mob/humanoid/cultist/castertesh, //TODO: Port from Downstream //CHOMPStation Enable
|
|
"Monkey" = /mob/living/carbon/human/monkey,
|
|
"Wolpin" = /mob/living/carbon/human/wolpin,
|
|
"Sparra" = /mob/living/carbon/human/sparram,
|
|
"Saru" = /mob/living/carbon/human/sergallingm,
|
|
"Sobaka" = /mob/living/carbon/human/sharkm,
|
|
"Farwa" = /mob/living/carbon/human/farwa,
|
|
"Neaera" = /mob/living/carbon/human/neaera,
|
|
"Stok" = /mob/living/carbon/human/stok,
|
|
//"Gryphon" = /mob/living/simple_mob/vore/gryphon // Disabled until tested
|
|
)
|