Replaced all the extraneous flags with bitflags
This commit is contained in:
@@ -1,18 +1,11 @@
|
||||
///////////////////// Mob Living /////////////////////
|
||||
/mob/living
|
||||
var/digestable = FALSE // Can the mob be digested inside a belly?
|
||||
var/vore_flags = 0
|
||||
var/showvoreprefs = TRUE // Determines if the mechanical vore preferences button will be displayed on the mob or not.
|
||||
var/obj/belly/vore_selected // Default to no vore capability.
|
||||
var/list/vore_organs = list() // List of vore containers inside a mob
|
||||
var/devourable = FALSE // Can the mob be vored at all?
|
||||
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 = 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?
|
||||
var/vorepref_init = FALSE //Has this mob's voreprefs been initialized?
|
||||
|
||||
//
|
||||
// Hook for generic creation of stuff on new creatures
|
||||
@@ -22,7 +15,7 @@
|
||||
M.verbs += /mob/living/proc/lick
|
||||
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.
|
||||
if(M.vore_flags & 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 TRUE
|
||||
M.verbs += /mob/living/proc/insidePanel
|
||||
|
||||
@@ -35,7 +28,7 @@
|
||||
return TRUE
|
||||
|
||||
/mob/living/proc/init_vore()
|
||||
vore_init = TRUE
|
||||
ENABLE_BITFIELD(vore_flags, VORE_INIT)
|
||||
//Something else made organs, meanwhile.
|
||||
if(LAZYLEN(vore_organs))
|
||||
return TRUE
|
||||
@@ -75,7 +68,7 @@
|
||||
return
|
||||
|
||||
if(pred == prey) //you click your target
|
||||
if(!pred.feeding)
|
||||
if(!CHECK_BITFIELD(pred.vore_flags,FEEDING))
|
||||
to_chat(user, "<span class='notice'>They aren't able to be fed.</span>")
|
||||
to_chat(pred, "<span class='notice'>[user] tried to feed you themselves, but you aren't voracious enough to be fed.</span>")
|
||||
return
|
||||
@@ -91,11 +84,11 @@
|
||||
feed_grabbed_to_self(user, prey)
|
||||
|
||||
else // click someone other than you/prey
|
||||
if(!pred.feeding)
|
||||
if(!CHECK_BITFIELD(pred.vore_flags,FEEDING))
|
||||
to_chat(user, "<span class='notice'>They aren't voracious enough to be fed.</span>")
|
||||
to_chat(pred, "<span class='notice'>[user] tried to feed you [prey], but you aren't voracious enough to be fed.</span>")
|
||||
return
|
||||
if(!prey.feeding)
|
||||
if(!CHECK_BITFIELD(prey.vore_flags,FEEDING))
|
||||
to_chat(user, "<span class='notice'>They aren't able to be fed to someone.</span>")
|
||||
to_chat(prey, "<span class='notice'>[user] tried to feed you to [pred], but you aren't able to be fed to them.</span>")
|
||||
return
|
||||
@@ -128,7 +121,7 @@
|
||||
testing("[user] attempted to feed [prey] to [pred], via [lowertext(belly.name)] but it went wrong.")
|
||||
return
|
||||
|
||||
if (!prey.devourable)
|
||||
if (!prey.vore_flags & DEVOURABLE)
|
||||
to_chat(user, "This can't be eaten!")
|
||||
return FALSE
|
||||
|
||||
@@ -267,9 +260,7 @@
|
||||
to_chat(src,"<span class='warning'>You attempted to save your vore prefs but somehow you're in this character without a client.prefs variable. Tell a dev.</span>")
|
||||
return FALSE
|
||||
|
||||
client.prefs.digestable = digestable
|
||||
client.prefs.devourable = devourable
|
||||
client.prefs.feeding = feeding
|
||||
client.prefs.vore_flags = vore_flags // there's garbage data in here, but it doesn't matter
|
||||
client.prefs.vore_taste = vore_taste
|
||||
|
||||
var/list/serialized = list()
|
||||
@@ -288,12 +279,17 @@
|
||||
if(!client || !client.prefs)
|
||||
to_chat(src,"<span class='warning'>You attempted to apply your vore prefs but somehow you're in this character without a client.prefs variable. Tell a dev.</span>")
|
||||
return FALSE
|
||||
vorepref_init = TRUE
|
||||
ENABLE_BITFIELD(vore_flags,VOREPREF_INIT)
|
||||
|
||||
// garbage data coming back the other way or breaking absorbed would be bad, so instead we do this
|
||||
vore_flags |= CHECK_BITFIELD(client.prefs.vore_flags,DIGESTABLE) // set to 1 if prefs is 1
|
||||
vore_flags |= CHECK_BITFIELD(client.prefs.vore_flags,DEVOURABLE)
|
||||
vore_flags |= CHECK_BITFIELD(client.prefs.vore_flags,FEEDING)
|
||||
|
||||
vore_flags &= CHECK_BITFIELD(client.prefs.vore_flags,DIGESTABLE) // set to 0 if prefs is 0
|
||||
vore_flags &= CHECK_BITFIELD(client.prefs.vore_flags,DEVOURABLE)
|
||||
vore_flags &= CHECK_BITFIELD(client.prefs.vore_flags,FEEDING)
|
||||
|
||||
digestable = client.prefs.digestable
|
||||
devourable = client.prefs.devourable
|
||||
feeding = client.prefs.feeding
|
||||
vore_taste = client.prefs.vore_taste
|
||||
|
||||
release_vore_contents(silent = TRUE)
|
||||
@@ -361,7 +357,7 @@
|
||||
|
||||
var/list/choices
|
||||
for(var/mob/living/L in view(1))
|
||||
if(L != src && (!L.ckey || L.client?.prefs.lickable) && Adjacent(L))
|
||||
if(L != src && (!L.ckey || L.client?.prefs.vore_flags & LICKABLE) && Adjacent(L))
|
||||
LAZYADD(choices, L)
|
||||
|
||||
if(!choices)
|
||||
@@ -369,7 +365,7 @@
|
||||
|
||||
var/mob/living/tasted = input(src, "Who would you like to lick? (Excluding yourself and those with the preference disabled)", "Licking") as null|anything in choices
|
||||
|
||||
if(QDELETED(tasted) || (tasted.ckey && !(tasted.client?.prefs.lickable)) || !Adjacent(tasted) || incapacitated(ignore_restraints = TRUE))
|
||||
if(QDELETED(tasted) || (tasted.ckey && !(tasted.client?.prefs.vore_flags & LICKABLE)) || !Adjacent(tasted) || incapacitated(ignore_restraints = TRUE))
|
||||
return
|
||||
|
||||
setClickCooldown(100)
|
||||
|
||||
Reference in New Issue
Block a user