From 421e33ab590667556c92eb285e749649bc2d1750 Mon Sep 17 00:00:00 2001 From: Denis Date: Mon, 31 Aug 2026 09:47:22 +0400 Subject: [PATCH 1/2] feat(bcard): name the seven negated halves the client describes BCard.dat declares 24 (type, subtype) pairs that BCardEffect does not name. Seven of them can be read; this adds those seven and leaves the other seventeen alone. A pair's text lives in LISTn-1 / LISTn-2, where the second number is the high or the low half. For these seven the high half has a client text and the low half has none, so the low half is the negation of a sentence that is written down rather than a mechanic that has to be guessed. For the other seventeen the high half is mute too. Negated rather than Increase/Decrease because the text decides: where the client says "increased / reduced" the names say Increase/Decrease (176 pairs), and where one sentence covers both halves the low one is X + Negated (186 of 194). All seven high halves describe a capability - "Allows you to use Full Moon skills", "Reveals hidden enemies within %s spaces" - and a capability is negated, not reduced. documentation/dat/BCard.dat.md is updated in the same commit so EveryEffectIsInTheVocabulary and EveryNamedRowMatchesItsEffect stay in step. Tested: the two mandatory BCardVocabularyTests pass; the opt-in EveryDeclaredEffectIsNamed goes from 24 unnamed pairs to 17, measured with a rebuild between the two runs. --- documentation/dat/BCard.dat.md | 14 +++++++------- src/NosCore.Data/Enumerations/Buff/BCardEffect.cs | 7 +++++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/documentation/dat/BCard.dat.md b/documentation/dat/BCard.dat.md index 646f7f808..3635221cc 100644 --- a/documentation/dat/BCard.dat.md +++ b/documentation/dat/BCard.dat.md @@ -625,7 +625,7 @@ Regenerate with `NOSCORE_DAT_FOLDER= dotnet test --filter BCardVocabular | 62 | 51 | yes | HideBarrelSkillOnlyEnemiesWithBuffsAbove | Only applies to enemies with buffs above level %s. | | 62 | 52 | yes | HideBarrelSkillOnlyEnemiesWithDebuffsAbove | Only applies to enemies with debuffs above level %s. | | 63 | 11 | yes | FocusEnemyAttentionSkillFocusEnemyAttention | Attracts nearby enemies' attention to you. | -| 63 | 12 | yes | | | +| 63 | 12 | yes | FocusEnemyAttentionSkillFocusEnemyAttentionNegated | | | 63 | 21 | yes | | | | 63 | 22 | yes | | | | 63 | 31 | yes | FocusEnemyAttentionSkillCookingExperienceIncreased | Cooking experience gain is increased by %s%%. | @@ -875,15 +875,15 @@ Regenerate with `NOSCORE_DAT_FOLDER= dotnet test --filter BCardVocabular | 87 | 51 | yes | Type87Unknow | Uses lich magic to create a Bone Drake and give the caster Dragon Vitality. | | 87 | 52 | yes | Type87CreatesBoneDrake | Uses lich magic to create a Bone Drake and give the caster Strong Dragon Vitality. | | 88 | 11 | yes | Type88MateReturnToMiniland | Return to Miniland and regenerate %s%% of your HP. If you have maximum HP, you receive %s%% additional HP. | -| 88 | 12 | yes | | | +| 88 | 12 | yes | Type88MateReturnToMinilandNegated | | | 88 | 21 | yes | Type88IncreaseDamageVsHiden | Attacks on hidden enemies cause %s additional damage. | | 88 | 22 | yes | Type88DecreaseDamageVsHiden | | | 88 | 31 | yes | Type88IncreaseDamageFromHiden | Damage from hidden enemies is increased by %s%%. | | 88 | 32 | yes | Type88DecreaseDamageFromHiden | Damage from hidden enemies is reduced by %s%%. | | 88 | 41 | yes | Type88RevealsHidenEnemy | Reveals hidden enemies within %s spaces. | -| 88 | 42 | yes | | | +| 88 | 42 | yes | Type88RevealsHidenEnemyNegated | | | 88 | 51 | yes | Type88SkillResetXTimes | Skill can be used %s times without cooldown. | -| 88 | 52 | yes | | | +| 88 | 52 | yes | Type88SkillResetXTimesNegated | | | 89 | 11 | yes | Type89Transform | Transform and assume the Dragon Stance with which you can carry out flame attacks. | | 89 | 12 | yes | Type89RemoveTransform | Transform and assume the Haetae Stance with which you can carry out attacks using the power of the beast. | | 89 | 21 | yes | Type89Unknow | Provides a %s%% probability to reset the cooldown of %s. | @@ -907,11 +907,11 @@ Regenerate with `NOSCORE_DAT_FOLDER= dotnet test --filter BCardVocabular | 91 | 11 | yes | Type91AddBuff | You dodge attacks and have a %s%% chance to cause %s. | | 91 | 12 | yes | Type91DodgeAndAddBuffChance | You dodge attacks and have a %s%% chance to cause %s. | | 91 | 21 | yes | Type91BuffSkillBooster | Use a buff skill while Enlightenment is active to receive additional effects. | -| 91 | 22 | yes | | | +| 91 | 22 | yes | Type91BuffSkillBoosterNegated | | | 91 | 31 | yes | Type91AllowFullMoonSkill | Allows you to use Full Moon skills. | -| 91 | 32 | yes | | | +| 91 | 32 | yes | Type91AllowFullMoonSkillNegated | | | 91 | 41 | yes | Type91AllowLotusPowerSkill | Allows you to use Lotus Flower skills. | -| 91 | 42 | yes | | | +| 91 | 42 | yes | Type91AllowLotusPowerSkillNegated | | | 91 | 51 | yes | Type91ReduceCriticalDamageRecived | The next damage you inflict on a marked enemy will be increased by %s%% and consume the Mark of the Moon. | | 91 | 52 | yes | Type91IncreaseCriticalDamageRecived | The next damage inflicted by the enemy will be reduced by %s%% and consume the Mark of the Moon. | | 92 | 11 | yes | Type92AddBuffOnReceiveAttack | Whenever you are attacked, you have a %s%% chance of generating %s. | diff --git a/src/NosCore.Data/Enumerations/Buff/BCardEffect.cs b/src/NosCore.Data/Enumerations/Buff/BCardEffect.cs index 23abab2de..69c75e0c2 100644 --- a/src/NosCore.Data/Enumerations/Buff/BCardEffect.cs +++ b/src/NosCore.Data/Enumerations/Buff/BCardEffect.cs @@ -680,6 +680,7 @@ public enum BCardEffect : short HideBarrelSkillOnlyEnemiesWithDebuffsAbove = 6252, FocusEnemyAttentionSkillFocusEnemyAttention = 6311, + FocusEnemyAttentionSkillFocusEnemyAttentionNegated = 6312, FocusEnemyAttentionSkillCookingExperienceIncreased = 6331, FocusEnemyAttentionSkillCookingExperienceReduced = 6332, @@ -946,12 +947,15 @@ public enum BCardEffect : short Type87CreatesBoneDrake = 8752, Type88MateReturnToMiniland = 8811, + Type88MateReturnToMinilandNegated = 8812, Type88IncreaseDamageVsHiden = 8821, Type88DecreaseDamageVsHiden = 8822, Type88IncreaseDamageFromHiden = 8831, Type88DecreaseDamageFromHiden = 8832, Type88RevealsHidenEnemy = 8841, + Type88RevealsHidenEnemyNegated = 8842, Type88SkillResetXTimes = 8851, + Type88SkillResetXTimesNegated = 8852, Type89Transform = 8911, Type89RemoveTransform = 8912, @@ -978,8 +982,11 @@ public enum BCardEffect : short Type91AddBuff = 9111, Type91DodgeAndAddBuffChance = 9112, Type91BuffSkillBooster = 9121, + Type91BuffSkillBoosterNegated = 9122, Type91AllowFullMoonSkill = 9131, + Type91AllowFullMoonSkillNegated = 9132, Type91AllowLotusPowerSkill = 9141, + Type91AllowLotusPowerSkillNegated = 9142, Type91ReduceCriticalDamageRecived = 9151, Type91IncreaseCriticalDamageRecived = 9152, From b6e6825997323f2a9c5c36fd401759bf3f7e0cf1 Mon Sep 17 00:00:00 2001 From: Denis Date: Mon, 31 Aug 2026 09:49:42 +0400 Subject: [PATCH 2/2] fix(bcard): the client spells it "hidden", not "hiden" Six BCardEffect members carry the typo, and the documentation table repeats it. The client's own text has the word spelled correctly - "Attacks on hidden enemies", "Damage from hidden enemies", "Reveals hidden enemies within %s spaces" - and BCard.dat.md quotes those sentences two columns away from the misspelled names. Rename only. No behaviour, no new members, and nothing else in the tree refers to them. Tested: the solution builds with 0 errors, and the two mandatory BCardVocabularyTests pass. Nothing was played - these are enum members and a documentation table. Stacked on the seven-names PR, which adds one more member with the same typo so that it matches its neighbours; this commit fixes all six together. --- documentation/dat/BCard.dat.md | 12 ++++++------ src/NosCore.Data/Enumerations/Buff/BCardEffect.cs | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/documentation/dat/BCard.dat.md b/documentation/dat/BCard.dat.md index 3635221cc..5a312c00a 100644 --- a/documentation/dat/BCard.dat.md +++ b/documentation/dat/BCard.dat.md @@ -876,12 +876,12 @@ Regenerate with `NOSCORE_DAT_FOLDER= dotnet test --filter BCardVocabular | 87 | 52 | yes | Type87CreatesBoneDrake | Uses lich magic to create a Bone Drake and give the caster Strong Dragon Vitality. | | 88 | 11 | yes | Type88MateReturnToMiniland | Return to Miniland and regenerate %s%% of your HP. If you have maximum HP, you receive %s%% additional HP. | | 88 | 12 | yes | Type88MateReturnToMinilandNegated | | -| 88 | 21 | yes | Type88IncreaseDamageVsHiden | Attacks on hidden enemies cause %s additional damage. | -| 88 | 22 | yes | Type88DecreaseDamageVsHiden | | -| 88 | 31 | yes | Type88IncreaseDamageFromHiden | Damage from hidden enemies is increased by %s%%. | -| 88 | 32 | yes | Type88DecreaseDamageFromHiden | Damage from hidden enemies is reduced by %s%%. | -| 88 | 41 | yes | Type88RevealsHidenEnemy | Reveals hidden enemies within %s spaces. | -| 88 | 42 | yes | Type88RevealsHidenEnemyNegated | | +| 88 | 21 | yes | Type88IncreaseDamageVsHidden | Attacks on hidden enemies cause %s additional damage. | +| 88 | 22 | yes | Type88DecreaseDamageVsHidden | | +| 88 | 31 | yes | Type88IncreaseDamageFromHidden | Damage from hidden enemies is increased by %s%%. | +| 88 | 32 | yes | Type88DecreaseDamageFromHidden | Damage from hidden enemies is reduced by %s%%. | +| 88 | 41 | yes | Type88RevealsHiddenEnemy | Reveals hidden enemies within %s spaces. | +| 88 | 42 | yes | Type88RevealsHiddenEnemyNegated | | | 88 | 51 | yes | Type88SkillResetXTimes | Skill can be used %s times without cooldown. | | 88 | 52 | yes | Type88SkillResetXTimesNegated | | | 89 | 11 | yes | Type89Transform | Transform and assume the Dragon Stance with which you can carry out flame attacks. | diff --git a/src/NosCore.Data/Enumerations/Buff/BCardEffect.cs b/src/NosCore.Data/Enumerations/Buff/BCardEffect.cs index 69c75e0c2..2b538df5f 100644 --- a/src/NosCore.Data/Enumerations/Buff/BCardEffect.cs +++ b/src/NosCore.Data/Enumerations/Buff/BCardEffect.cs @@ -948,12 +948,12 @@ public enum BCardEffect : short Type87CreatesBoneDrake = 8752, Type88MateReturnToMiniland = 8811, Type88MateReturnToMinilandNegated = 8812, - Type88IncreaseDamageVsHiden = 8821, - Type88DecreaseDamageVsHiden = 8822, - Type88IncreaseDamageFromHiden = 8831, - Type88DecreaseDamageFromHiden = 8832, - Type88RevealsHidenEnemy = 8841, - Type88RevealsHidenEnemyNegated = 8842, + Type88IncreaseDamageVsHidden = 8821, + Type88DecreaseDamageVsHidden = 8822, + Type88IncreaseDamageFromHidden = 8831, + Type88DecreaseDamageFromHidden = 8832, + Type88RevealsHiddenEnemy = 8841, + Type88RevealsHiddenEnemyNegated = 8842, Type88SkillResetXTimes = 8851, Type88SkillResetXTimesNegated = 8852,