diff --git a/app/Console/Commands/Sprites.php b/app/Console/Commands/Sprites.php index b7c06ed8b..57315245c 100644 --- a/app/Console/Commands/Sprites.php +++ b/app/Console/Commands/Sprites.php @@ -50,7 +50,7 @@ public function handle() return 102; } - $sprite_sheet = 'sprites.31.1.png'; + $sprite_sheet = 'sprites.31.2.png'; $this->sprToPng($sprite_dir); diff --git a/app/EntranceRandomizer.php b/app/EntranceRandomizer.php index 55035d9c5..4f654c660 100644 --- a/app/EntranceRandomizer.php +++ b/app/EntranceRandomizer.php @@ -28,6 +28,8 @@ class EntranceRandomizer implements RandomizerContract 'dungeons' => 'dungeons', 'pedestal' => 'pedestal', 'triforce-hunt' => 'triforcehunt', + 'ganonhunt' => 'ganonhunt', + 'completionist' => 'completionist', ]; /** @var array */ private $swords_lookup = [ @@ -100,9 +102,17 @@ public function randomize(): void $flags[] = '--hint'; } + if ($this->world->config('rom.hudItemCounter') === true) { + $flags[] = '--huditemcounter'; + } + + if ($this->world->config('fastrom', true) === false) { + $flags[] = '--nofastrom'; + } + $proc = new Process(array_merge( [ - 'python3.9', + 'python3.10', base_path('vendor/z3/entrancerandomizer/EntranceRandomizer.py'), '--mode', $mode, diff --git a/app/Helpers/str.php b/app/Helpers/str.php index c5ee8b409..f419eebd8 100644 --- a/app/Helpers/str.php +++ b/app/Helpers/str.php @@ -1,26 +1,5 @@ item; - if ($item instanceof Item\Key && $this->region->isRegionItem($item) - && (!in_array($this->name, ["Secret Passage", "Link's Uncle"]) || $item != Item::get('KeyH2', $this->region->getWorld()))) { // special key-sanity case - $item = Item::get('Key', $this->region->getWorld()); + if ($this->region->getWorld()->config('rom.vanillaKeys', false) + && $item instanceof Item\Key && $this->region->isRegionItem($item) + && (!in_array($this->name, ["Secret Passage", "Link's Uncle"]) || $item != Item::get('KeyH2', $this->region->getWorld()))) { + $item = Item::get('Key', $this->region->getWorld()); } - if ($item instanceof Item\BigKey && $this->region->isRegionItem($item)) { - $item = Item::get('BigKey', $this->region->getWorld()); + if ($this->region->getWorld()->config('rom.vanillaBigKeys', false) + && $item instanceof Item\BigKey + && $this->region->isRegionItem($item)) { + $item = Item::get('BigKey', $this->region->getWorld()); } - if ($item instanceof Item\Map && $this->region->isRegionItem($item) - && (!in_array($this->name, ["Secret Passage", "Link's Uncle"]) || $item != Item::get('MapH2', $this->region->getWorld()))) { // special key-sanity case - $item = Item::get('Map', $this->region->getWorld()); + if ($this->region->getWorld()->config('rom.vanillaMaps', false) + && $item instanceof Item\Map + && $this->region->isRegionItem($item) + && (!in_array($this->name, ["Secret Passage", "Link's Uncle"]) || $item != Item::get('MapH2', $this->region->getWorld()))) { + $item = Item::get('Map', $this->region->getWorld()); } - if ($item instanceof Item\Compass && $this->region->isRegionItem($item)) { - $item = Item::get('Compass', $this->region->getWorld()); + if ($this->region->getWorld()->config('rom.vanillaCompasses', false) + && $item instanceof Item\Compass + && $this->region->isRegionItem($item)) { + $item = Item::get('Compass', $this->region->getWorld()); } if ($this->region->getWorld()->config('rom.genericKeys', false) && $item instanceof Item\Key) { diff --git a/app/Randomizer.php b/app/Randomizer.php index bc701efee..09e873f7f 100644 --- a/app/Randomizer.php +++ b/app/Randomizer.php @@ -96,6 +96,10 @@ public function randomize(): void */ public function prepareWorld(World $world): void { + if ($world->config('goal') == 'completionist' && $world->config('accessibility') != 'locations') { + throw new \Exception("The Completionist goal requires 100% locations accessibility"); + } + switch ($world->config('goal')) { case 'pedestal': $world->getLocation("Master Sword Pedestal")->setItem(Item::get('Triforce', $world)); @@ -104,6 +108,7 @@ public function prepareWorld(World $world): void case 'fast_ganon': case 'dungeons': case 'ganonhunt': + case 'completionist': $world->getLocation("Ganon")->setItem(Item::get('Triforce', $world)); break; } @@ -1026,7 +1031,11 @@ public function setTexts(World $world) break; case 'dungeons': $world->setText('sign_ganon', "You need to defeat all of Ganon's bosses."); + $world->setText('ganon_fall_in_alt', "You think you\nare ready to\nface me?\n\nI will not die\n\nunless you\ncomplete your\ngoals. Dingus!"); + break; + case 'completionist': + $world->setText('sign_ganon', "You need to collect EVERY item and defeat EVERY boss."); // no-break default: $world->setText('ganon_fall_in_alt', "You think you\nare ready to\nface me?\n\nI will not die\n\nunless you\ncomplete your\ngoals. Dingus!"); diff --git a/app/Region/Inverted/SwampPalace.php b/app/Region/Inverted/SwampPalace.php index a70910f30..3271d9531 100644 --- a/app/Region/Inverted/SwampPalace.php +++ b/app/Region/Inverted/SwampPalace.php @@ -51,6 +51,8 @@ public function initalize() || ($hera($locations, $items) && $items->has('BigKeyP3'))); })->setAlwaysAllow(function ($item, $items) { return $this->world->config('accessibility') !== 'locations' && $item == Item::get('BigKeyD2', $this->world); + })->setFillRules(function ($item, $locations, $items) { + return $this->world->config('accessibility') !== 'locations' || $item != Item::get('BigKeyD2', $this->world); }); $this->locations["Swamp Palace - Big Key Chest"]->setRequirements(function ($locations, $items) use ($mire, $hera) { diff --git a/app/Region/Inverted/TowerOfHera.php b/app/Region/Inverted/TowerOfHera.php index 72691c4ad..c39779ab0 100644 --- a/app/Region/Inverted/TowerOfHera.php +++ b/app/Region/Inverted/TowerOfHera.php @@ -57,6 +57,8 @@ public function initalize() && $items->canBunnyRevive($this->world)))) || $mire($locations, $items)); })->setAlwaysAllow(function ($item, $items) { return $this->world->config('accessibility') !== 'locations' && $item == Item::get('KeyP3', $this->world); + })->setFillRules(function ($item, $locations, $items) { + return $this->world->config('accessibility') !== 'locations' || $item != Item::get('KeyP3', $this->world); }); $this->locations["Tower of Hera - Compass Chest"]->setRequirements(function ($locations, $items) use ($main, $mire) { diff --git a/app/Region/Inverted/TurtleRock.php b/app/Region/Inverted/TurtleRock.php index bcffe3bd8..297fd2e98 100644 --- a/app/Region/Inverted/TurtleRock.php +++ b/app/Region/Inverted/TurtleRock.php @@ -121,6 +121,8 @@ public function initalize() || $this->locations["Turtle Rock - Big Key Chest"]->hasItem(Item::get('KeyD7', $this->world))); })->setAlwaysAllow(function ($item, $items) { return $item == Item::get('KeyD7', $this->world); + })->setFillRules(function ($item, $locations, $items) { + return $this->world->config('accessibility') !== 'locations' || $item != Item::get('KeyD7', $this->world); }); $this->locations["Turtle Rock - Crystaroller Room"]->setRequirements(function ($locations, $items) { diff --git a/app/Region/Standard/DarkWorld/NorthEast.php b/app/Region/Standard/DarkWorld/NorthEast.php index 11a7e4bba..75c2b874f 100644 --- a/app/Region/Standard/DarkWorld/NorthEast.php +++ b/app/Region/Standard/DarkWorld/NorthEast.php @@ -172,8 +172,9 @@ public function initalize() || $this->world->config('canMirrorClip', false)) && $this->world->getRegion('West Death Mountain')->canEnter($locations, $items)) || ($items->has('Hammer') && $items->canLiftRocks() && $items->has('MoonPearl')) - || (($items->canLiftDarkRocks() || ($this->world->config('canSuperSpeed', false) && $items->canSpinSpeed()) - || ($items->has('MagicMirror') && $this->world->config('canMirrorClip', false))) + || (($items->canLiftDarkRocks() || ($this->world->getRegion('West Death Mountain')->canEnter($locations, $items) + && ($this->world->config('canSuperSpeed', false) && $items->canSpinSpeed() + || ($items->has('MagicMirror') && $this->world->config('canMirrorClip', false))))) && $items->has('MoonPearl') && ($items->has('Hammer') || $items->has('Flippers') || ($items->has('MagicMirror') && $this->world->config('canMirrorWrap', false) && $items->canLiftRocks()) diff --git a/app/Region/Standard/DesertPalace.php b/app/Region/Standard/DesertPalace.php index f50582f6e..bbecac0b3 100644 --- a/app/Region/Standard/DesertPalace.php +++ b/app/Region/Standard/DesertPalace.php @@ -33,6 +33,8 @@ class DesertPalace extends Region 'KeyP2', 'Map', 'MapP2', + 'MapP2', + 'PendantOfPower' ]; /** @@ -57,7 +59,7 @@ public function __construct(World $world) new Location\Chest("Desert Palace - Compass Chest", [0xE9CB], null, $this), new Location\Drop("Desert Palace - Boss", [0x180151], null, $this), - new Location\Prize\Pendant("Desert Palace - Prize", [null, 0x1209E, 0x53F1C, 0x53F1D, 0x180053, 0x180078, 0xC6FF], null, $this), + new Location\Prize\Pendant("Desert Palace - Prize", [null, 0x1209E, 0x53E7A, 0x53E7B, 0x180053, 0x180072, 0xC6FF], null, $this), ]); $this->locations->setChecksForWorld($world->id); $this->prize_location = $this->locations["Desert Palace - Prize"]; diff --git a/app/Region/Standard/EasternPalace.php b/app/Region/Standard/EasternPalace.php index 7964d1562..60093a503 100644 --- a/app/Region/Standard/EasternPalace.php +++ b/app/Region/Standard/EasternPalace.php @@ -30,6 +30,7 @@ class EasternPalace extends Region 'KeyP1', 'Map', 'MapP1', + 'PendantOfWisdom' ]; /** @@ -54,7 +55,7 @@ public function __construct(World $world) new Location\Chest("Eastern Palace - Map Chest", [0xE9F5], null, $this), new Location\Drop("Eastern Palace - Boss", [0x180150], null, $this), - new Location\Prize\Pendant("Eastern Palace - Prize", [null, 0x1209D, 0x53EF8, 0x53EF9, 0x180052, 0x18007C, 0xC6FE], null, $this), + new Location\Prize\Pendant("Eastern Palace - Prize", [null, 0x1209D, 0x53E76, 0x53E77, 0x180052, 0x180070, 0xC6FE], null, $this), ]); $this->locations->setChecksForWorld($world->id); $this->prize_location = $this->locations["Eastern Palace - Prize"]; diff --git a/app/Region/Standard/GanonsTower.php b/app/Region/Standard/GanonsTower.php index baf367650..921eb489d 100644 --- a/app/Region/Standard/GanonsTower.php +++ b/app/Region/Standard/GanonsTower.php @@ -282,7 +282,8 @@ public function initalize() $this->locations["Ganon's Tower - Bob's Chest"]->setRequirements(function ($locations, $items) { return (($items->has('Hammer') && $items->has('Hookshot')) || ($items->has('FireRod') && $items->has('CaneOfSomaria'))) - && $items->has('KeyA2', 3); + && $items->has('KeyA2', 3) + && ($this->world->config('itemPlacement') != 'basic' || ($items->has('FireRod') || ($items->has('Ether') && $items->hasSword(1)))); }); $this->locations["Ganon's Tower - Tile Room"]->setRequirements(function ($locations, $items) { diff --git a/app/Region/Standard/IcePalace.php b/app/Region/Standard/IcePalace.php index ba1bab03d..cd5fb759e 100644 --- a/app/Region/Standard/IcePalace.php +++ b/app/Region/Standard/IcePalace.php @@ -30,6 +30,7 @@ class IcePalace extends Region 'KeyD5', 'Map', 'MapD5', + 'Crystal5', ]; /** @@ -55,7 +56,7 @@ public function __construct(World $world) new Location\BigChest("Ice Palace - Big Chest", [0xE9AA], null, $this), new Location\Drop("Ice Palace - Boss", [0x180157], null, $this), - new Location\Prize\Crystal("Ice Palace - Prize", [null, 0x120A4, 0x53F5A, 0x53F5B, 0x180059, 0x180073, 0xC705], null, $this), + new Location\Prize\Crystal("Ice Palace - Prize", [null, 0x120A4, 0x53E86, 0x53E87, 0x180059, 0x180078, 0xC705], null, $this), ]); $this->locations->setChecksForWorld($world->id); $this->prize_location = $this->locations["Ice Palace - Prize"]; @@ -73,26 +74,23 @@ public function initalize() return $items->has('Hammer') && $items->canLiftRocks() && (!$this->world->config('region.cantTakeDamage', false) || $items->has('CaneOfByrna') || $items->has('Cape') || $items->has('Hookshot')) - && ($items->has('Hookshot') || $items->has('ShopKey') - || ($items->has('KeyD5', 1) && (!$items->has('BigKeyD5') || $locations->itemInLocations(Item::get('BigKeyD5', $this->world), - ['Ice Palace - Map Chest','Ice Palace - Spike Room'])))); + && ($this->locations["Ice Palace - Spike Room"]->canAccess($items)); }); $this->locations["Ice Palace - Map Chest"]->setRequirements(function ($locations, $items) { return $items->has('Hammer') && $items->canLiftRocks() && (!$this->world->config('region.cantTakeDamage', false) || $items->has('CaneOfByrna') || $items->has('Cape') || $items->has('Hookshot')) - && ($items->has('Hookshot') || $items->has('ShopKey') - || ($items->has('KeyD5', 1) && (!$items->has('BigKeyD5') || $locations->itemInLocations(Item::get('BigKeyD5', $this->world), - ['Ice Palace - Big Key Chest','Ice Palace - Spike Room'])))); + && ($this->locations["Ice Palace - Spike Room"]->canAccess($items)); }); $this->locations["Ice Palace - Spike Room"]->setRequirements(function ($locations, $items) { return (!$this->world->config('region.cantTakeDamage', false) || $items->has('CaneOfByrna') || $items->has('Cape') || $items->has('Hookshot')) - && ($items->has('Hookshot') || $items->has('ShopKey') - || ($items->has('KeyD5', 1) && (!$items->has('BigKeyD5') || $locations->itemInLocations(Item::get('BigKeyD5', $this->world), - ['Ice Palace - Big Key Chest','Ice Palace - Map Chest'])))); + && (($items->has('Hookshot') || $items->has('ShopKey')) + || $items->has('KeyD5', 1) + && $locations->itemInLocations(Item::get('BigKeyD5', $this->world), + ['Ice Palace - Spike Room', 'Ice Palace - Big Key Chest','Ice Palace - Map Chest'])); }); $this->locations["Ice Palace - Freezor Chest"]->setRequirements(function ($locations, $items) { diff --git a/app/Region/Standard/MiseryMire.php b/app/Region/Standard/MiseryMire.php index 45619432a..859c64e1a 100644 --- a/app/Region/Standard/MiseryMire.php +++ b/app/Region/Standard/MiseryMire.php @@ -30,6 +30,7 @@ class MiseryMire extends Region 'KeyD6', 'Map', 'MapD6', + 'Crystal6', ]; /** @@ -55,7 +56,7 @@ public function __construct(World $world) new Location\Chest("Misery Mire - Spike Chest", [0xE9DA], null, $this), new Location\Drop("Misery Mire - Boss", [0x180158], null, $this), - new Location\Prize\Crystal("Misery Mire - Prize", [null, 0x120A2, 0x53F48, 0x53F49, 0x180057, 0x180075, 0xC703], null, $this), + new Location\Prize\Crystal("Misery Mire - Prize", [null, 0x120A2, 0x53E84, 0x53E85, 0x180057, 0x180077, 0xC703], null, $this), ]); $this->locations->setChecksForWorld($world->id); $this->prize_location = $this->locations["Misery Mire - Prize"]; diff --git a/app/Region/Standard/PalaceOfDarkness.php b/app/Region/Standard/PalaceOfDarkness.php index deb691891..4bfdf7c07 100644 --- a/app/Region/Standard/PalaceOfDarkness.php +++ b/app/Region/Standard/PalaceOfDarkness.php @@ -30,6 +30,7 @@ class PalaceOfDarkness extends Region 'KeyD1', 'Map', 'MapD1', + 'Crystal1' ]; /** @@ -61,7 +62,7 @@ public function __construct(World $world) new Location\Chest("Palace of Darkness - Dark Maze - Bottom", [0xEA58], null, $this), new Location\Drop("Palace of Darkness - Boss", [0x180153], null, $this), - new Location\Prize\Crystal("Palace of Darkness - Prize", [null, 0x120A1, 0x53F00, 0x53F01, 0x180056, 0x18007D, 0xC702], null, $this), + new Location\Prize\Crystal("Palace of Darkness - Prize", [null, 0x120A1, 0x53E7C, 0x53E7D, 0x180056, 0x180073, 0xC702], null, $this), ]); $this->locations->setChecksForWorld($world->id); $this->prize_location = $this->locations["Palace of Darkness - Prize"]; diff --git a/app/Region/Standard/SkullWoods.php b/app/Region/Standard/SkullWoods.php index 2814f3d9f..a681c7108 100644 --- a/app/Region/Standard/SkullWoods.php +++ b/app/Region/Standard/SkullWoods.php @@ -37,6 +37,7 @@ class SkullWoods extends Region 'KeyD3', 'Map', 'MapD3', + 'Crystal3', ]; /** @@ -62,7 +63,7 @@ public function __construct(World $world) new Location\Chest("Skull Woods - Pinball Room", [0xE9C8], null, $this), new Location\Drop("Skull Woods - Boss", [0x180155], null, $this), - new Location\Prize\Crystal("Skull Woods - Prize", [null, 0x120A3, 0x53F12, 0x53F13, 0x180058, 0x18007B, 0xC704], null, $this), + new Location\Prize\Crystal("Skull Woods - Prize", [null, 0x120A3, 0x53E7E, 0x53E7F, 0x180058, 0x180074, 0xC704], null, $this), ]); $this->locations->setChecksForWorld($world->id); @@ -110,11 +111,13 @@ public function initalize() return $items->has('BigKeyD3'); })->setAlwaysAllow(function ($item, $items) { return $this->world->config('accessibility') !== 'locations' && $item == Item::get('BigKeyD3', $this->world); + })->setFillRules(function ($item, $locations, $items) { + return $this->world->config('accessibility') !== 'locations' || $item != Item::get('BigKeyD3', $this->world); }); $this->locations["Skull Woods - Bridge Room"]->setRequirements(function ($locations, $items) { return $items->has('FireRod') && ($items->has('MoonPearl') - || ($this->world->config('canDungeonRevive') + || ($this->world->config('canDungeonRevive') && $items->has('PegasusBoots') && ($items->has('MagicMirror') || $items->hasABottle()))); }); @@ -124,9 +127,9 @@ public function initalize() $this->locations["Skull Woods - Boss"]->setRequirements(function ($locations, $items) { return $this->canEnter($locations, $items) - && ($items->has('MoonPearl') || ($this->world->config('canDungeonRevive') + && $items->has('FireRod') && ($items->has('MoonPearl') + || ($this->world->config('canDungeonRevive') && $items->has('PegasusBoots') && ($items->has('MagicMirror') || $items->hasABottle()))) - && $items->has('FireRod') && ($this->world->config('mode.weapons') == 'swordless' || $items->hasSword()) && $items->has('KeyD3', 3) && $this->boss->canBeat($items, $locations) diff --git a/app/Region/Standard/SwampPalace.php b/app/Region/Standard/SwampPalace.php index 3f768db55..0e2985004 100644 --- a/app/Region/Standard/SwampPalace.php +++ b/app/Region/Standard/SwampPalace.php @@ -30,6 +30,7 @@ class SwampPalace extends Region 'KeyD2', 'Map', 'MapD2', + 'Crystal2' ]; /** @@ -57,7 +58,7 @@ public function __construct(World $world) new Location\Chest("Swamp Palace - Waterfall Room", [0xEAAF], null, $this), new Location\Drop("Swamp Palace - Boss", [0x180154], null, $this), - new Location\Prize\Crystal("Swamp Palace - Prize", [null, 0x120A0, 0x53F6C, 0x53F6D, 0x180055, 0x180071, 0xC701], null, $this), + new Location\Prize\Crystal("Swamp Palace - Prize", [null, 0x120A0, 0x53E88, 0x53E89, 0x180055, 0x180079, 0xC701], null, $this), ]); $this->locations->setChecksForWorld($world->id); $this->prize_location = $this->locations["Swamp Palace - Prize"]; @@ -73,12 +74,7 @@ public function initalize() { $mire = function ($locations, $items) { return $this->world->config('canOneFrameClipUW', false) - && (($locations->itemInLocations(Item::get('BigKeyD6', $this->world), [ - "Misery Mire - Compass Chest", - "Misery Mire - Big Key Chest", - ]) - && $items->has('KeyD6', 2)) - || $items->has('KeyD6', 3)) + && $items->has('KeyD6', 3) && $this->world->getRegion('Misery Mire')->canEnter($locations, $items); }; @@ -89,8 +85,9 @@ public function initalize() }; $this->locations["Swamp Palace - Entrance"]->setFillRules(function ($item, $locations, $items) use ($mire) { - return $this->world->config('region.wildKeys', false) || $item == Item::get('KeyD2', $this->world) - || $mire($locations, $items); + return $this->world->config('canOneFrameClipUW', false) + || $this->world->config('region.wildKeys', false) + || $item == Item::get('KeyD2', $this->world); }); $this->locations["Swamp Palace - Big Chest"]->setRequirements(function ($locations, $items) use ($mire, $hera) { @@ -102,6 +99,8 @@ public function initalize() || ($hera($locations, $items) && $items->has('BigKeyP3'))); })->setAlwaysAllow(function ($item, $items) { return $this->world->config('accessibility') !== 'locations' && $item == Item::get('BigKeyD2', $this->world); + })->setFillRules(function ($item, $locations, $items) { + return $this->world->config('accessibility') !== 'locations' || $item != Item::get('BigKeyD2', $this->world); }); $this->locations["Swamp Palace - Big Key Chest"]->setRequirements(function ($locations, $items) use ($mire, $hera) { diff --git a/app/Region/Standard/ThievesTown.php b/app/Region/Standard/ThievesTown.php index 06ec37720..ca1541623 100644 --- a/app/Region/Standard/ThievesTown.php +++ b/app/Region/Standard/ThievesTown.php @@ -30,6 +30,7 @@ class ThievesTown extends Region 'KeyD4', 'Map', 'MapD4', + 'Crystal4' ]; /** @@ -55,7 +56,7 @@ public function __construct(World $world) new Location\Chest("Thieves' Town - Blind's Cell", [0xEA13], null, $this), new Location\Drop("Thieves' Town - Boss", [0x180156], null, $this), - new Location\Prize\Crystal("Thieves' Town - Prize", [null, 0x120A6, 0x53F36, 0x53F37, 0x18005B, 0x180077, 0xC707], null, $this), + new Location\Prize\Crystal("Thieves' Town - Prize", [null, 0x120A6, 0x53E82, 0x53E83, 0x18005B, 0x180076, 0xC707], null, $this), ]); $this->locations->setChecksForWorld($world->id); $this->prize_location = $this->locations["Thieves' Town - Prize"]; @@ -75,13 +76,14 @@ public function initalize() $this->locations["Thieves' Town - Big Chest"]->setRequirements(function ($locations, $items) { if ($locations["Thieves' Town - Big Chest"]->hasItem(Item::get('KeyD4', $this->world))) { - return $items->has('Hammer') && $items->has('BigKeyD4') - && $this->world->config('accessibility') !== 'locations'; + return $items->has('Hammer') && $items->has('BigKeyD4'); } return $items->has('Hammer') && $items->has('KeyD4') && $items->has('BigKeyD4'); })->setAlwaysAllow(function ($item, $items) { return $this->world->config('accessibility') !== 'locations' && $item == Item::get('KeyD4', $this->world) && $items->has('Hammer'); + })->setFillRules(function ($item, $locations, $items) { + return $this->world->config('accessibility') !== 'locations' || $item != Item::get('KeyD4', $this->world); }); $this->locations["Thieves' Town - Blind's Cell"]->setRequirements(function ($locations, $items) { diff --git a/app/Region/Standard/TowerOfHera.php b/app/Region/Standard/TowerOfHera.php index 85fa37144..3f865e9f2 100644 --- a/app/Region/Standard/TowerOfHera.php +++ b/app/Region/Standard/TowerOfHera.php @@ -32,6 +32,7 @@ class TowerOfHera extends Region 'KeyP3', 'Map', 'MapP3', + 'PendantOfWisdom' ]; /** @@ -56,7 +57,7 @@ public function __construct(World $world) new Location\BigChest("Tower of Hera - Big Chest", [0xE9F8], null, $this), new Location\Drop("Tower of Hera - Boss", [0x180152], null, $this), - new Location\Prize\Pendant("Tower of Hera - Prize", [null, 0x120A5, 0x53F0A, 0x53F0B, 0x18005A, 0x18007A, 0xC706], null, $this), + new Location\Prize\Pendant("Tower of Hera - Prize", [null, 0x120A5, 0x53E78, 0x53E79, 0x18005A, 0x180071, 0xC706], null, $this), ]); $this->locations->setChecksForWorld($world->id); $this->prize_location = $this->locations["Tower of Hera - Prize"]; @@ -121,6 +122,8 @@ public function initalize() return $items->canLightTorches() && $items->has('KeyP3'); })->setAlwaysAllow(function ($item, $items) { return $this->world->config('accessibility') !== 'locations' && $item == Item::get('KeyP3', $this->world); + })->setFillRules(function ($item, $locations, $items) { + return $this->world->config('accessibility') !== 'locations' || $item != Item::get('KeyP3', $this->world); }); $this->locations["Tower of Hera - Compass Chest"]->setRequirements(function ($locations, $items) use ($main, $mire) { diff --git a/app/Region/Standard/TurtleRock.php b/app/Region/Standard/TurtleRock.php index 4dbed73e2..bfd6ccdf1 100644 --- a/app/Region/Standard/TurtleRock.php +++ b/app/Region/Standard/TurtleRock.php @@ -33,6 +33,7 @@ class TurtleRock extends Region 'KeyD7', 'Map', 'MapD7', + 'Crystal7' ]; /** @@ -69,7 +70,7 @@ public function __construct(World $world) new Location\Chest("Turtle Rock - Eye Bridge - Top Right", [0xEA28], null, $this), new Location\Drop("Turtle Rock - Boss", [0x180159], null, $this), - new Location\Prize\Crystal("Turtle Rock - Prize", [null, 0x120A7, 0x53F24, 0x53F25, 0x18005C, 0x180079, 0xC708], null, $this), + new Location\Prize\Crystal("Turtle Rock - Prize", [null, 0x120A7, 0x53E80, 0x53E81, 0x18005C, 0x180075, 0xC708], null, $this), ]); $this->locations->setChecksForWorld($world->id); $this->prize_location = $this->locations["Turtle Rock - Prize"]; @@ -178,6 +179,8 @@ public function initalize() return $items->has('KeyD7', 2); })->setAlwaysAllow(function ($item, $items) { return $this->world->config('accessibility') !== 'locations' && $item == Item::get('KeyD7', $this->world) && $items->has('KeyD7', 3); + })->setFillRules(function ($item, $locations, $items) { + return $this->world->config('accessibility') !== 'locations' || $item != Item::get('KeyD7', $this->world); }); $this->locations["Turtle Rock - Crystaroller Room"]->setRequirements(function ($locations, $items) use ($upper, $middle, $lower) { diff --git a/app/Rom.php b/app/Rom.php index 3976a1c97..a7befd9d1 100644 --- a/app/Rom.php +++ b/app/Rom.php @@ -13,8 +13,8 @@ */ class Rom { - const BUILD = '2023-03-15'; - const HASH = '29b5b39ee65ddfa94638ba2e020a66cd'; + const BUILD = '2023-08-31'; + const HASH = '6d93fa2aad627fe66fe7b287d732bfcc'; const SIZE = 2097152; private $tmp_file; @@ -349,6 +349,18 @@ public function enableTriforceTurnIn(bool $enable = true): void $this->write(0x180194, pack('C', $enable ? 0x01 : 0x00)); } + /** + * Enable HUD item counter + * + * @param bool $enable enable or disable collection count / total item count on HUD + * + * @return void + */ + public function enableHudItemCounter(bool $enable = false): void + { + $this->write(0x180039, pack('C', $enable ? 0x01 : 0x00)); + } + /** * Set starting time for HUD clock. * @@ -601,12 +613,16 @@ public function setGanonInvincible(string $setting = 'no'): self // all dungeons, aga 1 not required $byte = pack('C', 0x09); break; + case 'completionist': + // 100% collection rate, all dungeons + $byte = pack('C', 0x0B); + break; case 'no': default: $byte = pack('C*', 0x00); break; } - $this->write(0x18003E, $byte); + $this->write(0x1801A8, $byte); return $this; } @@ -622,34 +638,19 @@ public function setHeartColors(string $color): self { switch ($color) { case 'blue': - $byte = 0x2C; - $file_byte = 0x0D; + $byte = 0x01; break; case 'green': - $byte = 0x3C; - $file_byte = 0x19; + $byte = 0x02; break; case 'yellow': - $byte = 0x28; - $file_byte = 0x09; + $byte = 0x03; break; case 'red': default: - $byte = 0x24; - $file_byte = 0x05; + $byte = 0x00; } - $this->write(0x6FA1E, pack('C*', $byte)); - $this->write(0x6FA20, pack('C*', $byte)); - $this->write(0x6FA22, pack('C*', $byte)); - $this->write(0x6FA24, pack('C*', $byte)); - $this->write(0x6FA26, pack('C*', $byte)); - $this->write(0x6FA28, pack('C*', $byte)); - $this->write(0x6FA2A, pack('C*', $byte)); - $this->write(0x6FA2C, pack('C*', $byte)); - $this->write(0x6FA2E, pack('C*', $byte)); - $this->write(0x6FA30, pack('C*', $byte)); - - $this->write(0x65561, pack('C*', $file_byte)); + $this->write(0x187020, pack('C*', $byte)); return $this; } @@ -2021,7 +2022,8 @@ public function setCompassCountTotals(array $totals = []): self /** * Enable text box to show with free roaming items * - * ---o bmcs + * --po bmcs + * p - enabled for free crystals * o - enabled for outside dungeon items * b - enabled for inside big key items * m - enabled for inside map items @@ -2273,7 +2275,7 @@ public function setGanonAgahnimRng(string $setting = 'table'): self */ public function setTowerCrystalRequirement(int $crystals = 7): self { - $this->write(0x18005E, pack('C', max(min($crystals, 7), 0))); + $this->write(0x18019A, pack('C', max(min($crystals, 7), 0))); return $this; } @@ -2287,7 +2289,7 @@ public function setTowerCrystalRequirement(int $crystals = 7): self */ public function setGanonCrystalRequirement(int $crystals = 7): self { - $this->write(0x18005F, pack('C', max(min($crystals, 7), 0))); + $this->write(0x1801A6, pack('C', max(min($crystals, 7), 0))); return $this; } @@ -2377,6 +2379,11 @@ public function muteMusic(bool $enable = true): self return $this; } + /** + * Write the initial save data table. + * + * @return $this + */ public function writeInitialSram(): self { $this->write(0x183000, pack('C*', ...$this->initial_sram->getInitialSram())); @@ -2384,6 +2391,50 @@ public function writeInitialSram(): self return $this; } + /** + * Write the total number of collectable items in the game. This applies to + * items with the "item get" animation but not dungeon prizes, absorbable keys, + * or shop items. + * + * @param int $count total number of items + * + * @return $this + */ + public function setTotalItemCount(int $count): self + { + $this->write(0x180196, pack('v', $count)); + + return $this; + } + + /** + * Set Zelda Save and Quit Mirror Fix + * + * @param bool $enable + * + * @return $this + */ + public function setZeldaMirrorFix(bool $enable = true): self + { + $this->write(0x159A8, pack('C*', $enable ? 0x04 : 0x02)); + + return $this; + } + + /** + * Set CPU speed written to MEMSEL on boot. + * + * @param bool $enable + * + * @return $this + */ + public function enableFastRom(bool $enable = true): self + { + $this->write(0x187032, pack('C*', $enable ? 0x01 : 0x00)); + + return $this; + } + /** * Apply a patch to the ROM * diff --git a/app/Support/Credits.php b/app/Support/Credits.php index 026f65254..5fa70aded 100644 --- a/app/Support/Credits.php +++ b/app/Support/Credits.php @@ -199,10 +199,13 @@ public function convertLargeCreditsTop(string $string): array if (!preg_match('/[a-z]/', $char)) { switch ($char) { case "'": - $byte_array[] = 0x77; + $byte_array[] = 0xD9; break; case '!': - $byte_array[] = 0x78; + $byte_array[] = 0xE5; + break; + case '_': + $byte_array[] = 0xDE; break; default: $byte_array[] = 0x9F; @@ -231,10 +234,13 @@ public function convertLargeCreditsBottom(string $string): array if (!preg_match('/[a-z]/', $char)) { switch ($char) { case "'": - $byte_array[] = 0x9D; + $byte_array[] = 0xEC; break; case '!': - $byte_array[] = 0x9E; + $byte_array[] = 0xF8; + break; + case '_': + $byte_array[] = 0xF1; break; default: $byte_array[] = 0x9F; diff --git a/app/Support/Dialog.php b/app/Support/Dialog.php index 338abcb1b..8cf5ae8fa 100644 --- a/app/Support/Dialog.php +++ b/app/Support/Dialog.php @@ -218,26 +218,27 @@ public function convertDialogCompressed(string $string, $pause = true, $max_byte private static $characters = [ ' ' => [0xFF], + "≥" => [0x99], // cursor + "…" => [0x9F], '?' => [0xC6], '!' => [0xC7], ',' => [0xC8], '-' => [0xC9], - "…" => [0xCC], '.' => [0xCD], '~' => [0xCE], '~' => [0xCE], - "'" => [0xD8], - "’" => [0xD8], + ':' => [0xEA], + "'" => [0x9D], + "’" => [0x9D], "@" => [0xFE, 0x6A], // link's name compressed - ">" => [0xD2, 0xD3], // link face - "%" => [0xDD], // Hylian Bird - "^" => [0xDE], // Hylian Ankh - "=" => [0xDF], // Hylian Wavy lines - "↑" => [0xE0], - "↓" => [0xE1], - "→" => [0xE2], - "←" => [0xE3], - "≥" => [0xE4], // cursor + ">" => [0x9B, 0x9C], // link face + "%" => [0xFD, 0x10], // Hylian Bird + "^" => [0xFD, 0x11], // Hylian Ankh + "=" => [0xFD, 0x12], // Hylian Wavy lines + "↑" => [0xFD, 0x13], + "↓" => [0xFD, 0x14], + "→" => [0xFD, 0x15], + "←" => [0xFD, 0x16], "¼" => [0xE5, 0xE7], // ¼ heart "½" => [0xE6, 0xE7], // ½ heart "¾" => [0xE8, 0xE9], // ¾ heart @@ -425,7 +426,7 @@ private function charToHex(string $char): array } if (preg_match('/[a-z]/', $char)) { - return [ord($char) - 49]; + return [ord($char) + 0x6F]; } return self::$characters[$char] ?? [0xFF]; diff --git a/app/Support/InitialSram.php b/app/Support/InitialSram.php index 740e946fe..231705e40 100644 --- a/app/Support/InitialSram.php +++ b/app/Support/InitialSram.php @@ -614,7 +614,7 @@ public function setStartingEquipment(ItemCollection $items, $config) $this->initial_sram_bytes[0x363] = $this->initial_sram_bytes[0x361] = $starting_rupees >> 8; // Set counters and highest equipment values - $this->initial_sram_bytes[0x471] = count_set_bits($this->initial_sram_bytes[0x37A]); + $this->initial_sram_bytes[0x476] = count_set_bits($this->initial_sram_bytes[0x37A]); $this->initial_sram_bytes[0x429] = count_set_bits($this->initial_sram_bytes[0x374]); $this->initial_sram_bytes[0x417] = $this->initial_sram_bytes[0x359]; $this->initial_sram_bytes[0x422] = $this->initial_sram_bytes[0x35A]; diff --git a/app/Text.php b/app/Text.php index ccaf5c1c8..fa40dc8cc 100644 --- a/app/Text.php +++ b/app/Text.php @@ -81,8 +81,8 @@ public function en() // Numbers in comments refer to US text numbers. Except for // the first few entries, JP1.0 text numbers are smaller by 2 return [ - 'set_cursor' => [0xFB, 0xFC, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xE4, 0xFE, 0x68], - 'set_cursor2' => [0xFB, 0xFC, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xE4, 0xFE, 0x68], + 'set_cursor' => [0xFB, 0xFC, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0x99, 0xFE, 0x68], + 'set_cursor2' => [0xFB, 0xFC, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0x99, 0xFE, 0x68], 'game_over_menu' => $converter->convertDialogCompressed("{SPEED0}\nSave-Continue\nSave-Quit\nContinue", false), @@ -90,11 +90,11 @@ public function en() 'follower_no_enter' => $converter->convertDialogCompressed("Can't you take me some place nice."), - 'choice_1_3' => [0xFB, 0xFC, 0x00, 0xF7, 0xE4, 0xF8, 0xFF, 0xF9, 0xFF, 0xFE, 0x71], - 'choice_2_3' => [0xFB, 0xFC, 0x00, 0xF7, 0xFF, 0xF8, 0xE4, 0xF9, 0xFF, 0xFE, 0x71], - 'choice_3_3' => [0xFB, 0xFC, 0x00, 0xF7, 0xFF, 0xF8, 0xFF, 0xF9, 0xE4, 0xFE, 0x71], - 'choice_1_2' => [0xFB, 0xFC, 0x00, 0xF7, 0xE4, 0xF8, 0xFF, 0xFE, 0x72], - 'choice_2_2' => [0xFB, 0xFC, 0x00, 0xF7, 0xFF, 0xF8, 0xE4, 0xFE, 0x72], + 'choice_1_3' => [0xFB, 0xFC, 0x00, 0xF7, 0x99, 0xF8, 0xFF, 0xF9, 0xFF, 0xFE, 0x71], + 'choice_2_3' => [0xFB, 0xFC, 0x00, 0xF7, 0xFF, 0xF8, 0x99, 0xF9, 0xFF, 0xFE, 0x71], + 'choice_3_3' => [0xFB, 0xFC, 0x00, 0xF7, 0xFF, 0xF8, 0xFF, 0xF9, 0x99, 0xFE, 0x71], + 'choice_1_2' => [0xFB, 0xFC, 0x00, 0xF7, 0x99, 0xF8, 0xFF, 0xFE, 0x72], + 'choice_2_2' => [0xFB, 0xFC, 0x00, 0xF7, 0xFF, 0xF8, 0x99, 0xFE, 0x72], 'uncle_leaving_text' => $converter->convertDialogCompressed("I'm just going out for a pack of smokes."), @@ -454,7 +454,15 @@ public function en() 'desert_entry_translated' => $converter->convertDialogCompressed("Kneel before this stone, and magic will move around you."), - 'telepathic_tile_under_ganon' => $converter->convertDialogCompressed("Secondary tournament winners\n{HARP}\n ~~~2019~~~\ndragonstrike\n\n ~~~2018~~~\nChisame\n\n ~~~2017~~~\nA: Zaen"), + 'telepathic_tile_under_ganon' => $converter->convertDialogCompressed( + " ALTTPR League" + ." Winners\n{HARP}\n\n" + ." ~~~Season 5~~~\n OKDUDES: \n GanonsGoneWild\n Telethar\n Hitsuyan1337\n\n" + ." ~~~Season 4~~~\nThe Titan's Mitts:\n SailorNep\n Relkin\n Daaanty\n\n" + ." ~~~Season 3~~~\nPhendrana Drifters:\n Megawott\n Frostbite3030\n Jet082\n\n" + ." ~~~Season 2~~~\n Team すごい:\n IIYoshiII\n Hitsuyan1337\n Ramond\n\n" + ." ~~~Season 1~~~\n Team すごい:\n IIYoshiII\n Thalane\n Hitsuyan1337\n\n" + ), 'telepathic_tile_palace_of_darkness' => $converter->convertDialogCompressed("{NOBORDER}\nThis is a funny looking Enemizer."), // 0xC0 @@ -472,7 +480,16 @@ public function en() 'telepathic_tile_tower_of_hera_entrance' => $converter->convertDialogCompressed("{NOBORDER}\nThis is a bad place, with a guy who will make you fall…\n\n\na lot."), - 'houlihan_room' => $converter->convertDialogCompressed("Randomizer\ntournament winners\n\n{HARP}\n ~~~2022~~~\nObscure\n\n ~~~2021~~~\nDaaanty\n\n ~~~2019~~~\nJet082\n\n ~~~2018~~~\nAndy\n\n ~~~2017~~~\nA: ajneb174\nS: ajneb174"), + 'houlihan_room' => $converter->convertDialogCompressed( + " Randomizer\n" + ."Tournament Winners\n\n{HARP}\n" + ." ~~~2023~~~\n GanonsGoneWild\n\n" + ." ~~~2022~~~\n Obscure\n\n" + ." ~~~2021~~~\n Daaanty\n\n" + ." ~~~2019~~~\n Jet082\n\n" + ." ~~~2018~~~\n S: Andy\n A: Andy\n" + ." ~~~2017~~~\n S: ajneb174\n A: ajneb174" + ), 'caught_a_bee' => $converter->convertDialogCompressed("Caught a Bee\n ≥ keep\n release\n{CHOICE}"), @@ -860,9 +877,9 @@ public function en() 'kakariko_flophouse_man' => $converter->convertDialogCompressed("I sure do have a lot of beds.\n\nDid you know if you played the flute in the center of town things could happen?"), - 'menu_start_2' => $converter->convertDialogCompressed("{MENU}\n{SPEED0}\n≥@'s house\n Sanctuary\n{CHOICE3}", false), + 'menu_start_2' => $converter->convertDialogCompressed("{MENU}\n{SPEED0}\n≥@'s House\n Sanctuary\n{CHOICE3}", false), - 'menu_start_3' => $converter->convertDialogCompressed("{MENU}\n{SPEED0}\n≥@'s house\n Sanctuary\n Mountain Cave\n{CHOICE2}", false), + 'menu_start_3' => $converter->convertDialogCompressed("{MENU}\n{SPEED0}\n≥@'s House\n Sanctuary\n Mountain Cave\n{CHOICE2}", false), 'menu_pause' => $converter->convertDialogCompressed("{SPEED0}\n≥Continue\n Save and Quit\n{CHOICE3}", false), @@ -878,7 +895,7 @@ public function en() 'game_digging_no_follower' => $converter->convertDialogCompressed("Something is following you. I don't like."), - 'menu_start_4' => $converter->convertDialogCompressed("{MENU}\n{SPEED0}\n≥@'s house\n Mountain Cave\n{CHOICE3}", false), + 'menu_start_4' => $converter->convertDialogCompressed("{MENU}\n{SPEED0}\n≥@'s House\n Mountain Cave\n{CHOICE3}", false), 'ganon_fall_in_alt' => $converter->convertDialogCompressed("You think you\nare ready to\nface me?\n\nI will not die\n\nunless you\ncomplete your\ngoals. Dingus!"), diff --git a/app/World.php b/app/World.php index eed335602..03684fce1 100644 --- a/app/World.php +++ b/app/World.php @@ -128,13 +128,26 @@ public function __construct(int $id = 0, array $config = []) $free_item_menu |= 0x0C; } - if (in_array($this->config('logic'), ['HybridMajorGlitches', 'MajorGlitches', 'NoLogic']) || $this->config('canOneFrameClipUW', false)) { + $glitched_logic = (in_array($this->config('logic', 'NoGlitches'), ['HybridMajorGlitches', 'MajorGlitches', 'NoLogic']) + || $this->config('canOneFrameClipUW', false)); + + if ($glitched_logic) { $free_item_menu |= 0x10; } $this->config['rom.freeItemText'] = $free_item_text; $this->config['rom.freeItemMenu'] = $free_item_menu; + $wild_keys = $this->config('region.wildKeys', false); + $wild_big_keys = $this->config('region.wildBigKeys', false); + $wild_compasses = $this->config('region.wildCompasses', false); + $wild_maps = $this->config('region.wildMaps', false); + + $this->config['rom.vanillaKeys'] = $this->config('rom.vanillaKeys', (!$wild_keys && $glitched_logic)); + $this->config['rom.vanillaBigKeys'] = $this->config('rom.vanillaBigKeys', (!$wild_big_keys && $glitched_logic)); + $this->config['rom.vanillaCompasses'] = $this->config('rom.vanillaCompasses', (!$wild_compasses && $glitched_logic)); + $this->config['rom.vanillaMaps'] = $this->config('rom.vanillaMaps', (!$wild_maps && $glitched_logic)); + # handle empty config values that might be sent from customizer if ($this->config('item.overflow.count.Sword', null) === '') { unset($this->config['item.overflow.count.Sword']); @@ -370,16 +383,6 @@ public function copy() return $copy; } - /** - * Get a copy of config array for this world (for testing.) - * - * @return array - */ - public function getConfig(): array - { - $config_copy = $this->config; - return $config_copy; - } /** * Determine the junk fill range of Ganon's Tower for this world. This @@ -505,7 +508,7 @@ public function getPrizePacks(): array * Get Locations considered collectable. I.E. can contain items that Link can have. * This is cached for faster retrevial * - * @return \ALttP\Support\LocationCollection + * @return ALttP\Support\LocationCollection */ public function getCollectableLocations(): LocationCollection { @@ -520,6 +523,17 @@ public function getCollectableLocations(): LocationCollection return $this->collectable_locations; } + /** + * Get total item locations. This includes everything with the "item get" animmation + * except for dungeon prizes and shop items. + * + * @return int + */ + public function getTotalItemCount(): int + { + return count($this->getCollectableLocations()) - 45; + } + /** * Collect the items in the world, you may pass in a set of pre-collected items. * This also checks for shop items. @@ -1187,8 +1201,12 @@ public function writeToRom(Rom $rom, bool $save = false): Rom break; case 'fast_ganon': $rom->initial_sram->preOpenPyramid(); + $rom->setGanonInvincible('crystals_only'); + break; + case 'completionist': + $rom->setGanonInvincible('completionist'); + break; - // no break default: $rom->setGanonInvincible('crystals_only'); } @@ -1276,6 +1294,7 @@ public function writeToRom(Rom $rom, bool $save = false): Rom $rom->setWarningFlags(bindec('01100000')); $rom->setAllowAccidentalMajorGlitch(true); $rom->setSQEGFix(false); + $rom->setZeldaMirrorFix(false); break; case 'OverworldGlitches': $rom->setPreAgahnimDarkWorldDeathInDungeon(false); @@ -1285,6 +1304,7 @@ public function writeToRom(Rom $rom, bool $save = false): Rom $rom->setWarningFlags(bindec('01000000')); $rom->setAllowAccidentalMajorGlitch(true); $rom->setSQEGFix(false); + $rom->setZeldaMirrorFix(false); break; case 'NoGlitches': default: @@ -1292,9 +1312,13 @@ public function writeToRom(Rom $rom, bool $save = false): Rom $rom->setWorldOnAgahnimDeath(true); $rom->setAllowAccidentalMajorGlitch(false); $rom->setSQEGFix(true); + $rom->setZeldaMirrorFix(true); break; } + $triforce_hud = in_array($this->config['goal'], ['triforce-hunt', 'ganonhunt']); + $rom->enableHudItemCounter($triforce_hud ? false : $this->config('rom.hudItemCounter', $this->config('goal', 'ganon') == 'completionist')); + if ($this->config('crystals.tower') === 0) { $rom->initial_sram->preOpenGanonsTower(); } @@ -1305,9 +1329,12 @@ public function writeToRom(Rom $rom, bool $save = false): Rom $rom->setPseudoBoots($this->config('pseudoboots', false)); + $rom->enableFastRom($this->config('fastrom', true)); + $rom->writeCredits(); $rom->writeText(); $rom->writeInitialSram(); + $rom->setTotalItemCount($this->getTotalItemCount()); if ($save) { $hash = $this->saveSeedRecord(); @@ -1556,4 +1583,35 @@ public function isEnemized(): bool || $this->config('enemizer.enemyHealth') != 'default' || $this->config('enemizer.potShuffle') != 'off'; } + + /** + * Get a World config value for testing. + * + * @return string|int|bool + */ + public function testGetConfig(string $config): string|int|bool + { + return $this->config[$config]; + } + + /** + * Get a World config clone for testing. + * + * @return array + */ + public function testGetConfigClone(): array + { + $config_clone = $this->config; + return $config_clone; + } + + /** + * Set a World config value for testing. + * + * @return void + */ + public function testSetConfig(string $config, string|int|bool $value): void + { + $this->config[$config] = $value; + } } diff --git a/composer.json b/composer.json index 0407cc2e0..a725f50b2 100644 --- a/composer.json +++ b/composer.json @@ -45,11 +45,11 @@ "type": "package", "package": { "name": "z3/randomizer", - "version": "31.1", + "version": "31.2", "source": { "url": "https://github.com/KatDevsGames/z3randomizer", "type": "git", - "reference": "23ecf41b3365e818385ed819254ecdce5326aaa1" + "reference": "3a5974b456d75331797f3487366f7d8c37574069" } } }, @@ -59,7 +59,7 @@ "name": "z3/enemizer_linux", "version": "6.1.0.180", "dist": { - "url": "https://github.com/tcprescott/Enimizer/releases/download/2mb-rom/ubuntu.16.04-x64.tar.gz", + "url": "https://github.com/cassidoxa/Enimizer/releases/download/linux-build-0.1.0/linux-x64.tar.gz", "type": "tar" } } @@ -79,11 +79,11 @@ "type": "package", "package": { "name": "z3/entrancerandomizer", - "version": "31.1", + "version": "31.2", "source": { "url": "https://github.com/cassidoxa/ALttPEntranceRandomizer", "type": "git", - "reference": "edd251bcad2b03626fd38f0f8b58a36bdcb77530" + "reference": "409bab1f209d135d6646822d586b749a3e9cf98f" } } } @@ -132,6 +132,9 @@ }, "optimize-autoloader": true, "preferred-install": "dist", - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "php-http/discovery": true + } } -} \ No newline at end of file +} diff --git a/composer.lock b/composer.lock index 694164790..ec9ef0532 100644 --- a/composer.lock +++ b/composer.lock @@ -4,27 +4,31 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "192cb24d6116d6d76b83b7fb2dc4027d", + "content-hash": "7f9a8939fe33976e8c555e64e8786272", "packages": [ { "name": "aws/aws-crt-php", - "version": "v1.0.2", + "version": "v1.2.2", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "3942776a8c99209908ee0b287746263725685732" + "reference": "2f1dc7b7eda080498be96a4a6d683a41583030e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/3942776a8c99209908ee0b287746263725685732", - "reference": "3942776a8c99209908ee0b287746263725685732", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/2f1dc7b7eda080498be96a4a6d683a41583030e9", + "reference": "2f1dc7b7eda080498be96a4a6d683a41583030e9", "shasum": "" }, "require": { "php": ">=5.5" }, "require-dev": { - "phpunit/phpunit": "^4.8.35|^5.4.3" + "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5", + "yoast/phpunit-polyfills": "^1.0" + }, + "suggest": { + "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality." }, "type": "library", "autoload": { @@ -43,7 +47,7 @@ } ], "description": "AWS Common Runtime for PHP", - "homepage": "http://aws.amazon.com/sdkforphp", + "homepage": "https://github.com/awslabs/aws-crt-php", "keywords": [ "amazon", "aws", @@ -52,40 +56,42 @@ ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.0.2" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.2" }, - "time": "2021-09-03T22:57:30+00:00" + "time": "2023-07-20T16:49:55+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.231.17", + "version": "3.280.1", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "d377e1b62b40a4d9e5d9c9387db7c539f28cb6df" + "reference": "2b2bb8cc5be21e252fb5803d229f1d7fbbec0222" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d377e1b62b40a4d9e5d9c9387db7c539f28cb6df", - "reference": "d377e1b62b40a4d9e5d9c9387db7c539f28cb6df", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2b2bb8cc5be21e252fb5803d229f1d7fbbec0222", + "reference": "2b2bb8cc5be21e252fb5803d229f1d7fbbec0222", "shasum": "" }, "require": { - "aws/aws-crt-php": "^1.0.2", + "aws/aws-crt-php": "^1.0.4", "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0", - "guzzlehttp/psr7": "^1.8.5 || ^2.3", + "guzzlehttp/promises": "^1.4.0 || ^2.0", + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", "mtdowling/jmespath.php": "^2.6", - "php": ">=5.5" + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", "composer/composer": "^1.10.22", + "dms/phpunit-arraysubset-asserts": "^0.4.0", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", @@ -93,10 +99,11 @@ "ext-sockets": "*", "nette/neon": "^2.3", "paragonie/random_compat": ">= 2", - "phpunit/phpunit": "^4.8.35 || ^5.6.3", + "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", "psr/cache": "^1.0", "psr/simple-cache": "^1.0", - "sebastian/comparator": "^1.2.3" + "sebastian/comparator": "^1.2.3 || ^4.0", + "yoast/phpunit-polyfills": "^1.0" }, "suggest": { "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", @@ -144,32 +151,31 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.231.17" + "source": "https://github.com/aws/aws-sdk-php/tree/3.280.1" }, - "time": "2022-07-29T18:17:57+00:00" + "time": "2023-08-31T18:56:31+00:00" }, { "name": "brick/math", - "version": "0.9.3", + "version": "0.11.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" + "php": "^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" }, "type": "library", "autoload": { @@ -194,19 +200,15 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" + "source": "https://github.com/brick/math/tree/0.11.0" }, "funding": [ { "url": "https://github.com/BenMorel", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" } ], - "time": "2021-08-15T20:50:18+00:00" + "time": "2023-01-15T23:15:59+00:00" }, { "name": "clue/stream-filter", @@ -276,16 +278,16 @@ }, { "name": "defuse/php-encryption", - "version": "v2.3.1", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/defuse/php-encryption.git", - "reference": "77880488b9954b7884c25555c2a0ea9e7053f9d2" + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/defuse/php-encryption/zipball/77880488b9954b7884c25555c2a0ea9e7053f9d2", - "reference": "77880488b9954b7884c25555c2a0ea9e7053f9d2", + "url": "https://api.github.com/repos/defuse/php-encryption/zipball/f53396c2d34225064647a05ca76c1da9d99e5828", + "reference": "f53396c2d34225064647a05ca76c1da9d99e5828", "shasum": "" }, "require": { @@ -294,7 +296,8 @@ "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "^4|^5|^6|^7|^8|^9" + "phpunit/phpunit": "^5|^6|^7|^8|^9|^10", + "yoast/phpunit-polyfills": "^2.0.0" }, "bin": [ "bin/generate-defuse-key" @@ -336,22 +339,22 @@ ], "support": { "issues": "https://github.com/defuse/php-encryption/issues", - "source": "https://github.com/defuse/php-encryption/tree/v2.3.1" + "source": "https://github.com/defuse/php-encryption/tree/v2.4.0" }, - "time": "2021-04-09T23:57:26+00:00" + "time": "2023-06-19T06:10:36+00:00" }, { "name": "dflydev/dot-access-data", - "version": "v3.0.1", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c" + "reference": "f41715465d65213d644d3141a6a93081be5d3549" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", - "reference": "0992cc19268b259a39e86f296da5f0677841f42c", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", + "reference": "f41715465d65213d644d3141a6a93081be5d3549", "shasum": "" }, "require": { @@ -362,7 +365,7 @@ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", "scrutinizer/ocular": "1.6.0", "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^3.14" + "vimeo/psalm": "^4.0.0" }, "type": "library", "extra": { @@ -411,34 +414,34 @@ ], "support": { "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1" + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" }, - "time": "2021-08-13T13:06:58+00:00" + "time": "2022-10-27T11:44:00+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.4", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { @@ -488,7 +491,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.4" + "source": "https://github.com/doctrine/inflector/tree/2.0.8" }, "funding": [ { @@ -504,35 +507,36 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:16:43+00:00" + "time": "2023-06-16T13:40:37+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + "reference": "84a527db05647743d50373e0ec53a152f2cde568" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", + "reference": "84a527db05647743d50373e0ec53a152f2cde568", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -564,7 +568,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" + "source": "https://github.com/doctrine/lexer/tree/3.0.0" }, "funding": [ { @@ -580,20 +584,20 @@ "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2022-12-15T16:57:16+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.1", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "shasum": "" }, "require": { @@ -633,7 +637,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" }, "funding": [ { @@ -641,31 +645,30 @@ "type": "github" } ], - "time": "2022-01-18T15:43:28+00:00" + "time": "2023-08-10T19:36:49+00:00" }, { "name": "egulias/email-validator", - "version": "3.2.1", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" + "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^4.30" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -673,7 +676,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -701,7 +704,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" }, "funding": [ { @@ -709,24 +712,34 @@ "type": "github" } ], - "time": "2022-06-18T20:57:19+00:00" + "time": "2023-01-14T14:17:03+00:00" }, { "name": "ezyang/htmlpurifier", - "version": "v4.14.0", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", - "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", "shasum": "" }, "require": { - "php": ">=5.2" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + }, + "require-dev": { + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-tidy": "Used for pretty-printing HTML" }, "type": "library", "autoload": { @@ -758,36 +771,37 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" }, - "time": "2021-12-25T01:21:49+00:00" + "time": "2022-09-18T07:06:19+00:00" }, { "name": "firebase/php-jwt", - "version": "v6.3.0", + "version": "v6.8.1", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8" + "reference": "5dbc8959427416b8ee09a100d7a8588c00fb2e26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/018dfc4e1da92ad8a1b90adc4893f476a3b41cb8", - "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/5dbc8959427416b8ee09a100d7a8588c00fb2e26", + "reference": "5dbc8959427416b8ee09a100d7a8588c00fb2e26", "shasum": "" }, "require": { - "php": "^7.1||^8.0" + "php": "^7.4||^8.0" }, "require-dev": { "guzzlehttp/guzzle": "^6.5||^7.4", - "phpspec/prophecy-phpunit": "^1.1", - "phpunit/phpunit": "^7.5||^9.5", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", "psr/cache": "^1.0||^2.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0" }, "suggest": { + "ext-sodium": "Support EdDSA (Ed25519) signatures", "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" }, "type": "library", @@ -820,9 +834,9 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.3.0" + "source": "https://github.com/firebase/php-jwt/tree/v6.8.1" }, - "time": "2022-07-15T16:48:45+00:00" + "time": "2023-07-14T18:33:00+00:00" }, { "name": "fruitcake/php-cors", @@ -977,24 +991,24 @@ }, { "name": "graham-campbell/result-type", - "version": "v1.0.4", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.1" }, "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" }, "type": "library", "autoload": { @@ -1023,7 +1037,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" }, "funding": [ { @@ -1035,26 +1049,26 @@ "type": "tidelift" } ], - "time": "2021-11-21T21:41:47+00:00" + "time": "2023-02-25T20:23:15+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.4.5", + "version": "7.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1063,10 +1077,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1076,8 +1091,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "7.4-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -1143,7 +1159,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.5" + "source": "https://github.com/guzzle/guzzle/tree/7.8.0" }, "funding": [ { @@ -1159,38 +1175,37 @@ "type": "tidelift" } ], - "time": "2022-06-20T22:16:13+00:00" + "time": "2023-08-27T10:20:53+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -1227,7 +1242,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" + "source": "https://github.com/guzzle/promises/tree/2.0.1" }, "funding": [ { @@ -1243,26 +1258,26 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2023-08-03T15:11:55+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.4.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "13388f00956b1503577598873fffb5ae994b5737" + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737", - "reference": "13388f00956b1503577598873fffb5ae994b5737", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0" }, "provide": { @@ -1270,17 +1285,18 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.1", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.4-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -1342,7 +1358,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.1" }, "funding": [ { @@ -1358,7 +1374,87 @@ "type": "tidelift" } ], - "time": "2022-06-20T21:43:11+00:00" + "time": "2023-08-27T10:13:57+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/61bf437fc2197f587f6857d3ff903a24f1731b5d", + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.17" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.19 || ^9.5.8", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2023-08-27T10:19:19+00:00" }, { "name": "hashids/hashids", @@ -1607,37 +1703,44 @@ }, { "name": "laravel/framework", - "version": "v9.22.1", + "version": "v9.52.15", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "b3b3dd43b9899f23df6d1d3e5390bd4662947a46" + "reference": "e3350e87a52346af9cc655a3012d2175d2d05ad7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b3b3dd43b9899f23df6d1d3e5390bd4662947a46", - "reference": "b3b3dd43b9899f23df6d1d3e5390bd4662947a46", + "url": "https://api.github.com/repos/laravel/framework/zipball/e3350e87a52346af9cc655a3012d2175d2d05ad7", + "reference": "e3350e87a52346af9cc655a3012d2175d2d05ad7", "shasum": "" }, "require": { - "doctrine/inflector": "^2.0", - "dragonmantank/cron-expression": "^3.1", - "egulias/email-validator": "^3.1", + "brick/math": "^0.9.3|^0.10.2|^0.11", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", "ext-mbstring": "*", "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", "fruitcake/php-cors": "^1.2", - "laravel/serializable-closure": "^1.0", - "league/commonmark": "^2.2", - "league/flysystem": "^3.0.16", + "guzzlehttp/uri-template": "^1.0", + "laravel/serializable-closure": "^1.2.2", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.53.1", + "nesbot/carbon": "^2.62.1", "nunomaduro/termwind": "^1.13", "php": "^8.0.2", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^6.0.9", "symfony/error-handler": "^6.0", "symfony/finder": "^6.0", "symfony/http-foundation": "^6.0", @@ -1646,8 +1749,9 @@ "symfony/mime": "^6.0", "symfony/process": "^6.0", "symfony/routing": "^6.0", + "symfony/uid": "^6.0", "symfony/var-dumper": "^6.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", "vlucas/phpdotenv": "^5.4.1", "voku/portable-ascii": "^2.0" }, @@ -1693,45 +1797,55 @@ "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "^3.198.1", + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", "doctrine/dbal": "^2.13.3|^3.1.4", - "fakerphp/faker": "^1.9.2", - "guzzlehttp/guzzle": "^7.2", + "ext-gmp": "*", + "fakerphp/faker": "^1.21", + "guzzlehttp/guzzle": "^7.5", "league/flysystem-aws-s3-v3": "^3.0", "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.4.4", - "orchestra/testbench-core": "^7.1", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^7.24", "pda/pheanstalk": "^4.0", + "phpstan/phpdoc-parser": "^1.15", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9|^2.0", - "symfony/cache": "^6.0" + "predis/predis": "^1.1.9|^2.0.2", + "symfony/cache": "^6.0", + "symfony/http-client": "^6.0" }, "suggest": { "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.198.1).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", "brianium/paratest": "Required to run tests in parallel (^6.0).", "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", - "ext-bcmath": "Required to use the multiple_of validation rule.", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", "ext-ftp": "Required to use the Flysystem FTP driver.", "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", "ext-memcached": "Required to use the memcache cache driver.", - "ext-pcntl": "Required to use all features of the queue worker.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", "ext-posix": "Required to use all features of the queue worker.", "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", "filp/whoops": "Required for friendly error pages in development (^2.14.3).", - "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.2).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", "laravel/tinker": "Required to use the tinker console command (^2.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", + "league/flysystem-read-only": "Required to use read-only disks (^3.3)", "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.4.4).", + "mockery/mockery": "Required to use mocking (^1.5.1).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).", - "predis/predis": "Required to use the predis connector (^1.1.9|^2.0).", + "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", "symfony/cache": "Required to PSR-6 cache bridge (^6.0).", @@ -1783,29 +1897,29 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-07-26T16:16:33+00:00" + "time": "2023-08-08T14:28:40+00:00" }, { "name": "laravel/horizon", - "version": "v5.9.10", + "version": "v5.19.2", "source": { "type": "git", "url": "https://github.com/laravel/horizon.git", - "reference": "09b2031b3077f22aaca07f1dbe4ee2cc8eacad78" + "reference": "16f2c0e00e5b0b9a3f85e95f6022b6dc0476993d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/horizon/zipball/09b2031b3077f22aaca07f1dbe4ee2cc8eacad78", - "reference": "09b2031b3077f22aaca07f1dbe4ee2cc8eacad78", + "url": "https://api.github.com/repos/laravel/horizon/zipball/16f2c0e00e5b0b9a3f85e95f6022b6dc0476993d", + "reference": "16f2c0e00e5b0b9a3f85e95f6022b6dc0476993d", "shasum": "" }, "require": { "ext-json": "*", "ext-pcntl": "*", "ext-posix": "*", - "illuminate/contracts": "^8.17|^9.0", - "illuminate/queue": "^8.17|^9.0", - "illuminate/support": "^8.17|^9.0", + "illuminate/contracts": "^8.17|^9.0|^10.0", + "illuminate/queue": "^8.17|^9.0|^10.0", + "illuminate/support": "^8.17|^9.0|^10.0", "nesbot/carbon": "^2.17", "php": "^7.3|^8.0", "ramsey/uuid": "^4.0", @@ -1814,7 +1928,8 @@ }, "require-dev": { "mockery/mockery": "^1.0", - "orchestra/testbench": "^6.0|^7.0", + "orchestra/testbench": "^6.0|^7.0|^8.0", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.0", "predis/predis": "^1.1|^2.0" }, @@ -1858,22 +1973,22 @@ ], "support": { "issues": "https://github.com/laravel/horizon/issues", - "source": "https://github.com/laravel/horizon/tree/v5.9.10" + "source": "https://github.com/laravel/horizon/tree/v5.19.2" }, - "time": "2022-07-25T13:24:03+00:00" + "time": "2023-08-29T13:37:54+00:00" }, { "name": "laravel/passport", - "version": "v10.4.1", + "version": "v10.4.2", "source": { "type": "git", "url": "https://github.com/laravel/passport.git", - "reference": "b62b418a6d9e9aca231a587be0fc14dc55cd8d77" + "reference": "4bfdb9610575a0c84a6810701f4fd45fb8ab3888" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/b62b418a6d9e9aca231a587be0fc14dc55cd8d77", - "reference": "b62b418a6d9e9aca231a587be0fc14dc55cd8d77", + "url": "https://api.github.com/repos/laravel/passport/zipball/4bfdb9610575a0c84a6810701f4fd45fb8ab3888", + "reference": "4bfdb9610575a0c84a6810701f4fd45fb8ab3888", "shasum": "" }, "require": { @@ -1937,29 +2052,30 @@ "issues": "https://github.com/laravel/passport/issues", "source": "https://github.com/laravel/passport" }, - "time": "2022-04-16T13:38:08+00:00" + "time": "2023-02-21T07:47:20+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.2.0", + "version": "v1.3.1", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "09f0e9fb61829f628205b7c94906c28740ff9540" + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/09f0e9fb61829f628205b7c94906c28740ff9540", - "reference": "09f0e9fb61829f628205b7c94906c28740ff9540", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", "shasum": "" }, "require": { "php": "^7.3|^8.0" }, "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" }, "type": "library", "extra": { @@ -1996,36 +2112,37 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2022-05-16T17:09:47+00:00" + "time": "2023-07-14T13:56:28+00:00" }, { "name": "laravel/tinker", - "version": "v2.7.2", + "version": "v2.8.2", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "dff39b661e827dae6e092412f976658df82dbac5" + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/dff39b661e827dae6e092412f976658df82dbac5", - "reference": "dff39b661e827dae6e092412f976658df82dbac5", + "url": "https://api.github.com/repos/laravel/tinker/zipball/b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", "php": "^7.2.5|^8.0", "psy/psysh": "^0.10.4|^0.11.1", "symfony/var-dumper": "^4.3.4|^5.0|^6.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." }, "type": "library", "extra": { @@ -2062,33 +2179,34 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.7.2" + "source": "https://github.com/laravel/tinker/tree/v2.8.2" }, - "time": "2022-03-23T12:38:24+00:00" + "time": "2023-08-15T14:27:00+00:00" }, { "name": "laravel/ui", - "version": "v4.0.0", + "version": "v4.2.2", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "e6291e8083cb5255511eacd6da0ec078210beabd" + "reference": "a58ec468db4a340b33f3426c778784717a2c144b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/e6291e8083cb5255511eacd6da0ec078210beabd", - "reference": "e6291e8083cb5255511eacd6da0ec078210beabd", + "url": "https://api.github.com/repos/laravel/ui/zipball/a58ec468db4a340b33f3426c778784717a2c144b", + "reference": "a58ec468db4a340b33f3426c778784717a2c144b", "shasum": "" }, "require": { - "illuminate/console": "^9.21", - "illuminate/filesystem": "^9.21", - "illuminate/support": "^9.21", - "illuminate/validation": "^9.21", + "illuminate/console": "^9.21|^10.0", + "illuminate/filesystem": "^9.21|^10.0", + "illuminate/support": "^9.21|^10.0", + "illuminate/validation": "^9.21|^10.0", "php": "^8.0" }, "require-dev": { - "orchestra/testbench": "^7.0" + "orchestra/testbench": "^7.0|^8.0", + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -2123,37 +2241,40 @@ "ui" ], "support": { - "source": "https://github.com/laravel/ui/tree/v4.0.0" + "source": "https://github.com/laravel/ui/tree/v4.2.2" }, - "time": "2022-07-25T10:21:27+00:00" + "time": "2023-05-09T19:47:28+00:00" }, { "name": "lcobucci/clock", - "version": "2.2.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/lcobucci/clock.git", - "reference": "fb533e093fd61321bfcbac08b131ce805fe183d3" + "reference": "039ef98c6b57b101d10bd11d8fdfda12cbd996dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/clock/zipball/fb533e093fd61321bfcbac08b131ce805fe183d3", - "reference": "fb533e093fd61321bfcbac08b131ce805fe183d3", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/039ef98c6b57b101d10bd11d8fdfda12cbd996dc", + "reference": "039ef98c6b57b101d10bd11d8fdfda12cbd996dc", "shasum": "" }, "require": { - "php": "^8.0", - "stella-maris/clock": "^0.1.4" + "php": "~8.1.0 || ~8.2.0", + "psr/clock": "^1.0" + }, + "provide": { + "psr/clock-implementation": "1.0" }, "require-dev": { "infection/infection": "^0.26", - "lcobucci/coding-standard": "^8.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^9.5" + "lcobucci/coding-standard": "^9.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^9.5.27" }, "type": "library", "autoload": { @@ -2174,7 +2295,7 @@ "description": "Yet another clock abstraction", "support": { "issues": "https://github.com/lcobucci/clock/issues", - "source": "https://github.com/lcobucci/clock/tree/2.2.0" + "source": "https://github.com/lcobucci/clock/tree/3.0.0" }, "funding": [ { @@ -2186,20 +2307,20 @@ "type": "patreon" } ], - "time": "2022-04-19T19:34:17+00:00" + "time": "2022-12-19T15:00:24+00:00" }, { "name": "lcobucci/jwt", - "version": "4.1.5", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "fe2d89f2eaa7087af4aa166c6f480ef04e000582" + "reference": "4d7de2fe0d51a96418c0d04004986e410e87f6b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/fe2d89f2eaa7087af4aa166c6f480ef04e000582", - "reference": "fe2d89f2eaa7087af4aa166c6f480ef04e000582", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/4d7de2fe0d51a96418c0d04004986e410e87f6b4", + "reference": "4d7de2fe0d51a96418c0d04004986e410e87f6b4", "shasum": "" }, "require": { @@ -2208,19 +2329,19 @@ "ext-mbstring": "*", "ext-openssl": "*", "ext-sodium": "*", - "lcobucci/clock": "^2.0", + "lcobucci/clock": "^2.0 || ^3.0", "php": "^7.4 || ^8.0" }, "require-dev": { "infection/infection": "^0.21", "lcobucci/coding-standard": "^6.0", "mikey179/vfsstream": "^1.6.7", - "phpbench/phpbench": "^1.0", + "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", "phpunit/php-invoker": "^3.1", "phpunit/phpunit": "^9.5" }, @@ -2248,7 +2369,7 @@ ], "support": { "issues": "https://github.com/lcobucci/jwt/issues", - "source": "https://github.com/lcobucci/jwt/tree/4.1.5" + "source": "https://github.com/lcobucci/jwt/tree/4.3.0" }, "funding": [ { @@ -2260,20 +2381,20 @@ "type": "patreon" } ], - "time": "2021-09-28T19:34:56+00:00" + "time": "2023-01-02T13:28:00+00:00" }, { "name": "league/commonmark", - "version": "2.3.5", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "84d74485fdb7074f4f9dd6f02ab957b1de513257" + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/84d74485fdb7074f4f9dd6f02ab957b1de513257", - "reference": "84d74485fdb7074f4f9dd6f02ab957b1de513257", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", "shasum": "" }, "require": { @@ -2293,7 +2414,7 @@ "erusev/parsedown": "^1.0", "ext-json": "*", "github/gfm": "0.29.0", - "michelf/php-markdown": "^1.4", + "michelf/php-markdown": "^1.4 || ^2.0", "nyholm/psr7": "^1.5", "phpstan/phpstan": "^1.8.2", "phpunit/phpunit": "^9.5.21", @@ -2301,7 +2422,7 @@ "symfony/finder": "^5.3 | ^6.0", "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0" + "vimeo/psalm": "^4.24.0 || ^5.0.0" }, "suggest": { "symfony/yaml": "v2.3+ required if using the Front Matter extension" @@ -2309,7 +2430,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" } }, "autoload": { @@ -2366,20 +2487,20 @@ "type": "tidelift" } ], - "time": "2022-07-29T10:59:45+00:00" + "time": "2023-08-30T16:55:00+00:00" }, { "name": "league/config", - "version": "v1.1.1", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/thephpleague/config.git", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", - "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", "shasum": "" }, "require": { @@ -2388,7 +2509,7 @@ "php": "^7.4 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.90", + "phpstan/phpstan": "^1.8.2", "phpunit/phpunit": "^9.5.5", "scrutinizer/ocular": "^1.8.1", "unleashedtech/php-coding-standard": "^3.1", @@ -2448,7 +2569,7 @@ "type": "github" } ], - "time": "2021-08-14T12:15:32+00:00" + "time": "2022-12-11T20:36:23+00:00" }, { "name": "league/event", @@ -2506,19 +2627,20 @@ }, { "name": "league/flysystem", - "version": "3.2.0", + "version": "3.15.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "ed0ecc7f9b5c2f4a9872185846974a808a3b052a" + "reference": "a141d430414fcb8bf797a18716b09f759a385bed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/ed0ecc7f9b5c2f4a9872185846974a808a3b052a", - "reference": "ed0ecc7f9b5c2f4a9872185846974a808a3b052a", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a141d430414fcb8bf797a18716b09f759a385bed", + "reference": "a141d430414fcb8bf797a18716b09f759a385bed", "shasum": "" }, "require": { + "league/flysystem-local": "^3.0.0", "league/mime-type-detection": "^1.0.0", "php": "^8.0.2" }, @@ -2526,12 +2648,13 @@ "aws/aws-sdk-php": "3.209.31 || 3.210.0", "guzzlehttp/guzzle": "<7.0", "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", "symfony/http-client": "<5.2" }, "require-dev": { "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.198.1", + "async-aws/simple-s3": "^1.1", + "aws/aws-sdk-php": "^3.220.0", "composer/semver": "^3.0", "ext-fileinfo": "*", "ext-ftp": "*", @@ -2539,7 +2662,7 @@ "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", "microsoft/azure-storage-blob": "^1.1", - "phpseclib/phpseclib": "^2.0", + "phpseclib/phpseclib": "^3.0.14", "phpstan/phpstan": "^0.12.26", "phpunit/phpunit": "^9.5.11", "sabre/dav": "^4.3.1" @@ -2576,41 +2699,37 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.2.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.15.1" }, "funding": [ { - "url": "https://offset.earth/frankdejonge", + "url": "https://ecologi.com/frankdejonge", "type": "custom" }, { "url": "https://github.com/frankdejonge", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" } ], - "time": "2022-07-26T07:26:36+00:00" + "time": "2023-05-04T09:04:26+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.2.0", + "version": "3.15.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "257893ef7398b3c9255b26dff8b0118bb93fc5ff" + "reference": "d8de61ee10b6a607e7996cff388c5a3a663e8c8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/257893ef7398b3c9255b26dff8b0118bb93fc5ff", - "reference": "257893ef7398b3c9255b26dff8b0118bb93fc5ff", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/d8de61ee10b6a607e7996cff388c5a3a663e8c8a", + "reference": "d8de61ee10b6a607e7996cff388c5a3a663e8c8a", "shasum": "" }, "require": { - "aws/aws-sdk-php": "^3.132.4", - "league/flysystem": "^3.0.0", + "aws/aws-sdk-php": "^3.220.0", + "league/flysystem": "^3.10.0", "league/mime-type-detection": "^1.0.0", "php": "^8.0.2" }, @@ -2646,46 +2765,102 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.2.0" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.15.0" }, "funding": [ { - "url": "https://offset.earth/frankdejonge", + "url": "https://ecologi.com/frankdejonge", "type": "custom" }, { "url": "https://github.com/frankdejonge", "type": "github" + } + ], + "time": "2023-05-02T20:02:14+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.15.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/543f64c397fefdf9cfeac443ffb6beff602796b3", + "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem-local/issues", + "source": "https://github.com/thephpleague/flysystem-local/tree/3.15.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" }, { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" + "url": "https://github.com/frankdejonge", + "type": "github" } ], - "time": "2022-07-26T07:22:40+00:00" + "time": "2023-05-02T20:02:14+00:00" }, { "name": "league/mime-type-detection", - "version": "1.11.0", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { @@ -2706,7 +2881,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0" }, "funding": [ { @@ -2718,41 +2893,41 @@ "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2023-08-05T12:09:49+00:00" }, { "name": "league/oauth2-server", - "version": "8.3.5", + "version": "8.5.4", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-server.git", - "reference": "7aeb7c42b463b1a6fe4d084d3145e2fa22436876" + "reference": "ab7714d073844497fd222d5d0a217629089936bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/7aeb7c42b463b1a6fe4d084d3145e2fa22436876", - "reference": "7aeb7c42b463b1a6fe4d084d3145e2fa22436876", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/ab7714d073844497fd222d5d0a217629089936bc", + "reference": "ab7714d073844497fd222d5d0a217629089936bc", "shasum": "" }, "require": { - "defuse/php-encryption": "^2.2.1", - "ext-json": "*", + "defuse/php-encryption": "^2.3", "ext-openssl": "*", - "lcobucci/jwt": "^3.4.6 || ^4.0.4", + "lcobucci/clock": "^2.2 || ^3.0", + "lcobucci/jwt": "^4.3 || ^5.0", "league/event": "^2.2", - "league/uri": "^6.4", - "php": "^7.2 || ^8.0", - "psr/http-message": "^1.0.1" + "league/uri": "^6.7 || ^7.0", + "php": "^8.0", + "psr/http-message": "^1.0.1 || ^2.0" }, "replace": { "league/oauth2server": "*", "lncd/oauth2": "*" }, "require-dev": { - "laminas/laminas-diactoros": "^2.4.1", + "laminas/laminas-diactoros": "^3.0.0", "phpstan/phpstan": "^0.12.57", "phpstan/phpstan-phpunit": "^0.12.16", - "phpunit/phpunit": "^8.5.13", + "phpunit/phpunit": "^9.6.6", "roave/security-advisories": "dev-master" }, "type": "library", @@ -2798,7 +2973,7 @@ ], "support": { "issues": "https://github.com/thephpleague/oauth2-server/issues", - "source": "https://github.com/thephpleague/oauth2-server/tree/8.3.5" + "source": "https://github.com/thephpleague/oauth2-server/tree/8.5.4" }, "funding": [ { @@ -2806,57 +2981,48 @@ "type": "github" } ], - "time": "2022-05-03T21:21:28+00:00" + "time": "2023-08-25T22:35:12+00:00" }, { "name": "league/uri", - "version": "6.7.1", + "version": "7.2.1", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "2d7c87a0860f3126a39f44a8a9bf2fed402dcfea" + "reference": "8b644f8ff80352530bbc0ea467d5b5a89b60d832" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/2d7c87a0860f3126a39f44a8a9bf2fed402dcfea", - "reference": "2d7c87a0860f3126a39f44a8a9bf2fed402dcfea", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/8b644f8ff80352530bbc0ea467d5b5a89b60d832", + "reference": "8b644f8ff80352530bbc0ea467d5b5a89b60d832", "shasum": "" }, "require": { - "ext-json": "*", - "league/uri-interfaces": "^2.3", - "php": "^7.4 || ^8.0", - "psr/http-message": "^1.0" + "league/uri-interfaces": "^7.2", + "php": "^8.1" }, "conflict": { "league/uri-schemes": "^1.0" }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v3.3.2", - "nyholm/psr7": "^1.5", - "php-http/psr7-integration-tests": "^1.1", - "phpstan/phpstan": "^1.2.0", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0.0", - "phpstan/phpstan-strict-rules": "^1.1.0", - "phpunit/phpunit": "^9.5.10", - "psr/http-factory": "^1.0" - }, "suggest": { - "ext-fileinfo": "Needed to create Data URI from a filepath", - "ext-intl": "Needed to improve host validation", - "league/uri-components": "Needed to easily manipulate URI objects", - "psr/http-factory": "Needed to use the URI factory" + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.x-dev" + "dev-master": "7.x-dev" } }, "autoload": { "psr-4": { - "League\\Uri\\": "src" + "League\\Uri\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2896,8 +3062,8 @@ "support": { "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", - "issues": "https://github.com/thephpleague/uri/issues", - "source": "https://github.com/thephpleague/uri/tree/6.7.1" + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.2.1" }, "funding": [ { @@ -2905,46 +3071,44 @@ "type": "github" } ], - "time": "2022-06-29T09:48:18+00:00" + "time": "2023-08-30T21:06:57+00:00" }, { "name": "league/uri-interfaces", - "version": "2.3.0", + "version": "7.2.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383" + "reference": "43fa071050fcba89aefb5d4789a4a5a73874c44b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/00e7e2943f76d8cb50c7dfdc2f6dee356e15e383", - "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/43fa071050fcba89aefb5d4789a4a5a73874c44b", + "reference": "43fa071050fcba89aefb5d4789a4a5a73874c44b", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.19", - "phpstan/phpstan": "^0.12.90", - "phpstan/phpstan-phpunit": "^0.12.19", - "phpstan/phpstan-strict-rules": "^0.12.9", - "phpunit/phpunit": "^8.5.15 || ^9.5" + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" }, "suggest": { - "ext-intl": "to use the IDNA feature", - "symfony/intl": "to use the IDNA feature via Symfony Polyfill" + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "7.x-dev" } }, "autoload": { "psr-4": { - "League\\Uri\\": "src/" + "League\\Uri\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2958,17 +3122,32 @@ "homepage": "https://nyamsprod.com" } ], - "description": "Common interface for URI representation", - "homepage": "http://github.com/thephpleague/uri-interfaces", + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", "rfc3986", "rfc3987", + "rfc6570", "uri", - "url" + "url", + "ws" ], "support": { - "issues": "https://github.com/thephpleague/uri-interfaces/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/2.3.0" + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.2.0" }, "funding": [ { @@ -2976,20 +3155,20 @@ "type": "github" } ], - "time": "2021-06-28T04:27:21+00:00" + "time": "2023-08-30T19:43:38+00:00" }, { "name": "monolog/monolog", - "version": "2.8.0", + "version": "2.9.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", "shasum": "" }, "require": { @@ -3004,7 +3183,7 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", "guzzlehttp/guzzle": "^7.4", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", @@ -3066,7 +3245,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.8.0" + "source": "https://github.com/Seldaek/monolog/tree/2.9.1" }, "funding": [ { @@ -3078,29 +3257,29 @@ "type": "tidelift" } ], - "time": "2022-07-24T11:55:47+00:00" + "time": "2023-02-06T13:44:46+00:00" }, { "name": "mtdowling/jmespath.php", - "version": "2.6.1", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" + "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", - "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b", + "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0 || ^8.0", + "php": "^7.2.5 || ^8.0", "symfony/polyfill-mbstring": "^1.17" }, "require-dev": { - "composer/xdebug-handler": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^7.5.15" + "composer/xdebug-handler": "^3.0.3", + "phpunit/phpunit": "^8.5.33" }, "bin": [ "bin/jp.php" @@ -3108,7 +3287,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { @@ -3124,6 +3303,11 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", @@ -3137,33 +3321,37 @@ ], "support": { "issues": "https://github.com/jmespath/jmespath.php/issues", - "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" + "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0" }, - "time": "2021-06-14T00:11:39+00:00" + "time": "2023-08-25T10:54:48+00:00" }, { "name": "nesbot/carbon", - "version": "2.60.0", + "version": "2.69.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "00a259ae02b003c563158b54fb6743252b638ea6" + "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/00a259ae02b003c563158b54fb6743252b638ea6", - "reference": "00a259ae02b003c563158b54fb6743252b638ea6", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4308217830e4ca445583a37d1bf4aff4153fa81c", + "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c", "shasum": "" }, "require": { "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, + "provide": { + "psr/clock-implementation": "1.0" + }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", + "doctrine/dbal": "^2.0 || ^3.1.4", "doctrine/orm": "^2.7", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", @@ -3241,29 +3429,29 @@ "type": "tidelift" } ], - "time": "2022-07-27T15:57:48+00:00" + "time": "2023-08-03T09:00:52+00:00" }, { "name": "nette/schema", - "version": "v1.2.2", + "version": "v1.2.4", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" + "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", - "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", + "url": "https://api.github.com/repos/nette/schema/zipball/c9ff517a53903b3d4e29ec547fb20feecb05b8ab", + "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab", "shasum": "" }, "require": { "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.2" + "php": "7.1 - 8.3" }, "require-dev": { "nette/tester": "^2.3 || ^2.4", - "phpstan/phpstan-nette": "^0.12", + "phpstan/phpstan-nette": "^1.0", "tracy/tracy": "^2.7" }, "type": "library", @@ -3301,34 +3489,36 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.2" + "source": "https://github.com/nette/schema/tree/v1.2.4" }, - "time": "2021-10-15T11:40:02+00:00" + "time": "2023-08-05T18:56:25+00:00" }, { "name": "nette/utils", - "version": "v3.2.7", + "version": "v4.0.1", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" + "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", - "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", + "url": "https://api.github.com/repos/nette/utils/zipball/9124157137da01b1f5a5a22d6486cb975f26db7e", + "reference": "9124157137da01b1f5a5a22d6486cb975f26db7e", "shasum": "" }, "require": { - "php": ">=7.2 <8.2" + "php": ">=8.0 <8.4" }, "conflict": { - "nette/di": "<3.0.6" + "nette/finder": "<3", + "nette/schema": "<1.2.2" }, "require-dev": { - "nette/tester": "~2.0", + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.3" + "tracy/tracy": "^2.9" }, "suggest": { "ext-gd": "to use Image", @@ -3342,7 +3532,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3386,22 +3576,22 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v3.2.7" + "source": "https://github.com/nette/utils/tree/v4.0.1" }, - "time": "2022-01-24T11:29:14+00:00" + "time": "2023-07-30T15:42:21+00:00" }, { "name": "nikic/php-parser", - "version": "v4.14.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -3442,22 +3632,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2022-05-31T20:59:12+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "nunomaduro/termwind", - "version": "v1.13.0", + "version": "v1.15.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "132a24bd3e8c559e7f14fa14ba1b83772a0f97f8" + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/132a24bd3e8c559e7f14fa14ba1b83772a0f97f8", - "reference": "132a24bd3e8c559e7f14fa14ba1b83772a0f97f8", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", "shasum": "" }, "require": { @@ -3469,7 +3659,7 @@ "ergebnis/phpstan-rules": "^1.0.", "illuminate/console": "^8.0|^9.0", "illuminate/support": "^8.0|^9.0", - "laravel/pint": "^0.2.0", + "laravel/pint": "^1.0.0", "pestphp/pest": "^1.21.0", "pestphp/pest-plugin-mock": "^1.0", "phpstan/phpstan": "^1.4.6", @@ -3514,7 +3704,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.13.0" + "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" }, "funding": [ { @@ -3530,42 +3720,43 @@ "type": "github" } ], - "time": "2022-07-01T15:06:55+00:00" + "time": "2023-02-08T01:06:31+00:00" }, { "name": "nyholm/psr7", - "version": "1.5.1", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/Nyholm/psr7.git", - "reference": "f734364e38a876a23be4d906a2a089e1315be18a" + "reference": "3cb4d163b58589e47b35103e8e5e6a6a475b47be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Nyholm/psr7/zipball/f734364e38a876a23be4d906a2a089e1315be18a", - "reference": "f734364e38a876a23be4d906a2a089e1315be18a", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/3cb4d163b58589e47b35103e8e5e6a6a475b47be", + "reference": "3cb4d163b58589e47b35103e8e5e6a6a475b47be", "shasum": "" }, "require": { - "php": ">=7.1", - "php-http/message-factory": "^1.0", + "php": ">=7.2", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.1 || ^2.0" }, "provide": { + "php-http/message-factory-implementation": "1.0", "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { "http-interop/http-factory-tests": "^0.9", + "php-http/message-factory": "^1.0", "php-http/psr7-integration-tests": "^1.0", - "phpunit/phpunit": "^7.5 || 8.5 || 9.4", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", "symfony/error-handler": "^4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.8-dev" } }, "autoload": { @@ -3595,7 +3786,7 @@ ], "support": { "issues": "https://github.com/Nyholm/psr7/issues", - "source": "https://github.com/Nyholm/psr7/tree/1.5.1" + "source": "https://github.com/Nyholm/psr7/tree/1.8.0" }, "funding": [ { @@ -3607,7 +3798,7 @@ "type": "github" } ], - "time": "2022-06-22T07:13:36+00:00" + "time": "2023-05-02T11:26:24+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -3728,26 +3919,25 @@ }, { "name": "php-http/client-common", - "version": "2.5.0", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/php-http/client-common.git", - "reference": "d135751167d57e27c74de674d6a30cef2dc8e054" + "reference": "880509727a447474d2a71b7d7fa5d268ddd3db4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/d135751167d57e27c74de674d6a30cef2dc8e054", - "reference": "d135751167d57e27c74de674d6a30cef2dc8e054", + "url": "https://api.github.com/repos/php-http/client-common/zipball/880509727a447474d2a71b7d7fa5d268ddd3db4b", + "reference": "880509727a447474d2a71b7d7fa5d268ddd3db4b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0", "php-http/httplug": "^2.0", "php-http/message": "^1.6", - "php-http/message-factory": "^1.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.0 || ^2.0", "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0", "symfony/polyfill-php80": "^1.17" }, @@ -3757,7 +3947,7 @@ "nyholm/psr7": "^1.2", "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", "phpspec/prophecy": "^1.10.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" + "phpunit/phpunit": "^7.5.20 || ^8.5.33 || ^9.6.7" }, "suggest": { "ext-json": "To detect JSON responses with the ContentTypePlugin", @@ -3767,11 +3957,6 @@ "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, "autoload": { "psr-4": { "Http\\Client\\Common\\": "src/" @@ -3797,50 +3982,60 @@ ], "support": { "issues": "https://github.com/php-http/client-common/issues", - "source": "https://github.com/php-http/client-common/tree/2.5.0" + "source": "https://github.com/php-http/client-common/tree/2.7.0" }, - "time": "2021-11-26T15:01:24+00:00" + "time": "2023-05-17T06:46:59+00:00" }, { "name": "php-http/discovery", - "version": "1.14.3", + "version": "1.19.1", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "31d8ee46d0215108df16a8527c7438e96a4d7735" + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/31d8ee46d0215108df16a8527c7438e96a4d7735", - "reference": "31d8ee46d0215108df16a8527c7438e96a4d7735", + "url": "https://api.github.com/repos/php-http/discovery/zipball/57f3de01d32085fea20865f9b16fb0e69347c39e", + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e", "shasum": "" }, "require": { + "composer-plugin-api": "^1.0|^2.0", "php": "^7.1 || ^8.0" }, "conflict": { - "nyholm/psr7": "<1.0" + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "*", + "psr/http-factory-implementation": "*", + "psr/http-message-implementation": "*" }, "require-dev": { + "composer/composer": "^1.0.2|^2.0", "graham-campbell/phpspec-skip-example-extension": "^5.0", "php-http/httplug": "^1.0 || ^2.0", "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^5.1 || ^6.1" + "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", + "symfony/phpunit-bridge": "^6.2" }, - "suggest": { - "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories" - }, - "type": "library", + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true }, "autoload": { "psr-4": { "Http\\Discovery\\": "src/" - } - }, + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -3851,7 +4046,7 @@ "email": "mark.sagikazar@gmail.com" } ], - "description": "Finds installed HTTPlug implementations and PSR-7 message factories", + "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", "homepage": "http://php-http.org", "keywords": [ "adapter", @@ -3860,44 +4055,40 @@ "factory", "http", "message", + "psr17", "psr7" ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.14.3" + "source": "https://github.com/php-http/discovery/tree/1.19.1" }, - "time": "2022-07-11T14:04:40+00:00" + "time": "2023-07-11T07:02:26+00:00" }, { "name": "php-http/httplug", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/php-http/httplug.git", - "reference": "f640739f80dfa1152533976e3c112477f69274eb" + "reference": "625ad742c360c8ac580fcc647a1541d29e257f67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/f640739f80dfa1152533976e3c112477f69274eb", - "reference": "f640739f80dfa1152533976e3c112477f69274eb", + "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67", + "reference": "625ad742c360c8ac580fcc647a1541d29e257f67", "shasum": "" }, "require": { "php": "^7.1 || ^8.0", "php-http/promise": "^1.1", "psr/http-client": "^1.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1", - "phpspec/phpspec": "^5.1 || ^6.0" + "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0", + "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, "autoload": { "psr-4": { "Http\\Client\\": "src/" @@ -3926,29 +4117,28 @@ ], "support": { "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/2.3.0" + "source": "https://github.com/php-http/httplug/tree/2.4.0" }, - "time": "2022-02-21T09:52:22+00:00" + "time": "2023-04-14T15:10:03+00:00" }, { "name": "php-http/message", - "version": "1.13.0", + "version": "1.16.0", "source": { "type": "git", "url": "https://github.com/php-http/message.git", - "reference": "7886e647a30a966a1a8d1dad1845b71ca8678361" + "reference": "47a14338bf4ebd67d317bf1144253d7db4ab55fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/7886e647a30a966a1a8d1dad1845b71ca8678361", - "reference": "7886e647a30a966a1a8d1dad1845b71ca8678361", + "url": "https://api.github.com/repos/php-http/message/zipball/47a14338bf4ebd67d317bf1144253d7db4ab55fd", + "reference": "47a14338bf4ebd67d317bf1144253d7db4ab55fd", "shasum": "" }, "require": { "clue/stream-filter": "^1.5", - "php": "^7.1 || ^8.0", - "php-http/message-factory": "^1.0.2", - "psr/http-message": "^1.0" + "php": "^7.2 || ^8.0", + "psr/http-message": "^1.1 || ^2.0" }, "provide": { "php-http/message-factory-implementation": "1.0" @@ -3956,8 +4146,9 @@ "require-dev": { "ergebnis/composer-normalize": "^2.6", "ext-zlib": "*", - "guzzlehttp/psr7": "^1.0", - "laminas/laminas-diactoros": "^2.0", + "guzzlehttp/psr7": "^1.0 || ^2.0", + "laminas/laminas-diactoros": "^2.0 || ^3.0", + "php-http/message-factory": "^1.0.2", "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", "slim/slim": "^3.0" }, @@ -3968,11 +4159,6 @@ "slim/slim": "Used with Slim Framework PSR-7 implementation" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, "autoload": { "files": [ "src/filters.php" @@ -4000,32 +4186,32 @@ ], "support": { "issues": "https://github.com/php-http/message/issues", - "source": "https://github.com/php-http/message/tree/1.13.0" + "source": "https://github.com/php-http/message/tree/1.16.0" }, - "time": "2022-02-11T13:41:14+00:00" + "time": "2023-05-17T06:43:38+00:00" }, { "name": "php-http/message-factory", - "version": "v1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "url": "https://api.github.com/repos/php-http/message-factory/zipball/4d8778e1c7d405cbb471574821c1ff5b68cc8f57", + "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57", "shasum": "" }, "require": { "php": ">=5.4", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -4054,9 +4240,10 @@ ], "support": { "issues": "https://github.com/php-http/message-factory/issues", - "source": "https://github.com/php-http/message-factory/tree/master" + "source": "https://github.com/php-http/message-factory/tree/1.1.0" }, - "time": "2015-12-19T14:08:53+00:00" + "abandoned": "psr/http-factory", + "time": "2023-04-14T14:16:17+00:00" }, { "name": "php-http/promise", @@ -4117,29 +4304,33 @@ }, { "name": "phpoption/phpoption", - "version": "1.8.1", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -4172,7 +4363,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" }, "funding": [ { @@ -4184,20 +4375,20 @@ "type": "tidelift" } ], - "time": "2021-12-04T23:24:31+00:00" + "time": "2023-02-25T19:38:58+00:00" }, { "name": "phpseclib/phpseclib", - "version": "3.0.14", + "version": "3.0.21", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "2f0b7af658cbea265cbb4a791d6c29a6613f98ef" + "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/2f0b7af658cbea265cbb4a791d6c29a6613f98ef", - "reference": "2f0b7af658cbea265cbb4a791d6c29a6613f98ef", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4580645d3fc05c189024eb3b834c6c1e4f0f30a1", + "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1", "shasum": "" }, "require": { @@ -4209,6 +4400,7 @@ "phpunit/phpunit": "*" }, "suggest": { + "ext-dom": "Install the DOM extension to load XML formatted public keys.", "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", @@ -4277,7 +4469,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.14" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.21" }, "funding": [ { @@ -4293,7 +4485,55 @@ "type": "tidelift" } ], - "time": "2022-04-04T05:15:45+00:00" + "time": "2023-07-09T15:24:48+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" }, { "name": "psr/container", @@ -4400,21 +4640,21 @@ }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", "shasum": "" }, "require": { "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -4434,7 +4674,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -4446,27 +4686,27 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/php-fig/http-client/tree/1.0.2" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2023-04-10T20:12:12+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -4486,7 +4726,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -4501,31 +4741,31 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -4540,7 +4780,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -4554,9 +4794,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/log", @@ -4661,16 +4901,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.8", + "version": "v0.11.20", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "f455acf3645262ae389b10e9beba0c358aa6994e" + "reference": "0fa27040553d1d280a67a4393194df5228afea5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/f455acf3645262ae389b10e9beba0c358aa6994e", - "reference": "f455acf3645262ae389b10e9beba0c358aa6994e", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/0fa27040553d1d280a67a4393194df5228afea5b", + "reference": "0fa27040553d1d280a67a4393194df5228afea5b", "shasum": "" }, "require": { @@ -4731,9 +4971,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.8" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.20" }, - "time": "2022-07-28T14:25:11+00:00" + "time": "2023-07-31T14:32:22+00:00" }, { "name": "ralouphie/getallheaders", @@ -4781,42 +5021,52 @@ }, { "name": "ramsey/collection", - "version": "1.2.2", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", "shasum": "" }, "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" + "php": "^8.1" }, "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" }, "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, "autoload": { "psr-4": { "Ramsey\\Collection\\": "src/" @@ -4844,7 +5094,7 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/1.2.2" + "source": "https://github.com/ramsey/collection/tree/2.0.0" }, "funding": [ { @@ -4856,28 +5106,27 @@ "type": "tidelift" } ], - "time": "2021-10-10T03:01:02+00:00" + "time": "2022-12-31T21:50:55+00:00" }, { "name": "ramsey/uuid", - "version": "4.3.1", + "version": "4.7.4", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28" + "reference": "60a4c63ab724854332900504274f6150ff26d286" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/8505afd4fea63b81a85d3b7b53ac3cb8dc347c28", - "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", + "reference": "60a4c63ab724854332900504274f6150ff26d286", "shasum": "" }, "require": { - "brick/math": "^0.8 || ^0.9", - "ext-ctype": "*", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", "ext-json": "*", "php": "^8.0", - "ramsey/collection": "^1.0" + "ramsey/collection": "^1.2 || ^2.0" }, "replace": { "rhumsaa/uuid": "self.version" @@ -4889,24 +5138,23 @@ "doctrine/annotations": "^1.8", "ergebnis/composer-normalize": "^2.15", "mockery/mockery": "^1.3", - "moontoast/math": "^1.1", "paragonie/random-lib": "^2", "php-mock/php-mock": "^2.2", "php-mock/php-mock-mockery": "^1.3", "php-parallel-lint/php-parallel-lint": "^1.1", "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", "squizlabs/php_codesniffer": "^3.5", "vimeo/psalm": "^4.9" }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", @@ -4938,7 +5186,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.3.1" + "source": "https://github.com/ramsey/uuid/tree/4.7.4" }, "funding": [ { @@ -4950,25 +5198,25 @@ "type": "tidelift" } ], - "time": "2022-03-27T21:42:02+00:00" + "time": "2023-04-15T23:01:58+00:00" }, { "name": "sentry/sdk", - "version": "3.2.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php-sdk.git", - "reference": "6d78bd83b43efbb52f81d6824f4af344fa9ba292" + "reference": "cd91b752f07c4bab9fb3b173f81af68a78a78d6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/6d78bd83b43efbb52f81d6824f4af344fa9ba292", - "reference": "6d78bd83b43efbb52f81d6824f4af344fa9ba292", + "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/cd91b752f07c4bab9fb3b173f81af68a78a78d6d", + "reference": "cd91b752f07c4bab9fb3b173f81af68a78a78d6d", "shasum": "" }, "require": { "http-interop/http-factory-guzzle": "^1.0", - "sentry/sentry": "^3.5", + "sentry/sentry": "^3.19", "symfony/http-client": "^4.3|^5.0|^6.0" }, "type": "metapackage", @@ -4995,7 +5243,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php-sdk/issues", - "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.2.0" + "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.5.0" }, "funding": [ { @@ -5007,40 +5255,39 @@ "type": "custom" } ], - "time": "2022-05-21T11:10:11+00:00" + "time": "2023-06-12T17:50:36+00:00" }, { "name": "sentry/sentry", - "version": "3.7.0", + "version": "3.21.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-php.git", - "reference": "877bca3f0f0ac0fc8ec0a218c6070cccea266795" + "reference": "624aafc22b84b089ffa43b71fb01e0096505ec4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/877bca3f0f0ac0fc8ec0a218c6070cccea266795", - "reference": "877bca3f0f0ac0fc8ec0a218c6070cccea266795", + "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/624aafc22b84b089ffa43b71fb01e0096505ec4f", + "reference": "624aafc22b84b089ffa43b71fb01e0096505ec4f", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "guzzlehttp/promises": "^1.4", - "guzzlehttp/psr7": "^1.8.4|^2.1.1", + "guzzlehttp/promises": "^1.5.3|^2.0", "jean85/pretty-package-versions": "^1.5|^2.0.4", "php": "^7.2|^8.0", "php-http/async-client-implementation": "^1.0", "php-http/client-common": "^1.5|^2.0", - "php-http/discovery": "^1.11", + "php-http/discovery": "^1.15", "php-http/httplug": "^1.1|^2.0", "php-http/message": "^1.5", + "php-http/message-factory": "^1.1", "psr/http-factory": "^1.0", - "psr/http-message-implementation": "^1.0", + "psr/http-factory-implementation": "^1.0", "psr/log": "^1.0|^2.0|^3.0", "symfony/options-resolver": "^3.4.43|^4.4.30|^5.0.11|^6.0", - "symfony/polyfill-php80": "^1.17", - "symfony/polyfill-uuid": "^1.13.1" + "symfony/polyfill-php80": "^1.17" }, "conflict": { "php-http/client-common": "1.8.0", @@ -5048,6 +5295,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.19|3.4.*", + "guzzlehttp/psr7": "^1.8.4|^2.1.1", "http-interop/http-factory-guzzle": "^1.0", "monolog/monolog": "^1.6|^2.0|^3.0", "nikic/php-parser": "^4.10.3", @@ -5064,11 +5312,6 @@ "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.7.x-dev" - } - }, "autoload": { "files": [ "src/functions.php" @@ -5079,7 +5322,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { @@ -5100,7 +5343,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-php/issues", - "source": "https://github.com/getsentry/sentry-php/tree/3.7.0" + "source": "https://github.com/getsentry/sentry-php/tree/3.21.0" }, "funding": [ { @@ -5112,20 +5355,20 @@ "type": "custom" } ], - "time": "2022-07-18T07:55:36+00:00" + "time": "2023-07-31T15:31:24+00:00" }, { "name": "sentry/sentry-laravel", - "version": "2.13.0", + "version": "2.14.2", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-laravel.git", - "reference": "c5e74e5fff18014780361fb33a883af9a9fbd900" + "reference": "4538ed31d77868dd3b6d72ad6e5e68b572beeb9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/c5e74e5fff18014780361fb33a883af9a9fbd900", - "reference": "c5e74e5fff18014780361fb33a883af9a9fbd900", + "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/4538ed31d77868dd3b6d72ad6e5e68b572beeb9f", + "reference": "4538ed31d77868dd3b6d72ad6e5e68b572beeb9f", "shasum": "" }, "require": { @@ -5137,15 +5380,12 @@ "symfony/psr-http-message-bridge": "^1.0 | ^2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "2.18.*", + "friendsofphp/php-cs-fixer": "^3.11", "laravel/framework": "5.0 - 5.8 | ^6.0 | ^7.0 | ^8.0 | ^9.0", "mockery/mockery": "^1.3", "orchestra/testbench": "3.1 - 3.8 | ^4.7 | ^5.1 | ^6.0 | ^7.0", "phpunit/phpunit": "^5.7 | ^6.5 | ^7.5 | ^8.4 | ^9.3" }, - "suggest": { - "zendframework/zend-diactoros": "When using Laravel >=5.1 - <=6.9 this package can help get more accurate request info, not used on Laravel >=6.10 anymore (https://laravel.com/docs/5.8/requests#psr7-requests)" - }, "type": "library", "extra": { "branch-alias": { @@ -5191,7 +5431,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-laravel/issues", - "source": "https://github.com/getsentry/sentry-laravel/tree/2.13.0" + "source": "https://github.com/getsentry/sentry-laravel/tree/2.14.2" }, "funding": [ { @@ -5203,32 +5443,33 @@ "type": "custom" } ], - "time": "2022-07-15T11:36:23+00:00" + "time": "2022-10-13T09:21:29+00:00" }, { "name": "spatie/laravel-cookie-consent", - "version": "3.2.2", + "version": "3.2.4", "source": { "type": "git", "url": "https://github.com/spatie/laravel-cookie-consent.git", - "reference": "c7a9d87397bce8b1834d90fb5124bea036ff7358" + "reference": "5a5b2f0a03cc66d8ffede42037a7f3e00f95aaa9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-cookie-consent/zipball/c7a9d87397bce8b1834d90fb5124bea036ff7358", - "reference": "c7a9d87397bce8b1834d90fb5124bea036ff7358", + "url": "https://api.github.com/repos/spatie/laravel-cookie-consent/zipball/5a5b2f0a03cc66d8ffede42037a7f3e00f95aaa9", + "reference": "5a5b2f0a03cc66d8ffede42037a7f3e00f95aaa9", "shasum": "" }, "require": { - "illuminate/cookie": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "illuminate/view": "^8.0|^9.0", + "illuminate/cookie": "^8.0|^9.0|^10.0", + "illuminate/support": "^8.0|^9.0|^10.0", + "illuminate/view": "^8.0|^9.0|^10.0", "php": "^8.0", "spatie/laravel-package-tools": "^1.9" }, "require-dev": { "fakerphp/faker": "^1.9", - "orchestra/testbench": "^6.0|^7.0" + "orchestra/testbench": "^6.0|^7.0|^8.0", + "pestphp/pest": "^1.22" }, "type": "library", "extra": { @@ -5272,7 +5513,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/laravel-cookie-consent/tree/3.2.2" + "source": "https://github.com/spatie/laravel-cookie-consent/tree/3.2.4" }, "funding": [ { @@ -5280,31 +5521,32 @@ "type": "custom" } ], - "time": "2022-06-03T08:33:36+00:00" + "time": "2023-01-25T09:18:22+00:00" }, { "name": "spatie/laravel-package-tools", - "version": "1.12.1", + "version": "1.16.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "09f80fa240d44fafb1c70657c74ee44ffa929357" + "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/09f80fa240d44fafb1c70657c74ee44ffa929357", - "reference": "09f80fa240d44fafb1c70657c74ee44ffa929357", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/cc7c991555a37f9fa6b814aa03af73f88026a83d", + "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d", "shasum": "" }, "require": { - "illuminate/contracts": "^7.0|^8.0|^9.0", - "php": "^7.4|^8.0" + "illuminate/contracts": "^9.28|^10.0", + "php": "^8.0" }, "require-dev": { - "mockery/mockery": "^1.4", - "orchestra/testbench": "^5.0|^6.23|^7.0", - "phpunit/phpunit": "^9.4", - "spatie/test-time": "^1.2" + "mockery/mockery": "^1.5", + "orchestra/testbench": "^7.7|^8.0", + "pestphp/pest": "^1.22", + "phpunit/phpunit": "^9.5.24", + "spatie/pest-plugin-test-time": "^1.1" }, "type": "library", "autoload": { @@ -5331,7 +5573,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.12.1" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.1" }, "funding": [ { @@ -5339,74 +5581,27 @@ "type": "github" } ], - "time": "2022-06-28T14:29:26+00:00" - }, - { - "name": "stella-maris/clock", - "version": "0.1.4", - "source": { - "type": "git", - "url": "https://gitlab.com/stella-maris/clock.git", - "reference": "8a0a967896df4c63417385dc69328a0aec84d9cf" - }, - "dist": { - "type": "zip", - "url": "https://gitlab.com/api/v4/projects/stella-maris%2Fclock/repository/archive.zip?sha=8a0a967896df4c63417385dc69328a0aec84d9cf", - "reference": "8a0a967896df4c63417385dc69328a0aec84d9cf", - "shasum": "" - }, - "require": { - "php": "^7.0|^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "StellaMaris\\Clock\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andreas Heigl", - "role": "Maintainer" - } - ], - "description": "A pre-release of the proposed PSR-20 Clock-Interface", - "homepage": "https://gitlab.com/stella-maris/clock", - "keywords": [ - "clock", - "datetime", - "point in time", - "psr20" - ], - "support": { - "issues": "https://gitlab.com/stella-maris/clock/-/issues", - "source": "https://gitlab.com/stella-maris/clock/-/tree/0.1.4" - }, - "time": "2022-04-17T14:12:26+00:00" + "time": "2023-08-23T09:04:39+00:00" }, { "name": "symfony/console", - "version": "v6.1.3", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "43fcb5c5966b43c56bcfa481368d90d748936ab8" + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/43fcb5c5966b43c56bcfa481368d90d748936ab8", - "reference": "43fcb5c5966b43c56bcfa481368d90d748936ab8", + "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/string": "^5.4|^6.0" }, "conflict": { @@ -5428,12 +5623,6 @@ "symfony/process": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, "type": "library", "autoload": { "psr-4": { @@ -5461,12 +5650,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.1.3" + "source": "https://github.com/symfony/console/tree/v6.3.4" }, "funding": [ { @@ -5482,20 +5671,20 @@ "type": "tidelift" } ], - "time": "2022-07-22T14:17:57+00:00" + "time": "2023-08-16T10:10:12+00:00" }, { "name": "symfony/css-selector", - "version": "v6.1.3", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "0dd5e36b80e1de97f8f74ed7023ac2b837a36443" + "reference": "883d961421ab1709877c10ac99451632a3d6fa57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/0dd5e36b80e1de97f8f74ed7023ac2b837a36443", - "reference": "0dd5e36b80e1de97f8f74ed7023ac2b837a36443", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57", "shasum": "" }, "require": { @@ -5531,7 +5720,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.1.3" + "source": "https://github.com/symfony/css-selector/tree/v6.3.2" }, "funding": [ { @@ -5547,20 +5736,20 @@ "type": "tidelift" } ], - "time": "2022-06-27T17:24:16+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.1.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { @@ -5569,7 +5758,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5598,7 +5787,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -5614,20 +5803,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/error-handler", - "version": "v6.1.3", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "736e42db3fd586d91820355988698e434e1d8419" + "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/736e42db3fd586d91820355988698e434e1d8419", - "reference": "736e42db3fd586d91820355988698e434e1d8419", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", + "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", "shasum": "" }, "require": { @@ -5635,8 +5824,11 @@ "psr/log": "^1|^2|^3", "symfony/var-dumper": "^5.4|^6.0" }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^5.4|^6.0", "symfony/serializer": "^5.4|^6.0" }, @@ -5669,7 +5861,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.1.3" + "source": "https://github.com/symfony/error-handler/tree/v6.3.2" }, "funding": [ { @@ -5685,28 +5877,29 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:42:06+00:00" + "time": "2023-07-16T17:05:46+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.1.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347" + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a0449a7ad7daa0f7c0acd508259f80544ab5a347", - "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -5719,13 +5912,9 @@ "symfony/error-handler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/stopwatch": "^5.4|^6.0" }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, "type": "library", "autoload": { "psr-4": { @@ -5752,7 +5941,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.1.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" }, "funding": [ { @@ -5768,33 +5957,30 @@ "type": "tidelift" } ], - "time": "2022-05-05T16:51:07+00:00" + "time": "2023-07-06T06:56:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.1.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "02ff5eea2f453731cfbc6bc215e456b781480448" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/02ff5eea2f453731cfbc6bc215e456b781480448", - "reference": "02ff5eea2f453731cfbc6bc215e456b781480448", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5831,7 +6017,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" }, "funding": [ { @@ -5847,20 +6033,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/finder", - "version": "v6.1.3", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709" + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/39696bff2c2970b3779a5cac7bf9f0b88fc2b709", - "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709", + "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", "shasum": "" }, "require": { @@ -5895,7 +6081,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.1.3" + "source": "https://github.com/symfony/finder/tree/v6.3.3" }, "funding": [ { @@ -5911,27 +6097,32 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:42:06+00:00" + "time": "2023-07-31T08:31:44+00:00" }, { "name": "symfony/http-client", - "version": "v6.1.3", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "1ef59920a9cedf223e8564ae8ad7608cbe799b4d" + "reference": "15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/1ef59920a9cedf223e8564ae8ad7608cbe799b4d", - "reference": "1ef59920a9cedf223e8564ae8ad7608cbe799b4d", + "url": "https://api.github.com/repos/symfony/http-client/zipball/15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00", + "reference": "15f9f4bad62bfcbe48b5dedd866f04a08fc7ff00", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-client-contracts": "^3", - "symfony/service-contracts": "^1.0|^2|^3" + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.3" }, "provide": { "php-http/async-client-implementation": "*", @@ -5978,8 +6169,11 @@ ], "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", + "keywords": [ + "http" + ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.1.3" + "source": "https://github.com/symfony/http-client/tree/v6.3.2" }, "funding": [ { @@ -5995,32 +6189,29 @@ "type": "tidelift" } ], - "time": "2022-07-28T13:40:41+00:00" + "time": "2023-07-05T08:41:27+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.1.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "fd038f08c623ab5d22b26e9ba35afe8c79071800" + "reference": "3b66325d0176b4ec826bffab57c9037d759c31fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/fd038f08c623ab5d22b26e9ba35afe8c79071800", - "reference": "fd038f08c623ab5d22b26e9ba35afe8c79071800", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/3b66325d0176b4ec826bffab57c9037d759c31fb", + "reference": "3b66325d0176b4ec826bffab57c9037d759c31fb", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/http-client-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -6060,7 +6251,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.3.0" }, "funding": [ { @@ -6076,35 +6267,40 @@ "type": "tidelift" } ], - "time": "2022-04-22T07:30:54+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.1.3", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b03712c93759a81fc243ecc18ec4637958afebdb" + "reference": "cac1556fdfdf6719668181974104e6fcfa60e844" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b03712c93759a81fc243ecc18ec4637958afebdb", - "reference": "b03712c93759a81fc243ecc18ec4637958afebdb", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cac1556fdfdf6719668181974104e6fcfa60e844", + "reference": "cac1556fdfdf6719668181974104e6fcfa60e844", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.2" }, "require-dev": { - "predis/predis": "~1.0", + "doctrine/dbal": "^2.13.1|^3.0", + "predis/predis": "^1.1|^2.0", "symfony/cache": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^5.4|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, "type": "library", "autoload": { @@ -6132,7 +6328,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.1.3" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.4" }, "funding": [ { @@ -6148,28 +6344,29 @@ "type": "tidelift" } ], - "time": "2022-07-27T15:50:51+00:00" + "time": "2023-08-22T08:20:46+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.1.3", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "0692bc185a1dbb54864686a1fc6785667279da70" + "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/0692bc185a1dbb54864686a1fc6785667279da70", - "reference": "0692bc185a1dbb54864686a1fc6785667279da70", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", + "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/error-handler": "^6.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.3", "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-foundation": "^6.3.4", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -6177,15 +6374,18 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.1", + "symfony/dependency-injection": "<6.3.4", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/mailer": "<5.4", "symfony/messenger": "<5.4", "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", "symfony/validator": "<5.4", + "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, "provide": { @@ -6194,28 +6394,27 @@ "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", "symfony/config": "^6.1", "symfony/console": "^5.4|^6.0", "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.1", + "symfony/dependency-injection": "^6.3.4", "symfony/dom-crawler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/http-client-contracts": "^2.5|^3", "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4.5|^6.0.5", "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^6.3", "symfony/stopwatch": "^5.4|^6.0", "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/translation-contracts": "^2.5|^3", "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", + "symfony/var-exporter": "^6.2", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, "type": "library", "autoload": { "psr-4": { @@ -6242,7 +6441,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.1.3" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.4" }, "funding": [ { @@ -6258,37 +6457,43 @@ "type": "tidelift" } ], - "time": "2022-07-29T12:59:10+00:00" + "time": "2023-08-26T13:54:49+00:00" }, { "name": "symfony/mailer", - "version": "v6.1.3", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "b2db228a93278863d1567f90d7caf26922dbfede" + "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/b2db228a93278863d1567f90d7caf26922dbfede", - "reference": "b2db228a93278863d1567f90d7caf26922dbfede", + "url": "https://api.github.com/repos/symfony/mailer/zipball/7b03d9be1dea29bfec0a6c7b603f5072a4c97435", + "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3", + "egulias/email-validator": "^2.1.10|^3|^4", "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/mime": "^6.2", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/http-kernel": "<5.4" + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/messenger": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/messenger": "^6.2", + "symfony/twig-bridge": "^6.2" }, "type": "library", "autoload": { @@ -6316,7 +6521,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.1.3" + "source": "https://github.com/symfony/mailer/tree/v6.3.0" }, "funding": [ { @@ -6332,24 +6537,25 @@ "type": "tidelift" } ], - "time": "2022-07-27T15:50:51+00:00" + "time": "2023-05-29T12:49:39+00:00" }, { "name": "symfony/mime", - "version": "v6.1.3", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "9c0247994fc6584da8591ba64b2bffaace9df87d" + "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/9c0247994fc6584da8591ba64b2bffaace9df87d", - "reference": "9c0247994fc6584da8591ba64b2bffaace9df87d", + "url": "https://api.github.com/repos/symfony/mime/zipball/9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", + "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -6357,15 +6563,17 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4" + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/property-access": "^5.4|^6.0", "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/serializer": "~6.2.13|^6.3.2" }, "type": "library", "autoload": { @@ -6397,7 +6605,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.1.3" + "source": "https://github.com/symfony/mime/tree/v6.3.3" }, "funding": [ { @@ -6413,25 +6621,25 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:46:29+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.1.0", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4" + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a3016f5442e28386ded73c43a32a5b68586dd1c4", - "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3" + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -6464,7 +6672,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.1.0" + "source": "https://github.com/symfony/options-resolver/tree/v6.3.0" }, "funding": [ { @@ -6480,20 +6688,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2023-05-12T14:21:09+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -6508,7 +6716,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6546,7 +6754,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -6562,20 +6770,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "433d05519ce6990bf3530fba6957499d327395c2" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", - "reference": "433d05519ce6990bf3530fba6957499d327395c2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -6587,7 +6795,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6627,7 +6835,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -6643,20 +6851,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { @@ -6670,7 +6878,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6714,7 +6922,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -6730,20 +6938,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -6755,7 +6963,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6798,7 +7006,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -6814,20 +7022,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -6842,7 +7050,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6881,7 +7089,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -6897,20 +7105,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", "shasum": "" }, "require": { @@ -6919,7 +7127,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6957,7 +7165,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" }, "funding": [ { @@ -6973,20 +7181,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -6995,7 +7203,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7040,7 +7248,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -7056,29 +7264,30 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.26.0", + "name": "symfony/polyfill-php83", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7090,7 +7299,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" + "Symfony\\Polyfill\\Php83\\": "" }, "classmap": [ "Resources/stubs" @@ -7110,7 +7319,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -7119,7 +7328,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" }, "funding": [ { @@ -7135,20 +7344,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-08-16T06:22:46+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23" + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/a41886c1c81dc075a09c71fe6db5b9d68c79de23", - "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", "shasum": "" }, "require": { @@ -7163,7 +7372,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7201,7 +7410,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" }, "funding": [ { @@ -7217,20 +7426,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/process", - "version": "v6.1.3", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "a6506e99cfad7059b1ab5cab395854a0a0c21292" + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/a6506e99cfad7059b1ab5cab395854a0a0c21292", - "reference": "a6506e99cfad7059b1ab5cab395854a0a0c21292", + "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", "shasum": "" }, "require": { @@ -7262,7 +7471,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.1.3" + "source": "https://github.com/symfony/process/tree/v6.3.4" }, "funding": [ { @@ -7278,36 +7487,37 @@ "type": "tidelift" } ], - "time": "2022-06-27T17:24:16+00:00" + "time": "2023-08-07T10:39:22+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v2.1.2", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34" + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", - "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/581ca6067eb62640de5ff08ee1ba6850a0ee472e", + "reference": "581ca6067eb62640de5ff08ee1ba6850a0ee472e", "shasum": "" }, "require": { - "php": ">=7.1", - "psr/http-message": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.5 || ^3.0", + "symfony/http-foundation": "^5.4 || ^6.0" }, "require-dev": { "nyholm/psr7": "^1.1", "psr/log": "^1.1 || ^2 || ^3", - "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", - "symfony/config": "^4.4 || ^5.0 || ^6.0", - "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", - "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.4@dev || ^6.0" + "symfony/browser-kit": "^5.4 || ^6.0", + "symfony/config": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/http-kernel": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.2" }, "suggest": { "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" @@ -7315,7 +7525,7 @@ "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-main": "2.1-dev" + "dev-main": "2.3-dev" } }, "autoload": { @@ -7350,7 +7560,7 @@ ], "support": { "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.2" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.3.1" }, "funding": [ { @@ -7366,46 +7576,41 @@ "type": "tidelift" } ], - "time": "2021-11-05T13:13:39+00:00" + "time": "2023-07-26T11:53:26+00:00" }, { "name": "symfony/routing", - "version": "v6.1.3", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "ef9108b3a88045b7546e808fb404ddb073dd35ea" + "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/ef9108b3a88045b7546e808fb404ddb073dd35ea", - "reference": "ef9108b3a88045b7546e808fb404ddb073dd35ea", + "url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a", + "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", + "symfony/config": "<6.2", "symfony/dependency-injection": "<5.4", "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", + "symfony/config": "^6.2", "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, "type": "library", "autoload": { "psr-4": { @@ -7438,7 +7643,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.1.3" + "source": "https://github.com/symfony/routing/tree/v6.3.3" }, "funding": [ { @@ -7454,20 +7659,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T15:00:40+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.1.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "925e713fe8fcacf6bc05e936edd8dd5441a21239" + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/925e713fe8fcacf6bc05e936edd8dd5441a21239", - "reference": "925e713fe8fcacf6bc05e936edd8dd5441a21239", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", "shasum": "" }, "require": { @@ -7477,13 +7682,10 @@ "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -7523,7 +7725,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" }, "funding": [ { @@ -7539,20 +7741,20 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:18:58+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/string", - "version": "v6.1.3", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f35241f45c30bcd9046af2bb200a7086f70e1d6b" + "reference": "53d1a83225002635bca3482fcbf963001313fb68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f35241f45c30bcd9046af2bb200a7086f70e1d6b", - "reference": "f35241f45c30bcd9046af2bb200a7086f70e1d6b", + "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", + "reference": "53d1a83225002635bca3482fcbf963001313fb68", "shasum": "" }, "require": { @@ -7563,12 +7765,13 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/intl": "^6.2", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", @@ -7608,7 +7811,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.1.3" + "source": "https://github.com/symfony/string/tree/v6.3.2" }, "funding": [ { @@ -7624,32 +7827,35 @@ "type": "tidelift" } ], - "time": "2022-07-27T15:50:51+00:00" + "time": "2023-07-05T08:41:27+00:00" }, { "name": "symfony/translation", - "version": "v6.1.3", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "b042e16087d298d08c1f013ff505d16c12a3b1be" + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/b042e16087d298d08c1f013ff505d16c12a3b1be", - "reference": "b042e16087d298d08c1f013ff505d16c12a3b1be", + "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { "symfony/config": "<5.4", "symfony/console": "<5.4", "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", "symfony/twig-bundle": "<5.4", "symfony/yaml": "<5.4" }, @@ -7657,24 +7863,20 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { + "nikic/php-parser": "^4.13", "psr/log": "^1|^2|^3", "symfony/config": "^5.4|^6.0", "symfony/console": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-client-contracts": "^2.5|^3.0", "symfony/http-kernel": "^5.4|^6.0", "symfony/intl": "^5.4|^6.0", "symfony/polyfill-intl-icu": "^1.21", "symfony/routing": "^5.4|^6.0", - "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, "type": "library", "autoload": { "files": [ @@ -7704,7 +7906,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.1.3" + "source": "https://github.com/symfony/translation/tree/v6.3.3" }, "funding": [ { @@ -7720,32 +7922,29 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:46:29+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.1.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc" + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/606be0f48e05116baef052f7f3abdb345c8e02cc", - "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/translation-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -7785,7 +7984,81 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-30T17:17:10+00:00" + }, + { + "name": "symfony/uid", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", + "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v6.3.0" }, "funding": [ { @@ -7801,42 +8074,38 @@ "type": "tidelift" } ], - "time": "2022-06-27T17:24:16+00:00" + "time": "2023-04-08T07:25:02+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.1.3", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "d5a5e44a2260c5eb5e746bf4f1fbd12ee6ceb427" + "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d5a5e44a2260c5eb5e746bf4f1fbd12ee6ceb427", - "reference": "d5a5e44a2260c5eb5e746bf4f1fbd12ee6ceb427", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2027be14f8ae8eae999ceadebcda5b4909b81d45", + "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", "symfony/console": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", "symfony/process": "^5.4|^6.0", "symfony/uid": "^5.4|^6.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, "bin": [ "Resources/bin/var-dump-server" ], @@ -7873,7 +8142,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.1.3" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.4" }, "funding": [ { @@ -7889,20 +8158,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:46:29+00:00" + "time": "2023-08-24T14:51:05+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", + "version": "2.2.6", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", "shasum": "" }, "require": { @@ -7940,22 +8209,22 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" }, - "time": "2021-12-08T09:12:39+00:00" + "time": "2023-01-03T09:29:04+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.4.1", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", "shasum": "" }, "require": { @@ -7970,15 +8239,19 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" }, "suggest": { "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "5.5-dev" } }, "autoload": { @@ -8010,7 +8283,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" }, "funding": [ { @@ -8022,7 +8295,7 @@ "type": "tidelift" } ], - "time": "2021-12-12T23:22:04+00:00" + "time": "2022-10-16T01:01:54+00:00" }, { "name": "voku/portable-ascii", @@ -8161,7 +8434,7 @@ "version": "6.1.0.180", "dist": { "type": "tar", - "url": "https://github.com/tcprescott/Enimizer/releases/download/2mb-rom/ubuntu.16.04-x64.tar.gz" + "url": "https://github.com/cassidoxa/Enimizer/releases/download/linux-build-0.1.0/linux-x64.tar.gz" }, "type": "library" }, @@ -8176,21 +8449,21 @@ }, { "name": "z3/entrancerandomizer", - "version": "31.1", + "version": "31.2", "source": { "type": "git", "url": "https://github.com/cassidoxa/ALttPEntranceRandomizer", - "reference": "edd251bcad2b03626fd38f0f8b58a36bdcb77530" + "reference": "409bab1f209d135d6646822d586b749a3e9cf98f" }, "type": "library" }, { "name": "z3/randomizer", - "version": "31.1", + "version": "31.2", "source": { "type": "git", - "url": "https://github.com/KatDevsGames/z3randomizer", - "reference": "23ecf41b3365e818385ed819254ecdce5326aaa1" + "url": "https://github.com/cassidoxa/z3randomizer", + "reference": "3a5974b456d75331797f3487366f7d8c37574069" }, "type": "library" } @@ -8198,30 +8471,30 @@ "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -8248,7 +8521,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -8264,77 +8537,24 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "fakerphp/faker", - "version": "v1.20.0", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b" + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/37f751c67a5372d4e26353bd9384bc03744ec77b", - "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", + "php": "^7.4 || ^8.0", "psr/container": "^1.0 || ^2.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" }, @@ -8345,7 +8565,8 @@ "bamarni/composer-bin-plugin": "^1.4.1", "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" }, "suggest": { "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", @@ -8357,7 +8578,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.20-dev" + "dev-main": "v1.21-dev" } }, "autoload": { @@ -8382,22 +8603,22 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.20.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" }, - "time": "2022-07-20T13:12:54+00:00" + "time": "2023-06-12T08:44:38+00:00" }, { "name": "filp/whoops", - "version": "2.14.5", + "version": "2.15.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", "shasum": "" }, "require": { @@ -8447,7 +8668,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.5" + "source": "https://github.com/filp/whoops/tree/2.15.3" }, "funding": [ { @@ -8455,7 +8676,7 @@ "type": "github" } ], - "time": "2022-01-07T12:00:00+00:00" + "time": "2023-07-13T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -8510,38 +8731,40 @@ }, { "name": "mockery/mockery", - "version": "1.5.0", + "version": "1.6.6", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" + "phpunit/phpunit": "^8.5 || ^9.6.10", + "psalm/plugin-phpunit": "^0.18.4", + "symplify/easy-coding-standard": "^11.5.0", + "vimeo/psalm": "^4.30" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Mockery": "library/" + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", @@ -8552,12 +8775,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -8575,10 +8806,13 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2022-01-20T13:18:17+00:00" + "time": "2023-08-09T00:03:52+00:00" }, { "name": "mohammedmanssour/form-request-tester", @@ -8586,12 +8820,12 @@ "source": { "type": "git", "url": "https://github.com/mohammedmanssour/form-request-tester.git", - "reference": "a8b0e937346577d7568faab9dbdcd1a6bdb49bdc" + "reference": "c38a49b72728f4c8452ee41f90a0ed52a75cd446" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mohammedmanssour/form-request-tester/zipball/a8b0e937346577d7568faab9dbdcd1a6bdb49bdc", - "reference": "a8b0e937346577d7568faab9dbdcd1a6bdb49bdc", + "url": "https://api.github.com/repos/mohammedmanssour/form-request-tester/zipball/c38a49b72728f4c8452ee41f90a0ed52a75cd446", + "reference": "c38a49b72728f4c8452ee41f90a0ed52a75cd446", "shasum": "" }, "require-dev": { @@ -8618,22 +8852,22 @@ "description": "a collection of test helpers that help with testing form requests", "support": { "issues": "https://github.com/mohammedmanssour/form-request-tester/issues", - "source": "https://github.com/mohammedmanssour/form-request-tester/tree/1.1" + "source": "https://github.com/mohammedmanssour/form-request-tester/tree/1.2.0" }, - "time": "2020-10-25T08:54:32+00:00" + "time": "2023-08-28T18:50:28+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -8671,7 +8905,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -8679,36 +8913,36 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nunomaduro/collision", - "version": "v6.2.1", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "5f058f7e39278b701e455b3c82ec5298cf001d89" + "reference": "f05978827b9343cba381ca05b8c7deee346b6015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/5f058f7e39278b701e455b3c82ec5298cf001d89", - "reference": "5f058f7e39278b701e455b3c82ec5298cf001d89", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", + "reference": "f05978827b9343cba381ca05b8c7deee346b6015", "shasum": "" }, "require": { - "facade/ignition-contracts": "^1.0.2", "filp/whoops": "^2.14.5", "php": "^8.0.0", "symfony/console": "^6.0.2" }, "require-dev": { "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.7", - "laravel/pint": "^0.2.1", - "nunomaduro/larastan": "^1.0.2", + "laravel/framework": "^9.26.1", + "laravel/pint": "^1.1.1", + "nunomaduro/larastan": "^1.0.3", "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.3.0", - "phpunit/phpunit": "^9.5.11" + "orchestra/testbench": "^7.7", + "phpunit/phpunit": "^9.5.23", + "spatie/ignition": "^1.4.1" }, "type": "library", "extra": { @@ -8767,7 +9001,7 @@ "type": "patreon" } ], - "time": "2022-06-27T16:11:16+00:00" + "time": "2023-01-03T12:54:54+00:00" }, { "name": "phar-io/manifest", @@ -8880,252 +9114,25 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" - }, - "time": "2022-03-15T21:29:03+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, { "name": "phpunit/php-code-coverage", - "version": "9.2.15", + "version": "9.2.27", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b0a88255cb70d52653d80c890bd7f38740ea50d1", + "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.15", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -9140,8 +9147,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -9174,7 +9181,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.27" }, "funding": [ { @@ -9182,7 +9190,7 @@ "type": "github" } ], - "time": "2022-03-07T09:28:20+00:00" + "time": "2023-07-26T13:44:30+00:00" }, { "name": "phpunit/php-file-iterator", @@ -9427,20 +9435,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.21", + "version": "9.6.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" + "reference": "810500e92855eba8a7a5319ae913be2da6f957b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/810500e92855eba8a7a5319ae913be2da6f957b0", + "reference": "810500e92855eba8a7a5319ae913be2da6f957b0", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -9451,7 +9459,6 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", @@ -9459,22 +9466,19 @@ "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -9482,7 +9486,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -9513,7 +9517,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.11" }, "funding": [ { @@ -9523,9 +9528,13 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-06-19T12:14:25+00:00" + "time": "2023-08-19T07:10:56+00:00" }, { "name": "sebastian/cli-parser", @@ -9696,16 +9705,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -9758,7 +9767,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -9766,7 +9775,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -9827,16 +9836,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -9881,7 +9890,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -9889,20 +9898,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -9944,7 +9953,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -9952,20 +9961,20 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -10021,7 +10030,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -10029,20 +10038,20 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "bde739e7565280bda77be70044ac1047bc007e34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", + "reference": "bde739e7565280bda77be70044ac1047bc007e34", "shasum": "" }, "require": { @@ -10085,7 +10094,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" }, "funding": [ { @@ -10093,7 +10102,7 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2023-08-02T09:26:13+00:00" }, { "name": "sebastian/lines-of-code", @@ -10266,16 +10275,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -10314,10 +10323,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -10325,7 +10334,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", @@ -10384,16 +10393,16 @@ }, { "name": "sebastian/type", - "version": "3.0.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { @@ -10405,7 +10414,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -10428,7 +10437,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -10436,7 +10445,7 @@ "type": "github" } ], - "time": "2022-03-15T09:54:48+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -10493,16 +10502,16 @@ }, { "name": "spatie/backtrace", - "version": "1.2.1", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/spatie/backtrace.git", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", - "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", "shasum": "" }, "require": { @@ -10511,6 +10520,7 @@ "require-dev": { "ext-json": "*", "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", "symfony/var-dumper": "^5.1" }, "type": "library", @@ -10538,8 +10548,7 @@ "spatie" ], "support": { - "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.1" + "source": "https://github.com/spatie/backtrace/tree/1.5.3" }, "funding": [ { @@ -10551,26 +10560,27 @@ "type": "other" } ], - "time": "2021-11-09T10:57:15+00:00" + "time": "2023-06-28T12:59:17+00:00" }, { "name": "spatie/flare-client-php", - "version": "1.2.0", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "86a380f5b1ce839af04a08f1c8f2697184cdf23f" + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/86a380f5b1ce839af04a08f1c8f2697184cdf23f", - "reference": "86a380f5b1ce839af04a08f1c8f2697184cdf23f", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5f2c6a7a0d2c1d90c12559dc7828fd942911a544", + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544", "shasum": "" }, "require": { - "illuminate/pipeline": "^8.0|^9.0", + "illuminate/pipeline": "^8.0|^9.0|^10.0", + "nesbot/carbon": "^2.62.1", "php": "^8.0", - "spatie/backtrace": "^1.2", + "spatie/backtrace": "^1.5.2", "symfony/http-foundation": "^5.0|^6.0", "symfony/mime": "^5.2|^6.0", "symfony/process": "^5.2|^6.0", @@ -10587,7 +10597,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1.x-dev" + "dev-main": "1.3.x-dev" } }, "autoload": { @@ -10612,7 +10622,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.2.0" + "source": "https://github.com/spatie/flare-client-php/tree/1.4.2" }, "funding": [ { @@ -10620,43 +10630,51 @@ "type": "github" } ], - "time": "2022-05-16T12:13:39+00:00" + "time": "2023-07-28T08:07:24+00:00" }, { "name": "spatie/ignition", - "version": "1.3.1", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "997363fbcce809b1e55f571997d49017f9c623d9" + "reference": "d92b9a081e99261179b63a858c7a4b01541e7dd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/997363fbcce809b1e55f571997d49017f9c623d9", - "reference": "997363fbcce809b1e55f571997d49017f9c623d9", + "url": "https://api.github.com/repos/spatie/ignition/zipball/d92b9a081e99261179b63a858c7a4b01541e7dd1", + "reference": "d92b9a081e99261179b63a858c7a4b01541e7dd1", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "monolog/monolog": "^2.0", "php": "^8.0", - "spatie/flare-client-php": "^1.1", + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", "symfony/console": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, "require-dev": { + "illuminate/cache": "^9.52", "mockery/mockery": "^1.4", "pestphp/pest": "^1.20", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "symfony/process": "^5.4|^6.0" + "psr/simple-cache-implementation": "*", + "symfony/cache": "^6.0", + "symfony/process": "^5.4|^6.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.2.x-dev" + "dev-main": "1.5.x-dev" } }, "autoload": { @@ -10695,31 +10713,31 @@ "type": "github" } ], - "time": "2022-05-16T13:16:07+00:00" + "time": "2023-08-21T15:06:37+00:00" }, { "name": "spatie/laravel-ignition", - "version": "1.3.1", + "version": "1.6.4", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "fe37a0eafe6ea040804255c70e9808af13314f87" + "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/fe37a0eafe6ea040804255c70e9808af13314f87", - "reference": "fe37a0eafe6ea040804255c70e9808af13314f87", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc", + "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.0", + "illuminate/support": "^8.77|^9.27", "monolog/monolog": "^2.3", "php": "^8.0", "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.2.4", + "spatie/ignition": "^1.4.1", "symfony/console": "^5.0|^6.0", "symfony/var-dumper": "^5.0|^6.0" }, @@ -10785,7 +10803,7 @@ "type": "github" } ], - "time": "2022-06-17T06:28:57+00:00" + "time": "2023-01-03T19:28:04+00:00" }, { "name": "theseer/tokenizer", @@ -10853,5 +10871,5 @@ "platform-overrides": { "php": "8.1" }, - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.3.0" } diff --git a/config/alttp.php b/config/alttp.php index 841030f38..5eb701e1e 100644 --- a/config/alttp.php +++ b/config/alttp.php @@ -22,6 +22,7 @@ ], 'rom' => [ 'genericKeys' => false, + 'hudItemCounter' => false, ], 'spoil' => [ 'BootsLocation' => false, @@ -218,6 +219,7 @@ 'pedestal' => 'Master Sword Pedestal', 'triforce-hunt' => 'Triforce Pieces', 'ganonhunt' => 'Ganonhunt', + 'completionist' => 'Completionist', ], 'tower_open' => [ '0' => 'none', @@ -339,6 +341,7 @@ 'pedestal' => 10, 'triforce-hunt' => 10, 'ganonhunt' => 0, + 'completionist' => 0, ], 'tower_open' => [ '0' => 5, diff --git a/config/sprites.php b/config/sprites.php index 63b1ff8d7..7cf046482 100644 --- a/config/sprites.php +++ b/config/sprites.php @@ -73,6 +73,34 @@ 0 => 'smz3', ], ], + 'agrias.1.zspr' => [ + 'name' => 'Agrias', + 'author' => 'Tux', + 'file' => 'agrias.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Final Fantasy', + 1 => 'Female', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], + 'alcoon.1.zspr' => [ + 'name' => 'Alcoon', + 'author' => 'Wuffie', + 'file' => 'alcoon.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Super Metroid', + 1 => 'Enemy', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'alex.1.zspr' => [ 'name' => 'Alex', 'author' => 'Fish_waffle64', @@ -100,6 +128,21 @@ 0 => 'smz3', ], ], + 'angel.1.zspr' => [ + 'name' => 'Angel', + 'author' => 'NO_Body_The_Dragon', + 'file' => 'angel.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Lilo and Stitch', + 1 => 'Disney', + 2 => 'Female', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'angry-video-game-nerd.1.zspr' => [ 'name' => 'Angry Video Game Nerd', 'author' => 'ABOhiccups', @@ -285,6 +328,19 @@ 1 => 'commercial', ], ], + 'axolotl.1.zspr' => [ + 'name' => 'Axolotl', + 'author' => 'The_Nalox & Chika9516', + 'file' => 'axolotl.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Animal', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'baba.2.zspr' => [ 'name' => 'Baba', 'author' => 'malmo', @@ -373,6 +429,20 @@ 1 => 'commercial', ], ], + 'bavarian-link.1.zspr' => [ + 'name' => 'Bavarian Link', + 'author' => 'The_Nalox', + 'file' => 'bavarian-link.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'ALTTP', + 1 => 'Link', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'beau.1.zspr' => [ 'name' => 'Beau', 'author' => 'Achy', @@ -404,20 +474,6 @@ 0 => 'smz3', ], ], - 'bel.1.zspr' => [ - 'name' => 'Bel', - 'author' => 'Kishi/Krelbel', - 'file' => 'bel.1.zspr', - 'version' => 1, - 'vtversion' => '31.0.10', - 'tags' => [ - 0 => 'Personality', - ], - 'usage' => [ - 0 => 'smz3', - 1 => 'commercial', - ], - ], 'bewp.1.zspr' => [ 'name' => 'Bewp', 'author' => 'Valechec', @@ -627,6 +683,19 @@ 1 => 'commercial', ], ], + 'bomberman.1.zspr' => [ + 'name' => 'Bomberman', + 'author' => 'H.E.L.P.e.R.Mod2', + 'file' => 'bomberman.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Bomberman', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'boo-two.1.zspr' => [ 'name' => 'Boo 2', 'author' => 'Achy', @@ -1599,22 +1668,6 @@ 0 => 'smz3', ], ], - 'demonlink.1.zspr' => [ - 'name' => 'Demon Link', - 'author' => 'Krelbel', - 'file' => 'demonlink.1.zspr', - 'version' => 1, - 'vtversion' => '25', - 'tags' => [ - 0 => 'Link', - 1 => 'Male', - 2 => 'Legend of Zelda', - ], - 'usage' => [ - 0 => 'smz3', - 1 => 'commercial', - ], - ], 'dennsen86.1.zspr' => [ 'name' => 'Dennsen86', 'author' => 'Bonzaibier', @@ -1726,6 +1779,19 @@ 0 => 'smz3', ], ], + 'drak.1.zspr' => [ + 'name' => 'Drak', + 'author' => 'chpringles', + 'file' => 'drak.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Personality', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'drake.2.zspr' => [ 'name' => 'Drake The Dragon', 'author' => 'NO Body The Dragon', @@ -2096,6 +2162,20 @@ 1 => 'commercial', ], ], + 'gametal.1.zspr' => [ + 'name' => 'GaMetal', + 'author' => 'TheRedMage and Mirby', + 'file' => 'gametal.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Personality', + 1 => 'Male', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'ganon.2.zspr' => [ 'name' => 'Mini Ganon', 'author' => 'atth3h3art0fwinter', @@ -2404,6 +2484,20 @@ 0 => 'smz3', ], ], + 'guandar.1.zspr' => [ + 'name' => 'Guandar', + 'author' => 'MoeChicken', + 'file' => 'guandar.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Chrono Trigger', + 1 => 'Enemy', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'guiz.2.zspr' => [ 'name' => 'Guiz', 'author' => 'GuizDP', @@ -2767,6 +2861,19 @@ 0 => 'smz3', ], ], + 'imani.1.zspr' => [ + 'name' => 'Imani', + 'author' => 'Bean', + 'file' => 'imani.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Personality', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'informant_woman.1.zspr' => [ 'name' => 'Informant Woman', 'author' => 'Herowho', @@ -2812,6 +2919,21 @@ 1 => 'commercial', ], ], + 'isabelle.1.zspr' => [ + 'name' => 'Isabelle', + 'author' => 'pholyn', + 'file' => 'isabelle.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Animal Crossing', + 1 => 'Female', + 2 => 'Animal', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'jack-frost.1.zspr' => [ 'name' => 'Jack Frost', 'author' => 'xypotion', @@ -3146,11 +3268,11 @@ 1 => 'commercial', ], ], - 'kite.1.zspr' => [ + 'kite.2.zspr' => [ 'name' => 'Kite', 'author' => 'scoutjd', - 'file' => 'kite.1.zspr', - 'version' => 1, + 'file' => 'kite.2.zspr', + 'version' => 2, 'vtversion' => '31.1', 'tags' => [ 0 => '.hack', @@ -3172,6 +3294,21 @@ 0 => 'smz3', ], ], + 'koopa.1.zspr' => [ + 'name' => 'Koopa', + 'author' => 'Tryford', + 'file' => 'koopa.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Super Mario Bros', + 1 => 'Mario', + 2 => 'Enemy', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'koragi.1.zspr' => [ 'name' => 'Koragi', 'author' => 'Antroyst', @@ -3278,6 +3415,19 @@ 0 => 'Mario', ], ], + 'lanux.1.zspr' => [ + 'name' => 'Lanux', + 'author' => 'Nekoni_Hoozuki', + 'file' => 'lanux.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Personality', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'lapras.1.zspr' => [ 'name' => 'Lapras', 'author' => 'Fish_waffle64', @@ -3538,6 +3688,20 @@ 0 => 'smz3', ], ], + 'lord-hoell.1.zspr' => [ + 'name' => 'Lord Hoell', + 'author' => 'Ochahime', + 'file' => 'lord-hoell.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Personality', + 1 => 'Male', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'lucario.1.zspr' => [ 'name' => 'Lucario', 'author' => 'Achy', @@ -3595,6 +3759,19 @@ 0 => 'smz3', ], ], + 'lugia.1.zspr' => [ + 'name' => 'Lugia', + 'author' => 'Charmander106', + 'file' => 'lugia.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Pokemon', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'luigi.1.zspr' => [ 'name' => 'Luigi', 'author' => 'Achy', @@ -4189,20 +4366,6 @@ 0 => 'smz3', ], ], - 'mog.2.zspr' => [ - 'name' => 'Mog', - 'author' => 'Krelbel', - 'file' => 'mog.2.zspr', - 'version' => 2, - 'vtversion' => '25', - 'tags' => [ - 0 => 'Final Fantasy', - ], - 'usage' => [ - 0 => 'smz3', - 1 => 'commercial', - ], - ], 'momiji.1.zspr' => [ 'name' => 'Momiji Inubashiri', 'author' => 'Ardaceus', @@ -4871,6 +5034,20 @@ 1 => 'commercial', ], ], + 'power-pigg.1.zspr' => [ + 'name' => 'Power Pigg', + 'author' => 'looking4giants', + 'file' => 'power-pigg.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Animal', + 1 => 'Power Piggs of the Dark Age', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'power-ranger.1.zspr' => [ 'name' => 'Power Ranger', 'author' => 'Zeta Xero', @@ -5199,6 +5376,20 @@ 0 => 'smz3', ], ], + 'renoko.1.zspr' => [ + 'name' => 'Renoko', + 'author' => 'CreatureUnknown', + 'file' => 'renoko.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Animal', + 1 => 'Personality', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'reverse-mails.1.zspr' => [ 'name' => 'Reverse Mail Order', 'author' => 'Wild Fang', @@ -5259,6 +5450,20 @@ 1 => 'commercial', ], ], + 'rocky.1.zspr' => [ + 'name' => 'Rocky', + 'author' => 'Charmander106', + 'file' => 'rocky.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Pocky and Rocky', + 1 => 'Animal', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'roronoa-zoro.1.zspr' => [ 'name' => 'Roronoa Zoro', 'author' => 'Drieky', @@ -5536,6 +5741,36 @@ 0 => 'smz3', ], ], + 'sans-carld.1.zspr' => [ + 'name' => 'Sans (Carld923)', + 'author' => 'Carld923', + 'file' => 'sans-carld.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Undertale', + 1 => 'Male', + 2 => 'Sans', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], + 'sans-tux.1.zspr' => [ + 'name' => 'Sans (Tux_66)', + 'author' => 'tux_66', + 'file' => 'sans-tux.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Undertale', + 1 => 'Male', + 2 => 'Sans', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'santahat-link.1.zspr' => [ 'name' => 'Santa Hat Link', 'author' => 'Lexitik', @@ -5766,6 +6001,19 @@ 0 => 'smz3', ], ], + 'shoujo.1.zspr' => [ + 'name' => 'Shoujo', + 'author' => 'JephWahl', + 'file' => 'shoujo.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Personality', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'shuppet.2.zspr' => [ 'name' => 'Shuppet', 'author' => 'kan', @@ -6038,6 +6286,20 @@ 0 => 'smz3', ], ], + 'spiritendo.1.zspr' => [ + 'name' => 'Spiritendo', + 'author' => 'Nekoni_Hoozuki', + 'file' => 'spiritendo.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Animal', + 1 => 'Personality', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'spongebob.1.zspr' => [ 'name' => 'Spongebob Squarepants', 'author' => 'JJ0033LL', @@ -6194,6 +6456,21 @@ 0 => 'smz3', ], ], + 'stitch.1.zspr' => [ + 'name' => 'Stitch', + 'author' => 'NO_Body_The_Dragon', + 'file' => 'stitch.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Disney', + 1 => 'Male', + 2 => 'Lilo and Stitch', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'superbomb.1.zspr' => [ 'name' => 'Super Bomb', 'author' => 'Ninjakauz', @@ -6599,11 +6876,11 @@ 0 => 'smz3', ], ], - 'tunic.1.zspr' => [ + 'tunic.2.zspr' => [ 'name' => 'Tunic', 'author' => 'tosh', - 'file' => 'tunic.1.zspr', - 'version' => 1, + 'file' => 'tunic.2.zspr', + 'version' => 2, 'vtversion' => '31.1', 'tags' => [ 0 => 'Tunic', @@ -6695,6 +6972,20 @@ 1 => 'commercial', ], ], + 'unicorn.1.zspr' => [ + 'name' => 'Unicorn', + 'author' => 'Myric', + 'file' => 'unicorn.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Animal', + 1 => 'Unicorn', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'valeera.1.zspr' => [ 'name' => 'Valeera', 'author' => 'Glan', @@ -6810,6 +7101,19 @@ 0 => 'smz3', ], ], + 'wackerly.1.zspr' => [ + 'name' => 'Wackerly', + 'author' => 'Wackerly', + 'file' => 'wackerly.1.zspr', + 'version' => 1, + 'vtversion' => '31.2', + 'tags' => [ + 0 => 'Personality', + ], + 'usage' => [ + 0 => 'smz3', + ], + ], 'wario.1.zspr' => [ 'name' => 'Wario', 'author' => 'Deagans', diff --git a/database/migrations/2017_06_05_174258_move_patches_to_seperate_table.php b/database/migrations/2017_06_05_174258_move_patches_to_seperate_table.php index f58bd6740..41bad3f87 100644 --- a/database/migrations/2017_06_05_174258_move_patches_to_seperate_table.php +++ b/database/migrations/2017_06_05_174258_move_patches_to_seperate_table.php @@ -30,6 +30,7 @@ public function up() }); Schema::table('seeds', function (Blueprint $table) { + $table->dropIndex(['vt_complexity', 'complexity']); $table->dropColumn(['vt_complexity', 'complexity']); }); @@ -57,6 +58,7 @@ public function down() Schema::table('seeds', function (Blueprint $table) { $table->integer('complexity')->default(0); $table->integer('vt_complexity')->default(0); + $table->index(['vt_complexity', 'complexity']); }); Schema::dropIfExists('patches'); diff --git a/database/migrations/2018_07_19_174259_remove_seed_field.php b/database/migrations/2018_07_19_174259_remove_seed_field.php index be100f604..e5addb7f4 100644 --- a/database/migrations/2018_07_19_174259_remove_seed_field.php +++ b/database/migrations/2018_07_19_174259_remove_seed_field.php @@ -14,6 +14,7 @@ class RemoveSeedField extends Migration public function up() { Schema::table('seeds', function (Blueprint $table) { + $table->dropIndex(['seed']); $table->dropColumn(['seed']); }); } @@ -27,6 +28,7 @@ public function down() { Schema::table('seeds', function (Blueprint $table) { $table->bigInteger('seed'); + $table->index('seed'); }); } } diff --git a/package-lock.json b/package-lock.json index 58b14cf52..703f8ab1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3191,6 +3191,16 @@ "node": ">=0.10.0" } }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bluebird": { "version": "3.7.0", "dev": true, @@ -6033,6 +6043,13 @@ "node": ">=6" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "node_modules/filesize": { "version": "3.6.1", "dev": true, @@ -8426,6 +8443,13 @@ "dev": true, "license": "ISC" }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, "node_modules/nanomatch": { "version": "1.2.13", "dev": true, @@ -16501,6 +16525,16 @@ "version": "1.13.1", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bluebird": { "version": "3.7.0", "dev": true @@ -18546,6 +18580,13 @@ "version": "10.11.0", "dev": true }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "filesize": { "version": "3.6.1", "dev": true @@ -20186,6 +20227,13 @@ "version": "0.0.8", "dev": true }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "dev": true, diff --git a/readme.md b/readme.md index 15c28f48b..364683a39 100644 --- a/readme.md +++ b/readme.md @@ -8,18 +8,19 @@ ## Local Setup ### System Setup -This assumes you're running Ubuntu 20.04 (either natively, or via Windows Subsystem for Linux). +This assumes you're running Ubuntu 22.04 (either natively, or via Windows Subsystem for Linux). Native Windows is not currently supported. Users of either Mac OS or other Linux distributions will need to install the appropriate packages for their system. This version of the randomizer requires version 8.1 of PHP. ``` -sudo apt-get install php8.1 php8.1-bcmath php8.1-dom php8.1-mbstring php8.1-curl -y +sudo apt-get install php8.1 php8.1-bcmath php8.1-xml php8.1-mbstring php8.1-curl php8.1-sqlite3 \ +php8.1-mysql php8.1-cli php8.1-opcache python3 mariadb-server sqlite3 composer -y ``` ### Installing PHP dependencies -You will need [Composer](https://getcomposer.org/) for the Laravel Dependency. Once you have that, run the following +The above step installs the [Composer](https://getcomposer.org/) PHP package manager. Run: ``` $ composer install @@ -27,15 +28,15 @@ $ composer install ## Database setup -Run the following command to create a new config for the app +Run the following command to create a new config for the app: ``` $ cp .env.example .env ``` ### MySQL -Create a new mysql database for the randomizer (see mysql documentation for how to do this, you'll need to install mysql server if it's not installed already) +Create a new mysql database for the randomizer (see mysql documentation.) Modify .env with +appropriate username, password, and database name. Change the db connection to `mysql`. -Then modify .env with appropriate username, password, and database name. Change the db connection to mysql Example: ``` DB_CONNECTION=mysql @@ -47,7 +48,9 @@ DB_PASSWORD=bar ``` ### SQLite -SQLite can also be used too, this might be a better option for a quick setup. +SQLite can also be used too, this might be a better option for a quick setup. The +`php artisan migrate` command below will ask if you want to create this database if +it doesn't exist. ``` DB_CONNECTION=sqlite diff --git a/resources/js/rom.js b/resources/js/rom.js index a65fc7375..880d9c786 100644 --- a/resources/js/rom.js +++ b/resources/js/rom.js @@ -244,11 +244,11 @@ export default class ROM { case "X": return [0x74, 0x9A]; case "Y": return [0x75, 0x9B]; case "Z": return [0x76, 0x9C]; - case "'": return [0x77, 0x9d]; - case ".": return [0xA0, 0xC0]; - case "/": return [0xA2, 0xC2]; - case ":": return [0xA3, 0xC3]; - case "_": return [0xA6, 0xC6]; + case "'": return [0xD9, 0xEC]; + case ".": return [0xDC, 0xEF]; + case "/": return [0xDB, 0xEE]; + case ":": return [0xDD, 0xF0]; + case "_": return [0xDE, 0xF1]; default: return [0x9F, 0x9F]; } }); @@ -355,47 +355,71 @@ export default class ROM { setHeartColor(color_on) { return new Promise(resolve => { - let byte = 0x24; - let file_byte = 0x05; - if (color_on === "random") { - const colorOptions = ["blue", "green", "yellow", "red"]; - color_on = colorOptions[Math.floor(Math.random() * colorOptions.length)]; - }; - - switch (color_on) { - case "blue": - byte = 0x2c; - file_byte = 0x0d; - - break; - case "green": - byte = 0x3c; - file_byte = 0x19; + // Check ROM major version or for vanilla 0xFF value + let version = new Uint8Array(this.arrayBuffer)[0x7FE2]; + if (version <= 0x03 || version == 0xFF) { + let byte = 0x24; + let file_byte = 0x05; + + if (color_on === "random") { + const colorOptions = ["blue", "green", "yellow", "red"]; + color_on = colorOptions[Math.floor(Math.random() * colorOptions.length)]; + }; + + switch (color_on) { + case "blue": + byte = 0x2c; + file_byte = 0x0d; + break; + case "green": + byte = 0x3c; + file_byte = 0x19; + break; + case "yellow": + byte = 0x28; + file_byte = 0x09; + break; + case "red": + default: + // do nothing + } - break; - case "yellow": - byte = 0x28; - file_byte = 0x09; + this.write(0x6fa1e, byte); + this.write(0x6fa20, byte); + this.write(0x6fa22, byte); + this.write(0x6fa24, byte); + this.write(0x6fa26, byte); + this.write(0x6fa28, byte); + this.write(0x6fa2a, byte); + this.write(0x6fa2c, byte); + this.write(0x6fa2e, byte); + this.write(0x6fa30, byte); + this.write(0x65561, file_byte); + } else { + if (color_on === "random") { + const colorOptions = ["blue", "green", "yellow", "red"]; + color_on = colorOptions[Math.floor(Math.random() * colorOptions.length)]; + }; + let byte = 0x00; + + switch (color_on) { + case "blue": + byte = 0x01; + break; + case "green": + byte = 0x02; + break; + case "yellow": + byte = 0x03; + break; + case "red": + default: + } - break; - case "red": - default: - // do nothing + this.write(0x187020, byte); } - this.write(0x6fa1e, byte); - this.write(0x6fa20, byte); - this.write(0x6fa22, byte); - this.write(0x6fa24, byte); - this.write(0x6fa26, byte); - this.write(0x6fa28, byte); - this.write(0x6fa2a, byte); - this.write(0x6fa2c, byte); - this.write(0x6fa2e, byte); - this.write(0x6fa30, byte); - this.write(0x65561, file_byte); - resolve(this); }); } diff --git a/resources/js/store/modules/randomizer.js b/resources/js/store/modules/randomizer.js index 72d5c754d..cb1bb9aa5 100644 --- a/resources/js/store/modules/randomizer.js +++ b/resources/js/store/modules/randomizer.js @@ -186,8 +186,8 @@ export default { if (state.goal.value === "dungeons") { commit("setGanonOpen", "7"); } - if (state.goal.value === "ganonhunt") { - commit("setEntranceShuffle", "none"); + if (state.goal.value === "completionist") { + commit("setAccessibility", "locations"); } }, setGanonOpen({ commit, state }, value) { @@ -220,11 +220,6 @@ export default { commit("setDungeonItems", "standard"); } - // ER doesn't currently support Ganonhunt - if (state.goal.value === "ganonhunt") { - commit("setGoal", "fast_ganon"); - } - if (state.item_pool.value === "crowd_control") { commit("setItemPool", "expert"); } diff --git a/resources/lang/en/options.php b/resources/lang/en/options.php index 172b60891..e37fc38a8 100644 --- a/resources/lang/en/options.php +++ b/resources/lang/en/options.php @@ -174,6 +174,12 @@ 'The Triforce has been shattered into 50 pieces and scattered throughout Hyrule! You must first collect 40 of the 50 pieces, and only then will Ganon be vulnerable to your attacks! Like Fast Ganon, the hole leading to Ganon has been made permanently accessible. This goal is not available if entrances are randomized.', ], ], + [ + 'header' => __('randomizer.goal.options.completionist'), + 'content' => [ + 'This setting requires collection of all items and full completion of all dungeons. This includes the 3 Light World pendant dungeons, the 7 Dark World crystal dungeons, Agahnim’s Tower and Ganon’s Tower.', + ], + ], ], ], 'tower_open' => [ diff --git a/resources/lang/en/randomizer.php b/resources/lang/en/randomizer.php index d5ce93720..a81e35d8a 100644 --- a/resources/lang/en/randomizer.php +++ b/resources/lang/en/randomizer.php @@ -39,7 +39,7 @@ 'options' => [ 'items' => '100% Inventory', 'locations' => '100% Locations', - 'none' => 'Beatable', + 'none' => 'Beatable Only', ], ], 'glitches_required' => [ @@ -62,6 +62,7 @@ 'pedestal' => 'Master Sword Pedestal', 'triforce-hunt' => 'Triforce Pieces', 'ganonhunt' => 'Ganonhunt', + 'completionist' => 'Completionist', ], ], 'tower_open' => [ diff --git a/resources/sass/_sprites.scss b/resources/sass/_sprites.scss index 0038a5c77..7f5d3ca4c 100644 --- a/resources/sass/_sprites.scss +++ b/resources/sass/_sprites.scss @@ -3,7 +3,7 @@ width: 16px; height: 24px; vertical-align: bottom; - background-image: url("https://alttpr-assets.s3.us-east-2.amazonaws.com/sprites.31.1.png"); + background-image: url("https://alttpr-assets.s3.us-east-2.amazonaws.com/sprites.31.2.png"); } .icon-custom-Random { @@ -11,1966 +11,2054 @@ } .icon-custom-Link { - background-position: percentage((1 - 492)/ 491) 0; + background-position: percentage((1 - 514)/ 513) 0; } .icon-custom-Abigail { - background-position: percentage((2 - 492)/ 491) 0; + background-position: percentage((2 - 514)/ 513) 0; } .icon-custom-Adol { - background-position: percentage((3 - 492)/ 491) 0; + background-position: percentage((3 - 514)/ 513) 0; } .icon-custom-Adventure2600 { - background-position: percentage((4 - 492)/ 491) 0; + background-position: percentage((4 - 514)/ 513) 0; } .icon-custom-Aggretsuko { - background-position: percentage((5 - 492)/ 491) 0; + background-position: percentage((5 - 514)/ 513) 0; +} + +.icon-custom-Agrias { + background-position: percentage((6 - 514)/ 513) 0; +} + +.icon-custom-Alcoon { + background-position: percentage((7 - 514)/ 513) 0; } .icon-custom-Alex { - background-position: percentage((6 - 492)/ 491) 0; + background-position: percentage((8 - 514)/ 513) 0; } .icon-custom-Alice { - background-position: percentage((7 - 492)/ 491) 0; + background-position: percentage((9 - 514)/ 513) 0; +} + +.icon-custom-Angel { + background-position: percentage((10 - 514)/ 513) 0; } .icon-custom-AngryVideoGameNerd { - background-position: percentage((8 - 492)/ 491) 0; + background-position: percentage((11 - 514)/ 513) 0; } .icon-custom-AnnaLavellan { - background-position: percentage((9 - 492)/ 491) 0; + background-position: percentage((12 - 514)/ 513) 0; } .icon-custom-Arcane { - background-position: percentage((10 - 492)/ 491) 0; + background-position: percentage((13 - 514)/ 513) 0; } .icon-custom-Archen { - background-position: percentage((11 - 492)/ 491) 0; + background-position: percentage((14 - 514)/ 513) 0; } .icon-custom-ArcticArtemisFox { - background-position: percentage((12 - 492)/ 491) 0; + background-position: percentage((15 - 514)/ 513) 0; } .icon-custom-ArcturusChusky { - background-position: percentage((13 - 492)/ 491) 0; + background-position: percentage((16 - 514)/ 513) 0; } .icon-custom-Aria { - background-position: percentage((14 - 492)/ 491) 0; + background-position: percentage((17 - 514)/ 513) 0; } .icon-custom-ArkNoCape { - background-position: percentage((15 - 492)/ 491) 0; + background-position: percentage((18 - 514)/ 513) 0; } .icon-custom-ArkCape { - background-position: percentage((16 - 492)/ 491) 0; + background-position: percentage((19 - 514)/ 513) 0; } .icon-custom-Arrghus { - background-position: percentage((17 - 492)/ 491) 0; + background-position: percentage((20 - 514)/ 513) 0; } .icon-custom-Astor { - background-position: percentage((18 - 492)/ 491) 0; + background-position: percentage((21 - 514)/ 513) 0; } .icon-custom-Astronaut { - background-position: percentage((19 - 492)/ 491) 0; + background-position: percentage((22 - 514)/ 513) 0; } .icon-custom-Asuna { - background-position: percentage((20 - 492)/ 491) 0; + background-position: percentage((23 - 514)/ 513) 0; +} + +.icon-custom-Axolotl { + background-position: percentage((24 - 514)/ 513) 0; } .icon-custom-Baba { - background-position: percentage((21 - 492)/ 491) 0; + background-position: percentage((25 - 514)/ 513) 0; } .icon-custom-BabyFro { - background-position: percentage((22 - 492)/ 491) 0; + background-position: percentage((26 - 514)/ 513) 0; } .icon-custom-Badeline { - background-position: percentage((23 - 492)/ 491) 0; + background-position: percentage((27 - 514)/ 513) 0; } .icon-custom-BananasInPyjamas { - background-position: percentage((24 - 492)/ 491) 0; + background-position: percentage((28 - 514)/ 513) 0; } .icon-custom-Bandit { - background-position: percentage((25 - 492)/ 491) 0; + background-position: percentage((29 - 514)/ 513) 0; } .icon-custom-Batman { - background-position: percentage((26 - 492)/ 491) 0; + background-position: percentage((30 - 514)/ 513) 0; } -.icon-custom-Beau { - background-position: percentage((27 - 492)/ 491) 0; +.icon-custom-BavarianLink { + background-position: percentage((31 - 514)/ 513) 0; } -.icon-custom-Bee { - background-position: percentage((28 - 492)/ 491) 0; +.icon-custom-Beau { + background-position: percentage((32 - 514)/ 513) 0; } -.icon-custom-Bel { - background-position: percentage((29 - 492)/ 491) 0; +.icon-custom-Bee { + background-position: percentage((33 - 514)/ 513) 0; } .icon-custom-Bewp { - background-position: percentage((30 - 492)/ 491) 0; + background-position: percentage((34 - 514)/ 513) 0; } .icon-custom-BigKey { - background-position: percentage((31 - 492)/ 491) 0; + background-position: percentage((35 - 514)/ 513) 0; } .icon-custom-BirbofParadise { - background-position: percentage((32 - 492)/ 491) 0; + background-position: percentage((36 - 514)/ 513) 0; } .icon-custom-Birb { - background-position: percentage((33 - 492)/ 491) 0; + background-position: percentage((37 - 514)/ 513) 0; } .icon-custom-Birdfruit { - background-position: percentage((34 - 492)/ 491) 0; + background-position: percentage((38 - 514)/ 513) 0; } .icon-custom-Birdo { - background-position: percentage((35 - 492)/ 491) 0; + background-position: percentage((39 - 514)/ 513) 0; } .icon-custom-BlackMage { - background-position: percentage((36 - 492)/ 491) 0; + background-position: percentage((40 - 514)/ 513) 0; } .icon-custom-BlacksmithLink { - background-position: percentage((37 - 492)/ 491) 0; + background-position: percentage((41 - 514)/ 513) 0; } .icon-custom-Blazer { - background-position: percentage((38 - 492)/ 491) 0; + background-position: percentage((42 - 514)/ 513) 0; } .icon-custom-Blossom { - background-position: percentage((39 - 492)/ 491) 0; + background-position: percentage((43 - 514)/ 513) 0; } .icon-custom-Blue { - background-position: percentage((40 - 492)/ 491) 0; + background-position: percentage((44 - 514)/ 513) 0; } .icon-custom-Bob { - background-position: percentage((41 - 492)/ 491) 0; + background-position: percentage((45 - 514)/ 513) 0; } .icon-custom-BobRoss { - background-position: percentage((42 - 492)/ 491) 0; + background-position: percentage((46 - 514)/ 513) 0; } .icon-custom-BocotheChocobo { - background-position: percentage((43 - 492)/ 491) 0; + background-position: percentage((47 - 514)/ 513) 0; +} + +.icon-custom-Bomberman { + background-position: percentage((48 - 514)/ 513) 0; } .icon-custom-Boo2 { - background-position: percentage((44 - 492)/ 491) 0; + background-position: percentage((49 - 514)/ 513) 0; } .icon-custom-Boo { - background-position: percentage((45 - 492)/ 491) 0; + background-position: percentage((50 - 514)/ 513) 0; } .icon-custom-BottleoGoo { - background-position: percentage((46 - 492)/ 491) 0; + background-position: percentage((51 - 514)/ 513) 0; } .icon-custom-BotWLink { - background-position: percentage((47 - 492)/ 491) 0; + background-position: percentage((52 - 514)/ 513) 0; } .icon-custom-BotWZelda { - background-position: percentage((48 - 492)/ 491) 0; + background-position: percentage((53 - 514)/ 513) 0; } .icon-custom-Bowser { - background-position: percentage((49 - 492)/ 491) 0; + background-position: percentage((54 - 514)/ 513) 0; } .icon-custom-Bowsette { - background-position: percentage((50 - 492)/ 491) 0; + background-position: percentage((55 - 514)/ 513) 0; } .icon-custom-BowsetteRed { - background-position: percentage((51 - 492)/ 491) 0; + background-position: percentage((56 - 514)/ 513) 0; } .icon-custom-Branch { - background-position: percentage((52 - 492)/ 491) 0; + background-position: percentage((57 - 514)/ 513) 0; } .icon-custom-Brian { - background-position: percentage((53 - 492)/ 491) 0; + background-position: percentage((58 - 514)/ 513) 0; } .icon-custom-Broccoli { - background-position: percentage((54 - 492)/ 491) 0; + background-position: percentage((59 - 514)/ 513) 0; } .icon-custom-Bronzor { - background-position: percentage((55 - 492)/ 491) 0; + background-position: percentage((60 - 514)/ 513) 0; } .icon-custom-BSBoy { - background-position: percentage((56 - 492)/ 491) 0; + background-position: percentage((61 - 514)/ 513) 0; } .icon-custom-BSGirl { - background-position: percentage((57 - 492)/ 491) 0; + background-position: percentage((62 - 514)/ 513) 0; } .icon-custom-Bubblen { - background-position: percentage((58 - 492)/ 491) 0; + background-position: percentage((63 - 514)/ 513) 0; } .icon-custom-Bubbles { - background-position: percentage((59 - 492)/ 491) 0; + background-position: percentage((64 - 514)/ 513) 0; } .icon-custom-BulletBill { - background-position: percentage((60 - 492)/ 491) 0; + background-position: percentage((65 - 514)/ 513) 0; } .icon-custom-Buttercup { - background-position: percentage((61 - 492)/ 491) 0; + background-position: percentage((66 - 514)/ 513) 0; } .icon-custom-Cactuar { - background-position: percentage((62 - 492)/ 491) 0; + background-position: percentage((67 - 514)/ 513) 0; } .icon-custom-Cadence { - background-position: percentage((63 - 492)/ 491) 0; + background-position: percentage((68 - 514)/ 513) 0; } .icon-custom-CaptainNovolin { - background-position: percentage((64 - 492)/ 491) 0; + background-position: percentage((69 - 514)/ 513) 0; } .icon-custom-CarlSagan42 { - background-position: percentage((65 - 492)/ 491) 0; + background-position: percentage((70 - 514)/ 513) 0; } .icon-custom-CasualZelda { - background-position: percentage((66 - 492)/ 491) 0; + background-position: percentage((71 - 514)/ 513) 0; } .icon-custom-MarvintheCat { - background-position: percentage((67 - 492)/ 491) 0; + background-position: percentage((72 - 514)/ 513) 0; } .icon-custom-CatBoo { - background-position: percentage((68 - 492)/ 491) 0; + background-position: percentage((73 - 514)/ 513) 0; } .icon-custom-CatgirlHidari { - background-position: percentage((69 - 492)/ 491) 0; + background-position: percentage((74 - 514)/ 513) 0; } .icon-custom-CD-iLink { - background-position: percentage((70 - 492)/ 491) 0; + background-position: percentage((75 - 514)/ 513) 0; } .icon-custom-Celes { - background-position: percentage((71 - 492)/ 491) 0; + background-position: percentage((76 - 514)/ 513) 0; } .icon-custom-CentaurEnos { - background-position: percentage((72 - 492)/ 491) 0; + background-position: percentage((77 - 514)/ 513) 0; } .icon-custom-Charizard { - background-position: percentage((73 - 492)/ 491) 0; + background-position: percentage((78 - 514)/ 513) 0; } .icon-custom-CheepCheep { - background-position: percentage((74 - 492)/ 491) 0; + background-position: percentage((79 - 514)/ 513) 0; } .icon-custom-ChefPepper { - background-position: percentage((75 - 492)/ 491) 0; + background-position: percentage((80 - 514)/ 513) 0; } .icon-custom-Chibity { - background-position: percentage((76 - 492)/ 491) 0; + background-position: percentage((81 - 514)/ 513) 0; } .icon-custom-Chrizzz { - background-position: percentage((77 - 492)/ 491) 0; + background-position: percentage((82 - 514)/ 513) 0; } .icon-custom-Cinna { - background-position: percentage((78 - 492)/ 491) 0; + background-position: percentage((83 - 514)/ 513) 0; } .icon-custom-Cirno { - background-position: percentage((79 - 492)/ 491) 0; + background-position: percentage((84 - 514)/ 513) 0; } .icon-custom-Clifford { - background-position: percentage((80 - 492)/ 491) 0; + background-position: percentage((85 - 514)/ 513) 0; } .icon-custom-Clippy { - background-position: percentage((81 - 492)/ 491) 0; + background-position: percentage((86 - 514)/ 513) 0; } .icon-custom-Cloud { - background-position: percentage((82 - 492)/ 491) 0; + background-position: percentage((87 - 514)/ 513) 0; } .icon-custom-Clyde { - background-position: percentage((83 - 492)/ 491) 0; + background-position: percentage((88 - 514)/ 513) 0; } .icon-custom-ConkerNeo { - background-position: percentage((84 - 492)/ 491) 0; + background-position: percentage((89 - 514)/ 513) 0; } .icon-custom-Conker { - background-position: percentage((85 - 492)/ 491) 0; + background-position: percentage((90 - 514)/ 513) 0; } .icon-custom-Cool90sBun { - background-position: percentage((86 - 492)/ 491) 0; + background-position: percentage((91 - 514)/ 513) 0; } .icon-custom-Cool90sLink { - background-position: percentage((87 - 492)/ 491) 0; + background-position: percentage((92 - 514)/ 513) 0; } .icon-custom-Cornelius { - background-position: percentage((88 - 492)/ 491) 0; + background-position: percentage((93 - 514)/ 513) 0; } .icon-custom-Corona { - background-position: percentage((89 - 492)/ 491) 0; + background-position: percentage((94 - 514)/ 513) 0; } .icon-custom-CousinKnol { - background-position: percentage((90 - 492)/ 491) 0; + background-position: percentage((95 - 514)/ 513) 0; } .icon-custom-Crewmate { - background-position: percentage((91 - 492)/ 491) 0; + background-position: percentage((96 - 514)/ 513) 0; } .icon-custom-Crono { - background-position: percentage((92 - 492)/ 491) 0; + background-position: percentage((97 - 514)/ 513) 0; } .icon-custom-Cucco { - background-position: percentage((93 - 492)/ 491) 0; + background-position: percentage((98 - 514)/ 513) 0; } .icon-custom-Cursor { - background-position: percentage((94 - 492)/ 491) 0; + background-position: percentage((99 - 514)/ 513) 0; } .icon-custom-DOwls { - background-position: percentage((95 - 492)/ 491) 0; + background-position: percentage((100 - 514)/ 513) 0; } .icon-custom-DarkLinkZelda2 { - background-position: percentage((96 - 492)/ 491) 0; + background-position: percentage((101 - 514)/ 513) 0; } .icon-custom-DarkMatter { - background-position: percentage((97 - 492)/ 491) 0; + background-position: percentage((102 - 514)/ 513) 0; } .icon-custom-DarkPanda { - background-position: percentage((98 - 492)/ 491) 0; + background-position: percentage((103 - 514)/ 513) 0; } .icon-custom-DarkBoy { - background-position: percentage((99 - 492)/ 491) 0; + background-position: percentage((104 - 514)/ 513) 0; } .icon-custom-DarkGirl { - background-position: percentage((100 - 492)/ 491) 0; + background-position: percentage((105 - 514)/ 513) 0; } .icon-custom-DarkLinkTunic { - background-position: percentage((101 - 492)/ 491) 0; + background-position: percentage((106 - 514)/ 513) 0; } .icon-custom-DarkLink { - background-position: percentage((102 - 492)/ 491) 0; + background-position: percentage((107 - 514)/ 513) 0; } .icon-custom-DarkSwatchy { - background-position: percentage((103 - 492)/ 491) 0; + background-position: percentage((108 - 514)/ 513) 0; } .icon-custom-DarkZelda { - background-position: percentage((104 - 492)/ 491) 0; + background-position: percentage((109 - 514)/ 513) 0; } .icon-custom-DarkZora { - background-position: percentage((105 - 492)/ 491) 0; + background-position: percentage((110 - 514)/ 513) 0; } .icon-custom-DeadpoolMythic { - background-position: percentage((106 - 492)/ 491) 0; + background-position: percentage((111 - 514)/ 513) 0; } .icon-custom-DeadpoolSirCzah { - background-position: percentage((107 - 492)/ 491) 0; + background-position: percentage((112 - 514)/ 513) 0; } .icon-custom-Deadrock { - background-position: percentage((108 - 492)/ 491) 0; + background-position: percentage((113 - 514)/ 513) 0; } .icon-custom-Decidueye { - background-position: percentage((109 - 492)/ 491) 0; + background-position: percentage((114 - 514)/ 513) 0; } .icon-custom-Dekar { - background-position: percentage((110 - 492)/ 491) 0; -} - -.icon-custom-DemonLink { - background-position: percentage((111 - 492)/ 491) 0; + background-position: percentage((115 - 514)/ 513) 0; } .icon-custom-Dennsen86 { - background-position: percentage((112 - 492)/ 491) 0; + background-position: percentage((116 - 514)/ 513) 0; } .icon-custom-DiddyKong { - background-position: percentage((113 - 492)/ 491) 0; + background-position: percentage((117 - 514)/ 513) 0; } .icon-custom-DigDug { - background-position: percentage((114 - 492)/ 491) 0; + background-position: percentage((118 - 514)/ 513) 0; } .icon-custom-Dipper { - background-position: percentage((115 - 492)/ 491) 0; + background-position: percentage((119 - 514)/ 513) 0; } .icon-custom-Discord { - background-position: percentage((116 - 492)/ 491) 0; + background-position: percentage((120 - 514)/ 513) 0; } .icon-custom-Dot_lvl { - background-position: percentage((117 - 492)/ 491) 0; + background-position: percentage((121 - 514)/ 513) 0; } .icon-custom-Dragonair { - background-position: percentage((118 - 492)/ 491) 0; + background-position: percentage((122 - 514)/ 513) 0; } .icon-custom-Dragonite { - background-position: percentage((119 - 492)/ 491) 0; + background-position: percentage((123 - 514)/ 513) 0; +} + +.icon-custom-Drak { + background-position: percentage((124 - 514)/ 513) 0; } .icon-custom-DrakeTheDragon { - background-position: percentage((120 - 492)/ 491) 0; + background-position: percentage((125 - 514)/ 513) 0; } .icon-custom-Drawcia { - background-position: percentage((121 - 492)/ 491) 0; + background-position: percentage((126 - 514)/ 513) 0; } .icon-custom-Eevee { - background-position: percentage((122 - 492)/ 491) 0; + background-position: percentage((127 - 514)/ 513) 0; } .icon-custom-Eggplant { - background-position: percentage((123 - 492)/ 491) 0; + background-position: percentage((128 - 514)/ 513) 0; } .icon-custom-Eirika { - background-position: percentage((124 - 492)/ 491) 0; + background-position: percentage((129 - 514)/ 513) 0; } .icon-custom-Elfilin { - background-position: percentage((125 - 492)/ 491) 0; + background-position: percentage((130 - 514)/ 513) 0; } .icon-custom-EmaSkye { - background-position: percentage((126 - 492)/ 491) 0; + background-position: percentage((131 - 514)/ 513) 0; } .icon-custom-EmoSaru { - background-position: percentage((127 - 492)/ 491) 0; + background-position: percentage((132 - 514)/ 513) 0; } .icon-custom-Espeon { - background-position: percentage((128 - 492)/ 491) 0; + background-position: percentage((133 - 514)/ 513) 0; } .icon-custom-Ezlo { - background-position: percentage((129 - 492)/ 491) 0; + background-position: percentage((134 - 514)/ 513) 0; } .icon-custom-Fi { - background-position: percentage((130 - 492)/ 491) 0; + background-position: percentage((135 - 514)/ 513) 0; } .icon-custom-FierceDeityLink { - background-position: percentage((131 - 492)/ 491) 0; + background-position: percentage((136 - 514)/ 513) 0; } .icon-custom-FinnMerten { - background-position: percentage((132 - 492)/ 491) 0; + background-position: percentage((137 - 514)/ 513) 0; } .icon-custom-FinnyBear { - background-position: percentage((133 - 492)/ 491) 0; + background-position: percentage((138 - 514)/ 513) 0; } .icon-custom-FloodgateFish { - background-position: percentage((134 - 492)/ 491) 0; + background-position: percentage((139 - 514)/ 513) 0; } .icon-custom-Flareon { - background-position: percentage((135 - 492)/ 491) 0; + background-position: percentage((140 - 514)/ 513) 0; } .icon-custom-FlavorGuy { - background-position: percentage((136 - 492)/ 491) 0; + background-position: percentage((141 - 514)/ 513) 0; } .icon-custom-FourSwordsLink { - background-position: percentage((137 - 492)/ 491) 0; + background-position: percentage((142 - 514)/ 513) 0; } .icon-custom-FoxLink { - background-position: percentage((138 - 492)/ 491) 0; + background-position: percentage((143 - 514)/ 513) 0; } .icon-custom-Fransen { - background-position: percentage((139 - 492)/ 491) 0; + background-position: percentage((144 - 514)/ 513) 0; } .icon-custom-FreyaCrescent { - background-position: percentage((140 - 492)/ 491) 0; + background-position: percentage((145 - 514)/ 513) 0; } .icon-custom-Frisk { - background-position: percentage((141 - 492)/ 491) 0; + background-position: percentage((146 - 514)/ 513) 0; } .icon-custom-FrogLink { - background-position: percentage((142 - 492)/ 491) 0; + background-position: percentage((147 - 514)/ 513) 0; } .icon-custom-Fujin { - background-position: percentage((143 - 492)/ 491) 0; + background-position: percentage((148 - 514)/ 513) 0; } .icon-custom-FutureTrunks { - background-position: percentage((144 - 492)/ 491) 0; + background-position: percentage((149 - 514)/ 513) 0; } .icon-custom-Gamer { - background-position: percentage((145 - 492)/ 491) 0; + background-position: percentage((150 - 514)/ 513) 0; +} + +.icon-custom-GaMetal { + background-position: percentage((151 - 514)/ 513) 0; } .icon-custom-MiniGanon { - background-position: percentage((146 - 492)/ 491) 0; + background-position: percentage((152 - 514)/ 513) 0; } .icon-custom-Ganondorf { - background-position: percentage((147 - 492)/ 491) 0; + background-position: percentage((153 - 514)/ 513) 0; } .icon-custom-Garfield { - background-position: percentage((148 - 492)/ 491) 0; + background-position: percentage((154 - 514)/ 513) 0; } .icon-custom-Garnet { - background-position: percentage((149 - 492)/ 491) 0; + background-position: percentage((155 - 514)/ 513) 0; } .icon-custom-GaroMaster { - background-position: percentage((150 - 492)/ 491) 0; + background-position: percentage((156 - 514)/ 513) 0; } .icon-custom-GBCLink { - background-position: percentage((151 - 492)/ 491) 0; + background-position: percentage((157 - 514)/ 513) 0; } .icon-custom-Geno { - background-position: percentage((152 - 492)/ 491) 0; + background-position: percentage((158 - 514)/ 513) 0; } .icon-custom-GinaLestrade { - background-position: percentage((153 - 492)/ 491) 0; + background-position: percentage((159 - 514)/ 513) 0; } .icon-custom-GliitchWiitch { - background-position: percentage((154 - 492)/ 491) 0; + background-position: percentage((160 - 514)/ 513) 0; } .icon-custom-GloveColorLink { - background-position: percentage((155 - 492)/ 491) 0; + background-position: percentage((161 - 514)/ 513) 0; } .icon-custom-GoMode { - background-position: percentage((156 - 492)/ 491) 0; + background-position: percentage((162 - 514)/ 513) 0; } .icon-custom-Gobli { - background-position: percentage((157 - 492)/ 491) 0; + background-position: percentage((163 - 514)/ 513) 0; } .icon-custom-Goemon { - background-position: percentage((158 - 492)/ 491) 0; + background-position: percentage((164 - 514)/ 513) 0; } .icon-custom-Gooey { - background-position: percentage((159 - 492)/ 491) 0; + background-position: percentage((165 - 514)/ 513) 0; } .icon-custom-Goomba { - background-position: percentage((160 - 492)/ 491) 0; + background-position: percentage((166 - 514)/ 513) 0; } .icon-custom-Goose { - background-position: percentage((161 - 492)/ 491) 0; + background-position: percentage((167 - 514)/ 513) 0; } .icon-custom-GraalianNoob { - background-position: percentage((162 - 492)/ 491) 0; + background-position: percentage((168 - 514)/ 513) 0; } .icon-custom-GrandPOOBear { - background-position: percentage((163 - 492)/ 491) 0; + background-position: percentage((169 - 514)/ 513) 0; } .icon-custom-Gretis { - background-position: percentage((164 - 492)/ 491) 0; + background-position: percentage((170 - 514)/ 513) 0; } .icon-custom-Growlithe { - background-position: percentage((165 - 492)/ 491) 0; + background-position: percentage((171 - 514)/ 513) 0; } .icon-custom-GruncleStan { - background-position: percentage((166 - 492)/ 491) 0; + background-position: percentage((172 - 514)/ 513) 0; +} + +.icon-custom-Guandar { + background-position: percentage((173 - 514)/ 513) 0; } .icon-custom-Guiz { - background-position: percentage((167 - 492)/ 491) 0; + background-position: percentage((174 - 514)/ 513) 0; } .icon-custom-HainztheBlahaj { - background-position: percentage((168 - 492)/ 491) 0; + background-position: percentage((175 - 514)/ 513) 0; } .icon-custom-Hamtaro { - background-position: percentage((169 - 492)/ 491) 0; + background-position: percentage((176 - 514)/ 513) 0; } .icon-custom-Hanna { - background-position: percentage((170 - 492)/ 491) 0; + background-position: percentage((177 - 514)/ 513) 0; } .icon-custom-HardhatBeetle { - background-position: percentage((171 - 492)/ 491) 0; + background-position: percentage((178 - 514)/ 513) 0; } .icon-custom-HatKid { - background-position: percentage((172 - 492)/ 491) 0; + background-position: percentage((179 - 514)/ 513) 0; } .icon-custom-HeadLink { - background-position: percentage((173 - 492)/ 491) 0; + background-position: percentage((180 - 514)/ 513) 0; } .icon-custom-HeadlessLink { - background-position: percentage((174 - 492)/ 491) 0; + background-position: percentage((181 - 514)/ 513) 0; } .icon-custom-Heem { - background-position: percentage((175 - 492)/ 491) 0; + background-position: percentage((182 - 514)/ 513) 0; } .icon-custom-HelloKitty { - background-position: percentage((176 - 492)/ 491) 0; + background-position: percentage((183 - 514)/ 513) 0; } .icon-custom-HeroofAwakening { - background-position: percentage((177 - 492)/ 491) 0; + background-position: percentage((184 - 514)/ 513) 0; } .icon-custom-HeroofHyrule { - background-position: percentage((178 - 492)/ 491) 0; + background-position: percentage((185 - 514)/ 513) 0; } .icon-custom-HintTile { - background-position: percentage((179 - 492)/ 491) 0; + background-position: percentage((186 - 514)/ 513) 0; } .icon-custom-HoarderBush { - background-position: percentage((180 - 492)/ 491) 0; + background-position: percentage((187 - 514)/ 513) 0; } .icon-custom-HoarderPot { - background-position: percentage((181 - 492)/ 491) 0; + background-position: percentage((188 - 514)/ 513) 0; } .icon-custom-HoarderRock { - background-position: percentage((182 - 492)/ 491) 0; + background-position: percentage((189 - 514)/ 513) 0; } .icon-custom-HollowKnightMalmoWinter { - background-position: percentage((183 - 492)/ 491) 0; + background-position: percentage((190 - 514)/ 513) 0; } .icon-custom-HollowKnight { - background-position: percentage((184 - 492)/ 491) 0; + background-position: percentage((191 - 514)/ 513) 0; } .icon-custom-HomerSimpson { - background-position: percentage((185 - 492)/ 491) 0; + background-position: percentage((192 - 514)/ 513) 0; } .icon-custom-Hornet { - background-position: percentage((186 - 492)/ 491) 0; + background-position: percentage((193 - 514)/ 513) 0; } .icon-custom-Horseman { - background-position: percentage((187 - 492)/ 491) 0; + background-position: percentage((194 - 514)/ 513) 0; } .icon-custom-Hotdog { - background-position: percentage((188 - 492)/ 491) 0; + background-position: percentage((195 - 514)/ 513) 0; } .icon-custom-HyruleKnight { - background-position: percentage((189 - 492)/ 491) 0; + background-position: percentage((196 - 514)/ 513) 0; } .icon-custom-iBazly { - background-position: percentage((190 - 492)/ 491) 0; + background-position: percentage((197 - 514)/ 513) 0; } .icon-custom-Ignignokt { - background-position: percentage((191 - 492)/ 491) 0; + background-position: percentage((198 - 514)/ 513) 0; +} + +.icon-custom-Imani { + background-position: percentage((199 - 514)/ 513) 0; } .icon-custom-InformantWoman { - background-position: percentage((192 - 492)/ 491) 0; + background-position: percentage((200 - 514)/ 513) 0; } .icon-custom-Inkling { - background-position: percentage((193 - 492)/ 491) 0; + background-position: percentage((201 - 514)/ 513) 0; } .icon-custom-InvisibleLink { - background-position: percentage((194 - 492)/ 491) 0; + background-position: percentage((202 - 514)/ 513) 0; +} + +.icon-custom-Isabelle { + background-position: percentage((203 - 514)/ 513) 0; } .icon-custom-JackFrost { - background-position: percentage((195 - 492)/ 491) 0; + background-position: percentage((204 - 514)/ 513) 0; } .icon-custom-JasonFrudnick { - background-position: percentage((196 - 492)/ 491) 0; + background-position: percentage((205 - 514)/ 513) 0; } .icon-custom-Jasp { - background-position: percentage((197 - 492)/ 491) 0; + background-position: percentage((206 - 514)/ 513) 0; } .icon-custom-Jogurt { - background-position: percentage((198 - 492)/ 491) 0; + background-position: percentage((207 - 514)/ 513) 0; } .icon-custom-Jolteon { - background-position: percentage((199 - 492)/ 491) 0; + background-position: percentage((208 - 514)/ 513) 0; } .icon-custom-JoshTriangles { - background-position: percentage((200 - 492)/ 491) 0; + background-position: percentage((209 - 514)/ 513) 0; } .icon-custom-JusteBelmont { - background-position: percentage((201 - 492)/ 491) 0; + background-position: percentage((210 - 514)/ 513) 0; } .icon-custom-Juzcook { - background-position: percentage((202 - 492)/ 491) 0; + background-position: percentage((211 - 514)/ 513) 0; } .icon-custom-Kaguya { - background-position: percentage((203 - 492)/ 491) 0; + background-position: percentage((212 - 514)/ 513) 0; } .icon-custom-Kain { - background-position: percentage((204 - 492)/ 491) 0; + background-position: percentage((213 - 514)/ 513) 0; } .icon-custom-Kakyoin { - background-position: percentage((205 - 492)/ 491) 0; + background-position: percentage((214 - 514)/ 513) 0; } .icon-custom-Katsura { - background-position: percentage((206 - 492)/ 491) 0; + background-position: percentage((215 - 514)/ 513) 0; } .icon-custom-Kecleon { - background-position: percentage((207 - 492)/ 491) 0; + background-position: percentage((216 - 514)/ 513) 0; } .icon-custom-Kefka { - background-position: percentage((208 - 492)/ 491) 0; + background-position: percentage((217 - 514)/ 513) 0; } .icon-custom-KennyMcCormick { - background-position: percentage((209 - 492)/ 491) 0; + background-position: percentage((218 - 514)/ 513) 0; } .icon-custom-Ketchup { - background-position: percentage((210 - 492)/ 491) 0; + background-position: percentage((219 - 514)/ 513) 0; } .icon-custom-Kholdstare { - background-position: percentage((211 - 492)/ 491) 0; + background-position: percentage((220 - 514)/ 513) 0; } .icon-custom-KingGothalion { - background-position: percentage((212 - 492)/ 491) 0; + background-position: percentage((221 - 514)/ 513) 0; } .icon-custom-KingGraham { - background-position: percentage((213 - 492)/ 491) 0; + background-position: percentage((222 - 514)/ 513) 0; } .icon-custom-Kinu { - background-position: percentage((214 - 492)/ 491) 0; + background-position: percentage((223 - 514)/ 513) 0; } .icon-custom-Kira { - background-position: percentage((215 - 492)/ 491) 0; + background-position: percentage((224 - 514)/ 513) 0; } .icon-custom-KirbyDreamland3 { - background-position: percentage((216 - 492)/ 491) 0; + background-position: percentage((225 - 514)/ 513) 0; } .icon-custom-Kirby { - background-position: percentage((217 - 492)/ 491) 0; + background-position: percentage((226 - 514)/ 513) 0; } .icon-custom-Kite { - background-position: percentage((218 - 492)/ 491) 0; + background-position: percentage((227 - 514)/ 513) 0; } .icon-custom-Koda { - background-position: percentage((219 - 492)/ 491) 0; + background-position: percentage((228 - 514)/ 513) 0; +} + +.icon-custom-Koopa { + background-position: percentage((229 - 514)/ 513) 0; } .icon-custom-Koragi { - background-position: percentage((220 - 492)/ 491) 0; + background-position: percentage((230 - 514)/ 513) 0; } .icon-custom-Kore8 { - background-position: percentage((221 - 492)/ 491) 0; + background-position: percentage((231 - 514)/ 513) 0; } .icon-custom-Korok { - background-position: percentage((222 - 492)/ 491) 0; + background-position: percentage((232 - 514)/ 513) 0; } .icon-custom-Kris { - background-position: percentage((223 - 492)/ 491) 0; + background-position: percentage((233 - 514)/ 513) 0; } .icon-custom-Krissy { - background-position: percentage((224 - 492)/ 491) 0; + background-position: percentage((234 - 514)/ 513) 0; } .icon-custom-Kriv { - background-position: percentage((225 - 492)/ 491) 0; + background-position: percentage((235 - 514)/ 513) 0; } .icon-custom-Kromb { - background-position: percentage((226 - 492)/ 491) 0; + background-position: percentage((236 - 514)/ 513) 0; } .icon-custom-Lakitu { - background-position: percentage((227 - 492)/ 491) 0; + background-position: percentage((237 - 514)/ 513) 0; +} + +.icon-custom-Lanux { + background-position: percentage((238 - 514)/ 513) 0; } .icon-custom-Lapras { - background-position: percentage((228 - 492)/ 491) 0; + background-position: percentage((239 - 514)/ 513) 0; } .icon-custom-Latias { - background-position: percentage((229 - 492)/ 491) 0; + background-position: percentage((240 - 514)/ 513) 0; } .icon-custom-Latios { - background-position: percentage((230 - 492)/ 491) 0; + background-position: percentage((241 - 514)/ 513) 0; } .icon-custom-Leafeon { - background-position: percentage((231 - 492)/ 491) 0; + background-position: percentage((242 - 514)/ 513) 0; } .icon-custom-LeagueMascot { - background-position: percentage((232 - 492)/ 491) 0; + background-position: percentage((243 - 514)/ 513) 0; } .icon-custom-Leongar { - background-position: percentage((233 - 492)/ 491) 0; + background-position: percentage((244 - 514)/ 513) 0; } .icon-custom-Lest { - background-position: percentage((234 - 492)/ 491) 0; + background-position: percentage((245 - 514)/ 513) 0; } .icon-custom-Lestat { - background-position: percentage((235 - 492)/ 491) 0; + background-position: percentage((246 - 514)/ 513) 0; } .icon-custom-Lily { - background-position: percentage((236 - 492)/ 491) 0; + background-position: percentage((247 - 514)/ 513) 0; } .icon-custom-Linja { - background-position: percentage((237 - 492)/ 491) 0; + background-position: percentage((248 - 514)/ 513) 0; } .icon-custom-LinkRedrawn { - background-position: percentage((238 - 492)/ 491) 0; + background-position: percentage((249 - 514)/ 513) 0; } .icon-custom-LinkZelda1 { - background-position: percentage((239 - 492)/ 491) 0; + background-position: percentage((250 - 514)/ 513) 0; } .icon-custom-HatColorLink { - background-position: percentage((240 - 492)/ 491) 0; + background-position: percentage((251 - 514)/ 513) 0; } .icon-custom-TunicColorLink { - background-position: percentage((241 - 492)/ 491) 0; + background-position: percentage((252 - 514)/ 513) 0; } .icon-custom-LittleHylian { - background-position: percentage((242 - 492)/ 491) 0; + background-position: percentage((253 - 514)/ 513) 0; } .icon-custom-Pony { - background-position: percentage((243 - 492)/ 491) 0; + background-position: percentage((254 - 514)/ 513) 0; } .icon-custom-Locke { - background-position: percentage((244 - 492)/ 491) 0; + background-position: percentage((255 - 514)/ 513) 0; } .icon-custom-FigaroMerchant { - background-position: percentage((245 - 492)/ 491) 0; + background-position: percentage((256 - 514)/ 513) 0; +} + +.icon-custom-LordHoell { + background-position: percentage((257 - 514)/ 513) 0; } .icon-custom-Lucario { - background-position: percentage((246 - 492)/ 491) 0; + background-position: percentage((258 - 514)/ 513) 0; } .icon-custom-Lucas { - background-position: percentage((247 - 492)/ 491) 0; + background-position: percentage((259 - 514)/ 513) 0; } .icon-custom-LuckwurstJoe { - background-position: percentage((248 - 492)/ 491) 0; + background-position: percentage((260 - 514)/ 513) 0; } .icon-custom-Luffy { - background-position: percentage((249 - 492)/ 491) 0; + background-position: percentage((261 - 514)/ 513) 0; +} + +.icon-custom-Lugia { + background-position: percentage((262 - 514)/ 513) 0; } .icon-custom-Luigi { - background-position: percentage((250 - 492)/ 491) 0; + background-position: percentage((263 - 514)/ 513) 0; } .icon-custom-Lumberjack { - background-position: percentage((251 - 492)/ 491) 0; + background-position: percentage((264 - 514)/ 513) 0; } .icon-custom-LunaMaindo { - background-position: percentage((252 - 492)/ 491) 0; + background-position: percentage((265 - 514)/ 513) 0; } .icon-custom-Lycanroc { - background-position: percentage((253 - 492)/ 491) 0; + background-position: percentage((266 - 514)/ 513) 0; } .icon-custom-Lynea { - background-position: percentage((254 - 492)/ 491) 0; + background-position: percentage((267 - 514)/ 513) 0; } .icon-custom-LynelBotW { - background-position: percentage((255 - 492)/ 491) 0; + background-position: percentage((268 - 514)/ 513) 0; } .icon-custom-Mad_Tears { - background-position: percentage((256 - 492)/ 491) 0; + background-position: percentage((269 - 514)/ 513) 0; } .icon-custom-Madeline { - background-position: percentage((257 - 492)/ 491) 0; + background-position: percentage((270 - 514)/ 513) 0; } .icon-custom-Magus { - background-position: percentage((258 - 492)/ 491) 0; + background-position: percentage((271 - 514)/ 513) 0; } .icon-custom-Maiden { - background-position: percentage((259 - 492)/ 491) 0; + background-position: percentage((272 - 514)/ 513) 0; } .icon-custom-MajorasMask { - background-position: percentage((260 - 492)/ 491) 0; + background-position: percentage((273 - 514)/ 513) 0; } .icon-custom-MallowCat { - background-position: percentage((261 - 492)/ 491) 0; + background-position: percentage((274 - 514)/ 513) 0; } .icon-custom-MangaLink { - background-position: percentage((262 - 492)/ 491) 0; + background-position: percentage((275 - 514)/ 513) 0; } .icon-custom-MapleQueen { - background-position: percentage((263 - 492)/ 491) 0; + background-position: percentage((276 - 514)/ 513) 0; } .icon-custom-Marin { - background-position: percentage((264 - 492)/ 491) 0; + background-position: percentage((277 - 514)/ 513) 0; } .icon-custom-MarioClassic { - background-position: percentage((265 - 492)/ 491) 0; + background-position: percentage((278 - 514)/ 513) 0; } .icon-custom-TanookiMario { - background-position: percentage((266 - 492)/ 491) 0; + background-position: percentage((279 - 514)/ 513) 0; } .icon-custom-MarioandCappy { - background-position: percentage((267 - 492)/ 491) 0; + background-position: percentage((280 - 514)/ 513) 0; } .icon-custom-MarisaKirisame { - background-position: percentage((268 - 492)/ 491) 0; + background-position: percentage((281 - 514)/ 513) 0; } .icon-custom-Matthias { - background-position: percentage((269 - 492)/ 491) 0; + background-position: percentage((282 - 514)/ 513) 0; } .icon-custom-Meatwad { - background-position: percentage((270 - 492)/ 491) 0; + background-position: percentage((283 - 514)/ 513) 0; } .icon-custom-Medallions { - background-position: percentage((271 - 492)/ 491) 0; + background-position: percentage((284 - 514)/ 513) 0; } .icon-custom-Medli { - background-position: percentage((272 - 492)/ 491) 0; + background-position: percentage((285 - 514)/ 513) 0; } .icon-custom-MegamanX { - background-position: percentage((273 - 492)/ 491) 0; + background-position: percentage((286 - 514)/ 513) 0; } .icon-custom-MegamanX2 { - background-position: percentage((274 - 492)/ 491) 0; + background-position: percentage((287 - 514)/ 513) 0; } .icon-custom-MegaManClassic { - background-position: percentage((275 - 492)/ 491) 0; + background-position: percentage((288 - 514)/ 513) 0; } .icon-custom-MetaKnight { - background-position: percentage((276 - 492)/ 491) 0; + background-position: percentage((289 - 514)/ 513) 0; } .icon-custom-Meteion { - background-position: percentage((277 - 492)/ 491) 0; + background-position: percentage((290 - 514)/ 513) 0; } .icon-custom-BabyMetroid { - background-position: percentage((278 - 492)/ 491) 0; + background-position: percentage((291 - 514)/ 513) 0; } .icon-custom-MewLp { - background-position: percentage((279 - 492)/ 491) 0; + background-position: percentage((292 - 514)/ 513) 0; } .icon-custom-MikeJones { - background-position: percentage((280 - 492)/ 491) 0; + background-position: percentage((293 - 514)/ 513) 0; } .icon-custom-Milly { - background-position: percentage((281 - 492)/ 491) 0; + background-position: percentage((294 - 514)/ 513) 0; } .icon-custom-Mimic { - background-position: percentage((282 - 492)/ 491) 0; + background-position: percentage((295 - 514)/ 513) 0; } .icon-custom-Mimikyu { - background-position: percentage((283 - 492)/ 491) 0; + background-position: percentage((296 - 514)/ 513) 0; } .icon-custom-MinishLink { - background-position: percentage((284 - 492)/ 491) 0; + background-position: percentage((297 - 514)/ 513) 0; } .icon-custom-MinishCapLink { - background-position: percentage((285 - 492)/ 491) 0; + background-position: percentage((298 - 514)/ 513) 0; } .icon-custom-Mipha { - background-position: percentage((286 - 492)/ 491) 0; + background-position: percentage((299 - 514)/ 513) 0; } .icon-custom-missingno { - background-position: percentage((287 - 492)/ 491) 0; + background-position: percentage((300 - 514)/ 513) 0; } .icon-custom-Moblin { - background-position: percentage((288 - 492)/ 491) 0; + background-position: percentage((301 - 514)/ 513) 0; } .icon-custom-ModernLink { - background-position: percentage((289 - 492)/ 491) 0; + background-position: percentage((302 - 514)/ 513) 0; } .icon-custom-MoeChicken { - background-position: percentage((290 - 492)/ 491) 0; -} - -.icon-custom-Mog { - background-position: percentage((291 - 492)/ 491) 0; + background-position: percentage((303 - 514)/ 513) 0; } .icon-custom-MomijiInubashiri { - background-position: percentage((292 - 492)/ 491) 0; + background-position: percentage((304 - 514)/ 513) 0; } .icon-custom-Moosh { - background-position: percentage((293 - 492)/ 491) 0; + background-position: percentage((305 - 514)/ 513) 0; } .icon-custom-Mouse { - background-position: percentage((294 - 492)/ 491) 0; + background-position: percentage((306 - 514)/ 513) 0; } .icon-custom-MsPaintDog { - background-position: percentage((295 - 492)/ 491) 0; + background-position: percentage((307 - 514)/ 513) 0; } .icon-custom-PowerUpwithPrideMushroom { - background-position: percentage((296 - 492)/ 491) 0; + background-position: percentage((308 - 514)/ 513) 0; } .icon-custom-NatureLink { - background-position: percentage((297 - 492)/ 491) 0; + background-position: percentage((309 - 514)/ 513) 0; } .icon-custom-Navi { - background-position: percentage((298 - 492)/ 491) 0; + background-position: percentage((310 - 514)/ 513) 0; } .icon-custom-Navirou { - background-position: percentage((299 - 492)/ 491) 0; + background-position: percentage((311 - 514)/ 513) 0; } .icon-custom-Nayada { - background-position: percentage((300 - 492)/ 491) 0; + background-position: percentage((312 - 514)/ 513) 0; } .icon-custom-Necrosky90 { - background-position: percentage((301 - 492)/ 491) 0; + background-position: percentage((313 - 514)/ 513) 0; } .icon-custom-NedFlanders { - background-position: percentage((302 - 492)/ 491) 0; + background-position: percentage((314 - 514)/ 513) 0; } .icon-custom-NegativeLink { - background-position: percentage((303 - 492)/ 491) 0; + background-position: percentage((315 - 514)/ 513) 0; } .icon-custom-NekoniHoozuki { - background-position: percentage((304 - 492)/ 491) 0; + background-position: percentage((316 - 514)/ 513) 0; } .icon-custom-Neosad { - background-position: percentage((305 - 492)/ 491) 0; + background-position: percentage((317 - 514)/ 513) 0; } .icon-custom-Nepgear { - background-position: percentage((306 - 492)/ 491) 0; + background-position: percentage((318 - 514)/ 513) 0; } .icon-custom-Neptune { - background-position: percentage((307 - 492)/ 491) 0; + background-position: percentage((319 - 514)/ 513) 0; } .icon-custom-NESLink { - background-position: percentage((308 - 492)/ 491) 0; + background-position: percentage((320 - 514)/ 513) 0; } .icon-custom-Ness { - background-position: percentage((309 - 492)/ 491) 0; + background-position: percentage((321 - 514)/ 513) 0; } .icon-custom-Nia { - background-position: percentage((310 - 492)/ 491) 0; + background-position: percentage((322 - 514)/ 513) 0; } .icon-custom-Niddraig { - background-position: percentage((311 - 492)/ 491) 0; + background-position: percentage((323 - 514)/ 513) 0; } .icon-custom-Niko { - background-position: percentage((312 - 492)/ 491) 0; + background-position: percentage((324 - 514)/ 513) 0; } .icon-custom-Ninten { - background-position: percentage((313 - 492)/ 491) 0; + background-position: percentage((325 - 514)/ 513) 0; } .icon-custom-Octorok { - background-position: percentage((314 - 492)/ 491) 0; + background-position: percentage((326 - 514)/ 513) 0; } .icon-custom-OldeMan { - background-position: percentage((315 - 492)/ 491) 0; + background-position: percentage((327 - 514)/ 513) 0; } .icon-custom-OldMan { - background-position: percentage((316 - 492)/ 491) 0; + background-position: percentage((328 - 514)/ 513) 0; } .icon-custom-Ori { - background-position: percentage((317 - 492)/ 491) 0; + background-position: percentage((329 - 514)/ 513) 0; } .icon-custom-OutlineLink { - background-position: percentage((318 - 492)/ 491) 0; + background-position: percentage((330 - 514)/ 513) 0; } .icon-custom-PaperMario { - background-position: percentage((319 - 492)/ 491) 0; + background-position: percentage((331 - 514)/ 513) 0; } .icon-custom-ParallelWorldsLink { - background-position: percentage((320 - 492)/ 491) 0; + background-position: percentage((332 - 514)/ 513) 0; } .icon-custom-Patia { - background-position: percentage((321 - 492)/ 491) 0; + background-position: percentage((333 - 514)/ 513) 0; } .icon-custom-PaultheWoodsman { - background-position: percentage((322 - 492)/ 491) 0; + background-position: percentage((334 - 514)/ 513) 0; } .icon-custom-Paula { - background-position: percentage((323 - 492)/ 491) 0; + background-position: percentage((335 - 514)/ 513) 0; } .icon-custom-PrincessPeach { - background-position: percentage((324 - 492)/ 491) 0; + background-position: percentage((336 - 514)/ 513) 0; } .icon-custom-PenguinLink { - background-position: percentage((325 - 492)/ 491) 0; + background-position: percentage((337 - 514)/ 513) 0; } .icon-custom-Pete { - background-position: percentage((326 - 492)/ 491) 0; + background-position: percentage((338 - 514)/ 513) 0; } .icon-custom-PhoenixWright { - background-position: percentage((327 - 492)/ 491) 0; + background-position: percentage((339 - 514)/ 513) 0; } .icon-custom-Pikachu { - background-position: percentage((328 - 492)/ 491) 0; + background-position: percentage((340 - 514)/ 513) 0; } .icon-custom-PinkRibbonLink { - background-position: percentage((329 - 492)/ 491) 0; + background-position: percentage((341 - 514)/ 513) 0; } .icon-custom-PiranhaPlant { - background-position: percentage((330 - 492)/ 491) 0; + background-position: percentage((342 - 514)/ 513) 0; } .icon-custom-PlagueKnight { - background-position: percentage((331 - 492)/ 491) 0; + background-position: percentage((343 - 514)/ 513) 0; } .icon-custom-Plouni { - background-position: percentage((332 - 492)/ 491) 0; + background-position: percentage((344 - 514)/ 513) 0; } .icon-custom-PoCLink { - background-position: percentage((333 - 492)/ 491) 0; + background-position: percentage((345 - 514)/ 513) 0; } .icon-custom-Pokey { - background-position: percentage((334 - 492)/ 491) 0; + background-position: percentage((346 - 514)/ 513) 0; } .icon-custom-Popoi { - background-position: percentage((335 - 492)/ 491) 0; + background-position: percentage((347 - 514)/ 513) 0; } .icon-custom-Poppy { - background-position: percentage((336 - 492)/ 491) 0; + background-position: percentage((348 - 514)/ 513) 0; } .icon-custom-PorgKnight { - background-position: percentage((337 - 492)/ 491) 0; + background-position: percentage((349 - 514)/ 513) 0; +} + +.icon-custom-PowerPigg { + background-position: percentage((350 - 514)/ 513) 0; } .icon-custom-PowerRanger { - background-position: percentage((338 - 492)/ 491) 0; + background-position: percentage((351 - 514)/ 513) 0; } .icon-custom-PowerpuffGirl { - background-position: percentage((339 - 492)/ 491) 0; + background-position: percentage((352 - 514)/ 513) 0; } .icon-custom-PrideLink { - background-position: percentage((340 - 492)/ 491) 0; + background-position: percentage((353 - 514)/ 513) 0; } .icon-custom-Primm { - background-position: percentage((341 - 492)/ 491) 0; + background-position: percentage((354 - 514)/ 513) 0; } .icon-custom-PrincessBubblegum { - background-position: percentage((342 - 492)/ 491) 0; + background-position: percentage((355 - 514)/ 513) 0; } .icon-custom-ProfRendererGrizzleton { - background-position: percentage((343 - 492)/ 491) 0; + background-position: percentage((356 - 514)/ 513) 0; } .icon-custom-TheProfessor { - background-position: percentage((344 - 492)/ 491) 0; + background-position: percentage((357 - 514)/ 513) 0; } .icon-custom-Protogen { - background-position: percentage((345 - 492)/ 491) 0; + background-position: percentage((358 - 514)/ 513) 0; } .icon-custom-Psyduck { - background-position: percentage((346 - 492)/ 491) 0; + background-position: percentage((359 - 514)/ 513) 0; } .icon-custom-ThePug { - background-position: percentage((347 - 492)/ 491) 0; + background-position: percentage((360 - 514)/ 513) 0; } .icon-custom-PurpleChest { - background-position: percentage((348 - 492)/ 491) 0; + background-position: percentage((361 - 514)/ 513) 0; } .icon-custom-Pyro { - background-position: percentage((349 - 492)/ 491) 0; + background-position: percentage((362 - 514)/ 513) 0; } .icon-custom-QuadBanger { - background-position: percentage((350 - 492)/ 491) 0; + background-position: percentage((363 - 514)/ 513) 0; } .icon-custom-RainbowLink { - background-position: percentage((351 - 492)/ 491) 0; + background-position: percentage((364 - 514)/ 513) 0; } .icon-custom-Randi { - background-position: percentage((352 - 492)/ 491) 0; + background-position: percentage((365 - 514)/ 513) 0; } .icon-custom-Rash { - background-position: percentage((353 - 492)/ 491) 0; + background-position: percentage((366 - 514)/ 513) 0; } .icon-custom-Rat { - background-position: percentage((354 - 492)/ 491) 0; + background-position: percentage((367 - 514)/ 513) 0; } .icon-custom-RedMage { - background-position: percentage((355 - 492)/ 491) 0; + background-position: percentage((368 - 514)/ 513) 0; } .icon-custom-Red { - background-position: percentage((356 - 492)/ 491) 0; + background-position: percentage((369 - 514)/ 513) 0; } .icon-custom-ReimuHakureiHoxNorf { - background-position: percentage((357 - 492)/ 491) 0; + background-position: percentage((370 - 514)/ 513) 0; } .icon-custom-ReimuHakureiRickyofKokiri { - background-position: percentage((358 - 492)/ 491) 0; + background-position: percentage((371 - 514)/ 513) 0; } .icon-custom-Remeer { - background-position: percentage((359 - 492)/ 491) 0; + background-position: percentage((372 - 514)/ 513) 0; } .icon-custom-RemusRBlack { - background-position: percentage((360 - 492)/ 491) 0; + background-position: percentage((373 - 514)/ 513) 0; +} + +.icon-custom-Renoko { + background-position: percentage((374 - 514)/ 513) 0; } .icon-custom-ReverseMailOrder { - background-position: percentage((361 - 492)/ 491) 0; + background-position: percentage((375 - 514)/ 513) 0; } .icon-custom-Rick { - background-position: percentage((362 - 492)/ 491) 0; + background-position: percentage((376 - 514)/ 513) 0; } .icon-custom-Robo-Link9000 { - background-position: percentage((363 - 492)/ 491) 0; + background-position: percentage((377 - 514)/ 513) 0; } .icon-custom-Rocko { - background-position: percentage((364 - 492)/ 491) 0; + background-position: percentage((378 - 514)/ 513) 0; +} + +.icon-custom-Rocky { + background-position: percentage((379 - 514)/ 513) 0; } .icon-custom-RoronoaZoro { - background-position: percentage((365 - 492)/ 491) 0; + background-position: percentage((380 - 514)/ 513) 0; } .icon-custom-Rottytops { - background-position: percentage((366 - 492)/ 491) 0; + background-position: percentage((381 - 514)/ 513) 0; } .icon-custom-Rover { - background-position: percentage((367 - 492)/ 491) 0; + background-position: percentage((382 - 514)/ 513) 0; } .icon-custom-RoyKoopa { - background-position: percentage((368 - 492)/ 491) 0; + background-position: percentage((383 - 514)/ 513) 0; } .icon-custom-Rozalyndis { - background-position: percentage((369 - 492)/ 491) 0; + background-position: percentage((384 - 514)/ 513) 0; } .icon-custom-Rumia { - background-position: percentage((370 - 492)/ 491) 0; + background-position: percentage((385 - 514)/ 513) 0; } .icon-custom-Rydia { - background-position: percentage((371 - 492)/ 491) 0; + background-position: percentage((386 - 514)/ 513) 0; } .icon-custom-Ryu { - background-position: percentage((372 - 492)/ 491) 0; + background-position: percentage((387 - 514)/ 513) 0; } .icon-custom-SailorJupiter { - background-position: percentage((373 - 492)/ 491) 0; + background-position: percentage((388 - 514)/ 513) 0; } .icon-custom-SailorMars { - background-position: percentage((374 - 492)/ 491) 0; + background-position: percentage((389 - 514)/ 513) 0; } .icon-custom-SailorMercury { - background-position: percentage((375 - 492)/ 491) 0; + background-position: percentage((390 - 514)/ 513) 0; } .icon-custom-SailorSaturn { - background-position: percentage((376 - 492)/ 491) 0; + background-position: percentage((391 - 514)/ 513) 0; } .icon-custom-SailorVenus { - background-position: percentage((377 - 492)/ 491) 0; + background-position: percentage((392 - 514)/ 513) 0; } .icon-custom-SailorMoon { - background-position: percentage((378 - 492)/ 491) 0; + background-position: percentage((393 - 514)/ 513) 0; } .icon-custom-Saitama { - background-position: percentage((379 - 492)/ 491) 0; + background-position: percentage((394 - 514)/ 513) 0; } .icon-custom-Samurott { - background-position: percentage((380 - 492)/ 491) 0; + background-position: percentage((395 - 514)/ 513) 0; } .icon-custom-SamusSuperMetroid { - background-position: percentage((381 - 492)/ 491) 0; + background-position: percentage((396 - 514)/ 513) 0; } .icon-custom-Samus { - background-position: percentage((382 - 492)/ 491) 0; + background-position: percentage((397 - 514)/ 513) 0; } .icon-custom-SamusClassic { - background-position: percentage((383 - 492)/ 491) 0; + background-position: percentage((398 - 514)/ 513) 0; +} + +.icon-custom-SansCarld923 { + background-position: percentage((399 - 514)/ 513) 0; +} + +.icon-custom-SansTux_66 { + background-position: percentage((400 - 514)/ 513) 0; } .icon-custom-SantaHatLink { - background-position: percentage((384 - 492)/ 491) 0; + background-position: percentage((401 - 514)/ 513) 0; } .icon-custom-SantaLink { - background-position: percentage((385 - 492)/ 491) 0; + background-position: percentage((402 - 514)/ 513) 0; } .icon-custom-Saria { - background-position: percentage((386 - 492)/ 491) 0; + background-position: percentage((403 - 514)/ 513) 0; } .icon-custom-Scholar { - background-position: percentage((387 - 492)/ 491) 0; + background-position: percentage((404 - 514)/ 513) 0; } .icon-custom-Selan { - background-position: percentage((388 - 492)/ 491) 0; + background-position: percentage((405 - 514)/ 513) 0; } .icon-custom-SevenS1ns { - background-position: percentage((389 - 492)/ 491) 0; + background-position: percentage((406 - 514)/ 513) 0; } .icon-custom-Shade { - background-position: percentage((390 - 492)/ 491) 0; + background-position: percentage((407 - 514)/ 513) 0; } .icon-custom-Shadow { - background-position: percentage((391 - 492)/ 491) 0; + background-position: percentage((408 - 514)/ 513) 0; } .icon-custom-ShadowSakura { - background-position: percentage((392 - 492)/ 491) 0; + background-position: percentage((409 - 514)/ 513) 0; } .icon-custom-LoveShak { - background-position: percentage((393 - 492)/ 491) 0; + background-position: percentage((410 - 514)/ 513) 0; } .icon-custom-Shaktool { - background-position: percentage((394 - 492)/ 491) 0; + background-position: percentage((411 - 514)/ 513) 0; } .icon-custom-Shantae { - background-position: percentage((395 - 492)/ 491) 0; + background-position: percentage((412 - 514)/ 513) 0; } .icon-custom-Shiluna { - background-position: percentage((396 - 492)/ 491) 0; + background-position: percentage((413 - 514)/ 513) 0; } .icon-custom-Shin { - background-position: percentage((397 - 492)/ 491) 0; + background-position: percentage((414 - 514)/ 513) 0; } .icon-custom-ShinmyoumaruSukuna { - background-position: percentage((398 - 492)/ 491) 0; + background-position: percentage((415 - 514)/ 513) 0; } .icon-custom-ShopkeeperLink { - background-position: percentage((399 - 492)/ 491) 0; + background-position: percentage((416 - 514)/ 513) 0; +} + +.icon-custom-Shoujo { + background-position: percentage((417 - 514)/ 513) 0; } .icon-custom-Shuppet { - background-position: percentage((400 - 492)/ 491) 0; + background-position: percentage((418 - 514)/ 513) 0; } .icon-custom-ShyGal { - background-position: percentage((401 - 492)/ 491) 0; + background-position: percentage((419 - 514)/ 513) 0; } .icon-custom-ShyGuy { - background-position: percentage((402 - 492)/ 491) 0; + background-position: percentage((420 - 514)/ 513) 0; } .icon-custom-SighnWaive { - background-position: percentage((403 - 492)/ 491) 0; + background-position: percentage((421 - 514)/ 513) 0; } .icon-custom-Skunk { - background-position: percentage((404 - 492)/ 491) 0; + background-position: percentage((422 - 514)/ 513) 0; } .icon-custom-Slime { - background-position: percentage((405 - 492)/ 491) 0; + background-position: percentage((423 - 514)/ 513) 0; } .icon-custom-Slowpoke { - background-position: percentage((406 - 492)/ 491) 0; + background-position: percentage((424 - 514)/ 513) 0; } .icon-custom-SNESController { - background-position: percentage((407 - 492)/ 491) 0; + background-position: percentage((425 - 514)/ 513) 0; } .icon-custom-Sobble { - background-position: percentage((408 - 492)/ 491) 0; + background-position: percentage((426 - 514)/ 513) 0; } .icon-custom-SodaCan { - background-position: percentage((409 - 492)/ 491) 0; + background-position: percentage((427 - 514)/ 513) 0; } .icon-custom-Sokka { - background-position: percentage((410 - 492)/ 491) 0; + background-position: percentage((428 - 514)/ 513) 0; } .icon-custom-SolaireofAstora { - background-position: percentage((411 - 492)/ 491) 0; + background-position: percentage((429 - 514)/ 513) 0; } .icon-custom-HyruleSoldier { - background-position: percentage((412 - 492)/ 491) 0; + background-position: percentage((430 - 514)/ 513) 0; } .icon-custom-SonictheHedgehog { - background-position: percentage((413 - 492)/ 491) 0; + background-position: percentage((431 - 514)/ 513) 0; } .icon-custom-Sora { - background-position: percentage((414 - 492)/ 491) 0; + background-position: percentage((432 - 514)/ 513) 0; } .icon-custom-SoraKH1 { - background-position: percentage((415 - 492)/ 491) 0; + background-position: percentage((433 - 514)/ 513) 0; } .icon-custom-SpamtonGSpamton { - background-position: percentage((416 - 492)/ 491) 0; + background-position: percentage((434 - 514)/ 513) 0; } .icon-custom-Spat { - background-position: percentage((417 - 492)/ 491) 0; + background-position: percentage((435 - 514)/ 513) 0; } .icon-custom-SpikedRoller { - background-position: percentage((418 - 492)/ 491) 0; + background-position: percentage((436 - 514)/ 513) 0; +} + +.icon-custom-Spiritendo { + background-position: percentage((437 - 514)/ 513) 0; } .icon-custom-SpongebobSquarepants { - background-position: percentage((419 - 492)/ 491) 0; + background-position: percentage((438 - 514)/ 513) 0; } .icon-custom-SpyrotheDragon { - background-position: percentage((420 - 492)/ 491) 0; + background-position: percentage((439 - 514)/ 513) 0; } .icon-custom-Squall { - background-position: percentage((421 - 492)/ 491) 0; + background-position: percentage((440 - 514)/ 513) 0; } .icon-custom-SaltySquiddy { - background-position: percentage((422 - 492)/ 491) 0; + background-position: percentage((441 - 514)/ 513) 0; } .icon-custom-Squirrel { - background-position: percentage((423 - 492)/ 491) 0; + background-position: percentage((442 - 514)/ 513) 0; } .icon-custom-Squirtle { - background-position: percentage((424 - 492)/ 491) 0; + background-position: percentage((443 - 514)/ 513) 0; } .icon-custom-Stalfos { - background-position: percentage((425 - 492)/ 491) 0; + background-position: percentage((444 - 514)/ 513) 0; } .icon-custom-Stan { - background-position: percentage((426 - 492)/ 491) 0; + background-position: percentage((445 - 514)/ 513) 0; } .icon-custom-StaticLink { - background-position: percentage((427 - 492)/ 491) 0; + background-position: percentage((446 - 514)/ 513) 0; } .icon-custom-SteamedHams { - background-position: percentage((428 - 492)/ 491) 0; + background-position: percentage((447 - 514)/ 513) 0; } .icon-custom-StickMan { - background-position: percentage((429 - 492)/ 491) 0; + background-position: percentage((448 - 514)/ 513) 0; +} + +.icon-custom-Stitch { + background-position: percentage((449 - 514)/ 513) 0; } .icon-custom-SuperBomb { - background-position: percentage((430 - 492)/ 491) 0; + background-position: percentage((450 - 514)/ 513) 0; } .icon-custom-SuperBunny { - background-position: percentage((431 - 492)/ 491) 0; + background-position: percentage((451 - 514)/ 513) 0; } .icon-custom-SuperMeatBoy { - background-position: percentage((432 - 492)/ 491) 0; + background-position: percentage((452 - 514)/ 513) 0; } .icon-custom-Susie { - background-position: percentage((433 - 492)/ 491) 0; + background-position: percentage((453 - 514)/ 513) 0; } .icon-custom-Swatchy { - background-position: percentage((434 - 492)/ 491) 0; + background-position: percentage((454 - 514)/ 513) 0; } .icon-custom-Swiper { - background-position: percentage((435 - 492)/ 491) 0; + background-position: percentage((455 - 514)/ 513) 0; } .icon-custom-SwirlDrop { - background-position: percentage((436 - 492)/ 491) 0; + background-position: percentage((456 - 514)/ 513) 0; } .icon-custom-TASBot { - background-position: percentage((437 - 492)/ 491) 0; + background-position: percentage((457 - 514)/ 513) 0; } .icon-custom-TeaTime { - background-position: percentage((438 - 492)/ 491) 0; + background-position: percentage((458 - 514)/ 513) 0; } .icon-custom-Teddiursa { - background-position: percentage((439 - 492)/ 491) 0; + background-position: percentage((459 - 514)/ 513) 0; } .icon-custom-TerraEsper { - background-position: percentage((440 - 492)/ 491) 0; + background-position: percentage((460 - 514)/ 513) 0; } .icon-custom-TerryContactDS { - background-position: percentage((441 - 492)/ 491) 0; + background-position: percentage((461 - 514)/ 513) 0; } .icon-custom-Tetra { - background-position: percentage((442 - 492)/ 491) 0; + background-position: percentage((462 - 514)/ 513) 0; } .icon-custom-TGH { - background-position: percentage((443 - 492)/ 491) 0; + background-position: percentage((463 - 514)/ 513) 0; } .icon-custom-TheRobot { - background-position: percentage((444 - 492)/ 491) 0; + background-position: percentage((464 - 514)/ 513) 0; } .icon-custom-Thief { - background-position: percentage((445 - 492)/ 491) 0; + background-position: percentage((465 - 514)/ 513) 0; } .icon-custom-ThinkDorm { - background-position: percentage((446 - 492)/ 491) 0; + background-position: percentage((466 - 514)/ 513) 0; } .icon-custom-Thomcrow { - background-position: percentage((447 - 492)/ 491) 0; + background-position: percentage((467 - 514)/ 513) 0; } .icon-custom-Tile { - background-position: percentage((448 - 492)/ 491) 0; + background-position: percentage((468 - 514)/ 513) 0; } .icon-custom-Tingle { - background-position: percentage((449 - 492)/ 491) 0; + background-position: percentage((469 - 514)/ 513) 0; } .icon-custom-TMNT { - background-position: percentage((450 - 492)/ 491) 0; + background-position: percentage((470 - 514)/ 513) 0; } .icon-custom-Toad { - background-position: percentage((451 - 492)/ 491) 0; + background-position: percentage((471 - 514)/ 513) 0; } .icon-custom-Toadette { - background-position: percentage((452 - 492)/ 491) 0; + background-position: percentage((472 - 514)/ 513) 0; } .icon-custom-CaptainToadette { - background-position: percentage((453 - 492)/ 491) 0; + background-position: percentage((473 - 514)/ 513) 0; } .icon-custom-TotemLinks { - background-position: percentage((454 - 492)/ 491) 0; + background-position: percentage((474 - 514)/ 513) 0; } .icon-custom-DrTreymondSpyreSpyresonIII { - background-position: percentage((455 - 492)/ 491) 0; + background-position: percentage((475 - 514)/ 513) 0; } .icon-custom-TrogdortheBurninator { - background-position: percentage((456 - 492)/ 491) 0; + background-position: percentage((476 - 514)/ 513) 0; } .icon-custom-Tueffel { - background-position: percentage((457 - 492)/ 491) 0; + background-position: percentage((477 - 514)/ 513) 0; } .icon-custom-Tunic { - background-position: percentage((458 - 492)/ 491) 0; + background-position: percentage((478 - 514)/ 513) 0; } .icon-custom-TPZelda { - background-position: percentage((459 - 492)/ 491) 0; + background-position: percentage((479 - 514)/ 513) 0; } .icon-custom-TwoFaced { - background-position: percentage((460 - 492)/ 491) 0; + background-position: percentage((480 - 514)/ 513) 0; } .icon-custom-TytheTasmanianTiger { - background-position: percentage((461 - 492)/ 491) 0; + background-position: percentage((481 - 514)/ 513) 0; } .icon-custom-UFOKirby { - background-position: percentage((462 - 492)/ 491) 0; + background-position: percentage((482 - 514)/ 513) 0; } .icon-custom-Ultros { - background-position: percentage((463 - 492)/ 491) 0; + background-position: percentage((483 - 514)/ 513) 0; } .icon-custom-Umbreon { - background-position: percentage((464 - 492)/ 491) 0; + background-position: percentage((484 - 514)/ 513) 0; +} + +.icon-custom-Unicorn { + background-position: percentage((485 - 514)/ 513) 0; } .icon-custom-Valeera { - background-position: percentage((465 - 492)/ 491) 0; + background-position: percentage((486 - 514)/ 513) 0; } .icon-custom-VanillaLink { - background-position: percentage((466 - 492)/ 491) 0; + background-position: percentage((487 - 514)/ 513) 0; } .icon-custom-Vaporeon { - background-position: percentage((467 - 492)/ 491) 0; + background-position: percentage((488 - 514)/ 513) 0; } .icon-custom-Vegeta { - background-position: percentage((468 - 492)/ 491) 0; + background-position: percentage((489 - 514)/ 513) 0; } .icon-custom-Vera { - background-position: percentage((469 - 492)/ 491) 0; + background-position: percentage((490 - 514)/ 513) 0; } .icon-custom-Vitreous { - background-position: percentage((470 - 492)/ 491) 0; + background-position: percentage((491 - 514)/ 513) 0; } .icon-custom-Vivi { - background-position: percentage((471 - 492)/ 491) 0; + background-position: percentage((492 - 514)/ 513) 0; } .icon-custom-Vivian { - background-position: percentage((472 - 492)/ 491) 0; + background-position: percentage((493 - 514)/ 513) 0; +} + +.icon-custom-Wackerly { + background-position: percentage((494 - 514)/ 513) 0; } .icon-custom-Wario { - background-position: percentage((473 - 492)/ 491) 0; + background-position: percentage((495 - 514)/ 513) 0; } .icon-custom-WhiteMage { - background-position: percentage((474 - 492)/ 491) 0; + background-position: percentage((496 - 514)/ 513) 0; } .icon-custom-Will { - background-position: percentage((475 - 492)/ 491) 0; + background-position: percentage((497 - 514)/ 513) 0; } .icon-custom-Wizzrobe { - background-position: percentage((476 - 492)/ 491) 0; + background-position: percentage((498 - 514)/ 513) 0; } .icon-custom-WolfODonnell { - background-position: percentage((477 - 492)/ 491) 0; + background-position: percentage((499 - 514)/ 513) 0; } .icon-custom-WolfLinkFestive { - background-position: percentage((478 - 492)/ 491) 0; + background-position: percentage((500 - 514)/ 513) 0; } .icon-custom-WolfLinkTP { - background-position: percentage((479 - 492)/ 491) 0; + background-position: percentage((501 - 514)/ 513) 0; } .icon-custom-WuZaiiii { - background-position: percentage((480 - 492)/ 491) 0; + background-position: percentage((502 - 514)/ 513) 0; } .icon-custom-Yoshi { - background-position: percentage((481 - 492)/ 491) 0; + background-position: percentage((503 - 514)/ 513) 0; } .icon-custom-YunicaTovah { - background-position: percentage((482 - 492)/ 491) 0; + background-position: percentage((504 - 514)/ 513) 0; } .icon-custom-Zagreus { - background-position: percentage((483 - 492)/ 491) 0; + background-position: percentage((505 - 514)/ 513) 0; } .icon-custom-Zandra { - background-position: percentage((484 - 492)/ 491) 0; + background-position: percentage((506 - 514)/ 513) 0; } .icon-custom-Zaruvyen { - background-position: percentage((485 - 492)/ 491) 0; + background-position: percentage((507 - 514)/ 513) 0; } .icon-custom-ZebraUnicorn { - background-position: percentage((486 - 492)/ 491) 0; + background-position: percentage((508 - 514)/ 513) 0; } .icon-custom-Zeck { - background-position: percentage((487 - 492)/ 491) 0; + background-position: percentage((509 - 514)/ 513) 0; } .icon-custom-Zekrom { - background-position: percentage((488 - 492)/ 491) 0; + background-position: percentage((510 - 514)/ 513) 0; } .icon-custom-Zelda { - background-position: percentage((489 - 492)/ 491) 0; + background-position: percentage((511 - 514)/ 513) 0; } .icon-custom-ZeroSuitSamus { - background-position: percentage((490 - 492)/ 491) 0; + background-position: percentage((512 - 514)/ 513) 0; } .icon-custom-Zora { - background-position: percentage((491 - 492)/ 491) 0; + background-position: percentage((513 - 514)/ 513) 0; } diff --git a/resources/views/updates.blade.php b/resources/views/updates.blade.php index 0ad563d79..a57e68db8 100644 --- a/resources/views/updates.blade.php +++ b/resources/views/updates.blade.php @@ -2,6 +2,42 @@ @section('content') +

v31.2 (August 2023)

+
+
  • New Features
  • + +
  • Bug Fixes
  • + +
  • Miscellaneous changes
  • + +
  • Added new player options
  • + Player sprite options + +
    +

    v31.1 (March 2023)

  • New Features
  • diff --git a/strings/blind.txt b/strings/blind.txt index 844abd25d..2bc521920 100644 --- a/strings/blind.txt +++ b/strings/blind.txt @@ -274,3 +274,25 @@ Tower builders should stay on the up and up. - +When cooking, +don't lose track +of the thyme. +- +Eating clocks is +time consuming. +- +My fear of +tsunamis comes +in waves. +- +Write a story? +What a novel +idea. +- +Sign language +is pretty handy! +- +Cook a potato? +I'd make a hash +of it. +- diff --git a/strings/ganon_1.txt b/strings/ganon_1.txt index d1396de2f..d3dbacdc5 100644 --- a/strings/ganon_1.txt +++ b/strings/ganon_1.txt @@ -293,3 +293,13 @@ first printed in Original D&D came out in 1974. - +@: +Hello there + +... + + +Ganon: +General Kenobi + +- diff --git a/tests/Inverted/DesertPalaceTest.php b/tests/Inverted/DesertPalaceTest.php index 67480ebc9..daa7076bd 100644 --- a/tests/Inverted/DesertPalaceTest.php +++ b/tests/Inverted/DesertPalaceTest.php @@ -3,6 +3,8 @@ namespace Inverted; use ALttP\Item; +use ALttP\Rom; +use ALttP\Support\ItemCollection; use ALttP\World; use TestCase; @@ -15,6 +17,13 @@ public function setUp(): void { parent::setUp(); $this->world = World::factory('inverted', ['difficulty' => 'test_rules', 'logic' => 'NoGlitches']); + $this->world_free_items = World::factory('standard', ['difficulty' => 'test_rules', + 'logic' => 'NoGlitches', + 'region.wildKeys' => true, + 'region.wildBigKeys' => true, + 'region.wildCompasses' => true, + 'region.wildMaps' => true, + ]); $this->addCollected(['RescueZelda']); $this->collected->setChecksForWorld($this->world->id); } @@ -193,7 +202,7 @@ public function accessPool() public function testRegionLockedItems(bool $access, string $item_name, bool $free = null, string $config = null) { if ($config) { - config([$config => $free]); + $this->world->testSetConfig($config, $free); } $this->assertEquals($access, $this->world->getRegion('Desert Palace')->canFill(Item::get($item_name, $this->world))); @@ -297,4 +306,37 @@ public function dungeonItemsPool() [true, 'CompassA2', true, 'region.wildCompasses'], ]; } + + /** + * @param string $chest_location + * @param string $item_name + * @param int $expected + * @param bool $free + * + * @dataProvider selfDungeonItemsPool + */ + public function testDungeonItemWrite(string $chest_location, string $item_name, int $expected, bool $free) + { + $rom = new Rom(); + $world = $free ? $this->world_free_items : $this->world; + $location = $world->getLocation($chest_location); + $location->fill(Item::get($item_name, $world), new ItemCollection(), false); + $location->writeItem($rom, Item::get($item_name, $world)); + + $this->assertEquals($expected, $rom->read($location->getAddress()[0])); + } + + public function selfDungeonItemsPool() + { + return [ + ["Desert Palace - Map Chest", "KeyP2", 0xA3, true], + ["Desert Palace - Map Chest", "KeyP2", 0xA3, false], + ["Desert Palace - Map Chest", "BigKeyP2", 0x9C, true], + ["Desert Palace - Map Chest", "BigKeyP2", 0x9C, false], + ["Desert Palace - Map Chest", "CompassP2", 0x8C, true], + ["Desert Palace - Map Chest", "CompassP2", 0x8C, false], + ["Desert Palace - Map Chest", "MapP2", 0x7C, true], + ["Desert Palace - Map Chest", "MapP2", 0x7C, false], + ]; + } } diff --git a/tests/Inverted/EasternPalaceTest.php b/tests/Inverted/EasternPalaceTest.php index 6a840d998..51cc575fd 100644 --- a/tests/Inverted/EasternPalaceTest.php +++ b/tests/Inverted/EasternPalaceTest.php @@ -147,7 +147,7 @@ public function accessPool() public function testRegionLockedItems(bool $access, string $item_name, bool $free = null, string $config = null) { if ($config) { - config([$config => $free]); + $this->world->testSetConfig($config, $free); } $this->assertEquals($access, $this->world->getRegion('Eastern Palace')->canFill(Item::get($item_name, $this->world))); diff --git a/tests/Inverted/IcePalaceTest.php b/tests/Inverted/IcePalaceTest.php index 7f750c629..e4081fc89 100644 --- a/tests/Inverted/IcePalaceTest.php +++ b/tests/Inverted/IcePalaceTest.php @@ -103,54 +103,54 @@ public function accessPool() ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Flippers','Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Flippers','Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Compass Chest", false, []], ["Ice Palace - Compass Chest", false, [], ['Flippers']], @@ -175,54 +175,54 @@ public function accessPool() ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", false, []], ["Ice Palace - Spike Room", false, [], ['Flippers']], @@ -234,18 +234,18 @@ public function accessPool() ["Ice Palace - Spike Room", true, ['Flippers', 'Bombos', 'MasterSword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['Flippers', 'Bombos', 'L3Sword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['Flippers', 'Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'FireRod', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'Bombos', 'UncleSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'Bombos', 'MasterSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'Bombos', 'L3Sword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'Bombos', 'L4Sword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'FireRod', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'KeyD5', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'FireRod', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'Bombos', 'UncleSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'Bombos', 'MasterSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'Bombos', 'L3Sword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'Flippers', 'Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'FireRod', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'Bombos', 'UncleSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'Bombos', 'ProgressiveSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'Bombos', 'MasterSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'Bombos', 'L3Sword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Flippers', 'Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], ["Ice Palace - Freezor Chest", false, []], diff --git a/tests/Inverted/SkullWoodsTest.php b/tests/Inverted/SkullWoodsTest.php index 804bd62f8..e12aa5915 100644 --- a/tests/Inverted/SkullWoodsTest.php +++ b/tests/Inverted/SkullWoodsTest.php @@ -127,7 +127,7 @@ public function accessPool() public function testRegionLockedItems(bool $access, string $item_name, bool $free = null, string $config = null) { if ($config) { - config([$config => $free]); + $this->world->testSetConfig($config, $free); } $this->assertEquals($access, $this->world->getRegion('Skull Woods')->canFill(Item::get($item_name, $this->world))); diff --git a/tests/Inverted/SwampPalaceTest.php b/tests/Inverted/SwampPalaceTest.php index 54427f0e7..3267e241b 100644 --- a/tests/Inverted/SwampPalaceTest.php +++ b/tests/Inverted/SwampPalaceTest.php @@ -209,7 +209,7 @@ public function accessPool() public function testRegionLockedItems(bool $access, string $item_name, bool $free = null, string $config = null) { if ($config) { - config([$config => $free]); + $this->world->testSetConfig($config, $free); } $this->assertEquals($access, $this->world->getRegion('Swamp Palace')->canFill(Item::get($item_name, $this->world))); diff --git a/tests/InvertedMajorGlitches/DesertPalaceTest.php b/tests/InvertedMajorGlitches/DesertPalaceTest.php index 39845a202..972ede451 100644 --- a/tests/InvertedMajorGlitches/DesertPalaceTest.php +++ b/tests/InvertedMajorGlitches/DesertPalaceTest.php @@ -3,6 +3,8 @@ namespace InvertedMajorGlitches; use ALttP\Item; +use ALttP\Rom; +use ALttP\Support\ItemCollection; use ALttP\World; use TestCase; @@ -15,6 +17,13 @@ public function setUp(): void { parent::setUp(); $this->world = World::factory('inverted', ['difficulty' => 'test_rules', 'logic' => 'MajorGlitches']); + $this->world_free_items = World::factory('standard', ['difficulty' => 'test_rules', + 'logic' => 'MajorGlitches', + 'region.wildKeys' => true, + 'region.wildBigKeys' => true, + 'region.wildCompasses' => true, + 'region.wildMaps' => true, + ]); $this->addCollected(['RescueZelda']); $this->collected->setChecksForWorld($this->world->id); } @@ -133,4 +142,37 @@ public function accessPool() ["Desert Palace - Boss", true, ['UncleSword', 'KeyP2', 'BigKeyP2', 'FireRod']], ]; } + + /** + * @param string $chest_location + * @param string $item_name + * @param int $expected + * @param bool $free + * + * @dataProvider selfDungeonItemsPool + */ + public function testDungeonItemWrite(string $chest_location, string $item_name, int $expected, bool $free) + { + $rom = new Rom(); + $world = $free ? $this->world_free_items : $this->world; + $location = $world->getLocation($chest_location); + $location->fill(Item::get($item_name, $world), new ItemCollection(), false); + $location->writeItem($rom, Item::get($item_name, $world)); + + $this->assertEquals($expected, $rom->read($location->getAddress()[0])); + } + + public function selfDungeonItemsPool() + { + return [ + ["Desert Palace - Map Chest", "KeyP2", 0xA3, true], + ["Desert Palace - Map Chest", "KeyP2", 0x24, false], + ["Desert Palace - Map Chest", "BigKeyP2", 0x9C, true], + ["Desert Palace - Map Chest", "BigKeyP2", 0x32, false], + ["Desert Palace - Map Chest", "CompassP2", 0x8C, true], + ["Desert Palace - Map Chest", "CompassP2", 0x25, false], + ["Desert Palace - Map Chest", "MapP2", 0x7C, true], + ["Desert Palace - Map Chest", "MapP2", 0x33, false], + ]; + } } diff --git a/tests/InvertedMajorGlitches/IcePalaceTest.php b/tests/InvertedMajorGlitches/IcePalaceTest.php index 2a58f08c7..7c6de88b3 100644 --- a/tests/InvertedMajorGlitches/IcePalaceTest.php +++ b/tests/InvertedMajorGlitches/IcePalaceTest.php @@ -95,14 +95,14 @@ public function accessPool() ["Ice Palace - Big Key Chest", false, [], ['Gloves']], ["Ice Palace - Big Key Chest", false, [], ['Hammer']], ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Compass Chest", true, []], @@ -110,18 +110,18 @@ public function accessPool() ["Ice Palace - Map Chest", false, [], ['Gloves']], ["Ice Palace - Map Chest", false, [], ['Hammer']], ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", false, []], ["Ice Palace - Spike Room", true, ['Hookshot', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['KeyD5', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Hookshot', 'KeyD5']], ["Ice Palace - Freezor Chest", false, []], ["Ice Palace - Freezor Chest", false, [], ['FireRod', 'Bombos', 'AnySword']], diff --git a/tests/InvertedOverworldGlitches/IcePalaceTest.php b/tests/InvertedOverworldGlitches/IcePalaceTest.php index 576c95604..acdcb9505 100644 --- a/tests/InvertedOverworldGlitches/IcePalaceTest.php +++ b/tests/InvertedOverworldGlitches/IcePalaceTest.php @@ -101,54 +101,54 @@ public function accessPool() ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Compass Chest", false, []], ["Ice Palace - Compass Chest", false, [], ['FireRod', 'Bombos', 'AnySword']], @@ -169,54 +169,54 @@ public function accessPool() ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['PowerGlove', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['PowerGlove', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'FireRod', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'CaneOfByrna', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Cape', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", false, []], ["Ice Palace - Spike Room", false, [], ['FireRod', 'Bombos', 'AnySword']], @@ -226,18 +226,18 @@ public function accessPool() ["Ice Palace - Spike Room", true, ['Bombos', 'MasterSword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['Bombos', 'L3Sword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'FireRod', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'Bombos', 'UncleSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'Bombos', 'ProgressiveSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'Bombos', 'MasterSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'Bombos', 'L3Sword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Cape', 'Bombos', 'L4Sword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'FireRod', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Bombos', 'UncleSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Bombos', 'ProgressiveSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Bombos', 'MasterSword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Bombos', 'L3Sword', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Bombos', 'L4Sword', 'KeyD5', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'FireRod', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'Bombos', 'UncleSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'Bombos', 'ProgressiveSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'Bombos', 'MasterSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'Bombos', 'L3Sword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['Cape', 'Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'FireRod', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Bombos', 'UncleSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Bombos', 'ProgressiveSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Bombos', 'MasterSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Bombos', 'L3Sword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['CaneOfByrna', 'Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], ["Ice Palace - Freezor Chest", false, []], ["Ice Palace - Freezor Chest", false, [], ['FireRod', 'Bombos', 'AnySword']], diff --git a/tests/MajorGlitches/DesertPalaceTest.php b/tests/MajorGlitches/DesertPalaceTest.php index 8f1e87e9f..37c154205 100644 --- a/tests/MajorGlitches/DesertPalaceTest.php +++ b/tests/MajorGlitches/DesertPalaceTest.php @@ -3,6 +3,8 @@ namespace MajorGlitches; use ALttP\Item; +use ALttP\Rom; +use ALttP\Support\ItemCollection; use ALttP\World; use TestCase; @@ -15,6 +17,13 @@ public function setUp(): void { parent::setUp(); $this->world = World::factory('standard', ['difficulty' => 'test_rules', 'logic' => 'MajorGlitches']); + $this->world_free_items = World::factory('standard', ['difficulty' => 'test_rules', + 'logic' => 'MajorGlitches', + 'region.wildKeys' => true, + 'region.wildBigKeys' => true, + 'region.wildCompasses' => true, + 'region.wildMaps' => true, + ]); $this->addCollected(['RescueZelda']); $this->collected->setChecksForWorld($this->world->id); } @@ -132,4 +141,37 @@ public function accessPool() ["Desert Palace - Boss", true, ['UncleSword', 'KeyP2', 'Lamp', 'BigKeyP2']], ]; } + + /** + * @param string $chest_location + * @param string $item_name + * @param int $expected + * @param bool $free + * + * @dataProvider selfDungeonItemsPool + */ + public function testDungeonItemWrite(string $chest_location, string $item_name, int $expected, bool $free) + { + $rom = new Rom(); + $world = $free ? $this->world_free_items : $this->world; + $location = $world->getLocation($chest_location); + $location->fill(Item::get($item_name, $world), new ItemCollection(), false); + $location->writeItem($rom, Item::get($item_name, $world)); + + $this->assertEquals($expected, $rom->read($location->getAddress()[0])); + } + + public function selfDungeonItemsPool() + { + return [ + ["Desert Palace - Map Chest", "KeyP2", 0xA3, true], + ["Desert Palace - Map Chest", "KeyP2", 0x24, false], + ["Desert Palace - Map Chest", "BigKeyP2", 0x9C, true], + ["Desert Palace - Map Chest", "BigKeyP2", 0x32, false], + ["Desert Palace - Map Chest", "CompassP2", 0x8C, true], + ["Desert Palace - Map Chest", "CompassP2", 0x25, false], + ["Desert Palace - Map Chest", "MapP2", 0x7C, true], + ["Desert Palace - Map Chest", "MapP2", 0x33, false], + ]; + } } diff --git a/tests/MajorGlitches/IcePalaceTest.php b/tests/MajorGlitches/IcePalaceTest.php index dc9d48476..1ae013757 100644 --- a/tests/MajorGlitches/IcePalaceTest.php +++ b/tests/MajorGlitches/IcePalaceTest.php @@ -95,28 +95,28 @@ public function accessPool() ["Ice Palace - Big Key Chest", false, [], ['Gloves']], ["Ice Palace - Big Key Chest", false, [], ['Hammer']], ["Ice Palace - Big Key Chest", true, ['Flippers', 'MoonPearl', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['Flippers', 'MoonPearl', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['Flippers', 'MoonPearl', 'Cape', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['Flippers', 'MoonPearl', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['Flippers', 'MoonPearl', 'Cape', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['Flippers', 'MoonPearl', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['Flippers', 'MoonPearl', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['Flippers', 'MoonPearl', 'Cape', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['Flippers', 'MoonPearl', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['Flippers', 'MoonPearl', 'Cape', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['Flippers', 'Bottle', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['Flippers', 'Bottle', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['Flippers', 'Bottle', 'Cape', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['Flippers', 'Bottle', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['Flippers', 'Bottle', 'Cape', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['Flippers', 'Bottle', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['Flippers', 'Bottle', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['Flippers', 'Bottle', 'Cape', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['Flippers', 'Bottle', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['Flippers', 'Bottle', 'Cape', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['MagicMirror', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MagicMirror', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MagicMirror', 'Cape', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MagicMirror', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MagicMirror', 'Cape', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['MagicMirror', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MagicMirror', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MagicMirror', 'Cape', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['CaneOfByrna', 'TitansMitt', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['Cape', 'TitansMitt', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MagicMirror', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MagicMirror', 'Cape', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['CaneOfByrna', 'TitansMitt', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['Cape', 'TitansMitt', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['CaneOfByrna', 'ProgressiveGlove', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['Cape', 'ProgressiveGlove', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['CaneOfByrna', 'ProgressiveGlove', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['Cape', 'ProgressiveGlove', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Compass Chest", false, []], @@ -129,34 +129,32 @@ public function accessPool() ["Ice Palace - Map Chest", false, [], ['Gloves']], ["Ice Palace - Map Chest", false, [], ['Hammer']], ["Ice Palace - Map Chest", true, ['Flippers', 'MoonPearl', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['Flippers', 'MoonPearl', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['Flippers', 'MoonPearl', 'Cape', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['Flippers', 'MoonPearl', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['Flippers', 'MoonPearl', 'Cape', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['Flippers', 'MoonPearl', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['Flippers', 'MoonPearl', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['Flippers', 'MoonPearl', 'Cape', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['Flippers', 'MoonPearl', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['Flippers', 'MoonPearl', 'Cape', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['Flippers', 'Bottle', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['Flippers', 'Bottle', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['Flippers', 'Bottle', 'Cape', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['Flippers', 'Bottle', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['Flippers', 'Bottle', 'Cape', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['Flippers', 'Bottle', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['Flippers', 'Bottle', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['Flippers', 'Bottle', 'Cape', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['Flippers', 'Bottle', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['Flippers', 'Bottle', 'Cape', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['MagicMirror', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MagicMirror', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MagicMirror', 'Cape', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MagicMirror', 'CaneOfByrna', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MagicMirror', 'Cape', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['MagicMirror', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MagicMirror', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MagicMirror', 'Cape', 'PowerGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['CaneOfByrna', 'TitansMitt', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['Cape', 'TitansMitt', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MagicMirror', 'CaneOfByrna', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MagicMirror', 'Cape', 'PowerGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['CaneOfByrna', 'TitansMitt', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['Cape', 'TitansMitt', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['CaneOfByrna', 'ProgressiveGlove', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['Cape', 'ProgressiveGlove', 'ProgressiveGlove', 'Hammer', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['CaneOfByrna', 'ProgressiveGlove', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['Cape', 'ProgressiveGlove', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", false, []], ["Ice Palace - Spike Room", true, ['Flippers', 'MoonPearl', 'Hookshot', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Flippers', 'MoonPearl', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['Flippers', 'MoonPearl', 'KeyD5', 'KeyD5']], ["Ice Palace - Freezor Chest", false, []], ["Ice Palace - Freezor Chest", false, [], ['FireRod', 'Bombos']], diff --git a/tests/MajorGlitches/SkullWoodsTest.php b/tests/MajorGlitches/SkullWoodsTest.php index b010c0151..0ca28551a 100644 --- a/tests/MajorGlitches/SkullWoodsTest.php +++ b/tests/MajorGlitches/SkullWoodsTest.php @@ -106,6 +106,7 @@ public function accessPool() ["Skull Woods - Bridge Room", false, []], ["Skull Woods - Bridge Room", false, [], ['FireRod']], ["Skull Woods - Bridge Room", false, [], ['MoonPearl', 'MagicMirror', 'AnyBottle']], + ["Skull Woods - Bridge Room", false, [], ['MoonPearl', 'PegasusBoots']], ["Skull Woods - Bridge Room", true, ['FireRod', 'MoonPearl']], ["Skull Woods - Pot Prison", true, []], @@ -121,16 +122,16 @@ public function accessPool() ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MoonPearl', 'L3Sword']], ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MoonPearl', 'L4Sword']], ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MoonPearl', 'ProgressiveSword']], - ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MagicMirror', 'UncleSword']], - ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MagicMirror', 'MasterSword']], - ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MagicMirror', 'L3Sword']], - ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MagicMirror', 'L4Sword']], - ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MagicMirror', 'ProgressiveSword']], - ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'Bottle', 'UncleSword']], - ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'Bottle', 'MasterSword']], - ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'Bottle', 'L3Sword']], - ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'Bottle', 'L4Sword']], - ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'Bottle', 'ProgressiveSword']], + ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MagicMirror', 'UncleSword', 'PegasusBoots']], + ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MagicMirror', 'MasterSword', 'PegasusBoots']], + ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MagicMirror', 'L3Sword', 'PegasusBoots']], + ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MagicMirror', 'L4Sword', 'PegasusBoots']], + ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'MagicMirror', 'ProgressiveSword', 'PegasusBoots']], + ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'Bottle', 'UncleSword', 'PegasusBoots']], + ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'Bottle', 'MasterSword', 'PegasusBoots']], + ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'Bottle', 'L3Sword', 'PegasusBoots']], + ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'Bottle', 'L4Sword', 'PegasusBoots']], + ["Skull Woods - Boss", true, ['KeyD3', 'KeyD3', 'KeyD3', 'FireRod', 'Bottle', 'ProgressiveSword', 'PegasusBoots']], ]; } } diff --git a/tests/NoGlitches/DesertPalaceTest.php b/tests/NoGlitches/DesertPalaceTest.php index b6b40b488..e2886ca13 100644 --- a/tests/NoGlitches/DesertPalaceTest.php +++ b/tests/NoGlitches/DesertPalaceTest.php @@ -3,6 +3,8 @@ namespace NoGlitches; use ALttP\Item; +use ALttP\Rom; +use ALttP\Support\ItemCollection; use ALttP\World; use TestCase; @@ -15,6 +17,13 @@ public function setUp(): void { parent::setUp(); $this->world = World::factory('standard', ['difficulty' => 'test_rules', 'logic' => 'NoGlitches']); + $this->world_free_items = World::factory('standard', ['difficulty' => 'test_rules', + 'logic' => 'NoGlitches', + 'region.wildKeys' => true, + 'region.wildBigKeys' => true, + 'region.wildCompasses' => true, + 'region.wildMaps' => true, + ]); $this->addCollected(['RescueZelda']); $this->collected->setChecksForWorld($this->world->id); } @@ -163,7 +172,7 @@ public function accessPool() public function testRegionLockedItems(bool $access, string $item_name, bool $free = null, string $config = null) { if ($config) { - config([$config => $free]); + $this->world->testSetConfig($config, $free); } $this->assertEquals($access, $this->world->getRegion('Desert Palace')->canFill(Item::get($item_name, $this->world))); @@ -267,4 +276,37 @@ public function dungeonItemsPool() [true, 'CompassA2', true, 'region.wildCompasses'], ]; } + + /** + * @param string $chest_location + * @param string $item_name + * @param int $expected + * @param bool $free + * + * @dataProvider selfDungeonItemsPool + */ + public function testDungeonItemWrite(string $chest_location, string $item_name, int $expected, bool $free) + { + $rom = new Rom(); + $world = $free ? $this->world_free_items : $this->world; + $location = $world->getLocation($chest_location); + $location->fill(Item::get($item_name, $world), new ItemCollection(), false); + $location->writeItem($rom, Item::get($item_name, $world)); + + $this->assertEquals($expected, $rom->read($location->getAddress()[0])); + } + + public function selfDungeonItemsPool() + { + return [ + ["Desert Palace - Map Chest", "KeyP2", 0xA3, true], + ["Desert Palace - Map Chest", "KeyP2", 0xA3, false], + ["Desert Palace - Map Chest", "BigKeyP2", 0x9C, true], + ["Desert Palace - Map Chest", "BigKeyP2", 0x9C, false], + ["Desert Palace - Map Chest", "CompassP2", 0x8C, true], + ["Desert Palace - Map Chest", "CompassP2", 0x8C, false], + ["Desert Palace - Map Chest", "MapP2", 0x7C, true], + ["Desert Palace - Map Chest", "MapP2", 0x7C, false], + ]; + } } diff --git a/tests/NoGlitches/EasternPalaceTest.php b/tests/NoGlitches/EasternPalaceTest.php index 755deb8ee..3195d8340 100644 --- a/tests/NoGlitches/EasternPalaceTest.php +++ b/tests/NoGlitches/EasternPalaceTest.php @@ -122,7 +122,7 @@ public function accessPool() public function testRegionLockedItems(bool $access, string $item_name, bool $free = null, string $config = null) { if ($config) { - config([$config => $free]); + $this->world->testSetConfig($config, $free); } $this->assertEquals($access, $this->world->getRegion('Eastern Palace')->canFill(Item::get($item_name, $this->world))); diff --git a/tests/NoGlitches/IcePalaceTest.php b/tests/NoGlitches/IcePalaceTest.php index d6e4c6873..5605f28f2 100644 --- a/tests/NoGlitches/IcePalaceTest.php +++ b/tests/NoGlitches/IcePalaceTest.php @@ -109,18 +109,18 @@ public function accessPool() ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'FireRod', 'Hammer', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot','KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5', 'BigKeyD5']], ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5', 'BigKeyD5']], ["Ice Palace - Big Key Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5', 'BigKeyD5']], @@ -194,18 +194,18 @@ public function accessPool() ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'FireRod', 'Hammer', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5', 'BigKeyD5']], ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5', 'BigKeyD5']], ["Ice Palace - Map Chest", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5', 'BigKeyD5']], @@ -248,18 +248,18 @@ public function accessPool() ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L3Sword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'FireRod', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'UncleSword', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'ProgressiveSword', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'MasterSword', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L3Sword', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L4Sword', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'FireRod', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'UncleSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'ProgressiveSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'MasterSword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L3Sword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hookshot', 'KeyD5', 'BigKeyD5']], ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'TitansMitt', 'FireRod', 'Hookshot', 'KeyD5', 'BigKeyD5']], ["Ice Palace - Spike Room", true, ['MoonPearl', 'Flippers', 'ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hookshot', 'KeyD5', 'BigKeyD5']], diff --git a/tests/NoGlitches/SkullWoodsTest.php b/tests/NoGlitches/SkullWoodsTest.php index 8251a212e..a44740544 100644 --- a/tests/NoGlitches/SkullWoodsTest.php +++ b/tests/NoGlitches/SkullWoodsTest.php @@ -225,7 +225,7 @@ public function accessPool() public function testRegionLockedItems(bool $access, string $item_name, bool $free = null, string $config = null) { if ($config) { - config([$config => $free]); + $this->world->testSetConfig($config, $free); } $this->assertEquals($access, $this->world->getRegion('Skull Woods')->canFill(Item::get($item_name, $this->world))); diff --git a/tests/NoGlitches/SwampPalaceTest.php b/tests/NoGlitches/SwampPalaceTest.php index bc2853355..dbe4ba00c 100644 --- a/tests/NoGlitches/SwampPalaceTest.php +++ b/tests/NoGlitches/SwampPalaceTest.php @@ -210,7 +210,7 @@ public function accessPool() public function testRegionLockedItems(bool $access, string $item_name, bool $free = null, string $config = null) { if ($config) { - config([$config => $free]); + $this->world->testSetConfig($config, $free); } $this->assertEquals($access, $this->world->getRegion('Swamp Palace')->canFill(Item::get($item_name, $this->world))); diff --git a/tests/OverworldGlitches/DarkWorld/NorthEastTest.php b/tests/OverworldGlitches/DarkWorld/NorthEastTest.php index 6cf8a90b0..cc06aecf8 100644 --- a/tests/OverworldGlitches/DarkWorld/NorthEastTest.php +++ b/tests/OverworldGlitches/DarkWorld/NorthEastTest.php @@ -75,6 +75,10 @@ public function accessPool() ["Ganon", false, [], ['DefeatAgahnim2']], ["Ganon", false, [], ['FireRod', 'Lamp']], ["Ganon", false, [], ['AnySword']], + + ["Pyramid", false, ["MoonPearl", "MagicMirror"]], + ["Pyramid", true, ["PegasusBoots","MoonPearl", "MagicMirror"]], + ["Pyramid", true, ["Lamp", "ProgressiveGlove", "MoonPearl", "MagicMirror"]], ]; } } diff --git a/tests/OverworldGlitches/IcePalaceTest.php b/tests/OverworldGlitches/IcePalaceTest.php index 40d8b2de4..75c4b90c5 100644 --- a/tests/OverworldGlitches/IcePalaceTest.php +++ b/tests/OverworldGlitches/IcePalaceTest.php @@ -101,36 +101,36 @@ public function accessPool() ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'FireRod', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'FireRod', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'FireRod', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'FireRod', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Big Key Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], ["Ice Palace - Compass Chest", false, []], ["Ice Palace - Compass Chest", false, [], ['FireRod', 'Bombos', 'AnySword']], @@ -157,36 +157,36 @@ public function accessPool() ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'FireRod', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Hookshot', 'KeyD5']], ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Hookshot', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'FireRod', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'FireRod', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Cape', 'KeyD5', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'FireRod', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'FireRod', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Map Chest", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hammer', 'Cape', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", false, []], ["Ice Palace - Spike Room", false, [], ['FireRod', 'Bombos', 'AnySword']], @@ -196,36 +196,36 @@ public function accessPool() ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Cape', 'KeyD5', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'FireRod', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'UncleSword', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'ProgressiveSword', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'MasterSword', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L3Sword', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['ProgressiveGlove', 'ProgressiveGlove', 'Bombos', 'L4Sword', 'Cape', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['TitansMitt', 'FireRod', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Hookshot', 'KeyD5']], ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Hookshot', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'FireRod', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'UncleSword', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'MasterSword', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'L3Sword', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'L4Sword', 'CaneOfByrna', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'FireRod', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Cape', 'KeyD5', 'KeyD5']], - ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Cape', 'KeyD5', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'FireRod', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'UncleSword', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'MasterSword', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'L3Sword', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'L4Sword', 'CaneOfByrna', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'FireRod', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'UncleSword', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'ProgressiveSword', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'MasterSword', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'L3Sword', 'Cape', 'Hookshot', 'KeyD5']], + ["Ice Palace - Spike Room", true, ['TitansMitt', 'Bombos', 'L4Sword', 'Cape', 'Hookshot', 'KeyD5']], diff --git a/tests/OverworldGlitches/SkullWoodsTest.php b/tests/OverworldGlitches/SkullWoodsTest.php index f7f7ab3d2..71abb9ed1 100644 --- a/tests/OverworldGlitches/SkullWoodsTest.php +++ b/tests/OverworldGlitches/SkullWoodsTest.php @@ -112,6 +112,7 @@ public function accessPool() ["Skull Woods - Bridge Room", false, []], ["Skull Woods - Bridge Room", false, [], ['MoonPearl', 'MagicMirror']], + ["Skull Woods - Bridge Room", false, [], ['MoonPearl', 'PegasusBoots']], ["Skull Woods - Bridge Room", false, [], ['FireRod']], ["Skull Woods - Bridge Room", true, ['MoonPearl', 'PegasusBoots', 'FireRod']], ["Skull Woods - Bridge Room", true, ['MagicMirror', 'PegasusBoots', 'FireRod']], diff --git a/tests/RandomizerTest.php b/tests/RandomizerTest.php index d1c8deace..3311423ee 100644 --- a/tests/RandomizerTest.php +++ b/tests/RandomizerTest.php @@ -346,4 +346,12 @@ public function testSwordlessFullBossShuffle() $this->assertGreaterThanOrEqual(1, $bosses['Vitreous']); $this->assertGreaterThanOrEqual(1, $bosses['Trinexx']); } + + public function testCompletionistItemCount() + { + $this->world = World::factory('open', ['difficulty' => 'test_rules', 'goal' => 'completionist', 'accessibility' => 'locations']); + $this->randomizer = new Randomizer([$this->world]); + + $this->assertEquals(216, $this->world->getTotalItemCount()); + } } diff --git a/tests/RegionTest.php b/tests/RegionTest.php index 8b5bd2b5b..a5d32621d 100644 --- a/tests/RegionTest.php +++ b/tests/RegionTest.php @@ -25,7 +25,7 @@ public function tearDown(): void public function testRegionLockedItems(bool $access, string $item_name, bool $free = null, string $config = null) { if ($config) { - config([$config => $free]); + $this->region->getWorld()->testSetConfig($config, $free); } $this->assertEquals($access, $this->region->canFill(Item::get($item_name, $this->region->getWorld()))); diff --git a/tests/RomTest.php b/tests/RomTest.php index ef9a67d3e..b28d1674a 100644 --- a/tests/RomTest.php +++ b/tests/RomTest.php @@ -95,14 +95,14 @@ public function testSetSubstitutionsWithLamp() */ public function testSetStartingEquipment(array $result, array $items) { - $world = World::factory(); + $world = World::factory('standard', ['difficulty' => 'test_rules', 'logic' => 'NoGlitches']); $object_items = array_map(function ($item_name) use ($world) { return Item::get($item_name, $world); }, $items); $item_collection = new ItemCollection($object_items); - $config = $world->getConfig(); - $config['rom.rupeeBow'] = false; + $world->testSetConfig('rom.rupeeBow', false); + $config = $world->testGetConfigClone(); $this->rom->initial_sram->setStartingEquipment($item_collection, $config); $this->rom->writeInitialSram(); @@ -377,35 +377,35 @@ public function startingEquipmentDataProvider(): array ['TenBombs', 'TenBombs', 'TenBombs', 'TenBombs', 'TenBombs', 'TenBombs', 'TenBombs', 'TenBombs', 'TenBombs', 'TenBombs'], ], [ - [0x18337A => 0x02, 0x183471 => 0x01], + [0x18337A => 0x02, 0x183476 => 0x01], ['Crystal1'], ], [ - [0x18337A => 0x10, 0x183471 => 0x01], + [0x18337A => 0x10, 0x183476 => 0x01], ['Crystal2'], ], [ - [0x18337A => 0x40, 0x183471 => 0x01], + [0x18337A => 0x40, 0x183476 => 0x01], ['Crystal3'], ], [ - [0x18337A => 0x20, 0x183471 => 0x01], + [0x18337A => 0x20, 0x183476 => 0x01], ['Crystal4'], ], [ - [0x18337A => 0x04, 0x183471 => 0x01], + [0x18337A => 0x04, 0x183476 => 0x01], ['Crystal5'], ], [ - [0x18337A => 0x01, 0x183471 => 0x01], + [0x18337A => 0x01, 0x183476 => 0x01], ['Crystal6'], ], [ - [0x18337A => 0x08, 0x183471 => 0x01], + [0x18337A => 0x08, 0x183476 => 0x01], ['Crystal7'], ], [ - [0x18337A => 0x12, 0x183471 => 0x02], + [0x18337A => 0x12, 0x183476 => 0x02], ['Crystal1', 'Crystal2'], ], ]; @@ -481,6 +481,27 @@ public function testSetByrnaCaveSpikeDamage() $this->assertEquals(0x02, $this->rom->read(0x180195)); } + public function testSetTotalItemCount() + { + $this->rom->setTotalItemCount(216); + + $this->assertEquals([0xD8, 0x00], $this->rom->read(0x180196, 2)); + } + + public function testSetZeldaMirrorFixDefault() + { + $this->rom->setZeldaMirrorFix(); + + $this->assertEquals(0x04, $this->rom->read(0x159A8)); + } + + public function testSetZeldaMirrorFixOff() + { + $this->rom->setZeldaMirrorFix(false); + + $this->assertEquals(0x02, $this->rom->read(0x159A8)); + } + public function testSetClockModeDefault() { $this->rom->setClockMode(); @@ -662,42 +683,49 @@ public function testSetGanonInvincibleCrystals() { $this->rom->setGanonInvincible('crystals'); - $this->assertEquals(0x03, $this->rom->read(0x18003E)); + $this->assertEquals(0x03, $this->rom->read(0x1801A8)); } public function testSetGanonInvincibleDungeons() { $this->rom->setGanonInvincible('dungeons'); - $this->assertEquals(0x02, $this->rom->read(0x18003E)); + $this->assertEquals(0x02, $this->rom->read(0x1801A8)); } public function testSetGanonInvincibleYes() { $this->rom->setGanonInvincible('yes'); - $this->assertEquals(0x01, $this->rom->read(0x18003E)); + $this->assertEquals(0x01, $this->rom->read(0x1801A8)); } public function testSetGanonInvincibleTriforcePieces() { $this->rom->setGanonInvincible('triforce_pieces'); - $this->assertEquals(0x05, $this->rom->read(0x18003E)); + $this->assertEquals(0x05, $this->rom->read(0x1801A8)); } public function testSetGanonInvincibleCrystalsOnly() { $this->rom->setGanonInvincible('crystals_only'); - $this->assertEquals(0x04, $this->rom->read(0x18003E)); + $this->assertEquals(0x04, $this->rom->read(0x1801A8)); } public function testSetGanonInvincibleNo() { $this->rom->setGanonInvincible('no'); - $this->assertEquals(0x00, $this->rom->read(0x18003E)); + $this->assertEquals(0x00, $this->rom->read(0x1801A8)); + } + + public function testSetGanonInvincibleCompletionist() + { + $this->rom->setGanonInvincible('completionist'); + + $this->assertEquals(0x0B, $this->rom->read(0x1801A8)); } public function testSetHeartColorsBlue() @@ -739,38 +767,20 @@ private function assertHeartColorSetting($expectedColor) { switch ($expectedColor) { case 'blue': - $expectedByte = 0x2C; - $expectedFileByte = 0x0D; + $expectedByte = 0x01; break; case 'green': - $expectedByte = 0x3C; - $expectedFileByte = 0x19; + $expectedByte = 0x02; break; case 'yellow': - $expectedByte = 0x28; - $expectedFileByte = 0x09; + $expectedByte = 0x03; break; case 'red': - $expectedByte = 0x24; - $expectedFileByte = 0x05; - break; default: $expectedByte = 0x00; - $expectedFileByte = 0x00; } - $this->assertEquals($expectedByte, $this->rom->read(0x6FA1E)); - $this->assertEquals($expectedByte, $this->rom->read(0x6FA20)); - $this->assertEquals($expectedByte, $this->rom->read(0x6FA22)); - $this->assertEquals($expectedByte, $this->rom->read(0x6FA24)); - $this->assertEquals($expectedByte, $this->rom->read(0x6FA26)); - $this->assertEquals($expectedByte, $this->rom->read(0x6FA28)); - $this->assertEquals($expectedByte, $this->rom->read(0x6FA2A)); - $this->assertEquals($expectedByte, $this->rom->read(0x6FA2C)); - $this->assertEquals($expectedByte, $this->rom->read(0x6FA2E)); - $this->assertEquals($expectedByte, $this->rom->read(0x6FA30)); - - $this->assertEquals($expectedFileByte, $this->rom->read(0x65561)); + $this->assertEquals($expectedByte, $this->rom->read(0x187020)); } public function testSetText() @@ -1235,4 +1245,29 @@ public function testSetSeedStringNotLongerThan21Chars() $this->assertEquals([97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97], $this->rom->read(0x7FC0, 25)); } + + public function testSetHudItemCounterOn() + { + $this->rom->enableHudItemCounter(true); + $this->assertEquals(0x01, $this->rom->read(0x180039)); + + } + + public function testSetHudItemCounterOff() + { + $this->rom->enableHudItemCounter(false); + $this->assertEquals(0x00, $this->rom->read(0x180039)); + } + + public function testEnableFastRomOn() + { + $this->rom->enableFastRom(true); + $this->assertEquals(0x01, $this->rom->read(0x187032)); + } + + public function testEnableFastRomOff() + { + $this->rom->enableFastRom(false); + $this->assertEquals(0x00, $this->rom->read(0x187032)); + } } diff --git a/tests/WorldTest.php b/tests/WorldTest.php index c5d4ae73e..7634ccb18 100644 --- a/tests/WorldTest.php +++ b/tests/WorldTest.php @@ -24,4 +24,41 @@ public function testGetRegionDoesntExist() $this->world->getRegion("This Region Doesn't Exist"); } + + /** + * @param string $logic + * @param bool $free + * @param bool $expected + * + * @dataProvider vanillaDungeonItemsPool + */ + public function testSetVanillaDungeonItems(string $logic, bool $free, bool $expected) + { + $world = World::factory('standard', ['difficulty' => 'test_rules', + 'logic' => $logic, + 'region.wildKeys' => $free, + 'region.wildBigKeys' => $free, + 'region.wildCompasses' => $free, + 'region.wildMaps' => $free, + ]); + + $this->assertEquals($expected, $world->config('rom.vanillaKeys')); + $this->assertEquals($expected, $world->config('rom.vanillaBigKeys')); + $this->assertEquals($expected, $world->config('rom.vanillaCompasses')); + $this->assertEquals($expected, $world->config('rom.vanillaMaps')); + } + + public function vanillaDungeonItemsPool() + { + return [ + ["NoGlitches", true, false], + ["NoGlitches", false, false], + ["MajorGlitches", true, false], + ["MajorGlitches", false, true], + ["HybridMajorGlitches", true, false], + ["HybridMajorGlitches", false, true], + ["NoLogic", true, false], + ["NoLogic", false, true], + ]; + } }