Today is the new Tomorrow (Patreon)
Content
anyway hi i mentioned it on the dev blog but i'll be leaving town for a few days in a few days and so I really want to start internal testing before then. frankly, i really wanted to start internal testing like, two weeks ago, but that would have been a terrible idea because all of this AI clean up work has taken way longer than expected and there's still a lot more we need to do (and admittedly, I've shied away from work a bit recently because of my hand situation)
but let me post you all at what's left to be done. i could post what we've actually been doing, but in an astounding lack of foresight i did not record the fixed bugs whatsoever, i just deleted them.
Current Generic AI Bugs:
- --High and Best Skill trainers take no action in doubles when the player has only one pokemon left.
- ----Likewise, partner trainers take no action in doubles when there's only one pokemon on the opponent's side of the field.
- The 110 move cap should happen before the accuracy multiplier.
- --Example: below is vs a 1 HP pokemon
- ---- ***Round 1***
- ---- Clanging Scales: initial score: 110
- ---- Clanging Scales: final score: 110
- ---- Origin Pulse: initial score: 110
- ---- Origin Pulse: final score: 110
- ---- [The foe Shuckle: Clanging Scales=110, Origin Pulse=110]
- ---- [Prefer Clanging Scales]
- ---- [Solaria lost 1 HP, now has 0 HP]
- --Both of these moves will KO and have a score of 110, so it will sometimes choose either one. But it should always choose Clanging Scales in this case since Origin Pulse only has an 85% accuracy. I would expect the score to have been multiplied 110 * 0.85 = 93
The top one is the main thing and absolutely must be fixed before continuing testing. Marcello has been working hard on it and a number of things but these kinds of freezes are why we have not moven forward.
In the mean time it's my job to take the things we observe in testing and figure out why they're doing a succ and what needs to be changed. Here are my notes for that kind of thing, and the cases that I still want to look over before beginning Internal Testing:
- an opposing lopunny using ice punch instead of bounce vs a fire type. this is because we've taught the AI that two-turn moves are Bad (because they are) but bounce is still better in this situation it's a neutral damage and avoids for a turn. i think i've made it undervalue the avoid... probably mostly in cases where it doesn't have good alternatives
- partner score handlers need to be changed away from 100 which is an essentials default value. however, we changed the default for move scores to not longer be 100. therefore it's not properly thinking about when moves hit a partner in doubles. unfortunately we don't have a single standard number anymore, but also we might not need one since we know exactly how much % HP the attack will do.
- Noel's Cinccino prefers hidden power fire in the rain over its multi-hit attacks. I was thinking that maybe there just wasn't code to know the damage of multi-hits, but there is... so I really need look up what is going on here. it could just be a fluke where it chose a bad move with like a 2% chance but i have a change to solve that as well.
- Radomus doesn't like Trick Room anymore :C even though his team is built for it so I may need to up the multipliers or something.
- A bug where pokemon take no action vs opponents who are frozen while on Electric Terrain.... what??? how esoteric is this shit? but I'm not confident it's just when frozen so I need to find out why.
- Victoria used Fire Fang vs Aster's Solrock Lunatone duo when it had Crunch.......... this might be a % fluke like with Noel but I need to test to make sure.
Switching
- has some funky heck going on. in general it seems to not be valuing type match-ups enough when deciding what to switch into (in favor of thinking about roles like walls, pivots, etc) so maybe I just need to tweak the multipliers but it's hard to tell why this is a thing
- trainers that only have pokemon far below the player's level tend to switch a lot because they keep recognizing that the pokmon that's out right now ain't gonn do shibbidy-do-bop. we decide to switch by comparing our best move to a switch score, but when our best move only does like 2 damage it's not hard to want to switch.
Potions
Potion usage has not been a focus for us this episode so I'm unsure if we will get to this or not but...
- It is pretty glaring when trainers use potions on pokemon that can be OHKO'd.
- And also when they lose a sweep because they wanted to potion when they could have just KO'd the player's pokemon.
Priority
this one is a bit frustrating because it was one of the first changes i had made, but this has also not be en a focus area and so it's possible the whole number system is just incompatible with our other changes and will need to be rewritten later.
- Pokemon should use priority moves if they're slower and know they're going to bite it
- Pokemon should prefer priority moves when another Pokemon is at low HP... I think there's some weird stuff with our damage score cap going on here but Marcello insists it's correct. so iiiiidk. I probably need to wait for the accuracy above to be resolved before exploring this.
Cases like the last one where I need to wait for a certain thing to be fixed before testing again are part of why this has taken so long because it means I can't always charge in and just do everything-- especially when some of those changes are large, sweeping ones like the % fluke, or the division error (which we still found more incidents of) and would affect nearly everything
Can we get through this all in a few days?
...probably not.
can we get through enough to get to internal testing while i'm gone?
one can only hope. and test. and fall into despair when they inevitably find an issue that they weren't testing for....