Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
dayzplayermeleefightlogic_lightheavy.c File Reference

Go to the source code of this file.

Enumerations

enum  EFightLogicCooldownCategory { EVADE = 0 }
 Light / Heavy punches. More...
 

Functions

void DayZPlayerMeleeFightLogic_LightHeavy (DayZPlayerImplement player)
 
void Init (DayZPlayerImplement player)
 
void ~DayZPlayerMeleeFightLogic_LightHeavy ()
 
bool IsInBlock ()
 
void SetBlock (bool block)
 
bool IsEvading ()
 
bool GetCurrentHitType ()
 
bool CanFight ()
 
void RegisterCooldowns ()
 
EMeleeHitType GetAttackTypeFromInputs (HumanInputController pInputs)
 
EMeleeHitType GetAttackTypeByWeaponAttachments (EntityAI pEntity)
 
float GetAttackTypeByDistanceToTarget (EntityAI pTarget, EMeleeTargetType pTargetType=EMeleeTargetType.ALIGNABLE)
 
bool HandleFightLogic (int pCurrentCommandID, HumanInputController pInputs, EntityAI pEntityInHands, HumanMovementState pMovementState, out bool pContinueAttack)
 
bool HandleHitEvent (int pCurrentCommandID, HumanInputController pInputs, InventoryItem itemInHands, HumanMovementState pMovementState, out bool pContinueAttack)
 Handle the event that our melee hit something.
 
bool HandleInitialFirearmMelee (int pCurrentCommandID, HumanInputController pInputs, InventoryItem itemInHands, HumanMovementState pMovementState, out bool pContinueAttack)
 NOTE: Only singular (or first) hits, combo attacks are handled in combo.
 
bool HandleInitialMeleeErc (int pCurrentCommandID, HumanInputController pInputs, InventoryItem itemInHands, HumanMovementState pMovementState, out bool pContinueAttack)
 First attack in raised erc (light or heavy if modifier is used). Also added support for finishers.
 
bool HandleProneKick (int pCurrentCommandID, HumanInputController pInputs, InventoryItem itemInHands, HumanMovementState pMovementState, out bool pContinueAttack)
 kick from raised pne
 
bool HandleSprintAttack (int pCurrentCommandID, HumanInputController pInputs, InventoryItem itemInHands, HumanMovementState pMovementState, out bool pContinueAttack)
 sprint attack in erc stance
 
bool HandleComboHit (int pCurrentCommandID, HumanInputController pInputs, InventoryItem itemInHands, HumanMovementState pMovementState, out bool pContinueAttack)
 combo hits - when we are already in Melee command and clicking UseButton
 
void EvaluateHit (InventoryItem weapon)
 
void EvaluateHit_Player (InventoryItem weapon, Object target)
 
void EvaluateHit_Infected (InventoryItem weapon, Object target)
 
bool EvaluateFinisherAttack (InventoryItem weapon, Object target)
 Check and evaluate stealth kill, if applicable.
 
void EvaluateHit_Common (InventoryItem weapon, Object target, bool forcedDummy=false, int forcedWeaponMode=-1)
 
void EvaluateHit_NonAlignableObjects (InventoryItem weapon, Object target)
 
bool WeaponDestroyedCheck (InventoryItem weapon, out string ammo)
 
void GetTargetData (out EntityAI target, out EMeleeTargetType targetType)
 
bool DummyHitSelector (EMeleeHitType hitType, out string ammoType)
 evaluation of hit player vs. player
 
bool IsBehindEntity (int angle, DayZPlayer source, Object target)
 DEPRECATED - moved into DayZPlayerImplementMeleeCombat.
 
void SetCooldown (float time, EFightLogicCooldownCategory cooldownCategory)
 
void ResetCooldown (EFightLogicCooldownCategory cooldownCategory)
 
void EnableControls ()
 
void DisableControls ()
 
void DamageHands (DayZPlayer DZPlayer, ClothingBase gloves, InventoryItem itemInHands)
 
int DetermineFinisherAnimation (int finisher_type)
 Picks a specific finisher animation. Not used for mounted bayonet stabs.
 
string DetermineFinisherAmmo (int finisher_type)
 Picks a specific finisher ammo fot the hit type. This gets synchronized and guides further behaviour of the target.
 
bool IsShortDistance (EntityAI pTarget, float pDistanceSq)
 
int GetFinisherType (InventoryItem weapon, EntityAI target)
 
bool IsHitTypeFinisher (int type)
 
int DetermineSpecificFinisherType (ItemBase weapon, int component)
 

Variables

enum EFightLogicCooldownCategory EVADE_COOLDOWN = 0.5
 cooldown timers settings
 
const float CLOSE_TARGET_DISTANCE = 1.5
 
const string DUMMY_LIGHT_AMMO = "Dummy_Light"
 dummy ammo types
 
