Added vore capabilies to the new simple_animal system.

* Added happy friend time mechanics working properly for fox and cat.
* Added vore mechanics and vore overrides
* No longer enable vore on simple animals by creating a "/vore" subtype.  Instead we simply enable vore on the main type.  Consensus being we don't need a type for non-vore versions of stuff.
  * This allowed us to revert many path references throughout the codebase to the original non-vorestation back to their original values.  In these cases the "Vorestation Edit" comment is removed.
* Moved the vore overrides for upstream simple animals into its own file zz_vore_overrides.dm
This commit is contained in:
Leshana
2017-03-18 18:50:04 -04:00
parent b8afe284fc
commit f0270451a7
22 changed files with 415 additions and 90 deletions

View File

@@ -109,7 +109,7 @@
light_color="#ff0000"
spawnable=list(
/mob/living/simple_animal/hostile/scarybat,
/mob/living/simple_animal/hostile/vore/creature,
/mob/living/simple_animal/hostile/creature/vore,
/mob/living/simple_animal/hostile/faithless
) // Vorestation Edit
@@ -118,9 +118,9 @@
light_color="#ff0000"
spawnable=list(
/mob/living/simple_animal/hostile/scarybat/cult,
/mob/living/simple_animal/hostile/vore/creature/cult,
/mob/living/simple_animal/hostile/creature/cult,
/mob/living/simple_animal/hostile/faithless/cult
) // Vorestation Edit
)
/obj/effect/gateway/active/cult/cultify()
return

View File

@@ -210,7 +210,7 @@ var/hadevent = 0
/proc/carp_migration() // -- Darem
for(var/obj/effect/landmark/C in landmarks_list)
if(C.name == "carpspawn")
new /mob/living/simple_animal/hostile/vore/carp(C.loc) // Vorestation edit
new /mob/living/simple_animal/hostile/carp(C.loc)
//sleep(100)
spawn(rand(300, 600)) //Delayed announcements to keep the crew on their toes.
command_announcement.Announce("Unknown biological entities have been detected near [station_name()], please stand-by.", "Lifesign Alert", new_sound = 'sound/AI/commandreport.ogg')

View File

@@ -35,8 +35,6 @@
/mob/living/simple_animal/adultslime,
/mob/living/simple_animal/tindalos,
/mob/living/simple_animal/yithian,
/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/malf_drone,
@@ -45,7 +43,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)

View File

@@ -31,8 +31,8 @@
"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/vore/carp,
"BEAR" = /mob/living/simple_animal/hostile/vore/bear
"CARP" = /mob/living/simple_animal/hostile/carp,
"BEAR" = /mob/living/simple_animal/hostile/bear
) // Vorestation edits to add vore versions.
cooldown = 30
instability_cost = 10

View File

@@ -63,7 +63,7 @@
for(var/obj/machinery/teleport/hub/H in range(1))
var/amount = rand(2,5)
for(var/i=0;i<amount;i++)
new /mob/living/simple_animal/hostile/vore/carp(get_turf(H)) // Vorestation edit
new /mob/living/simple_animal/hostile/carp(get_turf(H))
//
else
for(var/mob/O in hearers(src, null))

View File

@@ -37,6 +37,6 @@
/obj/item/weapon/grenade/spawnergrenade/spesscarp
name = "carp delivery grenade"
spawner_type = /mob/living/simple_animal/hostile/vore/carp // Vorestation edit
spawner_type = /mob/living/simple_animal/hostile/carp
deliveryamt = 5
origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_ILLEGAL = 4)

View File

