//--------------------------------------------------------------------- bool CWeapon::OnActionSpecial(EntityId actorId, const ActionId& actionId, int activationMode, float value) { CPlayer* pOwnerPlayer = GetOwnerPlayer(); if (pOwnerPlayer && !pOwnerPlayer->CanMelee()) return true; if(gEnv->bMultiplayer && AreAnyItemFlagsSet(eIF_Transitioning)) //Ignore the transition from attachments menu and melee immediately { ClearItemFlags( eIF_Transitioning ); } if (gEnv->bMultiplayer && !g_pGameCVars->pl_boostedMelee_allowInMP) { if (activationMode == eAAM_OnPress) { if (CanMeleeAttack()) { if (PreMeleeAttack()) MeleeAttack(); } else { CCCPOINT(Melee_PressedButMeleeNotAllowed); } } } else { if (activationMode == eAAM_OnPress) { if(CanMeleeAttack()) { if (pOwnerPlayer) { if (PreMeleeAttack()) { BoostMelee(false); MeleeAttack(); } } } else { CCCPOINT(Melee_PressedButMeleeNotAllowed); } } } return true; }
//--------------------------------------------------------------------- bool CWeapon::OnActionSpecial(EntityId actorId, const ActionId& actionId, int activationMode, float value) { if (activationMode == eAAM_OnPress) { if(m_weaponRaised) { RaiseWeapon(false,true); } COffHand * offHandWeapon = NULL; bool isOffHandSelected = false; GetOffHandInfo(this,isOffHandSelected,&offHandWeapon); if (CanMeleeAttack() && (!isOffHandSelected || (offHandWeapon->GetOffHandState()&(eOHS_HOLDING_NPC|eOHS_TRANSITIONING)))) MeleeAttack(); } return true; }
//--------------------------------------------------------------------- bool CWeapon::OnActionSpecial(EntityId actorId, const ActionId& actionId, int activationMode, float value) { if (activationMode == eAAM_OnPress) { if(m_weaponRaised) RaiseWeapon(false,true); CActor* pOwnerActor = GetOwnerActor(); if (pOwnerActor && g_pGameCVars->dt_enable) { CPlayer *pPlayer = static_cast<CPlayer*>(pOwnerActor); pPlayer->GetNanoSuit()->Tap(eNA_Melee); } COffHand * offHandWeapon = NULL; bool isOffHandSelected = false; GetOffHandInfo(this,isOffHandSelected,&offHandWeapon); if (CanMeleeAttack() && (!isOffHandSelected || (offHandWeapon->GetOffHandState()&(eOHS_HOLDING_NPC|eOHS_TRANSITIONING)))) MeleeAttack(); } return true; }
//------------------------------------------ //CFists::RequestAnimState(EFistAnimState eFAS) // //This method changes (if possible) the current animation for the fists // eFAS - Requested anim state void CFists::RequestAnimState(EFistAnimState eFAS, bool force /*=false*/) { //Only if selected if(!IsSelected() || m_frozen || IsWeaponRaised()) return; if(!m_underWater) { switch(eFAS) { case eFAS_NOSTATE: m_currentAnimState = eFAS_NOSTATE; m_timeOut = TIMEOUT; break; case eFAS_RELAXED: if(m_currentAnimState!=eFAS_NOSTATE && m_currentAnimState!=eFAS_RELAXED) { m_currentAnimState = eFAS_RELAXED; m_timeOut = TIMEOUT; PlayAction(g_pItemStrings->deselect); SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->idle_relaxed); } break; case eFAS_FIGHT: //if(m_currentAnimState!=eFAS_RUNNING) { SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->idle); m_currentAnimState = eFAS_FIGHT; m_timeOut = TIMEOUT; } break; case eFAS_RUNNING: if(m_currentAnimState==eFAS_RELAXED || CanMeleeAttack()) { PlayAction(g_pItemStrings->run_forward,0,true); m_currentAnimState = eFAS_RUNNING; } break; case eFAS_JUMPING: if(m_currentAnimState==eFAS_RUNNING) { PlayAction(g_pItemStrings->jump_start); SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->jump_idle); m_currentAnimState = eFAS_JUMPING; } break; case eFAS_LANDING: if(m_currentAnimState==eFAS_JUMPING) { PlayAction(g_pItemStrings->jump_end); SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->idle_relaxed); m_currentAnimState = eFAS_RELAXED; } break; case eFAS_CRAWL: if(m_currentAnimState!=eFAS_CRAWL) { PlayAction(g_pItemStrings->crawl,0,true); //SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->crawl); m_currentAnimState = eFAS_CRAWL; } break; } } else { switch(eFAS) { case eFAS_SWIM_IDLE: if(m_currentAnimState!=eFAS_SWIM_IDLE) { m_currentAnimState = eFAS_SWIM_IDLE; PlayAction(g_pItemStrings->swim_idle,0,true,eIPAF_Default|eIPAF_CleanBlending); //SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->swim_idle); } break; case eFAS_SWIM_FORWARD: if(m_currentAnimState!=eFAS_SWIM_FORWARD) { m_currentAnimState = eFAS_SWIM_FORWARD; PlayAction(g_pItemStrings->swim_forward,0,true,eIPAF_Default|eIPAF_CleanBlending); //SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->swim_forward); } break; case eFAS_SWIM_BACKWARD: if(m_currentAnimState!=eFAS_SWIM_BACKWARD) { m_currentAnimState = eFAS_SWIM_BACKWARD; PlayAction(g_pItemStrings->swim_backward,0,true,eIPAF_Default|eIPAF_CleanBlending); //SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->swim_backward); } break; case eFAS_SWIM_SPEED: if(m_currentAnimState!=eFAS_SWIM_SPEED) { m_currentAnimState = eFAS_SWIM_SPEED; PlayAction(g_pItemStrings->speed_swim,0,true,eIPAF_Default|eIPAF_CleanBlending); //SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->speed_swim); } break; case eFAS_SWIM_FORWARD_S: if(m_currentAnimState!=eFAS_SWIM_FORWARD_S) { m_currentAnimState = eFAS_SWIM_FORWARD_S; PlayAction(g_pItemStrings->swim_forward_2,0,true,eIPAF_Default|eIPAF_CleanBlending); //SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->swim_forward_2); } break; } } }