xCrystal / crystal-randofuser

Pokemon Crystal Randofuser. Also see https://github.com/xCrystal/pokecrystal-randofuser
GNU General Public License v3.0
39 stars 4 forks source link

Suggestion: Combining attributes instead of averaging #2

Closed LeafiaBarrett closed 7 years ago

LeafiaBarrett commented 7 years ago

I had a thought regarding the balancing of stats between the combined pokemon. Averaging stats is always going to trend towards making everything more samey, so I thought, why not combine the attributes instead? Any stat above 1/6 of the pokemon's BST total raises that stat, and below 1/6 lowers the resulting stat.

xCrystal commented 7 years ago

Could you be more specific? I think what you're suggesting is exactly what the "average stat patterns only" option does though. It ups the weaker mon's stats and downs the stronger mon's stats to the average BST of the two, meaning that, with this option, a stat above 1/6 of the total will contribute positively to the result of said stat, and the opposite for a stat below 1/6 of the total.

LeafiaBarrett commented 7 years ago

https://pastebin.com/xQuttV86 Here's an example, if the math here makes any sense. It's true that the resulting stats can get a bit out of hand, but I still think it would be a neat idea to look into, if nothing else.

LeafiaBarrett commented 7 years ago

https://pastebin.com/1tx1fpRp I explain and expand on the idea here. If I had a better grasp on how exactly the randofuser's code worked, I'd try to make a fork and test it myself, but my coding experience is with C#, not Java, so some of the subtle differences escape me, and I have trouble reading code without comments for what each part is.

xCrystal commented 7 years ago

Sorry, I forgot to reply to the previous comment, but I think I understood it. I think your suggestion is a bit too extreme (note as well that some extreme cases like Chansey and Shuckle can yield base stats below 0 or above 255), and although it's true it could be added as an alternative option, I don't have enough time in my hands to dedicate time to this tool nowadays. Thanks for the suggestion and your interest anyway.

LeafiaBarrett commented 7 years ago

I see... I may give it a shot myself, then. Is there anywhere I need to change stuff besides https://github.com/xCrystal/crystal-randofuser/blob/master/src/engine/BaseData.java?

xCrystal commented 7 years ago

I don't think so, just fuseStats().

LeafiaBarrett commented 7 years ago

Looking at the code, there doesn't appear to be anything tracking specifically which stat is which in the code - does the code just combine them as each pair is accessed, without any knowledge of which stat is which?

Side question, what did you use to compile the program? I can code in Notepad++ but that won't let me actually compile the thing - did you use Eclipse?

xCrystal commented 7 years ago

Yes, I used Eclipse and exported everything into an executable jar file.

It just loops through the six base stat bytes of both pokemon and combines them. Why is knowing the stat in particular important? If you wanted anyway, just track the iterator value in the for loop. The order is HP, Attack, Defense, Speed, Special Attack, Special Defense.

Anyway, maybe I got you wrong, but I though you wanted to implement it just for yourself? If so, you can just replace the functionality of one of the two stat merging moves, but otherwise adding another setting would require a GUI update.

LeafiaBarrett commented 7 years ago

I ask because I'm trying to figure out how to handle getting the BST and then getting the modifiers for each stat. I am trying to do it for myself, I was planning to replace the Average BST & Patterns option. I'm not an expert coder, so I still fumble with things sometimes... ^^;