Mod calls now only require the bare minimum info needed to make an entry. All other data can be thrown into a Dictionary with determined key strings that BossChecklist will look for. The new argument ordering is the following:
1.) EntryType
string - The message being passed will determine what type of entry will be added. Mod messages have changed and old calls will no longer be supported. See next section for more details.
2.) Mod Instance
Mod - The mod will be grabbed to directly get the mod's internal and display names.
3.) Internal Name
string - Mod developers can choose a unique string to identify their boss to be built into the boss key. The passed string can only contain letters and must have no whitespace characters.
4.) Progression Value
float - The float value that will determine the entry's progression position on the list.
5.) Localized Name
LocalizedText - A LocalizedText must be passed for the entry's name. string variables are no longer supported. Changes to 1.4.4 encourages modders to use translations and most mods that add content use translations anyways.
6.) NPC ID List
int or List<int> - The IDs of any NPCs that are apart of this boss, with the first being the main part of the NPC.
7.) Downed Check
Func<bool> - The downed variable needed to mark and entry as defeated.
8.) Spawn Info
LocalizedText - Info provided to spawning the entry. Now requires LocalizedText and no longer supports string variables.
9.) Additional Data (all optional)
Dictionary<string, object> - Modders can add a dictionary of objects with string keys to add any additional data they may need that isn't required to make an entry. This will also allow us to add more optional data without adding more arguments needed to be passed and checked for (at least until necessary). BossChecklist will look for specific string keys in the dictionary to apply any additional data such as spawn items or despawn messages. The keys can be applied in any order and not all of them have to be present. The current keys that are check for are the following:
"availability"
"spawnItem"
"collectibles"
"customPortrait"
"despawnMessage"
"overrideHeadTextures"
New mod call messages
AddBoss has been changed to LogBoss. All older calls fall under the AddBoss umbrella, so to ensure than all modders know they need to update their mod calls, all instances of AddBoss and its alternatives have been made obsolete. If a mod does not update their mod calls, a message will be logged, listing all entries attempted to be added and informing modders the new changes with a github wiki link.
Entry Keys
Keys will be different than normal due to the new internalName call argument. I'm still open to changing how internal names are determined, so this may change later down the line too. Keys now use { get; init; } instead of just grabbing the modSource and internalName when requested and is determined upon EntryInfo creation. EntryInfo.internalName has also been outright removed with this change as the Key was the only thing it was used for and that still holds true with this new change.
Vanilla Entry Submissions
Vanilla entries have been updated accordingly and happen to look a little cleaner as a result. Might also want to look to see if progression values can finally be solidified.
Still on the TODO
Orphan data should be reworked to accepts objects instead of just List<int> or int and erhaps expand on what can be modified on any given entry. Another dictionary with string key setup might be in order.
New call arguments
Mod calls now only require the bare minimum info needed to make an entry. All other data can be thrown into a Dictionary with determined key strings that BossChecklist will look for. The new argument ordering is the following:
1.) EntryType
string
- The message being passed will determine what type of entry will be added. Mod messages have changed and old calls will no longer be supported. See next section for more details.2.) Mod Instance
Mod
- The mod will be grabbed to directly get the mod's internal and display names.3.) Internal Name
string
- Mod developers can choose a unique string to identify their boss to be built into the boss key. The passed string can only contain letters and must have no whitespace characters.4.) Progression Value
float
- The float value that will determine the entry's progression position on the list.5.) Localized Name
LocalizedText
- A LocalizedText must be passed for the entry's name.string
variables are no longer supported. Changes to 1.4.4 encourages modders to use translations and most mods that add content use translations anyways.6.) NPC ID List
int
orList<int>
- The IDs of any NPCs that are apart of this boss, with the first being the main part of the NPC.7.) Downed Check
Func<bool>
- The downed variable needed to mark and entry as defeated.8.) Spawn Info
LocalizedText
- Info provided to spawning the entry. Now requires LocalizedText and no longer supportsstring
variables.9.) Additional Data (all optional)
Dictionary<string, object>
- Modders can add a dictionary of objects with string keys to add any additional data they may need that isn't required to make an entry. This will also allow us to add more optional data without adding more arguments needed to be passed and checked for (at least until necessary). BossChecklist will look for specific string keys in the dictionary to apply any additional data such as spawn items or despawn messages. The keys can be applied in any order and not all of them have to be present. The current keys that are check for are the following:New mod call messages
AddBoss has been changed to LogBoss. All older calls fall under the AddBoss umbrella, so to ensure than all modders know they need to update their mod calls, all instances of AddBoss and its alternatives have been made obsolete. If a mod does not update their mod calls, a message will be logged, listing all entries attempted to be added and informing modders the new changes with a github wiki link.
Entry Keys
Keys will be different than normal due to the new internalName call argument. I'm still open to changing how internal names are determined, so this may change later down the line too. Keys now use
{ get; init; }
instead of just grabbing the modSource and internalName when requested and is determined upon EntryInfo creation. EntryInfo.internalName has also been outright removed with this change as the Key was the only thing it was used for and that still holds true with this new change.Vanilla Entry Submissions
Vanilla entries have been updated accordingly and happen to look a little cleaner as a result. Might also want to look to see if progression values can finally be solidified.
Still on the TODO
Orphan data should be reworked to accepts objects instead of just
List<int>
orint
and erhaps expand on what can be modified on any given entry. Another dictionary with string key setup might be in order.