Amiibo drops/fr: Difference between revisions

From ZeldaMods (Breath of the Wild)
Jump to navigation Jump to search
(Created page with "Drops des amiibo")
 
(Created page with "Cette fonction gère le spawn du drop.")
 
(34 intermediate revisions by the same user not shown)
Line 3: Line 3:
{{lowercase}}
{{lowercase}}


== Drop tables ==
== Table de drops ==


{|class="wikitable"
{|class="wikitable"
Line 10: Line 10:
| 0 || Normal ||
| 0 || Normal ||
|-
|-
| 1 || Normal2 || Unused.
| 1 || Normal2 || Inutilisée.
|-
|-
| 2 || SmallHit ||
| 2 || SmallHit ||
|-
|-
| 3 || SmallHit2 || Unused.
| 3 || SmallHit2 || Inutilisée.
|-
|-
| 4 || BigHit ||
| 4 || BigHit ||
|-
|-
| 5 || BigHit2 || Unused.
| 5 || BigHit2 || Inutilisée.
|-
|-
| 6 || GreatHit ||
| 6 || GreatHit ||
|-
|-
| 7 || GreatHit2 || Unused.
| 7 || GreatHit2 || Inutilisée.
|}
|}


== amiibo registering ==
== Enregistrement des amiibo ==


amiibo are registered<ref>0x710064B564 on Switch 1.5.0</ref> every time an amiibo is used.
Un amiibo est enregistré<ref>0x710064B564 sur Switch, 1.5.0</ref> chaque fois qu'un amiibo est utilisé.
* [[AIDef:Action/CreateEpona]] does so after Epona has been spawned.
* [[AIDef:Action/CreateEpona]] le fait une fois qu'Epona a été spawnée.
* [[AIDef:AI/WolfLinkAmiibo]] does it after spawning Wolf Link.
* [[AIDef:AI/WolfLinkAmiibo]] le fait une fois que Link Loup a été spawné.
* [[AIDef:Action/ItemAmiiboSelectDropTable]] registers an amiibo as soon as it is scanned, even before spawning the drops.
* [[AIDef:Action/ItemAmiiboSelectDropTable]] enregistre un amiibo directement après qu'il ait été scanné, et ce avant même de faire apparaître les drops.


Whenever an amiibo is registered:  
À chaque fois qu'un amiibo est enregistré:
*AmiiboMgr determines if it should reset its daily amiibo use history (stored in the AmiiboTouchHistory flag)<ref>0x710064B3C8</ref>.
*AmiiboMgr détermine si il devrait réinitialiser l'historique d'utilisations quotidienne de l'amiibo (stocké dans le flag AmiiboTouchHistory)<ref>0x710064B3C8</ref>.
**If less than 86400 seconds (1 day) have elapsed since the game was launched, don't do anything.{{check}}
**Si moins de 86400 secondes (1 jour) se sont écoulées depuis que le jeu a été lancé, ne fait rien du tout.{{check}}
**AmiiboMgr then computes <code>10000 * now.year + 100 * now.month + now.day</code>. If the value is different from AmiiboLastTouchDate (which would mean that a day has elapsed), the AmiiboTouchHistory array is cleared.
**AmiiboMgr compile ensuite <code>10000 * now.year + 100 * now.month + now.day</code>. Si la valeur est différente de AmiiboLastTouchDate (ce qui signifirait qu'un jour s'est écoulé), le tableau AmiiboTouchHistory est réinitialisé.
*An entry for the scanned amiibo is inserted into AmiiboTouchHistory. Only the last 100 entries are kept.
*Une entrée pour l'amiibo scanné est rajouté dans AmiiboTouchHistory. Seulement les 100 dernières entrées sont gardées.
*For a first time scan, a new entry is inserted into AmiiboTouchHistoryTotal (only the last 200 entries are kept). Otherwise, the scan count is incremented by updating the existing entry.
*Si c'est la première fois que l'amiibo est scanné, une nouvelle entrée est rajoutée dans AmiiboTouchHistoryTotal (seulement les 200 dernières entrées sont gardées). Sinon, le compteur de scans est incrémenté en mettant à jour l'entrée existante.
*Finally, AmiiboLastTouchDate is set to the current date.
*Enfin, AmiiboLastTouchDate est mis à la date actuelle.


