* map tweaks/shuttle engines * helpers and defines * global/onclick * controllers and datums * mapping * game folder * some other stuff * some modules * modules that aren't mobs * some mob stuff * new player stuff * mob living * silicon stuff * simple animal things * carbon/ayylmao * update_icons * carbon/human * sounds and tools * icons and stuff * hippie grinder changes + tgui * kitchen.dmi * compile issues fixed * mapfix * Mapfixes 2.0 * mapedit2.0 * mapmerger pls * Revert "mapedit2.0" This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481. * clean up vore folder + 2 hotfixes * admin ticket refinement * Blob tweaks and LAZYADD * LAZYADD IS LAZY * Magic strings purged * DEFINES NEED HIGHER PRIORITIES * Only a sleepless idiot deals in absolute TRUE|FALSE * u h g * progress bar fix * reverts ticket logs * there's always that one guy * fixes and stuff * 2/27 fixes * game folder stuff * stats * some modules again * clothing stuff gets vg clothing out of the main files * everything not mobs again * mob stuff * maps, tgui, sql stuff * icons * additional fixes and compile errors * don't need this anymore * Oh right this isn't needed anymore * maint bar re-added * that doesn't need to be here * stupid events * wtfeven * probably makes Travis happy * don't care to fix the grinder atm * fixes vending sprites, changes turret * lethal, not lethals * overylays are finicky creatures * lazy fix for bleeding edgy (#252) * map tweaks/shuttle engines * helpers and defines * global/onclick * controllers and datums * mapping * game folder * some other stuff * some modules * modules that aren't mobs * some mob stuff * new player stuff * mob living * silicon stuff * simple animal things * carbon/ayylmao * update_icons * carbon/human * sounds and tools * icons and stuff * hippie grinder changes + tgui * kitchen.dmi * compile issues fixed * mapfix * Mapfixes 2.0 * mapedit2.0 * mapmerger pls * Revert "mapedit2.0" This reverts commit 74139a3cacea10df7aafca06c0a10bd3daf3a481. * clean up vore folder + 2 hotfixes * admin ticket refinement * Blob tweaks and LAZYADD * LAZYADD IS LAZY * Magic strings purged * DEFINES NEED HIGHER PRIORITIES * Only a sleepless idiot deals in absolute TRUE|FALSE * u h g * progress bar fix * reverts ticket logs * there's always that one guy * fixes and stuff * 2/27 fixes * game folder stuff * stats * some modules again * clothing stuff gets vg clothing out of the main files * everything not mobs again * mob stuff * maps, tgui, sql stuff * icons * additional fixes and compile errors * don't need this anymore * Oh right this isn't needed anymore * maint bar re-added * that doesn't need to be here * stupid events * wtfeven * probably makes Travis happy * don't care to fix the grinder atm * fixes vending sprites, changes turret * lethal, not lethals * overylays are finicky creatures
125 lines
3.5 KiB
Plaintext
125 lines
3.5 KiB
Plaintext
|
|
/*
|
|
VVVVVVVV VVVVVVVV OOOOOOOOO RRRRRRRRRRRRRRRRR EEEEEEEEEEEEEEEEEEEEEE
|
|
V::::::V V::::::V OO:::::::::OO R::::::::::::::::R E::::::::::::::::::::E
|
|
V::::::V V::::::V OO:::::::::::::OO R::::::RRRRRR:::::R E::::::::::::::::::::E
|
|
V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEEEEE::::E
|
|
V:::::V V:::::V O::::::O O::::::O R::::R R:::::R E:::::E EEEEEE
|
|
V:::::V V:::::V O:::::O O:::::O R::::R R:::::R E:::::E
|
|
V:::::V V:::::V O:::::O O:::::O R::::RRRRRR:::::R E::::::EEEEEEEEEE
|
|
V:::::V V:::::V O:::::O O:::::O R:::::::::::::RR E:::::::::::::::E
|
|
V:::::V V:::::V O:::::O O:::::O R::::RRRRRR:::::R E:::::::::::::::E
|
|
V:::::V V:::::V O:::::O O:::::O R::::R R:::::R E::::::EEEEEEEEEE
|
|
V:::::V:::::V O:::::O O:::::O R::::R R:::::R E:::::E
|
|
V:::::::::V O::::::O O::::::O R::::R R:::::R E:::::E EEEEEE
|
|
V:::::::V O:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEEEE:::::E
|
|
V:::::V OO:::::::::::::OO R::::::R R:::::RE::::::::::::::::::::E
|
|
V:::V OO:::::::::OO R::::::R R:::::RE::::::::::::::::::::E
|
|
VVV OOOOOOOOO RRRRRRRR RRRRRRREEEEEEEEEEEEEEEEEEEEEE
|
|
|
|
-Aro <3 */
|
|
|
|
//
|
|
// Overrides/additions to stock defines go here, as well as hooks. Sort them by
|
|
// the object they are overriding. So all /mob/living together, etc.
|
|
//
|
|
//
|
|
// The datum type bolted onto normal preferences datums for storing Vore stuff
|
|
//
|
|
/client
|
|
var/datum/vore_preferences/prefs_vr
|
|
|
|
/hook/client_new/proc/add_prefs_vr(client/C)
|
|
C.prefs_vr = new/datum/vore_preferences(C)
|
|
if(C.prefs_vr)
|
|
return TRUE
|
|
|
|
return FALSE
|
|
|
|
/datum/vore_preferences
|
|
//Actual preferences
|
|
var/digestable = 1
|
|
var/devourable = 0
|
|
var/list/belly_prefs = list()
|
|
|
|
//Mechanically required
|
|
var/path
|
|
var/slot
|
|
var/client/client
|
|
var/client_ckey
|
|
var/client/parent
|
|
|
|
/datum/vore_preferences/New(client/C)
|
|
if(istype(C))
|
|
client = C
|
|
client_ckey = C.ckey
|
|
load_vore(C)
|
|
|
|
//
|
|
// Check if an object is capable of eating things, based on vore_organs
|
|
//
|
|
/proc/is_vore_predator(var/mob/living/O)
|
|
if(istype(O,/mob/living))
|
|
if(O.vore_organs.len > 0)
|
|
return TRUE
|
|
|
|
return FALSE
|
|
|
|
//
|
|
// Belly searching for simplifying other procs
|
|
//
|
|
/proc/check_belly(atom/movable/A)
|
|
if(istype(A.loc,/mob/living))
|
|
var/mob/living/M = A.loc
|
|
for(var/I in M.vore_organs)
|
|
var/datum/belly/B = M.vore_organs[I]
|
|
if(A in B.internal_contents)
|
|
return(B)
|
|
|
|
return FALSE
|
|
|
|
//
|
|
// Save/Load Vore Preferences
|
|
//
|
|
/datum/vore_preferences/proc/load_vore()
|
|
if(!client || !client_ckey) return 0 //No client, how can we save?
|
|
|
|
slot = client.prefs.default_slot
|
|
|
|
path = client.prefs.path
|
|
|
|
if(!path) return 0 //Path couldn't be set?
|
|
if(!fexists(path)) //Never saved before
|
|
save_vore() //Make the file first
|
|
return TRUE
|
|
|
|
var/savefile/S = new /savefile(path)
|
|
if(!S) return 0 //Savefile object couldn't be created?
|
|
|
|
S.cd = "/character[slot]"
|
|
|
|
S["digestable"] >> digestable
|
|
S["devourable"] >> devourable
|
|
S["belly_prefs"] >> belly_prefs
|
|
|
|
if(isnull(digestable))
|
|
digestable = 1
|
|
if(isnull(devourable))
|
|
devourable = 0
|
|
if(isnull(belly_prefs))
|
|
belly_prefs = list()
|
|
|
|
return 1
|
|
|
|
/datum/vore_preferences/proc/save_vore()
|
|
if(!path) return 0
|
|
if(!slot) return 0
|
|
var/savefile/S = new /savefile(path)
|
|
if(!S) return 0
|
|
S.cd = "/character[slot]"
|
|
|
|
S["digestable"] << digestable
|
|
S["devourable"] << devourable
|
|
S["belly_prefs"] << belly_prefs
|
|
|
|
return 1 |