Skip to content
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

Fallout 2: Dogmeat issue #409

Open
psemiletov opened this issue Jul 24, 2024 · 5 comments · Fixed by yuurha12/fallout2-ce#2
Open

Fallout 2: Dogmeat issue #409

psemiletov opened this issue Jul 24, 2024 · 5 comments · Fixed by yuurha12/fallout2-ce#2

Comments

@psemiletov
Copy link

When I found Dogmeat at Cafe, I can't interact with the dog (wearing just a Vault suit). Is that releated to Fallout 2 CE or usual Fallout 2 bug?

@JanSimek
Copy link
Contributor

It would be helpful if you attached your savegame

JanSimek added a commit to JanSimek/fallout2-ce that referenced this issue Jul 26, 2024
…s the origin argument. Fixes alexbatalov#409

 Both variants are used in the ecdogmet.ssl script:

 ```
 tile_num_in_direction(self_tile, Random(0, 5), 1);
 tile_num_in_direction(dude_obj, Random(0, 5), Random(5, 10));
 ```
@JanSimek
Copy link
Contributor

There are other issues with the dogmeat script but even when I played with the Restoration Patch it did not work. It turns out ECDogMet.int script uses tile_num_in_direction with the origin argument as pointer instead of tile number:

tile_num_in_direction(self_tile, Random(0, 5), 1); // tile integer
tile_num_in_direction(dude_obj, Random(0, 5), Random(5, 10)); // pointer

I couldn't find any modification of this function in the Sfall code, so I assume that's how it works in the original engine as well although the MMapper guide only mentions tile number.

@JanSimek
Copy link
Contributor

Turns out this was a vanilla bug that will be fixed in the next RPU release: BGforgeNet/Fallout2_Unofficial_Patch@55a08f4

Here's an explanation from NovaRain:

in the original engine the function would return an "impossible to reach" tile number based on the value of object pointer (e.g. I got 181576192 from calling tile_num_in_direction(dude_obj, random(0, 5), random(5, 10));
a more detailed example:

val1 := random(0, 5);
val2 := random(5, 10);
display_msg("Dude obj ptr: " + dude_obj + ", rnd dir: " + val1 + ", rnd dist: " + val2);
tmp := tile_num_in_direction(dude_obj, val1, val2);
display_msg("tile_num_in_direction: " + tmp);

Result:

Dude obj ptr: 181642728, rnd dir: 4, rnd dist: 7
tile_num_in_direction: 181642135

@phobos2077
Copy link
Contributor

Since this is a script error and has nothing to do with the engine, I suggest closing.

@psemiletov
Copy link
Author

But Dogmeat works as intended at Fallout 2 for Windows, as a companion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants