-
Notifications
You must be signed in to change notification settings - Fork 107
1h lightsaber and force leap changes #1946
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
1h lightsaber and force leap changes #1946
Conversation
Moved Force Leap to Force Powers, made it available with any melee weapon. New 1h Lightsaber ability, Pommel Strike. Deal damage and daze.
for the new abilities
|
Warning Rate limit exceeded@LazyTrain082 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 15 minutes and 44 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
WalkthroughForce Leap was moved from OneHanded to Force, swapped OneHanded skill/resource usages to Force/FP. A new Pommel Strike one-handed ability and perk (three levels) were added. Hard Slash II/III damage increased. Enums for feats, recast, and perks were extended; a submodule pointer updated. Changes
Sequence Diagram(s)sequenceDiagram
participant Player
participant PommelAbility as Pommel Strike
participant Validation
participant DamageCalc
participant SavingThrow
participant DazeEffect
Player->>PommelAbility: Activate Pommel Strike
PommelAbility->>Validation: Verify right-hand melee (no lightsabers)
alt Invalid weapon
Validation-->>Player: Reject activation
else Valid
PommelAbility->>DamageCalc: Compute base + OneHanded bonus
DamageCalc-->>PommelAbility: Damage value
PommelAbility->>Player: Apply damage & grant combat points
PommelAbility->>SavingThrow: Trigger Will save (DC = Perception + 10)
alt Save fails
SavingThrow->>DazeEffect: Apply Daze + grant temporary immunity
DazeEffect-->>Player: Dazed
else Save succeeds
SavingThrow-->>Player: No daze
end
end
sequenceDiagram
participant Player
participant ForceLeapAbility as Force Leap
participant ResourceCheck
participant DamageCalc
Player->>ForceLeapAbility: Activate Force Leap
ForceLeapAbility->>ResourceCheck: Require FP (RequirementFP)
alt Insufficient FP
ResourceCheck-->>Player: Fail activation
else Sufficient FP
ForceLeapAbility->>DamageCalc: Calculate using SkillType.Force
DamageCalc-->>ForceLeapAbility: Damage result
ForceLeapAbility->>Player: Apply damage & grant Force combat points
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (3)
SWLOR.Game.Server/Service/Stat.cs (1)
1932-1939: Unused Force Valor accuracy helper – consider wiring it in or removing
GetForceValorAccuracyBonusis currently dead code. Either plug it intoCalculateEffectAccuracy/CalculateEffectAccuracyNative(and align Force Valor perk text accordingly), or drop the helper until it’s actually needed to avoid confusion.SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs (1)
89-133: Builder usage for Pommel Strike I–III is consistent; optional DRY-upThe three Pommel Strike ranks are wired correctly:
- Each uses
FeatType.PommelStrikeXwithPerkType.PommelStrike.- Shared recast group, activation delay, flags, and validation/impact delegates.
- Stamina costs scale by rank, which fits a OneHanded physical ability.
As per coding guidelines, this follows the intended builder pattern for ability definitions.
If you want to reduce duplication later, consider a small helper that takes
(builder, feat, level, staminaCost, name)and applies the common chain, but this is purely cosmetic and can be deferred.SWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs (1)
43-117: Force-based damage/attack updates look consistent; consider StrongStyleLightsaber interactionThe impact logic changes to use Force skill everywhere:
Combat.GetAbilityDamageBonus(activator, SkillType.Force)CombatPoint.AddCombatPoint(activator, target, SkillType.Force, 3)Stat.GetAttack(activator, stat, SkillType.Force)This aligns Force Leap with Force progression instead of OneHanded, which is exactly what you want after moving it into the Force tree.
One nuance:
statstill switches betweenPerceptionandMightbased onAbilityToggleType.StrongStyleLightsaber, even though the ability now works with any melee weapon. IfStrongStyleLightsaberis only ever toggleable while wielding a lightsaber, this remains fine; if players can carry that toggle over to non-lightsaber melee, they’ll get Might-based scaling on non-saber Force Leaps, which may or may not be intended.If that’s not desired, you might want to gate that toggle check behind a lightsaber-equipped condition or eventually generalize it to a broader “strong style” concept. Not a blocker, but worth confirming.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (9)
SWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs(10 hunks)SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs(1 hunks)SWLOR.Game.Server/Feature/AbilityDefinition/TwoHanded/HardSlashAbilityDefinition.cs(1 hunks)SWLOR.Game.Server/Feature/PerkDefinition/ForcePerkDefinition.cs(2 hunks)SWLOR.Game.Server/Feature/PerkDefinition/OneHandedPerkDefinition.cs(2 hunks)SWLOR.Game.Server/Service/AbilityService/RecastGroup.cs(1 hunks)SWLOR.Game.Server/Service/PerkService/PerkType.cs(1 hunks)SWLOR.Game.Server/Service/Stat.cs(1 hunks)SWLOR.NWN.API/NWScript/Enum/FeatType.cs(1 hunks)
🧰 Additional context used
📓 Path-based instructions (5)
SWLOR.Game.Server/Service/**/*.cs
📄 CodeRabbit inference engine (CLAUDE.md)
SWLOR.Game.Server/Service/**/*.cs: Place business logic in SWLOR.Game.Server/Service with one service per major system
Services should expose static methods and be accessed statically
Add new services under Service with static method APIs
Files:
SWLOR.Game.Server/Service/PerkService/PerkType.csSWLOR.Game.Server/Service/AbilityService/RecastGroup.csSWLOR.Game.Server/Service/Stat.cs
{SWLOR.Game.Server,SWLOR.CLI,SWLOR.Runner,SWLOR.Web,SWLOR.Admin}/**/*.cs
📄 CodeRabbit inference engine (CLAUDE.md)
{SWLOR.Game.Server,SWLOR.CLI,SWLOR.Runner,SWLOR.Web,SWLOR.Admin}/**/*.cs: Use Serilog for logging across all C# projects
Use Newtonsoft.Json for JSON serialization
Files:
SWLOR.Game.Server/Service/PerkService/PerkType.csSWLOR.Game.Server/Service/AbilityService/RecastGroup.csSWLOR.Game.Server/Feature/AbilityDefinition/TwoHanded/HardSlashAbilityDefinition.csSWLOR.Game.Server/Service/Stat.csSWLOR.Game.Server/Feature/PerkDefinition/OneHandedPerkDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.csSWLOR.Game.Server/Feature/PerkDefinition/ForcePerkDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs
SWLOR.Game.Server/Feature/{AbilityDefinition,PerkDefinition,RecipeDefinition,QuestDefinition,ItemDefinition}/**/*.cs
📄 CodeRabbit inference engine (CLAUDE.md)
Use the builder pattern for game content definitions in Feature/*Definition directories
Files:
SWLOR.Game.Server/Feature/AbilityDefinition/TwoHanded/HardSlashAbilityDefinition.csSWLOR.Game.Server/Feature/PerkDefinition/OneHandedPerkDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.csSWLOR.Game.Server/Feature/PerkDefinition/ForcePerkDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs
SWLOR.Game.Server/Feature/AbilityDefinition/**/*.cs
📄 CodeRabbit inference engine (CLAUDE.md)
Add new abilities as classes under Feature/AbilityDefinition using the builder pattern
Files:
SWLOR.Game.Server/Feature/AbilityDefinition/TwoHanded/HardSlashAbilityDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs
SWLOR.Game.Server/Feature/PerkDefinition/**/*.cs
📄 CodeRabbit inference engine (CLAUDE.md)
Add new perks as classes under Feature/PerkDefinition with progression logic
Files:
SWLOR.Game.Server/Feature/PerkDefinition/OneHandedPerkDefinition.csSWLOR.Game.Server/Feature/PerkDefinition/ForcePerkDefinition.cs
🧠 Learnings (10)
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Feature/PerkDefinition/**/*.cs : Add new perks as classes under Feature/PerkDefinition with progression logic
Applied to files:
SWLOR.Game.Server/Service/PerkService/PerkType.csSWLOR.Game.Server/Feature/PerkDefinition/OneHandedPerkDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.csSWLOR.Game.Server/Feature/PerkDefinition/ForcePerkDefinition.cs
📚 Learning: 2025-09-09T15:50:07.811Z
Learnt from: zunath
Repo: zunath/SWLOR_NWN PR: 0
File: :0-0
Timestamp: 2025-09-09T15:50:07.811Z
Learning: Beast stat rebalancing in SWLOR is based on calculations from a Google Sheets document (https://docs.google.com/spreadsheets/d/1uzF7rtXXUaxBS_8cZb83M_9I2bMma6WBOFRkgDY5PP0/edit?gid=1176147451#gid=1176147451). When reviewing beast definition changes, the numbers should align with this calculation spreadsheet. There was a previous error in the original document that resulted in inaccurate stats, which has since been corrected.
Applied to files:
SWLOR.Game.Server/Service/Stat.cs
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Feature/ItemDefinition/**/*.cs : Add new items as classes under Feature/ItemDefinition with appropriate use handlers
Applied to files:
SWLOR.Game.Server/Feature/PerkDefinition/OneHandedPerkDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Feature/{AbilityDefinition,PerkDefinition,RecipeDefinition,QuestDefinition,ItemDefinition}/**/*.cs : Use the builder pattern for game content definitions in Feature/*Definition directories
Applied to files:
SWLOR.Game.Server/Feature/PerkDefinition/OneHandedPerkDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Feature/AbilityDefinition/**/*.cs : Add new abilities as classes under Feature/AbilityDefinition using the builder pattern
Applied to files:
SWLOR.Game.Server/Feature/PerkDefinition/OneHandedPerkDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.csSWLOR.Game.Server/Feature/PerkDefinition/ForcePerkDefinition.csSWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Service/**/*.cs : Place business logic in SWLOR.Game.Server/Service with one service per major system
Applied to files:
SWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Service/**/*.cs : Add new services under Service with static method APIs
Applied to files:
SWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Service/**/*.cs : Services should expose static methods and be accessed statically
Applied to files:
SWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to {SWLOR.Game.Server,SWLOR.CLI,SWLOR.Runner,SWLOR.Web,SWLOR.Admin}/**/*.cs : Use Newtonsoft.Json for JSON serialization
Applied to files:
SWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Entity/**/*.cs : Entities (data models) must live under SWLOR.Game.Server/Entity and include Redis serialization attributes
Applied to files:
SWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs
🧬 Code graph analysis (5)
SWLOR.Game.Server/Service/PerkService/PerkType.cs (1)
SWLOR.Game.Server/Feature/PerkDefinition/OneHandedPerkDefinition.cs (1)
PommelStrike(873-901)
SWLOR.Game.Server/Service/AbilityService/RecastGroup.cs (1)
SWLOR.Game.Server/Feature/PerkDefinition/OneHandedPerkDefinition.cs (1)
PommelStrike(873-901)
SWLOR.Game.Server/Service/Stat.cs (1)
SWLOR.Game.Server/Service/StatusEffect.cs (3)
StatusEffect(11-591)HasStatusEffect(476-496)HasStatusEffect(505-514)
SWLOR.NWN.API/NWScript/Enum/FeatType.cs (1)
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs (3)
PommelStrike1(89-103)PommelStrike2(104-118)PommelStrike3(119-133)
SWLOR.Game.Server/Feature/PerkDefinition/ForcePerkDefinition.cs (1)
SWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs (3)
ForceLeap1(119-134)ForceLeap2(135-150)ForceLeap3(151-166)
🔇 Additional comments (8)
SWLOR.Game.Server/Service/PerkService/PerkType.cs (1)
303-308: NewPerkType.PommelStrikeenum value needs matching 2DA entryAdding
PommelStrike = 300is consistent, but since these IDs are tied toiprp_resperk.2da, double‑check that a corresponding row with ID 300 has been added there (and any other relevant 2DAs) so the perk can be selected and used correctly at runtime.SWLOR.Game.Server/Feature/AbilityDefinition/TwoHanded/HardSlashAbilityDefinition.cs (1)
44-52: Hard Slash II/III damage tuning is mechanically safeOnly the base damage for levels 2 and 3 changed (to 29 and 43). The rest of the hit / damage pipeline is unchanged, so this is a straightforward balance tweak with no functional regressions.
SWLOR.NWN.API/NWScript/Enum/FeatType.cs (1)
1966-1968: Pommel Strike feat IDs look consistent – verify 2DA/TLK wiring
PommelStrike1/2/3appended at 1997–1999 fits the existing custom‑feat range and matches the usages in the Pommel Strike ability and perk definitions. Just ensure the corresponding rows exist infeats.2da(and TLK strings) at these indices so the feats show up and function correctly.SWLOR.Game.Server/Service/AbilityService/RecastGroup.cs (1)
260-261: Pommel Strike recast group definition is consistentThe new
RecastGroup.PommelStrikeentry (display name + short name) matches the pattern used by other one‑handed activatables and keeps the short label within the GUI’s length constraint. This should integrate cleanly with the Pommel Strike ability definitions.SWLOR.Game.Server/Feature/PerkDefinition/ForcePerkDefinition.cs (1)
36-40: Force Leap perk relocation into Force tree looks coherent – sync with ability implementationMoving Force Leap into
ForcePerkDefinitionasPerkCategoryType.ForceUniversal / PerkType.ForceLeapwith three levels (ForceLeap1–3) and Force skill requirements 15/30/45 matches the intent of making it a generic Force power. The builder usage follows the existing perk pattern and coding guidelines for perk definitions.Please just double‑check that
ForceLeapAbilityDefinitionuses the same damage values (8/15/23) and the same 2‑second stun described here so players see accurate tooltip text.Also applies to: 116-141
SWLOR.Game.Server/Feature/PerkDefinition/OneHandedPerkDefinition.cs (1)
48-48: Pommel Strike perk wiring is consistent with existing one‑handed lightsaber perks
PommelStrike()is correctly added toBuildPerksand defined as a three‑tier lightsaber perk underPerkCategoryType.OneHandedLightsaberwith reasonable OneHanded skill gates, Force‑sensitive requirement, and Droid AI slots. The feat grants (PommelStrike1–3) match the newFeatTypeentries, and the builder usage aligns with the existing patterns for Shield Bash / Saber Strike and the project’s builder‑pattern guidelines. Based on learnings, this fits the expected perk‑definition style.Also applies to: 873-901
SWLOR.Game.Server/Feature/AbilityDefinition/Force/ForceLeapAbilityDefinition.cs (2)
1-41: Weapon validation now correctly allows any melee weaponThe updated validation:
if (!Item.OneHandedMeleeItemTypes.Contains(rightHandType) && !Item.TwoHandedMeleeItemTypes.Contains(rightHandType)) { return "A melee weapon must be equipped in your right hand to use this ability."; }matches the PR objective of making Force Leap available with any melee weapon (while still disallowing unarmed/ranged). The error message is aligned with the logic, and the rest of the range check/empty-string success path remains unchanged.
119-166: FP requirements per rank correctly convert Force Leap into a Force resource abilityThe three Force Leap ranks now use FP instead of stamina:
- Rank I:
.RequirementFP(3)- Rank II:
.RequirementFP(4)- Rank III:
.RequirementFP(5)Recast, activation, range, and flags are unchanged, and all three still use
PerkType.ForceLeapand the shared validation/impact delegates. This cleanly aligns the resource type with the Force skill and Force namespace.
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs
Show resolved
Hide resolved
Correcting code comment
Leftover attempts at buffing Force Valor I forgot to delete
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs (3)
14-22: Builder usage and ability registration look correct
BuildAbilitiesusesAbilityBuilderand delegates to the three PommelStrike helpers, then returnsbuilder.Build(). This matches the expected builder pattern for ability definitions and keeps registration centralized.If you later add more one‑handed variants, consider a small helper that takes level/stamina as parameters to reduce repetition further, but it’s not necessary right now. Based on learnings, this aligns with the recommended pattern for Feature/AbilityDefinition files.
24-35: Validation cleanly enforces right‑hand lightsaber requirementThe validation correctly checks the activator’s right‑hand item against
Item.LightsaberBaseItemTypesand returns an appropriate error when a lightsaber isn’t equipped. That’s consistent with this being a one‑handed lightsaber ability.If you find yourself repeating this check across multiple saber abilities, you might want a small shared helper (e.g.,
Ability.ValidateRightHandLightsaber(activator)) to centralize the message and item‑type logic.
89-133: Pommel Strike I–III definitions are consistent and follow the builder patternAll three Pommel Strike levels are wired through the builder with consistent flags (
IsCastedAbility,IsHostileAbility,UnaffectedByHeavyArmor,BreaksStealth), share the same validation/impact logic, and scale in level and stamina cost as expected. Recast grouping underRecastGroup.PommelStrikealso looks coherent across levels.If you later need to tweak multiple properties (e.g., activation delay or shared flags), consider extracting a small helper that sets the common builder chain so only level‑specific bits (feat, level, stamina) vary. Based on learnings, this usage is already aligned with the builder‑pattern guidelines for abilities.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs(1 hunks)SWLOR_Haks(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- SWLOR_Haks
🧰 Additional context used
📓 Path-based instructions (3)
SWLOR.Game.Server/Feature/{AbilityDefinition,PerkDefinition,RecipeDefinition,QuestDefinition,ItemDefinition}/**/*.cs
📄 CodeRabbit inference engine (CLAUDE.md)
Use the builder pattern for game content definitions in Feature/*Definition directories
Files:
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs
SWLOR.Game.Server/Feature/AbilityDefinition/**/*.cs
📄 CodeRabbit inference engine (CLAUDE.md)
Add new abilities as classes under Feature/AbilityDefinition using the builder pattern
Files:
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs
{SWLOR.Game.Server,SWLOR.CLI,SWLOR.Runner,SWLOR.Web,SWLOR.Admin}/**/*.cs
📄 CodeRabbit inference engine (CLAUDE.md)
{SWLOR.Game.Server,SWLOR.CLI,SWLOR.Runner,SWLOR.Web,SWLOR.Admin}/**/*.cs: Use Serilog for logging across all C# projects
Use Newtonsoft.Json for JSON serialization
Files:
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs
🧠 Learnings (4)
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Feature/AbilityDefinition/**/*.cs : Add new abilities as classes under Feature/AbilityDefinition using the builder pattern
Applied to files:
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Feature/{AbilityDefinition,PerkDefinition,RecipeDefinition,QuestDefinition,ItemDefinition}/**/*.cs : Use the builder pattern for game content definitions in Feature/*Definition directories
Applied to files:
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Feature/ItemDefinition/**/*.cs : Add new items as classes under Feature/ItemDefinition with appropriate use handlers
Applied to files:
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs
📚 Learning: 2025-08-26T22:48:55.951Z
Learnt from: CR
Repo: zunath/SWLOR_NWN PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-08-26T22:48:55.951Z
Learning: Applies to SWLOR.Game.Server/Feature/PerkDefinition/**/*.cs : Add new perks as classes under Feature/PerkDefinition with progression logic
Applied to files:
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs
🔇 Additional comments (1)
SWLOR.Game.Server/Feature/AbilityDefinition/OneHanded/PommelStrikeAbilityDefinition.cs (1)
37-87: I'll help you verify the review comment about the perk-adjusted stat usage in the Pommel Strike ability. Let me start by investigating howGetPerkAdjustedAbilityScoreis defined and used throughout the codebase.
<function_calls>
<invoke_name>shell
#!/bin/bashFind the definition of GetPerkAdjustedAbilityScore
rg -n "GetPerkAdjustedAbilityScore" SWLOR.Game.Server -B2 -A5 --type cs | head -100
</invoke_name>
</function_calls>Looking for the method definition and usage patterns to understand the API contract.
<function_calls>
<invoke_name>shell
#!/bin/bashSearch for the method definition more specifically
rg -n "GetPerkAdjustedAbilityScore\s*(" SWLOR.Game.Server --type cs | head -20
</invoke_name>
</function_calls>Let me also look at the Combat class to find the method definition:
<function_calls>
<invoke_name>shell
#!/bin/bashFind Combat class and GetPerkAdjustedAbilityScore method
find SWLOR.Game.Server -type f -name "Combat.cs" | head -5
</invoke_name>
</function_calls><function_calls>
<invoke_name>shell
#!/bin/bashSearch for Combat class files
fd -t f "Combat.cs" SWLOR.Game.Server
</invoke_name>
</function_calls><function_calls>
<invoke_name>shell
#!/bin/bashSearch for any file containing GetPerkAdjustedAbilityScore definition (not just usage)
rg -n "public.*GetPerkAdjustedAbilityScore" SWLOR.Game.Server --type cs -B2 -A8
</invoke_name>
</function_calls><function_calls>
<invoke_name>shell
#!/bin/bashLet's look at all usages with more context to understand the pattern
rg -n "GetPerkAdjustedAbilityScore" SWLOR.Game.Server --type cs -B3 -A3 | head -150
</invoke_name>
</function_calls>
Fixing leftover testing file I forgot to clean up
|
Cleaning up leftover code and resubmitting. |
|
Alright for realsies this time. |
Moved Force Leap to Force Powers, made it available with any melee weapon.
New 1h Lightsaber ability, Pommel Strike. Deal damage and daze.
Updated tlk
Summary by CodeRabbit
New Features
Balance Changes
Ability Adjustments
✏️ Tip: You can customize this high-level summary in your review settings.