parent
55a1e89af5
commit
2b9b75ac97
43 changed files with 632 additions and 366 deletions
|
@ -9,6 +9,7 @@ AllowShortBlocksOnASingleLine: true
|
|||
AllowShortFunctionsOnASingleLine: All
|
||||
BasedOnStyle: LLVM
|
||||
BraceWrapping:
|
||||
AfterCaseLabel: true
|
||||
AfterClass: true
|
||||
AfterControlStatement: true
|
||||
AfterEnum: true
|
||||
|
|
|
@ -689,7 +689,8 @@ void CStudioModelRenderer::StudioFxTransform(cl_entity_t* ent, float transform[3
|
|||
transform[gEngfuncs.pfnRandomLong(0, 2)][3] += offset;
|
||||
}
|
||||
break;
|
||||
case kRenderFxExplode: {
|
||||
case kRenderFxExplode:
|
||||
{
|
||||
float scale;
|
||||
|
||||
scale = 1.0 + (m_clTime - ent->curstate.animtime) * 10.0;
|
||||
|
|
|
@ -742,7 +742,8 @@ void CHudSpectator::DirectorMessage(int iSize, void* pbuf)
|
|||
}
|
||||
break;
|
||||
|
||||
case DRC_CMD_MESSAGE: {
|
||||
case DRC_CMD_MESSAGE:
|
||||
{
|
||||
client_textmessage_t* msg = &m_HUDMessages[m_lastHudMessage];
|
||||
|
||||
msg->effect = READ_BYTE(); // effect
|
||||
|
|
|
@ -1082,7 +1082,8 @@ void CLabelHeader::calcAlignment(int iwide, int itall, int& x, int& y)
|
|||
// left
|
||||
case Label::a_northwest:
|
||||
case Label::a_west:
|
||||
case Label::a_southwest: {
|
||||
case Label::a_southwest:
|
||||
{
|
||||
x = 0;
|
||||
break;
|
||||
}
|
||||
|
@ -1090,7 +1091,8 @@ void CLabelHeader::calcAlignment(int iwide, int itall, int& x, int& y)
|
|||
// center
|
||||
case Label::a_north:
|
||||
case Label::a_center:
|
||||
case Label::a_south: {
|
||||
case Label::a_south:
|
||||
{
|
||||
x = (wide - iwide) / 2;
|
||||
break;
|
||||
}
|
||||
|
@ -1098,7 +1100,8 @@ void CLabelHeader::calcAlignment(int iwide, int itall, int& x, int& y)
|
|||
// right
|
||||
case Label::a_northeast:
|
||||
case Label::a_east:
|
||||
case Label::a_southeast: {
|
||||
case Label::a_southeast:
|
||||
{
|
||||
x = wide - iwide;
|
||||
break;
|
||||
}
|
||||
|
@ -1110,7 +1113,8 @@ void CLabelHeader::calcAlignment(int iwide, int itall, int& x, int& y)
|
|||
// top
|
||||
case Label::a_northwest:
|
||||
case Label::a_north:
|
||||
case Label::a_northeast: {
|
||||
case Label::a_northeast:
|
||||
{
|
||||
y = 0;
|
||||
break;
|
||||
}
|
||||
|
@ -1118,7 +1122,8 @@ void CLabelHeader::calcAlignment(int iwide, int itall, int& x, int& y)
|
|||
// center
|
||||
case Label::a_west:
|
||||
case Label::a_center:
|
||||
case Label::a_east: {
|
||||
case Label::a_east:
|
||||
{
|
||||
y = (tall - itall) / 2;
|
||||
break;
|
||||
}
|
||||
|
@ -1126,7 +1131,8 @@ void CLabelHeader::calcAlignment(int iwide, int itall, int& x, int& y)
|
|||
// south
|
||||
case Label::a_southwest:
|
||||
case Label::a_south:
|
||||
case Label::a_southeast: {
|
||||
case Label::a_southeast:
|
||||
{
|
||||
y = tall - itall;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -27,11 +27,11 @@
|
|||
#endif
|
||||
|
||||
// Silence certain warnings
|
||||
#pragma warning(disable : 4244) // int or float down-conversion
|
||||
#pragma warning(disable : 4305) // int or float data truncation
|
||||
#pragma warning(disable : 4201) // nameless struct/union
|
||||
#pragma warning(disable : 4514) // unreferenced inline function removed
|
||||
#pragma warning(disable : 4100) // unreferenced formal parameter
|
||||
#pragma warning(disable : 4244) // int or float down-conversion
|
||||
#pragma warning(disable : 4305) // int or float data truncation
|
||||
#pragma warning(disable : 4201) // nameless struct/union
|
||||
#pragma warning(disable : 4514) // unreferenced inline function removed
|
||||
#pragma warning(disable : 4100) // unreferenced formal parameter
|
||||
#pragma warning(disable : 26495) // Variable is uninitialized
|
||||
#pragma warning(disable : 26451) // Arithmetic overflow
|
||||
#pragma warning(disable : 26812) // The enum type is unscoped
|
||||
|
|
|
@ -423,7 +423,8 @@ void CAGrunt::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
case AGRUNT_AE_HORNET2:
|
||||
case AGRUNT_AE_HORNET3:
|
||||
case AGRUNT_AE_HORNET4:
|
||||
case AGRUNT_AE_HORNET5: {
|
||||
case AGRUNT_AE_HORNET5:
|
||||
{
|
||||
// m_vecEnemyLKP should be center of enemy body
|
||||
Vector vecArmPos, vecArmDir;
|
||||
Vector vecDirToEnemy;
|
||||
|
@ -517,7 +518,8 @@ void CAGrunt::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case AGRUNT_AE_LEFT_PUNCH: {
|
||||
case AGRUNT_AE_LEFT_PUNCH:
|
||||
{
|
||||
CBaseEntity* pHurt = CheckTraceHullAttack(AGRUNT_MELEE_DIST, gSkillData.agruntDmgPunch, DMG_CLUB);
|
||||
|
||||
if (pHurt)
|
||||
|
@ -546,7 +548,8 @@ void CAGrunt::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case AGRUNT_AE_RIGHT_PUNCH: {
|
||||
case AGRUNT_AE_RIGHT_PUNCH:
|
||||
{
|
||||
CBaseEntity* pHurt = CheckTraceHullAttack(AGRUNT_MELEE_DIST, gSkillData.agruntDmgPunch, DMG_CLUB);
|
||||
|
||||
if (pHurt)
|
||||
|
@ -956,7 +959,8 @@ void CAGrunt::StartTask(Task_t* pTask)
|
|||
{
|
||||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_AGRUNT_GET_PATH_TO_ENEMY_CORPSE: {
|
||||
case TASK_AGRUNT_GET_PATH_TO_ENEMY_CORPSE:
|
||||
{
|
||||
UTIL_MakeVectors(pev->angles);
|
||||
if (BuildRoute(m_vecEnemyLKP - gpGlobals->v_forward * 50, bits_MF_TO_LOCATION, NULL))
|
||||
{
|
||||
|
@ -1072,7 +1076,8 @@ Schedule_t* CAGrunt::GetSchedule()
|
|||
|
||||
switch (m_MonsterState)
|
||||
{
|
||||
case MONSTERSTATE_COMBAT: {
|
||||
case MONSTERSTATE_COMBAT:
|
||||
{
|
||||
// dead enemy
|
||||
if (HasConditions(bits_COND_ENEMY_DEAD))
|
||||
{
|
||||
|
|
|
@ -79,7 +79,7 @@ int CBaseAnimating::LookupActivity(int activity)
|
|||
ASSERT(activity != 0);
|
||||
void* pmodel = GET_MODEL_PTR(ENT(pev));
|
||||
|
||||
return::LookupActivity(pmodel, pev, activity);
|
||||
return ::LookupActivity(pmodel, pev, activity);
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
|
@ -92,7 +92,7 @@ int CBaseAnimating::LookupActivityHeaviest(int activity)
|
|||
{
|
||||
void* pmodel = GET_MODEL_PTR(ENT(pev));
|
||||
|
||||
return::LookupActivityHeaviest(pmodel, pev, activity);
|
||||
return ::LookupActivityHeaviest(pmodel, pev, activity);
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
|
@ -101,7 +101,7 @@ int CBaseAnimating::LookupSequence(const char* label)
|
|||
{
|
||||
void* pmodel = GET_MODEL_PTR(ENT(pev));
|
||||
|
||||
return::LookupSequence(pmodel, label);
|
||||
return ::LookupSequence(pmodel, label);
|
||||
}
|
||||
|
||||
|
||||
|
@ -127,7 +127,7 @@ int CBaseAnimating::GetSequenceFlags()
|
|||
{
|
||||
void* pmodel = GET_MODEL_PTR(ENT(pev));
|
||||
|
||||
return::GetSequenceFlags(pmodel, pev);
|
||||
return ::GetSequenceFlags(pmodel, pev);
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
|
@ -193,7 +193,7 @@ float CBaseAnimating::SetBlending(int iBlender, float flValue)
|
|||
{
|
||||
void* pmodel = GET_MODEL_PTR(ENT(pev));
|
||||
|
||||
return::SetBlending(pmodel, pev, iBlender, flValue);
|
||||
return ::SetBlending(pmodel, pev, iBlender, flValue);
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
|
@ -219,14 +219,14 @@ int CBaseAnimating::FindTransition(int iEndingSequence, int iGoalSequence, int*
|
|||
if (piDir == NULL)
|
||||
{
|
||||
int iDir;
|
||||
int sequence =::FindTransition(pmodel, iEndingSequence, iGoalSequence, &iDir);
|
||||
int sequence = ::FindTransition(pmodel, iEndingSequence, iGoalSequence, &iDir);
|
||||
if (iDir != 1)
|
||||
return -1;
|
||||
else
|
||||
return sequence;
|
||||
}
|
||||
|
||||
return::FindTransition(pmodel, iEndingSequence, iGoalSequence, piDir);
|
||||
return ::FindTransition(pmodel, iEndingSequence, iGoalSequence, piDir);
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
|
@ -242,13 +242,13 @@ void CBaseAnimating::SetBodygroup(int iGroup, int iValue)
|
|||
|
||||
int CBaseAnimating::GetBodygroup(int iGroup)
|
||||
{
|
||||
return::GetBodygroup(GET_MODEL_PTR(ENT(pev)), pev, iGroup);
|
||||
return ::GetBodygroup(GET_MODEL_PTR(ENT(pev)), pev, iGroup);
|
||||
}
|
||||
|
||||
|
||||
bool CBaseAnimating::ExtractBbox(int sequence, float* mins, float* maxs)
|
||||
{
|
||||
return::ExtractBbox(GET_MODEL_PTR(ENT(pev)), sequence, mins, maxs);
|
||||
return ::ExtractBbox(GET_MODEL_PTR(ENT(pev)), sequence, mins, maxs);
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
|
|
|
@ -701,7 +701,8 @@ Schedule_t* CBarney::GetSchedule()
|
|||
|
||||
switch (m_MonsterState)
|
||||
{
|
||||
case MONSTERSTATE_COMBAT: {
|
||||
case MONSTERSTATE_COMBAT:
|
||||
{
|
||||
// dead enemy
|
||||
if (HasConditions(bits_COND_ENEMY_DEAD))
|
||||
{
|
||||
|
|
|
@ -439,7 +439,8 @@ void CBigMomma::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
{
|
||||
case BIG_AE_MELEE_ATTACKBR:
|
||||
case BIG_AE_MELEE_ATTACKBL:
|
||||
case BIG_AE_MELEE_ATTACK1: {
|
||||
case BIG_AE_MELEE_ATTACK1:
|
||||
{
|
||||
Vector forward, right;
|
||||
|
||||
UTIL_MakeVectorsPrivate(pev->angles, forward, right, NULL);
|
||||
|
@ -538,7 +539,8 @@ void CBigMomma::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
pev->velocity = (gpGlobals->v_forward * 200) + gpGlobals->v_up * 500;
|
||||
break;
|
||||
|
||||
case BIG_AE_EARLY_TARGET: {
|
||||
case BIG_AE_EARLY_TARGET:
|
||||
{
|
||||
CBaseEntity* pTarget = m_hTargetEnt;
|
||||
if (pTarget && !FStringNull(pTarget->pev->message))
|
||||
FireTargets(STRING(pTarget->pev->message), this, this, USE_TOGGLE, 0);
|
||||
|
@ -914,7 +916,8 @@ void CBigMomma::StartTask(Task_t* pTask)
|
|||
{
|
||||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_FIND_NODE: {
|
||||
case TASK_FIND_NODE:
|
||||
{
|
||||
CBaseEntity* pTarget = m_hTargetEnt;
|
||||
if (!HasMemory(bits_MEMORY_ADVANCE_NODE))
|
||||
{
|
||||
|
@ -940,7 +943,8 @@ void CBigMomma::StartTask(Task_t* pTask)
|
|||
break;
|
||||
|
||||
case TASK_PLAY_NODE_PRESEQUENCE:
|
||||
case TASK_PLAY_NODE_SEQUENCE: {
|
||||
case TASK_PLAY_NODE_SEQUENCE:
|
||||
{
|
||||
int sequence;
|
||||
if (pTask->iTask == TASK_PLAY_NODE_SEQUENCE)
|
||||
sequence = GetNodeSequence();
|
||||
|
@ -978,7 +982,8 @@ void CBigMomma::StartTask(Task_t* pTask)
|
|||
break;
|
||||
|
||||
|
||||
case TASK_MOVE_TO_NODE_RANGE: {
|
||||
case TASK_MOVE_TO_NODE_RANGE:
|
||||
{
|
||||
CBaseEntity* pTarget = m_hTargetEnt;
|
||||
if (!pTarget)
|
||||
TaskFail();
|
||||
|
@ -1023,7 +1028,8 @@ void CBigMomma::RunTask(Task_t* pTask)
|
|||
{
|
||||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_MOVE_TO_NODE_RANGE: {
|
||||
case TASK_MOVE_TO_NODE_RANGE:
|
||||
{
|
||||
float distance;
|
||||
|
||||
if (m_hTargetEnt == NULL)
|
||||
|
|
|
@ -170,7 +170,8 @@ void CBloater::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
{
|
||||
switch (pEvent->event)
|
||||
{
|
||||
case BLOATER_AE_ATTACK_MELEE1: {
|
||||
case BLOATER_AE_ATTACK_MELEE1:
|
||||
{
|
||||
// do stuff for this event.
|
||||
AttackSnd();
|
||||
}
|
||||
|
|
|
@ -536,7 +536,8 @@ void CBullsquid::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
{
|
||||
switch (pEvent->event)
|
||||
{
|
||||
case BSQUID_AE_SPIT: {
|
||||
case BSQUID_AE_SPIT:
|
||||
{
|
||||
if (m_hEnemy)
|
||||
{
|
||||
Vector vecSpitOffset;
|
||||
|
@ -578,7 +579,8 @@ void CBullsquid::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case BSQUID_AE_BITE: {
|
||||
case BSQUID_AE_BITE:
|
||||
{
|
||||
// SOUND HERE!
|
||||
CBaseEntity* pHurt = CheckTraceHullAttack(70, gSkillData.bullsquidDmgBite, DMG_SLASH);
|
||||
|
||||
|
@ -592,7 +594,8 @@ void CBullsquid::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case BSQUID_AE_TAILWHIP: {
|
||||
case BSQUID_AE_TAILWHIP:
|
||||
{
|
||||
CBaseEntity* pHurt = CheckTraceHullAttack(70, gSkillData.bullsquidDmgWhip, DMG_CLUB | DMG_ALWAYSGIB);
|
||||
if (pHurt)
|
||||
{
|
||||
|
@ -604,13 +607,15 @@ void CBullsquid::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case BSQUID_AE_BLINK: {
|
||||
case BSQUID_AE_BLINK:
|
||||
{
|
||||
// close eye.
|
||||
pev->skin = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case BSQUID_AE_HOP: {
|
||||
case BSQUID_AE_HOP:
|
||||
{
|
||||
float flGravity = g_psv_gravity->value;
|
||||
|
||||
// throw the squid up into the air on this frame.
|
||||
|
@ -625,7 +630,8 @@ void CBullsquid::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case BSQUID_AE_THROW: {
|
||||
case BSQUID_AE_THROW:
|
||||
{
|
||||
int iPitch;
|
||||
|
||||
// squid throws its prey IF the prey is a client.
|
||||
|
@ -1005,7 +1011,8 @@ Schedule_t* CBullsquid::GetSchedule()
|
|||
{
|
||||
switch (m_MonsterState)
|
||||
{
|
||||
case MONSTERSTATE_ALERT: {
|
||||
case MONSTERSTATE_ALERT:
|
||||
{
|
||||
if (HasConditions(bits_COND_LIGHT_DAMAGE | bits_COND_HEAVY_DAMAGE))
|
||||
{
|
||||
return GetScheduleOfType(SCHED_SQUID_HURTHOP);
|
||||
|
@ -1039,7 +1046,8 @@ Schedule_t* CBullsquid::GetSchedule()
|
|||
|
||||
break;
|
||||
}
|
||||
case MONSTERSTATE_COMBAT: {
|
||||
case MONSTERSTATE_COMBAT:
|
||||
{
|
||||
// dead enemy
|
||||
if (HasConditions(bits_COND_ENEMY_DEAD))
|
||||
{
|
||||
|
@ -1147,7 +1155,8 @@ void CBullsquid::StartTask(Task_t* pTask)
|
|||
|
||||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_MELEE_ATTACK2: {
|
||||
case TASK_MELEE_ATTACK2:
|
||||
{
|
||||
switch (RANDOM_LONG(0, 2))
|
||||
{
|
||||
case 0:
|
||||
|
@ -1164,12 +1173,14 @@ void CBullsquid::StartTask(Task_t* pTask)
|
|||
CBaseMonster::StartTask(pTask);
|
||||
break;
|
||||
}
|
||||
case TASK_SQUID_HOPTURN: {
|
||||
case TASK_SQUID_HOPTURN:
|
||||
{
|
||||
SetActivity(ACT_HOP);
|
||||
MakeIdealYaw(m_vecEnemyLKP);
|
||||
break;
|
||||
}
|
||||
case TASK_GET_PATH_TO_ENEMY: {
|
||||
case TASK_GET_PATH_TO_ENEMY:
|
||||
{
|
||||
if (BuildRoute(m_hEnemy->pev->origin, bits_MF_TO_ENEMY, m_hEnemy))
|
||||
{
|
||||
m_iTaskStatus = TASKSTATUS_COMPLETE;
|
||||
|
@ -1181,7 +1192,8 @@ void CBullsquid::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
CBaseMonster::StartTask(pTask);
|
||||
break;
|
||||
}
|
||||
|
@ -1195,7 +1207,8 @@ void CBullsquid::RunTask(Task_t* pTask)
|
|||
{
|
||||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_SQUID_HOPTURN: {
|
||||
case TASK_SQUID_HOPTURN:
|
||||
{
|
||||
MakeIdealYaw(m_vecEnemyLKP);
|
||||
ChangeYaw(pev->yaw_speed);
|
||||
|
||||
|
@ -1205,7 +1218,8 @@ void CBullsquid::RunTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
CBaseMonster::RunTask(pTask);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -266,7 +266,8 @@ void CController::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
{
|
||||
switch (pEvent->event)
|
||||
{
|
||||
case CONTROLLER_AE_HEAD_OPEN: {
|
||||
case CONTROLLER_AE_HEAD_OPEN:
|
||||
{
|
||||
Vector vecStart, angleGun;
|
||||
|
||||
GetAttachment(0, vecStart, angleGun);
|
||||
|
@ -292,7 +293,8 @@ void CController::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case CONTROLLER_AE_BALL_SHOOT: {
|
||||
case CONTROLLER_AE_BALL_SHOOT:
|
||||
{
|
||||
Vector vecStart, angleGun;
|
||||
|
||||
GetAttachment(0, vecStart, angleGun);
|
||||
|
@ -321,20 +323,23 @@ void CController::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case CONTROLLER_AE_SMALL_SHOOT: {
|
||||
case CONTROLLER_AE_SMALL_SHOOT:
|
||||
{
|
||||
AttackSound();
|
||||
m_flShootTime = gpGlobals->time;
|
||||
m_flShootEnd = m_flShootTime + atoi(pEvent->options) / 15.0;
|
||||
}
|
||||
break;
|
||||
case CONTROLLER_AE_POWERUP_FULL: {
|
||||
case CONTROLLER_AE_POWERUP_FULL:
|
||||
{
|
||||
m_iBall[0] = 255;
|
||||
m_iBallTime[0] = gpGlobals->time + atoi(pEvent->options) / 15.0;
|
||||
m_iBall[1] = 255;
|
||||
m_iBallTime[1] = gpGlobals->time + atoi(pEvent->options) / 15.0;
|
||||
}
|
||||
break;
|
||||
case CONTROLLER_AE_POWERUP_HALF: {
|
||||
case CONTROLLER_AE_POWERUP_HALF:
|
||||
{
|
||||
m_iBall[0] = 192;
|
||||
m_iBallTime[0] = gpGlobals->time + atoi(pEvent->options) / 15.0;
|
||||
m_iBall[1] = 192;
|
||||
|
@ -489,7 +494,8 @@ void CController::StartTask(Task_t* pTask)
|
|||
case TASK_RANGE_ATTACK1:
|
||||
CSquadMonster::StartTask(pTask);
|
||||
break;
|
||||
case TASK_GET_PATH_TO_ENEMY_LKP: {
|
||||
case TASK_GET_PATH_TO_ENEMY_LKP:
|
||||
{
|
||||
if (BuildNearestRoute(m_vecEnemyLKP, pev->view_ofs, pTask->flData, (m_vecEnemyLKP - pev->origin).Length() + 1024))
|
||||
{
|
||||
TaskComplete();
|
||||
|
@ -502,7 +508,8 @@ void CController::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_GET_PATH_TO_ENEMY: {
|
||||
case TASK_GET_PATH_TO_ENEMY:
|
||||
{
|
||||
CBaseEntity* pEnemy = m_hEnemy;
|
||||
|
||||
if (pEnemy == NULL)
|
||||
|
@ -719,7 +726,8 @@ Schedule_t* CController::GetSchedule()
|
|||
case MONSTERSTATE_ALERT:
|
||||
break;
|
||||
|
||||
case MONSTERSTATE_COMBAT: {
|
||||
case MONSTERSTATE_COMBAT:
|
||||
{
|
||||
Vector vecTmp = Intersect(Vector(0, 0, 0), Vector(100, 4, 7), Vector(2, 10, -3), 20.0);
|
||||
|
||||
// dead enemy
|
||||
|
|
|
@ -974,7 +974,8 @@ Schedule_t* CBaseMonster::GetScheduleOfType(int Type)
|
|||
switch (Type)
|
||||
{
|
||||
// This is the schedule for scripted sequences AND scripted AI
|
||||
case SCHED_AISCRIPT: {
|
||||
case SCHED_AISCRIPT:
|
||||
{
|
||||
ASSERT(m_pCine != NULL);
|
||||
if (!m_pCine)
|
||||
{
|
||||
|
@ -999,7 +1000,8 @@ Schedule_t* CBaseMonster::GetScheduleOfType(int Type)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case SCHED_IDLE_STAND: {
|
||||
case SCHED_IDLE_STAND:
|
||||
{
|
||||
if (RANDOM_LONG(0, 14) == 0 && FCanActiveIdle())
|
||||
{
|
||||
return &slActiveIdle[0];
|
||||
|
@ -1007,100 +1009,132 @@ Schedule_t* CBaseMonster::GetScheduleOfType(int Type)
|
|||
|
||||
return &slIdleStand[0];
|
||||
}
|
||||
case SCHED_IDLE_WALK: {
|
||||
case SCHED_IDLE_WALK:
|
||||
{
|
||||
return &slIdleWalk[0];
|
||||
}
|
||||
case SCHED_WAIT_TRIGGER: {
|
||||
case SCHED_WAIT_TRIGGER:
|
||||
{
|
||||
return &slIdleTrigger[0];
|
||||
}
|
||||
case SCHED_WAKE_ANGRY: {
|
||||
case SCHED_WAKE_ANGRY:
|
||||
{
|
||||
return &slWakeAngry[0];
|
||||
}
|
||||
case SCHED_ALERT_FACE: {
|
||||
case SCHED_ALERT_FACE:
|
||||
{
|
||||
return &slAlertFace[0];
|
||||
}
|
||||
case SCHED_ALERT_STAND: {
|
||||
case SCHED_ALERT_STAND:
|
||||
{
|
||||
return &slAlertStand[0];
|
||||
}
|
||||
case SCHED_COMBAT_STAND: {
|
||||
case SCHED_COMBAT_STAND:
|
||||
{
|
||||
return &slCombatStand[0];
|
||||
}
|
||||
case SCHED_COMBAT_FACE: {
|
||||
case SCHED_COMBAT_FACE:
|
||||
{
|
||||
return &slCombatFace[0];
|
||||
}
|
||||
case SCHED_CHASE_ENEMY: {
|
||||
case SCHED_CHASE_ENEMY:
|
||||
{
|
||||
return &slChaseEnemy[0];
|
||||
}
|
||||
case SCHED_CHASE_ENEMY_FAILED: {
|
||||
case SCHED_CHASE_ENEMY_FAILED:
|
||||
{
|
||||
return &slFail[0];
|
||||
}
|
||||
case SCHED_SMALL_FLINCH: {
|
||||
case SCHED_SMALL_FLINCH:
|
||||
{
|
||||
return &slSmallFlinch[0];
|
||||
}
|
||||
case SCHED_ALERT_SMALL_FLINCH: {
|
||||
case SCHED_ALERT_SMALL_FLINCH:
|
||||
{
|
||||
return &slAlertSmallFlinch[0];
|
||||
}
|
||||
case SCHED_RELOAD: {
|
||||
case SCHED_RELOAD:
|
||||
{
|
||||
return &slReload[0];
|
||||
}
|
||||
case SCHED_ARM_WEAPON: {
|
||||
case SCHED_ARM_WEAPON:
|
||||
{
|
||||
return &slArmWeapon[0];
|
||||
}
|
||||
case SCHED_STANDOFF: {
|
||||
case SCHED_STANDOFF:
|
||||
{
|
||||
return &slStandoff[0];
|
||||
}
|
||||
case SCHED_RANGE_ATTACK1: {
|
||||
case SCHED_RANGE_ATTACK1:
|
||||
{
|
||||
return &slRangeAttack1[0];
|
||||
}
|
||||
case SCHED_RANGE_ATTACK2: {
|
||||
case SCHED_RANGE_ATTACK2:
|
||||
{
|
||||
return &slRangeAttack2[0];
|
||||
}
|
||||
case SCHED_MELEE_ATTACK1: {
|
||||
case SCHED_MELEE_ATTACK1:
|
||||
{
|
||||
return &slPrimaryMeleeAttack[0];
|
||||
}
|
||||
case SCHED_MELEE_ATTACK2: {
|
||||
case SCHED_MELEE_ATTACK2:
|
||||
{
|
||||
return &slSecondaryMeleeAttack[0];
|
||||
}
|
||||
case SCHED_SPECIAL_ATTACK1: {
|
||||
case SCHED_SPECIAL_ATTACK1:
|
||||
{
|
||||
return &slSpecialAttack1[0];
|
||||
}
|
||||
case SCHED_SPECIAL_ATTACK2: {
|
||||
case SCHED_SPECIAL_ATTACK2:
|
||||
{
|
||||
return &slSpecialAttack2[0];
|
||||
}
|
||||
case SCHED_TAKE_COVER_FROM_BEST_SOUND: {
|
||||
case SCHED_TAKE_COVER_FROM_BEST_SOUND:
|
||||
{
|
||||
return &slTakeCoverFromBestSound[0];
|
||||
}
|
||||
case SCHED_TAKE_COVER_FROM_ENEMY: {
|
||||
case SCHED_TAKE_COVER_FROM_ENEMY:
|
||||
{
|
||||
return &slTakeCoverFromEnemy[0];
|
||||
}
|
||||
case SCHED_COWER: {
|
||||
case SCHED_COWER:
|
||||
{
|
||||
return &slCower[0];
|
||||
}
|
||||
case SCHED_AMBUSH: {
|
||||
case SCHED_AMBUSH:
|
||||
{
|
||||
return &slAmbush[0];
|
||||
}
|
||||
case SCHED_BARNACLE_VICTIM_GRAB: {
|
||||
case SCHED_BARNACLE_VICTIM_GRAB:
|
||||
{
|
||||
return &slBarnacleVictimGrab[0];
|
||||
}
|
||||
case SCHED_BARNACLE_VICTIM_CHOMP: {
|
||||
case SCHED_BARNACLE_VICTIM_CHOMP:
|
||||
{
|
||||
return &slBarnacleVictimChomp[0];
|
||||
}
|
||||
case SCHED_INVESTIGATE_SOUND: {
|
||||
case SCHED_INVESTIGATE_SOUND:
|
||||
{
|
||||
return &slInvestigateSound[0];
|
||||
}
|
||||
case SCHED_DIE: {
|
||||
case SCHED_DIE:
|
||||
{
|
||||
return &slDie[0];
|
||||
}
|
||||
case SCHED_TAKE_COVER_FROM_ORIGIN: {
|
||||
case SCHED_TAKE_COVER_FROM_ORIGIN:
|
||||
{
|
||||
return &slTakeCoverFromOrigin[0];
|
||||
}
|
||||
case SCHED_VICTORY_DANCE: {
|
||||
case SCHED_VICTORY_DANCE:
|
||||
{
|
||||
return &slVictoryDance[0];
|
||||
}
|
||||
case SCHED_FAIL: {
|
||||
case SCHED_FAIL:
|
||||
{
|
||||
return slFail;
|
||||
}
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
ALERT(at_console, "GetScheduleOfType()\nNo CASE for Schedule Type %d!\n", Type);
|
||||
|
||||
return &slIdleStand[0];
|
||||
|
|
|
@ -578,7 +578,7 @@ bool CBaseDoor::DoorActivate()
|
|||
{ // door should open
|
||||
|
||||
if (m_hActivator != NULL && m_hActivator->IsPlayer())
|
||||
{ // give health if player opened the door (medikit)
|
||||
{ // give health if player opened the door (medikit)
|
||||
// VARS( m_eoActivator )->health += m_bHealthValue;
|
||||
|
||||
m_hActivator->TakeHealth(m_bHealthValue, DMG_GENERIC);
|
||||
|
|
|
@ -169,7 +169,8 @@ void CEgon::Attack()
|
|||
|
||||
switch (m_fireState)
|
||||
{
|
||||
case FIRE_OFF: {
|
||||
case FIRE_OFF:
|
||||
{
|
||||
if (!HasAmmo())
|
||||
{
|
||||
m_flNextPrimaryAttack = m_flNextSecondaryAttack = UTIL_WeaponTimeBase() + 0.25;
|
||||
|
@ -192,7 +193,8 @@ void CEgon::Attack()
|
|||
}
|
||||
break;
|
||||
|
||||
case FIRE_CHARGE: {
|
||||
case FIRE_CHARGE:
|
||||
{
|
||||
Fire(vecSrc, vecAiming);
|
||||
m_pPlayer->m_iWeaponVolume = EGON_PRIMARY_VOLUME;
|
||||
|
||||
|
|
|
@ -507,7 +507,8 @@ void CBreakable::TraceAttack(entvars_t* pevAttacker, float flDamage, Vector vecD
|
|||
{
|
||||
switch (m_Material)
|
||||
{
|
||||
case matComputer: {
|
||||
case matComputer:
|
||||
{
|
||||
UTIL_Sparks(ptr->vecEndPos);
|
||||
|
||||
float flVolume = RANDOM_FLOAT(0.7, 1.0); //random volume range
|
||||
|
|
|
@ -994,7 +994,8 @@ void CGargantua::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
{
|
||||
switch (pEvent->event)
|
||||
{
|
||||
case GARG_AE_SLASH_LEFT: {
|
||||
case GARG_AE_SLASH_LEFT:
|
||||
{
|
||||
// HACKHACK!!!
|
||||
CBaseEntity* pHurt = GargantuaCheckTraceHullAttack(GARG_ATTACKDIST + 10.0, gSkillData.gargantuaDmgSlash, DMG_SLASH);
|
||||
if (pHurt)
|
||||
|
|
|
@ -245,7 +245,8 @@ void CHAssassin::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
case ASSASSIN_AE_SHOOT1:
|
||||
Shoot();
|
||||
break;
|
||||
case ASSASSIN_AE_TOSS1: {
|
||||
case ASSASSIN_AE_TOSS1:
|
||||
{
|
||||
UTIL_MakeVectors(pev->angles);
|
||||
CGrenade::ShootTimed(pev, pev->origin + gpGlobals->v_forward * 34 + Vector(0, 0, 32), m_vecTossVelocity, 2.0);
|
||||
|
||||
|
@ -254,7 +255,8 @@ void CHAssassin::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
// !!!LATER - when in a group, only try to throw grenade if ordered.
|
||||
}
|
||||
break;
|
||||
case ASSASSIN_AE_JUMP: {
|
||||
case ASSASSIN_AE_JUMP:
|
||||
{
|
||||
// ALERT( at_console, "jumping");
|
||||
UTIL_MakeAimVectors(pev->angles);
|
||||
pev->movetype = MOVETYPE_TOSS;
|
||||
|
@ -820,7 +822,8 @@ Schedule_t* CHAssassin::GetSchedule()
|
|||
switch (m_MonsterState)
|
||||
{
|
||||
case MONSTERSTATE_IDLE:
|
||||
case MONSTERSTATE_ALERT: {
|
||||
case MONSTERSTATE_ALERT:
|
||||
{
|
||||
if (HasConditions(bits_COND_HEAR_SOUND))
|
||||
{
|
||||
CSound* pSound;
|
||||
|
@ -839,7 +842,8 @@ Schedule_t* CHAssassin::GetSchedule()
|
|||
}
|
||||
break;
|
||||
|
||||
case MONSTERSTATE_COMBAT: {
|
||||
case MONSTERSTATE_COMBAT:
|
||||
{
|
||||
// dead enemy
|
||||
if (HasConditions(bits_COND_ENEMY_DEAD))
|
||||
{
|
||||
|
|
|
@ -210,7 +210,8 @@ void CHeadCrab::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
{
|
||||
switch (pEvent->event)
|
||||
{
|
||||
case HC_AE_JUMPATTACK: {
|
||||
case HC_AE_JUMPATTACK:
|
||||
{
|
||||
ClearBits(pev->flags, FL_ONGROUND);
|
||||
|
||||
UTIL_SetOrigin(pev, pev->origin + Vector(0, 0, 1)); // take him off ground so engine doesn't instantly reset onground
|
||||
|
@ -313,7 +314,8 @@ void CHeadCrab::RunTask(Task_t* pTask)
|
|||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_RANGE_ATTACK1:
|
||||
case TASK_RANGE_ATTACK2: {
|
||||
case TASK_RANGE_ATTACK2:
|
||||
{
|
||||
if (m_fSequenceFinished)
|
||||
{
|
||||
TaskComplete();
|
||||
|
@ -322,7 +324,8 @@ void CHeadCrab::RunTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
CBaseMonster::RunTask(pTask);
|
||||
}
|
||||
}
|
||||
|
@ -373,13 +376,15 @@ void CHeadCrab::StartTask(Task_t* pTask)
|
|||
|
||||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_RANGE_ATTACK1: {
|
||||
case TASK_RANGE_ATTACK1:
|
||||
{
|
||||
EMIT_SOUND_DYN(edict(), CHAN_WEAPON, pAttackSounds[0], GetSoundVolue(), ATTN_IDLE, 0, GetVoicePitch());
|
||||
m_IdealActivity = ACT_RANGE_ATTACK1;
|
||||
SetTouch(&CHeadCrab::LeapTouch);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
CBaseMonster::StartTask(pTask);
|
||||
}
|
||||
}
|
||||
|
@ -460,7 +465,8 @@ Schedule_t* CHeadCrab::GetScheduleOfType(int Type)
|
|||
{
|
||||
switch (Type)
|
||||
{
|
||||
case SCHED_RANGE_ATTACK1: {
|
||||
case SCHED_RANGE_ATTACK1:
|
||||
{
|
||||
return &slHCRangeAttack1[0];
|
||||
}
|
||||
break;
|
||||
|
@ -533,7 +539,8 @@ Schedule_t* CBabyCrab::GetScheduleOfType(int Type)
|
|||
return slHCRangeAttack1Fast;
|
||||
break;
|
||||
|
||||
case SCHED_RANGE_ATTACK1: {
|
||||
case SCHED_RANGE_ATTACK1:
|
||||
{
|
||||
return slHCRangeAttack1Fast;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -844,7 +844,8 @@ void CHGrunt::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
|
||||
switch (pEvent->event)
|
||||
{
|
||||
case HGRUNT_AE_DROP_GUN: {
|
||||
case HGRUNT_AE_DROP_GUN:
|
||||
{
|
||||
Vector vecGunPos;
|
||||
Vector vecGunAngles;
|
||||
|
||||
|
@ -875,7 +876,8 @@ void CHGrunt::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
ClearConditions(bits_COND_NO_AMMO_LOADED);
|
||||
break;
|
||||
|
||||
case HGRUNT_AE_GREN_TOSS: {
|
||||
case HGRUNT_AE_GREN_TOSS:
|
||||
{
|
||||
UTIL_MakeVectors(pev->angles);
|
||||
// CGrenade::ShootTimed( pev, pev->origin + gpGlobals->v_forward * 34 + Vector (0, 0, 32), m_vecTossVelocity, 3.5 );
|
||||
CGrenade::ShootTimed(pev, GetGunPosition(), m_vecTossVelocity, 3.5);
|
||||
|
@ -886,7 +888,8 @@ void CHGrunt::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case HGRUNT_AE_GREN_LAUNCH: {
|
||||
case HGRUNT_AE_GREN_LAUNCH:
|
||||
{
|
||||
EMIT_SOUND(ENT(pev), CHAN_WEAPON, "weapons/glauncher.wav", 0.8, ATTN_NORM);
|
||||
CGrenade::ShootContact(pev, GetGunPosition(), m_vecTossVelocity);
|
||||
m_fThrowGrenade = false;
|
||||
|
@ -897,13 +900,15 @@ void CHGrunt::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case HGRUNT_AE_GREN_DROP: {
|
||||
case HGRUNT_AE_GREN_DROP:
|
||||
{
|
||||
UTIL_MakeVectors(pev->angles);
|
||||
CGrenade::ShootTimed(pev, pev->origin + gpGlobals->v_forward * 17 - gpGlobals->v_right * 27 + gpGlobals->v_up * 6, g_vecZero, 3);
|
||||
}
|
||||
break;
|
||||
|
||||
case HGRUNT_AE_BURST1: {
|
||||
case HGRUNT_AE_BURST1:
|
||||
{
|
||||
if (FBitSet(pev->weapons, HGRUNT_9MMAR))
|
||||
{
|
||||
Shoot();
|
||||
|
@ -934,7 +939,8 @@ void CHGrunt::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
Shoot();
|
||||
break;
|
||||
|
||||
case HGRUNT_AE_KICK: {
|
||||
case HGRUNT_AE_KICK:
|
||||
{
|
||||
CBaseEntity* pHurt = Kick();
|
||||
|
||||
if (pHurt)
|
||||
|
@ -948,7 +954,8 @@ void CHGrunt::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case HGRUNT_AE_CAUGHT_ENEMY: {
|
||||
case HGRUNT_AE_CAUGHT_ENEMY:
|
||||
{
|
||||
if (FOkToSpeak())
|
||||
{
|
||||
SENTENCEG_PlayRndSz(ENT(pev), "HG_ALERT", HGRUNT_SENTENCE_VOLUME, GRUNT_ATTN, 0, m_voicePitch);
|
||||
|
@ -1126,7 +1133,8 @@ void CHGrunt::RunTask(Task_t* pTask)
|
|||
{
|
||||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_GRUNT_FACE_TOSS_DIR: {
|
||||
case TASK_GRUNT_FACE_TOSS_DIR:
|
||||
{
|
||||
// project a point along the toss vector and turn to face that point.
|
||||
MakeIdealYaw(pev->origin + m_vecTossVelocity * 64);
|
||||
ChangeYaw(pev->yaw_speed);
|
||||
|
@ -1137,7 +1145,8 @@ void CHGrunt::RunTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
CSquadMonster::RunTask(pTask);
|
||||
break;
|
||||
}
|
||||
|
@ -1977,7 +1986,8 @@ Schedule_t* CHGrunt::GetSchedule()
|
|||
}
|
||||
switch (m_MonsterState)
|
||||
{
|
||||
case MONSTERSTATE_COMBAT: {
|
||||
case MONSTERSTATE_COMBAT:
|
||||
{
|
||||
// dead enemy
|
||||
if (HasConditions(bits_COND_ENEMY_DEAD))
|
||||
{
|
||||
|
@ -2167,7 +2177,8 @@ Schedule_t* CHGrunt::GetScheduleOfType(int Type)
|
|||
{
|
||||
switch (Type)
|
||||
{
|
||||
case SCHED_TAKE_COVER_FROM_ENEMY: {
|
||||
case SCHED_TAKE_COVER_FROM_ENEMY:
|
||||
{
|
||||
if (InSquad())
|
||||
{
|
||||
if (g_iSkillLevel == SKILL_HARD && HasConditions(bits_COND_CAN_RANGE_ATTACK2) && OccupySlot(bits_SLOTS_HGRUNT_GRENADE))
|
||||
|
@ -2196,10 +2207,12 @@ Schedule_t* CHGrunt::GetScheduleOfType(int Type)
|
|||
}
|
||||
}
|
||||
}
|
||||
case SCHED_TAKE_COVER_FROM_BEST_SOUND: {
|
||||
case SCHED_TAKE_COVER_FROM_BEST_SOUND:
|
||||
{
|
||||
return &slGruntTakeCoverFromBestSound[0];
|
||||
}
|
||||
case SCHED_GRUNT_TAKECOVER_FAILED: {
|
||||
case SCHED_GRUNT_TAKECOVER_FAILED:
|
||||
{
|
||||
if (HasConditions(bits_COND_CAN_RANGE_ATTACK1) && OccupySlot(bits_SLOTS_HGRUNT_ENGAGE))
|
||||
{
|
||||
return GetScheduleOfType(SCHED_RANGE_ATTACK1);
|
||||
|
@ -2208,16 +2221,19 @@ Schedule_t* CHGrunt::GetScheduleOfType(int Type)
|
|||
return GetScheduleOfType(SCHED_FAIL);
|
||||
}
|
||||
break;
|
||||
case SCHED_GRUNT_ELOF_FAIL: {
|
||||
case SCHED_GRUNT_ELOF_FAIL:
|
||||
{
|
||||
// human grunt is unable to move to a position that allows him to attack the enemy.
|
||||
return GetScheduleOfType(SCHED_TAKE_COVER_FROM_ENEMY);
|
||||
}
|
||||
break;
|
||||
case SCHED_GRUNT_ESTABLISH_LINE_OF_FIRE: {
|
||||
case SCHED_GRUNT_ESTABLISH_LINE_OF_FIRE:
|
||||
{
|
||||
return &slGruntEstablishLineOfFire[0];
|
||||
}
|
||||
break;
|
||||
case SCHED_RANGE_ATTACK1: {
|
||||
case SCHED_RANGE_ATTACK1:
|
||||
{
|
||||
// randomly stand or crouch
|
||||
if (RANDOM_LONG(0, 9) == 0)
|
||||
m_fStanding = RANDOM_LONG(0, 1);
|
||||
|
@ -2227,25 +2243,32 @@ Schedule_t* CHGrunt::GetScheduleOfType(int Type)
|
|||
else
|
||||
return &slGruntRangeAttack1A[0];
|
||||
}
|
||||
case SCHED_RANGE_ATTACK2: {
|
||||
case SCHED_RANGE_ATTACK2:
|
||||
{
|
||||
return &slGruntRangeAttack2[0];
|
||||
}
|
||||
case SCHED_COMBAT_FACE: {
|
||||
case SCHED_COMBAT_FACE:
|
||||
{
|
||||
return &slGruntCombatFace[0];
|
||||
}
|
||||
case SCHED_GRUNT_WAIT_FACE_ENEMY: {
|
||||
case SCHED_GRUNT_WAIT_FACE_ENEMY:
|
||||
{
|
||||
return &slGruntWaitInCover[0];
|
||||
}
|
||||
case SCHED_GRUNT_SWEEP: {
|
||||
case SCHED_GRUNT_SWEEP:
|
||||
{
|
||||
return &slGruntSweep[0];
|
||||
}
|
||||
case SCHED_GRUNT_COVER_AND_RELOAD: {
|
||||
case SCHED_GRUNT_COVER_AND_RELOAD:
|
||||
{
|
||||
return &slGruntHideReload[0];
|
||||
}
|
||||
case SCHED_GRUNT_FOUND_ENEMY: {
|
||||
case SCHED_GRUNT_FOUND_ENEMY:
|
||||
{
|
||||
return &slGruntFoundEnemy[0];
|
||||
}
|
||||
case SCHED_VICTORY_DANCE: {
|
||||
case SCHED_VICTORY_DANCE:
|
||||
{
|
||||
if (InSquad())
|
||||
{
|
||||
if (!IsLeader())
|
||||
|
@ -2256,7 +2279,8 @@ Schedule_t* CHGrunt::GetScheduleOfType(int Type)
|
|||
|
||||
return &slGruntVictoryDance[0];
|
||||
}
|
||||
case SCHED_GRUNT_SUPPRESS: {
|
||||
case SCHED_GRUNT_SUPPRESS:
|
||||
{
|
||||
if (m_hEnemy->IsPlayer() && m_fFirstEncounter)
|
||||
{
|
||||
m_fFirstEncounter = false; // after first encounter, leader won't issue handsigns anymore when he has a new enemy
|
||||
|
@ -2267,7 +2291,8 @@ Schedule_t* CHGrunt::GetScheduleOfType(int Type)
|
|||
return &slGruntSuppress[0];
|
||||
}
|
||||
}
|
||||
case SCHED_FAIL: {
|
||||
case SCHED_FAIL:
|
||||
{
|
||||
if (m_hEnemy != NULL)
|
||||
{
|
||||
// grunt has an enemy, so pick a different default fail schedule most likely to help recover.
|
||||
|
@ -2276,20 +2301,24 @@ Schedule_t* CHGrunt::GetScheduleOfType(int Type)
|
|||
|
||||
return &slGruntFail[0];
|
||||
}
|
||||
case SCHED_GRUNT_REPEL: {
|
||||
case SCHED_GRUNT_REPEL:
|
||||
{
|
||||
if (pev->velocity.z > -128)
|
||||
pev->velocity.z -= 32;
|
||||
return &slGruntRepel[0];
|
||||
}
|
||||
case SCHED_GRUNT_REPEL_ATTACK: {
|
||||
case SCHED_GRUNT_REPEL_ATTACK:
|
||||
{
|
||||
if (pev->velocity.z > -128)
|
||||
pev->velocity.z -= 32;
|
||||
return &slGruntRepelAttack[0];
|
||||
}
|
||||
case SCHED_GRUNT_REPEL_LAND: {
|
||||
case SCHED_GRUNT_REPEL_LAND:
|
||||
{
|
||||
return &slGruntRepelLand[0];
|
||||
}
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
return CSquadMonster::GetScheduleOfType(Type);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -283,7 +283,8 @@ void CHoundeye::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
WarmUpSound();
|
||||
break;
|
||||
|
||||
case HOUND_AE_HOPBACK: {
|
||||
case HOUND_AE_HOPBACK:
|
||||
{
|
||||
float flGravity = g_psv_gravity->value;
|
||||
|
||||
pev->flags &= ~FL_ONGROUND;
|
||||
|
@ -679,35 +680,42 @@ void CHoundeye::StartTask(Task_t* pTask)
|
|||
|
||||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_HOUND_FALL_ASLEEP: {
|
||||
case TASK_HOUND_FALL_ASLEEP:
|
||||
{
|
||||
m_fAsleep = true; // signal that hound is lying down (must stand again before doing anything else!)
|
||||
m_iTaskStatus = TASKSTATUS_COMPLETE;
|
||||
break;
|
||||
}
|
||||
case TASK_HOUND_WAKE_UP: {
|
||||
case TASK_HOUND_WAKE_UP:
|
||||
{
|
||||
m_fAsleep = false; // signal that hound is standing again
|
||||
m_iTaskStatus = TASKSTATUS_COMPLETE;
|
||||
break;
|
||||
}
|
||||
case TASK_HOUND_OPEN_EYE: {
|
||||
case TASK_HOUND_OPEN_EYE:
|
||||
{
|
||||
m_fDontBlink = false; // turn blinking back on and that code will automatically open the eye
|
||||
m_iTaskStatus = TASKSTATUS_COMPLETE;
|
||||
break;
|
||||
}
|
||||
case TASK_HOUND_CLOSE_EYE: {
|
||||
case TASK_HOUND_CLOSE_EYE:
|
||||
{
|
||||
pev->skin = 0;
|
||||
m_fDontBlink = true; // tell blink code to leave the eye alone.
|
||||
break;
|
||||
}
|
||||
case TASK_HOUND_THREAT_DISPLAY: {
|
||||
case TASK_HOUND_THREAT_DISPLAY:
|
||||
{
|
||||
m_IdealActivity = ACT_IDLE_ANGRY;
|
||||
break;
|
||||
}
|
||||
case TASK_HOUND_HOP_BACK: {
|
||||
case TASK_HOUND_HOP_BACK:
|
||||
{
|
||||
m_IdealActivity = ACT_LEAP;
|
||||
break;
|
||||
}
|
||||
case TASK_RANGE_ATTACK1: {
|
||||
case TASK_RANGE_ATTACK1:
|
||||
{
|
||||
m_IdealActivity = ACT_RANGE_ATTACK1;
|
||||
|
||||
/*
|
||||
|
@ -747,15 +755,18 @@ void CHoundeye::StartTask(Task_t* pTask)
|
|||
|
||||
break;
|
||||
}
|
||||
case TASK_SPECIAL_ATTACK1: {
|
||||
case TASK_SPECIAL_ATTACK1:
|
||||
{
|
||||
m_IdealActivity = ACT_SPECIAL_ATTACK1;
|
||||
break;
|
||||
}
|
||||
case TASK_GUARD: {
|
||||
case TASK_GUARD:
|
||||
{
|
||||
m_IdealActivity = ACT_GUARD;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
CSquadMonster::StartTask(pTask);
|
||||
break;
|
||||
}
|
||||
|
@ -769,7 +780,8 @@ void CHoundeye::RunTask(Task_t* pTask)
|
|||
{
|
||||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_HOUND_THREAT_DISPLAY: {
|
||||
case TASK_HOUND_THREAT_DISPLAY:
|
||||
{
|
||||
MakeIdealYaw(m_vecEnemyLKP);
|
||||
ChangeYaw(pev->yaw_speed);
|
||||
|
||||
|
@ -780,21 +792,24 @@ void CHoundeye::RunTask(Task_t* pTask)
|
|||
|
||||
break;
|
||||
}
|
||||
case TASK_HOUND_CLOSE_EYE: {
|
||||
case TASK_HOUND_CLOSE_EYE:
|
||||
{
|
||||
if (pev->skin < HOUNDEYE_EYE_FRAMES - 1)
|
||||
{
|
||||
pev->skin++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_HOUND_HOP_BACK: {
|
||||
case TASK_HOUND_HOP_BACK:
|
||||
{
|
||||
if (m_fSequenceFinished)
|
||||
{
|
||||
TaskComplete();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_SPECIAL_ATTACK1: {
|
||||
case TASK_SPECIAL_ATTACK1:
|
||||
{
|
||||
pev->skin = RANDOM_LONG(0, HOUNDEYE_EYE_FRAMES - 1);
|
||||
|
||||
MakeIdealYaw(m_vecEnemyLKP);
|
||||
|
@ -823,7 +838,8 @@ void CHoundeye::RunTask(Task_t* pTask)
|
|||
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
CSquadMonster::RunTask(pTask);
|
||||
break;
|
||||
}
|
||||
|
@ -1152,7 +1168,8 @@ Schedule_t* CHoundeye::GetScheduleOfType(int Type)
|
|||
}
|
||||
switch (Type)
|
||||
{
|
||||
case SCHED_IDLE_STAND: {
|
||||
case SCHED_IDLE_STAND:
|
||||
{
|
||||
// we may want to sleep instead of stand!
|
||||
if (InSquad() && !IsLeader() && !m_fAsleep && RANDOM_LONG(0, 29) < 1)
|
||||
{
|
||||
|
@ -1163,7 +1180,8 @@ Schedule_t* CHoundeye::GetScheduleOfType(int Type)
|
|||
return CSquadMonster::GetScheduleOfType(Type);
|
||||
}
|
||||
}
|
||||
case SCHED_RANGE_ATTACK1: {
|
||||
case SCHED_RANGE_ATTACK1:
|
||||
{
|
||||
return &slHoundRangeAttack[0];
|
||||
/*
|
||||
if ( InSquad() )
|
||||
|
@ -1174,19 +1192,24 @@ Schedule_t* CHoundeye::GetScheduleOfType(int Type)
|
|||
return &slHoundRangeAttack[ 1 ];
|
||||
*/
|
||||
}
|
||||
case SCHED_SPECIAL_ATTACK1: {
|
||||
case SCHED_SPECIAL_ATTACK1:
|
||||
{
|
||||
return &slHoundSpecialAttack1[0];
|
||||
}
|
||||
case SCHED_GUARD: {
|
||||
case SCHED_GUARD:
|
||||
{
|
||||
return &slHoundGuardPack[0];
|
||||
}
|
||||
case SCHED_HOUND_AGITATED: {
|
||||
case SCHED_HOUND_AGITATED:
|
||||
{
|
||||
return &slHoundAgitated[0];
|
||||
}
|
||||
case SCHED_HOUND_HOP_RETREAT: {
|
||||
case SCHED_HOUND_HOP_RETREAT:
|
||||
{
|
||||
return &slHoundHopRetreat[0];
|
||||
}
|
||||
case SCHED_FAIL: {
|
||||
case SCHED_FAIL:
|
||||
{
|
||||
if (m_MonsterState == MONSTERSTATE_COMBAT)
|
||||
{
|
||||
if (!FNullEnt(FIND_CLIENT_IN_PVS(edict())))
|
||||
|
@ -1205,7 +1228,8 @@ Schedule_t* CHoundeye::GetScheduleOfType(int Type)
|
|||
return CSquadMonster::GetScheduleOfType(Type);
|
||||
}
|
||||
}
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
return CSquadMonster::GetScheduleOfType(Type);
|
||||
}
|
||||
}
|
||||
|
@ -1218,7 +1242,8 @@ Schedule_t* CHoundeye::GetSchedule()
|
|||
{
|
||||
switch (m_MonsterState)
|
||||
{
|
||||
case MONSTERSTATE_COMBAT: {
|
||||
case MONSTERSTATE_COMBAT:
|
||||
{
|
||||
// dead enemy
|
||||
if (HasConditions(bits_COND_ENEMY_DEAD))
|
||||
{
|
||||
|
|
|
@ -407,7 +407,8 @@ void CIchthyosaur::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
switch (pEvent->event)
|
||||
{
|
||||
case ICHTHYOSAUR_AE_SHAKE_RIGHT:
|
||||
case ICHTHYOSAUR_AE_SHAKE_LEFT: {
|
||||
case ICHTHYOSAUR_AE_SHAKE_LEFT:
|
||||
{
|
||||
if (m_hEnemy != NULL && FVisible(m_hEnemy))
|
||||
{
|
||||
CBaseEntity* pHurt = m_hEnemy;
|
||||
|
|
|
@ -310,7 +310,8 @@ void CISlave::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
// ALERT( at_console, "event %d : %f\n", pEvent->event, pev->frame );
|
||||
switch (pEvent->event)
|
||||
{
|
||||
case ISLAVE_AE_CLAW: {
|
||||
case ISLAVE_AE_CLAW:
|
||||
{
|
||||
// SOUND HERE!
|
||||
CBaseEntity* pHurt = CheckTraceHullAttack(70, gSkillData.slaveDmgClaw, DMG_SLASH);
|
||||
if (pHurt)
|
||||
|
@ -331,7 +332,8 @@ void CISlave::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case ISLAVE_AE_CLAWRAKE: {
|
||||
case ISLAVE_AE_CLAWRAKE:
|
||||
{
|
||||
CBaseEntity* pHurt = CheckTraceHullAttack(70, gSkillData.slaveDmgClawrake, DMG_SLASH);
|
||||
if (pHurt)
|
||||
{
|
||||
|
@ -349,7 +351,8 @@ void CISlave::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case ISLAVE_AE_ZAP_POWERUP: {
|
||||
case ISLAVE_AE_ZAP_POWERUP:
|
||||
{
|
||||
// speed up attack when on hard
|
||||
if (g_iSkillLevel == SKILL_HARD)
|
||||
pev->framerate = 1.5;
|
||||
|
@ -389,7 +392,8 @@ void CISlave::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case ISLAVE_AE_ZAP_SHOOT: {
|
||||
case ISLAVE_AE_ZAP_SHOOT:
|
||||
{
|
||||
ClearBeams();
|
||||
|
||||
if (m_hDead != NULL)
|
||||
|
@ -430,7 +434,8 @@ void CISlave::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case ISLAVE_AE_ZAP_DONE: {
|
||||
case ISLAVE_AE_ZAP_DONE:
|
||||
{
|
||||
ClearBeams();
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -642,7 +642,8 @@ bool CBaseMonster::FRefreshRoute()
|
|||
|
||||
switch (m_movementGoal)
|
||||
{
|
||||
case MOVEGOAL_PATHCORNER: {
|
||||
case MOVEGOAL_PATHCORNER:
|
||||
{
|
||||
// monster is on a path_corner loop
|
||||
pPathCorner = m_pGoalEnt;
|
||||
i = 0;
|
||||
|
@ -2706,7 +2707,8 @@ void CBaseMonster::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case MONSTER_EVENT_SWISHSOUND: {
|
||||
case MONSTER_EVENT_SWISHSOUND:
|
||||
{
|
||||
// NO MONSTER may use this anim event unless that monster's precache precaches this sound!!!
|
||||
EMIT_SOUND(ENT(pev), CHAN_BODY, "zombie/claw_miss2.wav", 1, ATTN_NORM);
|
||||
break;
|
||||
|
|
|
@ -820,7 +820,7 @@ void CHalfLifeMultiplay::DeathNotice(CBasePlayer* pVictim, entvars_t* pKiller, e
|
|||
// Print a standard message
|
||||
// TODO: make this go direct to console
|
||||
return; // just remove for now
|
||||
/*
|
||||
/*
|
||||
char szText[ 128 ];
|
||||
|
||||
if ( pKiller->flags & FL_MONSTER )
|
||||
|
|
|
@ -1201,7 +1201,8 @@ void CNihilanth::CommandUse(CBaseEntity* pActivator, CBaseEntity* pCaller, USE_T
|
|||
{
|
||||
switch (useType)
|
||||
{
|
||||
case USE_OFF: {
|
||||
case USE_OFF:
|
||||
{
|
||||
CBaseEntity* pTouch = UTIL_FindEntityByTargetname(NULL, m_szDeadTouch);
|
||||
|
||||
if (pTouch)
|
||||
|
|
|
@ -173,47 +173,47 @@ Vector VecVelocityForDamage(float flDamage)
|
|||
return vec;
|
||||
}
|
||||
|
||||
#if 0 /* \
|
||||
static void ThrowGib(entvars_t *pev, char *szGibModel, float flDamage) \
|
||||
{ \
|
||||
edict_t *pentNew = CREATE_ENTITY(); \
|
||||
entvars_t *pevNew = VARS(pentNew); \
|
||||
\
|
||||
pevNew->origin = pev->origin; \
|
||||
SET_MODEL(ENT(pevNew), szGibModel); \
|
||||
UTIL_SetSize(pevNew, g_vecZero, g_vecZero); \
|
||||
\
|
||||
pevNew->velocity = VecVelocityForDamage(flDamage); \
|
||||
pevNew->movetype = MOVETYPE_BOUNCE; \
|
||||
pevNew->solid = SOLID_NOT; \
|
||||
pevNew->avelocity.x = RANDOM_FLOAT(0,600); \
|
||||
pevNew->avelocity.y = RANDOM_FLOAT(0,600); \
|
||||
pevNew->avelocity.z = RANDOM_FLOAT(0,600); \
|
||||
CHANGE_METHOD(ENT(pevNew), em_think, SUB_Remove); \
|
||||
pevNew->ltime = gpGlobals->time; \
|
||||
pevNew->nextthink = gpGlobals->time + RANDOM_FLOAT(10,20); \
|
||||
pevNew->frame = 0; \
|
||||
pevNew->flags = 0; \
|
||||
} \
|
||||
\
|
||||
\
|
||||
static void ThrowHead(entvars_t *pev, char *szGibModel, floatflDamage) \
|
||||
{ \
|
||||
SET_MODEL(ENT(pev), szGibModel); \
|
||||
pev->frame = 0; \
|
||||
pev->nextthink = -1; \
|
||||
pev->movetype = MOVETYPE_BOUNCE; \
|
||||
pev->takedamage = DAMAGE_NO; \
|
||||
pev->solid = SOLID_NOT; \
|
||||
pev->view_ofs = Vector(0,0,8); \
|
||||
UTIL_SetSize(pev, Vector(-16,-16,0), Vector(16,16,56)); \
|
||||
pev->velocity = VecVelocityForDamage(flDamage); \
|
||||
pev->avelocity = RANDOM_FLOAT(-1,1) * Vector(0,600,0); \
|
||||
pev->origin.z -= 24; \
|
||||
ClearBits(pev->flags, FL_ONGROUND); \
|
||||
} \
|
||||
\
|
||||
\
|
||||
#if 0 /* \
|
||||
static void ThrowGib(entvars_t *pev, char *szGibModel, float flDamage) \
|
||||
{ \
|
||||
edict_t *pentNew = CREATE_ENTITY(); \
|
||||
entvars_t *pevNew = VARS(pentNew); \
|
||||
\ \
|
||||
pevNew->origin = pev->origin; \
|
||||
SET_MODEL(ENT(pevNew), szGibModel); \
|
||||
UTIL_SetSize(pevNew, g_vecZero, g_vecZero); \
|
||||
\ \
|
||||
pevNew->velocity = VecVelocityForDamage(flDamage); \
|
||||
pevNew->movetype = MOVETYPE_BOUNCE; \
|
||||
pevNew->solid = SOLID_NOT; \
|
||||
pevNew->avelocity.x = RANDOM_FLOAT(0,600); \
|
||||
pevNew->avelocity.y = RANDOM_FLOAT(0,600); \
|
||||
pevNew->avelocity.z = RANDOM_FLOAT(0,600); \
|
||||
CHANGE_METHOD(ENT(pevNew), em_think, SUB_Remove); \
|
||||
pevNew->ltime = gpGlobals->time; \
|
||||
pevNew->nextthink = gpGlobals->time + RANDOM_FLOAT(10,20); \
|
||||
pevNew->frame = 0; \
|
||||
pevNew->flags = 0; \
|
||||
} \
|
||||
\ \
|
||||
\ \
|
||||
static void ThrowHead(entvars_t *pev, char *szGibModel, floatflDamage) \
|
||||
{ \
|
||||
SET_MODEL(ENT(pev), szGibModel); \
|
||||
pev->frame = 0; \
|
||||
pev->nextthink = -1; \
|
||||
pev->movetype = MOVETYPE_BOUNCE; \
|
||||
pev->takedamage = DAMAGE_NO; \
|
||||
pev->solid = SOLID_NOT; \
|
||||
pev->view_ofs = Vector(0,0,8); \
|
||||
UTIL_SetSize(pev, Vector(-16,-16,0), Vector(16,16,56)); \
|
||||
pev->velocity = VecVelocityForDamage(flDamage); \
|
||||
pev->avelocity = RANDOM_FLOAT(-1,1) * Vector(0,600,0); \
|
||||
pev->origin.z -= 24; \
|
||||
ClearBits(pev->flags, FL_ONGROUND); \
|
||||
} \
|
||||
\ \
|
||||
\ \
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
@ -3298,7 +3298,8 @@ void CBasePlayer::ImpulseCommands()
|
|||
int iImpulse = (int)pev->impulse;
|
||||
switch (iImpulse)
|
||||
{
|
||||
case 99: {
|
||||
case 99:
|
||||
{
|
||||
|
||||
bool iOn;
|
||||
|
||||
|
@ -3377,7 +3378,8 @@ void CBasePlayer::CheatImpulseCommands(int iImpulse)
|
|||
|
||||
switch (iImpulse)
|
||||
{
|
||||
case 76: {
|
||||
case 76:
|
||||
{
|
||||
if (!giPrecacheGrunt)
|
||||
{
|
||||
giPrecacheGrunt = true;
|
||||
|
@ -3480,7 +3482,8 @@ void CBasePlayer::CheatImpulseCommands(int iImpulse)
|
|||
}
|
||||
break;
|
||||
|
||||
case 107: {
|
||||
case 107:
|
||||
{
|
||||
TraceResult tr;
|
||||
|
||||
edict_t* pWorld = g_engfuncs.pfnPEntityOfEntIndex(0);
|
||||
|
|
|
@ -211,7 +211,8 @@ void CRoach::MonsterThink()
|
|||
switch (m_iMode)
|
||||
{
|
||||
case ROACH_IDLE:
|
||||
case ROACH_EAT: {
|
||||
case ROACH_EAT:
|
||||
{
|
||||
// if not moving, sample environment to see if anything scary is around. Do a radius search 'look' at random.
|
||||
if (RANDOM_LONG(0, 3) == 1)
|
||||
{
|
||||
|
@ -271,7 +272,8 @@ void CRoach::MonsterThink()
|
|||
|
||||
break;
|
||||
}
|
||||
case ROACH_SCARED_BY_LIGHT: {
|
||||
case ROACH_SCARED_BY_LIGHT:
|
||||
{
|
||||
// if roach was scared by light, then stop if we're over a spot at least as dark as where we started!
|
||||
if (GETENTITYILLUM(ENT(pev)) <= m_flLastLightLevel)
|
||||
{
|
||||
|
|
|
@ -325,11 +325,13 @@ void CSatchel::PrimaryAttack()
|
|||
{
|
||||
switch (m_chargeReady)
|
||||
{
|
||||
case 0: {
|
||||
case 0:
|
||||
{
|
||||
Throw();
|
||||
}
|
||||
break;
|
||||
case 1: {
|
||||
case 1:
|
||||
{
|
||||
SendWeaponAnim(SATCHEL_RADIO_FIRE);
|
||||
|
||||
edict_t* pPlayer = m_pPlayer->edict();
|
||||
|
|
|
@ -39,9 +39,7 @@ public:
|
|||
//Data is only valid if it's a valid pointer and if it has a token list
|
||||
[[nodiscard]] static bool IsValidSaveRestoreData(SAVERESTOREDATA* data)
|
||||
{
|
||||
const bool isValid = nullptr != data
|
||||
&& nullptr != data->pTokens
|
||||
&& data->tokenCount > 0;
|
||||
const bool isValid = nullptr != data && nullptr != data->pTokens && data->tokenCount > 0;
|
||||
|
||||
ASSERT(isValid);
|
||||
|
||||
|
|
|
@ -304,7 +304,8 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_TURN_RIGHT:
|
||||
case TASK_TURN_LEFT: {
|
||||
case TASK_TURN_LEFT:
|
||||
{
|
||||
ChangeYaw(pev->yaw_speed);
|
||||
|
||||
if (FacingIdeal())
|
||||
|
@ -315,7 +316,8 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
}
|
||||
|
||||
case TASK_PLAY_SEQUENCE_FACE_ENEMY:
|
||||
case TASK_PLAY_SEQUENCE_FACE_TARGET: {
|
||||
case TASK_PLAY_SEQUENCE_FACE_TARGET:
|
||||
{
|
||||
CBaseEntity* pTarget;
|
||||
|
||||
if (pTask->iTask == TASK_PLAY_SEQUENCE_FACE_TARGET)
|
||||
|
@ -333,7 +335,8 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
break;
|
||||
|
||||
case TASK_PLAY_SEQUENCE:
|
||||
case TASK_PLAY_ACTIVE_IDLE: {
|
||||
case TASK_PLAY_ACTIVE_IDLE:
|
||||
{
|
||||
if (m_fSequenceFinished)
|
||||
{
|
||||
TaskComplete();
|
||||
|
@ -342,7 +345,8 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
}
|
||||
|
||||
|
||||
case TASK_FACE_ENEMY: {
|
||||
case TASK_FACE_ENEMY:
|
||||
{
|
||||
MakeIdealYaw(m_vecEnemyLKP);
|
||||
|
||||
ChangeYaw(pev->yaw_speed);
|
||||
|
@ -357,7 +361,8 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
case TASK_FACE_LASTPOSITION:
|
||||
case TASK_FACE_TARGET:
|
||||
case TASK_FACE_IDEAL:
|
||||
case TASK_FACE_ROUTE: {
|
||||
case TASK_FACE_ROUTE:
|
||||
{
|
||||
ChangeYaw(pev->yaw_speed);
|
||||
|
||||
if (FacingIdeal())
|
||||
|
@ -366,26 +371,30 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_WAIT_PVS: {
|
||||
case TASK_WAIT_PVS:
|
||||
{
|
||||
if (!FNullEnt(FIND_CLIENT_IN_PVS(edict())))
|
||||
{
|
||||
TaskComplete();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_WAIT_INDEFINITE: {
|
||||
case TASK_WAIT_INDEFINITE:
|
||||
{
|
||||
// don't do anything.
|
||||
break;
|
||||
}
|
||||
case TASK_WAIT:
|
||||
case TASK_WAIT_RANDOM: {
|
||||
case TASK_WAIT_RANDOM:
|
||||
{
|
||||
if (gpGlobals->time >= m_flWaitFinished)
|
||||
{
|
||||
TaskComplete();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_WAIT_FACE_ENEMY: {
|
||||
case TASK_WAIT_FACE_ENEMY:
|
||||
{
|
||||
MakeIdealYaw(m_vecEnemyLKP);
|
||||
ChangeYaw(pev->yaw_speed);
|
||||
|
||||
|
@ -395,7 +404,8 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_MOVE_TO_TARGET_RANGE: {
|
||||
case TASK_MOVE_TO_TARGET_RANGE:
|
||||
{
|
||||
float distance;
|
||||
|
||||
if (m_hTargetEnt == NULL)
|
||||
|
@ -426,7 +436,8 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
|
||||
break;
|
||||
}
|
||||
case TASK_WAIT_FOR_MOVEMENT: {
|
||||
case TASK_WAIT_FOR_MOVEMENT:
|
||||
{
|
||||
if (MovementIsComplete())
|
||||
{
|
||||
TaskComplete();
|
||||
|
@ -434,7 +445,8 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_DIE: {
|
||||
case TASK_DIE:
|
||||
{
|
||||
if (m_fSequenceFinished && pev->frame >= 255)
|
||||
{
|
||||
pev->deadflag = DEAD_DEAD;
|
||||
|
@ -469,7 +481,8 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
case TASK_MELEE_ATTACK1_NOTURN:
|
||||
case TASK_MELEE_ATTACK2_NOTURN:
|
||||
case TASK_RANGE_ATTACK2_NOTURN:
|
||||
case TASK_RELOAD_NOTURN: {
|
||||
case TASK_RELOAD_NOTURN:
|
||||
{
|
||||
if (m_fSequenceFinished)
|
||||
{
|
||||
m_Activity = ACT_RESET;
|
||||
|
@ -483,7 +496,8 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
case TASK_RANGE_ATTACK2:
|
||||
case TASK_SPECIAL_ATTACK1:
|
||||
case TASK_SPECIAL_ATTACK2:
|
||||
case TASK_RELOAD: {
|
||||
case TASK_RELOAD:
|
||||
{
|
||||
MakeIdealYaw(m_vecEnemyLKP);
|
||||
ChangeYaw(pev->yaw_speed);
|
||||
|
||||
|
@ -494,14 +508,16 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_SMALL_FLINCH: {
|
||||
case TASK_SMALL_FLINCH:
|
||||
{
|
||||
if (m_fSequenceFinished)
|
||||
{
|
||||
TaskComplete();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case TASK_WAIT_FOR_SCRIPT: {
|
||||
case TASK_WAIT_FOR_SCRIPT:
|
||||
{
|
||||
if (m_pCine->m_iDelay <= 0 && gpGlobals->time >= m_pCine->m_startTime)
|
||||
{
|
||||
TaskComplete();
|
||||
|
@ -513,7 +529,8 @@ void CBaseMonster::RunTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_PLAY_SCRIPT: {
|
||||
case TASK_PLAY_SCRIPT:
|
||||
{
|
||||
if (m_fSequenceFinished)
|
||||
{
|
||||
m_pCine->SequenceDone(this);
|
||||
|
@ -552,7 +569,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
{
|
||||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_TURN_RIGHT: {
|
||||
case TASK_TURN_RIGHT:
|
||||
{
|
||||
float flCurrentYaw;
|
||||
|
||||
flCurrentYaw = UTIL_AngleMod(pev->angles.y);
|
||||
|
@ -560,7 +578,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
SetTurnActivity();
|
||||
break;
|
||||
}
|
||||
case TASK_TURN_LEFT: {
|
||||
case TASK_TURN_LEFT:
|
||||
{
|
||||
float flCurrentYaw;
|
||||
|
||||
flCurrentYaw = UTIL_AngleMod(pev->angles.y);
|
||||
|
@ -568,17 +587,20 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
SetTurnActivity();
|
||||
break;
|
||||
}
|
||||
case TASK_REMEMBER: {
|
||||
case TASK_REMEMBER:
|
||||
{
|
||||
Remember((int)pTask->flData);
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_FORGET: {
|
||||
case TASK_FORGET:
|
||||
{
|
||||
Forget((int)pTask->flData);
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_FIND_HINTNODE: {
|
||||
case TASK_FIND_HINTNODE:
|
||||
{
|
||||
m_iHintNode = FindHintNode();
|
||||
|
||||
if (m_iHintNode != NO_NODE)
|
||||
|
@ -591,22 +613,26 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_STORE_LASTPOSITION: {
|
||||
case TASK_STORE_LASTPOSITION:
|
||||
{
|
||||
m_vecLastPosition = pev->origin;
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_CLEAR_LASTPOSITION: {
|
||||
case TASK_CLEAR_LASTPOSITION:
|
||||
{
|
||||
m_vecLastPosition = g_vecZero;
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_CLEAR_HINTNODE: {
|
||||
case TASK_CLEAR_HINTNODE:
|
||||
{
|
||||
m_iHintNode = NO_NODE;
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_STOP_MOVING: {
|
||||
case TASK_STOP_MOVING:
|
||||
{
|
||||
if (m_IdealActivity == m_movementActivity)
|
||||
{
|
||||
m_IdealActivity = GetStoppedActivity();
|
||||
|
@ -618,17 +644,20 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
case TASK_PLAY_SEQUENCE_FACE_ENEMY:
|
||||
case TASK_PLAY_SEQUENCE_FACE_TARGET:
|
||||
case TASK_PLAY_SEQUENCE: {
|
||||
case TASK_PLAY_SEQUENCE:
|
||||
{
|
||||
m_IdealActivity = (Activity)(int)pTask->flData;
|
||||
break;
|
||||
}
|
||||
case TASK_PLAY_ACTIVE_IDLE: {
|
||||
case TASK_PLAY_ACTIVE_IDLE:
|
||||
{
|
||||
// monsters verify that they have a sequence for the node's activity BEFORE
|
||||
// moving towards the node, so it's ok to just set the activity without checking here.
|
||||
m_IdealActivity = (Activity)WorldGraph.m_pNodes[m_iHintNode].m_sHintActivity;
|
||||
break;
|
||||
}
|
||||
case TASK_SET_SCHEDULE: {
|
||||
case TASK_SET_SCHEDULE:
|
||||
{
|
||||
Schedule_t* pNewSchedule;
|
||||
|
||||
pNewSchedule = GetScheduleOfType((int)pTask->flData);
|
||||
|
@ -644,7 +673,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
|
||||
break;
|
||||
}
|
||||
case TASK_FIND_NEAR_NODE_COVER_FROM_ENEMY: {
|
||||
case TASK_FIND_NEAR_NODE_COVER_FROM_ENEMY:
|
||||
{
|
||||
if (m_hEnemy == NULL)
|
||||
{
|
||||
TaskFail();
|
||||
|
@ -663,7 +693,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_FIND_FAR_NODE_COVER_FROM_ENEMY: {
|
||||
case TASK_FIND_FAR_NODE_COVER_FROM_ENEMY:
|
||||
{
|
||||
if (m_hEnemy == NULL)
|
||||
{
|
||||
TaskFail();
|
||||
|
@ -682,7 +713,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_FIND_NODE_COVER_FROM_ENEMY: {
|
||||
case TASK_FIND_NODE_COVER_FROM_ENEMY:
|
||||
{
|
||||
if (m_hEnemy == NULL)
|
||||
{
|
||||
TaskFail();
|
||||
|
@ -701,7 +733,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_FIND_COVER_FROM_ENEMY: {
|
||||
case TASK_FIND_COVER_FROM_ENEMY:
|
||||
{
|
||||
entvars_t* pevCover;
|
||||
|
||||
if (m_hEnemy == NULL)
|
||||
|
@ -733,7 +766,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_FIND_COVER_FROM_ORIGIN: {
|
||||
case TASK_FIND_COVER_FROM_ORIGIN:
|
||||
{
|
||||
if (FindCover(pev->origin, pev->view_ofs, 0, CoverRadius()))
|
||||
{
|
||||
// then try for plain ole cover
|
||||
|
@ -747,7 +781,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case TASK_FIND_COVER_FROM_BEST_SOUND: {
|
||||
case TASK_FIND_COVER_FROM_BEST_SOUND:
|
||||
{
|
||||
CSound* pBestSound;
|
||||
|
||||
pBestSound = PBestSound();
|
||||
|
@ -775,7 +810,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_FACE_HINTNODE: {
|
||||
case TASK_FACE_HINTNODE:
|
||||
{
|
||||
pev->ideal_yaw = WorldGraph.m_pNodes[m_iHintNode].m_flHintYaw;
|
||||
SetTurnActivity();
|
||||
break;
|
||||
|
@ -795,16 +831,19 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
else
|
||||
TaskFail();
|
||||
break;
|
||||
case TASK_FACE_ENEMY: {
|
||||
case TASK_FACE_ENEMY:
|
||||
{
|
||||
MakeIdealYaw(m_vecEnemyLKP);
|
||||
SetTurnActivity();
|
||||
break;
|
||||
}
|
||||
case TASK_FACE_IDEAL: {
|
||||
case TASK_FACE_IDEAL:
|
||||
{
|
||||
SetTurnActivity();
|
||||
break;
|
||||
}
|
||||
case TASK_FACE_ROUTE: {
|
||||
case TASK_FACE_ROUTE:
|
||||
{
|
||||
if (FRouteClear())
|
||||
{
|
||||
ALERT(at_aiconsole, "No route to face!\n");
|
||||
|
@ -818,20 +857,24 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
break;
|
||||
}
|
||||
case TASK_WAIT_PVS:
|
||||
case TASK_WAIT_INDEFINITE: {
|
||||
case TASK_WAIT_INDEFINITE:
|
||||
{
|
||||
// don't do anything.
|
||||
break;
|
||||
}
|
||||
case TASK_WAIT:
|
||||
case TASK_WAIT_FACE_ENEMY: { // set a future time that tells us when the wait is over.
|
||||
case TASK_WAIT_FACE_ENEMY:
|
||||
{ // set a future time that tells us when the wait is over.
|
||||
m_flWaitFinished = gpGlobals->time + pTask->flData;
|
||||
break;
|
||||
}
|
||||
case TASK_WAIT_RANDOM: { // set a future time that tells us when the wait is over.
|
||||
case TASK_WAIT_RANDOM:
|
||||
{ // set a future time that tells us when the wait is over.
|
||||
m_flWaitFinished = gpGlobals->time + RANDOM_FLOAT(0.1, pTask->flData);
|
||||
break;
|
||||
}
|
||||
case TASK_MOVE_TO_TARGET_RANGE: {
|
||||
case TASK_MOVE_TO_TARGET_RANGE:
|
||||
{
|
||||
if ((m_hTargetEnt->pev->origin - pev->origin).Length() < 1)
|
||||
TaskComplete();
|
||||
else
|
||||
|
@ -843,7 +886,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
break;
|
||||
}
|
||||
case TASK_RUN_TO_TARGET:
|
||||
case TASK_WALK_TO_TARGET: {
|
||||
case TASK_WALK_TO_TARGET:
|
||||
{
|
||||
Activity newActivity;
|
||||
|
||||
if ((m_hTargetEnt->pev->origin - pev->origin).Length() < 1)
|
||||
|
@ -870,50 +914,60 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_CLEAR_MOVE_WAIT: {
|
||||
case TASK_CLEAR_MOVE_WAIT:
|
||||
{
|
||||
m_flMoveWaitFinished = gpGlobals->time;
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_MELEE_ATTACK1_NOTURN:
|
||||
case TASK_MELEE_ATTACK1: {
|
||||
case TASK_MELEE_ATTACK1:
|
||||
{
|
||||
m_IdealActivity = ACT_MELEE_ATTACK1;
|
||||
break;
|
||||
}
|
||||
case TASK_MELEE_ATTACK2_NOTURN:
|
||||
case TASK_MELEE_ATTACK2: {
|
||||
case TASK_MELEE_ATTACK2:
|
||||
{
|
||||
m_IdealActivity = ACT_MELEE_ATTACK2;
|
||||
break;
|
||||
}
|
||||
case TASK_RANGE_ATTACK1_NOTURN:
|
||||
case TASK_RANGE_ATTACK1: {
|
||||
case TASK_RANGE_ATTACK1:
|
||||
{
|
||||
m_IdealActivity = ACT_RANGE_ATTACK1;
|
||||
break;
|
||||
}
|
||||
case TASK_RANGE_ATTACK2_NOTURN:
|
||||
case TASK_RANGE_ATTACK2: {
|
||||
case TASK_RANGE_ATTACK2:
|
||||
{
|
||||
m_IdealActivity = ACT_RANGE_ATTACK2;
|
||||
break;
|
||||
}
|
||||
case TASK_RELOAD_NOTURN:
|
||||
case TASK_RELOAD: {
|
||||
case TASK_RELOAD:
|
||||
{
|
||||
m_IdealActivity = ACT_RELOAD;
|
||||
break;
|
||||
}
|
||||
case TASK_SPECIAL_ATTACK1: {
|
||||
case TASK_SPECIAL_ATTACK1:
|
||||
{
|
||||
m_IdealActivity = ACT_SPECIAL_ATTACK1;
|
||||
break;
|
||||
}
|
||||
case TASK_SPECIAL_ATTACK2: {
|
||||
case TASK_SPECIAL_ATTACK2:
|
||||
{
|
||||
m_IdealActivity = ACT_SPECIAL_ATTACK2;
|
||||
break;
|
||||
}
|
||||
case TASK_SET_ACTIVITY: {
|
||||
case TASK_SET_ACTIVITY:
|
||||
{
|
||||
m_IdealActivity = (Activity)(int)pTask->flData;
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_GET_PATH_TO_ENEMY_LKP: {
|
||||
case TASK_GET_PATH_TO_ENEMY_LKP:
|
||||
{
|
||||
if (BuildRoute(m_vecEnemyLKP, bits_MF_TO_LOCATION, NULL))
|
||||
{
|
||||
TaskComplete();
|
||||
|
@ -930,7 +984,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_GET_PATH_TO_ENEMY: {
|
||||
case TASK_GET_PATH_TO_ENEMY:
|
||||
{
|
||||
CBaseEntity* pEnemy = m_hEnemy;
|
||||
|
||||
if (pEnemy == NULL)
|
||||
|
@ -955,7 +1010,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_GET_PATH_TO_ENEMY_CORPSE: {
|
||||
case TASK_GET_PATH_TO_ENEMY_CORPSE:
|
||||
{
|
||||
UTIL_MakeVectors(pev->angles);
|
||||
if (BuildRoute(m_vecEnemyLKP - gpGlobals->v_forward * 64, bits_MF_TO_LOCATION, NULL))
|
||||
{
|
||||
|
@ -968,7 +1024,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case TASK_GET_PATH_TO_SPOT: {
|
||||
case TASK_GET_PATH_TO_SPOT:
|
||||
{
|
||||
CBaseEntity* pPlayer = CBaseEntity::Instance(FIND_ENTITY_BY_CLASSNAME(NULL, "player"));
|
||||
if (BuildRoute(m_vecMoveGoal, bits_MF_TO_LOCATION, pPlayer))
|
||||
{
|
||||
|
@ -983,7 +1040,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
break;
|
||||
}
|
||||
|
||||
case TASK_GET_PATH_TO_TARGET: {
|
||||
case TASK_GET_PATH_TO_TARGET:
|
||||
{
|
||||
RouteClear();
|
||||
if (m_hTargetEnt != NULL && MoveToTarget(m_movementActivity, 1))
|
||||
{
|
||||
|
@ -1011,7 +1069,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_GET_PATH_TO_LASTPOSITION: {
|
||||
case TASK_GET_PATH_TO_LASTPOSITION:
|
||||
{
|
||||
m_vecMoveGoal = m_vecLastPosition;
|
||||
|
||||
if (MoveToLocation(m_movementActivity, 2, m_vecMoveGoal))
|
||||
|
@ -1026,7 +1085,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_GET_PATH_TO_BESTSOUND: {
|
||||
case TASK_GET_PATH_TO_BESTSOUND:
|
||||
{
|
||||
CSound* pSound;
|
||||
|
||||
pSound = PBestSound();
|
||||
|
@ -1043,7 +1103,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_GET_PATH_TO_BESTSCENT: {
|
||||
case TASK_GET_PATH_TO_BESTSCENT:
|
||||
{
|
||||
CSound* pScent;
|
||||
|
||||
pScent = PBestScent();
|
||||
|
@ -1061,7 +1122,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case TASK_RUN_PATH: {
|
||||
case TASK_RUN_PATH:
|
||||
{
|
||||
// UNDONE: This is in some default AI and some monsters can't run? -- walk instead?
|
||||
if (LookupActivity(ACT_RUN) != ACTIVITY_NOT_AVAILABLE)
|
||||
{
|
||||
|
@ -1074,7 +1136,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_WALK_PATH: {
|
||||
case TASK_WALK_PATH:
|
||||
{
|
||||
if (pev->movetype == MOVETYPE_FLY)
|
||||
{
|
||||
m_movementActivity = ACT_FLY;
|
||||
|
@ -1090,7 +1153,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_STRAFE_PATH: {
|
||||
case TASK_STRAFE_PATH:
|
||||
{
|
||||
Vector2D vec2DirToPoint;
|
||||
Vector2D vec2RightSide;
|
||||
|
||||
|
@ -1115,7 +1179,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
}
|
||||
|
||||
|
||||
case TASK_WAIT_FOR_MOVEMENT: {
|
||||
case TASK_WAIT_FOR_MOVEMENT:
|
||||
{
|
||||
if (FRouteClear())
|
||||
{
|
||||
TaskComplete();
|
||||
|
@ -1123,16 +1188,19 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
break;
|
||||
}
|
||||
|
||||
case TASK_EAT: {
|
||||
case TASK_EAT:
|
||||
{
|
||||
Eat(pTask->flData);
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_SMALL_FLINCH: {
|
||||
case TASK_SMALL_FLINCH:
|
||||
{
|
||||
m_IdealActivity = GetSmallFlinchActivity();
|
||||
break;
|
||||
}
|
||||
case TASK_DIE: {
|
||||
case TASK_DIE:
|
||||
{
|
||||
RouteClear();
|
||||
|
||||
m_IdealActivity = GetDeathActivity();
|
||||
|
@ -1140,38 +1208,45 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
pev->deadflag = DEAD_DYING;
|
||||
break;
|
||||
}
|
||||
case TASK_SOUND_WAKE: {
|
||||
case TASK_SOUND_WAKE:
|
||||
{
|
||||
AlertSound();
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_SOUND_DIE: {
|
||||
case TASK_SOUND_DIE:
|
||||
{
|
||||
DeathSound();
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_SOUND_IDLE: {
|
||||
case TASK_SOUND_IDLE:
|
||||
{
|
||||
IdleSound();
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_SOUND_PAIN: {
|
||||
case TASK_SOUND_PAIN:
|
||||
{
|
||||
PainSound();
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_SOUND_DEATH: {
|
||||
case TASK_SOUND_DEATH:
|
||||
{
|
||||
DeathSound();
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_SOUND_ANGRY: {
|
||||
case TASK_SOUND_ANGRY:
|
||||
{
|
||||
// sounds are complete as soon as we get here, cause we've already played them.
|
||||
ALERT(at_aiconsole, "SOUND\n");
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_WAIT_FOR_SCRIPT: {
|
||||
case TASK_WAIT_FOR_SCRIPT:
|
||||
{
|
||||
if (!FStringNull(m_pCine->m_iszIdle))
|
||||
{
|
||||
m_pCine->StartSequence((CBaseMonster*)this, m_pCine->m_iszIdle, false);
|
||||
|
@ -1185,18 +1260,21 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
|
||||
break;
|
||||
}
|
||||
case TASK_PLAY_SCRIPT: {
|
||||
case TASK_PLAY_SCRIPT:
|
||||
{
|
||||
pev->movetype = MOVETYPE_FLY;
|
||||
ClearBits(pev->flags, FL_ONGROUND);
|
||||
m_scriptState = SCRIPT_PLAYING;
|
||||
break;
|
||||
}
|
||||
case TASK_ENABLE_SCRIPT: {
|
||||
case TASK_ENABLE_SCRIPT:
|
||||
{
|
||||
m_pCine->DelayStart(false);
|
||||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_PLANT_ON_SCRIPT: {
|
||||
case TASK_PLANT_ON_SCRIPT:
|
||||
{
|
||||
if (m_hTargetEnt != NULL)
|
||||
{
|
||||
pev->origin = m_hTargetEnt->pev->origin; // Plant on target
|
||||
|
@ -1205,7 +1283,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
TaskComplete();
|
||||
break;
|
||||
}
|
||||
case TASK_FACE_SCRIPT: {
|
||||
case TASK_FACE_SCRIPT:
|
||||
{
|
||||
if (m_hTargetEnt != NULL)
|
||||
{
|
||||
pev->ideal_yaw = UTIL_AngleMod(m_hTargetEnt->pev->angles.y);
|
||||
|
@ -1217,7 +1296,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
break;
|
||||
}
|
||||
|
||||
case TASK_SUGGEST_STATE: {
|
||||
case TASK_SUGGEST_STATE:
|
||||
{
|
||||
m_IdealMonsterState = (MONSTERSTATE)(int)pTask->flData;
|
||||
TaskComplete();
|
||||
break;
|
||||
|
@ -1233,7 +1313,8 @@ void CBaseMonster::StartTask(Task_t* pTask)
|
|||
TaskComplete();
|
||||
break;
|
||||
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
ALERT(at_aiconsole, "No StartTask entry for %d\n", (SHARED_TASKS)pTask->iTask);
|
||||
break;
|
||||
}
|
||||
|
@ -1267,15 +1348,18 @@ Schedule_t* CBaseMonster::GetSchedule()
|
|||
{
|
||||
switch (m_MonsterState)
|
||||
{
|
||||
case MONSTERSTATE_PRONE: {
|
||||
case MONSTERSTATE_PRONE:
|
||||
{
|
||||
return GetScheduleOfType(SCHED_BARNACLE_VICTIM_GRAB);
|
||||
break;
|
||||
}
|
||||
case MONSTERSTATE_NONE: {
|
||||
case MONSTERSTATE_NONE:
|
||||
{
|
||||
ALERT(at_aiconsole, "MONSTERSTATE IS NONE!\n");
|
||||
break;
|
||||
}
|
||||
case MONSTERSTATE_IDLE: {
|
||||
case MONSTERSTATE_IDLE:
|
||||
{
|
||||
if (HasConditions(bits_COND_HEAR_SOUND))
|
||||
{
|
||||
return GetScheduleOfType(SCHED_ALERT_FACE);
|
||||
|
@ -1292,7 +1376,8 @@ Schedule_t* CBaseMonster::GetSchedule()
|
|||
}
|
||||
break;
|
||||
}
|
||||
case MONSTERSTATE_ALERT: {
|
||||
case MONSTERSTATE_ALERT:
|
||||
{
|
||||
if (HasConditions(bits_COND_ENEMY_DEAD) && LookupActivity(ACT_VICTORY_DANCE) != ACTIVITY_NOT_AVAILABLE)
|
||||
{
|
||||
return GetScheduleOfType(SCHED_VICTORY_DANCE);
|
||||
|
@ -1320,7 +1405,8 @@ Schedule_t* CBaseMonster::GetSchedule()
|
|||
}
|
||||
break;
|
||||
}
|
||||
case MONSTERSTATE_COMBAT: {
|
||||
case MONSTERSTATE_COMBAT:
|
||||
{
|
||||
if (HasConditions(bits_COND_ENEMY_DEAD))
|
||||
{
|
||||
// clear the current (dead) enemy and try to find another.
|
||||
|
@ -1397,11 +1483,13 @@ Schedule_t* CBaseMonster::GetSchedule()
|
|||
}
|
||||
break;
|
||||
}
|
||||
case MONSTERSTATE_DEAD: {
|
||||
case MONSTERSTATE_DEAD:
|
||||
{
|
||||
return GetScheduleOfType(SCHED_DIE);
|
||||
break;
|
||||
}
|
||||
case MONSTERSTATE_SCRIPT: {
|
||||
case MONSTERSTATE_SCRIPT:
|
||||
{
|
||||
ASSERT(m_pCine != NULL);
|
||||
if (!m_pCine)
|
||||
{
|
||||
|
@ -1412,7 +1500,8 @@ Schedule_t* CBaseMonster::GetSchedule()
|
|||
|
||||
return GetScheduleOfType(SCHED_AISCRIPT);
|
||||
}
|
||||
default: {
|
||||
default:
|
||||
{
|
||||
ALERT(at_aiconsole, "Invalid State for GetSchedule!\n");
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ Task_t tlFollow[] =
|
|||
{
|
||||
{TASK_SET_FAIL_SCHEDULE, (float)SCHED_CANT_FOLLOW}, // If you fail, bail out of follow
|
||||
{TASK_MOVE_TO_TARGET_RANGE, (float)128}, // Move within 128 of target ent (client)
|
||||
// { TASK_SET_SCHEDULE, (float)SCHED_TARGET_FACE },
|
||||
// { TASK_SET_SCHEDULE, (float)SCHED_TARGET_FACE },
|
||||
};
|
||||
|
||||
Schedule_t slFollow[] =
|
||||
|
@ -157,7 +157,7 @@ Task_t tlFollowScared[] =
|
|||
{
|
||||
{TASK_SET_FAIL_SCHEDULE, (float)SCHED_TARGET_CHASE}, // If you fail, follow normally
|
||||
{TASK_MOVE_TO_TARGET_RANGE_SCARED, (float)128}, // Move within 128 of target ent (client)
|
||||
// { TASK_SET_SCHEDULE, (float)SCHED_TARGET_FACE_SCARED },
|
||||
// { TASK_SET_SCHEDULE, (float)SCHED_TARGET_FACE_SCARED },
|
||||
};
|
||||
|
||||
Schedule_t slFollowScared[] =
|
||||
|
@ -478,7 +478,8 @@ void CScientist::StartTask(Task_t* pTask)
|
|||
m_movementActivity = ACT_RUN_SCARED;
|
||||
break;
|
||||
|
||||
case TASK_MOVE_TO_TARGET_RANGE_SCARED: {
|
||||
case TASK_MOVE_TO_TARGET_RANGE_SCARED:
|
||||
{
|
||||
if ((m_hTargetEnt->pev->origin - pev->origin).Length() < 1)
|
||||
TaskComplete();
|
||||
else
|
||||
|
@ -507,7 +508,8 @@ void CScientist::RunTask(Task_t* pTask)
|
|||
Scream();
|
||||
break;
|
||||
|
||||
case TASK_MOVE_TO_TARGET_RANGE_SCARED: {
|
||||
case TASK_MOVE_TO_TARGET_RANGE_SCARED:
|
||||
{
|
||||
if (RANDOM_LONG(0, 63) < 8)
|
||||
Scream();
|
||||
|
||||
|
@ -613,12 +615,14 @@ void CScientist::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
case SCIENTIST_AE_HEAL: // Heal my target (if within range)
|
||||
Heal();
|
||||
break;
|
||||
case SCIENTIST_AE_NEEDLEON: {
|
||||
case SCIENTIST_AE_NEEDLEON:
|
||||
{
|
||||
int oldBody = pev->body;
|
||||
pev->body = (oldBody % NUM_SCIENTIST_HEADS) + NUM_SCIENTIST_HEADS * 1;
|
||||
}
|
||||
break;
|
||||
case SCIENTIST_AE_NEEDLEOFF: {
|
||||
case SCIENTIST_AE_NEEDLEOFF:
|
||||
{
|
||||
int oldBody = pev->body;
|
||||
pev->body = (oldBody % NUM_SCIENTIST_HEADS) + NUM_SCIENTIST_HEADS * 0;
|
||||
}
|
||||
|
@ -1028,7 +1032,8 @@ MONSTERSTATE CScientist::GetIdealState()
|
|||
}
|
||||
break;
|
||||
|
||||
case MONSTERSTATE_COMBAT: {
|
||||
case MONSTERSTATE_COMBAT:
|
||||
{
|
||||
CBaseEntity* pEnemy = m_hEnemy;
|
||||
if (pEnemy != NULL)
|
||||
{
|
||||
|
|
|
@ -270,12 +270,13 @@ void CSoundEnt::Initialize()
|
|||
//=========================================================
|
||||
int CSoundEnt::ISoundsInList(int iListType)
|
||||
{
|
||||
int iThisSound = [=]()
|
||||
{
|
||||
int iThisSound = [=]() {
|
||||
switch (iListType)
|
||||
{
|
||||
case SOUNDLISTTYPE_FREE: return m_iFreeSound;
|
||||
case SOUNDLISTTYPE_ACTIVE: return m_iActiveSound;
|
||||
case SOUNDLISTTYPE_FREE:
|
||||
return m_iFreeSound;
|
||||
case SOUNDLISTTYPE_ACTIVE:
|
||||
return m_iActiveSound;
|
||||
default:
|
||||
ALERT(at_console, "Unknown Sound List Type!\n");
|
||||
return SOUNDLIST_EMPTY;
|
||||
|
|
|
@ -609,7 +609,8 @@ Schedule_t* CSquadMonster::GetScheduleOfType(int iType)
|
|||
switch (iType)
|
||||
{
|
||||
|
||||
case SCHED_CHASE_ENEMY_FAILED: {
|
||||
case SCHED_CHASE_ENEMY_FAILED:
|
||||
{
|
||||
return &slChaseEnemyFailed[0];
|
||||
}
|
||||
|
||||
|
|
|
@ -435,7 +435,8 @@ void CTalkMonster::StartTask(Task_t* pTask)
|
|||
m_movementActivity = ACT_WALK;
|
||||
break;
|
||||
|
||||
case TASK_MOVE_AWAY_PATH: {
|
||||
case TASK_MOVE_AWAY_PATH:
|
||||
{
|
||||
Vector dir = pev->angles;
|
||||
dir.y = pev->ideal_yaw + 180;
|
||||
Vector move;
|
||||
|
@ -476,7 +477,8 @@ void CTalkMonster::RunTask(Task_t* pTask)
|
|||
switch (pTask->iTask)
|
||||
{
|
||||
case TASK_TLK_CLIENT_STARE:
|
||||
case TASK_TLK_LOOK_AT_CLIENT: {
|
||||
case TASK_TLK_LOOK_AT_CLIENT:
|
||||
{
|
||||
// Get edict for one player
|
||||
edict_t* pPlayer = g_engfuncs.pfnPEntityOfEntIndex(1);
|
||||
|
||||
|
@ -519,7 +521,8 @@ void CTalkMonster::RunTask(Task_t* pTask)
|
|||
break;
|
||||
}
|
||||
|
||||
case TASK_FACE_PLAYER: {
|
||||
case TASK_FACE_PLAYER:
|
||||
{
|
||||
// Get edict for one player
|
||||
edict_t* pPlayer = g_engfuncs.pfnPEntityOfEntIndex(1);
|
||||
|
||||
|
@ -552,7 +555,8 @@ void CTalkMonster::RunTask(Task_t* pTask)
|
|||
}
|
||||
break;
|
||||
|
||||
case TASK_WALK_PATH_FOR_UNITS: {
|
||||
case TASK_WALK_PATH_FOR_UNITS:
|
||||
{
|
||||
float distance;
|
||||
|
||||
distance = (m_vecLastPosition - pev->origin).Length2D();
|
||||
|
@ -1206,7 +1210,8 @@ Schedule_t* CTalkMonster::GetScheduleOfType(int Type)
|
|||
else
|
||||
return slIdleStand;
|
||||
|
||||
case SCHED_IDLE_STAND: {
|
||||
case SCHED_IDLE_STAND:
|
||||
{
|
||||
// if never seen player, try to greet him
|
||||
if (!FBitSet(m_bitsSaid, bit_saidHelloPlayer))
|
||||
{
|
||||
|
|
|
@ -674,7 +674,8 @@ void CTentacle::Cycle()
|
|||
case TENTACLE_ANIM_Floor_Tap:
|
||||
case TENTACLE_ANIM_Lev1_Tap:
|
||||
case TENTACLE_ANIM_Lev2_Tap:
|
||||
case TENTACLE_ANIM_Lev3_Tap: {
|
||||
case TENTACLE_ANIM_Lev3_Tap:
|
||||
{
|
||||
Vector vecSrc;
|
||||
UTIL_MakeVectors(pev->angles);
|
||||
|
||||
|
|
|
@ -2119,7 +2119,8 @@ bool CSave::WriteFields(const char* pname, void* pBaseData, TYPEDESCRIPTION* pFi
|
|||
WriteVector(pTest->fieldName, (float*)pOutputData, pTest->fieldSize);
|
||||
break;
|
||||
|
||||
case FIELD_BOOLEAN: {
|
||||
case FIELD_BOOLEAN:
|
||||
{
|
||||
//TODO: need to refactor save game stuff to make this cleaner and reusable
|
||||
//Convert booleans to bytes
|
||||
for (j = 0; j < pTest->fieldSize; j++)
|
||||
|
@ -2338,7 +2339,8 @@ int CRestore::ReadField(void* pBaseData, TYPEDESCRIPTION* pFields, int fieldCoun
|
|||
((float*)pOutputData)[2] = ((float*)pInputData)[2] + position.z;
|
||||
break;
|
||||
|
||||
case FIELD_BOOLEAN: {
|
||||
case FIELD_BOOLEAN:
|
||||
{
|
||||
// Input and Output sizes are different!
|
||||
pOutputData = (char*)pOutputData + j * (sizeof(bool) - gSizes[pTest->fieldType]);
|
||||
const bool value = *((byte*)pInputData) != 0;
|
||||
|
|
|
@ -27,7 +27,7 @@ public:
|
|||
constexpr Vector2D& operator=(const Vector2D&) = default;
|
||||
|
||||
constexpr Vector2D(float X, float Y)
|
||||
: x(X) , y(Y)
|
||||
: x(X), y(Y)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -364,7 +364,8 @@ void CXenTree::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
{
|
||||
switch (pEvent->event)
|
||||
{
|
||||
case TREE_AE_ATTACK: {
|
||||
case TREE_AE_ATTACK:
|
||||
{
|
||||
CBaseEntity* pList[8];
|
||||
bool sound = false;
|
||||
int count = UTIL_EntitiesInBox(pList, 8, m_pTrigger->pev->absmin, m_pTrigger->pev->absmax, FL_MONSTER | FL_CLIENT);
|
||||
|
|
|
@ -192,7 +192,8 @@ void CZombie::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
{
|
||||
switch (pEvent->event)
|
||||
{
|
||||
case ZOMBIE_AE_ATTACK_RIGHT: {
|
||||
case ZOMBIE_AE_ATTACK_RIGHT:
|
||||
{
|
||||
// do stuff for this event.
|
||||
// ALERT( at_console, "Slash right!\n" );
|
||||
CBaseEntity* pHurt = CheckTraceHullAttack(70, gSkillData.zombieDmgOneSlash, DMG_SLASH);
|
||||
|
@ -215,7 +216,8 @@ void CZombie::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case ZOMBIE_AE_ATTACK_LEFT: {
|
||||
case ZOMBIE_AE_ATTACK_LEFT:
|
||||
{
|
||||
// do stuff for this event.
|
||||
// ALERT( at_console, "Slash left!\n" );
|
||||
CBaseEntity* pHurt = CheckTraceHullAttack(70, gSkillData.zombieDmgOneSlash, DMG_SLASH);
|
||||
|
@ -237,7 +239,8 @@ void CZombie::HandleAnimEvent(MonsterEvent_t* pEvent)
|
|||
}
|
||||
break;
|
||||
|
||||
case ZOMBIE_AE_ATTACK_BOTH: {
|
||||
case ZOMBIE_AE_ATTACK_BOTH:
|
||||
{
|
||||
// do stuff for this event.
|
||||
CBaseEntity* pHurt = CheckTraceHullAttack(70, gSkillData.zombieDmgBothSlash, DMG_SLASH);
|
||||
if (pHurt)
|
||||
|
|
|
@ -36,7 +36,7 @@ bool FileSystem_LoadFileSystem()
|
|||
}
|
||||
|
||||
// Determine which filesystem to use.
|
||||
#if defined ( _WIN32 )
|
||||
#if defined(_WIN32)
|
||||
const char* szFsModule = "filesystem_stdio.dll";
|
||||
#elif defined(OSX)
|
||||
const char* szFsModule = "filesystem_stdio.dylib";
|
||||
|
|
|
@ -105,7 +105,7 @@ public:
|
|||
|
||||
int Write(const void* input, int size);
|
||||
|
||||
template<typename... Args>
|
||||
template <typename... Args>
|
||||
int Printf(const char* format, Args&&... args)
|
||||
{
|
||||
return g_pFileSystem->FPrintf(_handle, format, std::forward<Args>(args)...);
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
|
||||
// Versioning
|
||||
// There are two versioning cases that are handled by this:
|
||||
// 1. You add functions to the end of an interface, so it is binary compatible with the previous interface. In this case,
|
||||
// 1. You add functions to the end of an interface, so it is binary compatible with the previous interface. In this case,
|
||||
// you need two EXPOSE_INTERFACEs: one to expose your class as the old interface and one to expose it as the new interface.
|
||||
// 2. You update an interface so it's not compatible anymore (but you still want to be able to expose the old interface
|
||||
// for legacy code). In this case, you need to make a new version name for your new interface, and make a wrapper interface and
|
||||
// 2. You update an interface so it's not compatible anymore (but you still want to be able to expose the old interface
|
||||
// for legacy code). In this case, you need to make a new version name for your new interface, and make a wrapper interface and
|
||||
// expose it for the old interface.
|
||||
|
||||
//#if _MSC_VER >= 1300 // VC7
|
||||
|
@ -22,19 +22,18 @@
|
|||
|
||||
#include "Platform.h"
|
||||
|
||||
void *Sys_GetProcAddress( void *pModuleHandle, const char *pName );
|
||||
void* Sys_GetProcAddress(void* pModuleHandle, const char* pName);
|
||||
|
||||
// All interfaces derive from this.
|
||||
class IBaseInterface
|
||||
{
|
||||
public:
|
||||
|
||||
virtual ~IBaseInterface() {}
|
||||
virtual ~IBaseInterface() {}
|
||||
};
|
||||
|
||||
|
||||
#define CREATEINTERFACE_PROCNAME "CreateInterface"
|
||||
typedef IBaseInterface* (*CreateInterfaceFn)(const char *pName, int *pReturnCode);
|
||||
#define CREATEINTERFACE_PROCNAME "CreateInterface"
|
||||
typedef IBaseInterface* (*CreateInterfaceFn)(const char* pName, int* pReturnCode);
|
||||
|
||||
|
||||
typedef IBaseInterface* (*InstantiateInterfaceFn)();
|
||||
|
@ -44,15 +43,14 @@ typedef IBaseInterface* (*InstantiateInterfaceFn)();
|
|||
class InterfaceReg
|
||||
{
|
||||
public:
|
||||
InterfaceReg(InstantiateInterfaceFn fn, const char *pName);
|
||||
InterfaceReg(InstantiateInterfaceFn fn, const char* pName);
|
||||
|
||||
public:
|
||||
InstantiateInterfaceFn m_CreateFn;
|
||||
const char* m_pName;
|
||||
|
||||
InstantiateInterfaceFn m_CreateFn;
|
||||
const char *m_pName;
|
||||
|
||||
InterfaceReg *m_pNext; // For the global list.
|
||||
static InterfaceReg *s_pInterfaceRegs;
|
||||
InterfaceReg* m_pNext; // For the global list.
|
||||
static InterfaceReg* s_pInterfaceRegs;
|
||||
};
|
||||
|
||||
|
||||
|
@ -71,37 +69,36 @@ public:
|
|||
#define EXPOSE_INTERFACE_FN(functionName, interfaceName, versionName) \
|
||||
static InterfaceReg __g_Create##className##_reg(functionName, versionName);
|
||||
|
||||
#define EXPOSE_INTERFACE(className, interfaceName, versionName) \
|
||||
static IBaseInterface* __Create##className##_interface() {return (interfaceName *)new className;}\
|
||||
static InterfaceReg __g_Create##className##_reg(__Create##className##_interface, versionName );
|
||||
#define EXPOSE_INTERFACE(className, interfaceName, versionName) \
|
||||
static IBaseInterface* __Create##className##_interface() { return (interfaceName*)new className; } \
|
||||
static InterfaceReg __g_Create##className##_reg(__Create##className##_interface, versionName);
|
||||
|
||||
// Use this to expose a singleton interface with a global variable you've created.
|
||||
#define EXPOSE_SINGLE_INTERFACE_GLOBALVAR(className, interfaceName, versionName, globalVarName) \
|
||||
static IBaseInterface* __Create##className##interfaceName##_interface() {return (IBaseInterface *)&globalVarName;}\
|
||||
#define EXPOSE_SINGLE_INTERFACE_GLOBALVAR(className, interfaceName, versionName, globalVarName) \
|
||||
static IBaseInterface* __Create##className##interfaceName##_interface() { return (IBaseInterface*)&globalVarName; } \
|
||||
static InterfaceReg __g_Create##className##interfaceName##_reg(__Create##className##interfaceName##_interface, versionName);
|
||||
|
||||
// Use this to expose a singleton interface. This creates the global variable for you automatically.
|
||||
#define EXPOSE_SINGLE_INTERFACE(className, interfaceName, versionName) \
|
||||
static className __g_##className##_singleton;\
|
||||
static className __g_##className##_singleton; \
|
||||
EXPOSE_SINGLE_INTERFACE_GLOBALVAR(className, interfaceName, versionName, __g_##className##_singleton)
|
||||
|
||||
// This function is automatically exported and allows you to access any interfaces exposed with the above macros.
|
||||
// if pReturnCode is set, it will return one of the following values
|
||||
// extend this for other error conditions/code
|
||||
enum
|
||||
enum
|
||||
{
|
||||
IFACE_OK = 0,
|
||||
IFACE_FAILED
|
||||
};
|
||||
|
||||
|
||||
extern "C"
|
||||
{
|
||||
DLLEXPORT IBaseInterface* CreateInterface(const char *pName, int *pReturnCode);
|
||||
extern "C" {
|
||||
DLLEXPORT IBaseInterface* CreateInterface(const char* pName, int* pReturnCode);
|
||||
};
|
||||
|
||||
|
||||
extern CreateInterfaceFn Sys_GetFactoryThis( void );
|
||||
extern CreateInterfaceFn Sys_GetFactoryThis(void);
|
||||
|
||||
// load/unload components
|
||||
class CSysModule;
|
||||
|
@ -111,9 +108,9 @@ class CSysModule;
|
|||
// The factory for that module should be passed on to dependent components for
|
||||
// proper versioning.
|
||||
//-----------------------------------------------------------------------------
|
||||
extern CSysModule *Sys_LoadModule( const char *pModuleName );
|
||||
extern void Sys_UnloadModule( CSysModule *pModule );
|
||||
extern CSysModule* Sys_LoadModule(const char* pModuleName);
|
||||
extern void Sys_UnloadModule(CSysModule* pModule);
|
||||
|
||||
extern CreateInterfaceFn Sys_GetFactory( CSysModule *pModule );
|
||||
extern CreateInterfaceFn Sys_GetFactory(CSysModule* pModule);
|
||||
|
||||
//#endif // MSVC 6.0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue