//---------------------------------------------------------------------
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;
}
void CNPC_Infected::HandleAnimEvent( animevent_t *pEvent )
{
	int nEvent = pEvent->Event();

	if ( nEvent ==  AE_FOOTSTEP_RIGHT )
	{
		EmitSound( "Zombie.FootstepLeft", pEvent->eventtime );
		return;
	}

	if ( nEvent ==  AE_FOOTSTEP_LEFT )
	{
		EmitSound( "Zombie.FootstepRight", pEvent->eventtime );
		return;
	}


	if ( pEvent->Event() == AE_ATTACK_HIT )
	{
		MeleeAttack( INFECTED_MELEE1_RANGE, sk_infected_swipe_damage.GetFloat(), QAngle( 20.0f, 0.0f, -12.0f ), Vector( -250.0f, 1.0f, 1.0f ) );
		return;

	}
	BaseClass::HandleAnimEvent( pEvent );
}
//=========================================================
//=========================================================
void CAP_PlayerInfected::HandleAnimEvent( animevent_t *pEvent )
{
	if ( pEvent->Event() == AE_ATTACK_HIT )
	{
		EmitSound( "Infected.Attack.Male" );
		MeleeAttack();

		return;
	}

	BaseClass::HandleAnimEvent( pEvent );
}
Exemple #4
0
// Melee Attack Start
void AWeapon::PreMeleeAttack()
{
	BP_PreMeleeAttack();
	if (bShooting || bMeleeAttacking)return;


	bMeleeAttacking = true;

	// Reset After Delay
	FTimerHandle MyHandle;
	ThePlayer->GetWorldTimerManager().SetTimer(MyHandle, this, &AWeapon::ResetMeleeAttack, MeleeAttackSpeed, false);

	// Set Anim State
	if (ThePlayer)ThePlayer->ServerSetAnimID(EAnimState::Melee_Attack);

	// Call Actual Event
	MeleeAttack();
}
Exemple #5
0
//-----------------------------------------------------------------------------
// Purpose:	
// Input:	
// Output:	
//-----------------------------------------------------------------------------
void CASW_Boomer::HandleAnimEvent( animevent_t *pEvent )
{
	//softcopy: ignite/explode marine by boomer melee attack
	if ( GetActivity() == ACT_MELEE_ATTACK1 ) 
	{
		float damage =  MAX(3.0f, ASWGameRules()->ModifyAlienDamageBySkillLevel(asw_boomer_melee_min_damage.GetFloat()));
		MeleeAttack(ASW_BOOMER_MELEE_RANGE, damage);
	}

	int nEvent = pEvent->Event();
	if ( nEvent == AE_BOOMER_INFLATED )
	{
		m_bInflated = true;
		return;
	}

	BaseClass::HandleAnimEvent( pEvent );
}
//-----------------------------------------------------------------------------
// Purpose: 
// Input  : *pEvent - 
//-----------------------------------------------------------------------------
void CNPC_Bug_Warrior::HandleAnimEvent( animevent_t *pEvent )
{
	switch ( pEvent->event )
	{
	case BUG_WARRIOR_AE_MELEE_HIT1:
		MeleeAttack( BUG_WARRIOR_MELEE1_RANGE, npc_bug_warrior_swipe_damage.GetFloat(), QAngle( 20.0f, 0.0f, 0.0f ), Vector( -350.0f, 1.0f, 1.0f ) );
		return;
		break;

	case BUG_WARRIOR_AE_MELEE_SOUND1:
		{
			EmitSound( "NPC_Bug_Warrior.AttackSingle" );
			return;
		}
		break;
	}

	BaseClass::HandleAnimEvent( pEvent );
}
Exemple #7
0
//---------------------------------------------------------------------
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;
}
Exemple #8
0
//---------------------------------------------------------------------
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;
}
void CWeaponDODBase::Punch( void )
{
	MeleeAttack( 60, MELEE_DMG_FIST | MELEE_DMG_SECONDARYATTACK, 0.2f, 0.4f );
}
void CASW_Simple_Alien::HandleAnimEvent( animevent_t *pEvent )
{
	int nEvent = pEvent->Event();

	if ( nEvent == AE_DRONE_WALK_FOOTSTEP )
	{
		return;
	}

	if ( nEvent == AE_DRONE_FOOTSTEP_SOFT )
	{
		return;
	}

	if ( nEvent == AE_DRONE_FOOTSTEP_HEAVY )
	{
		return;
	}

	if ( nEvent == AE_DRONE_MELEE_HIT1 )
	{
		MeleeAttack( ASW_DRONE_MELEE1_RANGE, ASWGameRules()->ModifyAlienDamageBySkillLevel(GetDamage()), QAngle( 20.0f, 0.0f, -12.0f ), Vector( -250.0f, 1.0f, 1.0f ) );
		return;
	}

	if ( nEvent == AE_DRONE_MELEE_HIT2 )
	{
		MeleeAttack( ASW_DRONE_MELEE1_RANGE, ASWGameRules()->ModifyAlienDamageBySkillLevel(GetDamage()), QAngle( 20.0f, 0.0f, 0.0f ), Vector( -350.0f, 1.0f, 1.0f ) );
		return;
	}	
	
	if ( nEvent == AE_DRONE_MELEE1_SOUND )
	{
		AttackSound();
		return;
	}
	
	if ( nEvent == AE_DRONE_MELEE2_SOUND )
	{
		AttackSound();
		return;
	}

	if ( nEvent == AE_DRONE_MOUTH_BLEED )
	{
		Vector vecOrigin, vecDir;
		if (GetAttachment( LookupAttachment("mouth") , vecOrigin, &vecDir ))
			UTIL_ASW_BloodDrips( vecOrigin+vecDir*3, vecDir, BLOOD_COLOR_RED, 6 );
		return;
	}

	if ( nEvent == AE_DRONE_ALERT_SOUND )
	{
		EmitSound( "ASW_Drone.Alert" );
		return;
	}

	if ( nEvent == AE_DRONE_SHADOW_ON)
	{
		RemoveEffects( EF_NOSHADOW );
		return;
	}

	BaseClass::HandleAnimEvent( pEvent );
}