Move files and tweaks vore panel stuff
This commit is contained in:
@@ -35,8 +35,8 @@
|
||||
/mob/living/simple_animal/proc/update_fullness(var/atom/movable/M)
|
||||
var/new_fullness = 0
|
||||
for(var/I in vore_organs)
|
||||
var/datum/belly/B = vore_organs[I]
|
||||
if (!(M in B.internal_contents))
|
||||
var/obj/belly/B = vore_organs[I]
|
||||
if (!(M in B.contents))
|
||||
return FALSE // Nothing's inside
|
||||
new_fullness += M
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
var/obj/belly/B = new /obj/belly(src)
|
||||
vore_selected = B
|
||||
B.immutable = 1
|
||||
B.immutable = TRUE
|
||||
B.name = vore_stomach_name ? vore_stomach_name : "stomach"
|
||||
B.desc = vore_stomach_flavor ? vore_stomach_flavor : "Your surroundings are warm, soft, and slimy. Makes sense, considering you're inside \the [name]."
|
||||
B.digest_mode = vore_default_mode
|
||||
|
||||
+38
-37
@@ -38,6 +38,7 @@
|
||||
var/swallow_time = 10 SECONDS // for mob transfering automation
|
||||
var/vore_capacity = 1 // simple animal nom capacity
|
||||
var/is_wet = TRUE // Is this belly inside slimy parts?
|
||||
var/wet_loop = TRUE // Does this belly have a slimy internal loop?
|
||||
|
||||
//I don't think we've ever altered these lists. making them static until someone actually overrides them somewhere.
|
||||
var/tmp/static/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_HEAL,DM_NOISY,DM_ABSORB,DM_UNABSORB) // Possible digest modes
|
||||
@@ -138,7 +139,8 @@
|
||||
"digest_messages_prey",
|
||||
"examine_messages",
|
||||
"emote_lists",
|
||||
"is_wet"
|
||||
"is_wet",
|
||||
"wet_loop"
|
||||
)
|
||||
|
||||
//ommitted list
|
||||
@@ -152,13 +154,11 @@
|
||||
SSbellies.belly_list += src
|
||||
|
||||
/obj/belly/Destroy()
|
||||
SSbellies.belly_list -= src
|
||||
if(owner)
|
||||
Remove(owner)
|
||||
return ..()
|
||||
|
||||
/obj/belly/proc/Remove(mob/living/owner)
|
||||
owner.vore_organs -= src
|
||||
owner = null
|
||||
owner.vore_organs -= src
|
||||
owner = null
|
||||
. = ..()
|
||||
|
||||
// Called whenever an atom enters this belly
|
||||
/obj/belly/Entered(var/atom/movable/thing,var/atom/OldLoc)
|
||||
@@ -169,7 +169,7 @@
|
||||
to_chat(owner,"<span class='notice'>[thing] slides into your [lowertext(name)].</span>")
|
||||
|
||||
//Sound w/ antispam flag setting
|
||||
if(is_wet && (world.time > recent_sound))
|
||||
if(vore_sound && (world.time > recent_sound))
|
||||
var/turf/source = get_turf(owner)
|
||||
var/sound/eating = GLOB.vore_sounds[vore_sound]
|
||||
for(var/mob/living/M in get_hearers_in_view(3, source))
|
||||
@@ -187,7 +187,7 @@
|
||||
// If that location is another mob, contents are transferred into whichever of its bellies the owning mob is in.
|
||||
// Returns the number of mobs so released.
|
||||
/obj/belly/proc/release_all_contents(var/include_absorbed = FALSE, var/silent = FALSE)
|
||||
var/atom/destination = drop_location()
|
||||
// var/atom/destination = drop_location()
|
||||
//Don't bother if we don't have contents
|
||||
if(!contents.len)
|
||||
return FALSE
|
||||
@@ -207,22 +207,18 @@
|
||||
SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "fedprey", /datum/mood_event/fedprey)
|
||||
SEND_SIGNAL(OW, COMSIG_ADD_MOOD_EVENT, "emptypred", /datum/mood_event/emptypred)
|
||||
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "emptyprey", /datum/mood_event/emptyprey)
|
||||
AM.forceMove(destination) // Move the belly contents into the same location as belly's owner.
|
||||
count++
|
||||
for(var/mob/living/M in get_hearers_in_view(2, get_turf(owner)))
|
||||
if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES))
|
||||
var/sound/releasement = GLOB.release_sounds[release_sound]
|
||||
SEND_SOUND(M, releasement)
|
||||
count += release_specific_contents(AM, silent = TRUE)
|
||||
|
||||
//Clean up our own business
|
||||
items_preserved.Cut()
|
||||
if(isanimal(owner))
|
||||
owner.update_icons()
|
||||
owner.update_icons()
|
||||
|
||||
if(!silent)
|
||||
for(var/mob/living/M in get_hearers_in_view(2, get_turf(owner)))
|
||||
if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES))
|
||||
var/sound/releasement = GLOB.release_sounds[release_sound]
|
||||
SEND_SOUND(M, releasement)
|
||||
owner.visible_message("<font color='green'><b>[owner] expels everything from their [lowertext(name)]!</b></font>")
|
||||
items_preserved.Cut()
|
||||
owner.update_icons()
|
||||
|
||||
return count
|
||||
|
||||
@@ -235,16 +231,13 @@
|
||||
|
||||
M.forceMove(drop_location()) // Move the belly contents into the same location as belly's owner.
|
||||
items_preserved -= M
|
||||
if(!silent)
|
||||
for(var/mob/living/H in get_hearers_in_view(2, get_turf(owner)))
|
||||
if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES))
|
||||
var/sound/releasement = GLOB.release_sounds[release_sound]
|
||||
SEND_SOUND(H, releasement)
|
||||
|
||||
|
||||
if(istype(M,/mob/living))
|
||||
var/mob/living/ML = M
|
||||
var/mob/living/OW = owner
|
||||
ML.stop_sound_channel(CHANNEL_PREYLOOP)
|
||||
if(ML.client)
|
||||
ML.stop_sound_channel(CHANNEL_PREYLOOP) //Stop the internal loop, it'll restart if the isbelly check on next tick anyway
|
||||
ML.cure_blind("belly_[REF(src)]")
|
||||
SEND_SIGNAL(OW, COMSIG_CLEAR_MOOD_EVENT, "fedpred", /datum/mood_event/fedpred)
|
||||
SEND_SIGNAL(ML, COMSIG_CLEAR_MOOD_EVENT, "fedprey", /datum/mood_event/fedprey)
|
||||
@@ -263,12 +256,15 @@
|
||||
Pred.reagents.trans_to(Prey, Pred.reagents.total_volume / absorbed_count)
|
||||
|
||||
//Clean up our own business
|
||||
if(isanimal(owner))
|
||||
owner.update_icons()
|
||||
owner.update_icons()
|
||||
|
||||
if(!silent)
|
||||
for(var/mob/living/H in get_hearers_in_view(2, get_turf(owner)))
|
||||
if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES))
|
||||
var/sound/releasement = GLOB.release_sounds[release_sound]
|
||||
SEND_SOUND(H, releasement)
|
||||
owner.visible_message("<font color='green'><b>[owner] expels [M] from their [lowertext(name)]!</b></font>")
|
||||
owner.update_icons()
|
||||
|
||||
return TRUE
|
||||
|
||||
// Actually perform the mechanics of devouring the tasty prey.
|
||||
@@ -312,13 +308,13 @@
|
||||
/obj/belly/proc/transfer_contents(var/atom/movable/content, var/obj/belly/target, silent = FALSE)
|
||||
if(!(content in src) || !istype(target))
|
||||
return
|
||||
content.forceMove(target)
|
||||
for(var/mob/living/M in contents)
|
||||
M.cure_blind("belly_[REF(src)]")
|
||||
target.nom_mob(content, target.owner)
|
||||
// target.nom_mob(content, target.owner)
|
||||
if(!silent)
|
||||
var/turf/source = get_turf(owner)
|
||||
var/sound/eating = GLOB.vore_sounds[vore_sound]
|
||||
for(var/mob/living/M in get_hearers_in_view(3, source))
|
||||
for(var/mob/living/M in get_hearers_in_view(3, src))
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
SEND_SOUND(M, eating)
|
||||
|
||||
@@ -424,9 +420,12 @@
|
||||
if(!M.dropItemToGround(W))
|
||||
qdel(W)
|
||||
|
||||
//Incase they have the loop going, let's double check to stop it.
|
||||
M.stop_sound_channel(CHANNEL_PREYLOOP)
|
||||
|
||||
// Delete the digested mob
|
||||
qdel(M)
|
||||
M.stop_sound_channel(CHANNEL_PREYLOOP)
|
||||
|
||||
//Update owner
|
||||
owner.updateVRPanel()
|
||||
|
||||
@@ -470,7 +469,7 @@
|
||||
/obj/belly/drop_location()
|
||||
//Should be the case 99.99% of the time
|
||||
if(owner)
|
||||
return owner.loc
|
||||
return owner.drop_location()
|
||||
//Sketchy fallback for safety, put them somewhere safe.
|
||||
else if(ismob(src))
|
||||
testing("[src] (\ref[src]) doesn't have an owner, and dropped someone at a latespawn point!")
|
||||
@@ -525,17 +524,16 @@
|
||||
struggle_outer_message = "<span class='alert'>" + struggle_outer_message + "</span>"
|
||||
struggle_user_message = "<span class='alert'>" + struggle_user_message + "</span>"
|
||||
|
||||
var/turf/source = get_turf(owner)
|
||||
var/sound/struggle_snuggle = sound(get_sfx("struggle_sound"))
|
||||
var/sound/struggle_rustle = sound(get_sfx("rustle"))
|
||||
|
||||
if(is_wet)
|
||||
for(var/mob/living/M in get_hearers_in_view(3, source))
|
||||
for(var/mob/living/M in get_hearers_in_view(3, src))
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
SEND_SOUND(M, struggle_snuggle)
|
||||
|
||||
else
|
||||
for(var/mob/living/M in get_hearers_in_view(3, source))
|
||||
for(var/mob/living/M in get_hearers_in_view(3, src))
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
SEND_SOUND(M, struggle_rustle)
|
||||
|
||||
@@ -551,8 +549,10 @@
|
||||
to_chat(R,"<span class='warning'>You start to climb out of \the [lowertext(name)].</span>")
|
||||
to_chat(owner,"<span class='warning'>Someone is attempting to climb out of your [lowertext(name)]!</span>")
|
||||
if(do_after(R, escapetime))
|
||||
if((owner.stat || escapable) && (R.loc == src)) //Can still escape?
|
||||
if((escapable) && (R.loc == src)) //Can still escape?
|
||||
release_specific_contents(R)
|
||||
to_chat(R,"<span class='warning'>You climb out of \the [lowertext(name)].</span>")
|
||||
to_chat(owner,"<span class='warning'>[R] climbs out of your [lowertext(name)]!</span>")
|
||||
return
|
||||
else if(R.loc != src) //Aren't even in the belly. Quietly fail.
|
||||
return
|
||||
@@ -641,6 +641,7 @@
|
||||
dupe.swallow_time = swallow_time
|
||||
dupe.vore_capacity = vore_capacity
|
||||
dupe.is_wet = is_wet
|
||||
dupe.wet_loop = wet_loop
|
||||
|
||||
//// Object-holding variables
|
||||
//struggle_messages_outside - strings
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
for(var/mob/living/M in contents)
|
||||
if(isbelly(M.loc))
|
||||
if(world.time > M.next_preyloop)
|
||||
if(is_wet)
|
||||
if(is_wet && wet_loop)
|
||||
if(!M.client)
|
||||
continue
|
||||
M.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case
|
||||
+20
-20
@@ -8,7 +8,7 @@
|
||||
var/feeding = FALSE // Are we going to feed someone else?
|
||||
var/vore_taste = null // What the character tastes like
|
||||
var/no_vore = FALSE // If the character/mob can vore.
|
||||
var/openpanel = 0 // Is the vore panel open?
|
||||
var/openpanel = FALSE // Is the vore panel open?
|
||||
var/absorbed = FALSE //are we absorbed?
|
||||
var/next_preyloop
|
||||
var/vore_init = FALSE //Has this mob's vore been initialized yet?
|
||||
@@ -23,7 +23,7 @@
|
||||
M.verbs += /mob/living/proc/escapeOOC
|
||||
|
||||
if(M.no_vore) //If the mob isn't supposed to have a stomach, let's not give it an insidepanel so it can make one for itself, or a stomach.
|
||||
return 1
|
||||
return TRUE
|
||||
M.verbs += /mob/living/proc/insidePanel
|
||||
|
||||
//Tries to load prefs if a client is present otherwise gives freebie stomach
|
||||
@@ -31,8 +31,8 @@
|
||||
if(M)
|
||||
M.init_vore()
|
||||
|
||||
//Return 1 to hook-caller
|
||||
return 1
|
||||
//return TRUE to hook-caller
|
||||
return TRUE
|
||||
|
||||
/mob/living/proc/init_vore()
|
||||
vore_init = TRUE
|
||||
@@ -54,10 +54,10 @@
|
||||
LAZYINITLIST(vore_organs)
|
||||
var/obj/belly/B = new /obj/belly(src)
|
||||
vore_selected = B
|
||||
B.immutable = 1
|
||||
B.immutable = TRUE
|
||||
B.name = "Stomach"
|
||||
B.desc = "It appears to be rather warm and wet. Makes sense, considering it's inside [name]."
|
||||
B.can_taste = 1
|
||||
B.can_taste = TRUE
|
||||
return TRUE
|
||||
|
||||
// Handle being clicked, perhaps with something to devour
|
||||
@@ -183,7 +183,7 @@
|
||||
if(prey.ckey)
|
||||
prey_stat = prey.stat//only return this if they're not an unmonkey or whatever
|
||||
if(!prey.client)//if they disconnected, tell us
|
||||
prey_braindead = 1
|
||||
prey_braindead = TRUE
|
||||
if (pred == user)
|
||||
message_admins("[ADMIN_LOOKUPFLW(pred)] ate [ADMIN_LOOKUPFLW(prey)][!prey_braindead ? "" : " (BRAINDEAD)"][prey_stat ? " (DEAD/UNCONSCIOUS)" : ""].")
|
||||
pred.log_message("[key_name(pred)] ate [key_name(prey)].", LOG_ATTACK)
|
||||
@@ -212,7 +212,7 @@
|
||||
|
||||
//Other overridden resists go here
|
||||
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
// internal slimy button in case the loop stops playing but the player wants to hear it
|
||||
/mob/living/proc/preyloop_refresh()
|
||||
@@ -265,28 +265,28 @@
|
||||
//
|
||||
/mob/living/proc/save_vore_prefs()
|
||||
if(!client || !client.prefs_vr)
|
||||
return 0
|
||||
return FALSE
|
||||
if(!copy_to_prefs_vr())
|
||||
return 0
|
||||
return FALSE
|
||||
if(!client.prefs_vr.save_vore())
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/mob/living/proc/apply_vore_prefs()
|
||||
if(!client || !client.prefs_vr)
|
||||
return 0
|
||||
return FALSE
|
||||
if(!client.prefs_vr.load_vore())
|
||||
return 0
|
||||
return FALSE
|
||||
if(!copy_from_prefs_vr())
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/mob/living/proc/copy_to_prefs_vr()
|
||||
if(!client || !client.prefs_vr)
|
||||
to_chat(src,"<span class='warning'>You attempted to save your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/datum/vore_preferences/P = client.prefs_vr
|
||||
|
||||
@@ -302,7 +302,7 @@
|
||||
|
||||
P.belly_prefs = serialized
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
//
|
||||
// Proc for applying vore preferences, given bellies
|
||||
@@ -310,7 +310,7 @@
|
||||
/mob/living/proc/copy_from_prefs_vr()
|
||||
if(!client || !client.prefs_vr)
|
||||
to_chat(src,"<span class='warning'>You attempted to apply your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
vorepref_init = TRUE
|
||||
|
||||
var/datum/vore_preferences/P = client.prefs_vr
|
||||
@@ -325,7 +325,7 @@
|
||||
for(var/entry in P.belly_prefs)
|
||||
list_to_object(entry,src)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
//
|
||||
// Release everything in every vore organ
|
||||
+10
-10
@@ -84,22 +84,22 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
|
||||
|
||||
/datum/vore_preferences/proc/load_vore()
|
||||
if(!client || !client_ckey)
|
||||
return 0 //No client, how can we save?
|
||||
return FALSE //No client, how can we save?
|
||||
if(!client.prefs || !client.prefs.default_slot)
|
||||
return 0 //Need to know what character to load!
|
||||
return FALSE //Need to know what character to load!
|
||||
|
||||
slot = client.prefs.default_slot
|
||||
|
||||
load_path(client_ckey,slot)
|
||||
|
||||
if(!path) return 0 //Path couldn't be set?
|
||||
if(!path) return FALSE //Path couldn't be set?
|
||||
if(!fexists(path)) //Never saved before
|
||||
save_vore() //Make the file first
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
var/list/json_from_file = json_decode(file2text(path))
|
||||
if(!json_from_file)
|
||||
return 0 //My concern grows
|
||||
return FALSE //My concern grows
|
||||
|
||||
var/version = json_from_file["version"]
|
||||
json_from_file = patch_version(json_from_file,version)
|
||||
@@ -120,11 +120,11 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
|
||||
if(isnull(belly_prefs))
|
||||
belly_prefs = list()
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/vore_preferences/proc/save_vore()
|
||||
if(!path)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/version = VORE_VERSION //For "good times" use in the future
|
||||
var/list/settings_list = list(
|
||||
@@ -140,7 +140,7 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
|
||||
var/json_to_file = json_encode(settings_list)
|
||||
if(!json_to_file)
|
||||
testing("Saving: [path] failed jsonencode")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
//Write it out
|
||||
//#ifdef RUST_G
|
||||
@@ -153,9 +153,9 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
|
||||
//#endif
|
||||
if(!fexists(path))
|
||||
testing("Saving: [path] failed file write")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/* commented out list things
|
||||
"allowmobvore" = allowmobvore,
|
||||
+54
-50
@@ -21,10 +21,10 @@
|
||||
picker_holder.popup = new(src, "insidePanel","Vore Panel", 450, 700, picker_holder)
|
||||
picker_holder.popup.set_content(dat)
|
||||
picker_holder.popup.open()
|
||||
src.openpanel = 1
|
||||
src.openpanel = TRUE
|
||||
|
||||
/mob/living/proc/updateVRPanel() //Panel popup update call from belly events.
|
||||
if(src.openpanel == 1)
|
||||
if(src.openpanel == TRUE)
|
||||
var/datum/vore_look/picker_holder = new()
|
||||
picker_holder.loop = picker_holder
|
||||
picker_holder.selected = vore_selected
|
||||
@@ -40,7 +40,7 @@
|
||||
//
|
||||
/datum/vore_look
|
||||
var/obj/belly/selected
|
||||
var/show_interacts = 0
|
||||
var/show_interacts = FALSE
|
||||
var/datum/browser/popup
|
||||
var/loop = null; // Magic self-reference to stop the handler from being GC'd before user takes action.
|
||||
|
||||
@@ -163,6 +163,9 @@
|
||||
//Belly Type button
|
||||
dat += "<br><a href='?src=\ref[src];b_wetness=\ref[selected]'>Is Fleshy:</a>"
|
||||
dat += "[selected.is_wet ? "Yes" : "No"]"
|
||||
if(selected.is_wet)
|
||||
dat += "<br><a href='?src=\ref[src];b_wetloop=\ref[selected]'>Internal loop for prey?:</a>"
|
||||
dat += "[selected.wet_loop ? "Yes" : "No"]"
|
||||
|
||||
//Digest Mode Button
|
||||
dat += "<br><a href='?src=\ref[src];b_mode=\ref[selected]'>Belly Mode:</a>"
|
||||
@@ -241,21 +244,19 @@
|
||||
dat += "<HR>"
|
||||
switch(user.digestable)
|
||||
if(TRUE)
|
||||
dat += "<a href='?src=\ref[src];toggledg=1'>Toggle Digestable <font color='darkgreen'>(Currently: ON)</font></a>"
|
||||
dat += "<br><a style='background:#173d15;' href='?src=\ref[src];toggledg=1'>Toggle Digestable (Currently: ON)</a>"
|
||||
if(FALSE)
|
||||
dat += "<a href='?src=\ref[src];toggledg=1'>Toggle Digestable <font color='red'>(Currently: OFF)</font></a>"
|
||||
|
||||
dat += "<br><a style='background:#990000;' href='?src=\ref[src];toggledg=1'>Toggle Digestable (Currently: OFF)</a>"
|
||||
switch(user.devourable)
|
||||
if(TRUE)
|
||||
dat += "<br><a href='?src=\ref[src];toggledvor=1'>Toggle Devourable <font color='darkgreen'>(Currently: ON)</font></a>"
|
||||
dat += "<br><a style='background:#173d15;' href='?src=\ref[src];toggledvor=1'>Toggle Devourable (Currently: ON)</a>"
|
||||
if(FALSE)
|
||||
dat += "<br><a href='?src=\ref[src];toggledvor=1'>Toggle Devourable <font color='red'>(Currently: OFF)</font></a>"
|
||||
|
||||
dat += "<br><a style='background:#990000;' href='?src=\ref[src];toggledvor=1'>Toggle Devourable (Currently: OFF)</a>"
|
||||
switch(user.feeding)
|
||||
if(TRUE)
|
||||
dat += "<br><a href='?src=\ref[src];toggledfeed=1'>Toggle Feeding <font color='darkgreen'>(Currently: ON)</font></a>"
|
||||
dat += "<br><a style='background:#173d15;' href='?src=\ref[src];toggledfeed=1'>Toggle Feeding (Currently: ON)</a>"
|
||||
if(FALSE)
|
||||
dat += "<br><a href='?src=\ref[src];toggledfeed=1'>Toggle Feeding <font color='red'>(Currently: OFF)</font></a>"
|
||||
dat += "<br><a style='background:#990000;' href='?src=\ref[src];toggledfeed=1'>Toggle Feeding (Currently: OFF)</a>"
|
||||
|
||||
//Returns the dat html to the vore_look
|
||||
return dat
|
||||
@@ -266,12 +267,12 @@
|
||||
|
||||
if(href_list["close"])
|
||||
qdel(src) // Cleanup
|
||||
user.openpanel = 0
|
||||
user.openpanel = FALSE
|
||||
return
|
||||
|
||||
if(href_list["show_int"])
|
||||
show_interacts = !show_interacts
|
||||
return 1 //Force update
|
||||
return TRUE //Force update
|
||||
|
||||
if(href_list["int_help"])
|
||||
alert("These control how your belly responds to someone using 'resist' while inside you. The percent chance to trigger each is listed below, \
|
||||
@@ -279,13 +280,13 @@
|
||||
These only function as long as interactions are turned on in general. Keep in mind, the 'belly mode' interactions (digest/absorb) \
|
||||
will affect all prey in that belly, if one resists and triggers digestion/absorption. If multiple trigger at the same time, \
|
||||
only the first in the order of 'Escape > Transfer > Absorb > Digest' will occur.","Interactions Help")
|
||||
return 0 //Force update
|
||||
return FALSE //Force update
|
||||
|
||||
if(href_list["outsidepick"])
|
||||
var/atom/movable/tgt = locate(href_list["outsidepick"])
|
||||
var/obj/belly/OB = locate(href_list["outsidebelly"])
|
||||
if(!(tgt in OB)) //Aren't here anymore, need to update menu.
|
||||
return 1
|
||||
return TRUE
|
||||
var/intent = "Examine"
|
||||
|
||||
if(istype(tgt,/mob/living))
|
||||
@@ -298,7 +299,7 @@
|
||||
if("Help Out") //Help the inside-mob out
|
||||
if(user.stat || user.absorbed || M.absorbed)
|
||||
to_chat(user,"<span class='warning'>You can't do that in your state!</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
to_chat(user,"<font color='green'>You begin to push [M] to freedom!</font>")
|
||||
to_chat(M,"[usr] begins to push you to freedom!")
|
||||
@@ -317,11 +318,11 @@
|
||||
if("Devour") //Eat the inside mob
|
||||
if(user.absorbed || user.stat)
|
||||
to_chat(user,"<span class='warning'>You can't do that in your state!</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
if(!user.vore_selected)
|
||||
to_chat(user,"<span class='warning'>Pick a belly on yourself first!</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
var/obj/belly/TB = user.vore_selected
|
||||
to_chat(user,"<span class='warning'>You begin to [lowertext(TB.vore_verb)] [M] into your [lowertext(TB.name)]!</span>")
|
||||
@@ -339,7 +340,7 @@
|
||||
var/obj/item/T = tgt
|
||||
if(!(tgt in OB))
|
||||
//Doesn't exist anymore, update.
|
||||
return 1
|
||||
return TRUE
|
||||
intent = alert("What do you want to do to that?","Query","Examine","Use Hand")
|
||||
switch(intent)
|
||||
if("Examine")
|
||||
@@ -348,7 +349,7 @@
|
||||
if("Use Hand")
|
||||
if(user.stat)
|
||||
to_chat(user,"<span class='warning'>You can't do that in your state!</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
user.ClickOn(T)
|
||||
sleep(5) //Seems to exit too fast for the panel to update
|
||||
@@ -361,23 +362,23 @@
|
||||
intent = alert("Eject all, Move all?","Query","Eject all","Cancel","Move all")
|
||||
switch(intent)
|
||||
if("Cancel")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if("Eject all")
|
||||
if(user.stat)
|
||||
to_chat(user,"<span class='warning'>You can't do that in your state!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
selected.release_all_contents()
|
||||
|
||||
if("Move all")
|
||||
if(user.stat)
|
||||
to_chat(user,"<span class='warning'>You can't do that in your state!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/obj/belly/choice = input("Move all where?","Select Belly") as null|anything in user.vore_organs
|
||||
if(!choice)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
for(var/atom/movable/tgt in selected)
|
||||
to_chat(tgt,"<span class='warning'>You're squished from [user]'s [lowertext(selected)] to their [lowertext(choice.name)]!</span>")
|
||||
@@ -385,7 +386,7 @@
|
||||
|
||||
var/atom/movable/tgt = locate(href_list["insidepick"])
|
||||
if(!(tgt in selected)) //Old menu, needs updating because they aren't really there.
|
||||
return 1 //Forces update
|
||||
return TRUE //Forces update
|
||||
intent = "Examine"
|
||||
intent = alert("Examine, Eject, Move? Examine if you want to leave this box.","Query","Examine","Eject","Move")
|
||||
switch(intent)
|
||||
@@ -395,25 +396,25 @@
|
||||
if("Eject")
|
||||
if(user.stat)
|
||||
to_chat(user,"<span class='warning'>You can't do that in your state!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
selected.release_specific_contents(tgt)
|
||||
|
||||
if("Move")
|
||||
if(user.stat)
|
||||
to_chat(user,"<span class='warning'>You can't do that in your state!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/obj/belly/choice = input("Move [tgt] where?","Select Belly") as null|anything in user.vore_organs
|
||||
if(!choice || !(tgt in selected))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
to_chat(tgt,"<span class='warning'>You're squished from [user]'s [lowertext(selected.name)] to their [lowertext(choice.name)]!</span>")
|
||||
selected.transfer_contents(tgt, choice)
|
||||
|
||||
if(href_list["newbelly"])
|
||||
if(user.vore_organs.len >= BELLIES_MAX)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/new_name = html_encode(input(usr,"New belly's name:","New Belly") as text|null)
|
||||
|
||||
@@ -430,7 +431,7 @@
|
||||
|
||||
if(failure_msg) //Something went wrong.
|
||||
alert(user,failure_msg,"Error!")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/obj/belly/NB = new(user)
|
||||
NB.name = new_name
|
||||
@@ -459,19 +460,22 @@
|
||||
|
||||
if(failure_msg) //Something went wrong.
|
||||
alert(user,failure_msg,"Error!")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
selected.name = new_name
|
||||
|
||||
if(href_list["b_wetness"])
|
||||
selected.is_wet = !selected.is_wet
|
||||
|
||||
if(href_list["b_wetloop"])
|
||||
selected.wet_loop = !selected.wet_loop
|
||||
|
||||
if(href_list["b_mode"])
|
||||
var/list/menu_list = selected.digest_modes
|
||||
|
||||
var/new_mode = input("Choose Mode (currently [selected.digest_mode])") as null|anything in menu_list
|
||||
if(!new_mode)
|
||||
return 0
|
||||
return FALSE
|
||||
selected.digest_mode = new_mode
|
||||
|
||||
if(href_list["b_desc"])
|
||||
@@ -539,7 +543,7 @@
|
||||
|
||||
if(length(new_verb) > BELLIES_NAME_MAX || length(new_verb) < BELLIES_NAME_MIN)
|
||||
alert("Entered verb length invalid (must be longer than [BELLIES_NAME_MIN], no longer than [BELLIES_NAME_MAX]).","Error")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
selected.vore_verb = new_verb
|
||||
|
||||
@@ -586,17 +590,17 @@
|
||||
selected.bulge_size = (new_bulge/100)
|
||||
|
||||
if(href_list["b_escapable"])
|
||||
if(selected.escapable == 0) //Possibly escapable and special interactions.
|
||||
selected.escapable = 1
|
||||
if(selected.escapable == FALSE) //Possibly escapable and special interactions.
|
||||
selected.escapable = TRUE
|
||||
to_chat(usr,"<span class='warning'>Prey now have special interactions with your [lowertext(selected.name)] depending on your settings.</span>")
|
||||
else if(selected.escapable == 1) //Never escapable.
|
||||
selected.escapable = 0
|
||||
else if(selected.escapable == TRUE) //Never escapable.
|
||||
selected.escapable = FALSE
|
||||
to_chat(usr,"<span class='warning'>Prey will not be able to have special interactions with your [lowertext(selected.name)].</span>")
|
||||
show_interacts = 0 //Force the hiding of the panel
|
||||
show_interacts = FALSE //Force the hiding of the panel
|
||||
else
|
||||
alert("Something went wrong. Your stomach will now not have special interactions. Press the button enable them again and tell a dev.","Error") //If they somehow have a varable that's not 0 or 1
|
||||
selected.escapable = 0
|
||||
show_interacts = 0 //Force the hiding of the panel
|
||||
selected.escapable = FALSE
|
||||
show_interacts = FALSE //Force the hiding of the panel
|
||||
|
||||
if(href_list["b_escapechance"])
|
||||
var/escape_chance_input = input(user, "Set prey escape chance on resist (as %)", "Prey Escape Chance") as num|null
|
||||
@@ -617,7 +621,7 @@
|
||||
var/obj/belly/choice = input("Where do you want your [lowertext(selected.name)] to lead if prey resists?","Select Belly") as null|anything in (user.vore_organs + "None - Remove" - selected)
|
||||
|
||||
if(!choice) //They cancelled, no changes
|
||||
return 0
|
||||
return FALSE
|
||||
else if(choice == "None - Remove")
|
||||
selected.transferlocation = null
|
||||
else
|
||||
@@ -636,7 +640,7 @@
|
||||
if(href_list["b_del"])
|
||||
var/alert = alert("Are you sure you want to delete your [lowertext(selected.name)]?","Confirmation","Delete","Cancel")
|
||||
if(!alert == "Delete")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/failure_msg = ""
|
||||
|
||||
@@ -657,7 +661,7 @@
|
||||
|
||||
if(failure_msg)
|
||||
alert(user,failure_msg,"Error!")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
qdel(selected)
|
||||
selected = user.vore_organs[1]
|
||||
@@ -674,7 +678,7 @@
|
||||
if(href_list["applyprefs"])
|
||||
var/alert = alert("Are you sure you want to reload character slot preferences? This will remove your current vore organs and eject their contents.","Confirmation","Reload","Cancel")
|
||||
if(!alert == "Reload")
|
||||
return 0
|
||||
return FALSE
|
||||
if(!user.apply_vore_prefs())
|
||||
alert("ERROR: Vore preferences failed to apply!","Error")
|
||||
else
|
||||
@@ -683,19 +687,19 @@
|
||||
if(href_list["setflavor"])
|
||||
var/new_flavor = html_encode(input(usr,"What your character tastes like (40ch limit). This text will be printed to the pred after 'X tastes of...' so just put something like 'strawberries and cream':","Character Flavor",user.vore_taste) as text|null)
|
||||
if(!new_flavor)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
new_flavor = readd_quotes(new_flavor)
|
||||
if(length(new_flavor) > FLAVOR_MAX)
|
||||
alert("Entered flavor/taste text too long. [FLAVOR_MAX] character limit.","Error!")
|
||||
return 0
|
||||
return FALSE
|
||||
user.vore_taste = new_flavor
|
||||
|
||||
if(href_list["toggledg"])
|
||||
var/choice = alert(user, "This button is for those who don't like being digested. It can make you undigestable to all mobs. Digesting you is currently: [user.digestable ? "Allowed" : "Prevented"]", "", "Allow Digestion", "Cancel", "Prevent Digestion")
|
||||
switch(choice)
|
||||
if("Cancel")
|
||||
return 0
|
||||
return FALSE
|
||||
if("Allow Digestion")
|
||||
user.digestable = TRUE
|
||||
if("Prevent Digestion")
|
||||
@@ -708,7 +712,7 @@
|
||||
var/choice = alert(user, "This button is for those who don't like vore at all. Devouring you is currently: [user.devourable ? "Allowed" : "Prevented"]", "", "Allow Devourment", "Cancel", "Prevent Devourment")
|
||||
switch(choice)
|
||||
if("Cancel")
|
||||
return 0
|
||||
return FALSE
|
||||
if("Allow Devourment")
|
||||
user.devourable = TRUE
|
||||
if("Prevent Devourment")
|
||||
@@ -721,7 +725,7 @@
|
||||
var/choice = alert(user, "This button is to toggle your ability to be fed to others. Feeding predators is currently: [user.feeding ? "Allowed" : "Prevented"]", "", "Allow Feeding", "Cancel", "Prevent Feeding")
|
||||
switch(choice)
|
||||
if("Cancel")
|
||||
return 0
|
||||
return FALSE
|
||||
if("Allow Feeding")
|
||||
user.feeding = TRUE
|
||||
if("Prevent Feeding")
|
||||
@@ -731,4 +735,4 @@
|
||||
user.client.prefs_vr.feeding = user.feeding
|
||||
|
||||
//Refresh when interacted with, returning 1 makes vore_look.Topic update
|
||||
return 1
|
||||
return TRUE
|
||||
+11
-11
@@ -2887,6 +2887,17 @@
|
||||
#include "code\modules\vending\toys.dm"
|
||||
#include "code\modules\vending\wardrobes.dm"
|
||||
#include "code\modules\vending\youtool.dm"
|
||||
#include "code\modules\vore\hook-defs.dm"
|
||||
#include "code\modules\vore\persistence.dm"
|
||||
#include "code\modules\vore\trycatch.dm"
|
||||
#include "code\modules\vore\eating\belly_dat_vr.dm"
|
||||
#include "code\modules\vore\eating\belly_obj.dm"
|
||||
#include "code\modules\vore\eating\bellymodes.dm"
|
||||
#include "code\modules\vore\eating\digest_act.dm"
|
||||
#include "code\modules\vore\eating\living.dm"
|
||||
#include "code\modules\vore\eating\vore.dm"
|
||||
#include "code\modules\vore\eating\voreitems.dm"
|
||||
#include "code\modules\vore\eating\vorepanel.dm"
|
||||
#include "code\modules\VR\vr_mob.dm"
|
||||
#include "code\modules\VR\vr_sleeper.dm"
|
||||
#include "code\modules\zombie\items.dm"
|
||||
@@ -3109,16 +3120,5 @@
|
||||
#include "modular_citadel\code\modules\research\techweb\_techweb.dm"
|
||||
#include "modular_citadel\code\modules\research\xenobiology\xenobio_camera.dm"
|
||||
#include "modular_citadel\code\modules\vehicles\secway.dm"
|
||||
#include "modular_citadel\code\modules\vore\hook-defs_vr.dm"
|
||||
#include "modular_citadel\code\modules\vore\persistence.dm"
|
||||
#include "modular_citadel\code\modules\vore\trycatch_vr.dm"
|
||||
#include "modular_citadel\code\modules\vore\eating\belly_dat_vr.dm"
|
||||
#include "modular_citadel\code\modules\vore\eating\belly_obj_vr.dm"
|
||||
#include "modular_citadel\code\modules\vore\eating\bellymodes_vr.dm"
|
||||
#include "modular_citadel\code\modules\vore\eating\digest_act_vr.dm"
|
||||
#include "modular_citadel\code\modules\vore\eating\living_vr.dm"
|
||||
#include "modular_citadel\code\modules\vore\eating\vore_vr.dm"
|
||||
#include "modular_citadel\code\modules\vore\eating\voreitems.dm"
|
||||
#include "modular_citadel\code\modules\vore\eating\vorepanel_vr.dm"
|
||||
#include "modular_citadel\interface\skin.dmf"
|
||||
// END_INCLUDE
|
||||
|
||||
Reference in New Issue
Block a user