Scheduled system upgrade on Sunday 21 April 2024 15:00-16:00 UTC - On that day, the wiki and other services might go down for 5-15 minutes.

AAMP and One-Hit Obliterator: Difference between pages

From ZeldaMods (Breath of the Wild)
(Difference between pages)
Jump to navigation Jump to search
imported>Leoetlino
(use DynamicPageList to generate a list of extensions)
 
imported>Leoetlino
No edit summary
 
Line 1: Line 1:
<onlyinclude>
== Infinite Attack Power ==
'''AAMP'''s are parameter files (officially: binary resource parameter archives).
[https://gist.github.com/leoetlino/dc4148024537eec3008f0140b544fb8e Source]
</onlyinclude>
== Structure ==
The basic structure of AAMP files is documented on the [[mk8:AAMP (File Format)|MK8 wiki]].


Unlike some other file formats, AAMP files have the exact same structure and endianness on Wii U and Switch, so these files are interchangeable between the consoles.
=== Finite damage value ===


== Usage in ''Breath of the Wild'' ==
The One-Hit Obliterator doesn't actually deal "infinite" damage; its attack power is merely boosted to 99999 points:
AAMP files are used in ''Breath of the Wild'' to store parameters that define the game's behaviour. They are very frequently used inside .sbactorpack archives, where they define most of an Actor's characteristics.


=== Extensions ===
<source lang="cpp">
AAMP files have a wide range of extensions. The file format is the same regardless of the extension, but the parameters defines inside it differ depending on the extension.
void Weapon::x()
{
  ...
  float attackPower = this->getEffectiveAttackPower(nullptr);
  if ( dlc::isOneHitObliteratorActor(this, true) )
  {
    attackPower = 99999.0;
    ...
  }
  ...
}
</source>


<DynamicPageList>category = File extensions (AAMP)</DynamicPageList>
=== Checks ===
The game '''overrides the damage value''' if and only if<ref>0x7100736510</ref>:


== Tools ==
* The weapon actor name is Weapon_Sword_502 (One-Hit Obliterator).
The following tools can be used to convert AAMP files to an editable format, and back again:
* The One-Hit Obliterator is in an "active" state.


* [https://github.com/leoetlino/aamp <code>aamp</code>]
'''For the weapon to be considered active'''<ref>0x7100736778</ref>:
* [https://github.com/Zer0XoL/BotW-aampTool/releases aampTool] (doesn't display root nodes correctly)
 
[[Category:File formats]]
* The actor's profile must be "Weapon".
* The player must be currently playing the One-Hit Obliterator quest (BalladOfHeroes_Step02 must be set and BalladOfHeroes_Step03 must be unset).
* The player must be in a shrine '''or''' must not have escaped the trial.
* The weapon must not have run out of "chemical" power.
 
[[File:PlateauFieldMapAreas.png|thumb|right]]
 
The player is considered to have '''escaped the One-Hit Obliterator trial''' iff<ref>0x71006889D0</ref>:
 
* ("Is on ground" checks that are irrelevant for the damage override check.)
* The player's position is in none of the Plateau [[FieldMapArea.beco|field map areas]] (areas 46, 47, 50)
**The check fails if all of the following coordinates are invalid: (x, z), (x+5.0, z), (x-5.0, z), (x, z+5.0), (x, z-5.0)
* '''or''' the player's Y coordinate is strictly lower than 150.0.
 
== "A voice calls to you" trigger ==
 
Source: [https://static.zeldamods.org/botw_150_AI_AI_PlayerNormal__calc.html ai::PlayerNormal::calc]
 
Every frame, the game checks whether:
 
* add-on content is enabled and version >= 0x300
* '''and''' the player is playing the One-Hit Obliterator quest
* '''and''' there is no active event
* '''and''' the player is not in a shrine
 
If so, PlayerNormal then checks whether Link has escaped the One-Hit Obliterator quest (see above).
 
If he has, and if he is in a grounded state, the Demo605_0<Demo605_0> event is called.
 
If his X coordinate is < -1900.0 or > 0.0, or his Z coordinate is < 1100.0 or > 3000.0, the player is considered to have escaped the quest and the Demo605_0<Demo605_1> event is called to rectify the situation.
 
== Champion powers and blood moons ==
Additionally, in that state, HeroSoulProhibition and BloodyMoonProhibition are '''forcefully set''' every frame.
 
== Fairy/Mipha's Grace ==
Fairies and Mipha's Grace will not work as long as Weapon_Sword_502 is equipped.
 
== LumberjackTree ==
{{empty section}}
 
<references/>
[[Category:Game mechanics]]

Revision as of 14:42, 7 April 2019

Infinite Attack Power

Source

Finite damage value

The One-Hit Obliterator doesn't actually deal "infinite" damage; its attack power is merely boosted to 99999 points:

void Weapon::x()
{
  ...
  float attackPower = this->getEffectiveAttackPower(nullptr);
  if ( dlc::isOneHitObliteratorActor(this, true) )
  {
    attackPower = 99999.0;
    ...
  }
  ...
}

Checks

The game overrides the damage value if and only if[1]:

  • The weapon actor name is Weapon_Sword_502 (One-Hit Obliterator).
  • The One-Hit Obliterator is in an "active" state.

For the weapon to be considered active[2]:

  • The actor's profile must be "Weapon".
  • The player must be currently playing the One-Hit Obliterator quest (BalladOfHeroes_Step02 must be set and BalladOfHeroes_Step03 must be unset).
  • The player must be in a shrine or must not have escaped the trial.
  • The weapon must not have run out of "chemical" power.
PlateauFieldMapAreas.png

The player is considered to have escaped the One-Hit Obliterator trial iff[3]:

  • ("Is on ground" checks that are irrelevant for the damage override check.)
  • The player's position is in none of the Plateau field map areas (areas 46, 47, 50)
    • The check fails if all of the following coordinates are invalid: (x, z), (x+5.0, z), (x-5.0, z), (x, z+5.0), (x, z-5.0)
  • or the player's Y coordinate is strictly lower than 150.0.

"A voice calls to you" trigger

Source: ai::PlayerNormal::calc

Every frame, the game checks whether:

  • add-on content is enabled and version >= 0x300
  • and the player is playing the One-Hit Obliterator quest
  • and there is no active event
  • and the player is not in a shrine

If so, PlayerNormal then checks whether Link has escaped the One-Hit Obliterator quest (see above).

If he has, and if he is in a grounded state, the Demo605_0<Demo605_0> event is called.

If his X coordinate is < -1900.0 or > 0.0, or his Z coordinate is < 1100.0 or > 3000.0, the player is considered to have escaped the quest and the Demo605_0<Demo605_1> event is called to rectify the situation.

Champion powers and blood moons

Additionally, in that state, HeroSoulProhibition and BloodyMoonProhibition are forcefully set every frame.

Fairy/Mipha's Grace

Fairies and Mipha's Grace will not work as long as Weapon_Sword_502 is equipped.

LumberjackTree

  1. 0x7100736510
  2. 0x7100736778
  3. 0x71006889D0