diff --git a/code/modules/mob/living/simple_animal/simple_animal_vr.dm b/code/modules/mob/living/simple_animal/simple_animal_vr.dm
index 146b613060..41c7971533 100644
--- a/code/modules/mob/living/simple_animal/simple_animal_vr.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal_vr.dm
@@ -17,13 +17,12 @@
var/list/living_mobs = list()
-// Release belly contents beforey being gc'd!
+// Release belly contents before being gc'd!
/mob/living/simple_animal/Destroy()
- release_vore_contents(silent = TRUE)
+ release_vore_contents(include_absorbed = TRUE, silent = TRUE)
prey_excludes.Cut()
. = ..()
-
// Update fullness based on size & quantity of belly contents
/mob/living/simple_animal/proc/update_fullness(var/atom/movable/M)
var/new_fullness = 0
diff --git a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
index 682505578d..2ae5308835 100644
--- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
@@ -393,13 +393,7 @@
// If digested prey is also a pred... anyone inside their bellies gets moved up.
if(is_vore_predator(M))
- for(var/belly in M.vore_organs)
- var/obj/belly/B = belly
- for(var/thing in B)
- var/atom/movable/AM = thing
- AM.forceMove(owner.loc)
- if(isliving(AM))
- to_chat(AM,"As [M] melts away around you, you find yourself in [owner]'s [lowertext(name)]")
+ M.release_vore_contents(include_absorbed = TRUE, silent = TRUE)
//Drop all items into the belly
for(var/obj/item/W in M)
diff --git a/modular_citadel/code/modules/vore/eating/living_vr.dm b/modular_citadel/code/modules/vore/eating/living_vr.dm
index 390ccc1f71..2e6018f112 100644
--- a/modular_citadel/code/modules/vore/eating/living_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/living_vr.dm
@@ -280,14 +280,6 @@
return 0
*/
-//
-// Release everything in every vore organ
-//
-/mob/living/proc/release_vore_contents(var/include_absorbed = TRUE)
- for(var/belly in vore_organs)
- var/obj/belly/B = belly
- B.release_all_contents(include_absorbed)
-
//
// Custom resist catches for /mob/living
//
@@ -354,47 +346,29 @@
// Verb for saving vore preferences to save file
//
/mob/living/proc/save_vore_prefs()
- to_chat(world, "Save_vore_prefs triggered")
- if(!client)
- to_chat(world, "No client detected, failed.")
- return FALSE
- if(client && !client.prefs_vr)
- to_chat(world, "[client] client detected, but no prefs_vr confirmed")
- return FALSE
+ if(!client || !client.prefs_vr)
+ return 0
if(!copy_to_prefs_vr())
- to_chat(world, "copy_to_prefs_vr failed")
- return FALSE
- if(client && !client.prefs_vr.save_vore())
- to_chat(world, "client detected, but client.prefs_vr.save_vore() failed.")
- return FALSE
- to_chat(world, "saving passed checks and returning TRUE")
- return TRUE
+ return 0
+ if(!client.prefs_vr.save_vore())
+ return 0
+
+ return 1
/mob/living/proc/apply_vore_prefs()
- to_chat(world, "apply_vore_prefs triggered")
- if(!client)
- to_chat(world, "No client detected, failed.")
- return FALSE
- if(client && !client.prefs_vr)
- to_chat(world, "Client detected, but no prefs_vr confirmed")
- return FALSE
- if(client && !client.prefs_vr.load_vore())
- to_chat(world, "client detected, but client.prefs_vr.load_vore() failed.")
- return FALSE
+ if(!client || !client.prefs_vr)
+ return 0
+ if(!client.prefs_vr.load_vore())
+ return 0
if(!copy_from_prefs_vr())
- to_chat(world, "copy_to_prefs_vr failed")
- return FALSE
- to_chat(world, "apply passed checks and returning TRUE")
- return TRUE
+ return 0
+
+ return 1
/mob/living/proc/copy_to_prefs_vr()
- to_chat(world, "copy_to_prefs_vr triggered")
- if(!client)
- to_chat(world, "No client detected, failed.")
- return FALSE
- if(client && !client.prefs_vr)
- src << "You attempted to save your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev."
- return FALSE
+ if(!client || !client.prefs_vr)
+ to_chat(src,"You attempted to save your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev.")
+ return 0
var/datum/vore_preferences/P = client.prefs_vr
@@ -409,19 +383,15 @@
P.belly_prefs = serialized
- return TRUE
+ return 1
//
// Proc for applying vore preferences, given bellies
//
/mob/living/proc/copy_from_prefs_vr()
- to_chat(world, "copy_from_prefs_vr triggered")
- if(!client)
- to_chat(world, "No client detected, failed.")
- return FALSE
- if(client && !client.prefs_vr)
- src << "You attempted to apply your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev."
- return FALSE
+ if(!client || !client.prefs_vr)
+ to_chat(src,"You attempted to apply your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev.")
+ return 0
var/datum/vore_preferences/P = client.prefs_vr
@@ -429,11 +399,20 @@
devourable = P.devourable
vore_taste = P.vore_taste
+ release_vore_contents(silent = TRUE)
vore_organs.Cut()
for(var/entry in P.belly_prefs)
list_to_object(entry,src)
- return TRUE
+ return 1
+
+//
+// Release everything in every vore organ
+//
+/mob/living/proc/release_vore_contents(var/include_absorbed = TRUE, var/silent = FALSE)
+ for(var/belly in vore_organs)
+ var/obj/belly/B = belly
+ B.release_all_contents(include_absorbed, silent)
//
// Returns examine messages for bellies
diff --git a/modular_citadel/code/modules/vore/eating/vore_vr.dm b/modular_citadel/code/modules/vore/eating/vore_vr.dm
index af8df4a96e..9cfceb742d 100644
--- a/modular_citadel/code/modules/vore/eating/vore_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/vore_vr.dm
@@ -79,41 +79,30 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
// Save/Load Vore Preferences
//
/datum/vore_preferences/proc/load_path(ckey,slot,filename="character",ext="json")
- if(!ckey || !slot)
- return
- to_chat(world, "load_path fired for [ckey], [slot]")
+ if(!ckey || !slot) return
path = "data/player_saves/[copytext(ckey,1,2)]/[ckey]/vore/[filename][slot].[ext]"
-
/datum/vore_preferences/proc/load_vore()
if(!client || !client_ckey)
- return FALSE //No client, how can we save?
- to_chat(world, "[client], [client_ckey] detected for load_vore.")
+ return 0 //No client, how can we save?
if(!client.prefs || !client.prefs.default_slot)
- to_chat(world, "[client] prefs weren't found.")
- return FALSE //Need to know what character to load!
+ return 0 //Need to know what character to load!
slot = client.prefs.default_slot
- to_chat(world, "[slot] is current slot")
load_path(client_ckey,slot)
- if(!path)
- return FALSE //Path couldn't be set?
- to_chat(world, "[path] is path")
+ if(!path) return 0 //Path couldn't be set?
if(!fexists(path)) //Never saved before
- to_chat(world, "[path] invalid or doesn't exist, attempting a save.")
save_vore() //Make the file first
- return TRUE
+ return 1
var/list/json_from_file = json_decode(file2text(path))
if(!json_from_file)
- to_chat(world, "[client] failed json_from_file check")
- return FALSE //My concern grows
+ return 0 //My concern grows
var/version = json_from_file["version"]
json_from_file = patch_version(json_from_file,version)
- to_chat(world, "[version] detected for load_vore.")
digestable = json_from_file["digestable"]
devourable = json_from_file["devourable"]
@@ -128,62 +117,41 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
if(isnull(belly_prefs))
belly_prefs = list()
- return TRUE
-/*
- allowmobvore = json_from_file["allowmobvore"]
- can_be_drop_prey = json_from_file["can_be_drop_prey"]
- can_be_drop_prey = json_from_file["can_be_drop_pred"]
-
- if(isnull(allowmobvore))
- allowmobvore = TRUE
- if(isnull(can_be_drop_prey))
- allowmobvore = FALSE
- if(isnull(can_be_drop_pred))
- allowmobvore = FALSE */
+ return 1
/datum/vore_preferences/proc/save_vore()
- to_chat(world, "save_vore triggered")
- var/json_file = path
if(!path)
- return FALSE
- to_chat(world, "[json_file] is path")
+ return 0
+
var/version = VORE_VERSION //For "good times" use in the future
- to_chat(world, "[version] is version")
- var/list/settings_list = list()
- settings_list["version"] = version
- settings_list["digestable"] = digestable
- settings_list["devourable"] = devourable
- settings_list["vore_taste"] = vore_taste
- settings_list["belly_prefs"] = belly_prefs
+ var/list/settings_list = list(
+ "version" = version,
+ "digestable" = digestable,
+ "devourable" = devourable,
+ "vore_taste" = vore_taste,
+ "belly_prefs" = belly_prefs,
+ )
//List to JSON
var/json_to_file = json_encode(settings_list)
if(!json_to_file)
- to_chat(world, "Saving: json_to_file failed json_encode")
- return FALSE
+ testing("Saving: [path] failed jsonencode")
+ return 0
//Write it out
-//#ifdef RUST_G
-// fdel(json_file)
-// WRITE_VORE(json_file, json_to_file)
-//#else
+#ifdef RUST_G
+ call(RUST_G, "file_write")(json_to_file, path)
+#else
// Fall back to using old format if we are not using rust-g
- to_chat(world, "Saving: RUST_G failed or was bypassed.")
- var/list/json
- if(fexists(json_file))
- json = json_decode(file2text(json_file))
- to_chat(world, "Saving: [json_file] being deleted and remade")
- fdel(json_file) //Byond only supports APPENDING to files, not replacing.
- else
- json = list(json_to_file)
- json = serialize_json()
- WRITE_FILE(json_file, json_encode(json))
-//#endif
- if(!fexists(json_file))
- to_chat(world, "Saving: [json_file] failed file write")
- return FALSE
- to_chat(world, "Saving: returning complete and TRUE")
- return TRUE
+ if(fexists(path))
+ fdel(path) //Byond only supports APPENDING to files, not replacing.
+ text2file(json_to_file, path)
+#endif
+ if(!fexists(path))
+ testing("Saving: [path] failed file write")
+ return 0
+
+ return 1
/* commented out list things
"allowmobvore" = allowmobvore,
@@ -191,13 +159,7 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
"can_be_drop_pred" = can_be_drop_pred, */
//Can do conversions here
-//datum/vore_preferences/proc/patch_version(var/list/json_from_file,var/version)
-// return json_from_file
-
-/datum/vore_preferences/proc/patch_version(var/list/json_from_file,var/version)
- var/savefile_version
- json_from_file["version"] = savefile_version
- if(savefile_version < VORE_VERSION)
- return savefile_version
+datum/vore_preferences/proc/patch_version(var/list/json_from_file,var/version)
return json_from_file
+
#undef VORE_VERSION