mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-29 08:11:11 +01:00
gives pounces a chance to fail
This commit is contained in:
@@ -12,6 +12,10 @@
|
||||
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.
|
||||
@@ -92,21 +96,39 @@
|
||||
/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))
|
||||
// If we're not hungry, call the sideways "parent" to do normal punching
|
||||
if(!vore_active)
|
||||
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 target is standing we might pounce and knock them down instead of attacking
|
||||
if(target_mob.canmove && prob(vore_pounce_chance) && !issilicon(target_mob) && (world.time > vore_pounce_cooldown)) //pouncing is worth doing, we want to pounce and are not in cooldown. So attempt a pounce!
|
||||
if(vore_standing_too) //creatures that can eat you on the spot don't care how healthy you are and get an autohit
|
||||
return PounceTarget()
|
||||
|
||||
// If they're down or we can eat standing, do it
|
||||
if(!target_mob.canmove || vore_standing_too)
|
||||
var/TargetHealthPercent = (target_mob.health/target_mob.maxHealth)*100
|
||||
if (TargetHealthPercent <= vore_pounce_maxhealth) //check they're weak enough to bother pouncing
|
||||
if(prob(vore_pounce_successrate - (vore_pounce_falloff * TargetHealthPercent))) // pounce success!
|
||||
return PounceTarget()
|
||||
else // pounce misses!
|
||||
target_mob.visible_message("<span class='danger'>\the [src] attempts to pounce \the [target_mob] but misses!</span>!")
|
||||
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
vore_pounce_cooldown = world.time + 20 SECONDS // don't attempt another pounce for a while
|
||||
return // no you don't get to attack as well, you missed your chance
|
||||
|
||||
// We're not attempting a pounce, if they're down or we can eat standing, do it as long as they're edible. Otherwise, hit normally.
|
||||
if(will_eat(target_mob) && (!target_mob.canmove || vore_standing_too))
|
||||
return EatTarget()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/proc/PounceTarget()
|
||||
target_mob.Weaken(5)
|
||||
target_mob.visible_message("<span class='danger'>\the [src] pounces on \the [target_mob]!</span>!")
|
||||
if(will_eat(target_mob)) //if they're edible then eat them too
|
||||
return EatTarget()
|
||||
else
|
||||
return //just leave them on the ground
|
||||
|
||||
// Attempt to eat target
|
||||
// TODO - Review this. Could be some issues here
|
||||
/mob/living/simple_animal/proc/EatTarget()
|
||||
@@ -117,7 +139,7 @@
|
||||
. = animal_nom(target_mob)
|
||||
playsound(src, swallowsound, 50, 1)
|
||||
update_icon()
|
||||
|
||||
|
||||
if(.)
|
||||
// If we succesfully ate them, lose the target
|
||||
LoseTarget()
|
||||
|
||||
@@ -162,6 +162,7 @@
|
||||
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_animal/cat/fluff/EatTarget()
|
||||
var/mob/living/TM = target_mob
|
||||
@@ -201,6 +202,7 @@
|
||||
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_animal/fox/fluff/EatTarget()
|
||||
var/mob/living/TM = target_mob
|
||||
|
||||
Reference in New Issue
Block a user