Revised friendliness system
Moderator: Graf Zahl
-
- Posts: 69
- Joined: Sat Nov 05, 2005 14:38
- Location: Somewhere
Revised friendliness system
I have a complex and somewhat long-winded idea:
First, friendliness system should be altered so that monsters with the friendly flag never target or fire at friendly targets, it is annoyingto have newly spawned friendlies attack other friendlies when all the enemies have died.
Second, a friendliness transfer system for missiles, and a system for friendly monsters to check if missiles hitting them are "FRIENDLY", and to not take damage (or go to pain) if they are.
As a side note, a +HOSTILE flag would be useful to make monsters that attack friendly monsters automatically, like in MBF.
This would be rather complex, but with the MBF source out it shouldn't be too difficult.
EDIT: Okay, I admit, it would be insanely difficult to implement a system like that.
First, friendliness system should be altered so that monsters with the friendly flag never target or fire at friendly targets, it is annoyingto have newly spawned friendlies attack other friendlies when all the enemies have died.
Second, a friendliness transfer system for missiles, and a system for friendly monsters to check if missiles hitting them are "FRIENDLY", and to not take damage (or go to pain) if they are.
As a side note, a +HOSTILE flag would be useful to make monsters that attack friendly monsters automatically, like in MBF.
This would be rather complex, but with the MBF source out it shouldn't be too difficult.
EDIT: Okay, I admit, it would be insanely difficult to implement a system like that.
-
- Posts: 397
- Joined: Tue Jul 19, 2005 4:14
- Location: Programmer's Room, talking to Will Harvey
-
- GZDoom Developer
- Posts: 7148
- Joined: Wed Jul 20, 2005 9:48
- Location: Germany
-
- Posts: 227
- Joined: Sat Sep 03, 2005 11:48
- Location: Orpington, Kent, England
Am I correct in saying that quick target switches are already possible?
+Quicktoretaliate makes monsters attack the last thing that hit it, and that works with friendlies and thing hate, so that's a simple way to circumvent the current AI, though it's not particularly practical on all monsters, particularly as they can already switch targets depending on what monster has dealt them the most damage.
+Quicktoretaliate makes monsters attack the last thing that hit it, and that works with friendlies and thing hate, so that's a simple way to circumvent the current AI, though it's not particularly practical on all monsters, particularly as they can already switch targets depending on what monster has dealt them the most damage.
-
- Posts: 154
- Joined: Tue Aug 30, 2005 22:07
- Location: East Suffolk (UK)
BUMP! ATTN: Graf Zahl (please)
I have a project in the works which would look MUCH better if there were some way to control which specific monsters will attack which specific other ones. Graf, can we please have from you a ballpark figure as to roughly what your thoughts on the matter are. For example, "never", "waiting on Doomscript", "no idea how yet, but would like to eventually", etc. It really is frustrating to not know what will happen, especially as this is, IMO, a much-needed and long-overdue feature in all DOOM games.
What is needed is something that (a) avoids the need for something like filter scripting in all except the most compicated scenarios (b) should (hopefully
) be reasonably quick to implement and (c) is tabular in nature so that it could simply be overridden with DoomScript when that eventually turns up. I really think this is too important to WFDS, as DoomScript (or whatever it is eventually called) is likely to be vapourware for a few more years yet 
How about the following settings which would be used whenever a DECORATE monster is considering whether to attack something or not:
This monster would do the following:
The rest of the time it would do whatever the default value would be for this DECORATE monster, given it's friendliness flag. There could also be a pseudo-class "Default", as in the above example.
This monster would also be a FRIEND of archviles, and always be an enemy to SomeCustomHellNoble. For whatever actor has TID 249, it would be an enemy to that person with 5% probability and ignore it with 95% probability. For any class not mentioned, this DECORATE monster would have the default behaviour (given its friendliness flag).
As a related note, DECORATE flags to explicitly control what a monster does when it runs out of enemies (idle, walk-on-the-spot, or wander), irrespective of whether it is a friendly monster or not, are sorely needed. Alternatively, this could be a new DECORATE property that names a state to jump to. Recall that despite the previous discussions on the matter this CANNOT be done by state logic alone, as some of the transitions involved happen hidden deep inside the engine and are NOT exposed to the DECORATE or ACS programmer.
What do you think? It would really really help me if you could at least state your intentions regarding these two things.
EDIT: Added suggestion for TID trigger
I have a project in the works which would look MUCH better if there were some way to control which specific monsters will attack which specific other ones. Graf, can we please have from you a ballpark figure as to roughly what your thoughts on the matter are. For example, "never", "waiting on Doomscript", "no idea how yet, but would like to eventually", etc. It really is frustrating to not know what will happen, especially as this is, IMO, a much-needed and long-overdue feature in all DOOM games.
What is needed is something that (a) avoids the need for something like filter scripting in all except the most compicated scenarios (b) should (hopefully


How about the following settings which would be used whenever a DECORATE monster is considering whether to attack something or not:
Code: Select all
....
+ISMONSTER
Disposition
{
BaronOfHell
{
Friend 10%
Enemy 20%
Ignore 30%
Grovel 5%
}
Archvile
{
Friend 100%
}
SomeCustomHellNoble
{
Enemy 100%
}
TID:249
{
Enemy 5%
Ignore 95%
}
Default
{
Default 50%
Ignore 50%
}
}
....
Code: Select all
* be a FRIEND to Barons with 10% probablility
* be an ENEMY to Barons with 20% probablility
* ignore Barons completely (unless attacked by) with 30% probablility
* ignore Barons completely (EVEN IF attacked by) with 5% probablility
This monster would also be a FRIEND of archviles, and always be an enemy to SomeCustomHellNoble. For whatever actor has TID 249, it would be an enemy to that person with 5% probability and ignore it with 95% probability. For any class not mentioned, this DECORATE monster would have the default behaviour (given its friendliness flag).
As a related note, DECORATE flags to explicitly control what a monster does when it runs out of enemies (idle, walk-on-the-spot, or wander), irrespective of whether it is a friendly monster or not, are sorely needed. Alternatively, this could be a new DECORATE property that names a state to jump to. Recall that despite the previous discussions on the matter this CANNOT be done by state logic alone, as some of the transitions involved happen hidden deep inside the engine and are NOT exposed to the DECORATE or ACS programmer.
What do you think? It would really really help me if you could at least state your intentions regarding these two things.
EDIT: Added suggestion for TID trigger
-
- Posts: 397
- Joined: Tue Jul 19, 2005 4:14
- Location: Programmer's Room, talking to Will Harvey
Foreverhood would deeply benefit from this.MartinHowe wrote:As a related note, DECORATE flags to explicitly control what a monster does when it runs out of enemies (idle, walk-on-the-spot, or wander), irrespective of whether it is a friendly monster or not, are sorely needed. Alternatively, this could be a new DECORATE property that names a state to jump to. Recall that despite the previous discussions on the matter this CANNOT be done by state logic alone, as some of the transitions involved happen hidden deep inside the engine and are NOT exposed to the DECORATE or ACS programmer.
-
- Posts: 488
- Joined: Sun Aug 28, 2005 5:11
-
- Posts: 150
- Joined: Wed Mar 29, 2006 19:36
- Location: Everywhere and nowhere
-
- Posts: 69
- Joined: Sat Nov 05, 2005 14:38
- Location: Somewhere
Summoned friendlies often attack each other if a friendly archvile revives a monster that was attacking another friendly, but which that friendly did not get to kill. Thus, it attacks until it has killed that target at least once, but not while enemies are present. This seems to be a bug to me, as a thing's hatred should really be cleared when the target is dead, regardless of the cause.
The main topic of my post was the idea of a HOSTILE flag to add as a map-editing feature to allow the use of enemies that specifically seek out FRIENDLY targets, instead of reacting to attacks. It would essentially be like giving enemy monsters a different version of the FRIENDLY flag, essentially creating a new team of monsters. This could be especially useful in creating battles between armies without massive, time consuming scripts.
The main topic of my post was the idea of a HOSTILE flag to add as a map-editing feature to allow the use of enemies that specifically seek out FRIENDLY targets, instead of reacting to attacks. It would essentially be like giving enemy monsters a different version of the FRIENDLY flag, essentially creating a new team of monsters. This could be especially useful in creating battles between armies without massive, time consuming scripts.
-
- Posts: 154
- Joined: Tue Aug 30, 2005 22:07
- Location: East Suffolk (UK)
Given Graf's normal quick response to FRs, I'm surprised at the lack of comment at all from him concerning this one.
@Graf: perhaps you could find a few minutes to answer this one?
Regarding better friendliness in general:
Is it a [no] or a [yes] or a [Wait till 2015 when randy has finished doing whatever]?
Regarding any kind of generalised monster targetting selection:
Is it a [no] or a [yes] or a [Wait till 2015 when randy has finished doing whatever]?
It would be nice to have some idea whether or not to try and put it in myself in my local copy; there is no point in my doing that if you/Randy are going to do something about it yourselves in the near future.
@Graf: perhaps you could find a few minutes to answer this one?
Regarding better friendliness in general:
Is it a [no] or a [yes] or a [Wait till 2015 when randy has finished doing whatever]?
Regarding any kind of generalised monster targetting selection:
Is it a [no] or a [yes] or a [Wait till 2015 when randy has finished doing whatever]?
It would be nice to have some idea whether or not to try and put it in myself in my local copy; there is no point in my doing that if you/Randy are going to do something about it yourselves in the near future.
-
- Posts: 229
- Joined: Mon Jan 02, 2006 12:39
I'd really like a better friendly system, so they won't actually attack each other or you if you or they accidentally shoot each other. But I don't care too much for what was said above.
Maybe something like a +SMARTFRIENDLY would be nice. +SMARTFRIENDLY would be applied to things like marines or someone smart enough not to go into a firefight with a teammate, while +FRIENDLY's could keep their current behaviour, and could be used in situations where you have a bunch of dumb teammates like some sort of possessed-zombies-that-fight-with -you-or-whatever-the-wad-maker-makes-happen and would fight each other if they shot each other or w/e.
Maybe something like a +SMARTFRIENDLY would be nice. +SMARTFRIENDLY would be applied to things like marines or someone smart enough not to go into a firefight with a teammate, while +FRIENDLY's could keep their current behaviour, and could be used in situations where you have a bunch of dumb teammates like some sort of possessed-zombies-that-fight-with -you-or-whatever-the-wad-maker-makes-happen and would fight each other if they shot each other or w/e.
-
- Posts: 233
- Joined: Wed Sep 21, 2005 18:04
- Location: Up the creek without a paddle
All I know is, something were you can declare a team identifier in the Mapinfo lump or something like that, and then be able to assign a team to an actor via Decorate or Doombuilder would be sweet, and would make my not as smart as 90% of the Doom modding scene buttox feel alot better than what I have to do via ACS for a project of mine