mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-25 14:16:58 +01:00
[MIRROR] Panel port test [IDB IGNORE] (#10447)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
co-authored by
Kashargul
parent
2439279209
commit
2f698760c7
@@ -26,7 +26,7 @@ GLOBAL_LIST_EMPTY(shutoff_valves)
|
||||
|
||||
/obj/machinery/atmospherics/valve/shutoff/Destroy()
|
||||
GLOB.shutoff_valves -= src
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/atmospherics/valve/shutoff/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
@@ -69,6 +69,8 @@
|
||||
#define REAGENT_ID_POTASSIUM "potassium"
|
||||
#define REAGENT_RADIUM "Radium"
|
||||
#define REAGENT_ID_RADIUM "radium"
|
||||
#define REAGENT_CONCENTRATEDRADIUM "Concentrated Radium"
|
||||
#define REAGENT_ID_CONCENTRATEDRADIUM "concentrated_radium"
|
||||
#define REAGENT_SILICON "Silicon"
|
||||
#define REAGENT_ID_SILICON "silicon"
|
||||
#define REAGENT_SODIUM "Sodium"
|
||||
@@ -1302,6 +1304,8 @@
|
||||
#define REAGENT_ID_SIFSAP "sifsap"
|
||||
#define REAGENT_STOMACID "Digestive acid"
|
||||
#define REAGENT_ID_STOMACID "stomacid"
|
||||
#define REAGENT_DIETSTOMACID "Diluted digestive acid"
|
||||
#define REAGENT_ID_DIETSTOMACID "diet_stomacid"
|
||||
#define REAGENT_THERMITEV "Pyrotoxin"
|
||||
#define REAGENT_ID_THERMITEV "thermite_v"
|
||||
#define REAGENT_CONDENSEDCAPSAICINV "Irritant toxin"
|
||||
@@ -1353,3 +1357,18 @@
|
||||
#define REAGENT_ID_SLIMEBONEFIXER "slime_bone_fixer"
|
||||
#define REAGENT_SLIMEORGANFIXER "Agent C"
|
||||
#define REAGENT_ID_SLIMEORGANFIXER "slime_organ_fixer"
|
||||
|
||||
// Vore Belly Options
|
||||
|
||||
#define REAGENT_ID_WATER_BELLY "water_liquidbelly"
|
||||
#define REAGENT_ID_MILK_BELLY "milk_liquidbelly"
|
||||
#define REAGENT_ID_CREAM_BELLY "cream_liquidbelly"
|
||||
#define REAGENT_ID_HONEY_BELLY "honey_liquidbelly"
|
||||
#define REAGENT_ID_CHERRYJELLY_BELLY "cherry_liquidbelly"
|
||||
#define REAGENT_ID_STOMACID_BELLY "stomacid_liquidbelly"
|
||||
#define REAGENT_ID_DIETSTOMACID_BELLY "diet_stomacid_liquidbelly"
|
||||
#define REAGENT_ID_CLEANER_BELLY "cleaner_liquidbelly"
|
||||
#define REAGENT_ID_LUBE_BELLY "lube_liquidbelly"
|
||||
#define REAGENT_ID_BIOMASS_BELLY "biomass_liquidbelly"
|
||||
#define REAGENT_ID_CONCENTRATEDRADIUM_BELLY "cradium_liquidbelly"
|
||||
#define REAGENT_ID_TRICORDRAZINE_BELLY "tricordrazine_liquidbelly"
|
||||
|
||||
@@ -37,8 +37,6 @@
|
||||
#define REAGENT_ID_APHRODISIAC "aphrodisiac"
|
||||
#define REAGENT_SORBITOL "Sorbitol"
|
||||
#define REAGENT_ID_SORBITOL "sorbitol"
|
||||
#define REAGENT_CONCENTRATEDRADIUM "Concentrated Radium"
|
||||
#define REAGENT_ID_CONCENTRATEDRADIUM "concentrated_radium"
|
||||
#define REAGENT_CLARIDYL "Claridyl Natural Remedy"
|
||||
#define REAGENT_ID_CLARIDYL "claridyl"
|
||||
#define REAGENT_DYLOTEANE "The Anti-Irish"
|
||||
@@ -271,8 +269,6 @@
|
||||
|
||||
|
||||
// Toxins
|
||||
#define REAGENT_DIETSTOMACID "Diluted digestive acid"
|
||||
#define REAGENT_ID_DIETSTOMACID "diet_stomacid"
|
||||
#define REAGENT_DEATHBLOOD "Irradiating Blood"
|
||||
#define REAGENT_ID_DEATHBLOOD "deathblood"
|
||||
#define REAGENT_LIQUIDFIRE "Liquid Fire"
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
// Vore belly options
|
||||
|
||||
#define STRUGGLE_OUTSIDE "smo"
|
||||
#define STRUGGLE_INSIDE "smi"
|
||||
|
||||
#define ABSORBED_STRUGGLE_OUSIDE "asmo"
|
||||
#define ABSORBED_STRUGGLE_INSIDE "asmi"
|
||||
|
||||
#define ESCAPE_ATTEMPT_OWNER "escao"
|
||||
#define ESCAPE_ATTEMPT_PREY "escap"
|
||||
|
||||
#define ESCAPE_OWNER "esco"
|
||||
#define ESCAPE_PREY "escp"
|
||||
#define ESCAPE_OUTSIDE "escout"
|
||||
|
||||
#define ESCAPE_ITEM_OWNER "escio"
|
||||
#define ESCAPE_ITEM_PREY "escip"
|
||||
#define ESCAPE_ITEM_OUTSIDE "esciout"
|
||||
|
||||
#define ESCAPE_FAIL_OWNER "escfo"
|
||||
#define ESCAPE_FAIL_PREY "escfp"
|
||||
|
||||
#define ABSORBED_ESCAPE_ATTEMPT_OWNER "aescao"
|
||||
#define ABSORBED_ESCAPE_ATTEMPT_PREY "aescap"
|
||||
|
||||
#define ABSORBED_ESCAPE_OWNER "aesco"
|
||||
#define ABSORBED_ESCAPE_PREY "aescp"
|
||||
#define ABSORBED_ESCAPE_OUTSIDE "aescout"
|
||||
|
||||
#define FULL_ABSORBED_ESCAPE_OWNER "aescfo"
|
||||
#define FULL_ABSORBED_ESCAPE_PREY "aescfp"
|
||||
|
||||
#define PRIMARY_TRANSFER_OWNER "trnspo"
|
||||
#define PRIMARY_TRANSFER_PREY "trnspp"
|
||||
|
||||
#define SECONDARY_TRANSFER_OWNER "trnsso"
|
||||
#define SECONDARY_TRANSFER_PREY "trnssp"
|
||||
|
||||
#define PRIMARY_AUTO_TRANSFER_OWNER "atrnspo"
|
||||
#define PRIMARY_AUTO_TRANSFER_PREY "atrnspp"
|
||||
|
||||
#define SECONDARY_AUTO_TRANSFER_OWNER "atrnsso"
|
||||
#define SECONDARY_AUTO_TRANSFER_PREY "atrnssp"
|
||||
|
||||
#define DIGEST_CHANCE_OWNER "stmodo"
|
||||
#define DIGEST_CHANCE_PREY "stmodp"
|
||||
|
||||
#define ABSORB_CHANCE_OWNER "stmoao"
|
||||
#define ABSORB_CHANCE_PREY "stmoap"
|
||||
|
||||
#define DIGEST_OWNER "dmo"
|
||||
#define DIGEST_PREY "dmp"
|
||||
|
||||
#define EXAMINES "em"
|
||||
#define EXAMINES_ABSORBED "ema"
|
||||
|
||||
#define ABSORB_OWNER "amo"
|
||||
#define ABSORB_PREY "amp"
|
||||
|
||||
#define UNABSORBS_OWNER "uamo"
|
||||
#define UNABSORBS_PREY "uamp"
|
||||
|
||||
#define BELLY_MODE_DIGEST "im_digest"
|
||||
#define BELLY_MODE_HOLD "im_hold"
|
||||
#define BELLY_MODE_HOLD_ABSORB "im_holdabsorbed"
|
||||
#define BELLY_MODE_ABSORB "im_absorb"
|
||||
#define BELLY_MODE_HEAL "im_heal"
|
||||
#define BELLY_MODE_DRAIN "im_drain"
|
||||
#define BELLY_MODE_STEAL "im_steal"
|
||||
#define BELLY_MODE_EGG "im_egg"
|
||||
#define BELLY_MODE_SHRINK "im_shrink"
|
||||
#define BELLY_MODE_GROW "im_grow"
|
||||
#define BELLY_MODE_UNABSORB "im_unabsorb"
|
||||
|
||||
#define VB_MESSAGE_SANIRY(type) ASSERT(type == STRUGGLE_OUTSIDE || type == STRUGGLE_INSIDE || type == ABSORBED_STRUGGLE_OUSIDE || type == ABSORBED_STRUGGLE_INSIDE || type == ESCAPE_ATTEMPT_OWNER || type == ESCAPE_ATTEMPT_PREY ||\
|
||||
type == ESCAPE_PREY || type == ESCAPE_OWNER || type == ESCAPE_OUTSIDE || type == ESCAPE_ITEM_PREY || type == ESCAPE_ITEM_OWNER || type == ESCAPE_ITEM_OUTSIDE || type == ESCAPE_FAIL_PREY ||\
|
||||
type == ESCAPE_FAIL_OWNER || type == ABSORBED_ESCAPE_ATTEMPT_OWNER || type == ABSORBED_ESCAPE_ATTEMPT_PREY || type == ABSORBED_ESCAPE_PREY || type == ABSORBED_ESCAPE_OWNER ||\
|
||||
type == ABSORBED_ESCAPE_OUTSIDE || type == FULL_ABSORBED_ESCAPE_PREY || type == FULL_ABSORBED_ESCAPE_OWNER || type == PRIMARY_TRANSFER_PREY || type == PRIMARY_TRANSFER_OWNER ||\
|
||||
type == SECONDARY_TRANSFER_PREY || type == SECONDARY_TRANSFER_OWNER || type == PRIMARY_AUTO_TRANSFER_PREY || type == PRIMARY_AUTO_TRANSFER_OWNER || type == SECONDARY_AUTO_TRANSFER_PREY ||\
|
||||
type == SECONDARY_AUTO_TRANSFER_OWNER || type == DIGEST_CHANCE_PREY || type == DIGEST_CHANCE_OWNER || type == ABSORB_CHANCE_PREY || type == ABSORB_CHANCE_OWNER || type == DIGEST_OWNER ||\
|
||||
type == DIGEST_PREY || type == ABSORB_OWNER || type == ABSORB_PREY || type == UNABSORBS_OWNER || type == UNABSORBS_PREY || type == EXAMINES || type == EXAMINES_ABSORBED ||\
|
||||
type == BELLY_MODE_DIGEST || type == BELLY_MODE_HOLD || type == BELLY_MODE_HOLD_ABSORB || type == BELLY_MODE_ABSORB || type == BELLY_MODE_HEAL || type == BELLY_MODE_DRAIN ||\
|
||||
type == BELLY_MODE_STEAL || type == BELLY_MODE_EGG || type == BELLY_MODE_SHRINK || type == BELLY_MODE_GROW || type == BELLY_MODE_UNABSORB)
|
||||
@@ -1,40 +0,0 @@
|
||||
//CHOMP belly modes
|
||||
|
||||
|
||||
|
||||
//Belly Reagents mode flags
|
||||
#define DM_FLAG_REAGENTSNUTRI 0x1
|
||||
#define DM_FLAG_REAGENTSDIGEST 0x2
|
||||
#define DM_FLAG_REAGENTSABSORB 0x4
|
||||
#define DM_FLAG_REAGENTSDRAIN 0x8
|
||||
|
||||
//For belly fullscreen shennanigans outside of bellies, due to Life() clearing belly fullscreens outside of bellies.
|
||||
#define ATOM_BELLY_FULLSCREEN "belly_atom_vfx"
|
||||
|
||||
//Auto-transfer mob flags
|
||||
#define AT_FLAG_CREATURES 0x1
|
||||
#define AT_FLAG_ABSORBED 0x2
|
||||
#define AT_FLAG_CARBON 0x4
|
||||
#define AT_FLAG_SILICON 0x8
|
||||
#define AT_FLAG_MOBS 0x10
|
||||
#define AT_FLAG_ANIMALS 0x20
|
||||
#define AT_FLAG_MICE 0x40
|
||||
#define AT_FLAG_DEAD 0x80
|
||||
#define AT_FLAG_CANDIGEST 0x100
|
||||
#define AT_FLAG_CANABSORB 0x200
|
||||
#define AT_FLAG_HEALTHY 0x400
|
||||
|
||||
//Auto-transfer item flags
|
||||
#define AT_FLAG_ITEMS 0x1
|
||||
#define AT_FLAG_TRASH 0x2
|
||||
#define AT_FLAG_EGGS 0x4
|
||||
#define AT_FLAG_REMAINS 0x8
|
||||
#define AT_FLAG_INDIGESTIBLE 0x10
|
||||
#define AT_FLAG_RECYCLABLE 0x20
|
||||
#define AT_FLAG_ORES 0x40
|
||||
#define AT_FLAG_CLOTHES 0x80
|
||||
#define AT_FLAG_FOOD 0x100
|
||||
|
||||
//Vorespawn flags
|
||||
#define VS_FLAG_ABSORB_YES 0x1
|
||||
#define VS_FLAG_ABSORB_PREY 0x2
|
||||
@@ -22,15 +22,15 @@
|
||||
#define DM_FLAG_JAMSENSORS 0x20
|
||||
#define DM_FLAG_FORCEPSAY 0x40
|
||||
#define DM_FLAG_SPARELIMB 0x80
|
||||
#define DM_FLAG_SLOWBODY 0x100 //CHOMPAdd
|
||||
#define DM_FLAG_MUFFLEITEMS 0x200 //CHOMPAdd
|
||||
#define DM_FLAG_TURBOMODE 0x400 //CHOMPAdd
|
||||
#define DM_FLAG_SLOWBODY 0x100
|
||||
#define DM_FLAG_MUFFLEITEMS 0x200
|
||||
#define DM_FLAG_TURBOMODE 0x400
|
||||
|
||||
//Item related modes
|
||||
#define IM_HOLD "Hold"
|
||||
#define IM_DIGEST_FOOD "Digest (Food Only)"
|
||||
#define IM_DIGEST "Digest"
|
||||
#define IM_DIGEST_PARALLEL "Digest (Dispersed Damage)" //CHOMPedit
|
||||
#define IM_DIGEST_PARALLEL "Digest (Dispersed Damage)"
|
||||
|
||||
//Stance for hostile mobs to be in while devouring someone.
|
||||
#define HOSTILE_STANCE_EATING 99
|
||||
@@ -53,3 +53,40 @@
|
||||
#define DM_FLAG_VORESPRITE_TAIL 0x2
|
||||
#define DM_FLAG_VORESPRITE_MARKING 0x4
|
||||
#define DM_FLAG_VORESPRITE_ARTICLE 0x8
|
||||
|
||||
//Belly Reagents mode flags
|
||||
#define DM_FLAG_REAGENTSNUTRI 0x1
|
||||
#define DM_FLAG_REAGENTSDIGEST 0x2
|
||||
#define DM_FLAG_REAGENTSABSORB 0x4
|
||||
#define DM_FLAG_REAGENTSDRAIN 0x8
|
||||
|
||||
//For belly fullscreen shennanigans outside of bellies, due to Life() clearing belly fullscreens outside of bellies.
|
||||
#define ATOM_BELLY_FULLSCREEN "belly_atom_vfx"
|
||||
|
||||
//Auto-transfer mob flags
|
||||
#define AT_FLAG_CREATURES 0x1
|
||||
#define AT_FLAG_ABSORBED 0x2
|
||||
#define AT_FLAG_CARBON 0x4
|
||||
#define AT_FLAG_SILICON 0x8
|
||||
#define AT_FLAG_MOBS 0x10
|
||||
#define AT_FLAG_ANIMALS 0x20
|
||||
#define AT_FLAG_MICE 0x40
|
||||
#define AT_FLAG_DEAD 0x80
|
||||
#define AT_FLAG_CANDIGEST 0x100
|
||||
#define AT_FLAG_CANABSORB 0x200
|
||||
#define AT_FLAG_HEALTHY 0x400
|
||||
|
||||
//Auto-transfer item flags
|
||||
#define AT_FLAG_ITEMS 0x1
|
||||
#define AT_FLAG_TRASH 0x2
|
||||
#define AT_FLAG_EGGS 0x4
|
||||
#define AT_FLAG_REMAINS 0x8
|
||||
#define AT_FLAG_INDIGESTIBLE 0x10
|
||||
#define AT_FLAG_RECYCLABLE 0x20
|
||||
#define AT_FLAG_ORES 0x40
|
||||
#define AT_FLAG_CLOTHES 0x80
|
||||
#define AT_FLAG_FOOD 0x100
|
||||
|
||||
//Vorespawn flags
|
||||
#define VS_FLAG_ABSORB_YES 0x1
|
||||
#define VS_FLAG_ABSORB_PREY 0x2
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#define CHEM_TOUCH 1
|
||||
#define CHEM_INGEST 2
|
||||
#define CHEM_BLOOD 3
|
||||
#define CHEM_VORE 4 //CHOMP vore belly interactions
|
||||
#define CHEM_VORE 4 // vore belly interactions
|
||||
|
||||
#define MINIMUM_CHEMICAL_VOLUME 0.01
|
||||
|
||||
|
||||
@@ -813,6 +813,13 @@
|
||||
#define COMSIG_OBSERVER_APC "observer_apc"
|
||||
#define COMSIG_OBSERVER_GLOBALMOVED "observer_global_move"
|
||||
|
||||
// Bellies
|
||||
///from /obj/belly/HandleBellyReagents() and /obj/belly/update_internal_overlay()
|
||||
#define COMSIG_BELLY_UPDATE_VORE_FX "update_vore_fx"
|
||||
///from /obj/belly/process()
|
||||
#define COMSIG_BELLY_UPDATE_PREY_LOOP "update_prey_loop"
|
||||
/// COMSIG used to get messages where they need to go
|
||||
#define COMSIG_VISIBLE_MESSAGE "visible_message"
|
||||
|
||||
//Unittest data update
|
||||
#ifdef UNIT_TEST
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
// Bellies
|
||||
|
||||
///from /obj/belly/HandleBellyReagents() and /obj/belly/update_internal_overlay()
|
||||
#define COMSIG_BELLY_UPDATE_VORE_FX "update_vore_fx"
|
||||
///from /obj/belly/process()
|
||||
#define COMSIG_BELLY_UPDATE_PREY_LOOP "update_prey_loop"
|
||||
/// COMSIG used to get messages where they need to go
|
||||
#define COMSIG_VISIBLE_MESSAGE "visible_message"
|
||||
@@ -7,12 +7,12 @@
|
||||
#define MAP_LEVEL_EMPTY 0x020 // Empty Z-levels that may be used for various things (currently used by bluespace jump)
|
||||
#define MAP_LEVEL_CONSOLES 0x040 // Z-levels available to various consoles, such as the crew monitor (when that gets coded in). Defaults to station_levels if unset.
|
||||
#define MAP_LEVEL_XENOARCH_EXEMPT 0x080 // Z-levels exempt from xenoarch digsite generation.
|
||||
#define MAP_LEVEL_VORESPAWN 0x100 //CHOMPedit Z-levels players are allowed to late join to via vorish means. Usually non-dangerous locations.
|
||||
#define MAP_LEVEL_PERSIST 0x200 // Z-levels where SSpersistence should persist between rounds //CHOMPedit bumped to 0x200 because vorespawn, hopefully this doesn't break things
|
||||
#define MAP_LEVEL_MAPPABLE 0x400 // Z-levels where mapping units will work fully //CHOMPedit bumped to 0x400, somethingsomething don't break
|
||||
#define MAP_LEVEL_BELOW_BLOCKED 0x800 // Z-levels in multiz with level below not meant to be 'normally' accessible //CHOMPedit bumped to 0x800, please god do not break
|
||||
#define MAP_LEVEL_VORESPAWN 0x100 // Z-levels players are allowed to late join to via vorish means. Usually non-dangerous locations.
|
||||
#define MAP_LEVEL_PERSIST 0x200 // Z-levels where SSpersistence should persist between rounds
|
||||
#define MAP_LEVEL_MAPPABLE 0x400 // Z-levels where mapping units will work fully
|
||||
#define MAP_LEVEL_BELOW_BLOCKED 0x800 // Z-levels in multiz with level below not meant to be 'normally' accessible
|
||||
|
||||
// Misc map defines.
|
||||
#define SUBMAP_MAP_EDGE_PAD 8 // Automatically created submaps are forbidden from being this close to the main map's edge. //VOREStation Edit
|
||||
#define SUBMAP_MAP_EDGE_PAD 8 // Automatically created submaps are forbidden from being this close to the main map's edge.
|
||||
|
||||
#define CELL_ALIVE(VAL) (VAL == cell_live_value)
|
||||
|
||||
@@ -228,3 +228,10 @@
|
||||
if(num < 0)
|
||||
return 0
|
||||
return sqrt(num)
|
||||
|
||||
//Proc to check if a flag is active to use in universal math
|
||||
/proc/global_flag_check(element, flag)
|
||||
if(element & flag)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
@@ -1,8 +1 @@
|
||||
//Proc to check if a flag is active to use in universal math
|
||||
/proc/global_flag_check(element, flag)
|
||||
if(element & flag)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
#define GAUSSIAN_RANDOM(vars...) ((-2*log(rand()))**0.5 * cos(6.28318530718*rand()))
|
||||
|
||||
@@ -480,9 +480,9 @@
|
||||
|
||||
#define VIS_CH_STOMACH 34
|
||||
|
||||
#define VIS_SOULCATCHER 35 // CHOMPAdd
|
||||
#define VIS_SOULCATCHER 35
|
||||
|
||||
#define VIS_COUNT 35 //Must be highest number from above. // CHOMPEdit
|
||||
#define VIS_COUNT 35 //Must be highest number from above.
|
||||
|
||||
//Some mob icon layering defines
|
||||
#define BODY_LAYER -100
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
//These two also have NIF FLAG representations. These are the local setting representations.
|
||||
#define NIF_SC_CATCHING_ME 0x1
|
||||
#define NIF_SC_CATCHING_OTHERS 0x2
|
||||
//These are purely local setings flags, without global representation.
|
||||
#define NIF_SC_ALLOW_EARS 0x4
|
||||
#define NIF_SC_ALLOW_EYES 0x8
|
||||
#define NIF_SC_BACKUPS 0x10
|
||||
#define NIF_SC_PROJECTING 0x20
|
||||
#define SOULGEM_CATCHING_GHOSTS 0x200
|
||||
#define SOULGEM_ACTIVE 0x400
|
||||
#define SOULGEM_SHOW_VORE_SFX 0x800
|
||||
#define SOULGEM_CATCHING_DRAIN 0x1000
|
||||
#define SOULGEM_SEE_SR_SOULS 0x2000
|
||||
@@ -379,3 +379,27 @@ var/global/list/blacklisted_artifact_effects = list(
|
||||
/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
|
||||
|
||||
@@ -1,27 +1,3 @@
|
||||
var/global/list/item_tf_spawnpoints = list() // Global variable tracking which items are item tf spawnpoints
|
||||
|
||||
//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)
|
||||
|
||||
// Options for transforming into a different mob in virtual reality.
|
||||
var/global/list/vr_mob_tf_options = list(
|
||||
"Borg" = /mob/living/silicon/robot,
|
||||
|
||||
@@ -1621,6 +1621,7 @@ GLOBAL_REAL_VAR(list/stack_trace_storage)
|
||||
. += new /obj/screen/plane_master{plane = PLANE_CH_VANTAG} //Vore Antags
|
||||
. += new /obj/screen/plane_master{plane = PLANE_CH_STOMACH} //Stomachs
|
||||
. += new /obj/screen/plane_master{plane = PLANE_AUGMENTED} //Augmented reality
|
||||
. += new /obj/screen/plane_master{plane = PLANE_SOULCATCHER} //Soulcatcher
|
||||
//VOREStation Add End
|
||||
/proc/CallAsync(datum/source, proctype, list/arguments)
|
||||
set waitfor = FALSE
|
||||
|
||||
@@ -9,10 +9,6 @@
|
||||
///datum/config_entry/flag/emojis
|
||||
// default = FALSE
|
||||
|
||||
/// In future see about making a function to adjust volume serverside in config.txt, easy to do with reenable values. - Jack
|
||||
/datum/config_entry/number/vorefootstep_volume
|
||||
default = 75
|
||||
|
||||
/// So, nodebot is a supplement to the TGS discord bot pretty much. For things likes faxes and the manifest it's very helpful because it's able to render html into an image and post it.
|
||||
/datum/config_entry/flag/nodebot_enabled
|
||||
default = FALSE
|
||||
|
||||
@@ -62,6 +62,10 @@
|
||||
/datum/config_entry/number/footstep_volume
|
||||
default = 0
|
||||
|
||||
/// In future see about making a function to adjust volume serverside in config.txt, easy to do with reenable values. - Jack
|
||||
/datum/config_entry/number/vorefootstep_volume
|
||||
default = 75
|
||||
|
||||
/datum/config_entry/flag/use_loyalty_implants
|
||||
|
||||
/datum/config_entry/flag/show_human_death_message
|
||||
|
||||
@@ -29,8 +29,8 @@
|
||||
|
||||
var/cloaked = FALSE //If we're cloaked or not
|
||||
var/image/cloaked_selfimage //The image we use for our client to let them see where we are
|
||||
var/belly_cycles = 0 //CHOMPEdit: Counting current belly process cycles for autotransfer.
|
||||
var/autotransferable = TRUE //CHOMPEdit: Toggle for autotransfer mechanics.
|
||||
var/belly_cycles = 0 // Counting current belly process cycles for autotransfer.
|
||||
var/autotransferable = TRUE // Toggle for autotransfer mechanics.
|
||||
|
||||
/atom/movable/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -667,3 +667,10 @@
|
||||
var/direction = get_dir(old_loc, new_loc)
|
||||
loc = new_loc
|
||||
Moved(old_loc, direction, TRUE)
|
||||
|
||||
// Helper procs called on entering/exiting a belly. Does nothing by default, override on children for special behavior.
|
||||
/atom/movable/proc/enter_belly(obj/belly/B)
|
||||
return
|
||||
|
||||
/atom/movable/proc/exit_belly(obj/belly/B)
|
||||
return
|
||||
|
||||
@@ -51,12 +51,5 @@
|
||||
for (var/atom/movable/location as anything in get_nested_locs(src)|src)
|
||||
LAZYOR(location.recursive_listeners, arrived.recursive_listeners)
|
||||
|
||||
// Helper procs called on entering/exiting a belly. Does nothing by default, override on children for special behavior.
|
||||
/atom/movable/proc/enter_belly(obj/belly/B)
|
||||
return
|
||||
|
||||
/atom/movable/proc/exit_belly(obj/belly/B)
|
||||
return
|
||||
|
||||
/atom/movable/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2)
|
||||
return
|
||||
|
||||
@@ -227,10 +227,8 @@
|
||||
SSjob.shift_keys[title] += keylist
|
||||
//CHOMPadd end
|
||||
|
||||
//CHOMPAdd Start
|
||||
/datum/job/proc/update_limit(var/comperator)
|
||||
return
|
||||
//CHOMPAdd End
|
||||
|
||||
// Check client-specific availability rules.
|
||||
/datum/job/proc/player_has_enough_pto(client/C)
|
||||
|
||||
@@ -87,14 +87,12 @@ var/global/datum/controller/occupations/job_master
|
||||
return 1
|
||||
return 0
|
||||
|
||||
//CHOMPAdd Start
|
||||
/datum/controller/occupations/proc/update_limit(var/rank, var/comperator)
|
||||
var/datum/job/job = GetJob(rank)
|
||||
if(job && job.total_positions != -1)
|
||||
job.update_limit(comperator)
|
||||
return 1
|
||||
return 0
|
||||
//CHOMPAdd End
|
||||
|
||||
/datum/controller/occupations/proc/FindOccupationCandidates(datum/job/job, level, flag)
|
||||
Debug("Running FOC, Job: [job], Level: [level], Flag: [flag]")
|
||||
@@ -677,13 +675,13 @@ var/global/datum/controller/occupations/job_master
|
||||
var/datum/spawnpoint/spawnpos
|
||||
var/fail_deadly = FALSE
|
||||
var/obj/belly/vore_spawn_gut
|
||||
var/absorb_choice = FALSE //CHOMPAdd - Ability to start absorbed with vorespawn
|
||||
var/absorb_choice = FALSE // Ability to start absorbed with vorespawn
|
||||
var/mob/living/prey_to_nomph
|
||||
var/obj/item/item_to_be //CHOMPEdit - Item TF spawning
|
||||
var/mob/living/item_carrier //CHOMPEdit - Capture crystal spawning
|
||||
var/vorgans = FALSE //CHOMPEdit - capture crystal simplemob spawning
|
||||
var/obj/item/item_to_be // Item TF spawning
|
||||
var/mob/living/item_carrier // Capture crystal spawning
|
||||
var/vorgans = FALSE // capture crystal simplemob spawning
|
||||
|
||||
//CHOMPEdit - Remove fail_deadly addition on offmap_spawn
|
||||
// Remove fail_deadly addition on offmap_spawn
|
||||
|
||||
//Spawn them at their preferred one
|
||||
if(C && C.prefs.read_preference(/datum/preference/choiced/living/spawnpoint))
|
||||
@@ -694,7 +692,7 @@ var/global/datum/controller/occupations/job_master
|
||||
if(!isliving(V.mob))
|
||||
continue
|
||||
var/mob/living/M = V.mob
|
||||
if(M.stat == UNCONSCIOUS || M.stat == DEAD || (M.client.is_afk(10 MINUTES) && !M.no_latejoin_vore_warning)) //CHOMPEdit
|
||||
if(M.stat == UNCONSCIOUS || M.stat == DEAD || (M.client.is_afk(10 MINUTES) && !M.no_latejoin_vore_warning))
|
||||
continue
|
||||
if(!M.latejoin_vore)
|
||||
continue
|
||||
@@ -713,10 +711,8 @@ var/global/datum/controller/occupations/job_master
|
||||
for(var/obj/belly/Y in pred.vore_organs)
|
||||
if(Y.vorespawn_blacklist)
|
||||
continue
|
||||
//CHOMPAdd Start
|
||||
if(LAZYLEN(Y.vorespawn_whitelist) && !(C.ckey in Y.vorespawn_whitelist))
|
||||
continue
|
||||
//CHOMPAdd End
|
||||
available_bellies += Y
|
||||
var/backup = tgui_alert(C, "Do you want a mind backup?", "Confirm", list("Yes", "No"))
|
||||
if(backup == "Yes")
|
||||
@@ -724,7 +720,6 @@ var/global/datum/controller/occupations/job_master
|
||||
vore_spawn_gut = tgui_input_list(C, "Choose a Belly.", "Belly Spawnpoint", available_bellies)
|
||||
if(!vore_spawn_gut)
|
||||
return
|
||||
//CHOMPAdd Start
|
||||
if(vore_spawn_gut.vorespawn_absorbed & VS_FLAG_ABSORB_YES)
|
||||
absorb_choice = TRUE
|
||||
if(vore_spawn_gut.vorespawn_absorbed & VS_FLAG_ABSORB_PREY)
|
||||
@@ -732,7 +727,6 @@ var/global/datum/controller/occupations/job_master
|
||||
absorb_choice = FALSE
|
||||
else if(tgui_alert(C, "[pred]'s [vore_spawn_gut] will start with you absorbed. Continue?", "Confirm", list("Yes", "No")) != "Yes")
|
||||
return
|
||||
//CHOMPAdd End
|
||||
to_chat(C, span_boldwarning("[pred] has received your spawn request. Please wait."))
|
||||
log_admin("[key_name(C)] has requested to vore spawn into [key_name(pred)]")
|
||||
message_admins("[key_name(C)] has requested to vore spawn into [key_name(pred)]")
|
||||
@@ -740,21 +734,17 @@ var/global/datum/controller/occupations/job_master
|
||||
var/confirm
|
||||
if(pred.no_latejoin_vore_warning)
|
||||
if(pred.no_latejoin_vore_warning_time > 0)
|
||||
//CHOMPEdit Start
|
||||
if(absorb_choice)
|
||||
confirm = tgui_alert(pred, "[C.prefs.real_name] is attempting to spawn absorbed as your [vore_spawn_gut]. Let them?", "Confirm", list("No", "Yes"), pred.no_latejoin_vore_warning_time SECONDS)
|
||||
else
|
||||
confirm = tgui_alert(pred, "[C.prefs.real_name] is attempting to spawn into your [vore_spawn_gut]. Let them?", "Confirm", list("No", "Yes"), pred.no_latejoin_vore_warning_time SECONDS)
|
||||
//CHOMPEdit End
|
||||
if(!confirm)
|
||||
confirm = "Yes"
|
||||
else
|
||||
//CHOMPEdit Start
|
||||
if(absorb_choice)
|
||||
confirm = tgui_alert(pred, "[C.prefs.real_name] is attempting to spawn absorbed as your [vore_spawn_gut]. Let them?", "Confirm", list("No", "Yes"))
|
||||
else
|
||||
confirm = tgui_alert(pred, "[C.prefs.real_name] is attempting to spawn into your [vore_spawn_gut]. Let them?", "Confirm", list("No", "Yes"))
|
||||
//CHOMPEdit End
|
||||
if(confirm != "Yes")
|
||||
to_chat(C, span_warning("[pred] has declined your spawn request."))
|
||||
var/message = sanitizeSafe(input(pred,"Do you want to leave them a message?")as text|null)
|
||||
@@ -777,7 +767,7 @@ var/global/datum/controller/occupations/job_master
|
||||
log_admin("[key_name(C)] has vore spawned into [key_name(pred)]")
|
||||
message_admins("[key_name(C)] has vore spawned into [key_name(pred)]")
|
||||
to_chat(C, span_notice("You have been spawned via vore. You are free to roleplay how you got there as you please, such as teleportation or having had already been there."))
|
||||
if(vore_spawn_gut.entrance_logs) //CHOMPEdit
|
||||
if(vore_spawn_gut.entrance_logs)
|
||||
to_chat(pred, span_notice("Your prey has spawned via vore. You are free to roleplay this how you please, such as teleportation or having had already been there."))
|
||||
else
|
||||
to_chat(C, span_warning("No predators were available to accept you."))
|
||||
@@ -790,7 +780,7 @@ var/global/datum/controller/occupations/job_master
|
||||
if(!isliving(V.mob))
|
||||
continue
|
||||
var/mob/living/M = V.mob
|
||||
if(M.stat == UNCONSCIOUS || M.stat == DEAD || (M.client.is_afk(10 MINUTES) && !M.no_latejoin_prey_warning)) //CHOMPEdit
|
||||
if(M.stat == UNCONSCIOUS || M.stat == DEAD || (M.client.is_afk(10 MINUTES) && !M.no_latejoin_prey_warning))
|
||||
continue
|
||||
if(!M.latejoin_prey)
|
||||
continue
|
||||
@@ -812,32 +802,26 @@ var/global/datum/controller/occupations/job_master
|
||||
vore_spawn_gut = tgui_input_list(C, "Choose your Belly.", "Belly Spawnpoint", available_bellies)
|
||||
if(!vore_spawn_gut)
|
||||
return
|
||||
//CHOMPAdd Start
|
||||
if(alert(C, "Do you want to instantly absorb them?", "Confirm", "Yes", "No") == "Yes")
|
||||
absorb_choice = TRUE
|
||||
//CHOMPAdd End
|
||||
to_chat(C, "<b><span class='warning'>[prey] has received your spawn request. Please wait.</span></b>")
|
||||
to_chat(C, span_boldwarning("[prey] has received your spawn request. Please wait."))
|
||||
log_admin("[key_name(C)] has requested to pred spawn onto [key_name(prey)]")
|
||||
message_admins("[key_name(C)] has requested to pred spawn onto [key_name(prey)]")
|
||||
|
||||
var/confirm
|
||||
if(prey.no_latejoin_prey_warning)
|
||||
if(prey.no_latejoin_prey_warning_time > 0)
|
||||
//CHOMPEdit Start
|
||||
if(absorb_choice)
|
||||
confirm = tgui_alert(prey, "[C.prefs.real_name] is attempting to televore and instantly absorb you with their [vore_spawn_gut]. Let them?", "Confirm", list("No", "Yes"), prey.no_latejoin_prey_warning_time SECONDS)
|
||||
else
|
||||
confirm = tgui_alert(prey, "[C.prefs.real_name] is attempting to televore you into their [vore_spawn_gut]. Let them?", "Confirm", list("No", "Yes"), prey.no_latejoin_prey_warning_time SECONDS)
|
||||
//CHOMPEdit End
|
||||
if(!confirm)
|
||||
confirm = "Yes"
|
||||
else
|
||||
//CHOMPEdit Start
|
||||
if(absorb_choice)
|
||||
confirm = tgui_alert(prey, "[C.prefs.real_name] is attempting to televore and instantly absorb you with their [vore_spawn_gut]. Let them?", "Confirm", list("No", "Yes"))
|
||||
else
|
||||
confirm = tgui_alert(prey, "[C.prefs.real_name] is attempting to televore you into their [vore_spawn_gut]. Let them?", "Confirm", list("No", "Yes"))
|
||||
//CHOMPEdit End
|
||||
if(confirm != "Yes")
|
||||
to_chat(C, span_warning("[prey] has declined your spawn request."))
|
||||
var/message = sanitizeSafe(input(prey,"Do you want to leave them a message?")as text|null)
|
||||
@@ -858,7 +842,7 @@ var/global/datum/controller/occupations/job_master
|
||||
else
|
||||
to_chat(C, span_warning("No prey were available to accept you."))
|
||||
return
|
||||
//CHOMPEdit - Item TF spawnpoints!
|
||||
// Item TF spawnpoints!
|
||||
else if(C.prefs.read_preference(/datum/preference/choiced/living/spawnpoint) == "Item TF spawn")
|
||||
var/list/items = list()
|
||||
var/list/item_names = list()
|
||||
@@ -918,7 +902,7 @@ var/global/datum/controller/occupations/job_master
|
||||
|
||||
var/mob/living/carrier = carriers[index]
|
||||
if(istype(carrier))
|
||||
to_chat(C, "<b><span class='warning'>[carrier] has received your spawn request. Please wait.</span></b>")
|
||||
to_chat(C, span_boldwarning("[carrier] has received your spawn request. Please wait."))
|
||||
log_and_message_admins("[key_name(C)] has requested to item spawn into [key_name(carrier)]'s possession")
|
||||
|
||||
var/confirm = tgui_alert(carrier, "[C.prefs.real_name] is attempting to join as the [item_name] in your possession.", "Confirm", list("No", "Yes"))
|
||||
@@ -958,7 +942,6 @@ var/global/datum/controller/occupations/job_master
|
||||
else
|
||||
to_chat(C, span_warning("No items were available to accept you."))
|
||||
return
|
||||
//CHOMPEdit End
|
||||
else
|
||||
if(!(C.prefs.read_preference(/datum/preference/choiced/living/spawnpoint) in using_map.allowed_spawns))
|
||||
if(fail_deadly)
|
||||
@@ -971,18 +954,17 @@ var/global/datum/controller/occupations/job_master
|
||||
spawnpos = spawntypes[C.prefs.read_preference(/datum/preference/choiced/living/spawnpoint)]
|
||||
|
||||
//We will return a list key'd by "turf" and "msg"
|
||||
. = list("turf","msg", "voreny", "prey", "itemtf", "vorgans", "carrier") //CHOMPEdit - Item TF spawnpoints, spawn as mob
|
||||
. = list("turf","msg", "voreny", "prey", "itemtf", "vorgans", "carrier") // Item TF spawnpoints, spawn as mob
|
||||
if(vore_spawn_gut)
|
||||
.["voreny"] = vore_spawn_gut
|
||||
.["absorb"] = absorb_choice //CHOMPAdd
|
||||
.["absorb"] = absorb_choice
|
||||
if(prey_to_nomph)
|
||||
.["prey"] = prey_to_nomph //We pass this on later to reverse the vorespawn in new_player.dm
|
||||
//CHOMPEdit Start - Item TF spawnpoints
|
||||
// Item TF spawnpoints
|
||||
if(item_to_be)
|
||||
.["carrier"] = item_carrier
|
||||
.["vorgans"] = vorgans
|
||||
.["itemtf"] = item_to_be
|
||||
//CHOMPEdit End
|
||||
if(spawnpos && istype(spawnpos) && spawnpos.turfs.len)
|
||||
if(spawnpos.check_job_spawning(rank))
|
||||
.["turf"] = spawnpos.get_spawn_position()
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
/obj/machinery/bluespace_beacon/Destroy()
|
||||
if(Beacon)
|
||||
qdel(Beacon)
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
// update the invisibility and icon
|
||||
/obj/machinery/bluespace_beacon/hide(var/intact)
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
tank1 = null //Base machine Destroy()
|
||||
tank2 = null //handles deleting contents
|
||||
test_canister = null
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/bomb_tester/dismantle()
|
||||
if(tank1)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
/obj/machinery/computer/rcon/Destroy()
|
||||
qdel(rcon)
|
||||
rcon = null
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
// Proc: attack_hand()
|
||||
// Parameters: 1 (user - Person which clicked this computer)
|
||||
|
||||
@@ -18,7 +18,7 @@ var/global/list/minor_air_alarms = list()
|
||||
|
||||
/obj/machinery/computer/atmos_alert/Destroy()
|
||||
atmosphere_alarm.unregister_alarm(src)
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/computer/atmos_alert/attack_hand(mob/user)
|
||||
tgui_interact(user)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
/obj/machinery/computer/crew/Destroy()
|
||||
qdel(crew_monitor)
|
||||
crew_monitor = null
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/computer/crew/attack_ai(mob/user)
|
||||
attack_hand(user)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/obj/machinery/computer/shutoff_monitor/Destroy()
|
||||
QDEL_NULL(monitor)
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/computer/shutoff_monitor/attack_hand(var/mob/user as mob)
|
||||
..()
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
/obj/machinery/computer/station_alert/Destroy()
|
||||
alarm_monitor.unregister_alarm(src)
|
||||
qdel(alarm_monitor)
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/computer/station_alert/attack_ai(mob/user)
|
||||
add_fingerprint(user)
|
||||
|
||||
@@ -15,7 +15,7 @@ var/list/doppler_arrays = list()
|
||||
|
||||
/obj/machinery/doppler_array/Destroy()
|
||||
doppler_arrays -= src
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/doppler_array/proc/sense_explosion(var/x0,var/y0,var/z0,var/devastation_range,var/heavy_impact_range,var/light_impact_range,var/took)
|
||||
if(stat & NOPOWER) return
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
/obj/machinery/embedded_controller/radio/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src,frequency)
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/embedded_controller/radio/update_icon()
|
||||
if(on && program)
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
/obj/machinery/magnetic_module/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, freq)
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/magnetic_controller
|
||||
name = "Magnetic Control Console"
|
||||
@@ -391,4 +391,4 @@
|
||||
/obj/machinery/magnetic_controller/Destroy()
|
||||
if(radio_controller)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
@@ -202,7 +202,7 @@ Transponder Codes:<UL>"}
|
||||
|
||||
/obj/machinery/navbeacon/Destroy()
|
||||
navbeacons.Remove(src)
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
|
||||
//
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
for(var/atom/movable/AM in contents)
|
||||
qdel(AM)
|
||||
QDEL_NULL(soundloop)
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/pda_multicaster/update_icon()
|
||||
if(on)
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
/obj/machinery/power/supply_beacon/Destroy()
|
||||
if(use_power)
|
||||
deactivate()
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/power/supply_beacon/process()
|
||||
if(expended)
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
/obj/machinery/power/singularity_beacon/Destroy()
|
||||
if(active)
|
||||
Deactivate()
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
//stealth direct power usage
|
||||
/obj/machinery/power/singularity_beacon/process()
|
||||
|
||||
@@ -121,7 +121,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
|
||||
// In case message_delay is left on 1, otherwise it won't reset the list and people can't say the same thing twice anymore.
|
||||
if(message_delay)
|
||||
message_delay = 0
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -160,7 +160,7 @@ var/global/list/obj/machinery/telecomms/telecomms_list = list()
|
||||
comm.links -= src
|
||||
links = list()
|
||||
QDEL_NULL(soundloop) // CHOMPAdd: Tcomms noises
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
// Used in auto linking
|
||||
/obj/machinery/telecomms/proc/add_link(var/obj/machinery/telecomms/T)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
var/area/A = control_area
|
||||
if(A && istype(A))
|
||||
A.turret_controls -= src
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/turretid/Initialize(mapload)
|
||||
if(!control_area)
|
||||
|
||||
@@ -110,6 +110,9 @@
|
||||
|
||||
var/rock_climbing = FALSE //If true, allows climbing cliffs using click drag for single Z, walls if multiZ
|
||||
var/climbing_delay = 1 //If rock_climbing, lower better.
|
||||
var/digestable = TRUE
|
||||
var/item_tf_spawn_allowed = FALSE
|
||||
var/list/ckeys_allowed_itemspawn = list()
|
||||
|
||||
/obj/item/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -134,6 +137,8 @@
|
||||
M.update_held_icons()
|
||||
|
||||
/obj/item/Destroy()
|
||||
if(item_tf_spawn_allowed)
|
||||
item_tf_spawnpoints -= src
|
||||
if(ismob(loc))
|
||||
var/mob/m = loc
|
||||
m.drop_from_inventory(src)
|
||||
@@ -1112,3 +1117,21 @@ Note: This proc can be overwritten to allow for different types of auto-alignmen
|
||||
|
||||
/obj/item/proc/get_welder()
|
||||
return
|
||||
|
||||
/obj/item/verb/toggle_digestable()
|
||||
set category = "Object"
|
||||
set name = "Toggle Digestable"
|
||||
set desc = "Toggle item's digestability."
|
||||
digestable = !digestable
|
||||
if(!digestable)
|
||||
to_chat(usr, span_notice("[src] is now protected from digestion."))
|
||||
|
||||
/obj/item/proc/item_tf_spawnpoint_set()
|
||||
if(!item_tf_spawn_allowed)
|
||||
item_tf_spawn_allowed = TRUE
|
||||
item_tf_spawnpoints += src
|
||||
|
||||
/obj/item/proc/item_tf_spawnpoint_used()
|
||||
if(item_tf_spawn_allowed)
|
||||
item_tf_spawn_allowed = FALSE
|
||||
item_tf_spawnpoints -= src
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
throwforce = 0
|
||||
force = 0
|
||||
actions_types = list(/datum/action/item_action/command)
|
||||
w_class = ITEMSIZE_SMALL //CHOMPEdit
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
var/active = FALSE //Is it set up?
|
||||
var/mob/living/owner //Reference to the owner
|
||||
@@ -18,6 +18,7 @@
|
||||
var/last_activate //Automatically set by things that try to move the bound mob or capture things
|
||||
var/empty_icon = "empty"
|
||||
var/full_icon = "full"
|
||||
var/spawn_mob_name = "A mob"
|
||||
var/capture_chance_modifier = 1 //So we can have special subtypes with different capture rates!
|
||||
|
||||
/obj/item/capture_crystal/Initialize(mapload)
|
||||
@@ -36,11 +37,6 @@
|
||||
if(owner)
|
||||
UnregisterSignal(owner, COMSIG_PARENT_QDELETING)
|
||||
owner = null
|
||||
if(in_gut) // CHOMPedit start
|
||||
UnregisterSignal(in_gut, COMSIG_PARENT_QDELETING)
|
||||
UnregisterSignal(in_gut, COMSIG_BELLY_UPDATE_VORE_FX)
|
||||
UnregisterSignal(in_gut, COMSIG_BELLY_UPDATE_PREY_LOOP)
|
||||
in_gut = null // CHOMPedit end
|
||||
return ..()
|
||||
|
||||
/obj/item/capture_crystal/examine(user)
|
||||
@@ -483,7 +479,7 @@
|
||||
|
||||
//IF the crystal somehow ends up in a tummy and digesting with a bound mob who doesn't want to be eaten, let's move them to the ground
|
||||
/obj/item/capture_crystal/digest_act(var/atom/movable/item_storage = null)
|
||||
if(bound_mob) // CHOMPEdit
|
||||
if(bound_mob)
|
||||
if((bound_mob in contents) && !bound_mob.devourable)
|
||||
bound_mob.forceMove(src.drop_location())
|
||||
return ..()
|
||||
@@ -863,3 +859,102 @@
|
||||
/mob/living
|
||||
var/capture_crystal = TRUE //If TRUE, the mob is capturable. Otherwise it isn't.
|
||||
var/capture_caught = FALSE //If TRUE, the mob has already been caught, and so cannot be caught again.
|
||||
|
||||
/obj/item/capture_crystal/loadout
|
||||
active = TRUE
|
||||
|
||||
/obj/item/capture_crystal/loadout/attack(mob/living/M, mob/living/user)
|
||||
if(!bound_mob && M != user)
|
||||
to_chat(user, span_notice("\The [src] emits an unpleasant tone..."))
|
||||
playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1)
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/capture_crystal/loadout/attack_self(mob/living/user)
|
||||
if(!bound_mob)
|
||||
to_chat(user, span_notice("\The [src] emits an unpleasant tone... It is not ready yet."))
|
||||
playsound(src, 'sound/effects/capture-crystal-problem.ogg', 75, 1, -1)
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/capture_crystal/loadout/capture_chance()
|
||||
return 0
|
||||
|
||||
/obj/item/capture_crystal/cheap
|
||||
name = "cheap capture crystal"
|
||||
desc = "A silent, unassuming crystal in what appears to be some kind of steel housing. This one seems to be cheaply made and can only handle a willing mind."
|
||||
icon = 'icons/obj/capture_crystal_vr.dmi'
|
||||
|
||||
|
||||
//The basic capture command does most of the registration work.
|
||||
/obj/item/capture_crystal/cheap/capture(mob/living/M, mob/living/U)
|
||||
if(!M.capture_crystal || M.capture_caught)
|
||||
to_chat(U, span_warning("This creature is not suitable for capture with this crystal."))
|
||||
playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1)
|
||||
return
|
||||
knowyoursignals(M, U)
|
||||
if(isanimal(M) || !M.client)
|
||||
to_chat(U, span_warning("This creature is not suitable for capture."))
|
||||
playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1)
|
||||
return
|
||||
owner = U
|
||||
if(!bound_mob)
|
||||
bound_mob = M
|
||||
bound_mob.capture_caught = TRUE
|
||||
persist_storable = FALSE
|
||||
desc = "A silent, unassuming crystal in what appears to be some kind of steel housing. This one seems to be cheaply made and can only handle a willing mind."
|
||||
|
||||
|
||||
/obj/item/capture_crystal/cheap/activate(mob/living/user, target)
|
||||
if(!cooldown_check()) //Are we ready to do things yet?
|
||||
to_chat(thrower, span_notice("\The [src] clicks unsatisfyingly... It is not ready yet."))
|
||||
playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1)
|
||||
return
|
||||
if(spawn_mob_type && !bound_mob) //We don't already have a mob, but we know what kind of mob we want
|
||||
bound_mob = new spawn_mob_type(src) //Well let's spawn it then!
|
||||
bound_mob.faction = user.faction
|
||||
spawn_mob_type = null
|
||||
capture(bound_mob, user)
|
||||
if(bound_mob) //We have a mob! Let's finish setting up.
|
||||
user.visible_message("\The [src] clicks, and then emits a small chime.", "\The [src] grows warm in your hand, something inside is awake.")
|
||||
active = TRUE
|
||||
if(!owner) //Do we have an owner? It's pretty unlikely that this would ever happen! But it happens, let's claim the crystal.
|
||||
owner = user
|
||||
if(isanimal(bound_mob))
|
||||
var/mob/living/simple_mob/S = bound_mob
|
||||
S.revivedby = user.name
|
||||
determine_action(user, target)
|
||||
return
|
||||
else if(isliving(target)) //So we don't have a mob, let's try to claim one! Is the target a mob?
|
||||
var/mob/living/M = target
|
||||
last_activate = world.time
|
||||
if(M.capture_caught) //Can't capture things that were already caught.
|
||||
playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1)
|
||||
to_chat(user, span_notice("\The [src] clicks unsatisfyingly... \The [M] is already under someone else's control."))
|
||||
return
|
||||
else if(M.stat == DEAD) //Is it dead? We can't influence dead things.
|
||||
playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1)
|
||||
to_chat(user, span_notice("\The [src] clicks unsatisfyingly... \The [M] is not in a state to be captured."))
|
||||
return
|
||||
else if(M.client) //Is it player controlled?
|
||||
capture_player(M, user) //We have to do things a little differently if so.
|
||||
return
|
||||
else if(!isanimal(M)) //So it's not player controlled, but it's also not a simplemob?
|
||||
to_chat(user, span_warning("This creature is not suitable for capture."))
|
||||
playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1)
|
||||
return
|
||||
var/mob/living/simple_mob/S = M
|
||||
if(!S.ai_holder) //We don't really want to capture simplemobs that don't have an AI
|
||||
to_chat(user, span_warning("This creature is not suitable for capture."))
|
||||
playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1)
|
||||
else //Shoot, it didn't work and now it's mad!!!
|
||||
S.ai_holder.go_wake()
|
||||
S.ai_holder.give_target(user, urgent = TRUE)
|
||||
user.visible_message("\The [src] bonks into \the [S], angering it!")
|
||||
playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1)
|
||||
to_chat(user, span_notice("\The [src] clicks unsatisfyingly."))
|
||||
update_icon()
|
||||
return
|
||||
//The target is not a mob, so let's not do anything.
|
||||
playsound(src, 'sound/effects/capture-crystal-negative.ogg', 75, 1, -1)
|
||||
to_chat(user, span_notice("\The [src] clicks unsatisfyingly."))
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
show_messages = 0
|
||||
allow_quick_empty = TRUE
|
||||
use_sound = 'sound/items/drop/flesh.ogg'
|
||||
var/egg_name = null //CHOMPAdd
|
||||
var/egg_name = null
|
||||
|
||||
/obj/item/storage/vore_egg/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
for(var/obj/structure/prop/lock/L in locks)
|
||||
L.linked_objects -= src
|
||||
locks -= L
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/door/blast/puzzle/attack_hand(mob/user as mob)
|
||||
if(check_locks())
|
||||
|
||||
@@ -91,10 +91,6 @@
|
||||
/obj/item/capture_crystal/after_trash_eaten(var/mob/living/user)
|
||||
if(bound_mob && (bound_mob in contents))
|
||||
if(isbelly(loc))
|
||||
/* CHOMPRemove Start, handled by indirect FX
|
||||
var/obj/belly/B = loc
|
||||
to_chat(bound_mob, span_notice("Outside of your crystal, you can see; " + span_notice("[B.desc]")))
|
||||
*/// CHOMPRemove End
|
||||
to_chat(user, span_notice("You can taste the the power of command."))
|
||||
|
||||
// Most trash has no special check, so the rest of these are just after_trash_eaten()
|
||||
|
||||
@@ -0,0 +1,273 @@
|
||||
/datum/belly_overlays
|
||||
var/belly_icon
|
||||
|
||||
/datum/belly_overlays/vbo_belly1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_belly1.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_belly2
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_belly2.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_belly3
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_belly3.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_belly4
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_belly4.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_belly5
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_belly5.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_belly6
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_belly6.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_belly7
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_belly7.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_belly8
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_belly8.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_belly9
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_belly9.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_belly9_fluidless
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_belly9_fluidless.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_breast
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_breast.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_breast1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_breast1.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_coils
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_coils.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_coils1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_coils1.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_darkslit
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_darkslit.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_fleshs
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_fleshs.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_fleshs1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_fleshs1.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_foot
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_foot.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_gematically_angular
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_gematically_angular.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_intestines1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_intestines1.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_intestines2
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_intestines2.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_intestines3
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_intestines3.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_intestines4
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_intestines4.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_intestines5
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_intestines5.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_intestines6
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_intestines6.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_intestines7
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_intestines7.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_intestines8
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_intestines8.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_intestines9
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_intestines9.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_intestines9_fluidless
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_intestines9_fluidless.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw1.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw2
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw2.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw3
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw3.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw4
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw4.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw5
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw5.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw6
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw6.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw7
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw7.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw8
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw8.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw9
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw9.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw10
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw10.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw11
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw11.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw12
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw12.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw13
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw13.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw14
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw14.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw15
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw15.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw16
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw16.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw17
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw17.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw18
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw18.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw19
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw19.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw20
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw20.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw21
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw21.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw22
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw22.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw23
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw23.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw24
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw24.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw25
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw25.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_maw26
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_maw26.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_notbelly
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_notbelly.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_paw
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_paw.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_synth1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_synth1.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_synth2
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_synth2.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_trash
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_trash.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_vines
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_vines.dmi'
|
||||
|
||||
/datum/belly_overlays/vbo_wriggly
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBO_wriggly.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_belly1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly1.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_belly2
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly2.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_belly3
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly3.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_belly4
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly4.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_belly5
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly5.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_belly6
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly6.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_belly7
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly7.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_belly8
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly8.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_belly9
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly9.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_belly10
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly10.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_gullet1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_gullet1.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_intestine1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_intestine1.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_intestine2
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_intestine2.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_snakebelly1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_snakebelly1.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_synthbelly1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_synthbelly1.dmi'
|
||||
|
||||
/datum/belly_overlays/vboanim_taurbelly1
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_taurbelly1.dmi'
|
||||
|
||||
/datum/belly_overlays/a_tumby
|
||||
belly_icon = 'icons/mob/vore_fullscreens/a_tumby.dmi'
|
||||
|
||||
/datum/belly_overlays/another_tumby
|
||||
belly_icon = 'icons/mob/vore_fullscreens/another_tumby.dmi'
|
||||
|
||||
/datum/belly_overlays/base
|
||||
belly_icon = 'icons/mob/vore_fullscreens/base.dmi'
|
||||
|
||||
/datum/belly_overlays/brown_internals
|
||||
belly_icon = 'icons/mob/vore_fullscreens/brown_internals.dmi'
|
||||
|
||||
/datum/belly_overlays/brown_internals_hole
|
||||
belly_icon = 'icons/mob/vore_fullscreens/brown_internals_hole.dmi'
|
||||
|
||||
/datum/belly_overlays/da_tumby
|
||||
belly_icon = 'icons/mob/vore_fullscreens/da_tumby.dmi'
|
||||
|
||||
/datum/belly_overlays/dark
|
||||
belly_icon = 'icons/mob/vore_fullscreens/dark.dmi'
|
||||
|
||||
/datum/belly_overlays/synth_flesh_mono
|
||||
belly_icon = 'icons/mob/vore_fullscreens/synth_flesh_mono.dmi'
|
||||
|
||||
/datum/belly_overlays/synth_flesh_mono_hole
|
||||
belly_icon = 'icons/mob/vore_fullscreens/synth_flesh_mono_hole.dmi'
|
||||
|
||||
/datum/belly_overlays/yet_another_tumby
|
||||
belly_icon = 'icons/mob/vore_fullscreens/yet_another_tumby.dmi'
|
||||
|
||||
//Compatibility assets due to renames...
|
||||
/datum/belly_overlays/anim_belly
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly1.dmi'
|
||||
|
||||
/datum/belly_overlays/a_anim_belly
|
||||
belly_icon = 'icons/mob/vore_fullscreens/VBOanim_belly1.dmi'
|
||||
@@ -2,14 +2,14 @@
|
||||
name = "vore"
|
||||
|
||||
/datum/asset/spritesheet/vore/create_spritesheets()
|
||||
var/icon/downscaled = icon('modular_chomp/icons/mob/screen_full_vore_ch.dmi') //CHOMPedit: preserving save data
|
||||
var/icon/downscaled = icon('icons/mob/screen_full_vore_list.dmi') // preserving save data
|
||||
downscaled.Scale(240, 240)
|
||||
InsertAll("", downscaled)
|
||||
|
||||
/datum/asset/spritesheet/vore_fixed //This should be getting loaded in the TGUI vore panel but the game refuses to do so, for some reason. It only loads the vore spritesheet. //CHOMPedit
|
||||
name = "fixedvore" //CHOMPedit
|
||||
/datum/asset/spritesheet/vore_fixed //This should be getting loaded in the TGUI vore panel but the game refuses to do so, for some reason. It only loads the vore spritesheet.
|
||||
name = "fixedvore"
|
||||
|
||||
/datum/asset/spritesheet/vore_fixed/create_spritesheets() //CHOMPedi start: preserving save data
|
||||
/datum/asset/spritesheet/vore_fixed/create_spritesheets() // preserving save data
|
||||
var/icon/downscaledVF = icon('icons/mob/screen_full_vore.dmi')
|
||||
downscaledVF.Scale(240, 240)
|
||||
InsertAll("", downscaledVF) //CHOMpedit end
|
||||
InsertAll("", downscaledVF)
|
||||
|
||||
@@ -18,7 +18,7 @@ var/list/spawntypes = list()
|
||||
var/list/restrict_job = null
|
||||
var/list/disallow_job = null
|
||||
var/announce_channel = "Common"
|
||||
var/allow_offmap_spawn = FALSE //CHOMPEdit - add option to allow offmap spawns to a spawnpoint without entirely restricting that spawnpoint
|
||||
var/allow_offmap_spawn = FALSE // add option to allow offmap spawns to a spawnpoint without entirely restricting that spawnpoint
|
||||
var/allowed_mob_types = JOB_SILICON|JOB_CARBON
|
||||
|
||||
/datum/spawnpoint/proc/check_job_spawning(job)
|
||||
@@ -32,7 +32,7 @@ var/list/spawntypes = list()
|
||||
if(!J) // Couldn't find, admin shenanigans? Allow it
|
||||
return 1
|
||||
|
||||
if(J.offmap_spawn && !allow_offmap_spawn && !(job in restrict_job)) //CHOMPEdit - add option to allow offmap spawns to a spawnpoint without entirely restricting that spawnpoint
|
||||
if(J.offmap_spawn && !allow_offmap_spawn && !(job in restrict_job)) // add option to allow offmap spawns to a spawnpoint without entirely restricting that spawnpoint
|
||||
return 0
|
||||
|
||||
if(!(J.mob_type & allowed_mob_types))
|
||||
@@ -114,3 +114,12 @@ var/global/list/latejoin_tram = list()
|
||||
/datum/spawnpoint/tram/New()
|
||||
..()
|
||||
turfs = latejoin_tram
|
||||
|
||||
/datum/spawnpoint/vore
|
||||
display_name = "Vorespawn - Prey"
|
||||
msg = "has arrived on the station"
|
||||
allow_offmap_spawn = TRUE
|
||||
|
||||
/datum/spawnpoint/vore/pred
|
||||
display_name = "Vorespawn - Pred"
|
||||
msg = "has arrived on the station"
|
||||
|
||||
@@ -138,6 +138,11 @@
|
||||
|
||||
if(istype(M, /mob/living/carbon))
|
||||
//TODO: replace with standard_feed_mob() call.
|
||||
|
||||
if(!M.consume_liquid_belly)
|
||||
if(liquid_belly_check())
|
||||
to_chat(user, span_infoplain("[user == M ? "You can't" : "\The [M] can't"] consume that, it contains something produced from a belly!"))
|
||||
return FALSE
|
||||
var/swallow_whole = FALSE
|
||||
var/obj/belly/belly_target // These are surprise tools that will help us later
|
||||
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
//This could all be done better, but it works for now.
|
||||
/obj/machinery/computer/HolodeckControl/Destroy()
|
||||
emergencyShutdown()
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/computer/HolodeckControl/ex_act(severity)
|
||||
emergencyShutdown()
|
||||
|
||||
@@ -89,4 +89,4 @@
|
||||
for(var/obj/effect/plant/plant in get_turf(src))
|
||||
if(plant.invisibility == INVISIBILITY_MAXIMUM)
|
||||
plant.invisibility = initial(plant.invisibility)
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
//This could all be done better, but it works for now.
|
||||
/obj/machinery/computer/looking_glass/Destroy()
|
||||
unload_program()
|
||||
..()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/computer/looking_glass/ex_act(severity)
|
||||
unload_program()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
plane_holder.set_vis(VIS_CLOAKED, TRUE)
|
||||
plane_holder.set_vis(VIS_AI_EYE, TRUE)
|
||||
plane_holder.set_vis(VIS_AUGMENTED, TRUE) //VOREStation Add - GHOST VISION IS AUGMENTED
|
||||
plane_holder.set_vis(VIS_SOULCATCHER, TRUE) //CHOMPAdd Soulcatcher
|
||||
plane_holder.set_vis(VIS_SOULCATCHER, TRUE) // Soulcatcher
|
||||
plane = PLANE_GHOSTS
|
||||
if(cleanup_timer)
|
||||
deltimer(cleanup_timer)
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "This shouldn't appear"
|
||||
density = FALSE
|
||||
vis_flags = NONE
|
||||
var/mob/living/body_backup = null //add reforming
|
||||
|
||||
/mob/observer/dead
|
||||
name = "ghost"
|
||||
@@ -584,6 +585,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
var/list/following_mobs = list()
|
||||
|
||||
/mob/observer/dead/Destroy()
|
||||
if(body_backup)
|
||||
body_backup.moveToNullspace() //YEET
|
||||
qdel(body_backup)
|
||||
body_backup = null
|
||||
visualnet.addVisibility(src, src.client)
|
||||
visualnet = null
|
||||
if(ismob(following))
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
var/obj/item/organ/internal/brain/brainobj = null //The current brain organ.
|
||||
var/obj/mecha = null//This does not appear to be used outside of reference in mecha.dm.
|
||||
var/obj/item/radio/headset/mmi_radio/radio = null//Let's give it a radio.
|
||||
var/mob/living/body_backup = null //add reforming
|
||||
|
||||
/obj/item/mmi/New()
|
||||
radio = new(src)//Spawns a radio inside the MMI.
|
||||
@@ -146,6 +147,8 @@
|
||||
rig.forced_move(direction, user)
|
||||
|
||||
/obj/item/mmi/Destroy()
|
||||
if(body_backup)
|
||||
qdel(body_backup)
|
||||
if(isrobot(loc))
|
||||
var/mob/living/silicon/robot/borg = loc
|
||||
borg.mmi = null
|
||||
|
||||
@@ -204,10 +204,8 @@
|
||||
if(stomach_vision)
|
||||
compiled_vis += VIS_CH_STOMACH
|
||||
|
||||
//CHOMPAdd Start Soulcatcher
|
||||
if(soulgem?.flag_check(SOULGEM_SEE_SR_SOULS))
|
||||
compiled_vis += VIS_SOULCATCHER
|
||||
//CHOMPAdd End
|
||||
|
||||
if(!compiled_vis.len && !vis_enabled.len)
|
||||
return //Nothin' doin'.
|
||||
|
||||
@@ -1252,14 +1252,12 @@
|
||||
var/sound/growlsound = sound(get_sfx("hunger_sounds"))
|
||||
var/growlmultiplier = 100 - (nutrition / 250 * 100)
|
||||
playsound(src, growlsound, vol = growlmultiplier, vary = 1, falloff = 0.1, ignore_walls = TRUE, preference = /datum/preference/toggle/digestion_noises)
|
||||
// CHOMPEnable Start
|
||||
if(nutrition > 500 && noisy_full == TRUE)
|
||||
var/belch_prob = 5 //Maximum belch prob.
|
||||
if(nutrition < 4075)
|
||||
belch_prob = ((nutrition-500)/3575)*5 //Scale belch prob with fullness if not already at max. If editing make sure the multiplier matches the max prob above.
|
||||
if(prob(belch_prob))
|
||||
src.emote("belch")
|
||||
// CHOMPEnable End
|
||||
if((CE_DARKSIGHT in chem_effects) && chemical_darksight == 0)
|
||||
recalculate_vis()
|
||||
chemical_darksight = 1
|
||||
@@ -1681,12 +1679,8 @@
|
||||
else
|
||||
clear_alert("high")
|
||||
|
||||
//CHOMPEdit - surrounding_belly() used instead of isbelly(loc) to not clear indirect vorefx
|
||||
if(!surrounding_belly() && !previewing_belly) //VOREStation Add - Belly fullscreens safety //CHOMPEdit
|
||||
if(!surrounding_belly() && !previewing_belly) //VOREStation Add - Belly fullscreens safety
|
||||
clear_fullscreen("belly")
|
||||
//clear_fullscreen("belly2") //Chomp disable, using our own implementation
|
||||
//clear_fullscreen("belly3") //Chomp disable, using our own implementation
|
||||
//clear_fullscreen("belly4") //Chomp disable, using our own implementation
|
||||
|
||||
if(CONFIG_GET(flag/welder_vision))
|
||||
var/found_welder
|
||||
|
||||
@@ -510,7 +510,7 @@
|
||||
B.forceMove(src)
|
||||
B.owner = src
|
||||
|
||||
soulgem.owner = src //CHOMPAdd
|
||||
soulgem.owner = src
|
||||
|
||||
//vore_organs.Cut()
|
||||
|
||||
|
||||
@@ -507,7 +507,7 @@
|
||||
B.owner = blob
|
||||
vore_organs.Cut()
|
||||
|
||||
soulgem.owner = blob // CHOMPAdd
|
||||
soulgem.owner = blob
|
||||
|
||||
//We can still speak our languages!
|
||||
blob.languages = languages.Copy()
|
||||
@@ -619,7 +619,7 @@
|
||||
B.owner = src
|
||||
languages = blob.languages.Copy()
|
||||
|
||||
soulgem.owner = src // CHOMPAdd
|
||||
soulgem.owner = src
|
||||
|
||||
Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right.
|
||||
|
||||
|
||||
@@ -20,23 +20,23 @@
|
||||
add_verb(src, /mob/living/proc/smell)
|
||||
add_verb(src, /mob/living/proc/switch_scaling)
|
||||
add_verb(src, /mob/living/proc/center_offset)
|
||||
add_verb(src, /mob/living/proc/mute_entry) //CHOMPEdit
|
||||
add_verb(src, /mob/living/proc/liquidbelly_visuals) //CHOMPEdit
|
||||
add_verb(src, /mob/living/proc/fix_vore_effects) //CHOMPedit
|
||||
add_verb(src, /mob/living/proc/mute_entry)
|
||||
add_verb(src, /mob/living/proc/liquidbelly_visuals)
|
||||
add_verb(src, /mob/living/proc/fix_vore_effects)
|
||||
|
||||
if(!no_vore)
|
||||
add_verb(src, /mob/living/proc/vorebelly_printout)
|
||||
if(!vorePanel)
|
||||
AddComponent(/datum/component/vore_panel)
|
||||
|
||||
add_verb(src,/mob/living/proc/vore_transfer_reagents) //CHOMPEdit TGPanel //CHOMP If mob doesnt have bellies it cant use this verb for anything
|
||||
add_verb(src,/mob/living/proc/vore_check_reagents) //CHOMPEdit TGPanel //CHOMP If mob doesnt have bellies it cant use this verb for anything
|
||||
add_verb(src,/mob/living/proc/vore_bellyrub) //CHOMPEdit TGPanel //CHOMP If mob doesnt have bellies it probably won't be needing this anyway
|
||||
add_verb(src,/mob/proc/nsay_vore) //CHOMPAdd
|
||||
add_verb(src,/mob/proc/nme_vore) //CHOMPAdd
|
||||
add_verb(src,/mob/proc/nsay_vore_ch) //CHOMPAdd
|
||||
add_verb(src,/mob/proc/nme_vore_ch) //CHOMPAdd
|
||||
add_verb(src,/mob/proc/enter_soulcatcher) //CHOMPAdd
|
||||
add_verb(src,/mob/living/proc/vore_transfer_reagents) // If mob doesnt have bellies it cant use this verb for anything
|
||||
add_verb(src,/mob/living/proc/vore_check_reagents) // If mob doesnt have bellies it cant use this verb for anything
|
||||
add_verb(src,/mob/living/proc/vore_bellyrub) // If mob doesnt have bellies it probably won't be needing this anyway
|
||||
add_verb(src,/mob/proc/nsay_vore)
|
||||
add_verb(src,/mob/proc/nme_vore)
|
||||
add_verb(src,/mob/proc/nsay_vore_ch)
|
||||
add_verb(src,/mob/proc/nme_vore_ch)
|
||||
add_verb(src,/mob/proc/enter_soulcatcher)
|
||||
|
||||
//VOREStation Add Start
|
||||
if(!voice_sounds_list.len || !voice_sounds_list)
|
||||
|
||||
@@ -615,7 +615,7 @@ var/list/ai_verbs_default = list(
|
||||
|
||||
switch(choice)
|
||||
if("Color")
|
||||
input = tgui_color_picker("Choose a color:", "Hologram Color", holo_color)
|
||||
input = tgui_color_picker(src, "Choose a color:", "Hologram Color", holo_color)
|
||||
|
||||
if(input)
|
||||
holo_color = input
|
||||
|
||||
@@ -602,7 +602,7 @@
|
||||
var/actual_brute = T.getBruteLoss() - old_brute
|
||||
var/actual_burn = T.getFireLoss() - old_burn
|
||||
var/damage_gain = actual_brute + actual_burn
|
||||
hound.nutrition += 2.5 * damage_gain //drain(-25 * damage_gain) //25*total loss as with voreorgan stats.//CHOMPEdit
|
||||
hound.adjust_nutrition(2.5 * damage_gain) //drain(-25 * damage_gain) //25*total loss as with voreorgan stats.
|
||||
//CHOMPAdd Start
|
||||
if(water)
|
||||
water.add_charge(damage_gain)
|
||||
@@ -669,8 +669,8 @@
|
||||
//CHOMPAdd Start
|
||||
if(T.reagents)
|
||||
volume = T.reagents.total_volume
|
||||
var/is_trash = istype(T, /obj/item/trash)
|
||||
//CHOMPAdd End
|
||||
var/is_trash = istype(T, /obj/item/trash)
|
||||
var/digested = T.digest_act(item_storage = src)
|
||||
if(!digested)
|
||||
items_preserved |= T
|
||||
@@ -699,15 +699,13 @@
|
||||
plastic.add_charge(total_material)
|
||||
if(material == MAT_WOOD && wood)
|
||||
wood.add_charge(total_material)
|
||||
//CHOMPEdit Start
|
||||
if(is_trash)
|
||||
hound.nutrition += digested
|
||||
hound.adjust_nutrition(digested)
|
||||
else
|
||||
hound.nutrition += 5 * digested //drain(-50 * digested)
|
||||
//CHOMPEdit End
|
||||
hound.adjust_nutrition(5 * digested) //drain(-50 * digested)
|
||||
else if(istype(target,/obj/effect/decal/remains))
|
||||
qdel(target)
|
||||
hound.nutrition += 10 //drain(-100) //CHOMPEdit
|
||||
hound.adjust_nutrition(10) //drain(-100)
|
||||
else
|
||||
items_preserved |= target
|
||||
update_patient()
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
icon_state = "robot"
|
||||
maxHealth = 200
|
||||
health = 200
|
||||
nutrition = 0 //CHOMPEdit
|
||||
nutrition = 0
|
||||
|
||||
mob_bump_flag = ROBOT
|
||||
mob_swap_flags = ~HEAVY
|
||||
@@ -1467,14 +1467,12 @@
|
||||
undeploy()
|
||||
..()
|
||||
|
||||
//CHOMPAdd Start
|
||||
/mob/living/silicon/robot/use_power()
|
||||
if(cell && cell.charge < cell.maxcharge)
|
||||
if(nutrition >= 1 * CYBORG_POWER_USAGE_MULTIPLIER)
|
||||
nutrition -= 1 * CYBORG_POWER_USAGE_MULTIPLIER
|
||||
adjust_nutrition(-(1 * CYBORG_POWER_USAGE_MULTIPLIER))
|
||||
cell.charge += 10 * CYBORG_POWER_USAGE_MULTIPLIER
|
||||
..()
|
||||
//CHOMPAdd End
|
||||
|
||||
// Those basic ones require quite detailled checks on the robot's vars to see if they are installed!
|
||||
/mob/living/silicon/robot/proc/has_basic_upgrade(var/given_type)
|
||||
@@ -1585,3 +1583,14 @@
|
||||
if(issilicon(user))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/mob/living/silicon/robot/verb/purge_nutrition()
|
||||
set name = "Purge Nutrition"
|
||||
set category = "Abilities.Vore"
|
||||
set desc = "Allows you to clear out most of your nutrition if needed."
|
||||
|
||||
if (stat != CONSCIOUS || nutrition <= 1000)
|
||||
return
|
||||
nutrition = 1000
|
||||
to_chat(src, span_warning("You have purged most of the nutrition lingering in your systems."))
|
||||
return TRUE
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
|
||||
playsound(src, 'sound/mecha/nominalsyndi.ogg', 75, 0)
|
||||
|
||||
//CHOMPAdd Start
|
||||
/mob/living/silicon/robot/gravekeeper/proc/scramble_hardware(var/chance)
|
||||
if(prob(chance)) //Small chance to spawn with a scrambled
|
||||
emag_items = 1
|
||||
@@ -39,4 +38,3 @@
|
||||
if (churn_count == 5)
|
||||
module.emag += new /obj/item/self_repair_system/advanced(module)
|
||||
hud_used.update_robot_modules_display()
|
||||
//CHOMPAdd End
|
||||
|
||||
@@ -335,11 +335,9 @@
|
||||
|
||||
return
|
||||
|
||||
//CHOMPAdd Start
|
||||
/mob/living/silicon/robot/lost/handle_special_unlocks()
|
||||
if(!emag_items)
|
||||
scramble_hardware(20)
|
||||
if (churn_count == 5)
|
||||
module.emag += new /obj/item/self_repair_system/advanced(module)
|
||||
hud_used.update_robot_modules_display()
|
||||
//CHOMPAdd End
|
||||
|
||||
@@ -110,6 +110,8 @@
|
||||
/mob/living/simple_mob/animal/synx/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
.=..()
|
||||
var/obj/belly/B = vore_selected
|
||||
//B.human_prey_swallow_time = 6 SECONDS //doesnt work
|
||||
@@ -142,6 +144,8 @@
|
||||
/mob/living/simple_mob/animal/synx/ai/pet/asteri/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
.=..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.desc = "The synx eagerly swallows you, taking you from its gullet into its long, serpentine stomach. The internals around you greedily press into your from all sides, keeping you coated in a slick coat of numbing fluids..."
|
||||
@@ -559,6 +563,8 @@
|
||||
/mob/living/simple_mob/animal/synx/ai/pet/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
.=..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.vore_verb = "swallow"
|
||||
@@ -568,6 +574,8 @@
|
||||
/mob/living/simple_mob/animal/synx/ai/pet/holo/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
.=..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.vore_verb = "swallow"
|
||||
|
||||
@@ -184,6 +184,8 @@
|
||||
//vars for vore_icons toggle control
|
||||
var/vore_icons_cache = null // null by default. Going from ON to OFF should store vore_icons val here, OFF to ON reset as null
|
||||
|
||||
//no stripping of simplemobs
|
||||
strip_pref = FALSE
|
||||
|
||||
/mob/living/simple_mob/Initialize(mapload)
|
||||
remove_verb(src, /mob/verb/observe)
|
||||
|
||||
@@ -215,25 +215,17 @@
|
||||
|
||||
AddElement(/datum/element/slosh) // Sloshy element
|
||||
|
||||
//CHOMPAdd Start
|
||||
if(!soulgem)
|
||||
soulgem = new(src)
|
||||
//CHOMPAdd End
|
||||
|
||||
/* CHOMPRemove Start, handled with the vore_active var
|
||||
if(!IsAdvancedToolUser())
|
||||
add_verb(src, /mob/living/simple_mob/proc/animal_nom)
|
||||
add_verb(src, /mob/living/proc/shred_limb)
|
||||
*/// CHOMPRemove End
|
||||
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
|
||||
// Since they have bellies, add verbs to toggle settings on them.
|
||||
add_verb(src, /mob/living/simple_mob/proc/toggle_digestion)
|
||||
add_verb(src, /mob/living/simple_mob/proc/toggle_fancygurgle)
|
||||
add_verb(src, /mob/living/proc/vertical_nom)
|
||||
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
|
||||
//A much more detailed version of the default /living implementation
|
||||
var/obj/belly/B = new /obj/belly(src)
|
||||
vore_selected = B
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
/obj/item/holder,
|
||||
/obj/machinery/camera,
|
||||
/obj/belly,
|
||||
/obj/soulgem, // CHOMPAdd
|
||||
/obj/soulgem,
|
||||
/obj/screen,
|
||||
/atom/movable/emissive_blocker,
|
||||
/obj/item/material,
|
||||
@@ -118,6 +118,8 @@
|
||||
/mob/living/simple_mob/vore/alienanimals/catslug/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -99,6 +99,8 @@ GLOBAL_VAR_INIT(jellyfish_count, 0)
|
||||
/mob/living/simple_mob/vore/alienanimals/space_jellyfish/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "internal chamber"
|
||||
|
||||
@@ -90,6 +90,8 @@
|
||||
/mob/living/simple_mob/vore/alienanimals/skeleton/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -67,6 +67,8 @@
|
||||
/mob/living/simple_mob/vore/alienanimals/dustjumper/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
/mob/living/simple_mob/vore/overmap/spacewhale/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -96,6 +96,8 @@
|
||||
/mob/living/simple_mob/vore/alienanimals/startreader/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "gastric sac"
|
||||
|
||||
@@ -75,6 +75,8 @@
|
||||
/mob/living/simple_mob/vore/alienanimals/succlet/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stummy"
|
||||
|
||||
@@ -171,6 +171,8 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
|
||||
/mob/living/simple_mob/vore/alienanimals/teppi/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
/mob/living/simple_mob/animal/passive/cat/runtime/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "Stomach"
|
||||
|
||||
@@ -53,6 +53,8 @@
|
||||
/mob/living/simple_mob/animal/passive/fox/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "Stomach"
|
||||
@@ -201,6 +203,8 @@
|
||||
/mob/living/simple_mob/animal/passive/fox/renault/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "Stomach"
|
||||
|
||||
@@ -233,6 +233,8 @@
|
||||
/mob/living/simple_mob/animal/space/carp/large/huge/vorny/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -90,6 +90,8 @@ TODO: Make them light up and heat the air when exposed to oxygen.
|
||||
/mob/living/simple_mob/animal/passive/gaslamp/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "internal chamber"
|
||||
|
||||
@@ -77,6 +77,8 @@
|
||||
/mob/living/simple_mob/animal/passive/snake/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -72,6 +72,8 @@
|
||||
/mob/living/simple_mob/vore/squirrel/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -46,12 +46,14 @@
|
||||
/mob/living/simple_mob/vore/turkeygirl/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
B.desc = "The hot churning stomach of a turkey girl! The doughy flesh presses inward to form to your figure, thick slime coating everything, and very shortly that includes you as well! There isn't any escaping that constant full body motion, as her body works to ball yours up into a tight little package. Gurgling and glubbing with every shifting movement, while her pulse throbs through the flesh all around you with every beat of her heart. All in all, one thing is for certain! You've become turkey stuffing! Oh no..."
|
||||
B.mode_flags = DM_FLAG_THICKBELLY | DM_FLAG_NUMBING
|
||||
B.belly_fullscreen = "anibelly"
|
||||
B.belly_fullscreen = "anim_belly"
|
||||
B.digest_brute = 1
|
||||
B.digest_burn = 6
|
||||
B.digestchance = 0
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
/mob/living/simple_mob/vore/blaidd/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -79,6 +79,8 @@
|
||||
/mob/living/simple_mob/vore/ddraig/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -44,6 +44,8 @@
|
||||
/mob/living/simple_mob/vore/fluffball/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "tail"
|
||||
|
||||
@@ -38,6 +38,8 @@
|
||||
/mob/living/simple_mob/vore/horse/unicorn/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -80,9 +80,7 @@ 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 // CHOMPAdd
|
||||
)
|
||||
can_enter_vent_with = list(/obj/item/clothing/head, /obj/soulgem)
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
|
||||
|
||||
@@ -45,6 +45,8 @@
|
||||
/mob/living/simple_mob/vore/bat/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -506,7 +506,9 @@ I think I covered everything.
|
||||
/// My thanks to Raeschen for these descriptions
|
||||
|
||||
/mob/living/simple_mob/vore/bigdragon/init_vore()
|
||||
if(!voremob_loaded || LAZYLEN(vore_organs))
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
var/obj/belly/B = new /obj/belly/dragon/maw(src)
|
||||
B.affects_vore_sprites = FALSE
|
||||
|
||||
@@ -539,6 +539,8 @@ I think I covered everything.
|
||||
//Ow my sanity
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
var/obj/belly/B = new /obj/belly/dragon/maw(src)
|
||||
B.affects_vore_sprites = FALSE
|
||||
B.emote_lists[DM_HOLD] = list(
|
||||
|
||||
@@ -129,6 +129,8 @@
|
||||
/mob/living/simple_mob/vore/aggressive/corrupthound/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "fuel processor"
|
||||
@@ -153,6 +155,8 @@
|
||||
/mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "fuel processor"
|
||||
|
||||
@@ -71,6 +71,8 @@
|
||||
/mob/living/simple_mob/vore/cryptdrake/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -86,6 +86,8 @@
|
||||
/mob/living/simple_mob/vore/aggressive/deathclaw/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "stomach"
|
||||
|
||||
@@ -52,6 +52,8 @@
|
||||
/mob/living/simple_mob/vore/demon/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
. = ..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "Stomach"
|
||||
|
||||
@@ -68,6 +68,8 @@
|
||||
/mob/living/simple_mob/vore/demonAI/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
.=..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "Stomach"
|
||||
|
||||
@@ -65,6 +65,8 @@
|
||||
/mob/living/simple_mob/vore/demon/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
.=..()
|
||||
var/obj/belly/B = vore_selected
|
||||
B.name = "Stomach"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user