const string DUMMY_HEAVY_AMMO = "Dummy_Heavy"
 
PlayerBase m_Player
 
ref DayZPlayerImplementMeleeCombat m_MeleeCombat
 
EMeleeHitType m_HitType
 
ref map< int, ref Timerm_CooldownTimers
 
Mission m_Mission
 
bool m_IsInBlock
 
bool m_IsEvading
 
bool m_IsInComboRange
 
bool m_WasPreviousHitProcessed
 
DayZPlayerImplement m_DZPlayer
 
bool m_IsFinisher
 

Enumeration Type Documentation

◆ EFightLogicCooldownCategory

Light / Heavy punches.

Enumerator
EVADE 

Definition at line 2 of file dayzplayermeleefightlogic_lightheavy.c.

Function Documentation

◆ CanFight()

bool CanFight ( )
protected

Definition at line 73 of file dayzplayermeleefightlogic_lightheavy.c.

◆ DamageHands()

void DamageHands ( DayZPlayer DZPlayer,
ClothingBase gloves,
InventoryItem itemInHands )
protected

Definition at line 818 of file dayzplayermeleefightlogic_lightheavy.c.

◆ DayZPlayerMeleeFightLogic_LightHeavy()

void DayZPlayerMeleeFightLogic_LightHeavy ( DayZPlayerImplement player)
protected

Definition at line 31 of file dayzplayermeleefightlogic_lightheavy.c.

◆ DetermineFinisherAmmo()

string DetermineFinisherAmmo ( int finisher_type)
protected

Picks a specific finisher ammo fot the hit type. This gets synchronized and guides further behaviour of the target.

Definition at line 920 of file dayzplayermeleefightlogic_lightheavy.c.

◆ DetermineFinisherAnimation()

int DetermineFinisherAnimation ( int finisher_type)
protected

Picks a specific finisher animation. Not used for mounted bayonet stabs.

Definition at line 901 of file dayzplayermeleefightlogic_lightheavy.c.

◆ DetermineSpecificFinisherType()

int DetermineSpecificFinisherType ( ItemBase weapon,
int component )
protected

Definition at line 958 of file dayzplayermeleefightlogic_lightheavy.c.

◆ DisableControls()

void DisableControls ( )
protected

◆ DummyHitSelector()

bool DummyHitSelector ( EMeleeHitType hitType,
out string ammoType )
protected

evaluation of hit player vs. player

in case of kick (on back or push from erc) change the ammo type to dummy

Definition at line 770 of file dayzplayermeleefightlogic_lightheavy.c.

◆ EnableControls()

void EnableControls ( )
protected

◆ EvaluateFinisherAttack()

bool EvaluateFinisherAttack ( InventoryItem weapon,
Object target )
protected

Check and evaluate stealth kill, if applicable.

Definition at line 645 of file dayzplayermeleefightlogic_lightheavy.c.

◆ EvaluateHit()

void EvaluateHit ( InventoryItem weapon)
protected

Definition at line 577 of file dayzplayermeleefightlogic_lightheavy.c.

◆ EvaluateHit_Common()

void EvaluateHit_Common ( InventoryItem weapon,
Object target,
bool forcedDummy = false,
int forcedWeaponMode = -1 )
protected

check if we need to use dummy hit

normal hit with applied damage to targeted component

play hit animation for dummy hits

override hit pos by pos defined in type

Definition at line 660 of file dayzplayermeleefightlogic_lightheavy.c.

◆ EvaluateHit_Infected()

void EvaluateHit_Infected ( InventoryItem weapon,
Object target )
protected

Definition at line 637 of file dayzplayermeleefightlogic_lightheavy.c.

◆ EvaluateHit_NonAlignableObjects()

void EvaluateHit_NonAlignableObjects ( InventoryItem weapon,
Object target )
protected

Definition at line 705 of file dayzplayermeleefightlogic_lightheavy.c.

◆ EvaluateHit_Player()

void EvaluateHit_Player ( InventoryItem weapon,
Object target )
protected

Melee Hit/Impact modifiers

if the oponnent is in Melee Block shift the damage down

Definition at line 604 of file dayzplayermeleefightlogic_lightheavy.c.

◆ GetAttackTypeByDistanceToTarget()

float GetAttackTypeByDistanceToTarget ( EntityAI pTarget,
EMeleeTargetType pTargetType = EMeleeTargetType.ALIGNABLE )
protected

target in short distance - in place attack

target is far from the player - forward movement attack

Definition at line 120 of file dayzplayermeleefightlogic_lightheavy.c.

◆ GetAttackTypeByWeaponAttachments()

EMeleeHitType GetAttackTypeByWeaponAttachments ( EntityAI pEntity)
protected

use stabbing if the bayonet/knife is attached to firearm

