mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-08-31 17:12:45 -04:00
Discover more chr hidden flags
This commit is contained in:
@@ -2114,20 +2114,18 @@
|
||||
* If the pad is occupied then a reasonable attempt will be made to place the
|
||||
* chr near it. This attempt may fail if the pad is occupied by several chrs.
|
||||
*
|
||||
* If allowonscreen is FALSE, the chr will not be moved if the pad is on screen.
|
||||
* If force is TRUE, background collision checks will be skipped and the chr
|
||||
* will be moved even if the pad is on screen.
|
||||
*
|
||||
* If allowonscreen is TRUE, the chr will be moved even if the pad is on screen.
|
||||
* This may cause them to appear out of nowhere.
|
||||
*
|
||||
* If allowonscreen is 88 then the pad number will be interpreted as a chr
|
||||
* number and the chr will be moved to the other chr instead. This is used to
|
||||
* warp a co-op AI buddy to the player when using the stealth command.
|
||||
* If force is 88 then the pad number will be interpreted as a chr number and
|
||||
* the chr will be moved to the other chr instead. This is used to warp a co-op
|
||||
* AI buddy to the player when using the stealth command.
|
||||
*/
|
||||
#define chr_move_to_pad(chr, pad, allowonscreen, label) \
|
||||
#define chr_move_to_pad(chr, pad, force, label) \
|
||||
mkshort(0x00e2), \
|
||||
chr, \
|
||||
mkshort(pad), \
|
||||
allowonscreen, \
|
||||
force, \
|
||||
label,
|
||||
|
||||
#define cmd00e3(chr) \
|
||||
|
||||
+40
-39
@@ -535,48 +535,49 @@
|
||||
#define CHRFLAG1_PUNCHHARDER 0x80000000 // Punches deal 6x the usual damage. Must not have CHRFLAG0_CHUCKNORRIS
|
||||
|
||||
// chr->hidden
|
||||
#define CHRHFLAG_00000001 0x00000001 // Set when chr drops weapon
|
||||
#define CHRHFLAG_IS_HEARING_TARGET 0x00000002 // Not used in scripts
|
||||
#define CHRHFLAG_FIRINGLEFT 0x00000004
|
||||
#define CHRHFLAG_FIRINGRIGHT 0x00000008
|
||||
#define CHRHFLAG_BLOCKINGDOOR 0x00000010
|
||||
#define CHRHFLAG_REAPED 0x00000020
|
||||
#define CHRHFLAG_TIMER_RUNNING 0x00000040
|
||||
#define CHRHFLAG_00000080 0x00000080 // Not used in scripts
|
||||
#define CHRHFLAG_PERIMDISABLED 0x00000100
|
||||
#define CHRHFLAG_00000200 0x00000200 // Not used in scripts
|
||||
#define CHRHFLAG_PASSIVE 0x00000400
|
||||
#define CHRHFLAG_00000800 0x00000800
|
||||
#define CHRHFLAG_UNTARGETABLE 0x00001000 // Player is disgused on Rescue, or just warped
|
||||
#define CHRHFLAG_00002000 0x00002000 // Globals, Rescue guards once disguised
|
||||
#define CHRHFLAG_TRIGGER_BUDDY_WARP 0x00004000
|
||||
#define CHRHFLAG_PERFECTACCURACY 0x00008000
|
||||
#define CHRHFLAG_DISGUISE_UNCOVERED 0x00010000
|
||||
#define CHRHFLAG_00020000 0x00020000 // Used in every stage, on Jo and other chrs. Only ever set, never unset or read.
|
||||
#define CHRHFLAG_00040000 0x00040000 // Not used in scripts
|
||||
#define CHRHFLAG_DISGUISED 0x00080000
|
||||
#define CHRHFLAG_00100000 0x00100000 // Set before warping to pad, never unset or read
|
||||
#define CHRHFLAG_NEEDANIM 0x00200000
|
||||
#define CHRHFLAG_00400000 0x00400000 // Set in Chicago, G5, AF1, Defense, Attack Ship, Skedar Ruins, Maian SOS, WAR
|
||||
#define CHRHFLAG_00800000 0x00800000 // Not used in scripts
|
||||
#define CHRHFLAG_ASKEDABOUTGUN 0x01000000
|
||||
#define CHRHFLAG_ALMOSTUNCOVERED 0x02000000
|
||||
#define CHRHFLAG_04000000 0x04000000 // Related to disguise and detection
|
||||
#define CHRHFLAG_DONTSHOOTME 0x08000000 // Globals, Villa and G5
|
||||
#define CHRHFLAG_INFINITESHIELD 0x10000000
|
||||
#define CHRHFLAG_CLOAKED 0x20000000
|
||||
#define CHRHFLAG_ANTINONINTERACTABLE 0x40000000
|
||||
#define CHRHFLAG_DETECTED 0x80000000 // If set on player
|
||||
#define CHRHFLAG_PSYCHOSISED 0x80000000 // If set on AI
|
||||
#define CHRHFLAG_DROPPINGITEM 0x00000001 // Chr is currently dropping an item
|
||||
#define CHRHFLAG_IS_HEARING_TARGET 0x00000002 // Chr is currently hearing their target
|
||||
#define CHRHFLAG_FIRINGLEFT 0x00000004
|
||||
#define CHRHFLAG_FIRINGRIGHT 0x00000008
|
||||
#define CHRHFLAG_BLOCKINGDOOR 0x00000010
|
||||
#define CHRHFLAG_DELETING 0x00000020
|
||||
#define CHRHFLAG_TIMER_RUNNING 0x00000040
|
||||
#define CHRHFLAG_FIRESOUNDDONE 0x00000080
|
||||
#define CHRHFLAG_PERIMDISABLED 0x00000100
|
||||
#define CHRHFLAG_CONSIDERPROXIES 0x00000200 // Used for optimisation
|
||||
#define CHRHFLAG_SPAWNONLYSURROUNDING 0x00000200 // When spawning, only try nearby positions rather than the given position
|
||||
#define CHRHFLAG_PASSIVE 0x00000400
|
||||
#define CHRHFLAG_00000800 0x00000800
|
||||
#define CHRHFLAG_UNTARGETABLE 0x00001000 // Player is disgused on Rescue, or just warped
|
||||
#define CHRHFLAG_DONTLOSETARGET 0x00002000 // Don't lose target when target has CHRHFLAG_UNTARGETABLE
|
||||
#define CHRHFLAG_TRIGGER_BUDDY_WARP 0x00004000
|
||||
#define CHRHFLAG_PERFECTACCURACY 0x00008000 // Duel opponents
|
||||
#define CHRHFLAG_DISGUISE_UNCOVERED 0x00010000
|
||||
#define CHRHFLAG_00020000 0x00020000
|
||||
#define CHRHFLAG_00040000 0x00040000 // Not used
|
||||
#define CHRHFLAG_DISGUISED 0x00080000
|
||||
#define CHRHFLAG_WARPONSCREEN 0x00100000 // Allow chr warp to occur onscreen
|
||||
#define CHRHFLAG_NEEDANIM 0x00200000
|
||||
#define CHRHFLAG_BASICGUARD 0x00400000 // Can be used for anti, have movement stopped during high lag, and warped out of lift doorways
|
||||
#define CHRHFLAG_ONBONDSSCREEN 0x00800000 // Anti mode: chr is currently on Bond's screen so shouldn't be used for spawning anti
|
||||
#define CHRHFLAG_ASKEDABOUTGUN 0x01000000
|
||||
#define CHRHFLAG_ALMOSTUNCOVERED 0x02000000
|
||||
#define CHRHFLAG_ASKEDTHENSHOT 0x04000000 // Chr asked player about their gun and then was shot
|
||||
#define CHRHFLAG_DONTSHOOTME 0x08000000 // AI buddy must use melee attacks on this chr rather than shoot
|
||||
#define CHRHFLAG_INFINITESHIELD 0x10000000
|
||||
#define CHRHFLAG_CLOAKED 0x20000000
|
||||
#define CHRHFLAG_ANTINONINTERACTABLE 0x40000000
|
||||
#define CHRHFLAG_DETECTED 0x80000000 // If set on player
|
||||
#define CHRHFLAG_PSYCHOSISED 0x80000000 // If set on AI
|
||||
|
||||
// chr->hidden2
|
||||
#define CHRH2FLAG_HIDDENFORCUTSCENE 0x0001
|
||||
#define CHRH2FLAG_SHIELDHIT 0x0002 // Turns off when shield no longer visible
|
||||
#define CHRH2FLAG_0004 0x0004
|
||||
#define CHRH2FLAG_AUTOANIM 0x0004 // Do automatic look up/down anims for multiplayer third person
|
||||
#define CHRH2FLAG_BLUESIGHT 0x0008
|
||||
#define CHRH2FLAG_TICKDURINGAUTOCUT 0x0010
|
||||
#define CHRH2FLAG_0020 0x0020
|
||||
#define CHRH2FLAG_0040 0x0040
|
||||
#define CHRH2FLAG_FIRESOUNDDONE 0x0020
|
||||
#define CHRH2FLAG_CONSIDERPROXIES 0x0040
|
||||
#define CHRH2FLAG_SPAWNED 0x0080
|
||||
#define CHRH2FLAG_HEADSHOTTED 0x1000
|
||||
|
||||
@@ -3705,14 +3706,14 @@
|
||||
#define SPAWNFLAG_FORCESUNGLASSES 0x00000001 // 100% chance of wearing sunglasses if head model supports it
|
||||
#define SPAWNFLAG_MAYBESUNGLASSES 0x00000002 // 50% chance of wearing sunglasses if head model supports it
|
||||
#define SPAWNFLAG_INVINCIBLE 0x00000008
|
||||
#define SPAWNFLAG_00000010 0x00000010
|
||||
#define SPAWNFLAG_ALLOWONSCREEN 0x00000010
|
||||
#define SPAWNFLAG_ONLYONA 0x00000020
|
||||
#define SPAWNFLAG_ONLYONSA 0x00000040
|
||||
#define SPAWNFLAG_ONLYONPA 0x00000080
|
||||
#define SPAWNFLAG_IGNORECOLLISION 0x00000100 // For initial chr placement only
|
||||
#define SPAWNFLAG_00000200 0x00000200
|
||||
#define SPAWNFLAG_BASICGUARD 0x00000200 // Can be used for anti, have movement stopped during high lag, and warped out of lift doorways
|
||||
#define SPAWNFLAG_ANTINONINTERACTABLE 0x00000400
|
||||
#define SPAWNFLAG_DONTSHOOTME 0x00000800
|
||||
#define SPAWNFLAG_DONTSHOOTME 0x00000800 // AI buddy must use melee attacks on this chr rather than shoot
|
||||
#define SPAWNFLAG_HIDDEN 0x00001000
|
||||
#define SPAWNFLAG_NOBLOOD 0x00002000
|
||||
#define SPAWNFLAG_FIXEDHEIGHT 0x00004000 // By default, chr heights vary slightly. This disables it.
|
||||
|
||||
@@ -18,7 +18,7 @@ bool chr0f01f378(struct model *model, struct coord *arg1, struct coord *arg2, f3
|
||||
s32 chrsGetNumFree(void);
|
||||
s16 chrsGetNextUnusedChrnum(void);
|
||||
struct prop *chr0f020b14(struct prop *prop, struct model *model, struct coord *pos, s16 *rooms, f32 arg3, u8 *ailist);
|
||||
void chrRemove(struct prop *prop, bool removechr);
|
||||
void chrRemove(struct prop *prop, bool free);
|
||||
void chrUpdateAimProperties(struct chrdata *chr);
|
||||
void chrFlinchBody(struct chrdata *chr);
|
||||
void chrFlinchHead(struct chrdata *chr, f32 arg1);
|
||||
|
||||
@@ -134,7 +134,7 @@ void chrTickSidestep(struct chrdata *chr);
|
||||
void chrTickJumpOut(struct chrdata *chr);
|
||||
void chrTickStartAlarm(struct chrdata *chr);
|
||||
void chrTickSurprised(struct chrdata *chr);
|
||||
void chrCreateFireslot(struct chrdata *chr, s32 handnum, bool withsound, bool withbeam, struct coord *from, struct coord *to);
|
||||
void chrUpdateFireslot(struct chrdata *chr, s32 handnum, bool withsound, bool withbeam, struct coord *from, struct coord *to);
|
||||
f32 chrGetInverseTheta(struct chrdata *chr);
|
||||
f32 chrGetAimAngle(struct chrdata *chr);
|
||||
f32 chrGetPitchAngle(struct chrdata *chr);
|
||||
@@ -206,14 +206,14 @@ bool chrSetPadPresetToPadOnRouteToTarget(struct chrdata *chr);
|
||||
bool chrIsPosOffScreen(struct coord *pos, s16 *rooms);
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
bool chrAdjustPosForSpawn(f32 chrradius, struct coord *pos, s16 *rooms, f32 angle, bool arg4, bool arg5, bool arg6);
|
||||
bool chrAdjustPosForSpawn(f32 chrradius, struct coord *pos, s16 *rooms, f32 angle, bool allowonscreen, bool force, bool onlysurrounding);
|
||||
#else
|
||||
bool chrAdjustPosForSpawn(f32 chrradius, struct coord *pos, s16 *rooms, f32 angle, bool arg4, bool arg5);
|
||||
bool chrAdjustPosForSpawn(f32 chrradius, struct coord *pos, s16 *rooms, f32 angle, bool allowonscreen, bool force);
|
||||
#endif
|
||||
|
||||
struct prop *chrSpawnAtCoord(s32 body, s32 head, struct coord *pos, s16 *room, f32 angle, u8 *ailist, u32 spawnflags);
|
||||
bool chrIsPropPresetBlockingSightToTarget(struct chrdata *chr);
|
||||
bool chrMoveToPos(struct chrdata *chr, struct coord *pos, s16 *room, f32 angle, bool allowonscreen);
|
||||
bool chrMoveToPos(struct chrdata *chr, struct coord *pos, s16 *room, f32 angle, bool ignorebg);
|
||||
bool chrCheckCoverOutOfSight(struct chrdata *chr, s32 covernum, bool soft);
|
||||
s32 chrAssignCoverByCriteria(struct chrdata *chr, u16 arg1, s32 arg2);
|
||||
s32 chrAssignCoverAwayFromDanger(struct chrdata *chr, s32 mindist, s32 maxdist);
|
||||
|
||||
Reference in New Issue
Block a user