AI, Round whateverthefuck + patron stress-test slamjam (Patreon)
Content
hi it's been a few days i'm through my AI bug list so now i've created a new list, it's the things that were changed (or at least most of them) wow here it is now would you look at that
we're gonna split this into two categories, the big ticket items, and the small fries. we'll start with the small fries first:
- fixed a bug that was making Focus Punch ask not if the opponent was asleep, but the attacker, which as you might notice, means that you cannot Focus Punch anyway.
- the AI is now less likely to use Focus Punch without a substitute, or in double battles, since that is a stupid idea
- Focus Punch and other attacks that require charge up no longer count as a guaranteed killing move for the purpose of attacks that ask if the pokemon has a killing move (i.e don't waste turns setting up if you can just murder them)
- High Skill tier trainers (meteor ace's, ace trainers, etc) can now anticipate Wide Guard and Powder as well as Best Skill trainers (story characters)
- Tweaked burn to be overvalued vs physical attackers less, because it was ridiculous before
- AI is now has a memory of more than one turn and can be wary of using Sound Moves after the player reveals Throat Chop
- AI now knows not to use Dark Void unless they're made of Darkrai
- Shelly is now more likely to use Rain Dance even if Illumise (somehow) has a killing move on the player
- AI now knows that Nature Power can be used VS Magic Bounce since it's actually good in this game
- No longer uses Conversion if it's already the type it would Convert to
- Less likely to piss off players by using Fake Out in doubles
- AI is now less likely to try and set up screens when the player is down to their last couple pokemon
- Now avoids using Tailwind if the player is down to their last Pokemon and the AI is already faster because please just kill them already ;~;
- is now aware of Unaware and avoids using non-damaging set-up moves against it
- tweaked AI to be less coil-happy
- tweaked AI to be less charge-happy, particularly at lower levels
- tweaked Stealth Rock to be more inclined to the first turn in particular, as opposed to setting up and then using it.
- adjusted Cosmic Power to be more opportunistic with safe set-ups
- AI now knows to not hard-switch in Defeatist Pokemon, or unbroken Sashes/Sturdy
- Now gets angry and prioritizes Revenge Killers slightly more when switching
- Fixed a bug that considered Trick Room twice in singles when switching due to looking at an invisible second opponent's speed.
- Now knows to send in Pokemon with focus sash or sturdy against player pokemon with lots of offensive boosts
- Tweaked decision making to be less hesitant to choice into attacks that can be ineffective against certain types, as previous values caused inoptimal choices
- Now considers move PP and Accuracy when choosing a move for Choice Items
- Now considers Quick Guard when selecting priority moves... shh.
- Now knows to not send in Ditto vs another Ditto. double whoops.
and now for the big bois, a distinction that is entirely chosen entirely by the amount of frustration i felt at the time of fixing:
- added code that i definitely already thought existed to prevent the AI from setting up against Pokemon likely to be super effective against them, in the case that they have yet to reveal a move
- added "Phazer" role to the AI, prioritizing phazers when the player has many boosts stacked up.
- AI now knows to avoid using z-moves on substitute and disguise
- AI now considers players' boosts and relative HP when choosing a Z-move target in doubles
- the AI is now significantly more likely to switch out mons choiced into ineffective or low-damaging attacks instead of just happily spamming Earthquake against Flying types
- for personal reasons, item usage has been completely fucked up
- fixed a teensy weensy itty bitty minor bug where the AI was not considering weaknesses at all when deciding what to switch in
- now considers typing when deciding whether or not to switch out.... ...yeah.
ok, so let's talk about those last two. the final one, about deciding to switch out, is easy to overestimate. one unfortunate thing about our switching system is that it happens in two phases. first, it decides if it wants to switch out. then, if it does, it decides what to switch in. there are some exceptions, but in general they're disconnected, which is a problem because, like if you're using u-turn, once you decide to switch you can't cancel that even if you find that all of the options you have to switch to kinda suck. this is why we've had bugs in the past with the AI just spam-switching between multiple under-leveled Pokemon.
in this case, i cannot actually make the typing check too high because, especially with the number of major battles that take place against monotype teams, once a gym leader or whoever is down to just a few pokemon it's likely that they don't have a good defensive switch in, so they'd just be throwing turns away. this is a bigger issue that i'd like to find a better solution to later on down the line, but right now this is where we're at.
therefore, we have to be pretty cautious about switching out purely due to typing. as of this addition, it is now a small factor, but newly a factor nonetheless, which is probably necessary.
now for the other one-- where it wasn't thinking about weaknesses when switching in:
uhhhhhhhhhh haha what?
okay, so i'm guessing the reason this happened is because originally all of the switching decisions were based on the moves the player actually used and the actual amount of damage they caused. and that was what had the reverse-typing bug that caused it to be deliberately sending in pokemon that were weak to the player's moves.
however, what we overlooked there was-- what if the player hasn't used any moves yet? we saw a lot of cases where the AI would make dumb decisions in the turn before it had any information to go off of. so, although it's imperfect, we added this bandaid check that says, all right, if the player hasn't used any moves on this pokemon, just assume they have some STAB moves and look to counter those
...but since that was probably a rushed mid-testing-phase addition, apparently it was only added to score based on what they were strong against, rather than what they were weak to.
so we fixed that an immediately saw some results and also i immediately cried in shame.
but
what's really incredibly to me is that even despite alla dis broken shit
our AI update was still noticeably miles better than default Essentials
and how?????
we weren't even looking at weaknesses, literally how??? what was it doing? i don't understnad............ help................................
--
ok, so now we've made a bunch of AI changes, and it's time to talk about why this is happening.
basically, i sort of let cass talk me into releasing an 18.2 AI Update with our recent fixes as a present to the community for Christmas. between the new stuff and the old stuff (you know, the bug where it always thought it was faster,,, the bug that was breaking protect moves,,, the reverse typing thing i mentioned above)... we've fixed a lot of huge bugs on top of a mountain of smaller optimizations. and postgame still has a long way to go, so she thought it might be nice to get some part out to you sooner rather than later.
the big problem here is the testing, and, my dear and lovely patrons, that is where you come in. we've done a lot of shit to the AI, the past few days not even withstanding, but then especially those too. and as anyone who has survived a recent episode testing cycle knows, the biggest risk therein is inaction errors. the AI is not going to be optimal, but it is going to be a lot better than 18.1, but first we need to make sure it's not also shutting itself down
and so, that's why we're enlisting your help.
from now until christmas, we're gonna be having a four day stress-testing slamjam on the patron server. this is going to be available just for the testing group of Level 5+ patrons, and since it is very impromptu we will be keeping it to just discord, and probably giving out periodic script updates as as we continue to fix things before Christmas.
Join us in the testvolution.......
and if you are level 5+ and are not on discord... then fix that! Patreon should automatically add you after connecting your account. And if you really don't like discord for some reason but want to help test.... well, then message me and we'll figure something out,
so, details of that will go up in discord shortly. feel free to ask here or there if you have any questions, and thanks in advance to anyone who's down to help us make this last-minute christmas present a success!