Amiibo drops: Difference between revisions

Marked this version for translation
m (adding translate tags and empty lines for better splitting)
(Marked this version for translation)
Line 2: Line 2:
<translate>
<translate>


<!--T:1-->
{{lowercase}}
{{lowercase}}


== Drop tables ==
== Drop tables == <!--T:2-->


<!--T:3-->
{|class="wikitable"
{|class="wikitable"
! Idx || Name !! Description
! Idx || Name !! Description
Line 26: Line 28:
|}
|}


== amiibo registering ==
== amiibo registering == <!--T:4-->


<!--T:5-->
amiibo are registered<ref>0x710064B564 on Switch 1.5.0</ref> every time an amiibo is used.
amiibo are registered<ref>0x710064B564 on Switch 1.5.0</ref> every time an amiibo is used.
* [[AIDef:Action/CreateEpona]] does so after Epona has been spawned.
* [[AIDef:Action/CreateEpona]] does so after Epona has been spawned.
Line 33: Line 36:
* [[AIDef:Action/ItemAmiiboSelectDropTable]] registers an amiibo as soon as it is scanned, even before spawning the drops.
* [[AIDef:Action/ItemAmiiboSelectDropTable]] registers an amiibo as soon as it is scanned, even before spawning the drops.


<!--T:6-->
Whenever an amiibo is registered:  
Whenever an amiibo is registered:  
*AmiiboMgr determines if it should reset its daily amiibo use history (stored in the AmiiboTouchHistory flag)<ref>0x710064B3C8</ref>.
*AmiiboMgr determines if it should reset its daily amiibo use history (stored in the AmiiboTouchHistory flag)<ref>0x710064B3C8</ref>.
Line 41: Line 45:
*Finally, AmiiboLastTouchDate is set to the current date.
*Finally, AmiiboLastTouchDate is set to the current date.


<!--T:7-->
The format for AmiiboTouchHistory and AmiiboTouchHistoryTotal entries is "%s_%d_%d_%d" (amiibo UID, amiibo value 1, amiibo value 2, scan count) 
The format for AmiiboTouchHistory and AmiiboTouchHistoryTotal entries is "%s_%d_%d_%d" (amiibo UID, amiibo value 1, amiibo value 2, scan count) 


== Logic ==
== Logic == <!--T:8-->


<!--T:9-->
A SmallHit happens 20% of the time.
A SmallHit happens 20% of the time.


<!--T:10-->
If the amiibo has been scanned 0, 1, 2, 3 or 4 times, you'll get a GreatHit 20% of the time. If you didn't get a GreatHit, the game will ensure you get a BigHit.
If the amiibo has been scanned 0, 1, 2, 3 or 4 times, you'll get a GreatHit 20% of the time. If you didn't get a GreatHit, the game will ensure you get a BigHit.


<!--T:11-->
If the amiibo has been scanned 5 times or more, you'll always get a GreatHit. In this case, the BigHit table is ignored.
If the amiibo has been scanned 5 times or more, you'll always get a GreatHit. In this case, the BigHit table is ignored.


<!--T:12-->
For BigHits and GreatHits, the game uses the 'Remain' tables if Find_4Relic_1stClear is set, 'Parasail' if IsGet_PlayerStole2, and 'Normal' otherwise.
For BigHits and GreatHits, the game uses the 'Remain' tables if Find_4Relic_1stClear is set, 'Parasail' if IsGet_PlayerStole2, and 'Normal' otherwise.


<!--T:13-->
The game then determines the number of drops from each table<ref>[[AIDef:Action/ItemAmiiboCreateFromDropTable]]</ref>:
The game then determines the number of drops from each table<ref>[[AIDef:Action/ItemAmiiboCreateFromDropTable]]</ref>:
* For a GreatHit:
* For a GreatHit:
Line 63: Line 73:
** Normal drops: random number between RepeatNumMin and RepeatNumMax for the Normal table, minus the BigHit drop num
** Normal drops: random number between RepeatNumMin and RepeatNumMax for the Normal table, minus the BigHit drop num


<!--T:14-->
After a GreatHit, the amiibo's scan count for the amiibo is reset to 0 (0x710064AC8C).
After a GreatHit, the amiibo's scan count for the amiibo is reset to 0 (0x710064AC8C).


<!--T:15-->
Dropped items receive the '''IsAmiibo''' actor parameter.
Dropped items receive the '''IsAmiibo''' actor parameter.


=== Special cases ===
=== Special cases === <!--T:16-->


==== Items with the AmiiboArmorItem tag ====
==== Items with the AmiiboArmorItem tag ==== <!--T:17-->


<!--T:18-->
If the player hasn't received the complete armor set from an amiibo, armor pieces that they have already received will not be spawned.
If the player hasn't received the complete armor set from an amiibo, armor pieces that they have already received will not be spawned.


==== Items with the Important tag ====
==== Items with the Important tag ==== <!--T:19-->


<!--T:20-->
The IsGet_ flag for Important items must be false; otherwise they will not spawn.
The IsGet_ flag for Important items must be false; otherwise they will not spawn.


==== Items with the AmiiboTreasure tag ====
==== Items with the AmiiboTreasure tag ==== <!--T:21-->


<!--T:22-->
Items with the AmiiboTreasure tag are spawned inside of a treasure chest (TBox_Field_Iron).
Items with the AmiiboTreasure tag are spawned inside of a treasure chest (TBox_Field_Iron).


