Use dude physics as base for debris physics

Remove dude flags commands
Update kModernSlopeChanger
Add stealth dude flag
Update for sector pause/continue motion

# Conflicts:
#	source/blood/src/db.h
#	source/blood/src/nnexts.cpp
#	source/blood/src/nnexts.h

# Conflicts:
#	source/blood/src/nnexts.cpp
This commit is contained in:
NoOneBlood 2021-01-07 15:33:20 +03:00 committed by Christoph Oelckers
parent 7fa690082e
commit f433c6ee11
6 changed files with 641 additions and 260 deletions

View file

@ -6431,6 +6431,7 @@ spritetype *actSpawnDude(spritetype *pSource, short nType, int a3, int a4)
pXSprite2->dudeGuard = pXSource->dudeGuard; pXSprite2->dudeGuard = pXSource->dudeGuard;
pXSprite2->dudeAmbush = pXSource->dudeAmbush; pXSprite2->dudeAmbush = pXSource->dudeAmbush;
pXSprite2->dudeFlag4 = pXSource->dudeFlag4; pXSprite2->dudeFlag4 = pXSource->dudeFlag4;
pXSprite2->unused1 = pXSource->unused1;
break; break;
} }
} }

View file

@ -1815,12 +1815,12 @@ void aiInitSprite(spritetype *pSprite)
bool uwater = spriteIsUnderwater(pSprite); bool uwater = spriteIsUnderwater(pSprite);
if (stateTimer > 0) { if (stateTimer > 0) {
if (uwater) aiPatrolState(pSprite, kAiStatePatrolWaitW); if (uwater) aiPatrolState(pSprite, kAiStatePatrolWaitW);
else if (pXSprite->unused2) aiPatrolState(pSprite, kAiStatePatrolWaitC); else if (pXSprite->unused1 & kDudeFlagCrouch) aiPatrolState(pSprite, kAiStatePatrolWaitC);
else aiPatrolState(pSprite, kAiStatePatrolWaitL); else aiPatrolState(pSprite, kAiStatePatrolWaitL);
pXSprite->stateTimer = stateTimer; // restore state timer pXSprite->stateTimer = stateTimer; // restore state timer
} }
else if (uwater) aiPatrolState(pSprite, kAiStatePatrolMoveW); else if (uwater) aiPatrolState(pSprite, kAiStatePatrolMoveW);
else if (pXSprite->unused2) aiPatrolState(pSprite, kAiStatePatrolMoveC); else if (pXSprite->unused1 & kDudeFlagCrouch) aiPatrolState(pSprite, kAiStatePatrolMoveC);
else aiPatrolState(pSprite, kAiStatePatrolMoveL); else aiPatrolState(pSprite, kAiStatePatrolMoveL);
} }

View file

