-
Notifications
You must be signed in to change notification settings - Fork 89
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Full world simulation issues #657
Comments
You are refering to this as a solution for e.g. the Greg to Dexter example, so I assume _LOOP influences moving NPCs after story triggers. Are escorting activities also impacted by the proposals? If so, a lof things are potentially affected by this change, so I propose to make a list that aims to help understand whether we cover all relevant cases with the proposed solution. Escorting NPCs
Gothic 2 NotR:
NPCs moving position after story trigger
Gothic 2 NotR:
Jharkendar
VoM
Irdorath
edit 1: formatting |
Another point would be aggro distance for NPC vs. monster. In Gothic 1, attacking a swamp shark, the monster will come after me for a long distance until sect camp inhabitants kill it. In Gothic 2 NotR, transforming to dragon snapper in harbour district and swimming to treasure island, Khorinis inhabitants will come after me even after minutes, swimming all the way to me. |
Third point: roaming monsters fall off cliffs. Gothic 1: snappers at Gorn focus quest old castell fall into the river. Probably could indirectly fixed (or severity reduced) by staying inactive. |
No, maybe I was unclear.
In opengothic aggro/notify distance is exactly same as in vanilla. Chaise time/distance might diverge in cases, when monster doesn't have any condition in a script to stop chaise. Example can be
Should be fixed nowdays by changing on how cliff-collision works, but need to test |
With your explanation, I can confirm I mean indeed chasing distance, not aggro distance.
I observed snappers at black troll using
Was actually not an issue for the snappers, seems cliff-collision works better now. |
I need to correct myself in both observations.
Not chasing in this case. I suspect it is their animation loop that moves them forward a tiny bit, after a while it accumulates. Directions never change. Either that or some side effect of video cliff, 13 sec, 8.1 MiB: Snappers moving at cliff
they do stop at the cliff. However, normal animation movement causes them to fall still. video coast snapper falling, 4 sec, 2.7 MiB: Falling Snapper |
For snapper persistent offset from origin seem to be related to animation + func int ZS_MM_Rtn_Rest_Loop()
{
...
if(self.aivar[AIV_TAPOSITION] == NOTINPOS)
{
if(Wld_IsFPAvailable(self,"FP_ROAM"))
{
AI_GotoFP(self,"FP_ROAM");
};
if(Npc_IsOnFP(self,"FP_ROAM"))
{
self.aivar[AIV_TAPOSITION] = ISINPOS;
};
}
... Since OpenGothic skips |
Why full world simulation:
Known issues
WLD_PLAYEFFECT
will cause troubleZS_MM_Rtn_Rest_Loop
for some monsters_Loop
function then monster position wont be adjusted back to spawn-point.ZS_MM_Hunt_Loop
for monsters with long chaiseai_gotowp("TOT")
, due to Pedro in gothic2Npc::tickRoutine
has no call to LOOP function for far-away monsters (performance)Proposed solutions
Suppress
_LOOP
function forAiFar
/AiFar2
.Pros: very close to original game, where far npc's are offloaded
Cons: wont be able to see routine animations at a distance, such as small-talk and practice_sword.
Cons: if mod has side-effect in non-loop part if AI - wont work as intended
Suppress 'side-effects' of
_LOOP
functionPros: solves immediate problem of earthquakes
Cons: hard to implement (need to do deep tracking of context, or check call-stack for
*_LOOP
)Cons: need to solve cases 1 by one, and it's possible (at least on purpose) to break this solution with any level of indirection
The text was updated successfully, but these errors were encountered: