Initial import of HEROLL source and design documents

This commit is contained in:
toshiocn
2026-10-26 16:05:39 +08:00
commit fdb55672c1
1846 changed files with 290692 additions and 0 deletions
@@ -0,0 +1,17 @@
formula_id,system,formula_or_rule,rounding_or_boundary,source_tag,native_location,implementation_status
COMBAT-STAT-001,final_status,"independentBonus + flatSum * (100 + percentBonus) / 100; special query modes may exclude layers","float; mode-dependent branches",NATIVE_CONFIRMED,CharacterStatus.GetFinalStatus@0x5409B54,IMPLEMENT_CORE
COMBAT-DMG-001,player_base_damage,GetFinalStatus(ATTACK_POWER),float,NATIVE_CONFIRMED,BaseActor.GetBaseDamageAndConvertWithPlayerDamage@0x5494CD8,IMPLEMENT
COMBAT-DMG-002,enemy_base_damage,"Random(attackLower*(1-rangePct),attackUpper*(1+rangePct)); rangePct=0.15","float Range",NATIVE_AND_CONFIG_CONFIRMED,BaseActor.GetBaseDamageAndConvertWithPlayerDamage@0x5494CD8,IMPLEMENT
COMBAT-HIT-001,hit,"hitPercent > RandomInt(0,101)","roll 0..100; negative hitPercent clamped to 0",NATIVE_CONFIRMED,BaseMonoCharacter.HitAndGetResult@0x549B2CC,IMPLEMENT
COMBAT-CRIT-001,critical,"finalCriticalRate > RandomInt(0,101)","roll 0..100; strict greater-than",NATIVE_CONFIRMED,BaseMonoPlayer.OnBeforeAttack@0x55A95EC,IMPLEMENT
COMBAT-CRIT-002,critical_damage,"damage * criticalDamagePercent * 0.01","float; BaseCritical=150",NATIVE_AND_CONFIG_CONFIRMED,BaseMonoPlayer.OnBeforeAttack@0x55A9704,IMPLEMENT
COMBAT-DEF-001,defense,"max(0,preDefenseDamage-finalDefense)",float,NATIVE_CONFIRMED,BaseMonoCharacter.HitAndGetResult@0x549BD18,IMPLEMENT
COMBAT-HP-001,hp,"targetHp-finalDamage","float; display rounding separate",NATIVE_CONFIRMED,BaseMonoCharacter.HitAndGetResult@0x549BE7C,IMPLEMENT
COMBAT-ASPD-001,attack_speed,"100/finalAttackSpeed","seconds; subtract elapsed; no global 0.15 clamp observed",NATIVE_CONFIRMED,<WaitAttackCooldown>d__45.MoveNext@0x5497280,IMPLEMENT
COMBAT-LS-001,life_steal,"ceil(finalDamage*finalLifeSteal*0.01)","only if positive; minimum heal 1",NATIVE_CONFIRMED,BaseMonoPlayer.OnAfterAttack@0x55A9E48,IMPLEMENT
COMBAT-COUNTER-001,counter_chance,"finalCounterRate >= RandomInt(1,101)","roll 1..100; inclusive",NATIVE_CONFIRMED,BaseMonoPlayer.OnCounterAttack@0x55AC048,IMPLEMENT
DOUBLE-001,natural_double,diceA==diceB,"built-in 36 pairs equal weight => 1/6 absent override",NATIVE_CONFIG_VIDEO_CONFIRMED,<CheckLastTile>d__130.MoveNext,IMPLEMENT
DOUBLE-002,double_movement,diceA+diceB,"never multiply by 2 solely because Double",NATIVE_VIDEO_CONFIRMED,<CheckLastTile>d__130.MoveNext,IMPLEMENT
DOUBLE-003,double_stack,TryAddDoubleStack(diceA),"accumulate face value; threshold/reward/reset unresolved",NATIVE_VIDEO_PARTIAL,BoardController.TryAddDoubleStack@0x56A4BE0,IMPLEMENT_ACCUMULATION_ONLY
DOUBLE-004,double_combat,"no unconditional damage multiplier; dispatch TriggerOnDiceDouble to equipped consumers",event-driven,NATIVE_CONFIG_CONFIRMED,EventManager.TriggerOnDiceDouble@0x51AEDEC,IMPLEMENT
1 formula_id system formula_or_rule rounding_or_boundary source_tag native_location implementation_status
2 COMBAT-STAT-001 final_status independentBonus + flatSum * (100 + percentBonus) / 100; special query modes may exclude layers float; mode-dependent branches NATIVE_CONFIRMED CharacterStatus.GetFinalStatus@0x5409B54 IMPLEMENT_CORE
3 COMBAT-DMG-001 player_base_damage GetFinalStatus(ATTACK_POWER) float NATIVE_CONFIRMED BaseActor.GetBaseDamageAndConvertWithPlayerDamage@0x5494CD8 IMPLEMENT
4 COMBAT-DMG-002 enemy_base_damage Random(attackLower*(1-rangePct),attackUpper*(1+rangePct)); rangePct=0.15 float Range NATIVE_AND_CONFIG_CONFIRMED BaseActor.GetBaseDamageAndConvertWithPlayerDamage@0x5494CD8 IMPLEMENT
5 COMBAT-HIT-001 hit hitPercent > RandomInt(0,101) roll 0..100; negative hitPercent clamped to 0 NATIVE_CONFIRMED BaseMonoCharacter.HitAndGetResult@0x549B2CC IMPLEMENT
6 COMBAT-CRIT-001 critical finalCriticalRate > RandomInt(0,101) roll 0..100; strict greater-than NATIVE_CONFIRMED BaseMonoPlayer.OnBeforeAttack@0x55A95EC IMPLEMENT
7 COMBAT-CRIT-002 critical_damage damage * criticalDamagePercent * 0.01 float; BaseCritical=150 NATIVE_AND_CONFIG_CONFIRMED BaseMonoPlayer.OnBeforeAttack@0x55A9704 IMPLEMENT
8 COMBAT-DEF-001 defense max(0,preDefenseDamage-finalDefense) float NATIVE_CONFIRMED BaseMonoCharacter.HitAndGetResult@0x549BD18 IMPLEMENT
9 COMBAT-HP-001 hp targetHp-finalDamage float; display rounding separate NATIVE_CONFIRMED BaseMonoCharacter.HitAndGetResult@0x549BE7C IMPLEMENT
10 COMBAT-ASPD-001 attack_speed 100/finalAttackSpeed seconds; subtract elapsed; no global 0.15 clamp observed NATIVE_CONFIRMED <WaitAttackCooldown>d__45.MoveNext@0x5497280 IMPLEMENT
11 COMBAT-LS-001 life_steal ceil(finalDamage*finalLifeSteal*0.01) only if positive; minimum heal 1 NATIVE_CONFIRMED BaseMonoPlayer.OnAfterAttack@0x55A9E48 IMPLEMENT
12 COMBAT-COUNTER-001 counter_chance finalCounterRate >= RandomInt(1,101) roll 1..100; inclusive NATIVE_CONFIRMED BaseMonoPlayer.OnCounterAttack@0x55AC048 IMPLEMENT
13 DOUBLE-001 natural_double diceA==diceB built-in 36 pairs equal weight => 1/6 absent override NATIVE_CONFIG_VIDEO_CONFIRMED <CheckLastTile>d__130.MoveNext IMPLEMENT
14 DOUBLE-002 double_movement diceA+diceB never multiply by 2 solely because Double NATIVE_VIDEO_CONFIRMED <CheckLastTile>d__130.MoveNext IMPLEMENT
15 DOUBLE-003 double_stack TryAddDoubleStack(diceA) accumulate face value; threshold/reward/reset unresolved NATIVE_VIDEO_PARTIAL BoardController.TryAddDoubleStack@0x56A4BE0 IMPLEMENT_ACCUMULATION_ONLY
16 DOUBLE-004 double_combat no unconditional damage multiplier; dispatch TriggerOnDiceDouble to equipped consumers event-driven NATIVE_CONFIG_CONFIRMED EventManager.TriggerOnDiceDouble@0x51AEDEC IMPLEMENT