Definition at line 100 of file dayzplayermeleefightlogic_lightheavy.c.

◆ GetAttackTypeFromInputs()

EMeleeHitType GetAttackTypeFromInputs ( HumanInputController pInputs)
protected

Definition at line 90 of file dayzplayermeleefightlogic_lightheavy.c.

◆ GetCurrentHitType()

bool GetCurrentHitType ( )
protected

Definition at line 68 of file dayzplayermeleefightlogic_lightheavy.c.

◆ GetFinisherType()

int GetFinisherType ( InventoryItem weapon,
EntityAI target )
protected

Definition at line 948 of file dayzplayermeleefightlogic_lightheavy.c.

◆ GetTargetData()

void GetTargetData ( out EntityAI target,
out EMeleeTargetType targetType )
protected

default

nullify target for nonalignable objects (big objects)

Definition at line 746 of file dayzplayermeleefightlogic_lightheavy.c.

◆ HandleComboHit()

bool HandleComboHit ( int pCurrentCommandID,
HumanInputController pInputs,
InventoryItem itemInHands,
HumanMovementState pMovementState,
out bool pContinueAttack )
protected

combo hits - when we are already in Melee command and clicking UseButton

select if the next attack will be light or heavy (based on input/attachment modifier)

no suitable attack - skip that

No combos for the finisher command

wait for the previous hit commit before hitting again if the next attack is heavy and the previous wasn't - otherwise the previous light attack will turn into heavy

targetting

continue 'combo' - left hand attacks

broken legs shock

stamina depletion per attack

Definition at line 504 of file dayzplayermeleefightlogic_lightheavy.c.

◆ HandleFightLogic()

bool HandleFightLogic ( int pCurrentCommandID,
HumanInputController pInputs,
EntityAI pEntityInHands,
HumanMovementState pMovementState,
out bool pContinueAttack )
protected

Check if we need to damage

Actually pressing a button to start a melee attack

do not perform attacks when blocking

if the item in hands cannot be used as melee weapon

Currently not performing any attacks, so here we start the initial

melee with firearm

first attack in raised erc (light or heavy if modifier is used). Also added support for finishers

kick from raised pne

sprint attack in erc stance

combo hits - when we are already in Melee command and clicking UseButton

evade and blocking logic

evades in raised erc stance while moving

not enough stamina to do evades

stand up when crouching and raised pressed

blocks in raised erc/pro stance (bare hand or with melee weapon only)

Definition at line 137 of file dayzplayermeleefightlogic_lightheavy.c.

◆ HandleHitEvent()

bool HandleHitEvent ( int pCurrentCommandID,
HumanInputController pInputs,
InventoryItem itemInHands,
HumanMovementState pMovementState,
out bool pContinueAttack )
protected

Handle the event that our melee hit something.

Check if we need to damage

on anim event Hit received

re-target (enemy can have moved out of range or disappeared)

evaluate hit - selection of cfg 'ammo' type

Definition at line 282 of file dayzplayermeleefightlogic_lightheavy.c.

◆ HandleInitialFirearmMelee()

bool HandleInitialFirearmMelee ( int pCurrentCommandID,
HumanInputController pInputs,
InventoryItem itemInHands,
HumanMovementState pMovementState,
out bool pContinueAttack )
protected

NOTE: Only singular (or first) hits, combo attacks are handled in combo.

don't allow bash to interfere with actions like chambering or ejecting bullets

perform firearm melee from raised erect or continue with attack after character stand up from crouch

exit if there is no suitable attack

char stand up when performing firearm melee from crouch

Definition at line 337 of file dayzplayermeleefightlogic_lightheavy.c.

◆ HandleInitialMeleeErc()

bool HandleInitialMeleeErc ( int pCurrentCommandID,
HumanInputController pInputs,
InventoryItem itemInHands,
HumanMovementState pMovementState,
out bool pContinueAttack )
protected

First attack in raised erc (light or heavy if modifier is used). Also added support for finishers.

Definition at line 386 of file dayzplayermeleefightlogic_lightheavy.c.

◆ HandleProneKick()

bool HandleProneKick ( int pCurrentCommandID,
HumanInputController pInputs,
InventoryItem itemInHands,
HumanMovementState pMovementState,
out bool pContinueAttack )
protected

kick from raised pne

check if player is on back (situation where the player is raised in prone and on back is not in anim graph)

Definition at line 452 of file dayzplayermeleefightlogic_lightheavy.c.

◆ HandleSprintAttack()

bool HandleSprintAttack ( int pCurrentCommandID,
HumanInputController pInputs,
InventoryItem itemInHands,
HumanMovementState pMovementState,
out bool pContinueAttack )
protected

sprint attack in erc stance

targetting

command

Definition at line 482 of file dayzplayermeleefightlogic_lightheavy.c.

◆ Init()

