<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://zeldamods.org/w_botw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chubby+Bub</id>
	<title>ZeldaMods (Breath of the Wild) - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://zeldamods.org/w_botw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Chubby+Bub"/>
	<link rel="alternate" type="text/html" href="https://zeldamods.org/wiki/Special:Contributions/Chubby_Bub"/>
	<updated>2026-05-18T08:21:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Time&amp;diff=11783</id>
		<title>Time</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Time&amp;diff=11783"/>
		<updated>2023-05-10T10:01:01Z</updated>

		<summary type="html">&lt;p&gt;Chubby Bub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
This article documents how &#039;&#039;&#039;time&#039;&#039;&#039; works in &#039;&#039;Breath of the Wild&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Summary == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About time === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Time starts at 05:15 and will flow normally until 11:00 is reached. Activating the Great Plateau Tower sets the time to 11:00, shows the time on the UI and restores the normal flow of time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
However:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
* If the Shrine of Resurrection exit cutscene has not been played, the time of day is set to 05:15 and frozen.&lt;br /&gt;
* If that cutscene &#039;&#039;has&#039;&#039; been played, but Link does &#039;&#039;not&#039;&#039; have the &#039;&#039;Isolated Plateau&#039;&#039; quest, time cannot go past 11:00. &lt;br /&gt;
&lt;br /&gt;
=== About scheduled blood moons === &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Blood Moons occur at midnight if and only if the WM_BloodyDay flag is set. There is no way to force blood moons to be scheduled via gameplay actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
That flag is set the night before at midnight if Link has left the Plateau and if the Blood Moon timer has reached 7 in-game days. Not 7 days and 15 minutes, but exactly 7 days (2520/360 = 7). Also, note that Link does not need to pass time at a campfire after the WM_BloodyDay flag is set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
The Blood Moon timer starts ticking as soon as Link has left the Shrine of Resurrection normally. Any time spent in a state where even the main game timer is paused does not count. However, you do not necessarily need to be in the open world: time spent in shrines, divine beasts, etc. does count.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Passing time at a campfire or sleeping repeatedly does not help trigger a Blood Moon at all. Quite the opposite, as the timer does not advance during cutscenes.&lt;br /&gt;
&lt;br /&gt;
== Details == &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Internally, time of day is stored as a float in the [0.0, 360.0] range. 0.0 is 00:00 and 359.x is 23:59.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
When the game starts, time is set to 78.75 (05:15) and the &#039;&#039;&#039;Bloody Moon end reserve timer&#039;&#039;&#039; is set to 0. If you have an existing save file, the game timer is reloaded from your save.&lt;br /&gt;
&lt;br /&gt;
=== Every game tick === &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
If the Shrine of Resurrection exit cutscene (Demo103_0) hasn&#039;t played, time is reset to 78.75. This means that if you manage to clip out of the Shrine of Resurrection and skip that cutscene, the game clock will be stuck at 05:15.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Otherwise, if there is no active event/cutscene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* The game timer is incremented by 0.0083333 × elapsed frames. Effectively, this means that 1 in-game minute = 1 real-life second.&lt;br /&gt;
* If Link hasn&#039;t received the &#039;&#039;The Isolated Plateau&#039;&#039; quest and if the current time is &amp;gt;= 165.0 (11:00), the time is forcefully set to 11:00. Effectively, this means that time will not get past 11:00 until the Great Plateau Tower is activated and the Old Man cutscene is triggered.&lt;br /&gt;
* If the timer reaches 360.0 (midnight), the game performs special checks. See the next section.&lt;br /&gt;
* A value called the &#039;&#039;&#039;blood moon timer&#039;&#039;&#039; is also incremented by 0.0083333 × elapsed frames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Afterwards, if the &amp;quot;Bloody Moon end reserve timer&amp;quot; is non zero, it is decremented. If the new value is zero, the WM_BloodyDay flag is cleared.&lt;br /&gt;
&lt;br /&gt;
=== Every time the timer reaches 360.0 (midnight) === &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
First, WM_NumberOfDays is incremented. This has an effect on the moon cycle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If a Blood Moon is scheduled:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
If Blood Moons are &amp;quot;prohibited&amp;quot; (see below for a full list of conditions), the timer is set to 2880.0 and nothing happens. Otherwise, the Blood Moon cutscene ([https://eventviewer.zeldamods.org/viewer.html?data=/d/Demo011_0.json&amp;amp;params=1 Demo011_0]) is triggered and the timer is reset to 0.0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
The game then determines whether to &#039;&#039;&#039;schedule a Blood Moon&#039;&#039;&#039; or not:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
If the player has left the Great Plateau and if the Blood Moon timer is &amp;gt; 2520.0 (7 in-game days):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
* The WM_BloodyDay flag is set to true, which means that a Blood Moon is scheduled for the next night.&lt;br /&gt;
* The Blood Moon timer is reset to 0.0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Otherwise, the &amp;quot;Bloody end reserve timer&amp;quot; is set to 150. This ensures that WM_BloodyDay is cleared 5 in-game minutes (= 5 seconds in real life) after a Blood Moon occurs.&lt;br /&gt;
&lt;br /&gt;
=== Blood Moon inhibitors === &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
If any of the following conditions are true, the Blood Moon cutscene will not be triggered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* Link is not in the main overworld (e.g. in a shrine or Divine Beast)&lt;br /&gt;
* Link is in Hyrule Castle (i.e. the Hyrule Castle 3D minimap is visible) &lt;br /&gt;
* The BloodyMoonProhibition flag is set: Blood moons are prohibited by an event (cutscene, minigame, etc.). &lt;br /&gt;
** This flag is called by the DisableSaveAndWarp function, which used by all minigames, the section of &amp;quot;The Stolen Heirloom&amp;quot; where the Yiga Blademaster is fought, and the Dark Beast Ganon battle.&lt;br /&gt;
** The only time the BloodyMoonProhibition flag is set by itself is during the One-Hit Obliterator challenge in the Champions&#039; Ballad, so that saving and warping &#039;&#039;are&#039;&#039; allowed.&lt;br /&gt;
* The Vah Medoh battle is active&lt;br /&gt;
* The Vah Naboris battle is active&lt;br /&gt;
* The Vah Ruta battle is active&lt;br /&gt;
* Link is fighting Dark Beast Ganon (for good measure, since BloodyMoonProhibition is already set)&lt;br /&gt;
* The environment palette is set to 15, meaning Link is in the Yiga Clan Hideout&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
However, these conditions do not prevent the Blood Moon timer from advancing, or the WM_BloodyDay flag from being set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Note: The Vah Rudania battle is missing from the list. Blood Moons actually can occur during this segment, and will revive the Moblins but not the Sentries (as Sentries have the RevivalNone flag). This is because the event does not call DisableSaveAndWarp, and instead independently sets the WarpProhibition and KillTimeProhibition flags, in order to allow saving. Whether the developers intentionally allowed Blood Moons to happen during this segment, or simply forgot to set the BloodyMoonProhibition flag, is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Special case: passing time at a campfire or sleeping === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
When you pass time at a campfire or sleep, the time is instantly set to the destination time. The game never speeds up or slows down the flow of time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
If the time change causes the clock to cross midnight, the game sets a special flag that causes the Time Manager to run the &amp;quot;handle new day&amp;quot; function once, even if it&#039;s not midnight. The game also explicitly checks&amp;lt;ref&amp;gt;[https://eventviewer.zeldamods.org/viewer.html?data=/d/Demo007_1.json&amp;amp;params=1&amp;amp;node=Event53 Demo007_1]&amp;lt;/ref&amp;gt; if a Blood Moon was scheduled to happen and triggers the cutscene if needed.&lt;br /&gt;
&lt;br /&gt;
=== Moon type === &amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
The moon type is calculated based on the number of in-game days (WM_NumberOfDays). The exact formula is &amp;lt;code&amp;gt;(numberOfDays + x + 1) % 8&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;{{addr|a=0x71010E8200|ver=nx-1.5.0}}&amp;lt;/ref&amp;gt;, where x is equal to 1 if the current time is &amp;gt; 180.0 (noon) and % is the modulo operator.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
If a moon type was set manually (for instance using [[AIDef:Action/EventSetMoonType]]), that value will be used as the moon type. It is unclear whether the game ever sets the moon type manually.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
The moon schedule has nothing to do with the blood moon schedule.&lt;br /&gt;
&lt;br /&gt;
==== Moon phases ==== &amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
Here are the possible values and associated phases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
* 0: Full Moon or Blood Moon or on a Bloody Day after 04:00&lt;br /&gt;
* 1: Waning gibbous&lt;br /&gt;
* 2: Third quarter&lt;br /&gt;
* 3: &amp;quot;26th-day&amp;quot;&lt;br /&gt;
* 4: New moon&lt;br /&gt;
* 5: Waxing crescent&lt;br /&gt;
* 6: &amp;quot;Seven-day&amp;quot;&lt;br /&gt;
* 7: &amp;quot;13-day&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== References == &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
* For more technical details, read the article on the [[WorldMgr]]. Sections of that article were extracted from it and simplified here.&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Game mechanics{{#translation:}}]]&lt;/div&gt;</summary>
		<author><name>Chubby Bub</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Time&amp;diff=11771</id>
		<title>Time</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Time&amp;diff=11771"/>
		<updated>2023-05-08T21:16:50Z</updated>

		<summary type="html">&lt;p&gt;Chubby Bub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
This article documents how &#039;&#039;&#039;time&#039;&#039;&#039; works in &#039;&#039;Breath of the Wild&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Summary == &amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== About time === &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
Time starts at 05:15 and will flow normally until 11:00 is reached. Activating the Great Plateau Tower sets the time to 11:00, shows the time on the UI and restores the normal flow of time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
However:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
* If the Shrine of Resurrection exit cutscene has not been played, the time of day is set to 05:15 and frozen.&lt;br /&gt;
* If that cutscene &#039;&#039;has&#039;&#039; been played, but Link does &#039;&#039;not&#039;&#039; have the &#039;&#039;Isolated Plateau&#039;&#039; quest, time cannot go past 11:00. &lt;br /&gt;
&lt;br /&gt;
=== About scheduled blood moons === &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Blood Moons occur at midnight if and only if the WM_BloodyDay flag is set. There is no way to force blood moons to be scheduled via gameplay actions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
That flag is set the night before at midnight if Link has left the Plateau and if the Blood Moon timer has reached 7 in-game days. Not 7 days and 15 minutes, but exactly 7 days (2520/360 = 7). Also, note that Link does not need to pass time at a campfire after the WM_BloodyDay flag is set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
The Blood Moon timer starts ticking as soon as Link has left the Shrine of Resurrection normally. Any time spent in a state where even the main game timer is paused does not count. However, you do not necessarily need to be in the open world: time spent in shrines, divine beasts, etc. does count.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
Passing time at a campfire or sleeping repeatedly does not help trigger a Blood Moon at all. Quite the opposite, as the timer does not advance during cutscenes.&lt;br /&gt;
&lt;br /&gt;
== Details == &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Internally, time of day is stored as a float in the [0.0, 360.0] range. 0.0 is 00:00 and 359.x is 23:59.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
When the game starts, time is set to 78.75 (05:15) and the &#039;&#039;&#039;Bloody Moon end reserve timer&#039;&#039;&#039; is set to 0. If you have an existing save file, the game timer is reloaded from your save.&lt;br /&gt;
&lt;br /&gt;
=== Every game tick === &amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
If the Shrine of Resurrection exit cutscene (Demo103_0) hasn&#039;t played, time is reset to 78.75. This means that if you manage to clip out of the Shrine of Resurrection and skip that cutscene, the game clock will be stuck at 05:15.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
Otherwise, if there is no active event/cutscene:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* The game timer is incremented by 0.0083333 × elapsed frames. Effectively, this means that 1 in-game minute = 1 real-life second.&lt;br /&gt;
* If Link hasn&#039;t received the &#039;&#039;The Isolated Plateau&#039;&#039; quest and if the current time is &amp;gt;= 165.0 (11:00), the time is forcefully set to 11:00. Effectively, this means that time will not get past 11:00 until the Great Plateau Tower is activated and the Old Man cutscene is triggered.&lt;br /&gt;
* If the timer reaches 360.0 (midnight), the game performs special checks. See the next section.&lt;br /&gt;
* A value called the &#039;&#039;&#039;blood moon timer&#039;&#039;&#039; is also incremented by 0.0083333 × elapsed frames.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
Afterwards, if the &amp;quot;Bloody Moon end reserve timer&amp;quot; is non zero, it is decremented. If the new value is zero, the WM_BloodyDay flag is cleared.&lt;br /&gt;
&lt;br /&gt;
=== Every time the timer reaches 360.0 (midnight) === &amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
First, WM_NumberOfDays is incremented. This has an effect on the moon cycle.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;If a Blood Moon is scheduled:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
If Blood Moons are &amp;quot;prohibited&amp;quot; (see below for a full list of conditions), the timer is set to 2880.0 and nothing happens. Otherwise, the Blood Moon cutscene ([https://eventviewer.zeldamods.org/viewer.html?data=/d/Demo011_0.json&amp;amp;params=1 Demo011_0]) is triggered and the timer is reset to 0.0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
The game then determines whether to &#039;&#039;&#039;schedule a Blood Moon&#039;&#039;&#039; or not:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
If the player has left the Great Plateau and if the Blood Moon timer is &amp;gt; 2520.0 (7 in-game days):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
* The WM_BloodyDay flag is set to true, which means that a Blood Moon is scheduled for the next night.&lt;br /&gt;
* The Blood Moon timer is reset to 0.0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
Otherwise, the &amp;quot;Bloody end reserve timer&amp;quot; is set to 150. This ensures that WM_BloodyDay is cleared 5 in-game minutes (= 5 seconds in real life) after a Blood Moon occurs.&lt;br /&gt;
&lt;br /&gt;
=== Blood Moon inhibitors === &amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
If any of the following conditions are true, the Blood Moon cutscene will not be triggered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* Link is not in the main overworld (e.g. in a shrine or Divine Beast)&lt;br /&gt;
* Link is in Hyrule Castle (i.e. the Hyrule Castle 3D minimap is visible) &lt;br /&gt;
* The BloodyMoonProhibition flag is set: Blood moons are prohibited by an event (cutscene, minigame, etc.). &lt;br /&gt;
** This flag is called by the DisableSaveAndWarp function, which used by all minigames, the section of &amp;quot;The Stolen Heirloom&amp;quot; where the Yiga Blademaster is fought, and the Dark Beast Ganon battle.&lt;br /&gt;
** The only time the BloodyMoonProhibition flag is set by itself is during the One-Hit Obliterator challenge in the Champions&#039; Ballad, so that saving and warping &#039;&#039;are&#039;&#039; allowed.&lt;br /&gt;
* Vah Medoh battle&lt;br /&gt;
* Vah Naboris battle&lt;br /&gt;
* Vah Ruta battle&lt;br /&gt;
* Link is fighting Dark Beast Ganon (for good measure, since BloodyMoonProhibition is already set)&lt;br /&gt;
* Some condition involving the Sky Manager&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
However, these conditions do not prevent the Blood Moon timer from advancing, or the WM_BloodyDay flag from being set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
Note: The Vah Rudania battle is missing from the list. Blood Moons actually can occur during this segment, and will revive the Moblins but not the Sentries (as Sentries have the RevivalNone flag). This is because the event does not call DisableSaveAndWarp, and instead independently sets the WarpProhibition and KillTimeProhibition flags, in order to allow saving. Whether the developers intentionally allowed Blood Moons to happen during this segment, or simply forgot to set the BloodyMoonProhibition flag, is unknown.&lt;br /&gt;
&lt;br /&gt;
=== Special case: passing time at a campfire or sleeping === &amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
When you pass time at a campfire or sleep, the time is instantly set to the destination time. The game never speeds up or slows down the flow of time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
If the time change causes the clock to cross midnight, the game sets a special flag that causes the Time Manager to run the &amp;quot;handle new day&amp;quot; function once, even if it&#039;s not midnight. The game also explicitly checks&amp;lt;ref&amp;gt;[https://eventviewer.zeldamods.org/viewer.html?data=/d/Demo007_1.json&amp;amp;params=1&amp;amp;node=Event53 Demo007_1]&amp;lt;/ref&amp;gt; if a Blood Moon was scheduled to happen and triggers the cutscene if needed.&lt;br /&gt;
&lt;br /&gt;
=== Moon type === &amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
The moon type is calculated based on the number of in-game days (WM_NumberOfDays). The exact formula is &amp;lt;code&amp;gt;(numberOfDays + x + 1) % 8&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;{{addr|a=0x71010E8200|ver=nx-1.5.0}}&amp;lt;/ref&amp;gt;, where x is equal to 1 if the current time is &amp;gt; 180.0 (noon) and % is the modulo operator.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
If a moon type was set manually (for instance using [[AIDef:Action/EventSetMoonType]]), that value will be used as the moon type. It is unclear whether the game ever sets the moon type manually.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
The moon schedule has nothing to do with the blood moon schedule.&lt;br /&gt;
&lt;br /&gt;
==== Moon phases ==== &amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
Here are the possible values and associated phases:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
* 0: Full Moon or Blood Moon or on a Bloody Day after 04:00&lt;br /&gt;
* 1: Waning gibbous&lt;br /&gt;
* 2: Third quarter&lt;br /&gt;
* 3: &amp;quot;26th-day&amp;quot;&lt;br /&gt;
* 4: New moon&lt;br /&gt;
* 5: Waxing crescent&lt;br /&gt;
* 6: &amp;quot;Seven-day&amp;quot;&lt;br /&gt;
* 7: &amp;quot;13-day&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== References == &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
* For more technical details, read the article on the [[WorldMgr]]. Sections of that article were extracted from it and simplified here.&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Game mechanics{{#translation:}}]]&lt;/div&gt;</summary>
		<author><name>Chubby Bub</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Difficulty_scaling&amp;diff=11743</id>
		<title>Difficulty scaling</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Difficulty_scaling&amp;diff=11743"/>
		<updated>2023-02-03T10:31:14Z</updated>

		<summary type="html">&lt;p&gt;Chubby Bub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:263--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Difficulty scaling&#039;&#039;&#039; is a mechanic in &#039;&#039;Breath of the Wild&#039;&#039; that results in enemies and weapons being progressively replaced by more powerful variants during a playthrough.&lt;br /&gt;
&lt;br /&gt;
== Points == &amp;lt;!--T:264--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:265--&amp;gt;&lt;br /&gt;
The scaling system is based on a point system. Killing enemies is the &#039;&#039;only way&#039;&#039; to receive points.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:266--&amp;gt;&lt;br /&gt;
Whenever an enemy dies, the game increments a flag &#039;Defeated_{SameGroupActorName}_Num&#039; if all of the following conditions are satisfied:&lt;br /&gt;
* The current kill count is &amp;amp;#x3C; 10.&lt;br /&gt;
* The actor does not have the NotCountDefeatedNum [[actor tag]].&lt;br /&gt;
* &#039;&#039;&#039;For Monk Maz Koshia&#039;&#039;&#039;: &#039;Defeated_Priest_Boss_Normal_Num&#039; is 0.&lt;br /&gt;
* &#039;&#039;&#039;For Dark Beast Ganon&#039;&#039;&#039;: It is the first time the boss is beaten. (Ganon&#039;s Defeated flag has 1 as the maximum value.) &lt;br /&gt;
* &#039;&#039;&#039;For Blights&#039;&#039;&#039;: It is the first time the blight is beaten in the Divine Beast, or in the Illusory Realm. Blights fought in Hyrule Castle do not count.&lt;br /&gt;
This happens every time &#039;&#039;any&#039;&#039; enemy dies, even if they don&#039;t necessarily play a role in the point system (see below) and even if the player is not responsible for their death.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:267--&amp;gt;&lt;br /&gt;
Because enemies have to be killed throughout the main quest and bosses are considered as enemies too, difficulty scaling is unavoidable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:268--&amp;gt;&lt;br /&gt;
Only the defeated counter flags are stored in the save file. The &amp;lt;code&amp;gt;Ecosystem::LevelSensor&amp;lt;/code&amp;gt; subsystem is responsible for [[Difficulty scaling#Ecosystem::LevelSensor::calculatePoints|converting these kill counts to points]] using a [[Difficulty scaling#Ecosystem::LevelSensor::loadByml|configuration file]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:269--&amp;gt;&lt;br /&gt;
The subsystem provides two functions ([[Difficulty scaling#Ecosystem::LevelSensor::scaleWeapon|&amp;lt;code&amp;gt;scaleWeapon&amp;lt;/code&amp;gt;]] and [[Difficulty scaling#Ecosystem::LevelSensor::scaleActor|&amp;lt;code&amp;gt;scaleActor&amp;lt;/code&amp;gt;]]) that may be called when a weapon or enemy actor is created.&lt;br /&gt;
&lt;br /&gt;
== Scaling inhibitors == &amp;lt;!--T:270--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:271--&amp;gt;&lt;br /&gt;
Both scaling functions will immediately return without doing anything if:&lt;br /&gt;
* [[WorldMgr]]::sInstance-&amp;amp;#x3E;stageType == 1 (Open World [[stage]])&lt;br /&gt;
* and WorldMgr::sInstance-&amp;amp;#x3E;isAocField (current map is Trial of the Sword)&lt;br /&gt;
* and WorldMgr::sInstance-&amp;amp;#x3E;disableScaling (set to true when entering Trial of the Sword)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:394--&amp;gt;&lt;br /&gt;
This means that scaling is always disabled in the Trial of the Sword.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:395--&amp;gt;&lt;br /&gt;
Scaling will also be skipped if the current [[map area]] is 28. This corresponds to &amp;amp;#x22;HateruSea&amp;amp;#x22;, which is the Eventide Island area.&lt;br /&gt;
&lt;br /&gt;
== Weapons == &amp;lt;!--T:272--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:273--&amp;gt;&lt;br /&gt;
&#039;scaleWeapon&#039; is called (i.e. weapons may be scaled) for a weapon if:&lt;br /&gt;
* &#039;&#039;&#039;For standalone weapons&#039;&#039;&#039;: The actor property &#039;LevelSensorMode&#039; is higher than 1 &#039;&#039;&#039;and&#039;&#039;&#039; it wasn&#039;t already picked up.&lt;br /&gt;
* &#039;&#039;&#039;For treasure chest drops&#039;&#039;&#039;: If SharpWeaponJudgeType is not 4, when [[AIDef:AI/TreasureBox]] initialises the drop actor.&lt;br /&gt;
* &#039;&#039;&#039;For Hinox weapons&#039;&#039;&#039;: The flag &amp;lt;code&amp;gt;{MapName}_Necklace_{i}_{HinoxName}_{ID}&amp;lt;/code&amp;gt; is false.&lt;br /&gt;
* &#039;&#039;&#039;For other enemy drops&#039;&#039;&#039;: The flag &amp;lt;code&amp;gt;{MapName}_WeaponDrop_{ID}&amp;lt;/code&amp;gt; is false, &#039;&#039;&#039;and&#039;&#039;&#039; [the actor property &#039;LevelSensorMode&#039; is higher than 1 &#039;&#039;or&#039;&#039; the enemy is a Guardian Scout (&#039;Enemy_Guardian_Mini&#039;)].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:274--&amp;gt;&lt;br /&gt;
Note: Weapons that are bought from a shop cannot receive modifiers because they do not fit into any of the above cases.&lt;br /&gt;
&lt;br /&gt;
== Weapon modifiers == &amp;lt;!--T:275--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
Weapon scaling results in weapons being replaced by a different weapon (e.g. a Soldier&#039;s Bow which becomes a Royal Bow), or weapons gaining a random, bonus stat boost (e.g. Attack Up, Durability Up, etc.). The range of those boosts is also affected by weapon scaling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:396--&amp;gt;&lt;br /&gt;
There are two bonus tiers in the game: one for low-level types (which appear in blue/white in the game UI) and another for high-level types (yellow). Those that belong to the Yellow tier are usually superior to the other ones. For instance, &#039;&#039;Attack Up +&#039;&#039; is the superior variant of &#039;&#039;Attack Up&#039;&#039; and it typically grants a higher attack power boost compared to &#039;&#039;Attack Up&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Modifier types === &amp;lt;!--T:277--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:278--&amp;gt;&lt;br /&gt;
Which modifier a weapon receives is random each time Link obtains it. Which modifiers a weapon can possibly have is specific for each in [[ActorParam/GeneralParamList]], and is based on the weapon&#039;s type and the modifier tier. Note that certain modifiers can only appear at certain tiers— in particular, this means once a weapon is scaled to yellow modifiers, it can no longer receive the Critical Hit buff.&lt;br /&gt;
&lt;br /&gt;
The odds for each type of modifier is determined by an algorithm in actWeapon which depends on the possible modifiers for a given weapon at a given tier. As such, this algorithm yields the following odds for different types of weapons:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! rowspan=2|Weapon !! rowspan=2|Modifier Tier !! AddAtk !! AddLife !! AddCrit !! AddGuard !! AddThrow !! AddSpreadFire !! AddZoomRapid !! AddRapidFire !! AddSurfMaster&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:281--&amp;gt; Attack Up&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:283--&amp;gt; Durability Up&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:295--&amp;gt; Critical Hit&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:293--&amp;gt; Shield Guard Up&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:285--&amp;gt; Long Throw&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:287--&amp;gt; 5-Shot Burst&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:297--&amp;gt; &#039;&#039;Unused&#039;&#039;&amp;lt;sup&amp;gt;[[#Notes|[a] ]]&amp;lt;/sup&amp;gt;&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:289--&amp;gt; Quick Shot&amp;lt;/translate&amp;gt; || &#039;&#039;Unused&#039;&#039;&amp;lt;sup&amp;gt;[[#Notes|[b] ]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Most melee weapons || White/Blue || 25% || 33.3̅3̅% || 41.6̅6̅% || - || -  || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Most melee weapons || Yellow || 25% || 33.3̅3̅% || - || - || 41.6̅6̅% || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Traveler&#039;s Sword/&amp;lt;br&amp;gt;Rusty Broadsword || White/Blue || 50% || 50% || Impossible || - || -  || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Boomerangs, elemental rods and wind items || Yellow || 50% || 50% || - || - || Impossible || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Shields || White/Blue || - || 50% || - || 50%&amp;lt;sup&amp;gt;[[#Notes|[c] ]]&amp;lt;/sup&amp;gt; || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Shields || Yellow || - || 50% || - || 50%&amp;lt;sup&amp;gt;[[#Notes|[c] ]]&amp;lt;/sup&amp;gt; || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Bows || White/Blue || 50% || 50% || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Normal Bows || Yellow || 25% || 33.3̅3̅% || - || - || - || - || - || 41.6̅6̅% || -&lt;br /&gt;
|-&lt;br /&gt;
| Multi-Shot Bows&amp;lt;sup&amp;gt;[[#Notes|[d] ]]&amp;lt;/sup&amp;gt; || Yellow || 12.5% || 22.2̅2̅% || - || - || - || 29.16̅% || - || 36.1̅1̅% || -&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Notes ==== &amp;lt;!--T:299--&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;[a]&amp;lt;/small&amp;gt; AddSurfMaster, or &amp;quot;Shield Surf Up&amp;quot; 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, though if implemented through mods or glitches it uses a yellow shield icon and reads &amp;quot;Shield Surf Up&amp;quot;&lt;br /&gt;
* &amp;lt;small&amp;gt;[b]&amp;lt;/small&amp;gt; AddZoomRapid is another unused bonus that gives bows a zoom when aimed, similar to the property inherent to the Golden and Phrenic Bows. &lt;br /&gt;
* &amp;lt;small&amp;gt;[c]&amp;lt;/small&amp;gt; Due to a bug, if &amp;quot;Shield Guard Up&amp;quot; is rolled for an amiibo weapon, &amp;quot;Durability Up&amp;quot; will be applied using that value instead.&amp;lt;ref name=&amp;quot;amiiboShield&amp;quot;&amp;gt;The bugged code is in function {{addr|a=0x71002df7d8|ver=nx-1.5.0}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;[d]&amp;lt;/small&amp;gt; These are for bows which can have the Five-Shot Burst modifier, which are the Forest Dweller&#039;s Bow, Lynel Bow, Mighty Lynel Bow, and the Savage Lynel Bow. (Despite shooting multiple arrows, the Duplex Bow and Great Eagle Bow cannot have this modifier.)&lt;br /&gt;
&lt;br /&gt;
====Impossible modifiers====&lt;br /&gt;
Some items of a weapon type are furthermore restricted from certain modifiers, or the only ones that can receive it:&lt;br /&gt;
*Cannot receive Critical Hit (&amp;lt;code&amp;gt;SharpWeaponAddCrit&amp;lt;/code&amp;gt; is false):&lt;br /&gt;
** Odd cases: Traveler&#039;s Sword, Rusty Broadsword&lt;br /&gt;
** Special weapons: Master Sword, One-Hit Obliterator&lt;br /&gt;
*Cannot receive Long Throw (&amp;lt;code&amp;gt;PoweredSharpAddThrowMin || PoweredSharpAddThrowMax == 1.0&amp;lt;/code&amp;gt;):&lt;br /&gt;
** Boomerangs: Boomerang, Giant Boomerang, Lizal Boomerang, Lizal Forked Boomerang, Lizal Tri-Boomerang, Lizalfos Arm, Sea-Breeze Boomerang&lt;br /&gt;
** Elemental rods: Fire Rod, Ice Rod, Lightning Rod, Meteor Rod, Blizzard Rod, Thunderstorm Rod&lt;br /&gt;
** Wind-blowing weapons: Korok Leaf, Windcleaver&lt;br /&gt;
** Special weapons: Master Sword, One-Hit Obliterator&lt;br /&gt;
*Can receive Five-Shot Burst (&amp;lt;code&amp;gt;PoweredSharpAddSpreadFire&amp;lt;/code&amp;gt; is true): &lt;br /&gt;
** Forest Dweller&#039;s Bow, Lynel Bow, Mighty Lynel Bow, Savage Lynel Bow&lt;br /&gt;
*The Hero&#039;s Shield will never recieve Shield Guard up due to only being obtainable from amiibo.&lt;br /&gt;
&lt;br /&gt;
There are also some items that have values for modifiers in their parameters, but in all actual in-game cases have scaling restricted. This is mostly weapons only obtainable through crafting or shops.&lt;br /&gt;
*Never seen with any modifiers: &lt;br /&gt;
**Only from purchasing: Ancient Short Sword, Ancient Bladesaw, Ancient Shield, Ancient Bow, Spring-Loaded Hammer&lt;br /&gt;
**Champions&#039; weapons restricted: Scimitar of the Seven, Daybreaker, Boulder Breaker, Great Eagle Bow, Ceremonial Trident, Lightscale Trident&lt;br /&gt;
**Skeleton arms: Bokoblin Arm, Lizalfos Arm, Moblin Arm&lt;br /&gt;
**Random items: Farmer&#039;s Pitchfork&lt;br /&gt;
**Special weapon: Bow of Light&lt;br /&gt;
*Never seen with yellow modifiers (only white):&lt;br /&gt;
**Random items: Tree Branch, Soup Ladle, Boat Oar, Woodcutter&#039;s Axe, Wooden Mop, Pot Lid, Wooden Bow&lt;br /&gt;
&lt;br /&gt;
Finally, there are some items which either have limited instances where scaling is allowed and/or limited modifier availability before they upgrade. A list can be found [https://docs.google.com/spreadsheets/d/1RdV6RsHucg4h22sIZOEBsGSE7Mxk4zUipsADoGIjkOk/pubhtml# here].&lt;br /&gt;
&lt;br /&gt;
=== Modifier values === &amp;lt;!--T:300--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:301--&amp;gt;&lt;br /&gt;
Bonus values (e.g. the actual 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. The possible values for a bonus are generally higher for a yellow tier.&lt;br /&gt;
&lt;br /&gt;
==== Non-amiibo weapons ==== &amp;lt;!--T:315--&amp;gt; &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:316--&amp;gt; Modifier chosen&amp;lt;/translate&amp;gt; !! Effect if applied !! Bonus Value (White/Blue) !! Bonus Value (Yellow)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:318--&amp;gt; None&amp;lt;/translate&amp;gt; || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:319--&amp;gt; Attack Up&amp;lt;/translate&amp;gt; || Attack value boosted by: || Random integer between [SharpWeaponAddAtkMin, SharpWeaponAddAtkMax] || Random integer between [PoweredSharpAddAtkMin, PoweredSharpAddAtkMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:321--&amp;gt; Durability Up&amp;lt;/translate&amp;gt; || Durability value boosted by: || Random integer between [SharpWeaponAddLifeMin, SharpWeaponAddLifeMax] || Random integer between [PoweredSharpAddLifeMin, PoweredSharpAddLifeMax]&lt;br /&gt;
|-&lt;br /&gt;
| Critical Hit || Last hit of a chain does double damage/staggers enemies || - || N/A&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:331--&amp;gt; Shield Guard Up&amp;lt;/translate&amp;gt; || Shield guard value boosted by: || Random integer between [SharpWeaponAddGuardMin, SharpWeaponAddGuardMax] || Random integer between [PoweredSharpWeaponAddGuardMin, PoweredSharpWeaponAddGuardMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:323--&amp;gt; Long Throw&amp;lt;/translate&amp;gt; || Throw distance multiplied by: || - || Random float between [PoweredSharpAddThrowMin, PoweredSharpAddThrowMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:325--&amp;gt; Multi-Shot Burst&amp;lt;/translate&amp;gt; || Bow shoots multiple arrows: || - || 5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AddZoomRapid&#039;&#039; || Reticle zooms when aiming || - || Unknown {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:327--&amp;gt; Quick Shot&amp;lt;/translate&amp;gt; || Firing rate multiplied by: || - || Random float between [PoweredSharpAddRapidFireMin, PoweredSharpAddRapidFireMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:329--&amp;gt; &#039;&#039;AddSurfMaster&#039;&#039;&amp;lt;/translate&amp;gt; || Shield surfing friction multiplied by: || - || 0.2 (from [[GlobalParameter]]::ShieldSurfMasterFrictionRatio)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:333--&amp;gt;&lt;br /&gt;
In summary, for non-amiibo weapons, a modifier bonus results in a randomized additional value in a certain range for each item.&lt;br /&gt;
&lt;br /&gt;
==== amiibo weapons ==== &amp;lt;!--T:302--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:398--&amp;gt;&lt;br /&gt;
Because of a bug in the game code&amp;lt;ref name=&amp;quot;amiiboShield&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;, any time the game randomly chooses the &amp;quot;Shield Guard Up&amp;quot; bonus, the actual bonus that gets assigned to the weapon and shows up in the user interface is &amp;quot;Durability Up&amp;quot;. For this reason, the extra durability value that is used for shields with the &amp;quot;Durability Up&amp;quot; bonus is either addLifeMax or addGuardMax, depending on which bonus was chosen.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:303--&amp;gt; Modifier chosen&amp;lt;/translate&amp;gt; !! Effect if applied !! Bonus Value (White/Blue) !! Bonus Value (Yellow)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:305--&amp;gt; None&amp;lt;/translate&amp;gt; || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:306--&amp;gt; Attack Up&amp;lt;/translate&amp;gt; || Attack value boosted by: || SharpWeaponAddAtkMax || PoweredSharpAddAtkMax&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:307--&amp;gt; Durability Up&amp;lt;/translate&amp;gt; || Durability value boosted by: || SharpWeaponAddLifeMax || PoweredSharpAddLifeMax&lt;br /&gt;
|-&lt;br /&gt;
| Critical Hit || Last hit of a chain does double damage/staggers enemies || - || N/A&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:313--&amp;gt; Shield Guard Up&amp;lt;/translate&amp;gt; || &#039;&#039;&#039;Durability&#039;&#039;&#039; value boosted by: || SharpWeaponAddGuardMax || PoweredSharpWeaponAddGuardMax&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:308--&amp;gt; Long Throw&amp;lt;/translate&amp;gt; || Throw distance multiplied by: || - ||  PoweredSharpAddThrowMax&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:309--&amp;gt; Multi-Shot Burst&amp;lt;/translate&amp;gt; || Bow shoots multiple arrows: || - || 5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AddZoomRapid&#039;&#039; || Reticle zooms when aiming || - || Unknown {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:311--&amp;gt; Quick Shot&amp;lt;/translate&amp;gt; || Firing rate multiplied by: || - || PoweredSharpAddRapidFireMin&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:312--&amp;gt; &#039;&#039;AddSurfMaster&#039;&#039;&amp;lt;/translate&amp;gt; || Shield surfing friction multiplied by: || - || 0.2 (from [[GlobalParameter]]::ShieldSurfMasterFrictionRatio)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:314--&amp;gt;&lt;br /&gt;
In summary, for amiibo weapons, a modifier always yields the highest possible value for that weapon as a bonus, except Quick Shot, which will use the &#039;&#039;lowest&#039;&#039; value.&lt;br /&gt;
No randomness is involved, aside from whether the Durability Up bonus comes from the AddLifeMax or AddGuardMax value.&lt;br /&gt;
&lt;br /&gt;
== Enemies == &amp;lt;!--T:334--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:335--&amp;gt;&lt;br /&gt;
When loading enemies, the game will always try to scale enemies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:336--&amp;gt;&lt;br /&gt;
However, the scaling function won&#039;t do anything if &#039;LevelSensorMode&#039; is &amp;amp;#x3C; 1 and will leave the enemy and any weapons they may hold unscaled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:337--&amp;gt;&lt;br /&gt;
Note: Enemies that are not in any upgrade list (such as elemental Lizalfos) will not be scaled, but their weapon can still receive upgrades if:&lt;br /&gt;
* &#039;LevelSensorMode&#039; is non zero.&lt;br /&gt;
* Weapon point requirements are satisfied&lt;br /&gt;
* &#039;&#039;or&#039;&#039; the modifier tier is overridden using &#039;SharpWeaponJudgeType&#039;.&lt;br /&gt;
[1.3.0] In Master Mode, &#039;&#039;&#039;all&#039;&#039;&#039; enemies are automatically ranked up one tier by default &#039;&#039;&#039;post scaling&#039;&#039;&#039;, independently of &#039;LevelSensorMode&#039;. [[Actor]]s can receive two additional parameters:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:338--&amp;gt; Parameter&amp;lt;/translate&amp;gt;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:339--&amp;gt; Default&amp;lt;/translate&amp;gt;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:340--&amp;gt; Description&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| IsHardModeActor&lt;br /&gt;
| false&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:341--&amp;gt; Controls whether an enemy only shows up in Master Mode.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| DisableRankUpForHardMode&lt;br /&gt;
| false&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:342--&amp;gt; Controls whether the automatic rankup applies to an enemy.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:343--&amp;gt;&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Properties == &amp;lt;!--T:344--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;LevelSensorMode&amp;lt;/code&amp;gt; === &amp;lt;!--T:345--&amp;gt;&lt;br /&gt;
This [[actor]] property controls whether scaling is enabled for an enemy or weapon. Also applies to any weapons held by an enemy since &#039;scaleWeapon&#039; is called when an enemy drops their weapon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:346--&amp;gt;&lt;br /&gt;
Note that this doesn&#039;t apply to weapons that are attached to a Hinox&#039;s necklace, because Hinoxes use a different underlying enemy actor which overrides the &#039;on weapon dropped&#039; function and ignores &#039;LevelSensorMode&#039;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;SharpWeaponJudgeType&amp;lt;/code&amp;gt; === &amp;lt;!--T:347--&amp;gt;&lt;br /&gt;
This actor property controls the &#039;&#039;minimum&#039;&#039; modifier tier that a weapon can receive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:348--&amp;gt;&lt;br /&gt;
Internally and in assets such as [[Map unit|map units]], the following values are used for modifiers:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:349--&amp;gt; Value&amp;lt;/translate&amp;gt;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:350--&amp;gt; Description&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:351--&amp;gt; &#039;&#039;&#039;None&#039;&#039;&#039;: No modifiers.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:352--&amp;gt; &#039;&#039;&#039;RandomBlue&#039;&#039;&#039;: Weapon will randomly get at least a blue modifier (with &amp;lt;code&amp;gt;weaponCommonSharpWeaponPer&amp;lt;/code&amp;gt; being the probability).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:353--&amp;gt; &#039;&#039;&#039;Blue&#039;&#039;&#039;: Weapon will get at least a blue modifier.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:354--&amp;gt; &#039;&#039;&#039;Yellow&#039;&#039;&#039;: Weapon will get at least a yellow modifier.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:355--&amp;gt; &#039;&#039;&#039;NoneForced&#039;&#039;&#039; (chests only): Weapon will &#039;&#039;never&#039;&#039; spawn with any modifiers. &#039;&#039;This overrides regular scaling.&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:356--&amp;gt;&lt;br /&gt;
If [[Difficulty scaling#LevelSensorMode|scaling]] is enabled, the weapon may receive modifiers from an even higher tier if point requirements are met.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:357--&amp;gt;&lt;br /&gt;
Otherwise, the weapon will get modifiers from exactly the specified tier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:358--&amp;gt;&lt;br /&gt;
For example, 0 (&#039;None&#039;) doesn&#039;t mean a weapon will never receive a modifier. It just means that the developers haven&#039;t forced the weapon to spawn with a blue/yellow modifier. If scaling requirements are satisfied, the weapon will receive blue or yellow modifiers.&lt;br /&gt;
&lt;br /&gt;
== Scaling algorithm == &amp;lt;!--T:359--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::loadByml&amp;lt;/code&amp;gt; === &amp;lt;!--T:360--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:361--&amp;gt;&lt;br /&gt;
This function is called by &amp;lt;code&amp;gt;Ecosystem::init&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;ksys::InitializeApp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:362--&amp;gt;&lt;br /&gt;
Sets up byml structures for reading Ecosystem/[[LevelSensor.byml]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::calculatePoints&amp;lt;/code&amp;gt; === &amp;lt;!--T:363--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:364--&amp;gt;&lt;br /&gt;
Called by [[PlacementMgr]] when spawning actors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:365--&amp;gt;&lt;br /&gt;
Calculates weapon and enemy scaling points using a list of flags and configuration values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:366--&amp;gt;&lt;br /&gt;
All flags that are referenced in the configuration file are of the form &amp;lt;code&amp;gt;Defeated_%s_Num&amp;lt;/code&amp;gt;, but technically the configuration format allows for other flags to be specified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:367--&amp;gt;&lt;br /&gt;
Interestingly, the game calculates a single point value based on the kill counter flags but calculates two separate values for weapons and enemies with two different multipliers. This format makes it possible to easily change the scaling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:368--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
float points = 0.0;&lt;br /&gt;
for (kill_flag : this-&amp;gt;byml[&amp;quot;flag&amp;quot;])&lt;br /&gt;
    int kill_count = GameData::getIntegerFlag(kill_flag[&amp;quot;name&amp;quot;]);&lt;br /&gt;
    points += kill_count * kill_flag[&amp;quot;point&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:369--&amp;gt;&lt;br /&gt;
this-&amp;gt;points = points;&lt;br /&gt;
this-&amp;gt;weapon_points = points * this-&amp;gt;byml[&amp;quot;setting&amp;quot;].Level2WeaponPower;&lt;br /&gt;
this-&amp;gt;enemy_points = points * this-&amp;gt;byml[&amp;quot;setting&amp;quot;].Level2EnemyPower;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:370--&amp;gt;&lt;br /&gt;
In practice, settings have never been modified. 1.5.0 (which will likely be the last game update) still has the same Level2WeaponPower and Level2EnemyPower.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::scaleWeapon&amp;lt;/code&amp;gt; === &amp;lt;!--T:371--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:372--&amp;gt;&lt;br /&gt;
Called from treasure chest code, enemy actors{{Check}}, &amp;lt;code&amp;gt;Ecosystem::LevelSensor::scaleActor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:373--&amp;gt;&lt;br /&gt;
Given a weapon name, its modifier and current point status, this function returns the weapon to actually spawn and the modifier to use (if possible).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:374--&amp;gt;&lt;br /&gt;
If the algorithm fails to find an appropriate weapon that satisfies all conditions (point requirements, weapon series, modifier), the originally specified weapon and modifier will be used directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:375--&amp;gt;&lt;br /&gt;
Pseudocode (1.0.0):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:376--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool Ecosystem::LevelSensor::scaleWeapon(const sead::SafeString&amp;amp; weapon_to_look_up,&lt;br /&gt;
                                         WeaponModifier required_modifier,&lt;br /&gt;
                                         const char** weapon_to_use_name,&lt;br /&gt;
                                         WeaponModifier* modifier_to_use,&lt;br /&gt;
                                         void* unknown)&lt;br /&gt;
{&lt;br /&gt;
  // some checks using &#039;unknown&#039; here which seems to be a pointer to the actor&lt;br /&gt;
  //&lt;br /&gt;
  for (weapon_table : this-&amp;gt;byml[&amp;quot;weapon&amp;quot;]) {&lt;br /&gt;
    // find the first weapon entry for which the player has enough points&lt;br /&gt;
    // with the specified name and modifier&lt;br /&gt;
    i = -1;&lt;br /&gt;
    for (j = 0; j &amp;lt; weapon_table[&amp;quot;actors&amp;quot;].size; ++j) {&lt;br /&gt;
      entry = weapon_table[&amp;quot;actors&amp;quot;][j];&lt;br /&gt;
      float points_for_next_transition = entry[&amp;quot;value&amp;quot;];&lt;br /&gt;
      //&lt;br /&gt;
      if (this-&amp;gt;weapon_points &amp;gt; points_for_next_transition &amp;amp;&amp;amp;&lt;br /&gt;
          weapon_to_look_up == entry[&amp;quot;name&amp;quot;] &amp;amp;&amp;amp;&lt;br /&gt;
          convert_to_modifier(entry[&amp;quot;plus&amp;quot;]) == required_modifier) {&lt;br /&gt;
        i = j;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    //&lt;br /&gt;
    if (i == -1)&lt;br /&gt;
      continue;&lt;br /&gt;
    //&lt;br /&gt;
    do {&lt;br /&gt;
      entry = weapon_table[&amp;quot;actors&amp;quot;][i];&lt;br /&gt;
      //&lt;br /&gt;
      // not_rank_up means there is no link between weapons;&lt;br /&gt;
      // this table is just used to look up modifiers.&lt;br /&gt;
      // so go down the list until there are no more entries for the requested weapon&lt;br /&gt;
      // or until we reach a modifier that requires more points.&lt;br /&gt;
      if (weapon_table[&amp;quot;not_rank_up&amp;quot;] &amp;amp;&amp;amp; entry[&amp;quot;name&amp;quot;] != weapon_to_look_up)&lt;br /&gt;
        break;&lt;br /&gt;
      //&lt;br /&gt;
      // otherwise, just go down the list until we reach the end or a weapon which&lt;br /&gt;
      // requires more points. this will possibly upgrade the weapon (e.g. Knight -&amp;gt; Royal).&lt;br /&gt;
      if (this-&amp;gt;weapon_points &amp;lt;= entry[&amp;quot;value&amp;quot;])&lt;br /&gt;
        break;&lt;br /&gt;
      //&lt;br /&gt;
      ++i;&lt;br /&gt;
    } while (i &amp;lt; weapon_table[&amp;quot;actors&amp;quot;].size);&lt;br /&gt;
    //&lt;br /&gt;
    *weapon_to_use_name = entry[&amp;quot;name&amp;quot;];&lt;br /&gt;
    *modifier_to_use = convert_to_modifier(entry[&amp;quot;plus&amp;quot;]);&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  return false;  // cannot scale up&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::scaleActor&amp;lt;/code&amp;gt; === &amp;lt;!--T:377--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:378--&amp;gt;&lt;br /&gt;
Analogous to &amp;lt;code&amp;gt;LevelSensor::scaleWeapon&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:379--&amp;gt;&lt;br /&gt;
Pseudocode (1.0.0):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:380--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (actor-&amp;gt;params[&amp;quot;LevelSensorMode&amp;quot;] &amp;lt; 1)&lt;br /&gt;
  return false;&lt;br /&gt;
//&lt;br /&gt;
if (actor_name.contains(&amp;quot;Enemy&amp;quot;)) {&lt;br /&gt;
  for (enemy_table : this-&amp;gt;byml[&amp;quot;enemy&amp;quot;]) {&lt;br /&gt;
    i = -1;&lt;br /&gt;
    for (j = 0; j &amp;lt; enemy_table[&amp;quot;actors&amp;quot;].size; ++j) {&lt;br /&gt;
      entry = enemy_table[&amp;quot;actors&amp;quot;][j];&lt;br /&gt;
      if (entry[&amp;quot;name&amp;quot;] == actor_name &amp;amp;&amp;amp; this-&amp;gt;enemy_points &amp;gt; entry[&amp;quot;value&amp;quot;]) {&lt;br /&gt;
        i = j;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    //&lt;br /&gt;
    if (i == -1)&lt;br /&gt;
      continue;&lt;br /&gt;
    //&lt;br /&gt;
    do {&lt;br /&gt;
      entry = enemy_table[&amp;quot;actors&amp;quot;][i];&lt;br /&gt;
      if (this-&amp;gt;enemy_points &amp;lt;= entry[&amp;quot;value&amp;quot;])&lt;br /&gt;
        break;&lt;br /&gt;
      ++i;&lt;br /&gt;
    } while (i &amp;lt; enemy_table[&amp;quot;actors&amp;quot;].size);&lt;br /&gt;
    //&lt;br /&gt;
    *actor_to_use = entry[&amp;quot;name&amp;quot;];&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  return false;  // cannot scale up&lt;br /&gt;
}&lt;br /&gt;
//&lt;br /&gt;
if (actor_name.contains(&amp;quot;Weapon&amp;quot;)) {&lt;br /&gt;
  weapon_name = actor-&amp;gt;getWeaponName();&lt;br /&gt;
  modifier = actor-&amp;gt;params[&amp;quot;SharpWeaponJudgeType&amp;quot;];&lt;br /&gt;
  if (modifier == WeaponModifier::RandomBlue)&lt;br /&gt;
    modifier = get_random_blue_modifier(actor-&amp;gt;getWeaponName());&lt;br /&gt;
  //&lt;br /&gt;
  if (scaleWeapon(weapon_name, &amp;amp;weapon_to_use, &amp;amp;modifier_to_use)) {&lt;br /&gt;
    actor-&amp;gt;setProperty(&amp;quot;SharpWeaponJudgeType&amp;quot;, modifier_to_use);&lt;br /&gt;
    *actor_to_use = weapon_to_use;&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  return false;  // cannot scale up&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Data == &amp;lt;!--T:381--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:382--&amp;gt;&lt;br /&gt;
To make things easier to understand, here are links to:&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/e/2PACX-1vRSlyOD7FLAn1TUBn64Pu8Pld-WOfgcVByuywHMWvBTEV0j8potD1wkBs-MJJXf-gvEkpfItUCMqMk6/pubhtml kill point, enemy scaling and weapon scaling tables]&lt;br /&gt;
* an [https://objmap.zeldamods.org object map with scaling information].&lt;br /&gt;
This makes it possible to see both the required points for enemy/weapon upgrades, as well as all of the special cases extremely easily.&lt;br /&gt;
&lt;br /&gt;
== Ganon Blights == &amp;lt;!--T:383--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:384--&amp;gt;&lt;br /&gt;
Ganon blights also have varying difficulty but follow a different system. Their health is determined by the base HP (set in [[ActorParam/GeneralParamList|GeneralParamList]]) and blight defeat flags.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:385--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;__int64 SiteBoss::getInitialHP(SiteBoss *this) // 0x71002D01F4&lt;br /&gt;
{&lt;br /&gt;
  const int baseHp = Enemy::getInitialHP(this);&lt;br /&gt;
  const int halfBaseHp = baseHp &amp;gt;&amp;gt; 1;&lt;br /&gt;
  const bool dieGanonWind = hasFlag_Die_PGanonWind(0);&lt;br /&gt;
  const bool dieGanonWater = hasFlag_Die_PGanonWater(0);&lt;br /&gt;
  const bool dieGanonFire = hasFlag_Die_PGanonFire(0);&lt;br /&gt;
  const bool dieGanonElectric = hasFlag_Die_PGanonElectric(0);&lt;br /&gt;
  const int flags = this-&amp;gt;siteBossFlags &amp;amp; 0xFFFFFFFC;&lt;br /&gt;
  int multiplier;&lt;br /&gt;
  if ( flags == 4 )&lt;br /&gt;
    multiplier = 3;&lt;br /&gt;
  else if ( flags == 8 )&lt;br /&gt;
    multiplier = 4;&lt;br /&gt;
  else&lt;br /&gt;
    multiplier = dieGanonFire + dieGanonWind + dieGanonWater + dieGanonElectric;&lt;br /&gt;
  return baseHp + multiplier * halfBaseHp;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:386--&amp;gt;&lt;br /&gt;
Effectively, this means that the first blight Link fights will have 800+0×400 = 800 HP, the second will have 800+1×400 = 1200 HP, the third 800+2×400 = 1600 HP and the last one 800+3×400 = 2000 HP.&lt;br /&gt;
&lt;br /&gt;
=== Special case 1: Castle Blights === &amp;lt;!--T:387--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:388--&amp;gt;&lt;br /&gt;
Castle blights have &amp;lt;code&amp;gt;IsRemainBoss&amp;lt;/code&amp;gt; set to false in their root AI parameters (see [[AIDef:AI/SiteBossSpearRoot]] for example), which sets flag 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:389--&amp;gt;&lt;br /&gt;
Thus, blights that are fought in the Castle always have 800+3×400 = 2000 HP regardless of story progression.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:390--&amp;gt;&lt;br /&gt;
If flag 4 is set, the [[AIDef:Action/SiteBossDie]] code will NOT increment the &amp;amp;#x22;defeated&amp;amp;#x22; counter. This means castle blights do not give any scaling points.&lt;br /&gt;
&lt;br /&gt;
=== Special case 2: DLC2 Blights === &amp;lt;!--T:391--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:392--&amp;gt;&lt;br /&gt;
Illusory Realm blights possess the &amp;lt;code&amp;gt;EnemySiteBoss_R&amp;lt;/code&amp;gt; actor tag. This causes flag 8 to be set. So they will always have 500+4×250 = 1500 HP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:393--&amp;gt;&lt;br /&gt;
Interestingly, the Windblight AI function doesn&#039;t check the actor tag but the actor name instead. For flag 8 to be set, the actor name must be &amp;lt;code&amp;gt;Enemy_SiteBoss_Bow_R&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Internals{{#translation:}}]]&lt;br /&gt;
[[Category:Game mechanics{{#translation:}}]]&lt;/div&gt;</summary>
		<author><name>Chubby Bub</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Weapon_modifier&amp;diff=11742</id>
		<title>Weapon modifier</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Weapon_modifier&amp;diff=11742"/>
		<updated>2023-02-03T02:46:52Z</updated>

		<summary type="html">&lt;p&gt;Chubby Bub: Redirected page to Difficulty scaling#Weapon modifiers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Difficulty scaling#Weapon modifiers]]&lt;/div&gt;</summary>
		<author><name>Chubby Bub</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Difficulty_scaling&amp;diff=11741</id>
		<title>Difficulty scaling</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Difficulty_scaling&amp;diff=11741"/>
		<updated>2023-02-03T02:45:27Z</updated>

		<summary type="html">&lt;p&gt;Chubby Bub: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:263--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Difficulty scaling&#039;&#039;&#039; is a mechanic in &#039;&#039;Breath of the Wild&#039;&#039; that results in enemies and weapons being progressively replaced by more powerful variants during a playthrough.&lt;br /&gt;
&lt;br /&gt;
== Points == &amp;lt;!--T:264--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:265--&amp;gt;&lt;br /&gt;
The scaling system is based on a point system. Killing enemies is the &#039;&#039;only way&#039;&#039; to receive points.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:266--&amp;gt;&lt;br /&gt;
Whenever an enemy dies, the game increments a flag &#039;Defeated_{SameGroupActorName}_Num&#039; if all of the following conditions are satisfied:&lt;br /&gt;
* The current kill count is &amp;amp;#x3C; 10.&lt;br /&gt;
* The actor does not have the NotCountDefeatedNum [[actor tag]].&lt;br /&gt;
* &#039;&#039;&#039;For Monk Maz Koshia&#039;&#039;&#039;: &#039;Defeated_Priest_Boss_Normal_Num&#039; is 0.&lt;br /&gt;
* &#039;&#039;&#039;For Dark Beast Ganon&#039;&#039;&#039;: It is the first time the boss is beaten. (Ganon&#039;s Defeated flag has 1 as the maximum value.) &lt;br /&gt;
* &#039;&#039;&#039;For Blights&#039;&#039;&#039;: It is the first time the blight is beaten in the Divine Beast, or in the Illusory Realm. Blights fought in Hyrule Castle do not count.&lt;br /&gt;
This happens every time &#039;&#039;any&#039;&#039; enemy dies, even if they don&#039;t necessarily play a role in the point system (see below) and even if the player is not responsible for their death.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:267--&amp;gt;&lt;br /&gt;
Because enemies have to be killed throughout the main quest and bosses are considered as enemies too, difficulty scaling is unavoidable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:268--&amp;gt;&lt;br /&gt;
Only the defeated counter flags are stored in the save file. The &amp;lt;code&amp;gt;Ecosystem::LevelSensor&amp;lt;/code&amp;gt; subsystem is responsible for [[Difficulty scaling#Ecosystem::LevelSensor::calculatePoints|converting these kill counts to points]] using a [[Difficulty scaling#Ecosystem::LevelSensor::loadByml|configuration file]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:269--&amp;gt;&lt;br /&gt;
The subsystem provides two functions ([[Difficulty scaling#Ecosystem::LevelSensor::scaleWeapon|&amp;lt;code&amp;gt;scaleWeapon&amp;lt;/code&amp;gt;]] and [[Difficulty scaling#Ecosystem::LevelSensor::scaleActor|&amp;lt;code&amp;gt;scaleActor&amp;lt;/code&amp;gt;]]) that may be called when a weapon or enemy actor is created.&lt;br /&gt;
&lt;br /&gt;
== Scaling inhibitors == &amp;lt;!--T:270--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:271--&amp;gt;&lt;br /&gt;
Both scaling functions will immediately return without doing anything if:&lt;br /&gt;
* [[WorldMgr]]::sInstance-&amp;amp;#x3E;stageType == 1 (Open World [[stage]])&lt;br /&gt;
* and WorldMgr::sInstance-&amp;amp;#x3E;isAocField (current map is Trial of the Sword)&lt;br /&gt;
* and WorldMgr::sInstance-&amp;amp;#x3E;disableScaling (set to true when entering Trial of the Sword)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:394--&amp;gt;&lt;br /&gt;
This means that scaling is always disabled in the Trial of the Sword.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:395--&amp;gt;&lt;br /&gt;
Scaling will also be skipped if the current [[map area]] is 28. This corresponds to &amp;amp;#x22;HateruSea&amp;amp;#x22;, which is the Eventide Island area.&lt;br /&gt;
&lt;br /&gt;
== Weapons == &amp;lt;!--T:272--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:273--&amp;gt;&lt;br /&gt;
&#039;scaleWeapon&#039; is called (i.e. weapons may be scaled) for a weapon if:&lt;br /&gt;
* &#039;&#039;&#039;For standalone weapons&#039;&#039;&#039;: The actor property &#039;LevelSensorMode&#039; is higher than 1 &#039;&#039;&#039;and&#039;&#039;&#039; it wasn&#039;t already picked up.&lt;br /&gt;
* &#039;&#039;&#039;For treasure chest drops&#039;&#039;&#039;: If SharpWeaponJudgeType is not 4, when [[AIDef:AI/TreasureBox]] initialises the drop actor.&lt;br /&gt;
* &#039;&#039;&#039;For Hinox weapons&#039;&#039;&#039;: The flag &amp;lt;code&amp;gt;{MapName}_Necklace_{i}_{HinoxName}_{ID}&amp;lt;/code&amp;gt; is false.&lt;br /&gt;
* &#039;&#039;&#039;For other enemy drops&#039;&#039;&#039;: The flag &amp;lt;code&amp;gt;{MapName}_WeaponDrop_{ID}&amp;lt;/code&amp;gt; is false, &#039;&#039;&#039;and&#039;&#039;&#039; [the actor property &#039;LevelSensorMode&#039; is higher than 1 &#039;&#039;or&#039;&#039; the enemy is a Guardian Scout (&#039;Enemy_Guardian_Mini&#039;)].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:274--&amp;gt;&lt;br /&gt;
Note: Weapons that are bought from a shop cannot receive modifiers because they do not fit into any of the above cases.&lt;br /&gt;
&lt;br /&gt;
== Weapon modifiers == &amp;lt;!--T:275--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
Weapon scaling results in weapons being replaced by a different weapon (e.g. a Soldier&#039;s Bow which becomes a Royal Bow), or weapons gaining a random, bonus stat boost (e.g. Attack Up, Durability Up, etc.). The range of those boosts is also affected by weapon scaling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:396--&amp;gt;&lt;br /&gt;
There are two bonus tiers in the game: one for low-level types (which appear in blue/white in the game UI) and another for high-level types (yellow). Those that belong to the Yellow tier are usually superior to the other ones. For instance, &#039;&#039;Attack Up +&#039;&#039; is the superior variant of &#039;&#039;Attack Up&#039;&#039; and it typically grants a higher attack power boost compared to &#039;&#039;Attack Up&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Modifier types === &amp;lt;!--T:277--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:278--&amp;gt;&lt;br /&gt;
Which modifier a weapon receives is random each time Link obtains it. Which modifiers a weapon can possibly have is specific for each in [[ActorParam/GeneralParamList]], and is based on the weapon&#039;s type and the modifier tier. Note that certain modifiers can only appear at certain tiers— in particular, this means once a weapon is scaled to yellow modifiers, it can no longer receive the Critical Hit buff.&lt;br /&gt;
&lt;br /&gt;
The odds for each type of modifier is determined by an algorithm in actWeapon which depends on the possible modifiers for a given weapon at a given tier. As such, this algorithm yields the following odds for different types of weapons:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! rowspan=2|Weapon !! rowspan=2|Modifier Tier !! AddAtk !! AddLife !! AddCrit !! AddGuard !! AddThrow !! AddSpreadFire !! AddZoomRapid !! AddRapidFire !! AddSurfMaster&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:281--&amp;gt; Attack Up&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:283--&amp;gt; Durability Up&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:295--&amp;gt; Critical Hit&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:293--&amp;gt; Shield Guard Up&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:285--&amp;gt; Long Throw&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:287--&amp;gt; 5-Shot Burst&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:297--&amp;gt; &#039;&#039;Unused&#039;&#039;&amp;lt;sup&amp;gt;[[#Notes|[a] ]]&amp;lt;/sup&amp;gt;&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:289--&amp;gt; Quick Shot&amp;lt;/translate&amp;gt; || &#039;&#039;Unused&#039;&#039;&amp;lt;sup&amp;gt;[[#Notes|[b] ]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Sword || White/Blue || 25% || 33.3̅3̅%|| 41.6̅6̅% || - || -  || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Sword || Yellow || 25% || 33.3̅3̅% || - || - || 41.6̅6̅% || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Shield || White/Blue || - || 50% || - || 50%&amp;lt;sup&amp;gt;[[#Notes|[c] ]]&amp;lt;/sup&amp;gt; || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Shield || Yellow || - || 50% || - || 50%&amp;lt;sup&amp;gt;[[#Notes|[c] ]]&amp;lt;/sup&amp;gt; || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Bow || White/Blue || 50% || 50% || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Normal Bow || Yellow || 25% || 33.3̅3̅% || - || - || - || - || - || 41.6̅6̅% || -&lt;br /&gt;
|-&lt;br /&gt;
| Multi-Shot Bow&amp;lt;sup&amp;gt;[[#Notes|[d] ]]&amp;lt;/sup&amp;gt; || Yellow || 12.5% || 22.2̅2̅% || - || - || - || 29.16̅% || - || 36.1̅1̅% || -&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Notes ==== &amp;lt;!--T:299--&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;[a]&amp;lt;/small&amp;gt; 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.&lt;br /&gt;
* &amp;lt;small&amp;gt;[b]&amp;lt;/small&amp;gt; AddZoomRapid is another unused bonus that gives bows a zoom when aimed, similar to the property inherent to the Golden and Phrenic Bows. &lt;br /&gt;
* &amp;lt;small&amp;gt;[c]&amp;lt;/small&amp;gt; Due to a bug, if &amp;quot;Shield Guard Up&amp;quot; is rolled for an amiibo weapon, &amp;quot;Durability Up&amp;quot; will be applied instead.&amp;lt;ref name=&amp;quot;amiiboShield&amp;quot;&amp;gt;The bugged code is in function {{addr|a=0x71002df7d8|ver=nx-1.5.0}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;[d]&amp;lt;/small&amp;gt; These are for bows which can have the 5-Shot Burst modifier, which are the Forest Dweller&#039;s Bow, Mighty Lynel Bow, and the Savage Lynel Bow. (Despite shooting 2 arrows, the Duplex Bow cannot have this modifier.)&lt;br /&gt;
&lt;br /&gt;
=== Modifier values === &amp;lt;!--T:300--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:301--&amp;gt;&lt;br /&gt;
Bonus values (e.g. the actual 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. The possible values for a bonus are generally higher for a yellow tier.&lt;br /&gt;
&lt;br /&gt;
==== Non-amiibo weapons ==== &amp;lt;!--T:315--&amp;gt; &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:316--&amp;gt; Modifier chosen&amp;lt;/translate&amp;gt; !! Effect if applied !! Bonus Value (White/Blue) !! Bonus Value (Yellow)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:318--&amp;gt; None&amp;lt;/translate&amp;gt; || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:319--&amp;gt; Attack Up&amp;lt;/translate&amp;gt; || Attack value boosted by: || Random integer between [SharpWeaponAddAtkMin, SharpWeaponAddAtkMax] || Random integer between [PoweredSharpAddAtkMin, PoweredSharpAddAtkMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:321--&amp;gt; Durability Up&amp;lt;/translate&amp;gt; || Durability value boosted by: || Random integer between [SharpWeaponAddLifeMin, SharpWeaponAddLifeMax] || Random integer between [PoweredSharpAddLifeMin, PoweredSharpAddLifeMax]&lt;br /&gt;
|-&lt;br /&gt;
| Critical Hit || Last hit of a chain does double damage/staggers enemies || - || N/A&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:331--&amp;gt; Shield Guard Up&amp;lt;/translate&amp;gt; || Shield guard value boosted by: || Random integer between [SharpWeaponAddGuardMin, SharpWeaponAddGuardMax] || Random integer between [PoweredSharpWeaponAddGuardMin, PoweredSharpWeaponAddGuardMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:323--&amp;gt; Long Throw&amp;lt;/translate&amp;gt; || Throw distance multiplied by: || - || Random float between [PoweredSharpAddThrowMin, PoweredSharpAddThrowMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:325--&amp;gt; Multi-Shot Burst&amp;lt;/translate&amp;gt; || Bow shoots multiple arrows: || - || 5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AddZoomRapid&#039;&#039; || Reticle zooms when aiming || - || Unknown {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:327--&amp;gt; Quick Shot&amp;lt;/translate&amp;gt; || Firing rate multiplied by: || - || Random float between [PoweredSharpAddRapidFireMin, PoweredSharpAddRapidFireMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:329--&amp;gt; &#039;&#039;AddSurfMaster&#039;&#039;&amp;lt;/translate&amp;gt; || Shield surfing friction multiplied by: || - || 0.2 (from [[GlobalParameter]]::ShieldSurfMasterFrictionRatio)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:333--&amp;gt;&lt;br /&gt;
In summary, for non-amiibo weapons, a modifier bonus results in a randomized additional value in a certain range for each item.&lt;br /&gt;
&lt;br /&gt;
==== amiibo weapons ==== &amp;lt;!--T:302--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:398--&amp;gt;&lt;br /&gt;
Because of a bug in the game code&amp;lt;ref name=&amp;quot;amiiboShield&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;, any time the game randomly chooses the &amp;quot;Shield Guard Up&amp;quot; bonus, the actual bonus that gets assigned to the weapon and shows up in the user interface is &amp;quot;Durability Up&amp;quot;. For this reason, the extra durability value that is used for shields with the &amp;quot;Durability Up&amp;quot; bonus is either addLifeMax or addGuardMax, depending on which bonus was chosen.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:303--&amp;gt; Modifier chosen&amp;lt;/translate&amp;gt; !! Effect if applied !! Bonus Value (White/Blue) !! Bonus Value (Yellow)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:305--&amp;gt; None&amp;lt;/translate&amp;gt; || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:306--&amp;gt; Attack Up&amp;lt;/translate&amp;gt; || Attack value boosted by: || SharpWeaponAddAtkMax || PoweredSharpAddAtkMax&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:307--&amp;gt; Durability Up&amp;lt;/translate&amp;gt; || Durability value boosted by: || SharpWeaponAddLifeMax || PoweredSharpAddLifeMax&lt;br /&gt;
|-&lt;br /&gt;
| Critical Hit || Last hit of a chain does double damage/staggers enemies || - || N/A&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:313--&amp;gt; Shield Guard Up&amp;lt;/translate&amp;gt; || &#039;&#039;&#039;Durability&#039;&#039;&#039; value boosted by: || SharpWeaponAddGuardMax || PoweredSharpWeaponAddGuardMax&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:308--&amp;gt; Long Throw&amp;lt;/translate&amp;gt; || Throw distance multiplied by: || - ||  PoweredSharpAddThrowMax&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:309--&amp;gt; Multi-Shot Burst&amp;lt;/translate&amp;gt; || Bow shoots multiple arrows: || - || 5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AddZoomRapid&#039;&#039; || Reticle zooms when aiming || - || Unknown {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:311--&amp;gt; Quick Shot&amp;lt;/translate&amp;gt; || Firing rate multiplied by: || - || PoweredSharpAddRapidFireMin&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:312--&amp;gt; &#039;&#039;AddSurfMaster&#039;&#039;&amp;lt;/translate&amp;gt; || Shield surfing friction multiplied by: || - || 0.2 (from [[GlobalParameter]]::ShieldSurfMasterFrictionRatio)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:314--&amp;gt;&lt;br /&gt;
In summary, for amiibo weapons, a modifier always yields the highest possible value for that weapon as a bonus, except Quick Shot, which will use the &#039;&#039;lowest&#039;&#039; value.&lt;br /&gt;
No randomness is involved, aside from whether the Durability Up bonus comes from the AddLifeMax or AddGuardMax value.&lt;br /&gt;
&lt;br /&gt;
== Enemies == &amp;lt;!--T:334--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:335--&amp;gt;&lt;br /&gt;
When loading enemies, the game will always try to scale enemies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:336--&amp;gt;&lt;br /&gt;
However, the scaling function won&#039;t do anything if &#039;LevelSensorMode&#039; is &amp;amp;#x3C; 1 and will leave the enemy and any weapons they may hold unscaled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:337--&amp;gt;&lt;br /&gt;
Note: Enemies that are not in any upgrade list (such as elemental Lizalfos) will not be scaled, but their weapon can still receive upgrades if:&lt;br /&gt;
* &#039;LevelSensorMode&#039; is non zero.&lt;br /&gt;
* Weapon point requirements are satisfied&lt;br /&gt;
* &#039;&#039;or&#039;&#039; the modifier tier is overridden using &#039;SharpWeaponJudgeType&#039;.&lt;br /&gt;
[1.3.0] In Master Mode, &#039;&#039;&#039;all&#039;&#039;&#039; enemies are automatically ranked up one tier by default &#039;&#039;&#039;post scaling&#039;&#039;&#039;, independently of &#039;LevelSensorMode&#039;. [[Actor]]s can receive two additional parameters:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:338--&amp;gt; Parameter&amp;lt;/translate&amp;gt;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:339--&amp;gt; Default&amp;lt;/translate&amp;gt;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:340--&amp;gt; Description&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| IsHardModeActor&lt;br /&gt;
| false&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:341--&amp;gt; Controls whether an enemy only shows up in Master Mode.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| DisableRankUpForHardMode&lt;br /&gt;
| false&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:342--&amp;gt; Controls whether the automatic rankup applies to an enemy.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:343--&amp;gt;&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Properties == &amp;lt;!--T:344--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;LevelSensorMode&amp;lt;/code&amp;gt; === &amp;lt;!--T:345--&amp;gt;&lt;br /&gt;
This [[actor]] property controls whether scaling is enabled for an enemy or weapon. Also applies to any weapons held by an enemy since &#039;scaleWeapon&#039; is called when an enemy drops their weapon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:346--&amp;gt;&lt;br /&gt;
Note that this doesn&#039;t apply to weapons that are attached to a Hinox&#039;s necklace, because Hinoxes use a different underlying enemy actor which overrides the &#039;on weapon dropped&#039; function and ignores &#039;LevelSensorMode&#039;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;SharpWeaponJudgeType&amp;lt;/code&amp;gt; === &amp;lt;!--T:347--&amp;gt;&lt;br /&gt;
This actor property controls the &#039;&#039;minimum&#039;&#039; modifier tier that a weapon can receive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:348--&amp;gt;&lt;br /&gt;
Internally and in assets such as [[Map unit|map units]], the following values are used for modifiers:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:349--&amp;gt; Value&amp;lt;/translate&amp;gt;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:350--&amp;gt; Description&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:351--&amp;gt; &#039;&#039;&#039;None&#039;&#039;&#039;: No modifiers.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:352--&amp;gt; &#039;&#039;&#039;RandomBlue&#039;&#039;&#039;: Weapon will randomly get at least a blue modifier (with &amp;lt;code&amp;gt;weaponCommonSharpWeaponPer&amp;lt;/code&amp;gt; being the probability).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:353--&amp;gt; &#039;&#039;&#039;Blue&#039;&#039;&#039;: Weapon will get at least a blue modifier.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:354--&amp;gt; &#039;&#039;&#039;Yellow&#039;&#039;&#039;: Weapon will get at least a yellow modifier.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:355--&amp;gt; &#039;&#039;&#039;NoneForced&#039;&#039;&#039; (chests only): Weapon will &#039;&#039;never&#039;&#039; spawn with any modifiers. &#039;&#039;This overrides regular scaling.&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:356--&amp;gt;&lt;br /&gt;
If [[Difficulty scaling#LevelSensorMode|scaling]] is enabled, the weapon may receive modifiers from an even higher tier if point requirements are met.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:357--&amp;gt;&lt;br /&gt;
Otherwise, the weapon will get modifiers from exactly the specified tier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:358--&amp;gt;&lt;br /&gt;
For example, 0 (&#039;None&#039;) doesn&#039;t mean a weapon will never receive a modifier. It just means that the developers haven&#039;t forced the weapon to spawn with a blue/yellow modifier. If scaling requirements are satisfied, the weapon will receive blue or yellow modifiers.&lt;br /&gt;
&lt;br /&gt;
== Scaling algorithm == &amp;lt;!--T:359--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::loadByml&amp;lt;/code&amp;gt; === &amp;lt;!--T:360--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:361--&amp;gt;&lt;br /&gt;
This function is called by &amp;lt;code&amp;gt;Ecosystem::init&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;ksys::InitializeApp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:362--&amp;gt;&lt;br /&gt;
Sets up byml structures for reading Ecosystem/[[LevelSensor.byml]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::calculatePoints&amp;lt;/code&amp;gt; === &amp;lt;!--T:363--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:364--&amp;gt;&lt;br /&gt;
Called by [[PlacementMgr]] when spawning actors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:365--&amp;gt;&lt;br /&gt;
Calculates weapon and enemy scaling points using a list of flags and configuration values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:366--&amp;gt;&lt;br /&gt;
All flags that are referenced in the configuration file are of the form &amp;lt;code&amp;gt;Defeated_%s_Num&amp;lt;/code&amp;gt;, but technically the configuration format allows for other flags to be specified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:367--&amp;gt;&lt;br /&gt;
Interestingly, the game calculates a single point value based on the kill counter flags but calculates two separate values for weapons and enemies with two different multipliers. This format makes it possible to easily change the scaling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:368--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
float points = 0.0;&lt;br /&gt;
for (kill_flag : this-&amp;gt;byml[&amp;quot;flag&amp;quot;])&lt;br /&gt;
    int kill_count = GameData::getIntegerFlag(kill_flag[&amp;quot;name&amp;quot;]);&lt;br /&gt;
    points += kill_count * kill_flag[&amp;quot;point&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:369--&amp;gt;&lt;br /&gt;
this-&amp;gt;points = points;&lt;br /&gt;
this-&amp;gt;weapon_points = points * this-&amp;gt;byml[&amp;quot;setting&amp;quot;].Level2WeaponPower;&lt;br /&gt;
this-&amp;gt;enemy_points = points * this-&amp;gt;byml[&amp;quot;setting&amp;quot;].Level2EnemyPower;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:370--&amp;gt;&lt;br /&gt;
In practice, settings have never been modified. 1.5.0 (which will likely be the last game update) still has the same Level2WeaponPower and Level2EnemyPower.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::scaleWeapon&amp;lt;/code&amp;gt; === &amp;lt;!--T:371--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:372--&amp;gt;&lt;br /&gt;
Called from treasure chest code, enemy actors{{Check}}, &amp;lt;code&amp;gt;Ecosystem::LevelSensor::scaleActor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:373--&amp;gt;&lt;br /&gt;
Given a weapon name, its modifier and current point status, this function returns the weapon to actually spawn and the modifier to use (if possible).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:374--&amp;gt;&lt;br /&gt;
If the algorithm fails to find an appropriate weapon that satisfies all conditions (point requirements, weapon series, modifier), the originally specified weapon and modifier will be used directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:375--&amp;gt;&lt;br /&gt;
Pseudocode (1.0.0):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:376--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool Ecosystem::LevelSensor::scaleWeapon(const sead::SafeString&amp;amp; weapon_to_look_up,&lt;br /&gt;
                                         WeaponModifier required_modifier,&lt;br /&gt;
                                         const char** weapon_to_use_name,&lt;br /&gt;
                                         WeaponModifier* modifier_to_use,&lt;br /&gt;
                                         void* unknown)&lt;br /&gt;
{&lt;br /&gt;
  // some checks using &#039;unknown&#039; here which seems to be a pointer to the actor&lt;br /&gt;
  //&lt;br /&gt;
  for (weapon_table : this-&amp;gt;byml[&amp;quot;weapon&amp;quot;]) {&lt;br /&gt;
    // find the first weapon entry for which the player has enough points&lt;br /&gt;
    // with the specified name and modifier&lt;br /&gt;
    i = -1;&lt;br /&gt;
    for (j = 0; j &amp;lt; weapon_table[&amp;quot;actors&amp;quot;].size; ++j) {&lt;br /&gt;
      entry = weapon_table[&amp;quot;actors&amp;quot;][j];&lt;br /&gt;
      float points_for_next_transition = entry[&amp;quot;value&amp;quot;];&lt;br /&gt;
      //&lt;br /&gt;
      if (this-&amp;gt;weapon_points &amp;gt; points_for_next_transition &amp;amp;&amp;amp;&lt;br /&gt;
          weapon_to_look_up == entry[&amp;quot;name&amp;quot;] &amp;amp;&amp;amp;&lt;br /&gt;
          convert_to_modifier(entry[&amp;quot;plus&amp;quot;]) == required_modifier) {&lt;br /&gt;
        i = j;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    //&lt;br /&gt;
    if (i == -1)&lt;br /&gt;
      continue;&lt;br /&gt;
    //&lt;br /&gt;
    do {&lt;br /&gt;
      entry = weapon_table[&amp;quot;actors&amp;quot;][i];&lt;br /&gt;
      //&lt;br /&gt;
      // not_rank_up means there is no link between weapons;&lt;br /&gt;
      // this table is just used to look up modifiers.&lt;br /&gt;
      // so go down the list until there are no more entries for the requested weapon&lt;br /&gt;
      // or until we reach a modifier that requires more points.&lt;br /&gt;
      if (weapon_table[&amp;quot;not_rank_up&amp;quot;] &amp;amp;&amp;amp; entry[&amp;quot;name&amp;quot;] != weapon_to_look_up)&lt;br /&gt;
        break;&lt;br /&gt;
      //&lt;br /&gt;
      // otherwise, just go down the list until we reach the end or a weapon which&lt;br /&gt;
      // requires more points. this will possibly upgrade the weapon (e.g. Knight -&amp;gt; Royal).&lt;br /&gt;
      if (this-&amp;gt;weapon_points &amp;lt;= entry[&amp;quot;value&amp;quot;])&lt;br /&gt;
        break;&lt;br /&gt;
      //&lt;br /&gt;
      ++i;&lt;br /&gt;
    } while (i &amp;lt; weapon_table[&amp;quot;actors&amp;quot;].size);&lt;br /&gt;
    //&lt;br /&gt;
    *weapon_to_use_name = entry[&amp;quot;name&amp;quot;];&lt;br /&gt;
    *modifier_to_use = convert_to_modifier(entry[&amp;quot;plus&amp;quot;]);&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  return false;  // cannot scale up&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::scaleActor&amp;lt;/code&amp;gt; === &amp;lt;!--T:377--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:378--&amp;gt;&lt;br /&gt;
Analogous to &amp;lt;code&amp;gt;LevelSensor::scaleWeapon&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:379--&amp;gt;&lt;br /&gt;
Pseudocode (1.0.0):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:380--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (actor-&amp;gt;params[&amp;quot;LevelSensorMode&amp;quot;] &amp;lt; 1)&lt;br /&gt;
  return false;&lt;br /&gt;
//&lt;br /&gt;
if (actor_name.contains(&amp;quot;Enemy&amp;quot;)) {&lt;br /&gt;
  for (enemy_table : this-&amp;gt;byml[&amp;quot;enemy&amp;quot;]) {&lt;br /&gt;
    i = -1;&lt;br /&gt;
    for (j = 0; j &amp;lt; enemy_table[&amp;quot;actors&amp;quot;].size; ++j) {&lt;br /&gt;
      entry = enemy_table[&amp;quot;actors&amp;quot;][j];&lt;br /&gt;
      if (entry[&amp;quot;name&amp;quot;] == actor_name &amp;amp;&amp;amp; this-&amp;gt;enemy_points &amp;gt; entry[&amp;quot;value&amp;quot;]) {&lt;br /&gt;
        i = j;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    //&lt;br /&gt;
    if (i == -1)&lt;br /&gt;
      continue;&lt;br /&gt;
    //&lt;br /&gt;
    do {&lt;br /&gt;
      entry = enemy_table[&amp;quot;actors&amp;quot;][i];&lt;br /&gt;
      if (this-&amp;gt;enemy_points &amp;lt;= entry[&amp;quot;value&amp;quot;])&lt;br /&gt;
        break;&lt;br /&gt;
      ++i;&lt;br /&gt;
    } while (i &amp;lt; enemy_table[&amp;quot;actors&amp;quot;].size);&lt;br /&gt;
    //&lt;br /&gt;
    *actor_to_use = entry[&amp;quot;name&amp;quot;];&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  return false;  // cannot scale up&lt;br /&gt;
}&lt;br /&gt;
//&lt;br /&gt;
if (actor_name.contains(&amp;quot;Weapon&amp;quot;)) {&lt;br /&gt;
  weapon_name = actor-&amp;gt;getWeaponName();&lt;br /&gt;
  modifier = actor-&amp;gt;params[&amp;quot;SharpWeaponJudgeType&amp;quot;];&lt;br /&gt;
  if (modifier == WeaponModifier::RandomBlue)&lt;br /&gt;
    modifier = get_random_blue_modifier(actor-&amp;gt;getWeaponName());&lt;br /&gt;
  //&lt;br /&gt;
  if (scaleWeapon(weapon_name, &amp;amp;weapon_to_use, &amp;amp;modifier_to_use)) {&lt;br /&gt;
    actor-&amp;gt;setProperty(&amp;quot;SharpWeaponJudgeType&amp;quot;, modifier_to_use);&lt;br /&gt;
    *actor_to_use = weapon_to_use;&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  return false;  // cannot scale up&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Data == &amp;lt;!--T:381--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:382--&amp;gt;&lt;br /&gt;
To make things easier to understand, here are links to:&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/e/2PACX-1vRSlyOD7FLAn1TUBn64Pu8Pld-WOfgcVByuywHMWvBTEV0j8potD1wkBs-MJJXf-gvEkpfItUCMqMk6/pubhtml kill point, enemy scaling and weapon scaling tables]&lt;br /&gt;
* an [https://objmap.zeldamods.org object map with scaling information].&lt;br /&gt;
This makes it possible to see both the required points for enemy/weapon upgrades, as well as all of the special cases extremely easily.&lt;br /&gt;
&lt;br /&gt;
== Ganon Blights == &amp;lt;!--T:383--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:384--&amp;gt;&lt;br /&gt;
Ganon blights also have varying difficulty but follow a different system. Their health is determined by the base HP (set in [[ActorParam/GeneralParamList|GeneralParamList]]) and blight defeat flags.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:385--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;__int64 SiteBoss::getInitialHP(SiteBoss *this) // 0x71002D01F4&lt;br /&gt;
{&lt;br /&gt;
  const int baseHp = Enemy::getInitialHP(this);&lt;br /&gt;
  const int halfBaseHp = baseHp &amp;gt;&amp;gt; 1;&lt;br /&gt;
  const bool dieGanonWind = hasFlag_Die_PGanonWind(0);&lt;br /&gt;
  const bool dieGanonWater = hasFlag_Die_PGanonWater(0);&lt;br /&gt;
  const bool dieGanonFire = hasFlag_Die_PGanonFire(0);&lt;br /&gt;
  const bool dieGanonElectric = hasFlag_Die_PGanonElectric(0);&lt;br /&gt;
  const int flags = this-&amp;gt;siteBossFlags &amp;amp; 0xFFFFFFFC;&lt;br /&gt;
  int multiplier;&lt;br /&gt;
  if ( flags == 4 )&lt;br /&gt;
    multiplier = 3;&lt;br /&gt;
  else if ( flags == 8 )&lt;br /&gt;
    multiplier = 4;&lt;br /&gt;
  else&lt;br /&gt;
    multiplier = dieGanonFire + dieGanonWind + dieGanonWater + dieGanonElectric;&lt;br /&gt;
  return baseHp + multiplier * halfBaseHp;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:386--&amp;gt;&lt;br /&gt;
Effectively, this means that the first blight Link fights will have 800+0×400 = 800 HP, the second will have 800+1×400 = 1200 HP, the third 800+2×400 = 1600 HP and the last one 800+3×400 = 2000 HP.&lt;br /&gt;
&lt;br /&gt;
=== Special case 1: Castle Blights === &amp;lt;!--T:387--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:388--&amp;gt;&lt;br /&gt;
Castle blights have &amp;lt;code&amp;gt;IsRemainBoss&amp;lt;/code&amp;gt; set to false in their root AI parameters (see [[AIDef:AI/SiteBossSpearRoot]] for example), which sets flag 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:389--&amp;gt;&lt;br /&gt;
Thus, blights that are fought in the Castle always have 800+3×400 = 2000 HP regardless of story progression.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:390--&amp;gt;&lt;br /&gt;
If flag 4 is set, the [[AIDef:Action/SiteBossDie]] code will NOT increment the &amp;amp;#x22;defeated&amp;amp;#x22; counter. This means castle blights do not give any scaling points.&lt;br /&gt;
&lt;br /&gt;
=== Special case 2: DLC2 Blights === &amp;lt;!--T:391--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:392--&amp;gt;&lt;br /&gt;
Illusory Realm blights possess the &amp;lt;code&amp;gt;EnemySiteBoss_R&amp;lt;/code&amp;gt; actor tag. This causes flag 8 to be set. So they will always have 500+4×250 = 1500 HP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:393--&amp;gt;&lt;br /&gt;
Interestingly, the Windblight AI function doesn&#039;t check the actor tag but the actor name instead. For flag 8 to be set, the actor name must be &amp;lt;code&amp;gt;Enemy_SiteBoss_Bow_R&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Internals{{#translation:}}]]&lt;br /&gt;
[[Category:Game mechanics{{#translation:}}]]&lt;/div&gt;</summary>
		<author><name>Chubby Bub</name></author>
	</entry>
	<entry>
		<id>https://zeldamods.org/w_botw/index.php?title=Difficulty_scaling&amp;diff=11740</id>
		<title>Difficulty scaling</title>
		<link rel="alternate" type="text/html" href="https://zeldamods.org/w_botw/index.php?title=Difficulty_scaling&amp;diff=11740"/>
		<updated>2023-02-03T02:44:12Z</updated>

		<summary type="html">&lt;p&gt;Chubby Bub: Detailing probability and effect of each modifier. I calculated these odds from the algorithm and had them verified through in-game testing.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:263--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Difficulty scaling&#039;&#039;&#039; is a mechanic in &#039;&#039;Breath of the Wild&#039;&#039; that results in enemies and weapons being progressively replaced by more powerful variants during a playthrough.&lt;br /&gt;
&lt;br /&gt;
== Points == &amp;lt;!--T:264--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:265--&amp;gt;&lt;br /&gt;
The scaling system is based on a point system. Killing enemies is the &#039;&#039;only way&#039;&#039; to receive points.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:266--&amp;gt;&lt;br /&gt;
Whenever an enemy dies, the game increments a flag &#039;Defeated_{SameGroupActorName}_Num&#039; if all of the following conditions are satisfied:&lt;br /&gt;
* The current kill count is &amp;amp;#x3C; 10.&lt;br /&gt;
* The actor does not have the NotCountDefeatedNum [[actor tag]].&lt;br /&gt;
* &#039;&#039;&#039;For Monk Maz Koshia&#039;&#039;&#039;: &#039;Defeated_Priest_Boss_Normal_Num&#039; is 0.&lt;br /&gt;
* &#039;&#039;&#039;For Dark Beast Ganon&#039;&#039;&#039;: It is the first time the boss is beaten. (Ganon&#039;s Defeated flag has 1 as the maximum value.) &lt;br /&gt;
* &#039;&#039;&#039;For Blights&#039;&#039;&#039;: It is the first time the blight is beaten in the Divine Beast, or in the Illusory Realm. Blights fought in Hyrule Castle do not count.&lt;br /&gt;
This happens every time &#039;&#039;any&#039;&#039; enemy dies, even if they don&#039;t necessarily play a role in the point system (see below) and even if the player is not responsible for their death.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:267--&amp;gt;&lt;br /&gt;
Because enemies have to be killed throughout the main quest and bosses are considered as enemies too, difficulty scaling is unavoidable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:268--&amp;gt;&lt;br /&gt;
Only the defeated counter flags are stored in the save file. The &amp;lt;code&amp;gt;Ecosystem::LevelSensor&amp;lt;/code&amp;gt; subsystem is responsible for [[Difficulty scaling#Ecosystem::LevelSensor::calculatePoints|converting these kill counts to points]] using a [[Difficulty scaling#Ecosystem::LevelSensor::loadByml|configuration file]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:269--&amp;gt;&lt;br /&gt;
The subsystem provides two functions ([[Difficulty scaling#Ecosystem::LevelSensor::scaleWeapon|&amp;lt;code&amp;gt;scaleWeapon&amp;lt;/code&amp;gt;]] and [[Difficulty scaling#Ecosystem::LevelSensor::scaleActor|&amp;lt;code&amp;gt;scaleActor&amp;lt;/code&amp;gt;]]) that may be called when a weapon or enemy actor is created.&lt;br /&gt;
&lt;br /&gt;
== Scaling inhibitors == &amp;lt;!--T:270--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:271--&amp;gt;&lt;br /&gt;
Both scaling functions will immediately return without doing anything if:&lt;br /&gt;
* [[WorldMgr]]::sInstance-&amp;amp;#x3E;stageType == 1 (Open World [[stage]])&lt;br /&gt;
* and WorldMgr::sInstance-&amp;amp;#x3E;isAocField (current map is Trial of the Sword)&lt;br /&gt;
* and WorldMgr::sInstance-&amp;amp;#x3E;disableScaling (set to true when entering Trial of the Sword)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:394--&amp;gt;&lt;br /&gt;
This means that scaling is always disabled in the Trial of the Sword.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:395--&amp;gt;&lt;br /&gt;
Scaling will also be skipped if the current [[map area]] is 28. This corresponds to &amp;amp;#x22;HateruSea&amp;amp;#x22;, which is the Eventide Island area.&lt;br /&gt;
&lt;br /&gt;
== Weapons == &amp;lt;!--T:272--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:273--&amp;gt;&lt;br /&gt;
&#039;scaleWeapon&#039; is called (i.e. weapons may be scaled) for a weapon if:&lt;br /&gt;
* &#039;&#039;&#039;For standalone weapons&#039;&#039;&#039;: The actor property &#039;LevelSensorMode&#039; is higher than 1 &#039;&#039;&#039;and&#039;&#039;&#039; it wasn&#039;t already picked up.&lt;br /&gt;
* &#039;&#039;&#039;For treasure chest drops&#039;&#039;&#039;: If SharpWeaponJudgeType is not 4, when [[AIDef:AI/TreasureBox]] initialises the drop actor.&lt;br /&gt;
* &#039;&#039;&#039;For Hinox weapons&#039;&#039;&#039;: The flag &amp;lt;code&amp;gt;{MapName}_Necklace_{i}_{HinoxName}_{ID}&amp;lt;/code&amp;gt; is false.&lt;br /&gt;
* &#039;&#039;&#039;For other enemy drops&#039;&#039;&#039;: The flag &amp;lt;code&amp;gt;{MapName}_WeaponDrop_{ID}&amp;lt;/code&amp;gt; is false, &#039;&#039;&#039;and&#039;&#039;&#039; [the actor property &#039;LevelSensorMode&#039; is higher than 1 &#039;&#039;or&#039;&#039; the enemy is a Guardian Scout (&#039;Enemy_Guardian_Mini&#039;)].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:274--&amp;gt;&lt;br /&gt;
Note: Weapons that are bought from a shop cannot receive modifiers because they do not fit into any of the above cases.&lt;br /&gt;
&lt;br /&gt;
== Weapon modifiers == &amp;lt;!--T:275--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:276--&amp;gt;&lt;br /&gt;
Weapon scaling results in weapons being replaced by a different weapon (e.g. a Soldier&#039;s Bow which becomes a Royal Bow), or weapons gaining a random, bonus stat boost (e.g. Attack Up, Durability Up, etc.). The range of those boosts is also affected by weapon scaling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:396--&amp;gt;&lt;br /&gt;
There are two bonus tiers in the game: one for low-level types (which appear in blue/white in the game UI) and another for high-level types (yellow). Those that belong to the Yellow tier are usually superior to the other ones. For instance, &#039;&#039;Attack Up +&#039;&#039; is the superior variant of &#039;&#039;Attack Up&#039;&#039; and it typically grants a higher attack power boost compared to &#039;&#039;Attack Up&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Modifier types === &amp;lt;!--T:277--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:278--&amp;gt;&lt;br /&gt;
Which modifier a weapon receives is random each time Link obtains it. Which modifiers a weapon can possibly have is specific for each in [[ActorParam/GeneralParamList]], and is based on the weapon&#039;s type and the modifier tier. Note that certain modifiers can only appear at certain tiers— in particular, this means once a weapon is scaled to yellow modifiers, it can no longer receive the Critical Hit buff.&lt;br /&gt;
&lt;br /&gt;
The odds for each type of modifier is determined by an algorithm in actWeapon which depends on the possible modifiers for a given weapon at a given tier. As such, this algorithm yields the following odds for different types of weapons:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! rowspan=2|Weapon !! rowspan=2|Modifier Tier !! AddAtk !! AddLife !! AddCrit !! AddGuard !! AddThrow !! AddSpreadFire !! AddZoomRapid !! AddRapidFire !! AddSurfMaster&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:281--&amp;gt; Attack Up&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:283--&amp;gt; Durability Up&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:295--&amp;gt; Critical Hit&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:293--&amp;gt; Shield Guard Up&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:285--&amp;gt; Long Throw&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:287--&amp;gt; 5-Shot Burst&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:297--&amp;gt; &#039;&#039;Unused&#039;&#039;&amp;lt;sup&amp;gt;[[#Notes|[a] ]]&amp;lt;/sup&amp;gt;&amp;lt;/translate&amp;gt; || &amp;lt;translate&amp;gt;&amp;lt;!--T:289--&amp;gt; Quick Shot&amp;lt;/translate&amp;gt; || &#039;&#039;Unused&#039;&#039;&amp;lt;sup&amp;gt;[[#Notes|[b] ]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Sword || White/Blue || 25% || 33.3̅3̅%|| 41.6̅6̅% || - || -  || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Sword || Yellow || 25% || 33.3̅3̅% || - || - || 41.6̅6̅% || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Shield || White/Blue || - || 50% || - || 50%&amp;lt;sup&amp;gt;[[#Notes|[c] ]]&amp;lt;/sup&amp;gt; || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Shield || Yellow || - || 50% || - || 50%&amp;lt;sup&amp;gt;[c]&amp;lt;/sup&amp;gt; || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Bow || White/Blue || 50% || 50% || - || - || - || - || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| Normal Bow || Yellow || 25% || 33.3̅3̅% || - || - || - || - || - || 41.6̅6̅% || -&lt;br /&gt;
|-&lt;br /&gt;
| Multi-Shot Bow&amp;lt;sup&amp;gt;[[#Notes|[d] ]]&amp;lt;/sup&amp;gt; || Yellow || 12.5% || 22.2̅2̅% || - || - || - || 29.16̅% || - || 36.1̅1̅% || -&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
==== Notes ==== &amp;lt;!--T:299--&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;[a]&amp;lt;/small&amp;gt; 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.&lt;br /&gt;
* &amp;lt;small&amp;gt;[b]&amp;lt;/small&amp;gt; AddZoomRapid is another unused bonus that gives bows a zoom when aimed, similar to the property inherent to the Golden and Phrenic Bows. &lt;br /&gt;
* &amp;lt;small&amp;gt;[c]&amp;lt;/small&amp;gt; Due to a bug, if &amp;quot;Shield Guard Up&amp;quot; is rolled for an amiibo weapon, &amp;quot;Durability Up&amp;quot; will be applied instead.&amp;lt;ref name=&amp;quot;amiiboShield&amp;quot;&amp;gt;The bugged code is in function {{addr|a=0x71002df7d8|ver=nx-1.5.0}}.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;small&amp;gt;[d]&amp;lt;/small&amp;gt; These are for bows which can have the 5-Shot Burst modifier, which are the Forest Dweller&#039;s Bow, Mighty Lynel Bow, and the Savage Lynel Bow. (Despite shooting 2 arrows, the Duplex Bow cannot have this modifier.)&lt;br /&gt;
&lt;br /&gt;
=== Modifier values === &amp;lt;!--T:300--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:301--&amp;gt;&lt;br /&gt;
Bonus values (e.g. the actual 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. The possible values for a bonus are generally higher for a yellow tier.&lt;br /&gt;
&lt;br /&gt;
==== Non-amiibo weapons ==== &amp;lt;!--T:315--&amp;gt; &lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:316--&amp;gt; Modifier chosen&amp;lt;/translate&amp;gt; !! Effect if applied !! Bonus Value (White/Blue) !! Bonus Value (Yellow)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:318--&amp;gt; None&amp;lt;/translate&amp;gt; || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:319--&amp;gt; Attack Up&amp;lt;/translate&amp;gt; || Attack value boosted by: || Random integer between [SharpWeaponAddAtkMin, SharpWeaponAddAtkMax] || Random integer between [PoweredSharpAddAtkMin, PoweredSharpAddAtkMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:321--&amp;gt; Durability Up&amp;lt;/translate&amp;gt; || Durability value boosted by: || Random integer between [SharpWeaponAddLifeMin, SharpWeaponAddLifeMax] || Random integer between [PoweredSharpAddLifeMin, PoweredSharpAddLifeMax]&lt;br /&gt;
|-&lt;br /&gt;
| Critical Hit || Last hit of a chain does double damage/staggers enemies || - || N/A&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:331--&amp;gt; Shield Guard Up&amp;lt;/translate&amp;gt; || Shield guard value boosted by: || Random integer between [SharpWeaponAddGuardMin, SharpWeaponAddGuardMax] || Random integer between [PoweredSharpWeaponAddGuardMin, PoweredSharpWeaponAddGuardMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:323--&amp;gt; Long Throw&amp;lt;/translate&amp;gt; || Throw distance multiplied by: || - || Random float between [PoweredSharpAddThrowMin, PoweredSharpAddThrowMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:325--&amp;gt; Multi-Shot Burst&amp;lt;/translate&amp;gt; || Bow shoots multiple arrows: || - || 5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AddZoomRapid&#039;&#039; || Reticle zooms when aiming || - || Unknown {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:327--&amp;gt; Quick Shot&amp;lt;/translate&amp;gt; || Firing rate multiplied by: || - || Random float between [PoweredSharpAddRapidFireMin, PoweredSharpAddRapidFireMax]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:329--&amp;gt; &#039;&#039;AddSurfMaster&#039;&#039;&amp;lt;/translate&amp;gt; || Shield surfing friction multiplied by: || - || 0.2 (from [[GlobalParameter]]::ShieldSurfMasterFrictionRatio)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:333--&amp;gt;&lt;br /&gt;
In summary, for non-amiibo weapons, a modifier bonus results in a randomized additional value in a certain range for each item.&lt;br /&gt;
&lt;br /&gt;
==== amiibo weapons ==== &amp;lt;!--T:302--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:398--&amp;gt;&lt;br /&gt;
Because of a bug in the game code&amp;lt;ref name=&amp;quot;amiiboShield&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;, any time the game randomly chooses the &amp;quot;Shield Guard Up&amp;quot; bonus, the actual bonus that gets assigned to the weapon and shows up in the user interface is &amp;quot;Durability Up&amp;quot;. For this reason, the extra durability value that is used for shields with the &amp;quot;Durability Up&amp;quot; bonus is either addLifeMax or addGuardMax, depending on which bonus was chosen.&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:303--&amp;gt; Modifier chosen&amp;lt;/translate&amp;gt; !! Effect if applied !! Bonus Value (White/Blue) !! Bonus Value (Yellow)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:305--&amp;gt; None&amp;lt;/translate&amp;gt; || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:306--&amp;gt; Attack Up&amp;lt;/translate&amp;gt; || Attack value boosted by: || SharpWeaponAddAtkMax || PoweredSharpAddAtkMax&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:307--&amp;gt; Durability Up&amp;lt;/translate&amp;gt; || Durability value boosted by: || SharpWeaponAddLifeMax || PoweredSharpAddLifeMax&lt;br /&gt;
|-&lt;br /&gt;
| Critical Hit || Last hit of a chain does double damage/staggers enemies || - || N/A&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:313--&amp;gt; Shield Guard Up&amp;lt;/translate&amp;gt; || &#039;&#039;&#039;Durability&#039;&#039;&#039; value boosted by: || SharpWeaponAddGuardMax || PoweredSharpWeaponAddGuardMax&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:308--&amp;gt; Long Throw&amp;lt;/translate&amp;gt; || Throw distance multiplied by: || - ||  PoweredSharpAddThrowMax&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:309--&amp;gt; Multi-Shot Burst&amp;lt;/translate&amp;gt; || Bow shoots multiple arrows: || - || 5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;AddZoomRapid&#039;&#039; || Reticle zooms when aiming || - || Unknown {{check}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:311--&amp;gt; Quick Shot&amp;lt;/translate&amp;gt; || Firing rate multiplied by: || - || PoweredSharpAddRapidFireMin&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:312--&amp;gt; &#039;&#039;AddSurfMaster&#039;&#039;&amp;lt;/translate&amp;gt; || Shield surfing friction multiplied by: || - || 0.2 (from [[GlobalParameter]]::ShieldSurfMasterFrictionRatio)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:314--&amp;gt;&lt;br /&gt;
In summary, for amiibo weapons, a modifier always yields the highest possible value for that weapon as a bonus, except Quick Shot, which will use the &#039;&#039;lowest&#039;&#039; value.&lt;br /&gt;
No randomness is involved, aside from whether the Durability Up bonus comes from the AddLifeMax or AddGuardMax value.&lt;br /&gt;
&lt;br /&gt;
== Enemies == &amp;lt;!--T:334--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:335--&amp;gt;&lt;br /&gt;
When loading enemies, the game will always try to scale enemies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:336--&amp;gt;&lt;br /&gt;
However, the scaling function won&#039;t do anything if &#039;LevelSensorMode&#039; is &amp;amp;#x3C; 1 and will leave the enemy and any weapons they may hold unscaled.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:337--&amp;gt;&lt;br /&gt;
Note: Enemies that are not in any upgrade list (such as elemental Lizalfos) will not be scaled, but their weapon can still receive upgrades if:&lt;br /&gt;
* &#039;LevelSensorMode&#039; is non zero.&lt;br /&gt;
* Weapon point requirements are satisfied&lt;br /&gt;
* &#039;&#039;or&#039;&#039; the modifier tier is overridden using &#039;SharpWeaponJudgeType&#039;.&lt;br /&gt;
[1.3.0] In Master Mode, &#039;&#039;&#039;all&#039;&#039;&#039; enemies are automatically ranked up one tier by default &#039;&#039;&#039;post scaling&#039;&#039;&#039;, independently of &#039;LevelSensorMode&#039;. [[Actor]]s can receive two additional parameters:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:338--&amp;gt; Parameter&amp;lt;/translate&amp;gt;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:339--&amp;gt; Default&amp;lt;/translate&amp;gt;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:340--&amp;gt; Description&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| IsHardModeActor&lt;br /&gt;
| false&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:341--&amp;gt; Controls whether an enemy only shows up in Master Mode.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| DisableRankUpForHardMode&lt;br /&gt;
| false&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:342--&amp;gt; Controls whether the automatic rankup applies to an enemy.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:343--&amp;gt;&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Properties == &amp;lt;!--T:344--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;LevelSensorMode&amp;lt;/code&amp;gt; === &amp;lt;!--T:345--&amp;gt;&lt;br /&gt;
This [[actor]] property controls whether scaling is enabled for an enemy or weapon. Also applies to any weapons held by an enemy since &#039;scaleWeapon&#039; is called when an enemy drops their weapon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:346--&amp;gt;&lt;br /&gt;
Note that this doesn&#039;t apply to weapons that are attached to a Hinox&#039;s necklace, because Hinoxes use a different underlying enemy actor which overrides the &#039;on weapon dropped&#039; function and ignores &#039;LevelSensorMode&#039;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;SharpWeaponJudgeType&amp;lt;/code&amp;gt; === &amp;lt;!--T:347--&amp;gt;&lt;br /&gt;
This actor property controls the &#039;&#039;minimum&#039;&#039; modifier tier that a weapon can receive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:348--&amp;gt;&lt;br /&gt;
Internally and in assets such as [[Map unit|map units]], the following values are used for modifiers:&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:349--&amp;gt; Value&amp;lt;/translate&amp;gt;&lt;br /&gt;
! &amp;lt;translate&amp;gt;&amp;lt;!--T:350--&amp;gt; Description&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:351--&amp;gt; &#039;&#039;&#039;None&#039;&#039;&#039;: No modifiers.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:352--&amp;gt; &#039;&#039;&#039;RandomBlue&#039;&#039;&#039;: Weapon will randomly get at least a blue modifier (with &amp;lt;code&amp;gt;weaponCommonSharpWeaponPer&amp;lt;/code&amp;gt; being the probability).&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:353--&amp;gt; &#039;&#039;&#039;Blue&#039;&#039;&#039;: Weapon will get at least a blue modifier.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:354--&amp;gt; &#039;&#039;&#039;Yellow&#039;&#039;&#039;: Weapon will get at least a yellow modifier.&amp;lt;/translate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &amp;lt;translate&amp;gt;&amp;lt;!--T:355--&amp;gt; &#039;&#039;&#039;NoneForced&#039;&#039;&#039; (chests only): Weapon will &#039;&#039;never&#039;&#039; spawn with any modifiers. &#039;&#039;This overrides regular scaling.&#039;&#039;&amp;lt;/translate&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:356--&amp;gt;&lt;br /&gt;
If [[Difficulty scaling#LevelSensorMode|scaling]] is enabled, the weapon may receive modifiers from an even higher tier if point requirements are met.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:357--&amp;gt;&lt;br /&gt;
Otherwise, the weapon will get modifiers from exactly the specified tier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:358--&amp;gt;&lt;br /&gt;
For example, 0 (&#039;None&#039;) doesn&#039;t mean a weapon will never receive a modifier. It just means that the developers haven&#039;t forced the weapon to spawn with a blue/yellow modifier. If scaling requirements are satisfied, the weapon will receive blue or yellow modifiers.&lt;br /&gt;
&lt;br /&gt;
== Scaling algorithm == &amp;lt;!--T:359--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::loadByml&amp;lt;/code&amp;gt; === &amp;lt;!--T:360--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:361--&amp;gt;&lt;br /&gt;
This function is called by &amp;lt;code&amp;gt;Ecosystem::init&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;ksys::InitializeApp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:362--&amp;gt;&lt;br /&gt;
Sets up byml structures for reading Ecosystem/[[LevelSensor.byml]].&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::calculatePoints&amp;lt;/code&amp;gt; === &amp;lt;!--T:363--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:364--&amp;gt;&lt;br /&gt;
Called by [[PlacementMgr]] when spawning actors.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:365--&amp;gt;&lt;br /&gt;
Calculates weapon and enemy scaling points using a list of flags and configuration values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:366--&amp;gt;&lt;br /&gt;
All flags that are referenced in the configuration file are of the form &amp;lt;code&amp;gt;Defeated_%s_Num&amp;lt;/code&amp;gt;, but technically the configuration format allows for other flags to be specified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:367--&amp;gt;&lt;br /&gt;
Interestingly, the game calculates a single point value based on the kill counter flags but calculates two separate values for weapons and enemies with two different multipliers. This format makes it possible to easily change the scaling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:368--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
float points = 0.0;&lt;br /&gt;
for (kill_flag : this-&amp;gt;byml[&amp;quot;flag&amp;quot;])&lt;br /&gt;
    int kill_count = GameData::getIntegerFlag(kill_flag[&amp;quot;name&amp;quot;]);&lt;br /&gt;
    points += kill_count * kill_flag[&amp;quot;point&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:369--&amp;gt;&lt;br /&gt;
this-&amp;gt;points = points;&lt;br /&gt;
this-&amp;gt;weapon_points = points * this-&amp;gt;byml[&amp;quot;setting&amp;quot;].Level2WeaponPower;&lt;br /&gt;
this-&amp;gt;enemy_points = points * this-&amp;gt;byml[&amp;quot;setting&amp;quot;].Level2EnemyPower;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:370--&amp;gt;&lt;br /&gt;
In practice, settings have never been modified. 1.5.0 (which will likely be the last game update) still has the same Level2WeaponPower and Level2EnemyPower.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::scaleWeapon&amp;lt;/code&amp;gt; === &amp;lt;!--T:371--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:372--&amp;gt;&lt;br /&gt;
Called from treasure chest code, enemy actors{{Check}}, &amp;lt;code&amp;gt;Ecosystem::LevelSensor::scaleActor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:373--&amp;gt;&lt;br /&gt;
Given a weapon name, its modifier and current point status, this function returns the weapon to actually spawn and the modifier to use (if possible).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:374--&amp;gt;&lt;br /&gt;
If the algorithm fails to find an appropriate weapon that satisfies all conditions (point requirements, weapon series, modifier), the originally specified weapon and modifier will be used directly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:375--&amp;gt;&lt;br /&gt;
Pseudocode (1.0.0):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:376--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool Ecosystem::LevelSensor::scaleWeapon(const sead::SafeString&amp;amp; weapon_to_look_up,&lt;br /&gt;
                                         WeaponModifier required_modifier,&lt;br /&gt;
                                         const char** weapon_to_use_name,&lt;br /&gt;
                                         WeaponModifier* modifier_to_use,&lt;br /&gt;
                                         void* unknown)&lt;br /&gt;
{&lt;br /&gt;
  // some checks using &#039;unknown&#039; here which seems to be a pointer to the actor&lt;br /&gt;
  //&lt;br /&gt;
  for (weapon_table : this-&amp;gt;byml[&amp;quot;weapon&amp;quot;]) {&lt;br /&gt;
    // find the first weapon entry for which the player has enough points&lt;br /&gt;
    // with the specified name and modifier&lt;br /&gt;
    i = -1;&lt;br /&gt;
    for (j = 0; j &amp;lt; weapon_table[&amp;quot;actors&amp;quot;].size; ++j) {&lt;br /&gt;
      entry = weapon_table[&amp;quot;actors&amp;quot;][j];&lt;br /&gt;
      float points_for_next_transition = entry[&amp;quot;value&amp;quot;];&lt;br /&gt;
      //&lt;br /&gt;
      if (this-&amp;gt;weapon_points &amp;gt; points_for_next_transition &amp;amp;&amp;amp;&lt;br /&gt;
          weapon_to_look_up == entry[&amp;quot;name&amp;quot;] &amp;amp;&amp;amp;&lt;br /&gt;
          convert_to_modifier(entry[&amp;quot;plus&amp;quot;]) == required_modifier) {&lt;br /&gt;
        i = j;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    //&lt;br /&gt;
    if (i == -1)&lt;br /&gt;
      continue;&lt;br /&gt;
    //&lt;br /&gt;
    do {&lt;br /&gt;
      entry = weapon_table[&amp;quot;actors&amp;quot;][i];&lt;br /&gt;
      //&lt;br /&gt;
      // not_rank_up means there is no link between weapons;&lt;br /&gt;
      // this table is just used to look up modifiers.&lt;br /&gt;
      // so go down the list until there are no more entries for the requested weapon&lt;br /&gt;
      // or until we reach a modifier that requires more points.&lt;br /&gt;
      if (weapon_table[&amp;quot;not_rank_up&amp;quot;] &amp;amp;&amp;amp; entry[&amp;quot;name&amp;quot;] != weapon_to_look_up)&lt;br /&gt;
        break;&lt;br /&gt;
      //&lt;br /&gt;
      // otherwise, just go down the list until we reach the end or a weapon which&lt;br /&gt;
      // requires more points. this will possibly upgrade the weapon (e.g. Knight -&amp;gt; Royal).&lt;br /&gt;
      if (this-&amp;gt;weapon_points &amp;lt;= entry[&amp;quot;value&amp;quot;])&lt;br /&gt;
        break;&lt;br /&gt;
      //&lt;br /&gt;
      ++i;&lt;br /&gt;
    } while (i &amp;lt; weapon_table[&amp;quot;actors&amp;quot;].size);&lt;br /&gt;
    //&lt;br /&gt;
    *weapon_to_use_name = entry[&amp;quot;name&amp;quot;];&lt;br /&gt;
    *modifier_to_use = convert_to_modifier(entry[&amp;quot;plus&amp;quot;]);&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  return false;  // cannot scale up&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;Ecosystem::LevelSensor::scaleActor&amp;lt;/code&amp;gt; === &amp;lt;!--T:377--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:378--&amp;gt;&lt;br /&gt;
Analogous to &amp;lt;code&amp;gt;LevelSensor::scaleWeapon&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:379--&amp;gt;&lt;br /&gt;
Pseudocode (1.0.0):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:380--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
if (actor-&amp;gt;params[&amp;quot;LevelSensorMode&amp;quot;] &amp;lt; 1)&lt;br /&gt;
  return false;&lt;br /&gt;
//&lt;br /&gt;
if (actor_name.contains(&amp;quot;Enemy&amp;quot;)) {&lt;br /&gt;
  for (enemy_table : this-&amp;gt;byml[&amp;quot;enemy&amp;quot;]) {&lt;br /&gt;
    i = -1;&lt;br /&gt;
    for (j = 0; j &amp;lt; enemy_table[&amp;quot;actors&amp;quot;].size; ++j) {&lt;br /&gt;
      entry = enemy_table[&amp;quot;actors&amp;quot;][j];&lt;br /&gt;
      if (entry[&amp;quot;name&amp;quot;] == actor_name &amp;amp;&amp;amp; this-&amp;gt;enemy_points &amp;gt; entry[&amp;quot;value&amp;quot;]) {&lt;br /&gt;
        i = j;&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    //&lt;br /&gt;
    if (i == -1)&lt;br /&gt;
      continue;&lt;br /&gt;
    //&lt;br /&gt;
    do {&lt;br /&gt;
      entry = enemy_table[&amp;quot;actors&amp;quot;][i];&lt;br /&gt;
      if (this-&amp;gt;enemy_points &amp;lt;= entry[&amp;quot;value&amp;quot;])&lt;br /&gt;
        break;&lt;br /&gt;
      ++i;&lt;br /&gt;
    } while (i &amp;lt; enemy_table[&amp;quot;actors&amp;quot;].size);&lt;br /&gt;
    //&lt;br /&gt;
    *actor_to_use = entry[&amp;quot;name&amp;quot;];&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  return false;  // cannot scale up&lt;br /&gt;
}&lt;br /&gt;
//&lt;br /&gt;
if (actor_name.contains(&amp;quot;Weapon&amp;quot;)) {&lt;br /&gt;
  weapon_name = actor-&amp;gt;getWeaponName();&lt;br /&gt;
  modifier = actor-&amp;gt;params[&amp;quot;SharpWeaponJudgeType&amp;quot;];&lt;br /&gt;
  if (modifier == WeaponModifier::RandomBlue)&lt;br /&gt;
    modifier = get_random_blue_modifier(actor-&amp;gt;getWeaponName());&lt;br /&gt;
  //&lt;br /&gt;
  if (scaleWeapon(weapon_name, &amp;amp;weapon_to_use, &amp;amp;modifier_to_use)) {&lt;br /&gt;
    actor-&amp;gt;setProperty(&amp;quot;SharpWeaponJudgeType&amp;quot;, modifier_to_use);&lt;br /&gt;
    *actor_to_use = weapon_to_use;&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  return false;  // cannot scale up&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The Data == &amp;lt;!--T:381--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:382--&amp;gt;&lt;br /&gt;
To make things easier to understand, here are links to:&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/e/2PACX-1vRSlyOD7FLAn1TUBn64Pu8Pld-WOfgcVByuywHMWvBTEV0j8potD1wkBs-MJJXf-gvEkpfItUCMqMk6/pubhtml kill point, enemy scaling and weapon scaling tables]&lt;br /&gt;
* an [https://objmap.zeldamods.org object map with scaling information].&lt;br /&gt;
This makes it possible to see both the required points for enemy/weapon upgrades, as well as all of the special cases extremely easily.&lt;br /&gt;
&lt;br /&gt;
== Ganon Blights == &amp;lt;!--T:383--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:384--&amp;gt;&lt;br /&gt;
Ganon blights also have varying difficulty but follow a different system. Their health is determined by the base HP (set in [[ActorParam/GeneralParamList|GeneralParamList]]) and blight defeat flags.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:385--&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c++&amp;quot;&amp;gt;__int64 SiteBoss::getInitialHP(SiteBoss *this) // 0x71002D01F4&lt;br /&gt;
{&lt;br /&gt;
  const int baseHp = Enemy::getInitialHP(this);&lt;br /&gt;
  const int halfBaseHp = baseHp &amp;gt;&amp;gt; 1;&lt;br /&gt;
  const bool dieGanonWind = hasFlag_Die_PGanonWind(0);&lt;br /&gt;
  const bool dieGanonWater = hasFlag_Die_PGanonWater(0);&lt;br /&gt;
  const bool dieGanonFire = hasFlag_Die_PGanonFire(0);&lt;br /&gt;
  const bool dieGanonElectric = hasFlag_Die_PGanonElectric(0);&lt;br /&gt;
  const int flags = this-&amp;gt;siteBossFlags &amp;amp; 0xFFFFFFFC;&lt;br /&gt;
  int multiplier;&lt;br /&gt;
  if ( flags == 4 )&lt;br /&gt;
    multiplier = 3;&lt;br /&gt;
  else if ( flags == 8 )&lt;br /&gt;
    multiplier = 4;&lt;br /&gt;
  else&lt;br /&gt;
    multiplier = dieGanonFire + dieGanonWind + dieGanonWater + dieGanonElectric;&lt;br /&gt;
  return baseHp + multiplier * halfBaseHp;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:386--&amp;gt;&lt;br /&gt;
Effectively, this means that the first blight Link fights will have 800+0×400 = 800 HP, the second will have 800+1×400 = 1200 HP, the third 800+2×400 = 1600 HP and the last one 800+3×400 = 2000 HP.&lt;br /&gt;
&lt;br /&gt;
=== Special case 1: Castle Blights === &amp;lt;!--T:387--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:388--&amp;gt;&lt;br /&gt;
Castle blights have &amp;lt;code&amp;gt;IsRemainBoss&amp;lt;/code&amp;gt; set to false in their root AI parameters (see [[AIDef:AI/SiteBossSpearRoot]] for example), which sets flag 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:389--&amp;gt;&lt;br /&gt;
Thus, blights that are fought in the Castle always have 800+3×400 = 2000 HP regardless of story progression.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:390--&amp;gt;&lt;br /&gt;
If flag 4 is set, the [[AIDef:Action/SiteBossDie]] code will NOT increment the &amp;amp;#x22;defeated&amp;amp;#x22; counter. This means castle blights do not give any scaling points.&lt;br /&gt;
&lt;br /&gt;
=== Special case 2: DLC2 Blights === &amp;lt;!--T:391--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:392--&amp;gt;&lt;br /&gt;
Illusory Realm blights possess the &amp;lt;code&amp;gt;EnemySiteBoss_R&amp;lt;/code&amp;gt; actor tag. This causes flag 8 to be set. So they will always have 500+4×250 = 1500 HP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:393--&amp;gt;&lt;br /&gt;
Interestingly, the Windblight AI function doesn&#039;t check the actor tag but the actor name instead. For flag 8 to be set, the actor name must be &amp;lt;code&amp;gt;Enemy_SiteBoss_Bow_R&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:Internals{{#translation:}}]]&lt;br /&gt;
[[Category:Game mechanics{{#translation:}}]]&lt;/div&gt;</summary>
		<author><name>Chubby Bub</name></author>
	</entry>
</feed>