Object respawning: Difference between revisions

Jump to navigation Jump to search
Marked this version for translation
m (Prepare for translation)
(Marked this version for translation)
Line 3: Line 3:
<translate>
<translate>


<!--T:1-->
Many materials, weapons and enemies in ''Breath of the Wild'' respawn after a certain amount of time to prevent the world from getting too empty. The exact respawn/revival policy is specific to each actor.
Many materials, weapons and enemies in ''Breath of the Wild'' respawn after a certain amount of time to prevent the world from getting too empty. The exact respawn/revival policy is specific to each actor.


<!--T:2-->
GameData flags that are used to track object revival are called "revival flags". They are always loaded, whether the object exists in the world or not.
GameData flags that are used to track object revival are called "revival flags". They are always loaded, whether the object exists in the world or not.


== Shop items ==
== Shop items == <!--T:3-->


<!--T:4-->
Shop items are revived every day at midnight, assuming the following conditions are satisfied:
Shop items are revived every day at midnight, assuming the following conditions are satisfied:
* the player is in none of the areas that are associated with the shop item; alternatively the player is not on MainField (on the main map)
* the player is in none of the areas that are associated with the shop item; alternatively the player is not on MainField (on the main map)
* and, for items with the Arrow tag, the player has fewer than 50<ref>This is configured by [[ActorInfo]] (itemSaleRevivalCount property).</ref> arrows of the relevant type in their inventory
* and, for items with the Arrow tag, the player has fewer than 50<ref>This is configured by [[ActorInfo]] (itemSaleRevivalCount property).</ref> arrows of the relevant type in their inventory


<!--T:5-->
[1.3.1+] The inventory check function uses the player's real inventory data, not temporary quest inventory data. This means that warping into the Trial of the Sword or starting any other quest that temporarily clears the inventory in an attempt to trick [[GameDataMgr]] into restocking arrows no longer works.
[1.3.1+] The inventory check function uses the player's real inventory data, not temporary quest inventory data. This means that warping into the Trial of the Sword or starting any other quest that temporarily clears the inventory in an attempt to trick [[GameDataMgr]] into restocking arrows no longer works.


<!--T:6-->
Revival flags for shop items have their [[ResetType]] set to 3.
Revival flags for shop items have their [[ResetType]] set to 3.


=== The revival map grid ===
=== The revival map grid === <!--T:7-->


<!--T:8-->
The revival map grid is used for shop items and for randomly-respawned items. It is slightly different from the regular map unit grid and features 10 columns (0..9) and 8 rows (0..7).
The revival map grid is used for shop items and for randomly-respawned items. It is slightly different from the regular map unit grid and features 10 columns (0..9) and 8 rows (0..7).


<!--T:9-->
Given an item located in column <code>itemCol</code> and row <code>itemRow</code>, the player is considered to not be in its map area ''if and only if'':
Given an item located in column <code>itemCol</code> and row <code>itemRow</code>, the player is considered to not be in its map area ''if and only if'':
* itemCol < playerCol1
* itemCol < playerCol1
Line 27: Line 34:
* or itemRow > playerRow2
* or itemRow > playerRow2


<!--T:10-->
where the player column and row values are calculated as follows:
where the player column and row values are calculated as follows:


<!--T:11-->
<source lang="c++">
<source lang="c++">
int col = std::clamp(((signed int)x + 5000) / 1000, 0, 9);
int col = std::clamp(((signed int)x + 5000) / 1000, 0, 9);
Line 48: Line 57:
</source>
</source>


<!--T:12-->
This grid is shown on the object map. It is also possible to show the no-revival area for an object by right clicking on it.
This grid is shown on the object map. It is also possible to show the no-revival area for an object by right clicking on it.


== Revival during blood moons (RevivalBloodyMoon) ==
== Revival during blood moons (RevivalBloodyMoon) == <!--T:13-->


<!--T:14-->
This policy is used for most weapons and enemies. Every time a [[blood moon]] occurs, all associated revival flags are reset to their initial value.
This policy is used for most weapons and enemies. Every time a [[blood moon]] occurs, all associated revival flags are reset to their initial value.


<!--T:15-->
Revival flags for objects under this policy have their [[ResetType]] set to 1.
Revival flags for objects under this policy have their [[ResetType]] set to 1.


<!--T:16-->
{{actor list|label='''Actors under the RevivalBloodyMoon policy'''|content=
{{actor list|label='''Actors under the RevivalBloodyMoon policy'''|content=
* Ancient Battle Axe (Weapon_Lsword_013)
* Ancient Battle Axe (Weapon_Lsword_013)
Line 384: Line 397:
}}
}}


== No automatic revival (RevivalNone) ==
== No automatic revival (RevivalNone) == <!--T:17-->


<!--T:18-->
Objects under the RevivalNone policy will not be automatically revived.
Objects under the RevivalNone policy will not be automatically revived.


<!--T:19-->
{{actor list|label='''Actors under the RevivalNone policy'''|content=
{{actor list|label='''Actors under the RevivalNone policy'''|content=
* Ancient Arrow (Obj_AncientArrow_A_01)
* Ancient Arrow (Obj_AncientArrow_A_01)
Line 489: Line 504:
}}
}}


== No drop revival (RevivalNoneForDrop) ==
== No drop revival (RevivalNoneForDrop) == <!--T:20-->


<!--T:21-->
Drops for objects under the RevivalNoneForDrop policy will not be revived. This is used for broken Guardians.
Drops for objects under the RevivalNoneForDrop policy will not be revived. This is used for broken Guardians.


