Commit graph

554 commits

Author SHA1 Message Date
Lusamine
522790b8e6 Add Giant's Bed static encounter Trevenant crossover
Co-Authored-By: Skadiv <62726360+Skadiv@users.noreply.github.com>
2022-01-07 21:00:44 -06:00
Kurt
47071b41f3
Refactoring: Span-based value writes and method signatures (#3361)
Existing `get`/`set` logic is flawed in that it doesn't work on Big Endian operating systems, and it allocates heap objects when it doesn't need to.

`System.Buffers.Binary.BinaryPrimitives` in the `System.Memory` NuGet package provides both Little Endian and Big Endian methods to read and write data; all the `get`/`set` operations have been reworked to use this new API. This removes the need for PKHeX's manual `BigEndian` class, as all functions are already covered by the BinaryPrimitives API.

The `StringConverter` has now been rewritten to accept a Span to read from & write to, no longer requiring a temporary StringBuilder.

Other Fixes included:
- The Super Training UI for Gen6 has been reworked according to the latest block structure additions.
- Cloning a Stadium2 Save File now works correctly (opening from the Folder browser list).
- Checksum & Sanity properties removed from parent PKM class, and is now implemented via interface.
2022-01-02 21:35:59 -08:00
sora10pls
eb71576803 Add New Year's distribution raid data 2021-12-31 19:04:35 -05:00
Lusamine
8612404f84 Add Slippery Slope Weavile static encounter 2021-12-24 20:06:31 -06:00
sora10pls
260036a90b Add Holiday 2021 distribution raid data 🎄 2021-12-16 19:04:28 -05:00
Kurt
e84932badd Remove unnecessary trailing comma
nit
2021-12-09 19:10:50 -08:00
Kurt
f55c5bea66 Minor clean
no functional change
2021-12-04 17:56:56 -08:00
sora10pls
dfff798855 Label more BDSP flags/work vals 2021-11-27 23:12:29 -05:00
Lusamine
f34bc9c3fa Add Slippery Slope static encounter Trevenant
Closes #3287
2021-11-23 10:26:11 -06: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
sora10pls
ac9f3941c1 Add new distribution raids 🧬 2021-11-18 19:17:56 -05:00
sora10pls
338bc562bb Add new distribution raids 🦊👻 2021-10-28 20:05:02 -04:00
Matt
b5bc24de35
Unban Pika/vee Dynamax Crystal encounters 2021-10-09 21:40:49 -04:00
Kurt
d4b20b8082 Add nickname checks for WC3, add non-english ageto/colo
Closes #3260

Co-Authored-By: FeralFalcon <33670476+FeralFalcon@users.noreply.github.com>
2021-09-30 19:57:52 -07:00
Kurt
ca35623124 Remove phantom invisible character, fix de mattle ho-oh
#3260 part 1

I searched for more instances of the phantom character, and found the one instance in gen7 zh flags :D

Co-Authored-By: FeralFalcon <33670476+FeralFalcon@users.noreply.github.com>
2021-09-30 19:29:22 -07:00
sora10pls
769021cf77 Add Alolan distribution raids 🏝 2021-09-30 20:04:58 -04:00
Kurt
6a2f778c9a Allow reload for debug build 2021-09-21 19:42:14 -07:00
sora10pls
93cb6de183 Add Solrock/Lunatone distribution raids + new Dynamax Crystals 2021-09-16 20:11:10 -04:00
Lusamine
a779000097 Include Thunderstorm for Honeycalm Sea Seadra 2021-09-12 16:14:22 -05:00
Lusamine
9751a75f59 Free Sgr7121 GMax Duraludon 2021-09-06 13:26:18 -05:00
sora10pls
9bd0104954 Add new distribution raids 🧹 2021-09-02 20:04:14 -04:00
Kurt
348fa4c9fa Force Gen2 Red Gyarados to be male only, fixed IVs
Closes #3251

Uses fixed IVs to force shininess (rather than mutating DVs)
1f9e688b76/engine/battle/core.asm (L6103-L6110)

Co-Authored-By: CanoeHope <43196464+CanoeHope@users.noreply.github.com>
2021-08-29 13:23:34 -07:00
LegoFigure11
eeaf19f1c2
Fix incorrect met locations in XD GoD (#3250)
The Hexagon Brothers can be rematched in Phenac City if their shadows aren't snagged at the Cipher Lab, but Seedot, Houndour, Gulpin, and Spheal are all encountered outdoors (Phenac City (XD) [100]). Mareep and Baltoy are both encountered downstairs in the Mayor's House (Phenac City (XD) [096]).

Relevant .xk3 files: https://cdn.discordapp.com/attachments/537784151970021376/880816626176495626/Phenac_Rematches.zip
2021-08-27 07:33:12 -07:00
Kurt
c1a7d04c5c Fix ck3 fateful read
Hope 555e81205d was actually incorrect and that this is finally correct
2021-08-24 22:23:45 -07:00
Kurt
ffcd2e96e0 Fateful Mattle Ho-oh on japanese colosseum
must have been an oopsie they reverted for international releases
Thanks @liketolike !

Co-Authored-By: Lusamine <30205550+Lusamine@users.noreply.github.com>
#3242
2021-08-24 19:29:51 -07:00
Kurt
ae0ca49628 Arrange CXD Shadow encounters, add ShadowID documentation 2021-08-21 17:01:50 -07:00
Kurt
cd12962a50 Remove Tradeback state caching in PKM data
Since we have more metadata with move learn sourcing, we can check if it was traded to gen2 to get new moves / deleted.

Adjust call sites appropriately
might have some issues, to be ironed out maybe
2021-08-20 15:59:54 -07:00
sora10pls
5379bad7ff Add new distribution raids 👻 2021-08-19 21:20:56 -04:00
Kurt
e18c2d8fa4 Replace linq with similar but faster logic 2021-08-05 20:47:32 -07:00
sora10pls
2766c2c900 Add new distribution raids
Apparently the theme is summer
2021-08-05 20:03:56 -04:00
Kurt
2f9a60b5e6 Organize byte resources into subfolders 2021-08-05 15:35:29 -07:00
Kurt
66f1b23dc6 Consider the "SkipFormCheck" for gen7 scatterbug static
Rework to match the encounter slot form-ambiguous checks
2021-08-02 20:45:52 -07:00
Kurt
34f750d519 Remove unobtainable static encounters from gen4 tables
We don't do it for inaccessible static encounters in gen7/8, so anyone glitching/cheating will get an unrecognized encounter instead of "hey this exists, but you can't access it" error.
2021-07-30 13:09:26 -07:00
Lusamine
535b63f613 Add Frigid Sea weather bleed for Roaring-Sea Caves Hydreigon/Tyranitar
Co-authored-by: Skadiv <62726360+Skadiv@users.noreply.github.com>
2021-07-29 15:20:22 -05:00
Lusamine
ab33df2fc9
Enforce weather legality for SWSH (#3221)
* Add weather types by location

Creates a dictionary of possible weather types for each SWSH location.
Unlisted locations may only have Normal weather or do not have any
encounter slots.

* Prune unused weather from static encounters

Some encounters were too permissive with weather, e.g. Sandstorm in
Fields of Honor and Challenge Beach; Snowstorm at Dyna Tree Hill.

A few crossover areas that would have limited the possible weathers were
marked with a "(c)". An example is Nidorina from Giant's Bed crossing
to Frostpoint Field, where Raining and Thunderstorm do not occur.

This additionally organizes encounters by location.

* Move location-weather dictionary to EncounterArea8

* Verify weather marks on encounterslot/static encounters

* Adds some static encounters available through weather bleed

Weathers aren't normally available, but these static encounters are
close enough to the boundary that the weather in an adjacent area can be
used to spawn them.

- Frostpoint Field Snorlax with Raining/Thunderstorm from Giant's Bed
- Snowslide Slope Amaura with Raining/Thunderstorm from Giant's Bed
- Frigid Sea Carracosta with Intense_Sun from Three-Point Pass
- Frigid Sea Magmortar with Intense_Sun from Three-Point Pass
- Ballimere Lake Corviknight with Snowstorm from Giant's Bed
- Ballimere Lake Cryogonal with Snowstorm from Giant's Bed
- Ballimere Lake Tyrunt with all weather from Giant's Bed
- Lakeside Cave Ferrothorn with all weather from Ballimere Lake
- Tunnel to the Top Golbat with all weather from Path to the Peak

* Defer weather marks if incompatible, enforce encounterslot weather

This uses the area weather to check fishing slots and tentatively adds
some tables for weather bleed encounterslots.

* Warm-Up Tunnel gets weather bleed from Training Lowlands

* Update for base PKHeX

* Handle weather bleed for SWSH encounter slots

Co-authored-by: Skadiv <62726360+Skadiv@users.noreply.github.com>

* Minor clean

Having duplicate weather marks is illegal, so just auto-partial match them instead of checking the other marks.

* Rearrange slot weather check logic

* Claim reserved byte in SWSH pkl

* No need for two variable names now

* Valid weather marks on tree/fishing should return with main weather

* Fix tree/fishing deferral and add another surf slot weather bleed

* Disallow tree/fishing encounters from using bleed tables

None are currently known at this time, and only hidden grass encounters
have a weather bleed table

* Condense bleed expression, combine tree/fish flag check

* Move weather-bleed check into EncounterArea8

Makes the dictionaries private instead of internal.

Co-authored-by: Skadiv <62726360+Skadiv@users.noreply.github.com>
2021-07-26 14:28:05 -07:00
sora10pls
ee004865bd Add fossil distribution raids 2021-07-22 20:08:14 -04:00
Kurt
8e5e4487ba Change interface for method call to less restricted
Don't need "Name" or "LongName" for these methods.
2021-07-13 18:22:04 -07:00
sora10pls
34c401b7a0 Revise IsHOMEGift, check Card ID for gift date range
Currently, HOME gifts present in wc8.pkl will not be flagged for invalid dates due to them missing their respective Card IDs. This will be fixed with the next stable release, so this works for now.
2021-07-13 18:22:04 -07:00
sora10pls
85c500529e Add Curry distribution raids 2021-07-08 20:06:30 -04:00
Kurt
103aa9aa4b
Revise EncounterArea and EncounterType for clarity (#3228)
EncounterArea now stores a more specific type'd array for encounter slots. Better iteration and less casting, as the nonspecific `Slots` fetch is rarely referenced.

EncounterType renamed to GroundTile to reflect how it actually works in Gen4. Was previously an ambiguous field that was clarified a little; we can describe it a little better now. Keep the GUI the same to not scare the end users.

Change Trash Byte properties to get/set a Span. Trash Byte legality checking easier on the garbage collector?
2021-06-29 20:58:06 -07:00
sora10pls
285f86d7b2 Add squid distribution raids
You're a kid now, you're a squid now
2021-06-24 20:04:07 -04:00
Kurt
87ac1cbcc9 Unban Sgr7348 encounter 2021-06-18 22:07:27 -07:00
Kurt
2abf95cdf8 Minor clean
expand some expressions, extract some methods, add comments
2021-06-08 20:14:55 -07:00
Lusamine
e66d5eaad5 Remove another duplicated distribution index
Index 24 is the same as 26, but they cross epochs from base to DLC1.
Keep the later one since it encompasses all legal Wild Areas.
2021-06-06 21:46:23 -05:00
Lusamine
72b4975429 Remove inaccessible water nest encounters 2021-06-05 18:11:19 -05:00
Lusamine
aee35cbe81 Clean up duplicated distribution indices
Removes duplicates if every encounter in the same index is the same as a
previous index. The following were affected, and only the first index
was retained.

- 5, 7 (Index 2 has 1 move different on 1 mon)
- 3, 4
- 11, 13
- 16, 18
- 27, 28, 30, 32
- 33, 35
- 36, 38
- 42, 44
- 45, 47
- 48, 50, 52
- 53, 55, 57
- 59, 61
2021-06-05 16:33:41 -05:00
Kurt
ad79833420 Update EncounterEvent.cs 2021-06-04 13:53:02 -07:00
Kurt
8222297da8 Remove enumerating when loading event templates
Just allocate the parent array and pass it to HashSet; having an ICollection, prevents resizing repeatedly and gc'ing the temp array is cheap.

Actually, only create a hashset if we're adding a gift from external DB. Saves on that allocation, and keeps the final result as an array (fastest iterating).
2021-06-04 13:48:02 -07:00
sora10pls
a2492eddd9 Add Frog distribution raids 2021-06-03 20:07:07 -04:00
sora10pls
3fb4bd7db2 Add Wooloo distribution raids
Nice
2021-05-20 20:16:13 -04:00