diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index 072178188b82..8459e76d4d4c 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -84,7 +84,7 @@ GLOBAL_LIST_INIT(carp_count,list())// a list of Z levels (string), associated wi if(WEST) return locate(clearance, rand(clearance, world.maxy - clearance), Z) -/datum/event/carp_migration/proc/check_gib(var/mob/living/simple_mob/hostile/carp/M) //awesome road kills +/datum/event/carp_migration/proc/check_gib(var/mob/living/simple_mob/animal/space/carp/M) //awesome road kills if(M.health <= 0 && prob(60)) M.gib() diff --git a/code/modules/maps/away_missions/140x140/snowfield.dm b/code/modules/maps/away_missions/140x140/snowfield.dm index 376d17f2e380..77ae30c9e42f 100644 --- a/code/modules/maps/away_missions/140x140/snowfield.dm +++ b/code/modules/maps/away_missions/140x140/snowfield.dm @@ -59,7 +59,6 @@ icon_living = "polarbear" icon_dead = "polarbear-dead" icon_gib = "bear-gib" - vore_active = 1 say_list_type = /datum/say_list/polar_bear faction = "polar" diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index 73b8dab42235..ec7c1836ebe5 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -1,45 +1,8 @@ -// Flags for specifying which states we have vore icon_states for. -#define SA_ICON_LIVING 0x01 -#define SA_ICON_DEAD 0x02 -#define SA_ICON_REST 0x04 - /mob/living/simple_mob base_attack_cooldown = 15 var/temperature_range = 40 // How close will they get to environmental temperature before their body stops changing its heat - var/vore_active = 0 // If vore behavior is enabled for this mob - - var/vore_capacity = 1 // The capacity (in people) this person can hold - var/vore_max_size = RESIZE_HUGE // The max size this mob will consider eating - var/vore_min_size = RESIZE_TINY // The min size this mob will consider eating - var/vore_bump_chance = 0 // Chance of trying to eat anyone that bumps into them, regardless of hostility - var/vore_bump_emote = "grabs hold of" // Allow messages for bumpnom mobs to have a flavorful bumpnom - var/vore_pounce_chance = 5 // Chance of this mob knocking down an opponent - var/vore_pounce_cooldown = 0 // Cooldown timer - if it fails a pounce it won't pounce again for a while - var/vore_pounce_successrate = 100 // Chance of a pounce succeeding against a theoretical 0-health opponent - var/vore_pounce_falloff = 1 // Success rate falloff per %health of target mob. - var/vore_pounce_maxhealth = 80 // Mob will not attempt to pounce targets above this %health - var/vore_standing_too = 0 // Can also eat non-stunned mobs - var/vore_ignores_undigestable = 1 // Refuse to eat mobs who are undigestable by the prefs toggle. - var/swallowsound = null // What noise plays when you succeed in eating the mob. - - var/vore_default_mode = DM_DIGEST // Default bellymode (DM_DIGEST, DM_HOLD, DM_ABSORB) - var/vore_default_flags = 0 // No flags - var/vore_digest_chance = 25 // Chance to switch to digest mode if resisted - var/vore_absorb_chance = 0 // Chance to switch to absorb mode if resisted - var/vore_escape_chance = 25 // Chance of resisting out of mob - - var/vore_stomach_name // The name for the first belly if not "stomach" - var/vore_stomach_flavor // The flavortext for the first belly if not the default - - var/vore_default_item_mode = IM_DIGEST_FOOD //How belly will interact with items - var/vore_default_contaminates = TRUE //Will it contaminate? - var/vore_default_contamination_flavor = "Generic" //Contamination descriptors - var/vore_default_contamination_color = "green" //Contamination color - - var/vore_fullness = 0 // How "full" the belly is (controls icons) - var/vore_icons = 0 // Bitfield for which fields we have vore icons for. var/life_disabled = 0 // For performance reasons var/obj/item/radio/headset/mob_headset/mob_radio //Adminbus headset for simplemob shenanigans. @@ -47,67 +10,20 @@ // Release belly contents before being gc'd! /mob/living/simple_mob/Destroy() release_vore_contents() - prey_excludes.Cut() - . = ..() + return ..() //For all those ID-having mobs /mob/living/simple_mob/GetIdCard() if(access_card) return access_card -// Update fullness based on size & quantity of belly contents -/mob/living/simple_mob/proc/update_fullness() - var/new_fullness = 0 - for(var/belly in vore_organs) - var/obj/belly/B = belly - for(var/mob/living/M in B) - new_fullness += M.size_multiplier - new_fullness = round(new_fullness, 1) // Because intervals of 0.25 are going to make sprite artists cry. - vore_fullness = min(vore_capacity, new_fullness) - -/mob/living/simple_mob/update_icon() - . = ..() - if(vore_active) - update_fullness() - if(!vore_fullness) - return 0 - else if((stat == CONSCIOUS) && (!icon_rest || !resting || !incapacitated(INCAPACITATION_DISABLED)) && (vore_icons & SA_ICON_LIVING)) - icon_state = "[icon_living]-[vore_fullness]" - else if(stat >= DEAD && (vore_icons & SA_ICON_DEAD)) - icon_state = "[icon_dead]-[vore_fullness]" - else if(((stat == UNCONSCIOUS) || resting || incapacitated(INCAPACITATION_DISABLED) ) && icon_rest && (vore_icons & SA_ICON_REST)) - icon_state = "[icon_rest]-[vore_fullness]" - -/mob/living/simple_mob/proc/will_eat(var/mob/living/M) - return FALSE // no more mobvore - -// Attempt to eat target -// TODO - Review this. Could be some issues here -/mob/living/simple_mob/proc/EatTarget(var/mob/living/M) - var/old_target = M - set_AI_busy(1) - . = animal_nom(M) - playsound(src, swallowsound, 50, 1) - update_icon() - - if(.) - // If we succesfully ate them, lose the target - set_AI_busy(0) - return old_target - else if(old_target == M) - // If we didn't but they are still our target, go back to attack. - // but don't run the handler immediately, wait until next tick - // Otherwise we'll be in a possibly infinate loop - set_AI_busy(0) - /mob/living/simple_mob/death() release_vore_contents() - . = ..() + return ..() // Make sure you don't call ..() on this one, otherwise you duplicate work. /mob/living/simple_mob/init_vore() - if(!vore_active || no_vore) - return + . = ..() if(!IsAdvancedToolUser()) add_verb(src, /mob/living/simple_mob/proc/animal_nom) @@ -116,63 +32,12 @@ if(LAZYLEN(vore_organs)) return - // Since they have bellies, add verbs to toggle settings on them. - add_verb(src, /mob/living/simple_mob/proc/toggle_digestion) - add_verb(src, /mob/living/simple_mob/proc/toggle_fancygurgle) - - //A much more detailed version of the default /living implementation - var/obj/belly/B = new /obj/belly(src) - vore_selected = B - B.immutable = 1 - 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 - B.mode_flags = vore_default_flags - B.item_digest_mode = vore_default_item_mode - B.contaminates = vore_default_contaminates - B.contamination_flavor = vore_default_contamination_flavor - B.contamination_color = vore_default_contamination_color - B.escapable = vore_escape_chance > 0 - B.escapechance = vore_escape_chance - B.digestchance = vore_digest_chance - B.absorbchance = vore_absorb_chance - B.human_prey_swallow_time = swallowTime - B.nonhuman_prey_swallow_time = swallowTime - B.vore_verb = "swallow" - B.emote_lists[DM_HOLD] = list( // We need more that aren't repetitive. I suck at endo. -Ace - "The insides knead at you gently for a moment.", - "The guts glorp wetly around you as some air shifts.", - "The predator takes a deep breath and sighs, shifting you somewhat.", - "The stomach squeezes you tight for a moment, then relaxes harmlessly.", - "The predator's calm breathing and thumping heartbeat pulses around you.", - "The warm walls kneads harmlessly against you.", - "The liquids churn around you, though there doesn't seem to be much effect.", - "The sound of bodily movements drown out everything for a moment.", - "The predator's movements gently force you into a different position.") - B.emote_lists[DM_DIGEST] = list( - "The burning acids eat away at your form.", - "The muscular stomach flesh grinds harshly against you.", - "The caustic air stings your chest when you try to breathe.", - "The slimy guts squeeze inward to help the digestive juices soften you up.", - "The onslaught against your body doesn't seem to be letting up; you're food now.", - "The predator's body ripples and crushes against you as digestive enzymes pull you apart.", - "The juices pooling beneath you sizzle against your sore skin.", - "The churning walls slowly pulverize you into meaty nutrients.", - "The stomach glorps and gurgles as it tries to work you into slop.") - // Checks to see if mob doesn't like this kind of turf /mob/living/simple_mob/IMove(turf/newloc, safety = TRUE) if(istype(newloc,/turf/simulated/floor/sky)) return MOVEMENT_FAILED //Mobs aren't that stupid, probably return ..() // Procede as normal. -//Grab = Nomf -/mob/living/simple_mob/UnarmedAttack(var/atom/A, var/proximity) - . = ..() - - if(a_intent == INTENT_GRAB && isliving(A) && !has_hands) - animal_nom(A) - // todo: shitcode, rewrite on say rewrite /mob/living/simple_mob/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name) switch(message_mode) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat_vr.dm index 1a3f1d0d3574..c3fbb8385e20 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/cat_vr.dm @@ -1,35 +1,3 @@ -/mob/living/simple_mob/animal/passive/cat/runtime/init_vore() - ..() - var/obj/belly/B = vore_selected - B.name = "Stomach" - B.desc = "The slimy wet insides of Runtime! Not quite as clean as the cat on the outside." - - B.emote_lists[DM_HOLD] = list( - "Runtime's stomach kneads gently on you and you're fairly sure you can hear her start purring.", - "Most of what you can hear are slick noises, Runtime breathing, and distant purring.", - "Runtime seems perfectly happy to have you in there. She lays down for a moment to groom and squishes you against the walls.", - "The CMO's pet seems to have found a patient of her own, and is treating them with warm, wet kneading walls.", - "Runtime mostly just lazes about, and you're left to simmer in the hot, slick guts unharmed.", - "Runtime's master might let you out of this fleshy prison, eventually. Maybe. Hopefully?") - - B.emote_lists[DM_DIGEST] = list( - "Runtime's stomach is treating you rather like a mouse, kneading acids into you with vigor.", - "A thick dollop of bellyslime drips from above while the CMO's pet's gut works on churning you up.", - "Runtime seems to have decided you're food, based on the acrid air in her guts and the pooling fluids.", - "Runtime's stomach tries to claim you, kneading and pressing inwards again and again against your form.", - "Runtime flops onto their side for a minute, spilling acids over your form as you remain trapped in them.", - "The CMO's pet doesn't seem to think you're any different from any other meal. At least, their stomach doesn't.") - - B.digest_messages_prey = list( - "Runtime's stomach slowly melts your body away. Her stomach refuses to give up it's onslaught, continuing until you're nothing more than nutrients for her body to absorb.", - "After an agonizing amount of time, Runtime's stomach finally manages to claim you, melting you down and adding you to her stomach.", - "Runtime's stomach continues to slowly work away at your body before tightly squeezing around you once more, causing the remainder of your body to lose form and melt away into the digesting slop around you.", - "Runtime's slimy gut continues to constantly squeeze and knead away at your body, the bulge you create inside of her stomach growing smaller as time progresses before soon dissapearing completely as you melt away.", - "Runtime's belly lets off a soft groan as your body finally gives out, the cat's eyes growing heavy as it settles down to enjoy it's good meal.", - "Runtime purrs happily as you slowly slip away inside of her gut, your body's nutrients are then used to put a layer of padding on the now pudgy cat.", - "The acids inside of Runtime's stomach, aided by the constant motions of the smooth walls surrounding you finally manage to melt you away into nothing more mush. She curls up on the floor, slowly kneading the air as her stomach moves its contents — including you — deeper into her digestive system.", - "Your form begins to slowly soften and break apart, rounding out Runtime's swollen belly. The carnivorous cat rumbles and purrs happily at the feeling of such a filling meal.") - // Ascian's Tactical Kitten /obj/item/holder/cat/fluff/tabiranth name = "Spirit" diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/fox_vr.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/fox_vr.dm index 8f48f46ea5c3..bd25ba380764 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/fox_vr.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/fox_vr.dm @@ -62,28 +62,6 @@ wander = TRUE base_wander_delay = 4 -/mob/living/simple_mob/animal/passive/fox/init_vore() - ..() - var/obj/belly/B = vore_selected - B.name = "Stomach" - B.desc = "Slick foxguts. Cute on the outside, slimy on the inside!" - - B.emote_lists[DM_HOLD] = list( - "The foxguts knead and churn around you harmlessly.", - "With a loud glorp, some air shifts inside the belly.", - "A thick drop of warm bellyslime drips onto you from above.", - "The fox turns suddenly, causing you to shift a little.", - "During a moment of relative silence, you can hear the fox breathing.", - "The slimey stomach walls squeeze you lightly, then relax.") - - B.emote_lists[DM_DIGEST] = list( - "The guts knead at you, trying to work you into thick soup.", - "You're ground on by the slimey walls, treated like a mouse.", - "The acrid air is hard to breathe, and stings at your lungs.", - "You can feel the acids coating you, ground in by the slick walls.", - "The fox's stomach churns hungrily over your form, trying to take you.", - "With a loud glorp, the stomach spills more acids onto you.") - /mob/living/simple_mob/animal/passive/fox/apply_melee_effects(var/atom/A) if(ismouse(A)) var/mob/living/simple_mob/animal/passive/mouse/mouse = A @@ -144,58 +122,6 @@ var/datum/ai_holder/polaris/AI = ai_holder AI.set_follow(friend) -/* Old fox friend AI, I'm not sure how to add the fancy "friend is dead" stuff so I'm commenting it out for someone else to figure it out, this is just baseline stuff. -//Basic friend AI -/mob/living/simple_mob/animal/passive/fox/fluff - var/mob/living/carbon/human/friend - var/befriend_job = null - -/mob/living/simple_mob/animal/passive/fox/fluff/Life(seconds, times_fired) - . = ..() - if(!. || !friend) return - - var/friend_dist = get_dist(src,friend) - - if (friend_dist <= 4) - if(stance == STANCE_IDLE) - if(set_follow(friend)) - handle_stance(STANCE_FOLLOW) - - if (friend_dist <= 1) - if (friend.stat >= DEAD || friend.health <= config_legacy.health_threshold_softcrit) - if (prob((friend.stat < DEAD)? 50 : 15)) - var/verb = pick("yaps", "howls", "whines") - audible_emote(pick("[verb] in distress.", "[verb] anxiously.")) - else - if (prob(5)) - visible_emote(pick("nips [friend].", - "brushes against [friend].", - "tugs on [friend].", - "chrrrrs.")) - else if (friend.health <= 50) - if (prob(10)) - var/verb = pick("yaps", "howls", "whines") - audible_emote("[verb] anxiously.") - -/mob/living/simple_mob/animal/passive/fox/fluff/verb/friend() - set name = "Become Friends" - set category = VERB_CATEGORY_IC - set src in view(1) - - if(friend && usr == friend) - setDir(get_dir(src, friend)) - say("Yap!") - return - - if (!(ishuman(usr) && befriend_job && usr.job == befriend_job)) - to_chat(usr, "[src] ignores you.") - return - - friend = usr - - setDir(get_dir(src, friend)) - say("Yap!") -*/ /obj/item/reagent_containers/food/snacks/meat/fox name = "Fox meat" desc = "The fox doesn't say a goddamn thing, now." @@ -212,28 +138,6 @@ makes_dirt = FALSE // No more dirt randomized = FALSE -/mob/living/simple_mob/animal/passive/fox/renault/init_vore() - ..() - var/obj/belly/B = vore_selected - B.name = "Stomach" - B.desc = "Slick foxguts. They seem somehow more regal than perhaps other foxes!" - - B.emote_lists[DM_HOLD] = list( - "Renault's stomach walls squeeze around you more tightly for a moment, before relaxing, as if testing you a bit.", - "There's a sudden squeezing as Renault presses a forepaw against his gut over you, squeezing you against the slick walls.", - "The 'head fox' has a stomach that seems to think you belong to it. It might be hard to argue, as it kneads at your form.", - "If being in the captain's fox is a promotion, it might not feel like one. The belly just coats you with more thick foxslime.", - "It doesn't seem like Renault wants to let you out. The stomach and owner possessively squeeze around you.", - "Renault's stomach walls squeeze closer, as he belches quietly, before swallowing more air. Does he do that on purpose?") - - B.emote_lists[DM_DIGEST] = list( - "Renault's stomach walls grind hungrily inwards, kneading acids against your form, and treating you like any other food.", - "The captain's fox impatiently kneads and works acids against you, trying to claim your body for fuel.", - "The walls knead in firmly, squeezing and tossing you around briefly in disorienting aggression.", - "Renault belches, letting the remaining air grow more acrid. It burns your lungs with each breath.", - "A thick glob of acids drip down from above, adding to the pool of caustic fluids in Renault's belly.", - "There's a loud gurgle as the stomach declares the intent to make you a part of Renault.") - /mob/living/simple_mob/animal/passive/fox/syndicate name = "syndi-fox" desc = "It's a DASTARDLY fox! The horror! Call the shuttle!" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm index e11e90aa7ec8..28d0fb60f015 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm @@ -55,8 +55,6 @@ // Activate Noms! /mob/living/simple_mob/vore/bee - vore_active = 1 - vore_icons = SA_ICON_LIVING /mob/living/simple_mob/vore/bee/apply_melee_effects(var/atom/A) if(isliving(A)) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/cookiegirl.dm b/code/modules/mob/living/simple_mob/subtypes/vore/cookiegirl.dm index 2317205d8d88..4011ebb24d1d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/cookiegirl.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/cookiegirl.dm @@ -20,14 +20,6 @@ // Activate Noms! /mob/living/simple_mob/vore/cookiegirl - vore_active = 1 - vore_bump_chance = 2 - vore_pounce_chance = 25 - vore_standing_too = 1 - vore_ignores_undigestable = 0 // Do they look like they care? - vore_default_mode = DM_HOLD // They're cookiepeople, what do you expect? - vore_digest_chance = 10 // Gonna become as sweet as sugar, soon. - vore_icons = SA_ICON_LIVING | SA_ICON_REST /datum/ai_holder/polaris/simple_mob/passive/cookiegirl/on_hear_say(mob/living/speaker, message) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/corrupt_hounds.dm b/code/modules/mob/living/simple_mob/subtypes/vore/corrupt_hounds.dm index 49f0ff6b825d..e8bef7354c06 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/corrupt_hounds.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/corrupt_hounds.dm @@ -60,12 +60,6 @@ buckle_flags = BUCKLING_NO_USER_BUCKLE_OTHER_TO_SELF buckle_lying = FALSE - vore_active = TRUE - vore_capacity = 1 - vore_pounce_chance = 15 - vore_icons = SA_ICON_LIVING | SA_ICON_REST - vore_stomach_name = "fuel processor" - vore_stomach_flavor = "You have ended up in the fuel processor of this corrupted machine. This place was definitely not designed with safety and comfort in mind. The heated and cramped surroundings oozing potent fluids all over your form, eager to do nothing less than breaking you apart to fuel its rampage for the next few days... hours... minutes? Oh dear..." loot_list = list(/obj/item/borg/upgrade/syndicate = 6, /obj/item/borg/upgrade/vtec = 6, /obj/item/material/knife/ritual = 6, /obj/item/disk/nifsoft/compliance = 6) @@ -77,8 +71,6 @@ icon_dead = "prettyboi-dead" icon_rest = "prettyboi_rest" - vore_pounce_chance = 40 - attacktext = list("malsnuggled","scrunched","squeezed","assaulted","violated") say_list_type = /datum/say_list/corrupthound_prettyboi @@ -96,9 +88,6 @@ projectiletype = /obj/projectile/beam/sniper projectilesound = 'sound/weapons/gauss_shoot.ogg' - - vore_pounce_chance = 0 //It does ranged attacks anyway - ai_holder_type = /datum/ai_holder/polaris/simple_mob/ranged/sniper /mob/living/simple_mob/vore/aggressive/corrupthound/gunner @@ -117,13 +106,8 @@ projectiletype = /obj/projectile/bullet/rifle/a556 projectilesound = 'sound/weapons/Gunshot_light.ogg' - - vore_pounce_chance = 0 //It does ranged attacks anyway - ai_holder_type = /datum/ai_holder/polaris/simple_mob/ranged/kiting - - /mob/living/simple_mob/vore/aggressive/corrupthound/sword name = "fencer hound" desc = "Good boy machine broke. Who thought it was a good idea to install an energy sword in his tail?" @@ -139,8 +123,6 @@ attack_edge = 1 attacktext = list("slashed") - vore_pounce_chance = 0 //No... - /mob/living/simple_mob/vore/aggressive/corrupthound/sword/attackby(var/obj/item/O as obj, var/mob/user as mob) if(O.damage_force) if(prob(20)) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm b/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm index b39bf0d73d02..60bc6d985d26 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm @@ -35,12 +35,6 @@ // Activate Noms! /mob/living/simple_mob/vore/aggressive/deathclaw - vore_active = 1 - vore_capacity = 2 - vore_max_size = RESIZE_HUGE - vore_min_size = RESIZE_SMALL - vore_pounce_chance = 0 // Beat them into crit before eating. - vore_icons = SA_ICON_LIVING /datum/ai_holder/polaris/simple_mob/melee/deathclaw can_breakthrough = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon.dm index e4ce752d3828..ff6d8c6ae4b1 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon.dm @@ -37,20 +37,12 @@ legacy_melee_damage_upper = 1 attacktext = list("clawed") - vore_active = TRUE - vore_icons = SA_ICON_LIVING var/shifted_out = FALSE var/shift_state = AB_SHIFT_NONE var/last_shift = 0 var/is_shifting = FALSE -/mob/living/simple_mob/vore/demon/init_vore() - ..() - var/obj/belly/B = vore_selected - B.name = "Stomach" - B.desc = "You slide down the slick, slippery gullet of the creature. It's warm, and the air is thick. You can feel the doughy walls of the creatures gut push and knead into your form! Slimy juices coat your form stinging against your flesh as they waste no time to start digesting you. The creature's heartbeat and the gurgling of their stomach are all you can hear as your jostled about, treated like nothing but food." - /mob/living/simple_mob/vore/demon/UnarmedAttack() if(shifted_out) return FALSE diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_subtypes.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_subtypes.dm index 4cd39bf1719e..438035b6f823 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_subtypes.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demon_subtypes.dm @@ -6,7 +6,6 @@ icon_dead = "engorge_dead" icon_rest = "engorge_rest" - vore_icons = null /mob/living/simple_mob/vore/demon/zellic name = "Zellic" @@ -16,4 +15,3 @@ icon_dead = "zellic_dead" icon_rest = null - vore_icons = null diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dino.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dino.dm index 11afced1cf8e..3db981881bd6 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/dino.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/dino.dm @@ -42,9 +42,7 @@ // Activate Noms! /mob/living/simple_mob/vore/aggressive/dino - vore_active = 1 swallowTime = 1 SECOND // Hungry little bastards. - vore_icons = SA_ICON_LIVING /mob/living/simple_mob/vore/aggressive/dino/virgo3b faction = "virgo3b" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dragon.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dragon.dm index cd92391c01c9..8581053f9ef5 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/dragon.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/dragon.dm @@ -38,16 +38,11 @@ // Activate Noms! /mob/living/simple_mob/vore/aggressive/dragon - vore_active = 1 - vore_capacity = 2 - vore_pounce_chance = 0 // Beat them into crit before eating. - vore_icons = SA_ICON_LIVING /mob/living/simple_mob/vore/aggressive/dragon/virgo3b maxHealth = 200 health = 200 faction = "virgo3b" - /datum/say_list/dragonboss say_got_target = list("roars and snaps it jaws!") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm b/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm index cd7ccba29cfe..e4fdab4758be 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm @@ -36,12 +36,6 @@ // Activate Noms! /mob/living/simple_mob/vore/fennec - vore_active = 1 - vore_bump_chance = 10 - vore_bump_emote = "playfully lunges at" - vore_pounce_chance = 40 - vore_default_mode = DM_HOLD - vore_icons = SA_ICON_LIVING /datum/say_list/fennec speak = list("SKREEEE!","Chrp?","Ararrrararr.") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm index 81eb61dbe020..89c8a3357801 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm @@ -38,9 +38,6 @@ // Activate Noms! /mob/living/simple_mob/vore/aggressive/frog - vore_active = 1 - vore_pounce_chance = 50 - vore_icons = SA_ICON_LIVING /mob/living/simple_mob/vore/aggressive/frog/space name = "space frog" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/hippo.dm b/code/modules/mob/living/simple_mob/subtypes/vore/hippo.dm index e86b3a697e35..dce5180b32e0 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/hippo.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/hippo.dm @@ -55,19 +55,6 @@ // Activate Noms! /mob/living/simple_mob/vore/hippo //I don't know why it's in a seperate line but everyone does it so i do it - vore_active = 1 - vore_capacity = 1 - vore_bump_chance = 15 - vore_bump_emote = "lazily wraps its tentacles around" - vore_standing_too = 1 - vore_ignores_undigestable = 0 - vore_default_mode = DM_HOLD - vore_digest_chance = 10 - vore_escape_chance = 20 - vore_pounce_chance = 35 //it's hippo sized it doesn't care it just eats you - vore_stomach_name = "rumen" //First stomach of a ruminant. It's where the pre digestion bacteria stuff happens. Very warm. - vore_stomach_flavor = "You are squeezed into the sweltering insides of the herbivore rumen." - vore_icons = SA_ICON_LIVING /mob/living/simple_mob/vore/hippo/MouseDroppedOnLegacy(mob/living/M, mob/living/user) return diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/jelly.dm b/code/modules/mob/living/simple_mob/subtypes/vore/jelly.dm index eae1a874b442..5f454b39b521 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/jelly.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/jelly.dm @@ -33,9 +33,6 @@ // Activate Noms! /mob/living/simple_mob/animal/space/jelly - vore_active = 1 - vore_pounce_chance = 0 - vore_icons = SA_ICON_LIVING swallowTime = 2 SECONDS // Hungry little bastards. /datum/say_list/jelly diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm index c35c59a9603b..d605984192c9 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm @@ -97,11 +97,7 @@ showvoreprefs = 0 //Hides mechanical vore prefs for mimics. You can't see their gaping maws when they're just sitting idle. /mob/living/simple_mob/vore/aggressive/mimic - vore_active = 1 - vore_pounce_chance = 10 swallowTime = 3 SECONDS - vore_capacity = 1 - vore_default_mode = DM_DIGEST /datum/ai_holder/polaris/mimic wander = FALSE diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm b/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm index c8623e75ce07..1e3d344a322f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/morph/morph.dm @@ -40,7 +40,6 @@ meat_amount = 2 showvoreprefs = 0 - vore_active = 1 var/morphed = FALSE var/tooltip = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm index f8baf102e1f1..7d28db4ad0e5 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm @@ -44,10 +44,6 @@ // Activate Noms! /mob/living/simple_mob/otie - vore_active = 1 - vore_capacity = 1 - vore_pounce_chance = 20 - vore_icons = SA_ICON_LIVING | SA_ICON_REST /mob/living/simple_mob/otie/feral //gets the pet2tame feature. starts out hostile tho so get gamblin' name = "mutated feral otie" @@ -144,10 +140,6 @@ tamed = 1 has_eye_glow = TRUE loot_list = list(/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/clothing/suit/armor/vest/alt) - vore_pounce_chance = 60 // Good boys don't do too much police brutality. - - var/check_records = 0 // If true, arrests people without a record. - var/check_arrest = 1 // If true, arrests people who are set to arrest. /mob/living/simple_mob/otie/security/phoron name = "mutated guard otie" @@ -182,41 +174,6 @@ mod_min = 150 mod_max = 150 -/mob/living/simple_mob/otie/attackby(var/obj/item/O, var/mob/user) // Trade donuts for bellybrig victims. - if(istype(O, /obj/item/reagent_containers/food)) - qdel(O) - playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1) - if(!has_polaris_AI())//No autobarf on player control. - return - if(istype(O, /obj/item/reagent_containers/food/snacks/donut) && istype(src, /mob/living/simple_mob/otie/security)) - to_chat(user,"The guard pup accepts your offer for their catch.") - release_vore_contents() - else if(prob(2)) //Small chance to get prey out from non-sec oties. - to_chat(user,"The pup accepts your offer for their catch.") - release_vore_contents() - return - . = ..() - -/mob/living/simple_mob/otie/security/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) // Make the gut start out safe for bellybrigging. - if(ishuman(prey)) - vore_selected.digest_mode = DM_HOLD - if(check_threat(prey) >= 4) - GLOB.global_announcer.autosay("[src] has detained suspect [target_name(prey)] in [get_area(src)].", "SmartCollar oversight", "Security") - if(istype(prey,/mob/living/simple_mob/animal/passive/mouse)) - vore_selected.digest_mode = DM_DIGEST - . = ..() - -/mob/living/simple_mob/otie/security/proc/check_threat(var/mob/living/M) - if(!M || !ishuman(M) || M.stat == DEAD || src == M) - return 0 - return M.assess_perp(0, 0, 0, check_records, check_arrest) - -/mob/living/simple_mob/otie/security/proc/target_name(mob/living/T) - if(ishuman(T)) - var/mob/living/carbon/human/H = T - return H.get_id_name("unidentified person") - return "unidentified lifeform" - //Pet 4 friendly /mob/living/simple_mob/otie/attack_hand(mob/user, list/params) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm b/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm index 615dbd13f257..196981a2436d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm @@ -36,10 +36,6 @@ // Activate Noms! /mob/living/simple_mob/vore/aggressive/panther - vore_active = 1 - vore_capacity = 2 - vore_pounce_chance = 10 - vore_icons = SA_ICON_LIVING | SA_ICON_REST /datum/say_list/panther speak = list("RAWR!","Rawr!","GRR!","Growl!") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm b/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm index 5706bd267e6b..2101732ed4d8 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm @@ -36,10 +36,6 @@ icon_x_dimension = 64 icon_y_dimension = 32 - vore_active = TRUE - vore_capacity = 1 - vore_pounce_chance = 45 - vore_icons = SA_ICON_LIVING | SA_ICON_REST var/life_since_foodscan = 0 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/redpanda.dm b/code/modules/mob/living/simple_mob/subtypes/vore/redpanda.dm index 5bb907bab6eb..96d20383ec1a 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/redpanda.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/redpanda.dm @@ -35,15 +35,6 @@ say_list_type = /datum/say_list/redpanda ai_holder_type = /datum/ai_holder/polaris/simple_mob/passive -// Activate Noms! -/mob/living/simple_mob/vore/redpanda - vore_active = 1 - vore_bump_chance = 10 - vore_bump_emote = "playfully lunges at" - vore_pounce_chance = 40 - vore_default_mode = DM_HOLD // above will only matter if someone toggles it anyway - vore_icons = SA_ICON_LIVING - /mob/living/simple_mob/vore/redpanda/fae name = "dark wah" desc = "Ominous, but still cute!" @@ -54,10 +45,6 @@ icon_dead = "wah_fae_dead" icon_rest = "wah_fae_rest" - vore_ignores_undigestable = 0 // wah don't care you're edible or not, you still go in - vore_digest_chance = 0 // instead of digesting if you struggle... - vore_absorb_chance = 20 // you get to become adorable purple wahpudge. - vore_bump_chance = 75 maxHealth = 100 health = 100 legacy_melee_damage_lower = 10 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm b/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm index 0509c018843b..1c08dc55d987 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm @@ -34,7 +34,4 @@ // Activate Noms! /mob/living/simple_mob/vore/aggressive/giant_snake - vore_active = 1 - vore_pounce_chance = 25 - vore_icons = SA_ICON_LIVING swallowTime = 2 SECONDS // Hungry little bastards. diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm index c2541a3f631f..4ec007004a1f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm @@ -120,8 +120,6 @@ GLOBAL_LIST_EMPTY(solargrubs) if(prob(1) && charge >= 32000 && can_evolve == 1) // CitRP: We can quote this out and see what happens; && moth_amount <= 1) //it's reading from the moth_amount global list to determine if it can evolve. There should only ever be a maxcap of 1 existing solar moth alive at any time. TODO: make the code decrease the list after 1 has spawned this shift. anchored = 0 PN = attached.powernet - release_vore_contents() - prey_excludes.Cut() GLOB.moth_amount += 1 //CitRP: There was some magic going on around this here part, it might actualy be working. death_star() @@ -131,14 +129,6 @@ GLOBAL_LIST_EMPTY(solargrubs) new chosen_form(get_turf(src)) qdel(src) -/mob/living/simple_mob/vore/solargrub //active noms - vore_bump_chance = 50 - vore_bump_emote = "applies minimal effort to try and slurp up" - vore_active = 1 - vore_capacity = 1 - vore_pounce_chance = 0 //grubs only eat incapacitated targets - vore_default_mode = DM_DIGEST - /mob/living/simple_mob/vore/solargrub/apply_melee_effects(var/atom/A) if(isliving(A)) var/mob/living/L = A diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/solarmoth_ch.dm b/code/modules/mob/living/simple_mob/subtypes/vore/solarmoth_ch.dm index ca127910d87a..06cd05802403 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/solarmoth_ch.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/solarmoth_ch.dm @@ -153,12 +153,6 @@ /mob/living/simple_mob/vore/solarmoth //active noms - vore_bump_chance = 50 - vore_bump_emote = "applies minimal effort to try and slurp up" - vore_active = 1 - vore_capacity = 1 - vore_pounce_chance = 0 //moths only eat incapacitated targets. It's too lazy burning you to a crisp to try to pounce you - vore_default_mode = DM_DIGEST /mob/living/simple_mob/vore/solarmoth/lunarmoth name = "Lunarmoth" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm index 796d736e8448..2aefb32844ac 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm @@ -1,6 +1,6 @@ +// todo: get rid of /vore and /vore/aggressive /mob/living/simple_mob/vore mob_class = MOB_CLASS_ANIMAL - mob_bump_flag = 0 meat_type = /obj/item/reagent_containers/food/snacks/meat bone_type = /obj/item/stack/material/bone hide_type = /obj/item/stack/animalhide diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm b/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm index ed724697a757..f87e3aac491e 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm @@ -30,8 +30,6 @@ // Activate Noms! /mob/living/simple_mob/animal/wolf - vore_active = 1 - vore_icons = SA_ICON_LIVING // Adds Phoron Wolf diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm b/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm index 2150e4c39dac..fc2c1605e284 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm @@ -35,9 +35,6 @@ */ // Activate Noms! /mob/living/simple_mob/vore/wolfgirl - vore_active = 1 - vore_pounce_chance = 40 - vore_icons = SA_ICON_LIVING /datum/ai_holder/polaris/simple_mob/retaliate/cooperative/wolfgirl/on_hear_say(mob/living/speaker, message) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm b/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm index ee00e8ce8330..9e74a4a7a9c7 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm @@ -1,115 +1,29 @@ -// -// This file overrides settings on upstream simple animals to turn on vore behavior -// - -/* -## For anything that previously inhertited from: /mob/living/simple_mob/hostile/vore ## - - vore_active = 1 - icon = 'icons/mob/vore.dmi' - -## For anything that previously inhertied from: /mob/living/simple_mob/hostile/vore/large ## - - vore_active = 1 - icon = 'icons/mob/vore64x64.dmi' - old_x = -16 - old_y = -16 - pixel_x = -16 - pixel_y = -16 - vore_pounce_chance = 50 -*/ - -// -// Okay! Here we go! -// - /mob/living/simple_mob/animal/space/bear - vore_active = 1 icon = 'icons/mob/vore.dmi' icon_state = "spacebear" icon_living = "spacebear" icon_dead = "spacebear-dead" icon_gib = "bear-gib" - vore_icons = SA_ICON_LIVING /mob/living/simple_mob/animal/space/bear/hudson name = "Hudson" /mob/living/simple_mob/animal/space/bear/brown - vore_active = 1 icon = 'icons/mob/vore.dmi' name = "brown bear" icon_state = "brownbear" icon_living = "brownbear" icon_dead = "brownbear-dead" icon_gib = "bear-gib" - vore_icons = SA_ICON_LIVING /mob/living/simple_mob/animal/space/carp icon = 'icons/mob/vore.dmi' - vore_active = 1 - vore_icons = SA_ICON_LIVING /mob/living/simple_mob/animal/space/carp/large - vore_icons = 0 /mob/living/simple_mob/animal/space/carp/large/huge - vore_icons = 0 /mob/living/simple_mob/animal/space/carp/holographic - vore_icons = 0 - -/mob/living/simple_mob/animal/passive/cat - vore_active = 1 - //specific_targets = 0 // Targeting UNLOCKED - vore_max_size = RESIZE_TINY - -/mob/living/simple_mob/animal/passive/cat/fluff - vore_ignores_undigestable = 0 - vore_pounce_chance = 100 - vore_digest_chance = 0 // just use the toggle - vore_default_mode = DM_HOLD //can use the toggle if you wanna be catfood - vore_standing_too = TRUE //gonna get pounced - -/mob/living/simple_mob/animal/passive/fox - vore_active = 1 - vore_max_size = RESIZE_TINY - -/mob/living/simple_mob/fox/fluff - vore_ignores_undigestable = 0 - vore_pounce_chance = 100 - vore_digest_chance = 0 // just use the toggle - vore_default_mode = DM_HOLD //can use the toggle if you wanna be foxfood - vore_standing_too = TRUE // gonna get pounced - -/mob/living/simple_mob/animal/space/goose - vore_active = 1 - vore_max_size = RESIZE_SMALL - -/mob/living/simple_mob/animal/passive/penguin - vore_active = 1 - vore_max_size = RESIZE_SMALL - - -/mob/living/simple_mob/hostile/carp/pike - vore_active = 1 /mob/living/simple_mob/animal/space/carp/holographic - vore_icons = 0 - vore_digest_chance = 0 - vore_absorb_chance = 0 - -// Override stuff for holodeck carp to make them not digest when set to safe! -/mob/living/simple_mob/animal/space/carp/holographic/init_vore() - . = ..() - var/safe = (faction == "neutral") - for(var/belly in vore_organs) - var/obj/belly/B = belly - B.digest_mode = safe ? DM_HOLD : vore_default_mode - -/mob/living/simple_mob/animal/space/carp/holographic/set_safety(var/safe) - . = ..() - for(var/belly in vore_organs) - var/obj/belly/B = belly - B.digest_mode = safe ? DM_HOLD : vore_default_mode /mob/living/simple_mob/animal/passive/mouse faction = "mouse" //Giving mice a faction so certain mobs can get along with them. diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 76b11ed93417..09f70bcacd6d 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -390,15 +390,10 @@ //You're in a belly! if(isbelly(loc)) var/obj/belly/B = loc - var/confirm = alert(src, "You're in a mob. Don't use this as a trick to get out of hostile animals. This is for escaping from preference-breaking and if you're otherwise unable to escape from endo (pred AFK for a long time).", "Confirmation", "Okay", "Cancel") - if(!confirm == "Okay" || loc != B) - return //Actual escaping absorbed = 0 //Make sure we're not absorbed muffled = 0 //Removes Muffling forceMove(get_turf(src)) //Just move me up to the turf, let's not cascade through bellies, there's been a problem, let's just leave. - for(var/mob/living/simple_mob/SA in range(10)) - SA.prey_excludes[src] = world.time log_and_message_admins("[key_name(src)] used the OOC escape button to get out of [key_name(B.owner)] ([B.owner ? "JMP" : "null"])") if(!ishuman(B.owner)) diff --git a/code/modules/vore/eating/simple_animal_vr.dm b/code/modules/vore/eating/simple_animal_vr.dm index 19726b5b3e4d..a4dfd5683531 100644 --- a/code/modules/vore/eating/simple_animal_vr.dm +++ b/code/modules/vore/eating/simple_animal_vr.dm @@ -1,7 +1,6 @@ ///////////////////// Simple Animal ///////////////////// /mob/living/simple_mob var/swallowTime = (3 SECONDS) //How long it takes to eat its prey in 1/10 of a second. The default is 3 seconds. - var/list/prey_excludes = list() //For excluding people from being eaten. // // Simple nom proc for if you get ckey'd into a simple_mob mob! Avoids grabs. @@ -23,81 +22,3 @@ return feed_grabbed_to_self(src,T) update_icon() - return - -/* - * Simple proc for animals to have their digestion toggled on/off externally - * Added as a verb in /mob/living/simple_mob/init_vore() if vore is enabled for this mob. - */ -/mob/living/simple_mob/proc/toggle_digestion() - set name = "Toggle Animal's Digestion" - set desc = "Enables digestion on this mob for 20 minutes." - set category = VERB_CATEGORY_OOC - set src in oview(1) - - var/mob/living/carbon/human/user = usr - if(!istype(user) || user.stat) return - - if(!istype(src.ai_holder, /datum/ai_holder/polaris)) - return - var/datum/ai_holder/polaris/ai_holder = src.ai_holder - - if(!vore_selected) - to_chat(user, "[src] isn't planning on eating anything much less digesting it.") - return - if(ai_holder.retaliate || (ai_holder.hostile && faction != user.faction)) - to_chat(user, "This predator isn't friendly, and doesn't give a shit about your opinions of it digesting you.") - return - if(vore_selected.digest_mode == DM_HOLD) - var/confirm = tgui_alert(user, "Enabling digestion on [name] will cause it to digest all stomach contents. Using this to break OOC prefs is against the rules. Digestion will reset after 20 minutes.", "Enabling [name]'s Digestion", list("Enable", "Cancel")) - if(confirm == "Enable") - vore_selected.digest_mode = DM_DIGEST - addtimer(VARSET_CALLBACK(vore_selected, digest_mode, vore_default_mode), 20 MINUTES) - else - var/confirm = tgui_alert(user, "This mob is currently set to process all stomach contents. Do you want to disable this?", "Disabling [name]'s Digestion", list("Disable", "Cancel")) - if(confirm == "Disable") - vore_selected.digest_mode = DM_HOLD - -// Added as a verb in /mob/living/simple_mob/init_vore() if vore is enabled for this mob. -/mob/living/simple_mob/proc/toggle_fancygurgle() - set name = "Toggle Animal's Gurgle sounds" - set desc = "Switches between Fancy and Classic sounds on this mob." - set category = VERB_CATEGORY_OOC - set src in oview(1) - - var/mob/living/user = usr //I mean, At least ghosts won't use it. - if(!istype(user) || user.stat) - return - if(!vore_selected) - to_chat(user, SPAN_WARNING("[src] isn't vore capable.")) - return - - vore_selected.fancy_vore = !vore_selected.fancy_vore - to_chat(user, "[src] is now using [vore_selected.fancy_vore ? "Fancy" : "Classic"] vore sounds.") - -/mob/living/simple_mob/attackby(var/obj/item/O, var/mob/user) - if(!istype(src.ai_holder, /datum/ai_holder/polaris)) - return ..() - var/datum/ai_holder/polaris/ai_holder = src.ai_holder - if (istype(O, /obj/item/newspaper) && !(ckey || (ai_holder.hostile && faction != user.faction)) && isturf(user.loc)) - if (ai_holder.retaliate && prob(vore_pounce_chance/2)) // This is a gamble! - user.afflict_paralyze(20 * 5) //They get tackled anyway whether they're edible or not. - user.visible_message("\the [user] swats \the [src] with \the [O] and promptly gets tackled!!") - if (will_eat(user)) - set_AI_busy(TRUE) - animal_nom(user) - update_icon() - set_AI_busy(FALSE) - else if (!ai_holder.target) // no using this to clear a retaliate mob's target - ai_holder.target = user //just because you're not tasty doesn't mean you get off the hook. A swat for a swat. - else - user.visible_message("\the [user] swats \the [src] with \the [O]!!") - release_vore_contents() - for(var/mob/living/L in living_mobs(0)) //add everyone on the tile to the do-not-eat list for a while - if(!(L in prey_excludes)) // Unless they're already on it, just to avoid fuckery. - prey_excludes += L - spawn(5 MINUTES) - if(src && L) - prey_excludes -= L - else - ..() diff --git a/maps/away_missions/140x140/zoo.dmm b/maps/away_missions/140x140/zoo.dmm index e4b346826209..84e18f701d06 100644 --- a/maps/away_missions/140x140/zoo.dmm +++ b/maps/away_missions/140x140/zoo.dmm @@ -7328,7 +7328,7 @@ /turf/simulated/floor/holofloor/grass, /area/awaymission/zoo) "ua" = ( -/mob/living/simple_mob/fox{ +/mob/living/simple_mob/animal/passive/fox{ faction = "zoo" }, /turf/simulated/floor/holofloor/snow,