sfall-team / sfall

sfall - Engine modifications for Fallout 2
https://sfall-team.github.io/sfall/
GNU General Public License v3.0
342 stars 40 forks source link

Maximum encounter table size #333

Closed blackpaulillyria closed 4 years ago

blackpaulillyria commented 4 years ago

Hi!

Not really a bug but I wanted to mention it anyways. I see that the maximum encounter table size can be set to 127 but that is unusable in practice as WORLDMAP.MSG limits each table to 50 entries max.

FakelsHub commented 4 years ago

Then can remove the option and set the maximum possible value to 50?

NovaRain commented 4 years ago

Better to check/verify the code before removing it, or see if there's a way to increase the limit for worldmap.msg as well.

FakelsHub commented 4 years ago

way to increase the limit for worldmap.msg as well.

Message string of table 1 (if greater than 50) will simply be taken from messages of table 2, etc.

enc table 1 messages
1000  = enc00
...
1049 = enc49
enc table 2 messages
1050 = enc00
...
1099 = enc49 

the limit of 50 I think is a good number) without additional engine hacking. Otherwise, the moder will have to move all the lines in worldmap.msg to the new size. still, the size will have to be set to 100 for a more correct perception.

NovaRain commented 4 years ago

Message string of table 1 (if greater than 50) will simply be taken from messages of table 2, etc. the limit of 50 I think is a good number) without additional engine hacking.

Oh, I see it. If that's the case then a fixed limit of 50 (from vanilla 40) should be good enough.

Otherwise, the moder will have to move all the lines in worldmap.msg to the new size. still, the size will have to be set to 100 for a more correct perception.

Huh? You mean for example # Encounter Table 6 can have message line numbers from 3300 to 3399? Wouldn't this also require to move all the lines in worldmap.msg?

FakelsHub commented 4 years ago

Encounter Table 6 can have message line numbers from 3300 to 3399?

yes.

Wouldn't this also require to move all the lines in worldmap.msg?

Yes, it will be required

FakelsHub commented 4 years ago

Action plan: For the option EncounterTableSize (if set >50), make a special fix that increases the size from 50 to 100, which will require moving all the rows in worldmap.msg

NovaRain commented 4 years ago

To be honest I doubt if anyone really needs more than 50, even FoN or Sonora doesn't have that many, right? Maybe just increase the default max limit to 50, axe the option and call it a day.

For the option EncounterTableSize, make a special fix that increases the size from 50 to 100, which will require moving all the rows in worldmap.msg

Changing the option to work more like ExtraKillTypes (a 0/1 toggle to double the limit)?

Lexx2k commented 4 years ago

50+ entries in a single encounter table sounds like bad game design to me.

FakelsHub commented 4 years ago

Changing the option to work more like ExtraKillTypes (a 0/1 toggle to double the limit)?

If the value is greater than 50, an additional correction for messages rows will be enabled.

50+ entries in a single encounter table sounds like bad game design to me.

I don't think it should worry you - good/bad. Another thing is that 50+ it is too much, but it can be applied for example to one encounter square and not to all. Just need to make the most of what have. )))

blackpaulillyria commented 4 years ago

I wouldn't mind using 50+ encounters because I planned to have lots of variations for similar encounters in some places but I'll manage with just 50 as I add more locations. Not that my worldmap lacks space, there's room for everybody 😂

Lexx2k commented 4 years ago

If you need 50+ encounter types, you are doing something wrong. Use scripts for variation. That's much less data clutter and much easier to manage.

FakelsHub commented 4 years ago

If you need 50+ encounter types, you are doing something wrong. Use scripts for variation. That's much less data clutter and much easier to manage.

With a script, you won't do some things as easily as you can do in a file, plus it's the wrong approach and terribly inconvenient, an example with a cumbersome script in fo2fo1. blackpaulillyria - man is doing everything right.

Lexx2k commented 4 years ago

If you want 10 different types of raider encounters, a simple script can do more than 10 data entries in the encounter table.

an example with a cumbersome script in fo2fo1

I never said that the ettu scripts are a good approach. We are only doing it this way because nobody can be arsed to port the Fo1 script stuff over to the Fo2 system.

blackpaulillyria - man is doing everything right.

He is doing potential feature creep for a project that won't be done in 10 years.

blackpaulillyria commented 4 years ago