<!--T:22-->
{{actor list|label='''Actors under the RevivalNoneForDrop policy'''|content=
{{actor list|label='''Actors under the RevivalNoneForDrop policy'''|content=
* FldObj_RuinGuardianSand_A_Dynamic
* FldObj_RuinGuardianSand_A_Dynamic
Line 499: Line 516:
}}
}}


== No revival for use flag (RevivalNoneForUsed) ==
== No revival for use flag (RevivalNoneForUsed) == <!--T:23-->


<!--T:24-->
The use status for objects under the RevivalNoneForUsed policy will not be reset. This is notably used for terminals.
The use status for objects under the RevivalNoneForUsed policy will not be reset. This is notably used for terminals.


<!--T:25-->
{{actor list|label='''Actors under the RevivalNoneForUsed policy'''|content=
{{actor list|label='''Actors under the RevivalNoneForUsed policy'''|content=
* BM_Relief
* BM_Relief
Line 568: Line 587:
}}
}}


== Random revival (RevivalRandom) ==
== Random revival (RevivalRandom) == <!--T:26-->


<!--T:27-->
Objects under the RevivalRandom policy will be revived at random times ''independently of'' blood moons. This is used for most materials (fruits, rocks, etc.)
Objects under the RevivalRandom policy will be revived at random times ''independently of'' blood moons. This is used for most materials (fruits, rocks, etc.)


<!--T:28-->
Revival flags for objects under this policy have their [[ResetType]] set to 0 and the position of the object on the main map is stored in the upper 7 bits of the initial flag value.
Revival flags for objects under this policy have their [[ResetType]] set to 0 and the position of the object on the main map is stored in the upper 7 bits of the initial flag value.


<!--T:29-->
{{actor list|label='''Actors under the RevivalRandom policy'''|content=
{{actor list|label='''Actors under the RevivalRandom policy'''|content=
* Acorn (Item_Fruit_K)
* Acorn (Item_Fruit_K)
Line 831: Line 853:
}}
}}


=== RevivalRandom and RevivalRandomForDrop logic ===
=== RevivalRandom and RevivalRandomForDrop logic === <!--T:30-->


<!--T:31-->
Every 60 seconds<ref>Time spent in menus and cutscenes does not count</ref>, [[RadarMgr]] determines where the player is on the revival grid.
Every 60 seconds<ref>Time spent in menus and cutscenes does not count</ref>, [[RadarMgr]] determines where the player is on the revival grid.


<!--T:32-->
If the player is on AocField (Trial of the Sword):
If the player is on AocField (Trial of the Sword):
* Special flags (with the reset data set to 127) are ''skipped''.
* Special flags (with the reset data set to 127) are ''skipped''.
* Any other revival flag has a ''1% chance'' of being reset.
* Any other revival flag has a ''1% chance'' of being reset.


<!--T:33-->
Otherwise:
Otherwise:
* If the player is on MainField, special flags have a ''1% chance'' of being reset.
* If the player is on MainField, special flags have a ''1% chance'' of being reset.
Line 844: Line 869:
* In any other case, flags have a ''1% chance'' of being reset, but only if the player is not in the same map area as the object that is to be revived.
* In any other case, flags have a ''1% chance'' of being reset, but only if the player is not in the same map area as the object that is to be revived.


== Random drop revival (RevivalRandomForDrop) ==
== Random drop revival (RevivalRandomForDrop) == <!--T:34-->


<!--T:35-->
Drops of objects under the RevivalRandom policy will be revived at random times ''independently of'' blood moons. This is used for wooden boxes and other things that contain materials (fruits, etc.)
Drops of objects under the RevivalRandom policy will be revived at random times ''independently of'' blood moons. This is used for wooden boxes and other things that contain materials (fruits, etc.)


<!--T:36-->
Revival flags for objects under this policy have their [[ResetType]] set to 0 and the position of the object on the main map is stored in the upper 7 bits of the initial flag value.
Revival flags for objects under this policy have their [[ResetType]] set to 0 and the position of the object on the main map is stored in the upper 7 bits of the initial flag value.


<!--T:37-->
{{actor list|label='''Actors under the RevivalRandomForDrop policy'''|content=
{{actor list|label='''Actors under the RevivalRandomForDrop policy'''|content=
* Barrel (Barrel)
* Barrel (Barrel)
Line 891: Line 919:
}}
}}


== Revival whenever the Lord of the Mountain appears (RevivalUnderGodTime) ==
== Revival whenever the Lord of the Mountain appears (RevivalUnderGodTime) == <!--T:38-->


<!--T:39-->
Objects under the RevivalUnderGodTime policy will be revived whenever the Lord of the Mountain appears (more precisely, when the AnimalMaster_Appearance flag is set by [[WorldMgr]]).
Objects under the RevivalUnderGodTime policy will be revived whenever the Lord of the Mountain appears (more precisely, when the AnimalMaster_Appearance flag is set by [[WorldMgr]]).


<!--T:40-->
Revival flags for objects under this policy have their [[ResetType]] set to 4.
Revival flags for objects under this policy have their [[ResetType]] set to 4.


<!--T:41-->
{{actor list|label='''Actors under the RevivalUnderGodTime policy'''|content=
{{actor list|label='''Actors under the RevivalUnderGodTime policy'''|content=
* Blupee (Animal_RupeeRabbit_A)
* Blupee (Animal_RupeeRabbit_A)
translator
745

edits

Navigation menu