amiibo drops

From ZeldaMods (Breath of the Wild)
Revision as of 17:21, 26 October 2018 by imported>Leoetlino (→‎Logic)
Jump to navigation Jump to search

Drop tables

Idx Name Description
0 Normal
1 Normal2 Unused.
2 SmallHit
3 SmallHit2 Unused.
4 BigHit
5 BigHit2 Unused.
6 GreatHit
7 GreatHit2 Unused.

amiibo registering

amiibo are registered[1] every time an amiibo is used.

Whenever an amiibo is registered:

  • AmiiboMgr determines if it should reset its daily amiibo use history (stored in the AmiiboTouchHistory flag)[2].
    • If less than 86400 seconds (1 day) have elapsed since the game was launched, don't do anything.[check]
    • AmiiboMgr then computes 10000 * now.year + 100 * now.month + now.day. If the value is different from AmiiboLastTouchDate (which would mean that a day has elapsed), the AmiiboTouchHistory array is cleared.
  • The amiibo UID is inserted into AmiiboTouchHistory. Only the last 100 entries are kept.
  • It is also inserted into AmiiboTouchHistoryTotal. Only the last 200 entries are kept.
  • Finally, AmiiboLastTouchDate is set to 10000 * now.year + 100 * now.month + now.day to update the last amiibo usage date.

Logic

A SmallHit will happen 20% of the time.

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 5 times or more, you'll always get a GreatHit. In this case, the BigHit table is ignored.

For BigHits and GreatHits, the game uses the 'Remain' tables if Find_4Relic_1stClear is set, 'Parasail' if IsGet_PlayerStole2, and 'Normal' otherwise.

The game then determines the number of drops from each table[3]:

  • For a GreatHit:
    • GreatHit drops: random number between RepeatNumMin and RepeatNumMax for the GreatHit table
    • SmallHit drops: same, but for SmallHit (if there is a SmallHit).
    • Normal drops: random number between RepeatNumMin and RepeatNumMax for Normal - GreatHit drop num
  • For a BigHit:
    • BigHit drops: random number between RepeatNumMin and RepeatNumMax for BigHit
    • SmallHit drops: same, but for SmallHit (if there is a SmallHit).
    • Normal drops: random number between RepeatNumMin and RepeatNumMax for the Normal table, minus the BigHit drop num

Special cases

Items with the AmiiboArmorItem tag

If you haven't received an amiibo armor item (e.g. Divine Beast helmets), it will take priority over other drops.

Items with a name that starts with GameRomHorse

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 you have already received those items, they will not spawn consistently anymore (or not at all[check]).

Ancient arrows

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).

Items with the Important tag

The IsGet_ flag for Important items must be true; otherwise they will not spawn.

Drops from Item_Amiibo_DropTable_012, Item_Amiibo_DropTable_013, Item_Amiibo_DropTable_015

???

Ore, electric/bomb arrows, GreatHit items

These are always spawned as a chest item (TBox_Field_Iron). The chest always receives the "IsAmiibo" property and "SharpWeaponJudgeType" is set to 2, which causes different weapon bonuses and guarantees the weapon will have at least a blue/white modifier.

Divine Beast helms (Armor_181_Head, Armor_182_Head, Armor_183_Head, Armor_184_Head)

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[4], the chest is guaranteed to contain the Divine Helm.

References

  1. 0x710064B564 on Switch 1.5.0
  2. 0x710064B3C8
  3. AIDef:Action/ItemAmiiboCreateFromDropTable
  4. If the corresponding IsGet flag is false