@@ -5,28 +5,28 @@
/obj/structure/largecrate/birds/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/crowbar))
new /obj/item/stack/material/wood(src)
new /mob/living/simple_animal/cat/bird(src)
new /mob/living/simple_animal/cat/bird/fluff/kea(src)
new /mob/living/simple_animal/cat/bird/fluff/eclectus(src)
new /mob/living/simple_animal/cat/bird/fluff/greybird(src)
new /mob/living/simple_animal/cat/bird/fluff/eclectusf(src)
new /mob/living/simple_animal/cat/bird/fluff/blue_caique(src)
new /mob/living/simple_animal/cat/bird/fluff/white_caique(src)
new /mob/living/simple_animal/cat/bird/fluff/green_budgerigar(src)
new /mob/living/simple_animal/cat/bird/fluff/blue_Budgerigar(src)
new /mob/living/simple_animal/cat/bird/fluff/bluegreen_Budgerigar(src)
new /mob/living/simple_animal/cat/bird/fluff/commonblackbird(src)
new /mob/living/simple_animal/cat/bird/fluff/azuretit(src)
new /mob/living/simple_animal/cat/bird/fluff/europeanrobin(src)
new /mob/living/simple_animal/cat/bird/fluff/goldcrest(src)
new /mob/living/simple_animal/cat/bird/fluff/ringneckdove(src)
new /mob/living/simple_animal/cat/bird/fluff/cockatiel(src)
new /mob/living/simple_animal/cat/bird/fluff/white_cockatiel(src)
new /mob/living/simple_animal/cat/bird/fluff/yellowish_cockatiel(src)
new /mob/living/simple_animal/cat/bird/fluff/grey_cockatiel(src)
new /mob/living/simple_animal/cat/bird/fluff/too(src)
new /mob/living/simple_animal/cat/bird/fluff/hooded_too(src)
new /mob/living/simple_animal/cat/bird/fluff/pink_too(src)
new /mob/living/simple_animal/bird(src)
new /mob/living/simple_animal/bird/kea(src)
new /mob/living/simple_animal/bird/eclectus(src)
new /mob/living/simple_animal/bird/greybird(src)
new /mob/living/simple_animal/bird/eclectusf(src)
new /mob/living/simple_animal/bird/blue_caique(src)
new /mob/living/simple_animal/bird/white_caique(src)
new /mob/living/simple_animal/bird/green_budgerigar(src)
new /mob/living/simple_animal/bird/blue_Budgerigar(src)
new /mob/living/simple_animal/bird/bluegreen_Budgerigar(src)
new /mob/living/simple_animal/bird/commonblackbird(src)
new /mob/living/simple_animal/bird/azuretit(src)
new /mob/living/simple_animal/bird/europeanrobin(src)
new /mob/living/simple_animal/bird/goldcrest(src)
new /mob/living/simple_animal/bird/ringneckdove(src)
new /mob/living/simple_animal/bird/cockatiel(src)
new /mob/living/simple_animal/bird/white_cockatiel(src)
new /mob/living/simple_animal/bird/yellowish_cockatiel(src)
new /mob/living/simple_animal/bird/grey_cockatiel(src)
new /mob/living/simple_animal/bird/too(src)
new /mob/living/simple_animal/bird/hooded_too(src)
new /mob/living/simple_animal/bird/pink_too(src)
var/turf/T = get_turf(src)
for(var/atom/movable/AM in contents)
if(AM.simulated) AM.forceMove(T)

View File

@@ -287,12 +287,12 @@
if(live_cargo) // Carp! Since Facehuggers got removed.
var/num = rand(1,3)
for(var/i=0,i<num,i++)
new /mob/living/simple_animal/hostile/vore/carp(C)
new /mob/living/simple_animal/hostile/carp(C)
else // Just a costume.
new /obj/item/clothing/suit/storage/hooded/carp_costume(C)
else if(prob(50))
if(live_cargo) // Something else very much alive and angry.
var/spawn_type = pick(/mob/living/simple_animal/hostile/vore/alien, /mob/living/simple_animal/hostile/vore/alien/drone, /mob/living/simple_animal/hostile/vore/alien/sentinel)
var/spawn_type = pick(/mob/living/simple_animal/hostile/alien, /mob/living/simple_animal/hostile/alien/drone, /mob/living/simple_animal/hostile/alien/sentinel)
new spawn_type(C)
else // Just a costume.
new /obj/item/clothing/head/xenos(C)
@@ -340,7 +340,7 @@
new /obj/effect/decal/remains/xeno(src)
if("mimic")
//a guardian of the tomb!
var/mob/living/simple_animal/hostile/vore/mimic/crate/mimic = new(src.loc)
var/mob/living/simple_animal/hostile/mimic/crate/mimic = new(src.loc)
mimic.faction = spawned_faction
if("viscerator")
//more tomb guardians!

View File