<!--T:23-->
The chest's "SharpWeaponJudgeType" parameter is set to 2, which causes [[difficulty scaling#Weapon bonuses|different weapon bonuses]] and guarantees the weapon will have at least a blue/white modifier.
The chest's "SharpWeaponJudgeType" parameter is set to 2, which causes [[difficulty scaling#Weapon bonuses|different weapon bonuses]] and guarantees the weapon will have at least a blue/white modifier.


<!--T:24-->
Exceptions:
Exceptions:
* bdrop resource is Actor/DropTable/Item_Amiibo_DropTable_012 (Daruk), drop name starts with "Item_Ore_" and is not Item_Ore_A (Diamond)
* bdrop resource is Actor/DropTable/Item_Amiibo_DropTable_012 (Daruk), drop name starts with "Item_Ore_" and is not Item_Ore_A (Diamond)
Line 88: Line 105:
* bdrop resource is Actor/DropTable/Item_Amiibo_DropTable_015 (Urbosa), drop name starts with "Obj_ElectricArrow"
* bdrop resource is Actor/DropTable/Item_Amiibo_DropTable_015 (Urbosa), drop name starts with "Obj_ElectricArrow"


==== Items with a name that starts with GameRomHorse ====
==== Items with a name that starts with GameRomHorse ==== <!--T:25-->


<!--T:26-->
If it is the first time you are scanning an amiibo that can drop horse equipment (if IsAmiiboDrop_GameRomHorseItem isn't set), the game will always spawn GameRomHorseSaddle_01 and GameRomHorseReins_01.
If it is the first time you are scanning an amiibo that can drop horse equipment (if IsAmiiboDrop_GameRomHorseItem isn't set), the game will always spawn GameRomHorseSaddle_01 and GameRomHorseReins_01.


<!--T:27-->
If you have already received those items, they will not spawn consistently anymore (or not at all{{check}}).
If you have already received those items, they will not spawn consistently anymore (or not at all{{check}}).


==== Items that are marked as amiibo drops ====
==== Items that are marked as amiibo drops ==== <!--T:28-->


<!--T:29-->
Items that are marked as amiibo drops -- i.e. actors for which the "Amiibo" key exists in the "drops" dictionary in their [[ActorInfo]] entry -- receive an additional '''DropTable''' actor parameter. It is set to "Amiibo" for normal drop lists and "Amiibo_After" for Parasail/Remain lists.
Items that are marked as amiibo drops -- i.e. actors for which the "Amiibo" key exists in the "drops" dictionary in their [[ActorInfo]] entry -- receive an additional '''DropTable''' actor parameter. It is set to "Amiibo" for normal drop lists and "Amiibo_After" for Parasail/Remain lists.


==== Ancient arrows ====
==== Ancient arrows ==== <!--T:30-->


<!--T:31-->
Obj_AncientArrow_A_01 and Obj_AncientArrow_C_01 can only spawn if you have already received Ancient Arrows at some point (if IsGet_AncientArrow is set).
Obj_AncientArrow_A_01 and Obj_AncientArrow_C_01 can only spawn if you have already received Ancient Arrows at some point (if IsGet_AncientArrow is set).


==== Divine Beast helms (Armor_181_Head, Armor_182_Head, Armor_183_Head, Armor_184_Head) ====
==== Divine Beast helms (Armor_181_Head, Armor_182_Head, Armor_183_Head, Armor_184_Head) ==== <!--T:32-->


<!--T:33-->
When scanning a Champion amiibo, if you've completed any Divine Beast '''and''' received a Great Hit, '''and''' if you haven't already received the corresponding helm<ref>If the corresponding IsGet flag is false</ref>, the chest is guaranteed to contain the Divine Helm.
When scanning a Champion amiibo, if you've completed any Divine Beast '''and''' received a Great Hit, '''and''' if you haven't already received the corresponding helm<ref>If the corresponding IsGet flag is false</ref>, the chest is guaranteed to contain the Divine Helm.


=== Code ===
=== Code === <!--T:34-->


<!--T:35-->
Unless otherwise indicated, all member function names below are unofficial. (Only the class name is official.)
Unless otherwise indicated, all member function names below are unofficial. (Only the class name is official.)


==== action::ItemAmiiboCreateFromDropTable::getOneDrop ====
==== action::ItemAmiiboCreateFromDropTable::getOneDrop ==== <!--T:36-->


<!--T:37-->
This function is responsible for choosing a drop to be spawned.
This function is responsible for choosing a drop to be spawned.


<!--T:38-->
https://gist.github.com/leoetlino/a67a874111c1bd97805239f8678e0d00
https://gist.github.com/leoetlino/a67a874111c1bd97805239f8678e0d00


==== action::ItemAmiiboCreateFromDropTable::doSpawn ====
==== action::ItemAmiiboCreateFromDropTable::doSpawn ==== <!--T:39-->


<!--T:40-->
This function is responsible for spawning a drop.
This function is responsible for spawning a drop.


<!--T:41-->
https://gist.github.com/leoetlino/ff246cb5c16b12c5af14a899d1cd8ffd
https://gist.github.com/leoetlino/ff246cb5c16b12c5af14a899d1cd8ffd


translator
745

edits