|
35 | 35 | #define SF_BIGMOM_NOBABYCRABS SF_MONSTER_DONT_DROP_GUN
|
36 | 36 | #define SF_MONSTERCLIP_BABYCRABS SF_MONSTER_SPECIAL_FLAG
|
37 | 37 |
|
| 38 | +enum |
| 39 | +{ |
| 40 | + LAYCRABS_NOCHANGE = 0, |
| 41 | + LAYCRABS_ON, |
| 42 | + LAYCRABS_OFF, |
| 43 | + LAYCRABS_TOGGLE, |
| 44 | +}; |
| 45 | + |
38 | 46 | // AI Nodes for Big Momma
|
39 | 47 | class CInfoBM : public CPointEntity
|
40 | 48 | {
|
@@ -92,6 +100,11 @@ void CInfoBM::KeyValue( KeyValueData* pkvd )
|
92 | 100 | m_preSequence = ALLOC_STRING( pkvd->szValue );
|
93 | 101 | pkvd->fHandled = true;
|
94 | 102 | }
|
| 103 | + else if( FStrEq( pkvd->szKeyName, "laycrabs" ) ) |
| 104 | + { |
| 105 | + pev->weapons = atoi( pkvd->szValue ); |
| 106 | + pkvd->fHandled = true; |
| 107 | + } |
95 | 108 | else
|
96 | 109 | CPointEntity::KeyValue( pkvd );
|
97 | 110 | }
|
@@ -268,6 +281,16 @@ class CBigMomma : public CBaseMonster
|
268 | 281 | return pev->angles.y;
|
269 | 282 | }
|
270 | 283 |
|
| 284 | + int GetNodeLayCrabs( void ) |
| 285 | + { |
| 286 | + CInfoBM *pTarget = GetTargetInfoBM(); |
| 287 | + if( pTarget ) |
| 288 | + { |
| 289 | + return pTarget->pev->weapons; |
| 290 | + } |
| 291 | + return 0; |
| 292 | + } |
| 293 | + |
271 | 294 | // Restart the crab count on each new level
|
272 | 295 | void OverrideReset( void )
|
273 | 296 | {
|
@@ -1052,6 +1075,32 @@ void CBigMomma::StartTask( Task_t *pTask )
|
1052 | 1075 | SetState( MONSTERSTATE_ALERT );
|
1053 | 1076 | }
|
1054 | 1077 |
|
| 1078 | + { |
| 1079 | + const int layCrabs = GetNodeLayCrabs(); |
| 1080 | + switch (layCrabs) { |
| 1081 | + case LAYCRABS_OFF: |
| 1082 | + SetBits(pev->spawnflags, SF_BIGMOM_NOBABYCRABS); |
| 1083 | + break; |
| 1084 | + case LAYCRABS_ON: |
| 1085 | + ClearBits(pev->spawnflags, SF_BIGMOM_NOBABYCRABS); |
| 1086 | + break; |
| 1087 | + case LAYCRABS_TOGGLE: |
| 1088 | + { |
| 1089 | + if (FBitSet(pev->spawnflags, SF_BIGMOM_NOBABYCRABS)) |
| 1090 | + { |
| 1091 | + ClearBits(pev->spawnflags, SF_BIGMOM_NOBABYCRABS); |
| 1092 | + } |
| 1093 | + else |
| 1094 | + { |
| 1095 | + SetBits(pev->spawnflags, SF_BIGMOM_NOBABYCRABS); |
| 1096 | + } |
| 1097 | + } |
| 1098 | + break; |
| 1099 | + default: |
| 1100 | + break; |
| 1101 | + } |
| 1102 | + } |
| 1103 | + |
1055 | 1104 | const float delay = GetNodeDelay();
|
1056 | 1105 | if (g_modFeatures.bigmomma_wait_fix)
|
1057 | 1106 | {
|
|
0 commit comments