Commit graph

518 commits

Author SHA1 Message Date
Kurt
9ce0da6c46 Add bdsp approximations for min sheen calcs
Closes #3351
2021-12-25 18:51:02 -08:00
Kurt
fbb9e0bf0e Flag original catchrates on g1->g2->g1 transfers
Closes #3328
2021-12-25 18:44:37 -08:00
Kurt
2d34411203 Fix g8 meister magikarp matching
5b2ad8703c
2021-12-25 12:57:05 -08:00
Kurt
5b2ad8703c Handle g8 meister magikarp language goofiness
Only 5 & 1 language IDs are used
2021-12-11 22:23:05 -08:00
Kurt
aa968f56aa File scoped namespace for drawing projects
Extract color util to separate class as it's not entirely image related.
2021-12-10 00:15:04 -08:00
Kurt
9f920405df Revise gen3 sheen max extrapolation
any contest stat sum above 73 can have any sheen if you really give it trash blocks, lol

not trying to bruteforce the exact combination of consumed blocks/poffins, so these clamps may permit impossible intermediate values, but these are infrequent and meh.

Closes #3325
2021-12-09 23:33:54 -08:00
Kurt
f1fe2f6a8c Minor clean 2021-12-09 19:30:12 -08:00
Kurt
18469a78aa Set legal default ball for bdsp bred egg templates 2021-12-09 18:39:03 -08:00
Kurt
51c75dd102 Explicitly implement IFixedAbilityNumber on all templates 2021-12-09 00:46:59 -08:00
Kurt
90956f3b05 Flag encounter slots that cannot obtain HA or use ability patch
Ex: old chateau Gastly in bdsp cannot have HA as it is not different from base abilities
2021-12-08 23:43:32 -08:00
Kurt
0bb4534870 Reset contest stats to enc instead of zeroed
Can't lower contest stats, but there's no cases of them giving a pkm with contest stats in a game that can't obtain contest stats -- let's just reset instead of zero for futureproofing.

Make them extension methods too; add an overload if you want to purposefully maximize them.
2021-12-08 22:43:56 -08:00
sora10pls
88822b4e68 Update minimum Egg hatch cycle legality
0 is legal in most cases except for Gen2 and BDSP!

...it's technically possible to get 0 in BDSP if you have autosave turned on and have an Egg in your party after hatching one before it, but it will hatch immediately on your next game startup, so disallow it anyway.
2021-12-07 20:38:00 -05:00
Kurt
543359fff6 Add contest stat sheen checking
Closes #3324
2021-12-07 00:54:39 -08:00
Kurt
3e59d481c4 Move bred pokeball short circuit to gen-specific function
Now flags safari-exclusive species in pokeballs
2021-12-04 10:52:57 -08:00
Kurt
1c82b707f3 Add xmldoc, add egglevel get central location 2021-11-30 17:09:46 -08:00
Kurt
091e2c28cd Add safari-only breed balls 2021-11-30 15:41:47 -08:00
Kurt
ef183ca1ff Rearrange special case 2021-11-30 15:16:04 -08:00
sora10pls
03c3f4a343 Force Poké Ball for all Riolu Eggs
Happiny not affected because Chansey is in the wild.
2021-11-30 16:14:53 -05:00
Kurt
5b2bd2ef7e Simplify expression
don't need to re-fetch when it's already in the stack
2021-11-28 14:34:28 -08:00
Kurt
488b411716 Check for bdsp traded eggs being re-flagged for Nicknamed 2021-11-28 14:32:41 -08:00
Kurt
d9a87f908d Update RibbonVerifier.cs 2021-11-26 19:37:29 -08:00
Kurt
435dbb0b57 Disallow sister version exclusive ribbons for exclusive forms
Spiky pichu cannot receive Sinnoh ribbons
Cosplay pikachu cannot receive Kalos ribbons

Closes #3286

Co-Authored-By: Kermalis <29823718+Kermalis@users.noreply.github.com>
Co-Authored-By: Matt <17801814+sora10pls@users.noreply.github.com>
2021-11-26 15:41:24 -08:00
Kurt
54d54a0f39 Restrict Twinkling to require ContestStar as well 2021-11-25 20:51:17 -08:00
Kurt
a761704a34 Split Trainer verifier into TrainerName and TrainerID
verify BDSP legality restrictions

Enforce nonzero TID/SID in Trainer Editor window (can use Block Data editor to set whatever without restriction, idc).

#3305
2021-11-25 19:15:42 -08:00
Kurt
ae2c5080a5 Set nicknamed flag in GUI depending on encounter
#3311
2021-11-25 12:40:42 -08:00
Kurt
9d55fa9d80 Update ribbon legality for BDSP rules
Closes #3307
2021-11-25 12:28:23 -08:00
Kurt
039095d75c Revise zero hw checks
fishy by default, opt in
ignore certain encounters
2021-11-24 23:03:30 -08:00
Kurt
203b764829 Add zero height/weight flagging setting
because people couldn't hacc responsibly, I might as well give them a nudge in the right direction.

Doesn't mean I won't check your "random" choices distribution.
2021-11-24 19:29:02 -08:00
Kurt
cd5c220ddc Show correct HatchCounter value for BDSP traded eggs
Yay abstractions to hide away the quirks.

BDSP traded eggs set HT_Friendship and the CurrentHandler flag, but the HatchCounter is always the OT_Friendship value.

Trades always receive BaseFriendship, instead of a hardcoded 50. Necessary to not hardcode because it's immutable for eggs.

