Fixed a bug where the round wouldn't end if all CTs died

This commit is contained in:
Marco Hladik 2016-12-06 01:25:05 +01:00
parent f986f42c76
commit d8577accf0
5 changed files with 43 additions and 16 deletions

View file

@ -35,6 +35,21 @@ void Entities_UseTargets( void ) {
} }
} }
void Entities_UseTargets_Delay( float fDelay ) {
static void Entities_UseTargets_Delay_Think( void ) {
entity eOld = self;
self = self.owner;
Entities_UseTargets();
remove( eOld );
}
entity eTimer = spawn();
eTimer.owner = self;
eTimer.think = Entities_UseTargets_Delay_Think;
eTimer.nextthink = time + fDelay;
}
/* /*
==================== ====================
Entities_Remove Entities_Remove

View file

@ -138,7 +138,6 @@ void FuncButton_Arrived( void ) {
return; return;
} }
Entities_UseTargets();
self.think = FuncButton_MoveBack; self.think = FuncButton_MoveBack;
self.nextthink = ( self.ltime + self.wait ); self.nextthink = ( self.ltime + self.wait );
} }
@ -188,7 +187,6 @@ void FuncButton_MoveAway( void ) {
self.state = STATE_UP; self.state = STATE_UP;
Entities_MoveToDestination ( self.pos2, self.speed, FuncButton_Arrived ); Entities_MoveToDestination ( self.pos2, self.speed, FuncButton_Arrived );
Entities_UseTargets();
} }
/* /*
@ -204,6 +202,12 @@ void FuncButton_Trigger( void ) {
sound( self, CHAN_VOICE, self.noise, 1.0, ATTN_NORM ); sound( self, CHAN_VOICE, self.noise, 1.0, ATTN_NORM );
FuncButton_MoveAway(); FuncButton_MoveAway();
if ( self.delay ) {
Entities_UseTargets_Delay( self.delay );
} else {
Entities_UseTargets();
}
} }
/* /*

View file

@ -88,17 +88,13 @@ void FuncDoor_Arrived( void ) {
sound( self, CHAN_VOICE, "common/null.wav", 1.0, ATTN_NORM ); sound( self, CHAN_VOICE, "common/null.wav", 1.0, ATTN_NORM );
} }
if ( !( self.spawnflags & SF_MOV_USE ) ) { if ( ( self.spawnflags & SF_MOV_USE ) ) {
self.touch = FuncDoor_Touch; self.touch = FuncDoor_Touch;
} }
if ( self.wait < 0 ) { if ( self.wait < 0 ) {
return; return;
} }
if ( self.target ) {
Entities_UseTargets();
}
if ( !( self.spawnflags & SF_MOV_TOGGLE ) ) { if ( !( self.spawnflags & SF_MOV_TOGGLE ) ) {
self.think = FuncDoor_MoveBack; self.think = FuncDoor_MoveBack;
self.nextthink = ( self.ltime + self.wait ); self.nextthink = ( self.ltime + self.wait );
@ -111,14 +107,10 @@ FuncDoor_Returned
==================== ====================
*/ */
void FuncDoor_Returned( void ) { void FuncDoor_Returned( void ) {
if ( !( self.spawnflags & SF_MOV_USE ) ) { if ( ( self.spawnflags & SF_MOV_USE ) ) {
self.touch = FuncDoor_Touch; self.touch = FuncDoor_Touch;
} }
if ( self.target ) {
Entities_UseTargets();
}
self.state = STATE_LOWERED; self.state = STATE_LOWERED;
} }
@ -135,7 +127,7 @@ void FuncDoor_MoveBack( void ) {
sound( self, CHAN_VOICE, "common/null.wav", 1.0, ATTN_NORM ); sound( self, CHAN_VOICE, "common/null.wav", 1.0, ATTN_NORM );
} }
if ( !( self.spawnflags & SF_MOV_USE ) ) { if ( ( self.spawnflags & SF_MOV_USE ) ) {
self.touch = __NULL__; self.touch = __NULL__;
} }
@ -182,6 +174,12 @@ void FuncDoor_Trigger( void ) {
return; return;
} }
if ( self.delay ) {
Entities_UseTargets_Delay( self.delay );
} else {
Entities_UseTargets();
}
FuncDoor_MoveAway(); FuncDoor_MoveAway();
} }
@ -194,7 +192,7 @@ void FuncDoor_Touch( void ) {
if ( other.classname == "player" ) { if ( other.classname == "player" ) {
FuncDoor_Trigger(); FuncDoor_Trigger();
if ( !( self.spawnflags & SF_MOV_USE ) ) { if ( ( self.spawnflags & SF_MOV_USE ) ) {
self.touch = __NULL__; self.touch = __NULL__;
} }
} }
@ -240,6 +238,10 @@ void func_door( void ) {
self.blocked = FuncDoor_Blocked; self.blocked = FuncDoor_Blocked;
self.vUse = FuncDoor_Trigger; self.vUse = FuncDoor_Trigger;
if ( self.wait == -1 ) {
self.spawnflags = self.spawnflags | SF_MOV_TOGGLE;
}
if ( !self.speed ) { if ( !self.speed ) {
self.speed = 100; self.speed = 100;
} }
@ -248,7 +250,7 @@ void func_door( void ) {
self.dmg = 2; self.dmg = 2;
} }
if ( !( self.spawnflags & SF_MOV_USE ) ) { if ( ( self.spawnflags & SF_MOV_USE ) ) {
self.touch = FuncDoor_Touch; self.touch = FuncDoor_Touch;
} }

View file

@ -152,6 +152,12 @@ void FuncDoorRotate_Trigger( void ) {
} }
FuncDoorRotate_RotateAway(); FuncDoorRotate_RotateAway();
if ( self.delay ) {
Entities_UseTargets_Delay( self.delay );
} else {
Entities_UseTargets();
}
} }
/* /*

View file

@ -42,7 +42,7 @@ void Player_Death( void ) {
} else if ( self.team == TEAM_CT ) { } else if ( self.team == TEAM_CT ) {
iAlivePlayers_CT--; iAlivePlayers_CT--;
if ( iAlivePlayers_T == 0 ) { if ( iAlivePlayers_CT == 0 ) {
Rules_RoundOver( TEAM_T ); Rules_RoundOver( TEAM_T );
} }
} else if ( self.team == TEAM_VIP ) { } else if ( self.team == TEAM_VIP ) {