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