Clicking the hatch counter label now sets it to the legal minimum hatch counter (best), and control clicking sets it to the max (worst). Check the encounter template for the true maximum.
2021-11-21 19:53:13 -08:00
Kurt
1ca1b838c1 Handle traded BDSP eggs & flag HatchCounter=0 2021-11-21 19:29:07 -08:00
Kurt
ba9db5ae99 Ban ball inheritance for bdsp fossils 2021-11-21 17:31:45 -08:00
Kurt
b26f4db6ab Enforce AffixedRibbon -1
All your hacks are still hacks

Re-expose affixed ribbon in the ribbon editor for PB8
Since there's no way to change it in BDSP, flag anything non-neg1
2021-11-20 09:04:09 -08:00
Kurt
723514e89c
Update 21.11.19 - Brilliant Diamond & Shining Pearl (#3289)
Big thanks to @SciresM @sora10pls @Lusamine @architdate @ReignOfComputer for testing and contributing code / test cases. Can't add co-authors from the PR menu :(

Builds will fail because azure pipelines not yet updated with net6.
2021-11-19 18:23:49 -08:00
Kurt
009e37662f
Startup Enhancements, Gen1/2 Save Indication, Export SAV cleaned up (#3275)
* Providing pkm/sav files via command line (dragging files onto exe / associated file launched) will more intelligently source a partner sav/pkm object if not provided.
* Gen1/2 mainline save files now indicate if they are VC era or GB era (legality implications) in the program title bar.
* Fixes loading VC era save backups not being recognized as VC era (`.bak` extension hides `.dat`)
* Export BAK moved to the SAV tab, which allows Export main to be deleted and Export SAV to be used as the single-click for exporting saves. `CTRL-E` is still the hotkey.
2021-10-21 22:13:21 -07:00
Kurt
256b3c66ca Recognize unhatched crystal eggs, 2F pokecenter location
lacking met location data on receipt, can result in 0 for eggs hatched on the second floor of a pokecenter

https://bulbapedia.bulbagarden.net/wiki/List_of_locations_by_index_number_(Generation_II)

Thanks Freezing Dart!
2021-10-19 21:53:22 -07:00
Kurt
4b263bf9bb Fix pattern matching comparison
Wish I had an analyzer to catch this (missing parens) similar to boolean logic

#3271 - resolves the traded egg recognition issue
2021-10-13 20:05:19 -07:00
Kurt
dd9b31dbbe Remove unnecessary property
template stores the version; no need to refer to store it separate from the object
Generation being separate is fine for now
2021-10-08 23:30:03 -07:00
sora10pls
7722baa826 Update RibbonVerifier.cs
Series 11 allows restricted Pokémon and runs until January 31st, 2022.
2021-10-08 09:41:57 -04:00
Kurt
97af5a31c1 Rewrite gen1 trade evo check
Closes #3266 ty @CanoeHope !
2021-10-07 23:56:01 -07:00
Kurt
5fe38e1707 Allow wc3 nickname flag due to 3->4 nick detection omission
Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com>
2021-10-05 22:46:21 -07:00
Kurt
f53f46c2e4 Revise ability patch/capsule message
Fix PCD logic flow
2021-10-02 10:25:52 -07:00
Kurt
f2dc3f1245 Exclude granbull/vibrava/flygon as single abilities
per the personal data in emerald, they are the only species that go from 2 distinct abilities to 1; since the game does not update the abilityNumber on evolution, it has the second ability being the same as the first, instead of the usual [ability,none] for all other single ability species.
2021-09-30 21:42:44 -07:00
sora10pls
c9fed1ce70 Update BallVerifier.cs 2021-09-30 20:12:54 -04:00
sora10pls
9ec879bd99 Allow non-Poké Ball for Alolan starters
thank you game freak
2021-09-30 20:08:27 -04:00
Lusamine
4e398322b0
More memory legality checks (#3256)
* Add more memory legality checks

Includes the following new memory checks:
- 4: met in link-trade, allows all possible genlocs except dangerous place
- 7: successful fishing, allows fishable species in gen 6 and 8
- 9: paying attention to another mon, allows only available species for gen 8
- 29: encountering legendary Pokémon, only seen on Zacian, Zamazenta, Calyrex so far
- 32: riding a bike, only in genlocs where biking is possible
- 75: taken to Nursery and placed with a mon, allows only available species for gen 8

Unstubs lotto check and applies it to gen 6.

Co-Authored-By: Skadiv <62726360+Skadiv@users.noreply.github.com>
Co-Authored-By: Matt <17801814+sora10pls@users.noreply.github.com>

* Loto-ID only has one t

* Crown Shrine has another genloc outside

* Consistent Loto name for array

Co-authored-by: Skadiv <62726360+Skadiv@users.noreply.github.com>
Co-authored-by: Matt <17801814+sora10pls@users.noreply.github.com>
2021-09-12 12:01:45 -07:00
Kurt
1d00e17217 Add properties for cleaner interaction 2021-09-07 15:31:54 -07:00
Kurt
2575d73144 Add IFixedAbilityNumber, hide vivillon region flags
tfw can't using static a private class in the file, gotta be explicit.
2021-09-06 18:11:32 -07:00
Kurt
17c32db8b5 Minor fixes
Replace hardcoded move int with enum val
Lillipup->Rockruff
personal_swsh: remove pledge bitflags (missed in CT update)
2021-09-06 18:04:14 -07:00
Kurt
adb7466a22 More memory legality additions
probably worthwhile to move the checks into the context, and return an enum -> switch to generate checkresult
2021-08-29 15:56:09 -07:00
Kurt
2f3e496e6f Change defunct gen8 location memory setting to check 1%
Refer to previous commit, the apply-memory has a 1% chance of failing for 100% memories, resulting in the ability to have 0-memory HT via link trades.

In-game trades caused the previous logic, as those forget to set the HT memory (likely the same logic flaw as skipping the nickname check via game settings).
2021-08-29 13:09:26 -07:00