Well, I actually was able to modify weapon subs and specials by messing with "WeaponSet.byaml"; I just gave the Splattershot a Splat Bomb and the Bubbler. It even worked in an online Turf War battle too. I wanted to modify "WeaponInfo_Main.byaml" as well, as it appears to tell the game what 3D model each weapon uses, (and even what class the weapon is, which would seemingly determine what code to run, wherever it is) but the program I'm using, "yamlconv.exe", crashes whenever trying to convert the file back, even if you don't modify it.
Edit: It looks like there was some talk about "yamlconv.exe" starting page 32, and later how it couldn't convert all of the files in "Mush" back to .byaml, but it appears nothing really came out of the discussion.
I'll just have to learn how the format works and modify the .byaml files in a hex editor; I'd like to fix the tool, but the only programming I know is 65816 and 80186 assembly...
Unless any of you can understand what the program spat out:
Unhandled Exception: System.IO.InvalidDataException: Found invalid data while decoding.
at yamlconv.ByamlNode.FromXml(XmlDocument doc, XmlNode xmlNode, List`1 nodes, List`1 values, List`1 data)
at yamlconv.ByamlNode.FromXml(XmlDocument doc, XmlNode xmlNode, List`1 nodes, List`1 values, List`1 data)
at yamlconv.ByamlNode.FromXml(XmlDocument doc, XmlNode xmlNode, List`1 nodes, List`1 values, List`1 data)
at yamlconv.ByamlNode.FromXml(XmlDocument doc, XmlNode xmlNode, List`1 nodes, List`1 values, List`1 data)
at yamlconv.Program.ConvertToByaml(EndianBinaryReader reader, String outpath)
at yamlconv.Program.ConvertPath(String path)
at yamlconv.Program.Main(String[] args)
How can you make a converter that crashes upon trying to convert back the file it made, lol.
Edit 2: I'm willing to bet what's messing it up is the lack of a "ModelName" for "Wmn_Roller_Mission" and onward in the .xml file. I wonder if it's due to the program not converting the file to an .xml file to begin with, as it's strange that there'd be fields, especially one that says the name of the 3D model file, that are undefined. I don't understand though, because I thought the way that people were able to play on the nighttime splatfest map variants was through modifying the pointers in "MapInfo.byaml", but "yamlconv.exe" can't turn this back into a .byaml file because it crashes.
Edit 3: Well, I figured that while I can't convert the .xml file back into a .byaml file, what I
can do is I can mess around with the .byaml file in a hex editor, convert it into a .xml, and look for differences with it and the original file. I actually got it to work.
Just for clarity, this is not a model swap, as none of the models have been modified; it is instead a modified pointer. To replicate it (I don't know why you'd want to other than to make sure I'm not saying BS) change the value at 0x17C7 to CB and the value at 0x17E7 to CC in "WeaponInfo_Main.byaml".
Does anyone know how the game actually "creates" a weapon, as in, what files does it look at first that have pointers to other files? I just found what defines what model the weapon uses. "WeaponInfo_Main.byaml" actually does have a generic "Name" field as well as "ArcName" and "ModelName", but I don't know what this actually does.
Edit 4: I'll just put this snippet from the converted "WeaponInfo_Main.byaml" here for reference:
<value CatalogueOrder="10" Id="108">
<ArcName type="string">Wmn_Shot_Normal</ArcName>
<Material type="string">Plastic</Material>
<ModelName type="string">Wmn_Shot_Normal</ModelName>
<Name type="string">Shot_Normal_00</Name>
<Type type="string">Shot</Type>
</value>
I already talked about "ArcName" and "ModelName", but Modifying the "Type" field actually determines how your character holds the weapon in the customization menu. It will also determine what animation plays when you "try" it in the weapon shop. Unfortunately, all the other animations do not change, including the win and loss animations.
Changing the material type doesn't seem to do anything, or at least I didn't see a difference in the shading. Surprisingly, changing both the "CatalogueOrder" and the "Id" to random numbers didn't seem to do anything, so I'm guessing they're unused. The "Name" field, I discovered, is actually what determines what data goes to what weapon. What I did here is change the "Name" for the regular Splattershot to the Tentatek Splattershot and vice versa; the Splattershot points to the model for the H-3 Nozzlenose, which is why you're seeing it.
Unfortunately, this is the end of the line for me.
I was hoping this would define what the internal weapon names are, (used by the "Name" field in both "WeaponInfo_Main.byaml" and "WeaponSet.byaml") but all it does is define the model names. Like, how does the game determine what weapons use what ".param" files for weapon parameters? If anyone has any idea where to look for any of this game's code in general, don't be afraid to share. It seems most of the big Splatoon dataminers are gone though, I guess by frustration or lack of interest.