The format for AmiiboTouchHistory and AmiiboTouchHistoryTotal entries is "%s_%d_%d_%d" (amiibo UID, amiibo value 1, amiibo value 2, scan count) 
Le format des entrées de AmiiboTouchHistory et de AmiiboTouchHistoryTotal est "%s_%d_%d_%d" (UID de l'amiibo, la première valeur de l'amiibo, la deuxième valeur de l'amiibo, le compteur de scans)


== Logic ==
== Logique ==


A SmallHit happens 20% of the time.
Un SmallHit arrive dans 20% des cas.


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.
Si l'amiibo a été scanné 0, 1, 2, 3 ou 4 fois, un GreatHit arrive dans 20% des cas. Si GreatHit n'a pas été obtenu, le jeu s'assurera de donner un 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.
Si l'Amiibo a été scanné 5 fois ou plus, vous obtiendrez toujours un GreatHit. Dans ce cas, la table de BigHit est ignorée.


For BigHits and GreatHits, the game uses the 'Remain' tables if Find_4Relic_1stClear is set, 'Parasail' if IsGet_PlayerStole2, and 'Normal' otherwise.
Pour les BigHit et GreatHit, le jeu utilise la table 'Remain' si le flag Find_4Relic_1stClear est activé (si le joueur a vaincu sa première créature divine), 'Parasail' si IsGet_PlayerStole2 (si le joueur a récupéré la Paravoile), et 'Normal' sinon.


The game then determines the number of drops from each table<ref>[[AIDef:Action/ItemAmiiboCreateFromDropTable]]</ref>:
Ensuite, le jeu détermine le nombre de drops pour chaque table<ref>[[AIDef:Action/ItemAmiiboCreateFromDropTable]]</ref>:
* For a GreatHit:
* Pour un GreatHit:
** GreatHit drops: random number between RepeatNumMin and RepeatNumMax for GreatHit
** Drops de GreatHit: nombre aléatoire entre RepeatNumMin et RepeatNumMax pour GreatHit
** SmallHit drops: same, but for SmallHit (if there is a SmallHit).
** Drops de SmallHit: item, mais pour SmallHit (si il y a une table SmallHit).
** Normal drops: random number between RepeatNumMin and RepeatNumMax for Normal, minus the GreatHit drop num
** Drops de Normal: nombre aléatoire entre RepeatNumMin et RepearNumMax pour Normal, moins le nombre de drops de GreatHit
* For a BigHit:
* Pour un BigHit:
** BigHit drops: random number between RepeatNumMin and RepeatNumMax for BigHit
** Drops de BigHit: nombre aléatoire entre RepeatNumMin et RepeatNumMax pour BigHit
** SmallHit drops: same, but for SmallHit (if there is a SmallHit).
** Drops de SmallHit: idem, mais pour SmallHit (si il y a une table SmallHit).
** Normal drops: random number between RepeatNumMin and RepeatNumMax for the Normal table, minus the BigHit drop num
** Drops de Normal: nombre aléatoire entre RepeatNumMin et RepeatNumMax pour Normal, moins le nombre de drops de BigHit


After a GreatHit, the amiibo's scan count for the amiibo is reset to 0 (0x710064AC8C).
Après un GreatHit, le nombre de scans de l'amiibo est réinitialisé à 0 (0x710064AC8C)


Dropped items receive the '''IsAmiibo''' actor parameter.
Les objets droppés reçoivent le paramètre d'acteur '''IsAmiibo'''.


=== Special cases ===
=== Cas spéciaux ===


==== Items with the AmiiboArmorItem tag ====
==== Objets avec le tag AmiiboArmorItem ====


If the player hasn't received the complete armor set from an amiibo, armor pieces that they have already received will not be spawned.
Si le joueur n'a pas reçu la tenue complète d'un amiibo, les pièces d'armure qu'il a déjà récupérées ne seront pas spawnées.


==== Items with the Important tag ====
==== Objets avec le tag Important ====


The IsGet_ flag for Important items must be false; otherwise they will not spawn.
Le flag IsGet_ pour les objets Important doit être à faux; autrement, ils ne seront pas spawnés.


==== Items with the AmiiboTreasure tag ====
==== Objets avec le tag AmiiboTreasure ====


Items with the AmiiboTreasure tag are spawned inside of a treasure chest (TBox_Field_Iron).
Les objets avec le tag AmiiboTreasure sont spawnés à l'intérieur d'un coffre en métal (TBox_Field_Iron).


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.
Le paramètre ''SharpWeaponJudgeType'' du coffre est mis à 2, créant [[difficulty scaling#Weapon bonuses|des bonus d'arme différents]] et garantit à l'arme d'avoir au moins un bonus bleu/blanc.


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)
* si le fichier bdrop est Actor/DropTable/Item_Amiibo_DropTable_012 (Daruk), si le nom du drop commence par "Item_Ore_" et n'est pas Item_Ore_A (Diamant brut)
* bdrop resource is Actor/DropTable/Item_Amiibo_DropTable_013 (Revali), drop name starts with "Obj_BombArrow"
* si le fichier bdrop est Actor/DropTable/Item_Amiibo_DropTable_013 (Revali), si le nom du drop commence par "Obj_BombArrow"
* bdrop resource is Actor/DropTable/Item_Amiibo_DropTable_015 (Urbosa), drop name starts with "Obj_ElectricArrow"
* si le fichier bdrop est Actor/DropTable/Item_Amiibo_DropTable_015 (Urbosa), si le nom du drop commence par "Obj_ElectricArrow"


==== Items with a name that starts with GameRomHorse ====
==== Objets dont le nom commence par 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.
Si c'est la première fois que vous scannez un amiibo qui peut drop de l'équipement de cheval (si IsAmiiboDrop_GameRomHorseItem n'est pas vrai), le jeu fera toujours spawner GameRomHorseSaddle_01 et GameRomHorseReins_01.


If you have already received those items, they will not spawn consistently anymore (or not at all{{check}}).
Si vous avez déjà reçu ces objets, ils n'apparaîtront plus à coup sûr (ou plus du tout{{check}}).


==== Items that are marked as amiibo drops ====
==== Objets qui sont marqués en tant que drops d'amiibo ====


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.
Les objets qui sont marqués en tant que drops d'amiibo -- autrement dit les acteurs pour lesquels la clé "Amiibo" existe dans le dictionnaire "drops" dans leur entrée [[ActorInfo]] -- reçoivent un paramètre d'acteur supplémentaire, '''DropTable'''. Il est initialisé à "Amiibo" pour les tables de drop Normal et à "Amiibo_After" pour les tables de drop Parasail ou Remain.


==== Ancient arrows ====
==== Flèches archéoniques ====


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 et Obj_AncientArrow_C_01 ne peuvent spawner que si vous avez déjà reçu des flèches archéoniques à un moment donné (si IsGet_AncientArrow est vrai).


==== Divine Beast helms (Armor_181_Head, Armor_182_Head, Armor_183_Head, Armor_184_Head) ====
==== Heaumes de créatures divines (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<ref>If the corresponding IsGet flag is false</ref>, the chest is guaranteed to contain the Divine Helm.
Lors du scan d'un amiibo de Prodige, si vous avez vaincu n'importe quelle Créature divine '''et''' reçu un Great Hit, '''et''' si vous n'avez pas encore reçu le heaume correspondant<ref>Si le flag IsGet correspondant est faux</ref>, le coffre contient le Heaume divin à coup sûr.


=== Code ===
=== Code ===


Unless otherwise indicated, all member function names below are unofficial. (Only the class name is official.)
Sauf mention contraire, tous les noms de fonction ci-dessous sont non officiels. (Seulement le nom de la class est officiel.)


==== action::ItemAmiiboCreateFromDropTable::getOneDrop ====
==== action::ItemAmiiboCreateFromDropTable::getOneDrop ====


This function is responsible for choosing a drop to be spawned.
Cette fonction est responsable du choix du drop à faire spawn.


https://gist.github.com/leoetlino/a67a874111c1bd97805239f8678e0d00
https://gist.github.com/leoetlino/a67a874111c1bd97805239f8678e0d00
Line 117: Line 117:
==== action::ItemAmiiboCreateFromDropTable::doSpawn ====
==== action::ItemAmiiboCreateFromDropTable::doSpawn ====


This function is responsible for spawning a drop.
Cette fonction gère le spawn du drop.


https://gist.github.com/leoetlino/ff246cb5c16b12c5af14a899d1cd8ffd
https://gist.github.com/leoetlino/ff246cb5c16b12c5af14a899d1cd8ffd

Latest revision as of 13:34, 14 June 2022

Other languages:

Warning: Display title "amiibo drops/fr" overrides earlier display title "Drops des amiibo".

Table de drops

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

Enregistrement des amiibo

Un amiibo est enregistré[1] chaque fois qu'un amiibo est utilisé.

À chaque fois qu'un amiibo est enregistré:

  • AmiiboMgr détermine si il devrait réinitialiser l'historique d'utilisations quotidienne de l'amiibo (stocké dans le flag AmiiboTouchHistory)[2].
    • Si moins de 86400 secondes (1 jour) se sont écoulées depuis que le jeu a été lancé, ne fait rien du tout.[check]
    • AmiiboMgr compile ensuite 10000 * now.year + 100 * now.month + now.day. Si la valeur est différente de AmiiboLastTouchDate (ce qui signifirait qu'un jour s'est écoulé), le tableau AmiiboTouchHistory est réinitialisé.
  • Une entrée pour l'amiibo scanné est rajouté dans AmiiboTouchHistory. Seulement les 100 dernières entrées sont gardées.
  • Si c'est la première fois que l'amiibo est scanné, une nouvelle entrée est rajoutée dans AmiiboTouchHistoryTotal (seulement les 200 dernières entrées sont gardées). Sinon, le compteur de scans est incrémenté en mettant à jour l'entrée existante.
  • Enfin, AmiiboLastTouchDate est mis à la date actuelle.

Le format des entrées de AmiiboTouchHistory et de AmiiboTouchHistoryTotal est "%s_%d_%d_%d" (UID de l'amiibo, la première valeur de l'amiibo, la deuxième valeur de l'amiibo, le compteur de scans)

Logique

Un SmallHit arrive dans 20% des cas.

Si l'amiibo a été scanné 0, 1, 2, 3 ou 4 fois, un GreatHit arrive dans 20% des cas. Si GreatHit n'a pas été obtenu, le jeu s'assurera de donner un BigHit.

Si l'Amiibo a été scanné 5 fois ou plus, vous obtiendrez toujours un GreatHit. Dans ce cas, la table de BigHit est ignorée.

Pour les BigHit et GreatHit, le jeu utilise la table 'Remain' si le flag Find_4Relic_1stClear est activé (si le joueur a vaincu sa première créature divine), 'Parasail' si IsGet_PlayerStole2 (si le joueur a récupéré la Paravoile), et 'Normal' sinon.

Ensuite, le jeu détermine le nombre de drops pour chaque table[3]:

  • Pour un GreatHit:
    • Drops de GreatHit: nombre aléatoire entre RepeatNumMin et RepeatNumMax pour GreatHit
    • Drops de SmallHit: item, mais pour SmallHit (si il y a une table SmallHit).
    • Drops de Normal: nombre aléatoire entre RepeatNumMin et RepearNumMax pour Normal, moins le nombre de drops de GreatHit
  • Pour un BigHit:
    • Drops de BigHit: nombre aléatoire entre RepeatNumMin et RepeatNumMax pour BigHit
    • Drops de SmallHit: idem, mais pour SmallHit (si il y a une table SmallHit).
    • Drops de Normal: nombre aléatoire entre RepeatNumMin et RepeatNumMax pour Normal, moins le nombre de drops de BigHit

Après un GreatHit, le nombre de scans de l'amiibo est réinitialisé à 0 (0x710064AC8C)

Les objets droppés reçoivent le paramètre d'acteur IsAmiibo.

Cas spéciaux

Objets avec le tag AmiiboArmorItem

Si le joueur n'a pas reçu la tenue complète d'un amiibo, les pièces d'armure qu'il a déjà récupérées ne seront pas spawnées.

Objets avec le tag Important

Le flag IsGet_ pour les objets Important doit être à faux; autrement, ils ne seront pas spawnés.

Objets avec le tag AmiiboTreasure

Les objets avec le tag AmiiboTreasure sont spawnés à l'intérieur d'un coffre en métal (TBox_Field_Iron).

Le paramètre SharpWeaponJudgeType du coffre est mis à 2, créant des bonus d'arme différents et garantit à l'arme d'avoir au moins un bonus bleu/blanc.

Exceptions:

  • si le fichier bdrop est Actor/DropTable/Item_Amiibo_DropTable_012 (Daruk), si le nom du drop commence par "Item_Ore_" et n'est pas Item_Ore_A (Diamant brut)
  • si le fichier bdrop est Actor/DropTable/Item_Amiibo_DropTable_013 (Revali), si le nom du drop commence par "Obj_BombArrow"
  • si le fichier bdrop est Actor/DropTable/Item_Amiibo_DropTable_015 (Urbosa), si le nom du drop commence par "Obj_ElectricArrow"

Objets dont le nom commence par GameRomHorse

Si c'est la première fois que vous scannez un amiibo qui peut drop de l'équipement de cheval (si IsAmiiboDrop_GameRomHorseItem n'est pas vrai), le jeu fera toujours spawner GameRomHorseSaddle_01 et GameRomHorseReins_01.

Si vous avez déjà reçu ces objets, ils n'apparaîtront plus à coup sûr (ou plus du tout[check]).

Objets qui sont marqués en tant que drops d'amiibo

Les objets qui sont marqués en tant que drops d'amiibo -- autrement dit les acteurs pour lesquels la clé "Amiibo" existe dans le dictionnaire "drops" dans leur entrée ActorInfo.product.sbyml -- reçoivent un paramètre d'acteur supplémentaire, DropTable. Il est initialisé à "Amiibo" pour les tables de drop Normal et à "Amiibo_After" pour les tables de drop Parasail ou Remain.

Flèches archéoniques

Obj_AncientArrow_A_01 et Obj_AncientArrow_C_01 ne peuvent spawner que si vous avez déjà reçu des flèches archéoniques à un moment donné (si IsGet_AncientArrow est vrai).

Heaumes de créatures divines (Armor_181_Head, Armor_182_Head, Armor_183_Head, Armor_184_Head)

Lors du scan d'un amiibo de Prodige, si vous avez vaincu n'importe quelle Créature divine et reçu un Great Hit, et si vous n'avez pas encore reçu le heaume correspondant[4], le coffre contient le Heaume divin à coup sûr.

Code

Sauf mention contraire, tous les noms de fonction ci-dessous sont non officiels. (Seulement le nom de la class est officiel.)

action::ItemAmiiboCreateFromDropTable::getOneDrop

Cette fonction est responsable du choix du drop à faire spawn.

https://gist.github.com/leoetlino/a67a874111c1bd97805239f8678e0d00

action::ItemAmiiboCreateFromDropTable::doSpawn

Cette fonction gère le spawn du drop.

https://gist.github.com/leoetlino/ff246cb5c16b12c5af14a899d1cd8ffd

References

  1. 0x710064B564 sur Switch, 1.5.0
  2. 0x710064B3C8
  3. AIDef:Action/ItemAmiiboCreateFromDropTable
  4. Si le flag IsGet correspondant est faux