mirror of
https://github.com/ENSL/NS.git
synced 2024-11-23 13:02:12 +00:00
o Alien flashlight does not reset at death.
o Mantis 517: Changed the web render settings to values that work irrespective of alien flashlight setting. o Changed the behaviour of hive/MC teleportation - Friendly fire never triggers 'the hive is under attack'. - Aliens must +use a growing hive to trigger 'the enemy approaches'. git-svn-id: https://unknownworlds.svn.cloudforge.com/ns1@555 67975925-1194-0748-b3d5-c16f83f1a3a1
This commit is contained in:
parent
40c70b1d2c
commit
0cd4983b6a
8 changed files with 36 additions and 24 deletions
|
@ -607,7 +607,7 @@ void AvHMovementChamber::TeleportUse(CBaseEntity* inActivator, CBaseEntity* inCa
|
||||||
{
|
{
|
||||||
bool theHiveIsUnderAttack = GetGameRules()->GetIsEntityUnderAttack(theEntity->entindex());
|
bool theHiveIsUnderAttack = GetGameRules()->GetIsEntityUnderAttack(theEntity->entindex());
|
||||||
|
|
||||||
if(theEntity->GetIsActive() || theHiveIsUnderAttack)
|
if(theEntity->GetIsActive() || theHiveIsUnderAttack || theEntity->GetEmergencyUse() )
|
||||||
{
|
{
|
||||||
float theCurrentDistance = VectorDistance(theEntity->pev->origin, inActivator->pev->origin);
|
float theCurrentDistance = VectorDistance(theEntity->pev->origin, inActivator->pev->origin);
|
||||||
bool theHiveIsFarther = (theCurrentDistance > theFarthestDistance);
|
bool theHiveIsFarther = (theCurrentDistance > theFarthestDistance);
|
||||||
|
|
|
@ -1693,7 +1693,7 @@ void AvHWebStrand::Precache(void)
|
||||||
void AvHWebStrand::Setup(const Vector& inPointOne, const Vector& inPointTwo)
|
void AvHWebStrand::Setup(const Vector& inPointOne, const Vector& inPointTwo)
|
||||||
{
|
{
|
||||||
// Create a new entity with CBeam private data
|
// Create a new entity with CBeam private data
|
||||||
this->BeamInit(kWebStrandSprite, kWebStrandWidth);
|
this->BeamInit(kWebStrandSprite, 40); //kWebStrandWidth);
|
||||||
|
|
||||||
this->PointsInit(inPointOne, inPointTwo);
|
this->PointsInit(inPointOne, inPointTwo);
|
||||||
this->SetColor( 255, 255, 255 );
|
this->SetColor( 255, 255, 255 );
|
||||||
|
@ -1703,6 +1703,9 @@ void AvHWebStrand::Setup(const Vector& inPointOne, const Vector& inPointTwo)
|
||||||
this->SetBrightness( 8 );
|
this->SetBrightness( 8 );
|
||||||
|
|
||||||
this->pev->classname = MAKE_STRING(kesTeamWebStrand);
|
this->pev->classname = MAKE_STRING(kesTeamWebStrand);
|
||||||
|
this->pev->rendermode = kRenderNormal;
|
||||||
|
this->pev->renderfx = kRenderFxFlickerFast;
|
||||||
|
this->pev->renderamt = 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AvHWebStrand::Spawn(void)
|
void AvHWebStrand::Spawn(void)
|
||||||
|
@ -1737,6 +1740,9 @@ void AvHWebStrand::StrandThink()
|
||||||
this->SetColor( 255, 255, 255 );
|
this->SetColor( 255, 255, 255 );
|
||||||
this->SetFrame(1);
|
this->SetFrame(1);
|
||||||
this->mSolid=true;
|
this->mSolid=true;
|
||||||
|
this->pev->rendermode = kRenderTransAdd;
|
||||||
|
this->pev->renderfx = kRenderFxNone;
|
||||||
|
this->pev->renderamt = 30;
|
||||||
SetThink(NULL);
|
SetThink(NULL);
|
||||||
}
|
}
|
||||||
void AvHWebStrand::StrandExpire()
|
void AvHWebStrand::StrandExpire()
|
||||||
|
|
|
@ -977,7 +977,7 @@ BOOL AvHGamerules::FPlayerCanRespawn( CBasePlayer *pPlayer )
|
||||||
return theCanRespawn;
|
return theCanRespawn;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AvHGamerules::CanEntityDoDamageTo(const CBaseEntity* inAttacker, const CBaseEntity* inReceiver, float* outScalar, bool triggerHiveDefend)
|
bool AvHGamerules::CanEntityDoDamageTo(const CBaseEntity* inAttacker, const CBaseEntity* inReceiver, float* outScalar)
|
||||||
{
|
{
|
||||||
bool theCanDoDamage = false;
|
bool theCanDoDamage = false;
|
||||||
|
|
||||||
|
@ -1071,19 +1071,6 @@ bool AvHGamerules::CanEntityDoDamageTo(const CBaseEntity* inAttacker, const CBas
|
||||||
{
|
{
|
||||||
*outScalar = theScalar;
|
*outScalar = theScalar;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( triggerHiveDefend ) {
|
|
||||||
if(!theTeamsAreDifferent && !AvHSUGetIsExternalClassName(STRING(inReceiver->pev->classname)) && theGameHasStarted )
|
|
||||||
{
|
|
||||||
AvHHive *theHive=(AvHHive *)dynamic_cast<const AvHHive *>(inReceiver);
|
|
||||||
if ( theHive != NULL ) {
|
|
||||||
theCanDoDamage=false;
|
|
||||||
if ( !this->GetIsEntityUnderAttack(theHive->entindex()) )
|
|
||||||
GetGameRules()->TriggerAlert((AvHTeamNumber)inAttacker->pev->team, ALERT_HIVE_DEFEND, theHive->entindex());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return theCanDoDamage;
|
return theCanDoDamage;
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,7 +186,7 @@ public:
|
||||||
virtual BOOL FPlayerCanTakeDamage( CBasePlayer *pPlayer, CBaseEntity *pAttacker );
|
virtual BOOL FPlayerCanTakeDamage( CBasePlayer *pPlayer, CBaseEntity *pAttacker );
|
||||||
|
|
||||||
// TODO: Add splash damage parameter and outgoing float percentage damage? This way splash damage could do some damage in non-tourny mode?
|
// TODO: Add splash damage parameter and outgoing float percentage damage? This way splash damage could do some damage in non-tourny mode?
|
||||||
virtual bool CanEntityDoDamageTo(const CBaseEntity* inAttacker, const CBaseEntity* inReceiver, float* outScalar = NULL, bool triggerHiveDefend = true);
|
virtual bool CanEntityDoDamageTo(const CBaseEntity* inAttacker, const CBaseEntity* inReceiver, float* outScalar = NULL);
|
||||||
|
|
||||||
//virtual edict_t* GetPlayerSpawnSpot( CBasePlayer *pPlayer );
|
//virtual edict_t* GetPlayerSpawnSpot( CBasePlayer *pPlayer );
|
||||||
virtual void PlayerThink( CBasePlayer *pPlayer );
|
virtual void PlayerThink( CBasePlayer *pPlayer );
|
||||||
|
|
|
@ -114,7 +114,8 @@ AvHHive::AvHHive() : AvHBaseBuildable(TECH_HIVE, ALIEN_BUILD_HIVE, kesTeamHive,
|
||||||
this->mTechnology = MESSAGE_NULL;
|
this->mTechnology = MESSAGE_NULL;
|
||||||
this->mEnergy = 0.0f;
|
this->mEnergy = 0.0f;
|
||||||
this->mLastTimeScannedHives=-1.0f;
|
this->mLastTimeScannedHives=-1.0f;
|
||||||
this->mTeleportHiveIndex=-1;;
|
this->mTimeEmergencyUseEnabled=-1.0f;
|
||||||
|
this->mTeleportHiveIndex=-1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -676,7 +677,8 @@ int AvHHive::TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GetGameRules()->TriggerAlert((AvHTeamNumber)this->pev->team, ALERT_UNDER_ATTACK, this->entindex());
|
if ( pevAttacker->team != this->pev->team )
|
||||||
|
GetGameRules()->TriggerAlert((AvHTeamNumber)this->pev->team, ALERT_UNDER_ATTACK, this->entindex());
|
||||||
}
|
}
|
||||||
|
|
||||||
if((this->mTimeLastWoundSound == -1) || ((this->mTimeLastWoundSound + kWoundSoundInterval) < gpGlobals->time))
|
if((this->mTimeLastWoundSound == -1) || ((this->mTimeLastWoundSound + kWoundSoundInterval) < gpGlobals->time))
|
||||||
|
@ -904,10 +906,23 @@ void AvHHive::HiveTouch(CBaseEntity* inOther)
|
||||||
AvHBaseBuildable::BuildableTouch(inOther);
|
AvHBaseBuildable::BuildableTouch(inOther);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AvHHive::SetEmergencyUse() {
|
||||||
|
if ( !this->GetEmergencyUse() ) {
|
||||||
|
GetGameRules()->TriggerAlert((AvHTeamNumber)this->pev->team, ALERT_HIVE_DEFEND, this->entindex());
|
||||||
|
}
|
||||||
|
this->mTimeEmergencyUseEnabled=gpGlobals->time;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AvHHive::GetEmergencyUse() const {
|
||||||
|
return ( this->mTimeEmergencyUseEnabled > gpGlobals->time - 5.0f ); //BALANCE_VAR(kHiveEmergencyInterval)
|
||||||
|
}
|
||||||
|
|
||||||
void AvHHive::TeleportUse(CBaseEntity* inActivator, CBaseEntity* inCaller, USE_TYPE inUseType, float inValue)
|
void AvHHive::TeleportUse(CBaseEntity* inActivator, CBaseEntity* inCaller, USE_TYPE inUseType, float inValue)
|
||||||
{
|
{
|
||||||
if ( this->GetIsSpawning() )
|
if ( this->GetIsSpawning() ) {
|
||||||
|
this->SetEmergencyUse();
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const float kHiveScanInterval = 1.0f;
|
const float kHiveScanInterval = 1.0f;
|
||||||
|
|
||||||
|
@ -928,7 +943,7 @@ void AvHHive::TeleportUse(CBaseEntity* inActivator, CBaseEntity* inCaller, USE_T
|
||||||
{
|
{
|
||||||
bool theHiveIsUnderAttack = GetGameRules()->GetIsEntityUnderAttack(theEntity->entindex());
|
bool theHiveIsUnderAttack = GetGameRules()->GetIsEntityUnderAttack(theEntity->entindex());
|
||||||
// allow teleport to any built hive, or unbuilt hives under attack.
|
// allow teleport to any built hive, or unbuilt hives under attack.
|
||||||
if(!theEntity->GetIsSpawning() || ( theEntity->GetIsSpawning() && theHiveIsUnderAttack ) )
|
if(!theEntity->GetIsSpawning() || ( theEntity->GetIsSpawning() && ( theHiveIsUnderAttack || theEntity->GetEmergencyUse()) ) )
|
||||||
{
|
{
|
||||||
theHives.push_back(theEntity->entindex());
|
theHives.push_back(theEntity->entindex());
|
||||||
if ( theHiveIsUnderAttack )
|
if ( theHiveIsUnderAttack )
|
||||||
|
|
|
@ -156,6 +156,9 @@ public:
|
||||||
|
|
||||||
virtual void Spawn();
|
virtual void Spawn();
|
||||||
|
|
||||||
|
virtual void SetEmergencyUse();
|
||||||
|
virtual bool GetEmergencyUse() const;
|
||||||
|
|
||||||
void EXPORT TeleportUse(CBaseEntity* inActivator, CBaseEntity* inCaller, USE_TYPE inUseType, float inValue);
|
void EXPORT TeleportUse(CBaseEntity* inActivator, CBaseEntity* inCaller, USE_TYPE inUseType, float inValue);
|
||||||
|
|
||||||
//virtual void UpdateReinforcements();
|
//virtual void UpdateReinforcements();
|
||||||
|
@ -182,6 +185,7 @@ private:
|
||||||
float mTimeOfNextUmbra;
|
float mTimeOfNextUmbra;
|
||||||
float mEnergy;
|
float mEnergy;
|
||||||
float mLastTimeScannedHives;
|
float mLastTimeScannedHives;
|
||||||
|
float mTimeEmergencyUseEnabled;
|
||||||
int mTeleportHiveIndex;
|
int mTeleportHiveIndex;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -150,7 +150,7 @@ void AvHParasiteGun::FireProjectiles(void)
|
||||||
{
|
{
|
||||||
float theScalar = 1.0f;
|
float theScalar = 1.0f;
|
||||||
|
|
||||||
bool theCanDoDamageTo = GetGameRules()->CanEntityDoDamageTo(this->m_pPlayer, theEntityHit, &theScalar, false);
|
bool theCanDoDamageTo = GetGameRules()->CanEntityDoDamageTo(this->m_pPlayer, theEntityHit, &theScalar);
|
||||||
|
|
||||||
theScalar *= AvHPlayerUpgrade::GetAlienRangedDamageUpgrade(this->m_pPlayer->pev->iuser4);
|
theScalar *= AvHPlayerUpgrade::GetAlienRangedDamageUpgrade(this->m_pPlayer->pev->iuser4);
|
||||||
|
|
||||||
|
|
|
@ -856,7 +856,7 @@ void AvHPlayer::ClearRoleAbilities()
|
||||||
this->pev->iuser4 &= ~MASK_ALIEN_EMBRYO;
|
this->pev->iuser4 &= ~MASK_ALIEN_EMBRYO;
|
||||||
this->pev->iuser4 &= ~MASK_ALIEN_MOVEMENT;
|
this->pev->iuser4 &= ~MASK_ALIEN_MOVEMENT;
|
||||||
this->mIsScreaming = false;
|
this->mIsScreaming = false;
|
||||||
this->mAlienSightActive = false;
|
//this->mAlienSightActive = false;
|
||||||
this->mDesiredRoomType = 0;
|
this->mDesiredRoomType = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4593,7 +4593,7 @@ void AvHPlayer::Killed( entvars_t *pevAttacker, int iGib )
|
||||||
this->mTimeToBeUnensnared = -1;
|
this->mTimeToBeUnensnared = -1;
|
||||||
this->mLastTimeEnsnared = -1;
|
this->mLastTimeEnsnared = -1;
|
||||||
|
|
||||||
this->mAlienSightActive = false;
|
//this->mAlienSightActive = false;
|
||||||
this->mEvolution = MESSAGE_NULL;
|
this->mEvolution = MESSAGE_NULL;
|
||||||
this->SetUsedKilled(false);
|
this->SetUsedKilled(false);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue