Merge branch 'opfor' into opforfixed

This commit is contained in:
Andrey Akhmichin 2023-04-29 19:21:01 +05:00
commit 906fb522ff
No known key found for this signature in database
GPG Key ID: BE329F7886439BC8
9 changed files with 69 additions and 57 deletions

View File

@ -37,7 +37,7 @@ def build(bld):
defines = ['CLIENT_DLL'] defines = ['CLIENT_DLL']
includes = ['.', includes = ['.',
'../dlls', '../dlls',
'../dlls/gearbox' '../dlls/gearbox',
'../common', '../common',
'../engine', '../engine',
'../pm_shared', '../pm_shared',

View File

@ -1849,7 +1849,8 @@ void CHFGrunt :: HandleAnimEvent( MonsterEvent_t *pEvent )
{ {
case HGRUNT_ALLY_AE_DROP_GUN: case HGRUNT_ALLY_AE_DROP_GUN:
{ {
DropMyItems(FALSE); if (GetBodygroup(FG_GUN_GROUP) != FG_GUN_NONE)
DropMyItems(FALSE);
SetUse( NULL ); SetUse( NULL );
} }
break; break;
@ -1949,7 +1950,7 @@ void CHFGrunt :: HandleAnimEvent( MonsterEvent_t *pEvent )
SENTENCEG_PlayRndSz(ENT(pev), SentenceByNumber(FGRUNT_SENT_ALERT), FGRUNT_SENTENCE_VOLUME, ATTN_NORM, 0, m_voicePitch); SENTENCEG_PlayRndSz(ENT(pev), SentenceByNumber(FGRUNT_SENT_ALERT), FGRUNT_SENTENCE_VOLUME, ATTN_NORM, 0, m_voicePitch);
JustSpoke(); JustSpoke();
} }
break;
} }
default: default:
@ -3318,7 +3319,7 @@ void CTorch::HandleAnimEvent(MonsterEvent_t *pEvent)
KillGas (); KillGas ();
break; break;
case HGRUNT_ALLY_AE_DROP_GUN: case HGRUNT_ALLY_AE_DROP_GUN:
if ( FBitSet( pev->weapons, TORCH_EAGLE ) ) if ( FBitSet( pev->weapons, TORCH_EAGLE ) && pev->body != TORCH_GUN_NONE )
{ {
DropMyItems(FALSE); DropMyItems(FALSE);
} }
@ -3849,7 +3850,7 @@ void CMedic::HandleAnimEvent(MonsterEvent_t *pEvent)
break; break;
case HGRUNT_ALLY_AE_DROP_GUN: case HGRUNT_ALLY_AE_DROP_GUN:
if ( FBitSet( pev->weapons, MEDIC_EAGLE | MEDIC_HANDGUN ) ) if ( FBitSet( pev->weapons, MEDIC_EAGLE | MEDIC_HANDGUN ) && GetBodygroup(MEDIC_GUN_GROUP) != MEDIC_GUN_NONE )
{ {
DropMyItems(FALSE); DropMyItems(FALSE);
} }

View File

@ -155,26 +155,28 @@ void CMassn::HandleAnimEvent(MonsterEvent_t *pEvent)
Vector vecGunPos; Vector vecGunPos;
Vector vecGunAngles; Vector vecGunAngles;
GetAttachment(0, vecGunPos, vecGunAngles); if(GetBodygroup(GUN_GROUP) != GUN_NONE)
// switch to body group with no gun.
SetBodygroup(GUN_GROUP, GUN_NONE);
// now spawn a gun.
if (FBitSet(pev->weapons, MASSN_SNIPERRIFLE))
{ {
DropItem("weapon_sniperrifle", vecGunPos, vecGunAngles); GetAttachment(0, vecGunPos, vecGunAngles);
}
else
{
DropItem("weapon_9mmAR", vecGunPos, vecGunAngles);
}
if (FBitSet(pev->weapons, MASSN_GRENADELAUNCHER)) // switch to body group with no gun.
{ SetBodygroup(GUN_GROUP, GUN_NONE);
DropItem("ammo_ARgrenades", BodyTarget(pev->origin), vecGunAngles);
}
// now spawn a gun.
if (FBitSet(pev->weapons, MASSN_SNIPERRIFLE))
{
DropItem("weapon_sniperrifle", vecGunPos, vecGunAngles);
}
else
{
DropItem("weapon_9mmAR", vecGunPos, vecGunAngles);
}
if (FBitSet(pev->weapons, MASSN_GRENADELAUNCHER))
{
DropItem("ammo_ARgrenades", BodyTarget(pev->origin), vecGunAngles);
}
}
} }
break; break;

View File

@ -390,7 +390,7 @@ void CStrooper::HandleAnimEvent(MonsterEvent_t *pEvent)
SENTENCEG_PlayRndSz(ENT(pev), "ST_ALERT", STROOPER_SENTENCE_VOLUME, STROOPER_ATTN, 0, m_voicePitch); SENTENCEG_PlayRndSz(ENT(pev), "ST_ALERT", STROOPER_SENTENCE_VOLUME, STROOPER_ATTN, 0, m_voicePitch);
JustSpoke(); JustSpoke();
} }
break;
} }
default: default:

View File

@ -1010,16 +1010,19 @@ void CVoltigore::StartTask(Task_t *pTask)
} }
break; break;
case TASK_VOLTIGORE_GET_PATH_TO_ENEMY_CORPSE: case TASK_VOLTIGORE_GET_PATH_TO_ENEMY_CORPSE:
UTIL_MakeVectors( pev->angles );
if( BuildRoute( m_vecEnemyLKP - gpGlobals->v_forward * 50, bits_MF_TO_LOCATION, NULL ) )
{ {
TaskComplete(); UTIL_MakeVectors( pev->angles );
} if( BuildRoute( m_vecEnemyLKP - gpGlobals->v_forward * 50, bits_MF_TO_LOCATION, NULL ) )
else {
{ TaskComplete();
ALERT( at_aiconsole, "VoltigoreGetPathToEnemyCorpse failed!!\n" ); }
TaskFail(); else
{
ALERT( at_aiconsole, "VoltigoreGetPathToEnemyCorpse failed!!\n" );
TaskFail();
}
} }
break;
default: default:
CBaseMonster::StartTask(pTask); CBaseMonster::StartTask(pTask);
break; break;

View File

@ -212,7 +212,7 @@ void CHGrunt::GibMonster( void )
Vector vecGunPos; Vector vecGunPos;
Vector vecGunAngles; Vector vecGunAngles;
if( GetBodygroup( 2 ) != 2 ) if( GetBodygroup( GUN_GROUP ) != GUN_NONE )
{ {
// throw a gun if the grunt has one // throw a gun if the grunt has one
GetAttachment( 0, vecGunPos, vecGunAngles ); GetAttachment( 0, vecGunPos, vecGunAngles );
@ -543,7 +543,7 @@ void CHGrunt::TraceAttack( entvars_t *pevAttacker, float flDamage, Vector vecDir
if( ptr->iHitgroup == 11 ) if( ptr->iHitgroup == 11 )
{ {
// make sure we're wearing one // make sure we're wearing one
if( GetBodygroup( 1 ) == HEAD_GRUNT && ( bitsDamageType & (DMG_BULLET | DMG_SLASH | DMG_BLAST | DMG_CLUB ) ) ) if( GetBodygroup( HEAD_GROUP ) == HEAD_GRUNT && ( bitsDamageType & (DMG_BULLET | DMG_SLASH | DMG_BLAST | DMG_CLUB ) ) )
{ {
// absorb damage // absorb damage
flDamage -= 20; flDamage -= 20;
@ -788,27 +788,30 @@ void CHGrunt::HandleAnimEvent( MonsterEvent_t *pEvent )
{ {
case HGRUNT_AE_DROP_GUN: case HGRUNT_AE_DROP_GUN:
{ {
Vector vecGunPos; if ( GetBodygroup( GUN_GROUP ) != GUN_NONE )
Vector vecGunAngles;
GetAttachment( 0, vecGunPos, vecGunAngles );
// switch to body group with no gun.
SetBodygroup( GUN_GROUP, GUN_NONE );
// now spawn a gun.
if( FBitSet( pev->weapons, HGRUNT_SHOTGUN ) )
{ {
DropItem( "weapon_shotgun", vecGunPos, vecGunAngles ); Vector vecGunPos;
} Vector vecGunAngles;
else
{
DropItem( "weapon_9mmAR", vecGunPos, vecGunAngles );
}
if( FBitSet( pev->weapons, HGRUNT_GRENADELAUNCHER ) ) GetAttachment( 0, vecGunPos, vecGunAngles );
{
DropItem( "ammo_ARgrenades", BodyTarget( pev->origin ), vecGunAngles ); // switch to body group with no gun.
SetBodygroup( GUN_GROUP, GUN_NONE );
// now spawn a gun.
if( FBitSet( pev->weapons, HGRUNT_SHOTGUN ) )
{
DropItem( "weapon_shotgun", vecGunPos, vecGunAngles );
}
else
{
DropItem( "weapon_9mmAR", vecGunPos, vecGunAngles );
}
if( FBitSet( pev->weapons, HGRUNT_GRENADELAUNCHER ) )
{
DropItem( "ammo_ARgrenades", BodyTarget( pev->origin ), vecGunAngles );
}
} }
} }
break; break;

View File

@ -2330,7 +2330,7 @@ void CSpriteTrain::Activate( void )
if( FStringNull( pev->targetname ) ) if( FStringNull( pev->targetname ) )
{ {
m_nexting = TRUE; m_nexting = TRUE;
m_nextTime = pev->ltime + 0.1; pev->nextthink = pev->ltime + 0.1;
} }
else else
pev->spawnflags |= SF_TRAIN_WAIT_RETRIGGER; pev->spawnflags |= SF_TRAIN_WAIT_RETRIGGER;
@ -2441,12 +2441,12 @@ void CSpriteTrain::Wait()
STOP_SOUND( edict(), CHAN_STATIC, STRING( pev->noiseMovement ) ); STOP_SOUND( edict(), CHAN_STATIC, STRING( pev->noiseMovement ) );
if( pev->noiseStopMoving ) if( pev->noiseStopMoving )
EMIT_SOUND( ENT( pev ), CHAN_VOICE, STRING( pev->noiseStopMoving ), m_volume, ATTN_NORM ); EMIT_SOUND( ENT( pev ), CHAN_VOICE, STRING( pev->noiseStopMoving ), m_volume, ATTN_NORM );
pev->nextthink = 0;
return; return;
} }
if( m_flWait != 0 ) if( m_flWait != 0 )
{ {
pev->nextthink = pev->ltime + m_flWait;
if( pev->noiseMovement ) if( pev->noiseMovement )
STOP_SOUND( edict(), CHAN_STATIC, STRING( pev->noiseMovement ) ); STOP_SOUND( edict(), CHAN_STATIC, STRING( pev->noiseMovement ) );
if( pev->noiseStopMoving ) if( pev->noiseStopMoving )
@ -2474,7 +2474,6 @@ void CSpriteTrain::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE
// Pop back to last target if it's available // Pop back to last target if it's available
if( pev->enemy ) if( pev->enemy )
pev->target = pev->enemy->v.targetname; pev->target = pev->enemy->v.targetname;
pev->nextthink = 0;
pev->velocity = g_vecZero; pev->velocity = g_vecZero;
if( pev->noiseStopMoving ) if( pev->noiseStopMoving )
EMIT_SOUND( ENT( pev ), CHAN_VOICE, STRING( pev->noiseStopMoving ), m_volume, ATTN_NORM ); EMIT_SOUND( ENT( pev ), CHAN_VOICE, STRING( pev->noiseStopMoving ), m_volume, ATTN_NORM );

View File

@ -20,7 +20,7 @@ def configure(conf):
conf.fatal("Could not find hl.def") conf.fatal("Could not find hl.def")
def build(bld): def build(bld):
excluded_files = ['mpstubb.cpp', 'stats.cpp', 'prop.cpp', 'Wxdebug.cpp', 'gearbox/gearbox_client.cpp'] excluded_files = ['mpstubb.cpp', 'stats.cpp', 'Wxdebug.cpp', 'gearbox/gearbox_client.cpp']
source = bld.path.ant_glob('**/*.cpp', excl=excluded_files) source = bld.path.ant_glob('**/*.cpp', excl=excluded_files)
source += bld.path.parent.ant_glob('pm_shared/*.c') source += bld.path.parent.ant_glob('pm_shared/*.c')

View File

@ -10,6 +10,7 @@ import re
VERSION = '2.4' VERSION = '2.4'
APPNAME = 'hlsdk-portable' APPNAME = 'hlsdk-portable'
top = '.' top = '.'
default_prefix = '/'
Context.Context.line_just = 60 # should fit for everything on 80x26 Context.Context.line_just = 60 # should fit for everything on 80x26
@ -238,6 +239,9 @@ def configure(conf):
conf.add_subproject('cl_dll') conf.add_subproject('cl_dll')
def build(bld): def build(bld):
if bld.is_install and not bld.options.destdir:
bld.fatal('Set the install destination directory using --destdir option')
# don't clean QtCreator files and reconfigure saved options # don't clean QtCreator files and reconfigure saved options
bld.clean_files = bld.bldnode.ant_glob('**', bld.clean_files = bld.bldnode.ant_glob('**',
excl='*.user configuration.py .lock* *conf_check_*/** config.log %s/*' % Build.CACHE_DIR, excl='*.user configuration.py .lock* *conf_check_*/** config.log %s/*' % Build.CACHE_DIR,