Difficulty scaling/en: Difference between revisions

Updating to match new version of source page
(Updating to match new version of source page)
(Updating to match new version of source page)
Line 1: Line 1:
<languages/>
<languages/>
'''Difficulty scaling''' is a mechanic in ''Breath of the Wild'' that results in enemies and weapons being progressively replaced by more powerful variants during a playthrough.
'''Difficulty scaling''' is a mechanic in ''Breath of the Wild'' that results in enemies and weapons being progressively replaced by more powerful variants during a playthrough.


== Points ==
== Points ==
The scaling system is based on a point system. Killing enemies is the ''only way'' to receive points.
The scaling system is based on a point system. Killing enemies is the ''only way'' to receive points.


Line 21: Line 19:
The subsystem provides two functions ([[Difficulty scaling#Ecosystem::LevelSensor::scaleWeapon|<code>scaleWeapon</code>]] and [[Difficulty scaling#Ecosystem::LevelSensor::scaleActor|<code>scaleActor</code>]]) that may be called when a weapon or enemy actor is created.
The subsystem provides two functions ([[Difficulty scaling#Ecosystem::LevelSensor::scaleWeapon|<code>scaleWeapon</code>]] and [[Difficulty scaling#Ecosystem::LevelSensor::scaleActor|<code>scaleActor</code>]]) that may be called when a weapon or enemy actor is created.


== Scaling inhibitors ==  
== Scaling inhibitors ==


Both scaling functions will immediately return without doing anything if:
Both scaling functions will immediately return without doing anything if:
Line 30: Line 28:


== Weapons ==
== Weapons ==
'scaleWeapon' is called (i.e. weapons may be scaled) for a weapon if:
'scaleWeapon' is called (i.e. weapons may be scaled) for a weapon if:
* '''For standalone weapons''': The actor property 'LevelSensorMode' is higher than 1 '''and''' it wasn't already picked up.
* '''For standalone weapons''': The actor property 'LevelSensorMode' is higher than 1 '''and''' it wasn't already picked up.
Line 49: Line 48:


{|class="wikitable"
{|class="wikitable"
! Bonus !! Available in modifier tiers
! Available in modifier tiers
|-
|-
|-
|-
| Attack up || Blue/White and Yellow
| Blue/White and Yellow
|-
|-
| Durability up || Blue/White and Yellow
| Blue/White and Yellow
|-
|-
| Long throw || Yellow
| Yellow
|-
|-
| Multi-shot burst (bows) || Yellow
| Yellow
|-
|-
| Quick shot (bows) || Yellow
| Yellow
|-
|-
| AddSurfMaster || Yellow
| Yellow
|-
|-
| Shield guard up || Blue/White and Yellow
| Blue/White and Yellow
|-
|-
| Critical Hit || Blue/White
| Blue/White
|-
|-
| ZoomRapid || Yellow
| Yellow
|}
|}


Line 75: Line 74:
* AddSurfMaster is a bonus that only applies to shields and gives them a lower friction for shield surfing. That bonus type is unused in the game.
* AddSurfMaster is a bonus that only applies to shields and gives them a lower friction for shield surfing. That bonus type is unused in the game.


=== Bonus values ===
=== Bonus values ===  


Bonus values (e.g. the durability or attack power increase) are determined from [[ActorParam/GeneralParamList]] (with a copy of the information in [[ActorInfoData]]). Valid ranges and bonuses for each weapon are configured in the WeaponCommon section.
Bonus values (e.g. the durability or attack power increase) are determined from [[ActorParam/GeneralParamList]] (with a copy of the information in [[ActorInfoData]]). Valid ranges and bonuses for each weapon are configured in the WeaponCommon section.
Line 81: Line 80:
==== amiibo ====
==== amiibo ====
{|class="wikitable"
{|class="wikitable"
! Bonus !! Value that is used for the bonus effect
! Value that is used for the bonus effect
|-
|-
| None || -
| None || -
|-
|-
| Attack up || addAtkMax
| Attack up || addAtkMax
|-
|-
| Durability up || addLifeMax
| Durability up || addLifeMax
|-
|-
| Long throw || addThrowMax
| Long throw || addThrowMax
|-
|-
| Multi-shot burst (bows) || 5-shot burst
| 5-shot burst
|-
|-
| Quick shot (bows) || addRapidFireMin
| Quick shot (bows) || addRapidFireMin
|-
|-
| AddSurfMaster || [[bgparamlist#Global|GlobalParameter]]::shieldSurfMasterFrictionRatio
| AddSurfMaster || [[bgparamlist#Global|GlobalParameter]]::shieldSurfMasterFrictionRatio
|-
|-
| Shield guard up || addGuardMax
| Shield guard up || addGuardMax
|}
|}


Line 106: Line 105:


{|class="wikitable"
{|class="wikitable"
! Bonus !! Value that is used for the bonus effect
! Value that is used for the bonus effect
|-
|-
| None || -
| None || -
|-
|-
| Attack up || Random integer between addAtkMin and addAtkMax
| Random integer between addAtkMin and addAtkMax
|-
|-
| Durability up || Random integer between addLifeMin and addLifeMax
| Random integer between addLifeMin and addLifeMax
|-
|-
| Long throw || Random float between addThrowMin and addThrowMax
| Random float between addThrowMin and addThrowMax
|-
|-
| Multi-shot burst (bows) || 5-shot burst
| 5-shot burst
|-
|-
| Quick shot (bows) || Random float between addRapidFireMin and addRapidFireMax
| Random float between addRapidFireMin and addRapidFireMax
|-
|-
| AddSurfMaster || [[bgparamlist#Global|GlobalParameter]]::shieldSurfMasterFrictionRatio
| [[bgparamlist#Global|GlobalParameter]]::shieldSurfMasterFrictionRatio
|-
|-
| Shield guard up || Random integer between addGuardMin and addGuardMax
| Random integer between addGuardMin and addGuardMax
|}
|}


Line 139: Line 138:
[1.3.0] In Master Mode, '''all''' enemies are automatically ranked up one tier by default '''post scaling''', independently of 'LevelSensorMode'. [[Actor]]s can receive two additional parameters:
[1.3.0] In Master Mode, '''all''' enemies are automatically ranked up one tier by default '''post scaling''', independently of 'LevelSensorMode'. [[Actor]]s can receive two additional parameters:
{| class="wikitable"
{| class="wikitable"
! Parameter
! Parameter
! Default
! Default
! Description
! Description
|-
|-
| IsHardModeActor
| IsHardModeActor
| false
| false
| Controls whether an enemy only shows up in Master Mode.
| Controls whether an enemy only shows up in Master Mode.
|-
|-
| DisableRankUpForHardMode
| DisableRankUpForHardMode
| false
| false
| Controls whether the automatic rankup applies to an enemy.
| Controls whether the automatic rankup applies to an enemy.
|}
|}
In Master Mode, IsHardModeActor, DisableRankUpForHardMode and LevelSensorMode are combined on some actors to keep low-level enemies in the overworld (e.g. Red Bokoblin south of the Great Plateau).
In Master Mode, IsHardModeActor, DisableRankUpForHardMode and LevelSensorMode are combined on some actors to keep low-level enemies in the overworld (e.g. Red Bokoblin south of the Great Plateau).
Line 155: Line 154:
== Properties ==
== Properties ==


=== <code>LevelSensorMode</code> ===
=== <code>LevelSensorMode</code> === This [[actor]] property controls whether scaling is enabled for an enemy or weapon. Also applies to any weapons held by an enemy since 'scaleWeapon' is called when an enemy drops their weapon.
This [[actor]] property controls whether scaling is enabled for an enemy or weapon. Also applies to any weapons held by an enemy since 'scaleWeapon' is called when an enemy drops their weapon.


Note that this doesn't apply to weapons that are attached to a Hinox's necklace, because Hinoxes use a different underlying enemy actor which overrides the 'on weapon dropped' function and ignores 'LevelSensorMode'.
Note that this doesn't apply to weapons that are attached to a Hinox's necklace, because Hinoxes use a different underlying enemy actor which overrides the 'on weapon dropped' function and ignores 'LevelSensorMode'.


=== <code>SharpWeaponJudgeType</code> ===
=== <code>SharpWeaponJudgeType</code> ===
This actor property controls the ''minimum'' modifier tier that a weapon can receive.
This actor property controls the ''minimum'' modifier tier that a weapon can receive.


Line 166: Line 165:


{| class="wikitable"
{| class="wikitable"
! Value
! Value
! Description
! Description
|-
|-
| 0
| 0
| '''None''': No modifiers.
| '''None''': No modifiers.
|-
|-
| 1
| 1
| '''RandomBlue''': Weapon will randomly get at least a blue modifier (with <code>weaponCommonSharpWeaponPer</code> being the probability).
| '''RandomBlue''': Weapon will randomly get at least a blue modifier (with <code>weaponCommonSharpWeaponPer</code> being the probability).
|-
|-
| 2
| 2
| '''Blue''': Weapon will get at least a blue modifier.
| '''Blue''': Weapon will get at least a blue modifier.
|-
|-
| 3
| 3
| '''Yellow''': Weapon will get at least a yellow modifier.
| '''Yellow''': Weapon will get at least a yellow modifier.
|-
|-
| 4
| 4
| '''NoneForced''' (chests only): Weapon will ''never'' spawn with any modifiers. ''This overrides regular scaling.''
| '''NoneForced''' (chests only): Weapon will ''never'' spawn with any modifiers. ''This overrides regular scaling.''
|}
|}


Line 383: Line 382:


Interestingly, the Windblight AI function relies doesn't check the actor tag but the actor name instead. For flag 8 to be set, the actor name must be <code>Enemy_SiteBoss_Bow_R</code>.
Interestingly, the Windblight AI function relies doesn't check the actor tag but the actor name instead. For flag 8 to be set, the actor name must be <code>Enemy_SiteBoss_Bow_R</code>.


<references />
<references />
[[Category:Internals]]
[[Category:Internals]]
[[Category:Game mechanics]]
[[Category:Game mechanics]]
826

edits