DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ TrySelectFinisherType()

int TrySelectFinisherType ( InventoryItem weapon,
EntityAI target )
protected

General condition for finisher attacks.

Аргументы
weaponWeapon used in the attack
targetTarget entity
Возвращает
int - type of finisher (-1 == no finisher)

perform only for finisher suitable weapons

check if attacker is in right pos and angle against victim

Check if the infected is aware of the player

prone checks

firearm

См. определение в файле DayZPlayerImplementMeleeCombat.c строка 417

418 {
419 if (m_WasHit)
420 return -1;
421
422 if (target)
423 {
424 vector dir = target.GetPosition() - m_DZPlayer.GetPosition();
425
426 IEntity hitEntity;
427 vector hitPos, hitNormal;
428
429 float moveFraction = m_DZPlayer.CollisionMoveTest(dir, vector.Zero, 1.0, target, hitEntity, hitPos, hitNormal);
430 if (moveFraction < 1.0)
431 return -1;
432 }
433
435 if (target && target.CanBeBackstabbed() && weapon && (weapon.IsMeleeFinisher() || m_HitType == EMeleeHitType.WPN_STAB) && !weapon.IsRuined() )
436 {
437 bool playGenericFinisherAnimation = false;
438 ZombieBase targetZombie = ZombieBase.Cast(target);
439 if (targetZombie && m_DebugForcedFinisherType == -1)
440 {
442 if (!IsEntityBehindEntityInAngle(m_DZPlayer, target, 60))
443 {
444 return -1;
445 }
446
447 int mindState = targetZombie.GetMindStateSynced();
449 if (mindState >= DayZInfectedConstants.MINDSTATE_DISTURBED)
450 {
451 return -1;
452 }
453 }
454
455 PlayerBase targetPlayer = PlayerBase.Cast(target);
457 if (targetZombie)
458 {
459 playGenericFinisherAnimation = targetZombie.IsCrawling();
460 }
461 else if (targetPlayer)
462 {
463 playGenericFinisherAnimation = targetPlayer.IsInProne();
464 }
465 else
466 {
467 playGenericFinisherAnimation = true;
468 }
469
471 if (weapon.IsWeapon())
472 {
473 return EMeleeHitType.WPN_STAB_FINISHER;
474 }
475 else if (playGenericFinisherAnimation)
476 {
477 return EMeleeHitType.FINISHER_GENERIC;
478 }
479 else //specific hit depending on the component hit (gotten from the target)
480 {
481 return DetermineSpecificFinisherType(ItemBase.Cast(weapon));
482 }
483 }
484
485 return -1;
486 }
DayZInfectedConstants
Определения DayZInfected.c:2
bool IsEntityBehindEntityInAngle(EntityAI source, EntityAI target, float angle)
bool m_WasHit
If most recent attack was.
DayZPlayerImplement m_DZPlayer
Parent.
EMeleeHitType
Определения DayZPlayerImplementMeleeCombat.c:2
int m_DebugForcedFinisherType
EMeleeHitType m_HitType
Hit type of the most recent attack.
int DetermineSpecificFinisherType(ItemBase weapon)
Определения EnEntity.c:165
Определения InventoryItem.c:731
Определения PlayerBaseClient.c:2
Определения ZombieFemaleBase.c:2
static const vector Zero
Определения EnConvert.c:110
Определения EnConvert.c:106

Перекрестные ссылки DetermineSpecificFinisherType(), IsEntityBehindEntityInAngle(), m_DebugForcedFinisherType, m_DZPlayer, m_HitType, m_WasHit и vector::Zero.

Используется в Update().