void Init ( DayZPlayerImplement player)
protected

Definition at line 36 of file dayzplayermeleefightlogic_lightheavy.c.

◆ IsBehindEntity()

bool IsBehindEntity ( int angle,
DayZPlayer source,
Object target )
protected

DEPRECATED - moved into DayZPlayerImplementMeleeCombat.

Definition at line 787 of file dayzplayermeleefightlogic_lightheavy.c.

◆ IsEvading()

bool IsEvading ( )
protected

Definition at line 63 of file dayzplayermeleefightlogic_lightheavy.c.

◆ IsHitTypeFinisher()

bool IsHitTypeFinisher ( int type)
protected

Definition at line 953 of file dayzplayermeleefightlogic_lightheavy.c.

◆ IsInBlock()

bool IsInBlock ( )
protected

Definition at line 53 of file dayzplayermeleefightlogic_lightheavy.c.

◆ IsShortDistance()

bool IsShortDistance ( EntityAI pTarget,
float pDistanceSq )
protected

Definition at line 938 of file dayzplayermeleefightlogic_lightheavy.c.

◆ RegisterCooldowns()

void RegisterCooldowns ( )
protected

Definition at line 84 of file dayzplayermeleefightlogic_lightheavy.c.

◆ ResetCooldown()

void ResetCooldown ( EFightLogicCooldownCategory cooldownCategory)
protected

Definition at line 805 of file dayzplayermeleefightlogic_lightheavy.c.

◆ SetBlock()

void SetBlock ( bool block)
protected

Definition at line 58 of file dayzplayermeleefightlogic_lightheavy.c.

◆ SetCooldown()

void SetCooldown ( float time,
EFightLogicCooldownCategory cooldownCategory )
protected

stops currently running cooldown timer (for specific category)

param for ResetCooldown

Definition at line 792 of file dayzplayermeleefightlogic_lightheavy.c.

◆ WeaponDestroyedCheck()

bool WeaponDestroyedCheck ( InventoryItem weapon,
out string ammo )
protected

Definition at line 722 of file dayzplayermeleefightlogic_lightheavy.c.

◆ ~DayZPlayerMeleeFightLogic_LightHeavy()

Definition at line 51 of file dayzplayermeleefightlogic_lightheavy.c.

Variable Documentation

◆ CLOSE_TARGET_DISTANCE

const float CLOSE_TARGET_DISTANCE = 1.5

Definition at line 13 of file dayzplayermeleefightlogic_lightheavy.c.

◆ DUMMY_HEAVY_AMMO

const string DUMMY_HEAVY_AMMO = "Dummy_Heavy"

Definition at line 17 of file dayzplayermeleefightlogic_lightheavy.c.

◆ DUMMY_LIGHT_AMMO

const string DUMMY_LIGHT_AMMO = "Dummy_Light"

dummy ammo types

Definition at line 16 of file dayzplayermeleefightlogic_lightheavy.c.

◆ EVADE_COOLDOWN

enum EFightLogicCooldownCategory EVADE_COOLDOWN = 0.5

cooldown timers settings

◆ m_CooldownTimers

ref map<int, ref Timer> m_CooldownTimers
protected

Definition at line 22 of file dayzplayermeleefightlogic_lightheavy.c.

◆ m_DZPlayer

DayZPlayerImplement m_DZPlayer
protected

DEPRECATED

Definition at line 945 of file dayzplayermeleefightlogic_lightheavy.c.

◆ m_HitType

EMeleeHitType m_HitType
protected

Definition at line 21 of file dayzplayermeleefightlogic_lightheavy.c.

◆ m_IsEvading

bool m_IsEvading
protected

Definition at line 26 of file dayzplayermeleefightlogic_lightheavy.c.

◆ m_IsFinisher

bool m_IsFinisher
protected

Definition at line 946 of file dayzplayermeleefightlogic_lightheavy.c.

◆ m_IsInBlock

bool m_IsInBlock
protected

Definition at line 25 of file dayzplayermeleefightlogic_lightheavy.c.

◆ m_IsInComboRange

bool m_IsInComboRange
protected

Definition at line 28 of file dayzplayermeleefightlogic_lightheavy.c.

◆ m_MeleeCombat

ref DayZPlayerImplementMeleeCombat m_MeleeCombat
protected

Definition at line 20 of file dayzplayermeleefightlogic_lightheavy.c.

◆ m_Mission

Mission m_Mission
protected

Definition at line 23 of file dayzplayermeleefightlogic_lightheavy.c.

◆ m_Player

PlayerBase m_Player
protected

Definition at line 19 of file dayzplayermeleefightlogic_lightheavy.c.

◆ m_WasPreviousHitProcessed

bool m_WasPreviousHitProcessed
protected

Definition at line 29 of file dayzplayermeleefightlogic_lightheavy.c.