@ -1686,6 +1686,7 @@ spritetype* genDudeSpawn(spritetype* pSprite, int nDist) {
pXDude->dudeGuard = pXSource->dudeGuard; pXDude->dudeGuard = pXSource->dudeGuard;
pXDude->dudeAmbush = pXSource->dudeAmbush; pXDude->dudeAmbush = pXSource->dudeAmbush;
pXDude->dudeFlag4 = pXSource->dudeFlag4; pXDude->dudeFlag4 = pXSource->dudeFlag4;
pXDude->unused1 = pXSource->unused1;
break; break;
} }
} }
@ -1761,6 +1762,7 @@ void genDudeTransform(spritetype* pSprite) {
pXSprite->dudeDeaf = pXIncarnation->dudeDeaf; pXSprite->dudeDeaf = pXIncarnation->dudeDeaf;
pXSprite->dudeAmbush = pXIncarnation->dudeAmbush; pXSprite->dudeAmbush = pXIncarnation->dudeAmbush;
pXSprite->dudeFlag4 = pXIncarnation->dudeFlag4; pXSprite->dudeFlag4 = pXIncarnation->dudeFlag4;
pXSprite->unused1 = pXIncarnation->unused1;
pXSprite->dropMsg = pXIncarnation->dropMsg; pXSprite->dropMsg = pXIncarnation->dropMsg;
pXSprite->key = pXIncarnation->key; pXSprite->key = pXIncarnation->key;

View file

@ -117,15 +117,8 @@ kCmdWallTouch = 52,
#ifdef NOONE_EXTENSIONS #ifdef NOONE_EXTENSIONS
kCmdSectorMotionPause = 13, // stops motion of the sector kCmdSectorMotionPause = 13, // stops motion of the sector
kCmdSectorMotionContinue = 14, // continues motion of the sector kCmdSectorMotionContinue = 14, // continues motion of the sector
kCmdDudeFlagsSet = 15, // copy dudeFlags from sprite to dude
kCmdModernUse = 53, // used by most of modern types kCmdModernUse = 53, // used by most of modern types
kCmdModernPatrolOff = 54, // to manipulate dudeFlags
kCmdModernPatrolOn = 55, // to manipulate dudeFlags
kCmdModernDeafOff = 56, // to manipulate dudeFlags
kCmdModernDeafOn = 57, // to manipulate dudeFlags
kCmdModernBlindOff = 58, // to manipulate dudeFlags
kCmdModernBlindOn = 59, // to manipulate dudeFlags
kCmdModernAlarmOff = 60, // to manipulate dudeFlags
kCmdModernAlarmOn = 61, // to manipulate dudeFlags
#endif #endif
kCmdNumberic = 64, // 64: 0, 65: 1 and so on up to 255 kCmdNumberic = 64, // 64: 0, 65: 1 and so on up to 255

File diff suppressed because it is too large Load diff

View file

@ -53,6 +53,15 @@ enum
kPhysDebrisSwim = 0x0016, // *debris* can swim underwater (instead of drowning) kPhysDebrisSwim = 0x0016, // *debris* can swim underwater (instead of drowning)
kPhysDebrisVector = 0x0400, // *debris* can be affected by vector weapons kPhysDebrisVector = 0x0400, // *debris* can be affected by vector weapons
kPhysDebrisExplode = 0x0800, // *debris* can be affected by explosions kPhysDebrisExplode = 0x0800, // *debris* can be affected by explosions
/*
// additional physics attributes for debris sprites
#define kPhysDebrisFloat 0x0008 // *debris* slowly goes up and down from it's position
#define kPhysDebrisFly 0x0010 // *debris* affected by negative gravity (fly instead of falling)
#define kPhysDebrisSwim 0x0020 // *debris* can swim underwater (instead of drowning)
#define kPhysDebrisTouch 0x0040 // *debris* can be moved via touch
//#define kPhysDebrisPush 0x0080 // *debris* can be moved via push
#define kPhysDebrisVector 0x0400 // *debris* can be affected by vector weapons
*/
// *modern types only hitag* // *modern types only hitag*
kModernTypeFlag0 = 0x0000, kModernTypeFlag0 = 0x0000,
@ -71,7 +80,10 @@ enum
#define kMaxPatrolCrouchVelocity (kMaxPatrolVelocity >> 1) #define kMaxPatrolCrouchVelocity (kMaxPatrolVelocity >> 1)
#define kMaxPatrolSpotValue 500 #define kMaxPatrolSpotValue 500
#define kDudeFlagStealth 0x0001
#define kDudeFlagCrouch 0x0002
#define kSlopeDist 0x20
// modern statnums // modern statnums
enum { enum {
@ -150,10 +162,10 @@ kCondSpriteMax = 600,
}; };
enum { enum {
kCondSerialSector = 100000, kCondSerialSector = 10000,
kCondSerialWall = 200000, kCondSerialWall = 20000,
kCondSerialSprite = 300000, kCondSerialSprite = 30000,
kCondSerialMax = 400000, kCondSerialMax = 40000,
}; };
// - STRUCTS ------------------------------------------------------------------ // - STRUCTS ------------------------------------------------------------------
@ -215,8 +227,6 @@ struct TRCONDITION {
OBJECTS_TO_TRACK obj[kMaxTracedObjects]; OBJECTS_TO_TRACK obj[kMaxTracedObjects];
}; };
// - VARIABLES ------------------------------------------------------------------ // - VARIABLES ------------------------------------------------------------------
extern bool gModernMap; extern bool gModernMap;
extern bool gTeamsSpawnUsed; extern bool gTeamsSpawnUsed;
@ -259,6 +269,7 @@ void sfxPlayVectorSound(spritetype* pSprite, int vectorId);
// ------------------------------------------------------------------------- // // ------------------------------------------------------------------------- //
int debrisGetIndex(int nSprite); int debrisGetIndex(int nSprite);
int debrisGetFreeIndex(void); int debrisGetFreeIndex(void);
void debrisBubble(int nSprite);
void debrisMove(int listIndex); void debrisMove(int listIndex);
void debrisConcuss(int nOwner, int listIndex, int x, int y, int z, int dmg); void debrisConcuss(int nOwner, int listIndex, int x, int y, int z, int dmg);
// ------------------------------------------------------------------------- // // ------------------------------------------------------------------------- //