@@ -37,11 +37,11 @@
while (i <= num_groups)
var/group_size = rand(group_size_min, group_size_max)
for (var/j = 1, j <= group_size, j++)
spawned_carp.Add(new /mob/living/simple_animal/hostile/vore/carp(spawn_locations[i])) // Vorestation edit
spawned_carp.Add(new /mob/living/simple_animal/hostile/carp(spawn_locations[i]))
i++
/datum/event/carp_migration/end()
for(var/mob/living/simple_animal/hostile/vore/carp/C in spawned_carp) // Vorestation edit
for(var/mob/living/simple_animal/hostile/carp/C in spawned_carp)
if(!C.stat)
var/turf/T = get_turf(C)
if(istype(T, /turf/space))

View File

@@ -1,11 +1,157 @@
// 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 0x03
/mob/living/simple_animal
// List of targets excluded (for now) from being eaten by this mob.
var/list/prey_exclusions = list()
var/icon_rest
var/vore_active = 0 // If vore behavior is enabled for this mob
/mob/living/simple_animal/cat
isPredator = 1
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_pounce_chance = 5 // Chance of this mob knocking down an opponent
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.
/mob/living/simple_animal/fluffy/lay_down() // Turns sprite into sleeping and back upon using "Rest".
var/vore_default_mode = DM_DIGEST // Default bellymode (DM_DIGEST, DM_HOLD, DM_ABSORB)
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_fullness = 0 // How "full" the belly is (controls icons)
var/vore_icons = 0 // Bitfield for which fields we have vore icons for.
/mob/living/simple_animal/New()
..()
icon_state = resting ? "fluffy_sleep" : "fluffy"
if(vore_active)
init_belly()
// Update fullness based on size & quantity of belly contents
/mob/living/simple_animal/proc/update_fullness()
var/new_fullness = 0
for(var/I in vore_organs)
var/datum/belly/B = vore_organs[I]
for(var/mob/living/M in B.internal_contents)
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_animal/update_icon()
..() // Call sideways "parent" to decide state
if(vore_active)
update_fullness()
if(!vore_fullness)
// Nothing
else if(icon_state == icon_living && (vore_icons & SA_ICON_LIVING))
icon_state = "[icon_state]-[vore_fullness]"
else if(icon_state == icon_dead && (vore_icons & SA_ICON_DEAD))
icon_state = "[icon_state]-[vore_fullness]"
else if(icon_state == icon_rest && (vore_icons & SA_ICON_REST))
icon_state = "[icon_state]-[vore_fullness]"
/mob/living/simple_animal/proc/will_eat(var/mob/living/M)
if(!istype(M)) //Can't eat 'em if they ain't /mob/living
ai_log("vr/wont eat [M] because they are not /mob/living", 3)
return 0
if(vore_ignores_undigestable && !M.digestable) //Don't eat people with nogurgle prefs
ai_log("vr/wont eat [M] because I am picky", 3)
return 0
if(M in prey_excludes) // They're excluded
ai_log("vr/wont eat [M] because they are excluded", 3)
return 0
if(M.size_multiplier < vore_min_size || M.size_multiplier > vore_max_size)
ai_log("vr/wont eat [M] because they too small or too big", 3)
return 0
if(vore_capacity != 0 && (vore_fullness + M.size_multiplier > vore_capacity)) // We're too full to fit them
ai_log("vr/wont eat [M] because I am too full", 3)
return 0
return 1
/mob/living/simple_animal/PunchTarget()
ai_log("vr/PunchTarget() [target_mob]", 3)
// For things we don't want to eat, call the sideways "parent" to do normal punching
if(!vore_active || !will_eat(target_mob))
return ..()
// If target is standing we might pounce and eat them
if(target_mob.canmove && prob(vore_pounce_chance))
target_mob.Weaken(5)
target_mob.visible_message("<span class='danger'>\the [src] pounces on \the [target_mob]!</span>!")
// If they're down or we can eat standing, do it
if(!target_mob.canmove || vore_standing_too)
return EatTarget()
else
return ..()
// Attempt to eat target
// TODO - Review this. Could be some issues here
/mob/living/simple_animal/proc/EatTarget()
ai_log("vr/EatTarget() [target_mob]",2)
init_belly()
stop_automated_movement = 1
var/old_target = target_mob
handle_stance(STANCE_BUSY)
. = animal_nom(target_mob)
update_icon()
if(.)
// If we succesfully ate them, lose the target
LoseTarget()
return old_target
else if(old_target == target_mob)
// 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_stance(STANCE_ATTACK)
stop_automated_movement = 0
/mob/living/simple_animal/hostile/vore/death()
for(var/I in vore_organs)
var/datum/belly/B = vore_organs[I]
B.release_all_contents() // When your stomach is empty
..() // then you have my permission to die.
// Simple animals have only one belly. This creates it (if it isn't already set up)
/mob/living/simple_animal/proc/init_belly()
if(vore_organs.len)
return
var/datum/belly/B = new /datum/belly(src)
B.immutable = 1
B.name = vore_stomach_name ? vore_stomach_name : "stomach"
B.inside_flavor = 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.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"
// TODO - Customizable per mob
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.")
src.vore_organs[B.name] = B
src.vore_selected = B.name