Of course, I'll always use native functions/methods first to achieve a goal. But if those aren't available, I'll resort to workarounds, hacks, alternative solutions... So if Mr. Stalin makes this available, I'll use it. If not, I'll use Lexx's solution. Either way, it's getting done and everybody wins! :)

FakelsHub commented 4 years ago

This should have been tested before closing. :-)

blackpaulillyria commented 4 years ago

I'll test it over the weekend, no problem! 👍

blackpaulillyria commented 4 years ago

Sadly, couldn't make this work. I reindexed the WORLDMAP.MSG and all of the encounters within 0-49 are working. However, as soon as I hit an encounter in 50-99 range, it crashes.

image

NovaRain commented 4 years ago

I tried to add 50 placeholder encounters (unable to trigger, so original encounters start from 51) to some encounter tables around San Francisco in RP for testing EncounterTableSize=100. I didn't have any crash, but some encounters would display "Error" while some others are OK, not sure if I made mistakes in the files (EDIT: I didn't notice there is "Fran2_C" encounter table, so the "Error" was from it. Everything is OK in Fran_C areas): RP_enc_test.zip

FakelsHub commented 4 years ago

My tests also did not reveal any problems with this, the messages correspond to their enc_## numbers without any "error". Example test

[Encounter Table 76]
lookup_name=Test_O
maps=Desert Encounter 1, Desert Encounter 2, Desert Encounter 3
...
enc_50=Chance:20%,Enc:(1-1) KLA_Trappers
enc_51=Chance:20%,Enc:(1-1) KLA_Trappers
enc_52=Chance:20%,Enc:(1-1) KLA_Trappers
enc_53=Chance:20%,Enc:(1-1) KLA_Trappers
enc_54=Chance:20%,Enc:(1-1) KLA_Trappers
enc_55=Chance:20%,Enc:(1-1) KLA_Farmers
enc_56=Chance:20%,Enc:(1-1) KLA_Farmers
enc_57=Chance:20%,Enc:(1-1) KLA_Farmers
enc_58=Chance:20%,Enc:(1-1) KLA_Farmers
enc_59=Chance:20%,Enc:(1-1) KLA_Farmers
enc_60=Chance:20%,Enc:(1-1) ARRO_Spore_Plants AMBUSH Player
enc_61=Chance:20%,Enc:(1-1) KLA_Bandits FIGHTING (1-1) KLA_Golden_Geckos
enc_62=Chance:20%,Enc:(1-1) KLA_Bandits FIGHTING (1-1) KLA_Golden_Geckos
enc_63=Chance:20%,Enc:(1-1) KLA_Bandits FIGHTING (1-1) KLA_Golden_Geckos
enc_64=Chance:20%,Enc:(1-1) KLA_Bandits FIGHTING (1-1) KLA_Golden_Geckos
enc_65=Chance:20%,Enc:(1-1) KLA_Bandits FIGHTING (1-1) KLA_Golden_Geckos

[Tile 0]
art_idx=469
encounter_difficulty=0
; x_offset_yoffset=terrain,morning_chance,afternoon_chance,night_chance,type
0_0=Ocean,Fill_W,Frequent,Frequent,Frequent,Test_O
0_1=Ocean,Fill_W,Frequent,Frequent,Frequent,Test_O
0_2=Ocean,Fill_W,Frequent,Frequent,Frequent,Test_O
0_3=Ocean,Fill_W,Frequent,Frequent,Frequent,Test_O
0_4=Ocean,Fill_W,Frequent,Frequent,Frequent,Test_O
0_5=Ocean,Fill_W,Frequent,Frequent,Frequent,Test_O

# Encounter Table 76 messages
...
{10650}{}{enc 50}
{10651}{}{enc 51}
{10652}{}{enc 52}
{10653}{}{enc 53}
{10654}{}{enc 54}
{10655}{}{enc 55}
{10656}{}{enc 56}
{10657}{}{enc 57}
{10658}{}{enc 58}
{10659}{}{enc 59}
{10660}{}{enc 60}
{10661}{}{enc 61}
{10662}{}{enc 62}
{10663}{}{enc 63}
{10664}{}{enc 64}
{10665}{}{enc 65}
{10666}{}{enc 66}
{10667}{}{enc 67}
{10668}{}{enc 68}
blackpaulillyria commented 4 years ago

Great news, I'll give those tests another go although for now I've split up my huge encounter tables into smaller ones.