From 21cd4e47914671889f4c2231298670081f7b89f2 Mon Sep 17 00:00:00 2001 From: Spades Date: Fri, 30 Dec 2016 11:27:07 -0500 Subject: [PATCH] Voremob tweaks, bellies now escapable (#783) * Voremob tweaks, bellies now escapable Also disabled all the non-vore variants in the code to avoid confusion, excluding aliens for now, since other stuff is handled there. * comment removal * Zoo.dmm hotfix Makes the snakes play nice. * Travis stop being a cunt * Minor Tweak --- .../gamemodes/technomancer/spells/control.dm | 6 +- .../spells/summon/summon_creature.dm | 6 +- .../simple_animal/hostile/vore/alien.dm | 2 +- .../simple_animal/hostile/vore/catgirl.dm | 4 +- .../simple_animal/hostile/vore/creature.dm | 3 +- .../simple_animal/hostile/vore/deathclaw.dm | 3 +- .../simple_animal/hostile/vore/dragon.dm | 1 + .../living/simple_animal/hostile/vore/frog.dm | 2 +- .../simple_animal/hostile/vore/mimic.dm | 5 +- .../simple_animal/hostile/vore/panther.dm | 2 +- .../living/simple_animal/hostile/vore/vore.dm | 55 ++-- .../modules/projectiles/projectile/animate.dm | 2 +- .../xenoarcheaology/artifacts/replicator.dm | 4 +- maps/RandomZLevels/zoo.dmm | 311 +++++++++--------- vorestation.dme | 4 - 15 files changed, 214 insertions(+), 196 deletions(-) diff --git a/code/game/gamemodes/technomancer/spells/control.dm b/code/game/gamemodes/technomancer/spells/control.dm index 8b30eb0f14..2d2cad228c 100644 --- a/code/game/gamemodes/technomancer/spells/control.dm +++ b/code/game/gamemodes/technomancer/spells/control.dm @@ -35,8 +35,8 @@ /mob/living/simple_animal/adultslime, /mob/living/simple_animal/tindalos, /mob/living/simple_animal/yithian, - /mob/living/simple_animal/hostile/bear, - /mob/living/simple_animal/hostile/carp, + /mob/living/simple_animal/hostile/vore/bear, + /mob/living/simple_animal/hostile/vore/carp, /mob/living/simple_animal/hostile/scarybat, /mob/living/simple_animal/hostile/viscerator, /mob/living/simple_animal/hostile/retaliate/malf_drone, @@ -45,7 +45,7 @@ /mob/living/simple_animal/hostile/diyaab, //Doubt these will get used but might as well, /mob/living/simple_animal/hostile/samak, /mob/living/simple_animal/hostile/shantak - ) + ) // Vorestation edits to add vore versions. //This unfortunately is gonna be rather messy due to the various mobtypes involved. /obj/item/weapon/spell/control/proc/select(var/mob/living/L) diff --git a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm index e60d8e8d3a..35bc5213c1 100644 --- a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm +++ b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm @@ -31,9 +31,9 @@ "SPIDER" = /mob/living/simple_animal/hostile/giant_spider, "SPIDER HUNTER" = /mob/living/simple_animal/hostile/giant_spider/hunter, "SPIDER NURSE" = /mob/living/simple_animal/hostile/giant_spider/nurse, - "CARP" = /mob/living/simple_animal/hostile/carp, - "BEAR" = /mob/living/simple_animal/hostile/bear - ) + "CARP" = /mob/living/simple_animal/hostile/vore/carp, + "BEAR" = /mob/living/simple_animal/hostile/vore/bear + ) // Vorestation edits to add vore versions. cooldown = 30 instability_cost = 10 energy_cost = 1000 diff --git a/code/modules/mob/living/simple_animal/hostile/vore/alien.dm b/code/modules/mob/living/simple_animal/hostile/vore/alien.dm index e6f40a2cf1..94b95d3a8f 100644 --- a/code/modules/mob/living/simple_animal/hostile/vore/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/vore/alien.dm @@ -87,7 +87,7 @@ pixel_x = -16 pixel_y = 0 capacity = 3 - pounce_chance = 75 + pouncechance = 75 /obj/item/projectile/neurotox damage = 30 diff --git a/code/modules/mob/living/simple_animal/hostile/vore/catgirl.dm b/code/modules/mob/living/simple_animal/hostile/vore/catgirl.dm index cd7042c3cf..2ed4b6a759 100644 --- a/code/modules/mob/living/simple_animal/hostile/vore/catgirl.dm +++ b/code/modules/mob/living/simple_animal/hostile/vore/catgirl.dm @@ -9,11 +9,13 @@ melee_damage_lower = 5 melee_damage_upper = 10 picky = 0 // Catgirls just want to eat yoouuu + endo = 1 // Chance that catgirls just wanna bellycuddle yoouuuu! + digestchance = 25 // But squirming might make them gurgle... speak = list("Meow!","Esp!","Purr!","HSSSSS","Mew?","Nya~") speak_emote = list("purrs","meows") emote_hear = list("meows","mews") emote_see = list("shakes her head","shivers") - pounce_chance = 100 + pouncechance = 100 attacktext = "swatted" /mob/living/simple_animal/hostile/vore/retaliate/catgirl/nude diff --git a/code/modules/mob/living/simple_animal/hostile/vore/creature.dm b/code/modules/mob/living/simple_animal/hostile/vore/creature.dm index 2463636deb..898c92485b 100644 --- a/code/modules/mob/living/simple_animal/hostile/vore/creature.dm +++ b/code/modules/mob/living/simple_animal/hostile/vore/creature.dm @@ -17,7 +17,8 @@ capacity = 0 max_size = 2 // Max: 2 min_size = 0.25 // Min: 0.25 - pounce_chance = 0 // Only pounces if you're crit. + pouncechance = 0 // Only pounces if you're crit. + escapable = 0 // As such, if you're a dibshit who feeds yourself to it, you're staying down. /mob/living/simple_animal/hostile/vore/creature/cult faction = "cult" diff --git a/code/modules/mob/living/simple_animal/hostile/vore/deathclaw.dm b/code/modules/mob/living/simple_animal/hostile/vore/deathclaw.dm index e540ea5b20..99d1db795a 100644 --- a/code/modules/mob/living/simple_animal/hostile/vore/deathclaw.dm +++ b/code/modules/mob/living/simple_animal/hostile/vore/deathclaw.dm @@ -14,4 +14,5 @@ health = 200 capacity = 2 max_size = 2 - min_size = 0.25 \ No newline at end of file + min_size = 0.25 + escapechance = 5 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/vore/dragon.dm b/code/modules/mob/living/simple_animal/hostile/vore/dragon.dm index 6c7ae4850b..171011fad7 100644 --- a/code/modules/mob/living/simple_animal/hostile/vore/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/vore/dragon.dm @@ -13,6 +13,7 @@ pixel_y = 0 capacity = 2 faction = "dragon" + escapechance = 5 //Space dragons aren't affected by atmos. min_oxy = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/vore/frog.dm b/code/modules/mob/living/simple_animal/hostile/vore/frog.dm index 05dcb46e40..c580409056 100644 --- a/code/modules/mob/living/simple_animal/hostile/vore/frog.dm +++ b/code/modules/mob/living/simple_animal/hostile/vore/frog.dm @@ -8,7 +8,7 @@ harm_intent_damage = 5 melee_damage_lower = 10 melee_damage_upper = 25 - pounce_chance = 90 + pouncechance = 50 // Pepe is love, not hate. /mob/living/simple_animal/hostile/vore/frog/New() diff --git a/code/modules/mob/living/simple_animal/hostile/vore/mimic.dm b/code/modules/mob/living/simple_animal/hostile/vore/mimic.dm index c896a9fca6..23b7f8657e 100644 --- a/code/modules/mob/living/simple_animal/hostile/vore/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/vore/mimic.dm @@ -34,7 +34,7 @@ faction = "mimic" move_to_delay = 8 - pounce_chance = 33 + pouncechance = 33 /mob/living/simple_animal/hostile/vore/mimic/FindTarget() . = ..() @@ -124,8 +124,7 @@ // Copy Mimic // -// var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/cable, /obj/structure/window, /obj/item/projectile/animate) -// List now defined in projectile/animate.dm +var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/cable, /obj/structure/window, /obj/item/projectile/animate) /mob/living/simple_animal/hostile/vore/mimic/copy diff --git a/code/modules/mob/living/simple_animal/hostile/vore/panther.dm b/code/modules/mob/living/simple_animal/hostile/vore/panther.dm index 73d2a2486a..81292c92ef 100644 --- a/code/modules/mob/living/simple_animal/hostile/vore/panther.dm +++ b/code/modules/mob/living/simple_animal/hostile/vore/panther.dm @@ -17,4 +17,4 @@ pixel_y = 0 capacity = 2 faction = "panther" - pounce_chance = 10 \ No newline at end of file + pouncechance = 10 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/vore/vore.dm b/code/modules/mob/living/simple_animal/hostile/vore/vore.dm index 3945018278..a1ce387b4d 100644 --- a/code/modules/mob/living/simple_animal/hostile/vore/vore.dm +++ b/code/modules/mob/living/simple_animal/hostile/vore/vore.dm @@ -26,7 +26,13 @@ Don't use ranged mobs for vore mobs. var/min_size = 0.25 // Min: 0.25 var/picky = 1 // Won't eat undigestable prey by default var/fullness = 0 - var/pounce_chance = 5 // Determines how likely a mob is to pounce on you per attack. 5% by default. + var/endo = 0 // Determines if a mob doesn't digest by default or not. Set to false by default. + + var/pouncechance = 5 // Determines how likely a mob is to pounce on you per attack. 5% by default. + var/escapable = 1 // Determines if a mob belly can be escaped without abusing OOC escape. Set true by default. + var/escapechance = 25 // Determines how likely struggling will allow you to escape a vore mob. 25% by default. + var/digestchance = 0 // Determines how likely struggling will start digestion in a mob defaulted to hold. Set to 0% by default. + swallowTime = 1 // Hungry little bastards. // By default, this is what most vore mobs are capable of. @@ -75,33 +81,44 @@ Don't use ranged mobs for vore mobs. /mob/living/simple_animal/hostile/vore/New() +// ToDo: Add support for multiple stomachs. + if(!vore_organs.len) var/datum/belly/B = new /datum/belly(src) B.immutable = 1 - B.name = "Stomach" - B.inside_flavor = "It appears to be rather warm and wet. Makes sense, considering it's inside \the [name]." - if (faction == "neutral") - B.digest_mode = "Hold" // Friendly slime-spawned mobs are neutral faction. + B.name = "stomach" + B.inside_flavor = "Your surroundings are warm, soft, and slimy. Makes sense, considering you're inside \the [name]." + if (faction == "neutral" || endo) + B.digest_mode = "Hold" else - B.digest_mode = "Digest" // Though this usually doesn't happen. + B.digest_mode = "Digest" + B.escapable = escapable + B.escapechance = escapechance + B.digestchance = digestchance vore_organs[B.name] = B - vore_selected = "Stomach" + vore_selected = "stomach" B.vore_verb = "swallow" - B.emote_lists[DM_HOLD] = list( + 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.", - "Your predator takes a deep breath and sighs, shifting you somewhat.", - "The stomach squeezes you tight for a moment, then relaxes.", - "During a moment of quiet, breathing becomes the most audible thing.", - "The warm slickness surrounds and kneads on you.") + "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 caustic acids eat away at your form.", - "The acrid air burns at your lungs.", - "Without a thought for you, the stomach grinds inwards painfully.", - "The guts treat you like food, squeezing to press more acids against you.", + "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 insides work on you like they would any other food.") + "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.") ..() /mob/living/simple_animal/hostile/vore/AttackingTarget() @@ -118,7 +135,7 @@ Don't use ranged mobs for vore mobs. // Is our target edible and standing up? if(target_mob.canmove && target_mob.size_multiplier >= min_size && target_mob.size_multiplier <= max_size && !(target_mob in prey_exclusions)) - if(prob(pounce_chance)) + if(prob(pouncechance)) target_mob.Weaken(5) target_mob.visible_message("\the [src] pounces on \the [target_mob]!!") animal_nom(target_mob) @@ -158,4 +175,4 @@ Don't use ranged mobs for vore mobs. pixel_y = -16 maxHealth = 200 health = 200 - pounce_chance = 50 // Bigger mobs, bigger appetite. \ No newline at end of file + pouncechance = 50 // Bigger mobs, bigger appetite. \ No newline at end of file diff --git a/code/modules/projectiles/projectile/animate.dm b/code/modules/projectiles/projectile/animate.dm index c09b98a32b..3b8e5eff34 100644 --- a/code/modules/projectiles/projectile/animate.dm +++ b/code/modules/projectiles/projectile/animate.dm @@ -12,5 +12,5 @@ /obj/item/projectile/animate/Bump(var/atom/change) if((istype(change, /obj/item) || istype(change, /obj/structure)) && !is_type_in_list(change, protected_objects)) var/obj/O = change - new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer) + new /mob/living/simple_animal/hostile/vore/mimic/copy(O.loc, O, firer) ..() diff --git a/code/modules/xenoarcheaology/artifacts/replicator.dm b/code/modules/xenoarcheaology/artifacts/replicator.dm index a3030b4bf6..f60dd5d202 100644 --- a/code/modules/xenoarcheaology/artifacts/replicator.dm +++ b/code/modules/xenoarcheaology/artifacts/replicator.dm @@ -26,7 +26,7 @@ /obj/item/roller, /obj/structure/closet/crate, /obj/structure/closet/acloset, - /mob/living/simple_animal/hostile/mimic, + /mob/living/simple_animal/hostile/vore/mimic, /mob/living/simple_animal/hostile/viscerator, /mob/living/simple_animal/hostile/hivebot, /obj/item/device/analyzer, @@ -63,7 +63,7 @@ /obj/item/weapon/wrench, /obj/item/weapon/screwdriver, /obj/item/weapon/grenade/chem_grenade/cleaner, - /obj/item/weapon/grenade/chem_grenade/metalfoam) + /obj/item/weapon/grenade/chem_grenade/metalfoam) // Vorestation edit for vore mimic. var/quantity = rand(5, 15) for(var/i=0, i