HotPocketRemix / DarkSoulsItemRandomizer

Randomizes Dark Souls 1 items & shops
68 stars 21 forks source link

Minor issue - does not detect new items/will need to be modified for Rekindled compatibility #2

Open LordofSandvich opened 6 years ago

LordofSandvich commented 6 years ago

Might as well address this directly on Github. Rekindled will be using new item ID's and have new items be placed throughout Lordran. Randomizer currently ignores this and would eventually need to be modified for compatibility.

It also requires UDSFM in the latest dev versions, so that might be easier to arrange.

LordofSandvich commented 6 years ago

Edit: Needs confirmation. I'll work on it later.

HotPocketRemix commented 6 years ago

I'm not sure how I would go about fixing this. The Randomizer does not programatically detect what items are placed where and then scramble them; it builds the entire ItemLotParam.param and ShopLineupParam.param file from internal data.

It is almost impossible to randomize where the key items are without classifying every location in the game to determine what keys are needed to access it. If a new location is added, there is no way to know where it is, and if new keys are added, there's no way to know how they segment the game world.

Also, all items are ranked based on their desirability and all locations are ranked based on their difficulty for the Unfair and Very Unfair difficulty settings. Locations have to be investigated to determine if they are key-safe (i.e. they cannot be missed) and also if they should be classed as Race Mode locations. Item Lots need to be evaluated to see if they are essentially duplicates (e.g. Solaire's drop and gift are separate Item Lots, but should contain the same item) and also if the Item Lot contains linked items that should be kept together if Fashion Souls is off.

There are several other considerations that I haven't mentioned (including extremely subtle ones involving event flags), but I'm sure you get the idea. It is (essentially) impossible to do this automatically at runtime, and I would need to make a separate version where I do all of this for each mod that changes anything to do with item locations. There's not many as of now (I think just DS Rekindled), so it's not a ton of work comparatively, but it would require a whole separate-but-extremely-similar branch of the Randomizer that takes into account all of the changes.

If you have any ideas, I'm open to them, but a solution seems untenable without an absurdly large amount of effort on my part.

DoctorGoat commented 6 years ago

If it helps any, here's a diff of ShopLineupParam, ItemLotParam, and the IDs for the new items, as well as the original items I scanned from: https://cdn.discordapp.com/attachments/292493956267114496/390946921101131777/comp.zip

SpellID.diff is a list of the new spells, and seems to be everything that's actually new for now. As of right now, I think the best option would be to have a customItems file to shuffle in, in place of souls whether you use the shuffled/replaced setting on soul items. An alternate method would be to increase a random merchant's stock size by 1 and insert files from a customItems file there with a random cost, but my python is rusty and I think I actually used all my brain juice for the day already.

edit: I missed that there are a number of items currently in that do not have string entries but aren't really meant to be used, either.