mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-02-09 09:10:51 +00:00
Added MF8_SEEFRIENDLYMONSTERS.
Non-friendly monsters with this flag on will be able to attack friendly monsters on sight.
This commit is contained in:
parent
9963b5a57f
commit
dbf707b83b
3 changed files with 30 additions and 15 deletions
|
@ -423,7 +423,8 @@ enum ActorFlag8
|
||||||
MF8_MAP07BOSS2 = 0x00800000, // MBF21 boss death.
|
MF8_MAP07BOSS2 = 0x00800000, // MBF21 boss death.
|
||||||
MF8_AVOIDHAZARDS = 0x01000000, // MBF AI enhancement.
|
MF8_AVOIDHAZARDS = 0x01000000, // MBF AI enhancement.
|
||||||
MF8_STAYONLIFT = 0x02000000, // MBF AI enhancement.
|
MF8_STAYONLIFT = 0x02000000, // MBF AI enhancement.
|
||||||
MF8_DONTFOLLOWPLAYERS = 0x04000000, // [inkoalwetrust] Friendly monster will not follow players.
|
MF8_DONTFOLLOWPLAYERS = 0x04000000, // [inkoalawetrust] Friendly monster will not follow players.
|
||||||
|
MF8_SEEFRIENDLYMONSTERS = 0X08000000, // [inkoalawetrust] Hostile monster can see friendly monsters.
|
||||||
};
|
};
|
||||||
|
|
||||||
// --- mobj.renderflags ---
|
// --- mobj.renderflags ---
|
||||||
|
|
|
@ -1555,6 +1555,8 @@ AActor *LookForEnemiesInBlock (AActor *lookee, int index, void *extparam)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
other = NULL;
|
other = NULL;
|
||||||
|
if (lookee->flags & MF_FRIENDLY)
|
||||||
|
{
|
||||||
if (link->flags & MF_FRIENDLY)
|
if (link->flags & MF_FRIENDLY)
|
||||||
{
|
{
|
||||||
if (!lookee->IsFriend(link))
|
if (!lookee->IsFriend(link))
|
||||||
|
@ -1577,6 +1579,11 @@ AActor *LookForEnemiesInBlock (AActor *lookee, int index, void *extparam)
|
||||||
{
|
{
|
||||||
other = link;
|
other = link;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else if (lookee->flags8 & MF8_SEEFRIENDLYMONSTERS && link->flags & MF_FRIENDLY)
|
||||||
|
{
|
||||||
|
other = link;
|
||||||
|
}
|
||||||
|
|
||||||
// [MBF] If the monster is already engaged in a one-on-one attack
|
// [MBF] If the monster is already engaged in a one-on-one attack
|
||||||
// with a healthy friend, don't attack around 60% the time.
|
// with a healthy friend, don't attack around 60% the time.
|
||||||
|
@ -1617,7 +1624,7 @@ int P_LookForEnemies (AActor *actor, INTBOOL allaround, FLookExParams *params)
|
||||||
{
|
{
|
||||||
AActor *other;
|
AActor *other;
|
||||||
|
|
||||||
other = P_BlockmapSearch (actor, actor->friendlyseeblocks, LookForEnemiesInBlock, params);
|
other = P_BlockmapSearch(actor, actor->friendlyseeblocks, LookForEnemiesInBlock, params);
|
||||||
|
|
||||||
if (other != NULL)
|
if (other != NULL)
|
||||||
{
|
{
|
||||||
|
@ -1726,6 +1733,12 @@ int P_LookForPlayers (AActor *actor, INTBOOL allaround, FLookExParams *params)
|
||||||
|
|
||||||
|
|
||||||
} // [SP] if false, and in deathmatch, intentional fall-through
|
} // [SP] if false, and in deathmatch, intentional fall-through
|
||||||
|
else if (actor->flags8 & MF8_SEEFRIENDLYMONSTERS)
|
||||||
|
{
|
||||||
|
bool result = P_LookForEnemies (actor, allaround, params);
|
||||||
|
|
||||||
|
if (result) return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(gameinfo.gametype & (GAME_DoomStrifeChex)) &&
|
if (!(gameinfo.gametype & (GAME_DoomStrifeChex)) &&
|
||||||
actor->Level->isPrimaryLevel() &&
|
actor->Level->isPrimaryLevel() &&
|
||||||
|
|
|
@ -339,6 +339,7 @@ static FFlagDef ActorFlagDefs[]=
|
||||||
DEFINE_FLAG(MF8, AVOIDHAZARDS, AActor, flags8),
|
DEFINE_FLAG(MF8, AVOIDHAZARDS, AActor, flags8),
|
||||||
DEFINE_FLAG(MF8, STAYONLIFT, AActor, flags8),
|
DEFINE_FLAG(MF8, STAYONLIFT, AActor, flags8),
|
||||||
DEFINE_FLAG(MF8, DONTFOLLOWPLAYERS, AActor, flags8),
|
DEFINE_FLAG(MF8, DONTFOLLOWPLAYERS, AActor, flags8),
|
||||||
|
DEFINE_FLAG(MF8, SEEFRIENDLYMONSTERS, AActor, flags8),
|
||||||
|
|
||||||
// Effect flags
|
// Effect flags
|
||||||
DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),
|
DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),
|
||||||
|
|
Loading…
Reference in a new issue