Difficulty scaling/zh: Difference between revisions
Created page with "<source lang="c++"> if (actor->params["LevelSensorMode"] < 1) return false; if (actor_name.contains("Enemy")) { for (enemy_table : this->byml["enemy"]) { i = -1;..." |
No edit summary |
||
| (29 intermediate revisions by 3 users not shown) | |||
| Line 27: | Line 27: | ||
== 阻止升級的情況 == | == 阻止升級的情況 == | ||
下面這個情況會導致敵人跟武器維持原樣 | 下面這個情況會導致敵人跟武器維持原樣。 | ||
* WorldMgr::sInstance->stageType == 1 (Open World stage) | * WorldMgr::sInstance->stageType == 1 (Open World stage) | ||
* 且 WorldMgr::sInstance->isAocField (current map is Trial of the Sword) | * 且 WorldMgr::sInstance->isAocField (current map is Trial of the Sword) | ||
* 且 WorldMgr::sInstance->disableScaling (set to true when entering Trial of the Sword) | * 且 WorldMgr::sInstance->disableScaling (set to true when entering Trial of the Sword) | ||
總而言之,遊戲不會升級劍之考驗裡的武器和敵人。 | |||
另一種會跳過升級的情況是 [[map area]] 等於 28, 也就是林克位在 "HateruSea",野外的考驗的塞哈特諾島。 | 另一種會跳過升級的情況是 [[map area]] 等於 28, 也就是林克位在 "HateruSea",野外的考驗的塞哈特諾島。 | ||
| Line 42: | Line 45: | ||
* '''敵人手上的武器''': The flag <code>{MapName}_WeaponDrop_{ID}</code> is false, '''and''' [the actor property 'LevelSensorMode' is higher than 1 ''or'' the enemy is a Guardian Scout ('Enemy_Guardian_Mini' 廟裡的守護者)]. | * '''敵人手上的武器''': The flag <code>{MapName}_WeaponDrop_{ID}</code> is false, '''and''' [the actor property 'LevelSensorMode' is higher than 1 ''or'' the enemy is a Guardian Scout ('Enemy_Guardian_Mini' 廟裡的守護者)]. | ||
註記:從 NPC 那裡拿到的武器(阿卡莱古代研究所、英傑武器)不在上面的列表裡,從而不升級。 | 註記:從 NPC 那裡拿到的武器(阿卡莱古代研究所、英傑武器、怪物商人)不在上面的列表裡,從而不升級。 | ||
== 武器加成 == | == 武器加成 == | ||
| Line 50: | Line 53: | ||
二是武器的攻擊、防禦、耐久等數值擇一增加; | 二是武器的攻擊、防禦、耐久等數值擇一增加; | ||
三是增加多少。 | 三是增加多少。 | ||
藍標、白標(Blue/White)是比較低階的升級,標記成「某某某提升」。黃標(Yellow)是高階的升級,標記成「某某某大提升」。以攻擊力為例,藍標可能會增加 10~20 的攻擊力(攻擊力提升 +14),而黃標會增加 20~30(攻擊力大提升 +24)。 | |||
=== 加成的方向 === | === 加成的方向 === | ||
| Line 56: | Line 61: | ||
{|class="wikitable" | {|class="wikitable" | ||
! 加成的方向 !! Available in | ! 加成的方向 !! Available in bonus tiers | ||
|- | |- | ||
|- | |- | ||
| Line 77: | Line 82: | ||
| ZoomRapid || Yellow | | ZoomRapid || Yellow | ||
|} | |} | ||
需注意的是: | 需注意的是: | ||
| Line 181: | Line 184: | ||
|- | |- | ||
| 1 | | 1 | ||
| '''RandomBlue''': | | '''RandomBlue''': 要麼是藍標以上的加成,要麼不加成,隨機決定。 (with <code>weaponCommonSharpWeaponPer</code> being the probability). | ||
|- | |- | ||
| 2 | | 2 | ||
| Line 235: | Line 238: | ||
=== <code>Ecosystem::LevelSensor::scaleWeapon</code> === | === <code>Ecosystem::LevelSensor::scaleWeapon</code> === | ||
它負責處理武器的升級。有三個東西會呼叫它:寶箱、敵人{{Check}}、 | 它負責處理武器的升級。有三個東西會呼叫它:寶箱、敵人{{Check}}、 <code>Ecosystem::LevelSensor::scaleActor</code>。 | ||
<code>Ecosystem::LevelSensor::scaleActor</code>。 | |||
呼叫時給定一個武器的名字、預設的加成(至少多少)、跟目前玩家的經驗值。然後這個函數會回傳一個武器名稱(可能跟給定的不一樣),其中包括應當使用何種加成。 | 呼叫時給定一個武器的名字、預設的加成(至少多少)、跟目前玩家的經驗值。然後這個函數會回傳一個武器名稱(可能跟給定的不一樣),其中包括應當使用何種加成。 | ||
| Line 351: | Line 353: | ||
</source> | </source> | ||
== | == 大數據 == | ||
精確的數值可以在這裡找到: | |||
* [https://docs.google.com/spreadsheets/d/e/2PACX-1vRSlyOD7FLAn1TUBn64Pu8Pld-WOfgcVByuywHMWvBTEV0j8potD1wkBs-MJJXf-gvEkpfItUCMqMk6/pubhtml kill point, enemy scaling and weapon scaling tables] | * [https://docs.google.com/spreadsheets/d/e/2PACX-1vRSlyOD7FLAn1TUBn64Pu8Pld-WOfgcVByuywHMWvBTEV0j8potD1wkBs-MJJXf-gvEkpfItUCMqMk6/pubhtml kill point, enemy scaling and weapon scaling tables] | ||
* | * [https://objmap.zeldamods.org 地圖裡也有]. | ||
This makes it possible to see both the required points for enemy/weapon upgrades, as well as all of the special cases extremely easily. | This makes it possible to see both the required points for enemy/weapon upgrades, as well as all of the special cases extremely easily. | ||
== | == 厄咒加儂 == | ||
厄咒加儂也有升級版,不過是依據的是另一個完全獨立的系統。 | |||
具體升級的內容是:神獸裡的厄咒加儂的血量是由玩家打死過多少別的加儂決定的。 | |||
<source lang="c++">__int64 SiteBoss::getInitialHP(SiteBoss *this) // 0x71002D01F4 | <source lang="c++">__int64 SiteBoss::getInitialHP(SiteBoss *this) // 0x71002D01F4 | ||
{ | { | ||
const int baseHp = Enemy::getInitialHP(this); | const int baseHp = Enemy::getInitialHP(this); // 基礎血量(底) | ||
const int halfBaseHp = baseHp >> 1; | const int halfBaseHp = baseHp >> 1; // 除以 2(台) | ||
const bool dieGanonWind = hasFlag_Die_PGanonWind(0); | const bool dieGanonWind = hasFlag_Die_PGanonWind(0); // 打過風嗎? | ||
const bool dieGanonWater = hasFlag_Die_PGanonWater(0); | const bool dieGanonWater = hasFlag_Die_PGanonWater(0); // 打過水嗎? | ||
const bool dieGanonFire = hasFlag_Die_PGanonFire(0); | const bool dieGanonFire = hasFlag_Die_PGanonFire(0); // 打過火嗎? | ||
const bool dieGanonElectric = hasFlag_Die_PGanonElectric(0); | const bool dieGanonElectric = hasFlag_Die_PGanonElectric(0); // 打過雷嗎? | ||
const int flags = this->siteBossFlags & 0xFFFFFFFC; | const int flags = this->siteBossFlags & 0xFFFFFFFC; // 玩家在哪裡 | ||
int multiplier; | int multiplier; | ||
if ( flags == 4 ) | if ( flags == 4 ) // 城堡裡 | ||
multiplier = 3; | |||
else if ( flags == 8 ) | else if ( flags == 8 ) // 幻影空間 | ||
multiplier = 4; | |||
else | else | ||
multiplier = dieGanonFire + dieGanonWind + dieGanonWater + dieGanonElectric; | multiplier = dieGanonFire + dieGanonWind + dieGanonWater + dieGanonElectric; | ||
| Line 381: | Line 384: | ||
}</source> | }</source> | ||
換句換說,玩家第一個擊倒的厄咒加儂的血量是 800,下一個 1200,再下一個 1600,最後一個 2000。 | |||
=== Special case 1: | === Special case 1: 城堡裡的厄咒加儂 === | ||
Castle blights have <code>IsRemainBoss</code> set to false in their root AI parameters (see [[AIDef:AI/SiteBossSpearRoot]] for example), which sets flag 4. | Castle blights have <code>IsRemainBoss</code> set to false in their root AI parameters (see [[AIDef:AI/SiteBossSpearRoot]] for example), which sets flag 4. | ||
城堡裡的厄咒加儂,不管是第幾隻,血量都是 800+3×400 = 2000。 | |||
打死城堡裡的厄咒加儂並不計入經驗值。(相應的計數器不會增加。) | |||
=== Special case 2: | === Special case 2: 幻影空間裡的厄咒加儂 === | ||
Illusory Realm blights possess the <code>EnemySiteBoss_R</code> actor tag. This causes flag 8 to be set. So they will always have 500+4×250 = 1500 HP. | Illusory Realm blights possess the <code>EnemySiteBoss_R</code> actor tag. This causes flag 8 to be set. So they will always have 500+4×250 = 1500 HP. | ||
補充:幻影裡的厄咒加儂基礎血量是 500,其他情況是 800。 | |||
Interestingly, the Windblight AI function | Interestingly, the Windblight AI function doesn't check the actor tag but the actor name instead. For flag 8 to be set, the actor name must be <code>Enemy_SiteBoss_Bow_R</code>. | ||
<references /> | <references /> | ||
[[Category:Internals]] | [[Category:Internals{{#translation:}}]] | ||
[[Category:Game mechanics]] | [[Category:Game mechanics{{#translation:}}]] | ||