ok you know what fuck it 2 am kirby research dump time: kirby fighters 2 story mode/buddy tower stones since thats what ive been researching recently while mapping out the game's exefs (main executable) in ghidra
first off, every level for each stone is its own item. while this seems like a weird decision at first, it does make checking for the cursed stones for the debuffs a lot easer since the game only needs to check if you have any amount of the level 5 stone
each stone has a specific function for calculating that specific buff. first, the game gets the amount of each level stone you have, then multiplies each count by the corresponding stone's bonus, and finally adds the products of all of them together.
(L1_count * L1_bonus) + (L2_count * L2_bonus) + (L3_count * L3_bonus) + (L4_count * L4_bonus) + (L5_count * L5_bonus)
because you will never have more than one of each level, this works very nicely!! if you don't have a specific level, that will result in 0 due to multiplying by 0, and if you do have one, itll produce the bonus due to multiplying by 1.
this also has the side effect of being able to stack multiple of one level stone, though this wont happen in normal gameplay, but it would be fun to mess around with!
there are two stones that are actually completely unused!! they're unobtainable in normal gameplay since the item table has them disabled for every single chapter, but they are fully implemented in both the native code and hal's scripting bytecode, mint!!
BlowAway
the "BlowAway" stone causes opponents launched by your throws to be in hitstun for a longer period of time, and as such more susceptible to buddy tosses. the base amount of frames is 40, so the hitstun for each level is:
98 frames is a lot of time for a video game, especially a fighting game!! specifically, its 1.6 seconds of hitstun!!! this stone was probably way too strong and was cut because of that.
interestingly, the maximum this stat can go is 200 frames, which is 3 and 1/3 seconds. that is WAY too much hitstun for any game, even if its just what you deal to opponents in a situation that isnt super common unless you're one of the two grapplers in the game.
ShieldTime
this stone is interesting due to the fact that everything related to guarding isn't handled in mint, but rather the native game code itself in exefs!! what the "ShieldTime" stone does is reduce how much your guard meter depletes while holding the button.
the base is a multiplier of 1.0, and has a minimum of 0.25. this stone's formula subtracts the bonus from the maximum value instead of adding to the minimum. so, for each level, this multiplier is:
0.25x (result is 0.2, which goes under the minimum)
0.25x (result is -0.45, which would cause the guard gauge to increase rather than decrease)
looking at how this starts to scale negatively, this stone was probably scrapped pretty early before the values could be actually fine-tuned.
interestingly, the level 5 stone items are referred to as "PieceDevil__Ex", while the level 4 stones are called "PieceDevil__". these probably were going to have a negative health drawback like the level 5 stones.
in fact, the yaml file that dictates which items can appear inbetween floors actually tells us this!!
there's a "name" property that is named uniquely for only the two unused stones i just talked about, and at the end of that for both of those there is a short description of the stone's effects not present in the other stones's name properties. this actually includes the health debuff!!
it seems like the level 4 stones used to take away a quarter (25%) of your health, and the level 5 stones were actually buffed in the final game!! originally, it looks like they were going to take away 40% of your health instead of half of it (50%)!!
thats about it for now, this has been very fun to document and i will probably make more big posts like this when i can!!!