User:Sheepy: Difference between revisions
Created page with "= Sheepy's info compendium = == EXP == === Exp loss === If you're >10 levels below the area: xpMul=1.0+(5−lvlDiff)x0.15 {| class="wikitable" |- ! Level Diff !! Exp Multi |- | -11 || 85% |- | -12 || 70% |- | -13 || 55% |- | -14 || 40% |- | -15 || 25% |- | -16 || 10% |} If you're >5 levels above the area: xpMul=1.0+(lvlDiff+10)x0.15 {| class="wikitable" |- ! Level Diff !! Exp Multi |- | +6 || 85% |- | +7 || 70% |- | +8 || 55% |- | +9 || 40% |- | +10 || 25% |- | +11..." |
Added investigation results for enemy scaling |
||
| Line 51: | Line 51: | ||
'''Source''': GiveExperience.as - bool Apply(Actor@ owner, UnitPtr target, vec2 pos, vec2 dir, float intensity, bool husk) | '''Source''': GiveExperience.as - bool Apply(Actor@ owner, UnitPtr target, vec2 pos, vec2 dir, float intensity, bool husk) | ||
== Architect Modifiers == | |||
=== Treasure Hunt === | |||
The treasury appears to have a 8% chance of spawning on each floor, with Treasure Hunt adding a separate 8% roll. | |||
Without Treasure Hunt: ( 1 - ( 0.92 ^ 6 ) ) x 100 = 39.36% chance of seeing the treasury on a full run | |||
With Treasure Hunt: ( 1 - ( 0.92 ^ 12 ) ) x 100 = 63.23% chance of seeing the treasury on a full run | |||
'''Source''': themes_dungeon.sval, themes_barracks.sval, themes_courts.sval - search for "treasury" | |||
== Scaling == | |||
=== Enemy HP === | |||
Simplified: hp = ( base_hp + ngp_level x 25 ) x ( 1 + mp_scaling + ngp_level x 2.75 ) | |||
Note that mp_scaling will vary depending on the enemy, value of 1 for Avatar in solo. | |||
The following table is for Avatar's 100k base hp | |||
{| class="wikitable" | |||
|+Solo | |||
!NGP | |||
!HP | |||
|- | |||
|1 | |||
|375,093.75 | |||
|- | |||
|2 | |||
|650,325.00 | |||
|- | |||
|3 | |||
|925,693.75 | |||
|- | |||
|4 | |||
|1,201,200.00 | |||
|- | |||
|5 | |||
|1,476,843.75 | |||
|- | |||
|6 | |||
|1,752,625.00 | |||
|- | |||
|7 | |||
|2,028,543.75 | |||
|- | |||
|8 | |||
|2,304,600.00 | |||
|- | |||
|9 | |||
|2,580,793.75 | |||
|- | |||
|10 | |||
|2,857,125.00 | |||
|} | |||
'''Source''': CompositeActorBehavior.as - GetMaxHp() | |||
=== Multiplayer === | |||
Enemy HP is increased in multiplayer with the following code: | |||
g_mpEnemyHealthScale = (num - 1) * pow(num, -0.35) + max(0.0f, (num - 2) * 0.3f); | |||
Which is then used as part of the hp calculation: | |||
float ret = m_props.m_maxHp + (m_props.m_ngpScale * g_ngp * 25); | |||
ret *= (1.0f + g_mpEnemyHealthScale * m_props.m_mpScaleFact) * Tweak::EnemyHealthMul; | |||
'''''m_props.mpScaleFact varies per enemy''''' | |||
'''Source''': | |||
AGameplayGameMode.as - RefreshMultiplayerScaling() | |||
CompositeActorBehavior.as - GetMaxHp() | |||
==== Damage taken ==== | |||
An increased damage taken modifier is applied to all players, including from trap, scaling with number of players. | |||
Code: g_mpPlrDmgTakenScale = clamp(pow(num, 0.2), 1.0f, 2.0f); | |||
Simplified: player_count ^ 0.2 with a maximum of x2 at 32 players. | |||
{| class="wikitable" | |||
|+ | |||
!Players | |||
!Damage taken | |||
|- | |||
|1 | |||
|1 | |||
|- | |||
|2 | |||
|1.148 | |||
|- | |||
|3 | |||
|1.245 | |||
|- | |||
|4 | |||
|1.310 | |||
|- | |||
|5 | |||
|1.379 | |||
|- | |||
|6 | |||
|1.430 | |||
|- | |||
|7 | |||
|1.475 | |||
|- | |||
|... | |||
|... | |||
|- | |||
|32 | |||
|2 | |||
|} | |||
'''Source''': AGameplayGameMode.as - RefreshMultiplayerScaling() | |||
Revision as of 12:00, 29 January 2025
Sheepy's info compendium
EXP
Exp loss
If you're >10 levels below the area: xpMul=1.0+(5−lvlDiff)x0.15
| Level Diff | Exp Multi |
|---|---|
| -11 | 85% |
| -12 | 70% |
| -13 | 55% |
| -14 | 40% |
| -15 | 25% |
| -16 | 10% |
If you're >5 levels above the area: xpMul=1.0+(lvlDiff+10)x0.15
| Level Diff | Exp Multi |
|---|---|
| +6 | 85% |
| +7 | 70% |
| +8 | 55% |
| +9 | 40% |
| +10 | 25% |
| +11 | 10% |
Source: PlayerRecord.as - int GiveExperience(int amount, bool skipGainMod = false)
Multiplayer exp
Exp is divided equally between players before going through the exp penalty formula.
Source: GiveExperience.as - bool Apply(Actor@ owner, UnitPtr target, vec2 pos, vec2 dir, float intensity, bool husk)
Architect Modifiers
Treasure Hunt
The treasury appears to have a 8% chance of spawning on each floor, with Treasure Hunt adding a separate 8% roll.
Without Treasure Hunt: ( 1 - ( 0.92 ^ 6 ) ) x 100 = 39.36% chance of seeing the treasury on a full run
With Treasure Hunt: ( 1 - ( 0.92 ^ 12 ) ) x 100 = 63.23% chance of seeing the treasury on a full run
Source: themes_dungeon.sval, themes_barracks.sval, themes_courts.sval - search for "treasury"
Scaling
Enemy HP
Simplified: hp = ( base_hp + ngp_level x 25 ) x ( 1 + mp_scaling + ngp_level x 2.75 )
Note that mp_scaling will vary depending on the enemy, value of 1 for Avatar in solo.
The following table is for Avatar's 100k base hp
| NGP | HP |
|---|---|
| 1 | 375,093.75 |
| 2 | 650,325.00 |
| 3 | 925,693.75 |
| 4 | 1,201,200.00 |
| 5 | 1,476,843.75 |
| 6 | 1,752,625.00 |
| 7 | 2,028,543.75 |
| 8 | 2,304,600.00 |
| 9 | 2,580,793.75 |
| 10 | 2,857,125.00 |
Source: CompositeActorBehavior.as - GetMaxHp()
Multiplayer
Enemy HP is increased in multiplayer with the following code: g_mpEnemyHealthScale = (num - 1) * pow(num, -0.35) + max(0.0f, (num - 2) * 0.3f);
Which is then used as part of the hp calculation: float ret = m_props.m_maxHp + (m_props.m_ngpScale * g_ngp * 25); ret *= (1.0f + g_mpEnemyHealthScale * m_props.m_mpScaleFact) * Tweak::EnemyHealthMul;
m_props.mpScaleFact varies per enemy
Source:
AGameplayGameMode.as - RefreshMultiplayerScaling()
CompositeActorBehavior.as - GetMaxHp()
Damage taken
An increased damage taken modifier is applied to all players, including from trap, scaling with number of players.
Code: g_mpPlrDmgTakenScale = clamp(pow(num, 0.2), 1.0f, 2.0f);
Simplified: player_count ^ 0.2 with a maximum of x2 at 32 players.
| Players | Damage taken |
|---|---|
| 1 | 1 |
| 2 | 1.148 |
| 3 | 1.245 |
| 4 | 1.310 |
| 5 | 1.379 |
| 6 | 1.430 |
| 7 | 1.475 |
| ... | ... |
| 32 | 2 |
Source: AGameplayGameMode.as - RefreshMultiplayerScaling()