View File

@@ -0,0 +1,188 @@
//
// This file overrides settings on upstream simple animals to turn on vore behavior
//
/*
## For anything that previously inhertited from: /mob/living/simple_animal/hostile/vore ##
vore_active = 1
icon = 'icons/mob/vore.dmi'
## For anything that previously inhertied from: /mob/living/simple_animal/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_animal/hostile/alien
vore_active = 1
icon = 'icons/mob/vore.dmi'
icon_state = "xenohunter"
icon_living = "xenohunter"
icon_dead = "xenohunter-dead"
icon_gib = "gibbed-a"
vore_icons = SA_ICON_LIVING
/mob/living/simple_animal/hostile/alien/drone
vore_active = 1
icon = 'icons/mob/vore.dmi'
icon_state = "xenodrone"
icon_living = "xenodrone"
icon_dead = "xenodrone-dead"
icon_gib = "gibbed-a"
vore_icons = SA_ICON_LIVING
/mob/living/simple_animal/hostile/alien/sentinel
vore_active = 1
icon = 'icons/mob/vore.dmi'
icon_state = "xenosentinel"
icon_living = "xenosentinel"
icon_dead = "xenosentinel-dead"
icon_gib = "gibbed-a"
vore_icons = SA_ICON_LIVING
/mob/living/simple_animal/hostile/alien/queen
vore_active = 1
icon = 'icons/mob/vore.dmi'
icon_state = "xenoqueen"
icon_living = "xenoqueen"
icon_dead = "xenoqueen-dead"
icon_gib = "gibbed-a"
vore_icons = SA_ICON_LIVING
/mob/living/simple_animal/hostile/alien/queen/large
vore_active = 1
icon = 'icons/mob/vore64x64.dmi'
icon_state = "queen_s"
icon_living = "queen_s"
icon_dead = "queen_dead"
vore_icons = SA_ICON_LIVING
old_x = -16
old_y = 0
pixel_x = -16
pixel_y = 0
vore_capacity = 3
vore_pounce_chance = 75
/mob/living/simple_animal/hostile/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_animal/hostile/bear/hudson
name = "Hudson"
/mob/living/simple_animal/hostile/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_animal/hostile/carp
icon = 'icons/mob/vore.dmi'
vore_active = 1
vore_icons = SA_ICON_LIVING
/mob/living/simple_animal/hostile/creature/vore
vore_active = 1
// NO VORE SPRITES
vore_capacity = 0
vore_pounce_chance = 0 // Only pounces if you're crit.
vore_escape_chance = 0 // As such, if you're a dibshit who feeds yourself to it, you're staying down.
// Overrides to non-vore version
speed = 4 // Slow it down a bit
health = 80 // Increase health to compensate
maxHealth = 80
/mob/living/simple_animal/hostile/mimic
vore_active = 1
// NO VORE SPRITES
vore_capacity = 0
vore_pounce_chance = 33
// Overrides to non-vore version
maxHealth = 60
health = 60
/mob/living/simple_animal/cat
vore_active = 1
// NO VORE SPRITES
specific_targets = 0 // Targeting UNLOCKED
vore_max_size = RESIZE_TINY
/mob/living/simple_animal/cat/PunchTarget()
if(istype(target_mob,/mob/living/simple_animal/mouse))
return EatTarget()
else ..()
/mob/living/simple_animal/cat/Found(var/atom/found_atom)
if(!SA_attackable(found_atom))
return null
if(istype(found_atom,/mob/living/simple_animal/mouse))
return found_atom
if(found_atom in friends)
return null
if(will_eat(found_atom))
return found_atom
/mob/living/simple_animal/cat/fluff/Found(var/atom/found_atom)
if (friend == found_atom)
return null
return ..()
/mob/living/simple_animal/fox
vore_active = 1
// NO VORE SPRITES
vore_max_size = RESIZE_TINY
/mob/living/simple_animal/fox/PunchTarget()
if(istype(target_mob,/mob/living/simple_animal/mouse))
return EatTarget()
else ..()
/mob/living/simple_animal/fox/Found(var/atom/found_atom)
if(!SA_attackable(found_atom))
return null
if(istype(found_atom,/mob/living/simple_animal/mouse))
return found_atom
if(found_atom in friends)
return null
if(will_eat(found_atom))
return found_atom
/mob/living/simple_animal/fox/fluff/Found(var/atom/found_atom)
if (friend == found_atom)
return null
return ..()
/mob/living/simple_animal/hostile/goose
vore_active = 1
// NO VORE SPRITES
vore_max_size = RESIZE_SMALL
/mob/living/simple_animal/penguin
vore_active = 1
// NO VORE SPRITES
vore_max_size = RESIZE_SMALL
/mob/living/simple_animal/hostile/carp/pike
vore_active = 1
// NO VORE SPRITES

View File

@@ -300,7 +300,7 @@
return 1
if(ispath(MP, /mob/living/simple_animal/crab))
return 1
if(ispath(MP, /mob/living/simple_animal/hostile/vore/carp)) // Vorestation edit
if(ispath(MP, /mob/living/simple_animal/hostile/carp))
return 1
if(ispath(MP, /mob/living/simple_animal/shade))
return 1
@@ -308,7 +308,7 @@
return 1
if(ispath(MP, /mob/living/simple_animal/mouse))
return 1 //It is impossible to pull up the player panel for mice (Fixed! - Nodrak)
if(ispath(MP, /mob/living/simple_animal/hostile/vore/bear)) // Vorestation edit
if(ispath(MP, /mob/living/simple_animal/hostile/bear))
return 1 //Bears will auto-attack mobs, even if they're player controlled (Fixed! - Nodrak)
if(ispath(MP, /mob/living/simple_animal/parrot))
return 1 //Parrots are no longer unfinished! -Nodrak

View File

@@ -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/vore/mimic/copy(O.loc, O, firer)
new /mob/living/simple_animal/hostile/mimic/copy(O.loc, O, firer)
..()

View File

@@ -261,10 +261,8 @@
on_reaction(var/datum/reagents/holder)
var/mob_path = /mob/living/simple_animal/hostile/vore
var/blocked = list(
/mob/living/simple_animal/hostile/vore/mimic,
/mob/living/simple_animal/hostile/vore/mimic/copy,
/mob/living/simple_animal/hostile/vore/mimic/crate,
/mob/living/simple_animal/hostile/vore/alien/queen/large
/mob/living/simple_animal/hostile/mimic,
/mob/living/simple_animal/hostile/alien/queen
)//exclusion list for things you don't want the reaction to create.
var/list/voremobs = typesof(mob_path) - mob_path - blocked // list of possible hostile mobs

View File

@@ -113,7 +113,7 @@
New()
..()
spot_add(2,2,/obj/random/cargopod) //EXTRA loot!
spot_add(2,2,/mob/living/simple_animal/hostile/vore/alien) //GRRR
spot_add(2,2,/mob/living/simple_animal/hostile/alien) //GRRR
//Longer cargo container for higher difficulties
/datum/rogue/asteroid/predef/cargo_large
@@ -147,4 +147,4 @@
spot_add(4,3,/obj/random/cargopod) //Right loot
if(prob(30))
spot_add(3,3,/mob/living/simple_animal/hostile/vore/alien) //And maybe a friend.
spot_add(3,3,/mob/living/simple_animal/hostile/alien) //And maybe a friend.

View File

@@ -60,15 +60,15 @@ var/datum/controller/rogue/rm_controller = new()
"tier2" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose),
"tier3" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose,
/mob/living/simple_animal/hostile/vore/bear, /mob/living/simple_animal/hostile/carp/strong),
/mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/carp/strong),
"tier4" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose, /mob/living/simple_animal/hostile/vore/bear,
"tier4" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/goose, /mob/living/simple_animal/hostile/bear,
/mob/living/simple_animal/hostile/carp/strong, /mob/living/simple_animal/hostile/carp/pike/weak),
"tier5" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/vore/bear, /mob/living/simple_animal/hostile/carp/pike/weak,
"tier5" = list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/carp/pike/weak,
/mob/living/simple_animal/hostile/carp/strong, /mob/living/simple_animal/hostile/carp/pike),
"tier6" = list(/mob/living/simple_animal/hostile/vore/bear, /mob/living/simple_animal/hostile/carp/strong,
"tier6" = list(/mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/carp/strong,
/mob/living/simple_animal/hostile/carp/pike, /mob/living/simple_animal/hostile/carp/pike/weak)
)

View File

@@ -20,7 +20,7 @@
invocation_type = SpI_SHOUT
range = 1
summon_type = list(/mob/living/simple_animal/hostile/vore/carp) // Vorestation Edit
summon_type = list(/mob/living/simple_animal/hostile/carp)
hud_state = "wiz_carp"
@@ -36,6 +36,6 @@
summon_amt = 10
range = 3
summon_type = list(/mob/living/simple_animal/hostile/vore/creature) // Vorestation Edit
summon_type = list(/mob/living/simple_animal/hostile/creature/vore) // Vorestation Edit
hud_state = "wiz_creature"

View File

@@ -1,6 +1,5 @@
///////////////////// Simple Animal /////////////////////
/mob/living/simple_animal
var/isPredator = 0 //Are they capable of performing and pre-defined vore actions for their species?
var/swallowTime = 30 //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.
@@ -16,7 +15,7 @@
return
if (istype(src,/mob/living/simple_animal/mouse) && T.ckey == null)
return
feed_grabbed_to_self(src,T)
return feed_grabbed_to_self(src,T)
//
// Simple proc for animals to have their digestion toggled on/off externally

View File

@@ -23,10 +23,10 @@
if(prob(33))
spawn_type = pick(\
/mob/living/simple_animal/hostile/giant_spider/nurse,\
/mob/living/simple_animal/hostile/vore/alien,\
/mob/living/simple_animal/hostile/vore/bear,\
/mob/living/simple_animal/hostile/vore/carp,\
/mob/living/simple_animal/hostile/vore/creature\
/mob/living/simple_animal/hostile/alien,\
/mob/living/simple_animal/hostile/bear,\
/mob/living/simple_animal/hostile/carp,\
/mob/living/simple_animal/hostile/creature\
) // Vorestation Edits
else
spawn_type = pick(\

View File

@@ -26,7 +26,7 @@
/obj/item/roller,
/obj/structure/closet/crate,
/obj/structure/closet/acloset,
/mob/living/simple_animal/hostile/vore/mimic,
/mob/living/simple_animal/hostile/mimic/crate,
/mob/living/simple_animal/hostile/viscerator,
/mob/living/simple_animal/hostile/hivebot,
/obj/item/device/analyzer,

View File

@@ -87,7 +87,7 @@
if(charges >= 3)
if(prob(5))
charges -= 1
var/spawn_type = pick(/mob/living/simple_animal/hostile/vore/creature) // Vorestation Edit
var/spawn_type = pick(/mob/living/simple_animal/hostile/creature/vore) // Vorestation Edit
new spawn_type(pick(view(1,src)))
playsound(src.loc, pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg'), 50, 1, -3)

View File

@@ -1794,7 +1794,6 @@
#include "code\modules\mob\living\silicon\robot\drone\drone_say.dm"
#include "code\modules\mob\living\silicon\robot\drone\drone_vr.dm"
#include "code\modules\mob\living\simple_animal\corpse.dm"
#include "code\modules\mob\living\simple_animal\fluffy.dm"
#include "code\modules\mob\living\simple_animal\simple_animal.dm"
#include "code\modules\mob\living\simple_animal\simple_animal_vr.dm"
#include "code\modules\mob\living\simple_animal\aliens\alien.dm"
@@ -1806,18 +1805,24 @@
#include "code\modules\mob\living\simple_animal\aliens\shade.dm"
#include "code\modules\mob\living\simple_animal\animals\bat.dm"
#include "code\modules\mob\living\simple_animal\animals\bear.dm"
#include "code\modules\mob\living\simple_animal\animals\birds_vr.dm"
#include "code\modules\mob\living\simple_animal\animals\carp.dm"
#include "code\modules\mob\living\simple_animal\animals\cat.dm"
#include "code\modules\mob\living\simple_animal\animals\corgi.dm"
#include "code\modules\mob\living\simple_animal\animals\corgi_vr.dm"
#include "code\modules\mob\living\simple_animal\animals\crab.dm"
#include "code\modules\mob\living\simple_animal\animals\farm_animals.dm"
#include "code\modules\mob\living\simple_animal\animals\fluffy_vr.dm"
#include "code\modules\mob\living\simple_animal\animals\fox_vr.dm"
#include "code\modules\mob\living\simple_animal\animals\giant_spider.dm"
#include "code\modules\mob\living\simple_animal\animals\goose.dm"
#include "code\modules\mob\living\simple_animal\animals\lizard.dm"
#include "code\modules\mob\living\simple_animal\animals\mouse.dm"
#include "code\modules\mob\living\simple_animal\animals\parrot.dm"
#include "code\modules\mob\living\simple_animal\animals\penguin.dm"
#include "code\modules\mob\living\simple_animal\animals\pike_vr.dm"
#include "code\modules\mob\living\simple_animal\animals\slime.dm"
#include "code\modules\mob\living\simple_animal\animals\snake_vr.dm"
#include "code\modules\mob\living\simple_animal\animals\spiderbot.dm"
#include "code\modules\mob\living\simple_animal\animals\tomato.dm"
#include "code\modules\mob\living\simple_animal\animals\tree.dm"
@@ -1828,27 +1833,6 @@
#include "code\modules\mob\living\simple_animal\borer\say.dm"
#include "code\modules\mob\living\simple_animal\constructs\constructs.dm"
#include "code\modules\mob\living\simple_animal\constructs\soulstone.dm"
#include "code\modules\mob\living\simple_animal\friendly\birds_vr.dm"
#include "code\modules\mob\living\simple_animal\friendly\corgi_vr.dm"
#include "code\modules\mob\living\simple_animal\friendly\fox_vr.dm"
#include "code\modules\mob\living\simple_animal\friendly\snake_vr.dm"
#include "code\modules\mob\living\simple_animal\hostile\goose_vr.dm"
#include "code\modules\mob\living\simple_animal\hostile\pike_vr.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\alien.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\bear.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\bee.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\carp.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\catgirl.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\creature.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\deathclaw.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\dragon.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\frog.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\horse.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\mimic.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\panther.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\retaliate.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\vore.dm"
#include "code\modules\mob\living\simple_animal\hostile\vore\wolf.dm"
#include "code\modules\mob\living\simple_animal\humanoids\clown.dm"
#include "code\modules\mob\living\simple_animal\humanoids\head.dm"
#include "code\modules\mob\living\simple_animal\humanoids\kobold.dm"
@@ -1856,6 +1840,18 @@
#include "code\modules\mob\living\simple_animal\humanoids\pirate.dm"
#include "code\modules\mob\living\simple_animal\humanoids\russian.dm"
#include "code\modules\mob\living\simple_animal\humanoids\syndicate.dm"
#include "code\modules\mob\living\simple_animal\vore\bee.dm"
#include "code\modules\mob\living\simple_animal\vore\carp.dm"
#include "code\modules\mob\living\simple_animal\vore\catgirl.dm"
#include "code\modules\mob\living\simple_animal\vore\deathclaw.dm"
#include "code\modules\mob\living\simple_animal\vore\dino.dm"
#include "code\modules\mob\living\simple_animal\vore\dragon.dm"
#include "code\modules\mob\living\simple_animal\vore\frog.dm"
#include "code\modules\mob\living\simple_animal\vore\horse.dm"
#include "code\modules\mob\living\simple_animal\vore\panther.dm"
#include "code\modules\mob\living\simple_animal\vore\snake.dm"
#include "code\modules\mob\living\simple_animal\vore\wolf.dm"
#include "code\modules\mob\living\simple_animal\vore\zz_vore_overrides.dm"
#include "code\modules\mob\living\voice\voice.dm"
#include "code\modules\mob\new_player\login.dm"
#include "code\modules\mob\new_player\logout.dm"