Esempio n. 1
0
void AvHHive::DonateUse(CBaseEntity* inActivator, CBaseEntity* inCaller, USE_TYPE inUseType, float inValue)
{
	// Player is trying to donate his resources to the pool
	if(this->GetIsActive())
	{
		AvHPlayer* inActivatingPlayer = dynamic_cast<AvHPlayer*>(inActivator);
		if(inActivatingPlayer && (inActivator->pev->team == this->pev->team))
		{
			// Take some resources, give some resources
			const float kResourcesToDonatePerUse = .4f;
			float theResourcesToGive = min(inActivatingPlayer->GetResources(), kResourcesToDonatePerUse);
			
			if(theResourcesToGive > 0.0f)
			{
				AvHTeam* theTeam = inActivatingPlayer->GetTeamPointer();
				if(theTeam)
				{
					inActivatingPlayer->SetResources(inActivatingPlayer->GetResources() - theResourcesToGive);
					theTeam->SetTeamResources(theTeam->GetTeamResources() + theResourcesToGive);

					if(g_engfuncs.pfnRandomLong(0, 20) == 0)
					{
						PLAYBACK_EVENT_FULL(0, this->edict(), gRegenerationEventID, 0, this->pev->origin, (float *)&g_vecZero, 1.0f, 0.0, /*theWeaponIndex*/ 0, 0, 0, 0 );

						// Just say "resources donated"
						inActivatingPlayer->PlaybackNumericalEvent(kNumericalInfoResourcesDonatedEvent, 0);
					}
				}
			}
		}
	}
}
Esempio n. 2
0
void AvHBasePlayerWeapon::UpdateInventoryEnabledState(int inNumActiveHives)
{
	// Process here
	int theEnabledState = 1;
				
	ItemInfo theItemInfo;
	if(this->GetItemInfo(&theItemInfo) != 0)
	{
		int theWeaponFlags = theItemInfo.iFlags;
		AvHPlayer* thePlayer = dynamic_cast<AvHPlayer*>(this->m_pPlayer);
		ASSERT(thePlayer);
	
		// If we don't have the hives required, or we're ensnared
		if	(/*thePlayer->GetIsTemporarilyInvulnerable() ||*/
			!thePlayer->GetIsAbleToAct() || 
			((inNumActiveHives < 1) && (theWeaponFlags & ONE_HIVE_REQUIRED)) ||
			((inNumActiveHives < 2) && (theWeaponFlags & TWO_HIVES_REQUIRED)) ||
			((inNumActiveHives < 3) && (theWeaponFlags & THREE_HIVES_REQUIRED)) ||
			(this->GetResourceCost() > thePlayer->GetResources(false)) )
		{
			// Disable it
			theEnabledState = 0;
		}
		else
		{
			int a = 0;
		}
	}
	
	// puzl: 497 save the state for when we send the CurWeapon message
	this->m_iEnabled =  theEnabledState;
}
Esempio n. 3
0
void AvHEggLayer::FireProjectiles(void)
{
	#ifdef AVH_SERVER
	// Make sure we have enough points to shoot this thing
	AvHPlayer* thePlayer = dynamic_cast<AvHPlayer*>(this->m_pPlayer);
	ASSERT(thePlayer);
	
	if(thePlayer->GetResources() > kEggLayerPointCost)
	{
		// Now check to make sure the space is big enough to hold the egg
		UTIL_MakeVectors(this->m_pPlayer->pev->v_angle);
		
		//Vector vecAiming = gpGlobals->v_forward;
		Vector vecSrc = this->m_pPlayer->GetGunPosition();// + vecAiming;

		if(AvHSUIsAreaFree(vecSrc, kEggRadius, this->m_pPlayer))
		{
			// Decrement kEggLayerPointCost points
			thePlayer->SetResources(thePlayer->GetResources() - kEggLayerPointCost);
			
			AvHEgg* theEgg = GetClassPtr((AvHEgg*)NULL );
			theEgg->Spawn();
			
			theEgg->pev->angles.x = 0;
			theEgg->pev->angles.z = 0;
			//theEgg->pev->velocity = gpGlobals->v_forward * 300 + gpGlobals->v_forward * 100;

			UTIL_SetOrigin(theEgg->pev, vecSrc);
			
			// Set owner
			//theEgg->pev->owner = ENT(this->m_pPlayer->pev);
			
			// Set egg's team
			theEgg->pev->team = this->m_pPlayer->pev->team;
		}
	}
	#endif	
}
Esempio n. 4
0
void AvHBasePlayerWeapon::DeductCostForShot(void)
{
	this->m_iClip--;

	// On a successful attack, decloak the player if needed
	#ifdef AVH_SERVER
	AvHPlayer* thePlayer = dynamic_cast<AvHPlayer*>(this->m_pPlayer);
	if(thePlayer)
	{
		thePlayer->TriggerUncloak();
	}

	int theResourceCost = this->GetResourceCost();
	if(theResourceCost > 0)
	{
		float theNewResources = (thePlayer->GetResources(false) - theResourceCost);
		theNewResources = max(theNewResources, 0.0f);
		thePlayer->SetResources(theNewResources);
	}

	#endif
}