Files
HEROLL/HEROLL_RULES_v0.2.8/03-战斗/combat-formulas.csv
T

2.7 KiB

1formula_idsystemformula_or_rulerounding_or_boundarysource_tagnative_locationimplementation_status
2COMBAT-STAT-001final_statusindependentBonus + flatSum * (100 + percentBonus) / 100; special query modes may exclude layersfloat; mode-dependent branchesNATIVE_CONFIRMEDCharacterStatus.GetFinalStatus@0x5409B54IMPLEMENT_CORE
3COMBAT-DMG-001player_base_damageGetFinalStatus(ATTACK_POWER)floatNATIVE_CONFIRMEDBaseActor.GetBaseDamageAndConvertWithPlayerDamage@0x5494CD8IMPLEMENT
4COMBAT-DMG-002enemy_base_damageRandom(attackLower*(1-rangePct),attackUpper*(1+rangePct)); rangePct=0.15float RangeNATIVE_AND_CONFIG_CONFIRMEDBaseActor.GetBaseDamageAndConvertWithPlayerDamage@0x5494CD8IMPLEMENT
5COMBAT-HIT-001hithitPercent > RandomInt(0,101)roll 0..100; negative hitPercent clamped to 0NATIVE_CONFIRMEDBaseMonoCharacter.HitAndGetResult@0x549B2CCIMPLEMENT
6COMBAT-CRIT-001criticalfinalCriticalRate > RandomInt(0,101)roll 0..100; strict greater-thanNATIVE_CONFIRMEDBaseMonoPlayer.OnBeforeAttack@0x55A95ECIMPLEMENT
7COMBAT-CRIT-002critical_damagedamage * criticalDamagePercent * 0.01float; BaseCritical=150NATIVE_AND_CONFIG_CONFIRMEDBaseMonoPlayer.OnBeforeAttack@0x55A9704IMPLEMENT
8COMBAT-DEF-001defensemax(0,preDefenseDamage-finalDefense)floatNATIVE_CONFIRMEDBaseMonoCharacter.HitAndGetResult@0x549BD18IMPLEMENT
9COMBAT-HP-001hptargetHp-finalDamagefloat; display rounding separateNATIVE_CONFIRMEDBaseMonoCharacter.HitAndGetResult@0x549BE7CIMPLEMENT
10COMBAT-ASPD-001attack_speed100/finalAttackSpeedseconds; subtract elapsed; no global 0.15 clamp observedNATIVE_CONFIRMED<WaitAttackCooldown>d__45.MoveNext@0x5497280IMPLEMENT
11COMBAT-LS-001life_stealceil(finalDamage*finalLifeSteal*0.01)only if positive; minimum heal 1NATIVE_CONFIRMEDBaseMonoPlayer.OnAfterAttack@0x55A9E48IMPLEMENT
12COMBAT-COUNTER-001counter_chancefinalCounterRate >= RandomInt(1,101)roll 1..100; inclusiveNATIVE_CONFIRMEDBaseMonoPlayer.OnCounterAttack@0x55AC048IMPLEMENT
13DOUBLE-001natural_doublediceA==diceBbuilt-in 36 pairs equal weight => 1/6 absent overrideNATIVE_CONFIG_VIDEO_CONFIRMED<CheckLastTile>d__130.MoveNextIMPLEMENT
14DOUBLE-002double_movementdiceA+diceBnever multiply by 2 solely because DoubleNATIVE_VIDEO_CONFIRMED<CheckLastTile>d__130.MoveNextIMPLEMENT
15DOUBLE-003double_stackTryAddDoubleStack(diceA)accumulate face value; threshold/reward/reset unresolvedNATIVE_VIDEO_PARTIALBoardController.TryAddDoubleStack@0x56A4BE0IMPLEMENT_ACCUMULATION_ONLY
16DOUBLE-004double_combatno unconditional damage multiplier; dispatch TriggerOnDiceDouble to equipped consumersevent-drivenNATIVE_CONFIG_CONFIRMEDEventManager.TriggerOnDiceDouble@0x51AEDECIMPLEMENT