* 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
115 lines
4.0 KiB
Plaintext
115 lines
4.0 KiB
Plaintext
// Process the predator's effects upon the contents of its belly (i.e digestion/transformation etc)
|
|
// Called from /mob/living/Life() proc.
|
|
/datum/belly/proc/process_Life()
|
|
|
|
/////////////////////////// Auto-Emotes ///////////////////////////
|
|
if((digest_mode in emote_lists) && !emotePend)
|
|
emotePend = TRUE
|
|
|
|
spawn(emoteTime)
|
|
var/list/EL = emote_lists[digest_mode]
|
|
for(var/mob/living/M in internal_contents)
|
|
M << "<span class='notice'>[pick(EL)]</span>"
|
|
src.emotePend = FALSE
|
|
|
|
///////////////////////////// DM_HOLD /////////////////////////////
|
|
if(digest_mode == DM_HOLD)
|
|
return //Pretty boring, huh
|
|
|
|
//////////////////////////// DM_DIGEST ////////////////////////////
|
|
if(digest_mode == DM_DIGEST)
|
|
|
|
if(prob(50))
|
|
playsound(owner.loc, "digestion_sounds", 50, 0, -5)
|
|
|
|
for (var/mob/living/M in internal_contents)
|
|
//Pref protection!
|
|
if (!M.digestable)
|
|
continue
|
|
|
|
//Person just died in guts!
|
|
if(M.stat == DEAD)
|
|
var/digest_alert_owner = pick(digest_messages_owner)
|
|
var/digest_alert_prey = pick(digest_messages_prey)
|
|
|
|
//Replace placeholder vars
|
|
digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner)
|
|
digest_alert_owner = replacetext(digest_alert_owner,"%prey",M)
|
|
digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name))
|
|
|
|
digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner)
|
|
digest_alert_prey = replacetext(digest_alert_prey,"%prey",M)
|
|
digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name))
|
|
|
|
//Send messages
|
|
owner << "<span class='warning'>" + digest_alert_owner + "</span>"
|
|
M << "<span class='userdanger'>" + digest_alert_prey + "</span>"
|
|
|
|
owner.nutrition += 400 // so eating dead mobs gives you *something*.
|
|
playsound(owner.loc, "death_gurgles", 50, 0, -5)
|
|
digestion_death(M)
|
|
owner.update_icons()
|
|
continue
|
|
|
|
|
|
// Deal digestion damage (and feed the pred)
|
|
if(!(M.status_flags & GODMODE))
|
|
M.adjustFireLoss(1)
|
|
owner.nutrition += 1
|
|
return
|
|
|
|
//////////////////////////// DM_DIGESTF ////////////////////////////
|
|
if(digest_mode == DM_DIGESTF)
|
|
|
|
if(prob(50))
|
|
playsound(owner.loc, "digestion_sounds", 55, 0, -3) //slightly louder 'cuz heavier gurgles
|
|
|
|
for (var/mob/living/M in internal_contents)
|
|
//Pref protection!
|
|
if (!M.digestable)
|
|
continue
|
|
|
|
//Person just died in guts!
|
|
if(M.stat == DEAD)
|
|
var/digest_alert_owner = pick(digest_messages_owner)
|
|
var/digest_alert_prey = pick(digest_messages_prey)
|
|
|
|
//Replace placeholder vars
|
|
digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner)
|
|
digest_alert_owner = replacetext(digest_alert_owner,"%prey",M)
|
|
digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name))
|
|
|
|
digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner)
|
|
digest_alert_prey = replacetext(digest_alert_prey,"%prey",M)
|
|
digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name))
|
|
|
|
//Send messages
|
|
owner << "<span class='warning'>" + digest_alert_owner + "</span>"
|
|
M << "<span class='userdanger'>" + digest_alert_prey + "</span>"
|
|
M.visible_message("<span class='userdanger'>[digest_alert_owner]</span>", "<span class='warning'>[digest_alert_prey]</span>",
|
|
"<span class='notice'>You watch as [owner]'s form lose its additions.</span>")
|
|
owner.nutrition += 400 // so eating dead mobs gives you *something*.
|
|
playsound(owner.loc, "death_gurgles", 50, 0, -5)
|
|
digestion_death(M)
|
|
owner.update_icons()
|
|
continue
|
|
|
|
// Deal digestion damage (and feed the pred)
|
|
if(!(M.status_flags & GODMODE))
|
|
M.adjustBruteLoss(2)
|
|
M.adjustFireLoss(3)
|
|
owner.nutrition += 1
|
|
return
|
|
|
|
///////////////////////////// DM_HEAL /////////////////////////////
|
|
if(digest_mode == DM_HEAL)
|
|
if(prob(50))
|
|
playsound(owner.loc, "digestion_sounds", 45, 0, -6) //very quiet gurgles, supposedly.
|
|
|
|
for (var/mob/living/M in internal_contents)
|
|
if(M.stat != DEAD)
|
|
if(owner.nutrition >= NUTRITION_LEVEL_STARVING && (M.health < M.maxHealth))
|
|
M.adjustBruteLoss(-1)
|
|
M.adjustFireLoss(-1)
|
|
owner.nutrition -= 10
|
|
return |