Пример #1
0
void Electricity::ReadProp(const GenericPropList *pProps)
{
	if (!pProps) return;

	VolumeBrush::ReadProp(pProps);

	// Make sure we are using the right damage type.
	m_eDamageType = StringToDamageType( "ELECTRICITY" );
}
Пример #2
0
void Burn::ReadProp(const GenericPropList *pProps)
{
	if (!pProps) return;

	VolumeBrush::ReadProp(pProps);
	
	// Make sure we are using the right damage type.
	m_eDamageType = StringToDamageType( "BURN" );
}
Пример #3
0
void EndlessFall::ReadProp(const GenericPropList *pProps)
{
	if (!pProps) return;

	VolumeBrush::ReadProp(pProps);
	
	// Make sure we are using the right damage type.
	m_eDamageType = StringToDamageType( "ENDLESS FALL" );
}
Пример #4
0
bool DoomsDayDevice::DamageVictims( bool& bAllDead )
{
	TRACE( "DoomsDayDevice::DamageVictims\n" );

	char szDamageType[256];
	if( !g_pServerButeMgr->GetDoomsDayDeviceDamageType( szDamageType, ARRAY_LEN( szDamageType )))
	{
		return false;
	}

	DamageStruct damage;
	damage.eType	= StringToDamageType( szDamageType );
	damage.fDamage	= g_pServerButeMgr->GetDoomsDayDeviceDamageAmount( );
	damage.hDamager = m_hObject;
	damage.fDuration = 30.0f;

	// Initialize the status to all the players being dead.
	bAllDead = true;

	// Find all the victim teams and kill them.
	uint8 nNumTeams = CTeamMgr::Instance( ).GetNumTeams( );
	for( uint8 nTeam = 0; nTeam < nNumTeams; nTeam++ )
	{
		// Skip the activating team.
		if( nTeam == m_nOwningTeamID )
			continue;

		CTeam* pTeam = CTeamMgr::Instance( ).GetTeam( nTeam );
		if( !pTeam )
		{
			ASSERT( !"DoomsDayDevice::DamageVictims:  Invalid team." );
			continue;
		}

		// Iterate over each player on the team and kill him.
		PlayerIDSet const& players = pTeam->GetPlayerIDSet( );
		PlayerIDSet::const_iterator iter = players.begin( );
		while( iter != players.end( ))
		{
			uint32 nClientId = *iter;
			iter++;

			HCLIENT hClient = g_pLTServer->GetClientHandle( nClientId );
			if( !hClient )
				continue;

			CPlayerObj* pTeamPlayer = ( CPlayerObj* )g_pLTServer->GetClientUserData( hClient );
			if( !pTeamPlayer )
				continue;

			// Skip if already dead.
			if( pTeamPlayer->IsDead( ))
				continue;

			// This player is still alive, so update the status variable.
			bAllDead = false;

			// Do the damage.
			damage.DoDamage( this, pTeamPlayer->m_hObject );
		}
	}

	return true;
}
Пример #5
0
void VolumeBrush::ReadProp(ObjectCreateStruct *pStruct)
{
	if (!pStruct) return;

	char szData[MAX_CS_FILENAME_LEN+1];

    g_pLTServer->GetPropBool("Hidden", &m_bHidden);
    g_pLTServer->GetPropBool("ShowSurface", &m_bShowSurface);

    g_pLTServer->GetPropVector("TintColor", &m_vTintColor);
    g_pLTServer->GetPropVector("LightAdd", &m_vLightAdd);

    g_pLTServer->GetPropBool("FogEnable", &m_bFogEnable);
    g_pLTServer->GetPropReal("FogFarZ", &m_fFogFarZ);
    g_pLTServer->GetPropReal("FogNearZ", &m_fFogNearZ);
    g_pLTServer->GetPropVector("FogColor", &m_vFogColor);

  	GenericProp genProp;
    if (g_pLTServer->GetPropGeneric("DamageType", &genProp) == LT_OK)
	{
		if (genProp.m_String[0])
		{
			m_eDamageType = StringToDamageType((const char*)genProp.m_String);
		}
	}

	// Polygrid stuff...

    if (g_pLTServer->GetPropString("SpriteSurfaceName", szData, MAX_CS_FILENAME_LEN) == LT_OK)
	{
        m_hstrSurfaceSprite = g_pLTServer->CreateString( szData );
	}

    g_pLTServer->GetPropReal("XScaleMin", &m_fXScaleMin);
    g_pLTServer->GetPropReal("XScaleMax", &m_fXScaleMax);
    g_pLTServer->GetPropReal("YScaleMin", &m_fYScaleMin);
    g_pLTServer->GetPropReal("YScaleMax", &m_fYScaleMax);
    g_pLTServer->GetPropReal("XScaleDuration", &m_fXScaleDuration);
    g_pLTServer->GetPropReal("YScaleDuration", &m_fYScaleDuration);
    g_pLTServer->GetPropReal("SurfaceHeight", &m_fSurfaceHeight);
    g_pLTServer->GetPropColor("SurfaceColor1", &m_vSurfaceColor1);
    g_pLTServer->GetPropColor("SurfaceColor2", &m_vSurfaceColor2);
    g_pLTServer->GetPropReal("Viscosity", &m_fViscosity);
    g_pLTServer->GetPropReal("Friction", &m_fFriction);
    g_pLTServer->GetPropVector("Current", &m_vCurrent);
    g_pLTServer->GetPropReal("Damage", &m_fDamage);
    g_pLTServer->GetPropReal("SurfaceAlpha", &m_fSurfAlpha);
    g_pLTServer->GetPropBool("Additive", &m_bAdditive);
    g_pLTServer->GetPropBool("Multiply", &m_bMultiply);
    g_pLTServer->GetPropBool("CanPlayMovementSounds", &m_bCanPlayMoveSnds);

	long nLongVal;
    if (g_pLTServer->GetPropLongInt("NumSurfacePolies", &nLongVal) == LT_OK)
	{
        m_dwNumSurfPolies = (uint32)nLongVal;
	}

    if (g_pLTServer->GetPropGeneric("SoundFilter", &genProp) == LT_OK)
	{
		SOUNDFILTER* pFilter = g_pSoundFilterMgr->GetFilter(genProp.m_String);
		if (pFilter)
		{
			m_nSoundFilterId = pFilter->nId;
		}
	}
}