Talk:Specimen Mechanics: Difference between revisions
Scaryghost (talk | contribs) (Added flinching info) |
Scaryghost (talk | contribs) m (Separated scrake stunning with a scrake header) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 59: | Line 59: | ||
* Patriarch | * Patriarch | ||
=== Husks === | |||
Husks have a second, alternate condition that can trigger a stun. The stun threshold is set to 200 if the weapon is an ebr, lar, or crossbow. | Husks have a second, alternate condition that can trigger a stun. The stun threshold is set to 200 if the weapon is an ebr, lar, or crossbow. | ||
Line 98: | Line 99: | ||
} | } | ||
=== Scrake === | |||
If a scrake has already been flinched or stunned, you cannot perform mini flinches on him because if StunsRemaining is 0, the above code is not called from the scrake code. Also, you cannot perform mini flinches on scrakes with melee weapons because the base damage to trigger either flinch is 150 and melee weapons will trigger a normal flinch when they do a minimum of 100 hp (0.1 * 1000). | |||
ZombieScrake.PlayTakeHit() [ZombieScrake.uc] | ZombieScrake.PlayTakeHit() [ZombieScrake.uc] | ||
if( '''(Level.Game.GameDifficulty < 5.0 || StunsRemaining != 0)''' && (Damage>=150 || (DamageType.name=='DamTypeStunNade' && StunChance>3) || (DamageType.name=='DamTypeCrossbowHeadshot' && Damage>=200)) ) | if( '''(Level.Game.GameDifficulty < 5.0 || StunsRemaining != 0)''' && ('''Damage>=150''' || (DamageType.name=='DamTypeStunNade' && StunChance>3) || (DamageType.name=='DamTypeCrossbowHeadshot' && Damage>=200)) ) | ||
PlayDirectionalHit(HitLocation); | PlayDirectionalHit(HitLocation); | ||
--[[User:Scaryghost|Scaryghost]] 17:20, 25 March 2012 (EDT) | --[[User:Scaryghost|Scaryghost]] 17:20, 25 March 2012 (EDT) |
Latest revision as of 22:57, 25 March 2012
Decapitation
Decapitation damage bonus and bleed out timer: KFMonster.RemoveHead() [KFMonster.uc].
// Head explodes, causing additional hurty. if( KFPawn(LastDamagedBy)!=None ) { TakeDamage( LastDamageAmount + 0.25 * HealthMax , LastDamagedBy, LastHitLocation, LastMomentum, LastDamagedByType); } if( Health > 0 ) { BleedOutTime = Level.TimeSeconds + BleedOutDuration; }
BleedOutTime usage: KFMonster.Tick() [KMonster.uc].
// If the Zed has been bleeding long enough, make it die if ( Role == ROLE_Authority && bDecapitated ) { if ( BleedOutTime > 0 && Level.TimeSeconds - BleedOutTime >= 0 ) { Died(LastDamagedBy.Controller,class'DamTypeBleedOut',Location); BleedOutTime=0; } }
BleedOutDuration is set to 5 in KFMonster.uc, 6 in ZombieBloatBase.uc, ZombieHuskBase.uc, and ZombieScrakeBase.uc, and 7 in ZombieFleshpoundBase.uc
--Scaryghost 00:46, 24 March 2012 (EDT)
Stunning
Damage requirement for stunning: KFMonster.PlayHit() [KFMonster.uc]
if( Health>0 && Damage>(float(Default.Health)/1.5) ) FlipOver();
FlipOver's actions: KFMonster.FlipOver() [KFMonster.uc]
// High damage was taken, make em fall over. function bool FlipOver() { if( Physics==PHYS_Falling ) { SetPhysics(PHYS_Walking); } bShotAnim = true; SetAnimAction('KnockDown'); Acceleration = vect(0, 0, 0); Velocity.X = 0; Velocity.Y = 0; Controller.GoToState('WaitForAnim'); KFMonsterController(Controller).bUseFreezeHack = True; Return True; }
Specimens with a blank FlipOver() function cannot be stunned. The ones that have it overloaded and blanked are:
- Crawler
- Bloat
- Siren
- Fleshpound
- Patriarch
Husks
Husks have a second, alternate condition that can trigger a stun. The stun threshold is set to 200 if the weapon is an ebr, lar, or crossbow.
ZombieHusk.PlayHit() [ZombieHusk.uc]
if( Health>0 && Damage>(float(Default.Health)/1.5) ) { FlipOver(); } else if( Health > 0 && (damageType == class'DamTypeCrossbow' || damageType == class'DamTypeCrossbowHeadShot' || damageType == class'DamTypeWinchester' || damageType == class'DamTypeM14EBR') && Damage > 200 ) // 200 Damage will be a headshot with the Winchester or EBR, or a hit with the Crossbow { FlipOver(); }
--Scaryghost 01:10, 24 March 2012 (EDT)
Flinching
Even though the variables are bSTUNNED and StunsRemaining, the resulting animation is a flinch, rather than what one would consider a stun. If any one of the conditions is false, a different, shorter hit animation is played, a mini flinch. It is still considered a flinch, but unlike normal flinching, it can be done multiple times to scrakes and fp on Suicidal+.
Flinching code: KFMonster.PlayDirectionalHit() [KFMonster.uc].
if ( Dir dot X > 0.7 || Dir == vect(0,0,0)) { if( LastDamagedBy!=none && LastDamageAmount>0 ) { if ( StunsRemaining != 0 && (LastDamageAmount >= (0.5 * default.Health) || (VSize(LastDamagedBy.Location - Location) <= (MeleeRange * 2) && ClassIsChildOf(LastDamagedbyType,class 'DamTypeMelee') && KFPawn(LastDamagedBy) != none && LastDamageAmount > (0.10* default.Health))) ) { SetAnimAction(HitAnims[Rand(3)]); bSTUNNED = true; SetTimer(StunTime,false); StunsRemaining--; } else SetAnimAction(KFHitFront); } }
Scrake
If a scrake has already been flinched or stunned, you cannot perform mini flinches on him because if StunsRemaining is 0, the above code is not called from the scrake code. Also, you cannot perform mini flinches on scrakes with melee weapons because the base damage to trigger either flinch is 150 and melee weapons will trigger a normal flinch when they do a minimum of 100 hp (0.1 * 1000).
ZombieScrake.PlayTakeHit() [ZombieScrake.uc]
if( (Level.Game.GameDifficulty < 5.0 || StunsRemaining != 0) && (Damage>=150 || (DamageType.name=='DamTypeStunNade' && StunChance>3) || (DamageType.name=='DamTypeCrossbowHeadshot' && Damage>=200)) ) PlayDirectionalHit(HitLocation);
--Scaryghost 17:20, 25 March 2012 (EDT)