We have a Steam curator now. You should be following it. https://store.steampowered.com/curator/44994899-RPGHQ/
Chat client updated, if you have issues using chat press CTRL + SHIFT + R to force a hard refresh.

4th Age

Game development hub. Projects, modding, and resources.

Moderator: Mod Janitor

Ignore Topic
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Have capped the character creator at level 3 and started filling out the effects associated with all of the options. Previously, I had added a lot of things like feats with prereqs defined, but no effects.

Racial traits are done now for the 3 races that will be in demo 2. Perhaps interesting: the codex entry on the right is generated from the code that defines the in-game effects. So if an additional effect is added or the number is tweaked it will automatically update the codex entry. Additionally, the codex entries are parsed for the titles of the other codex entries to cross-link them.

As you make selections, the character sheet is updated.

Image
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Serialization is annoying so I ended up adding this option to load monsters into the character sheet while procrastinating saving adventurers.

Codex entry rendered as bbcode shown on the right. Godot v4.4 has a bug fix that will allow using background color with tables, so when that is released I'll be able to improve the formatting of the tooltip/codex entries to make them easier to read.

Image

Image
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Basic character saving/loading using Godot's Resource saving/loading is now implemented. This approach doesn't have consideration for versioning as the data format changes, so it might need to be changed later. I wish engine makers would work on these practical considerations instead of more 3D features that most people won't use or notice. Every game needs to save state in some way, and nobody wants to tell players that a patch invalidated their save games.

In theory, I could share demo v2 of the character creator now, but I think I will work on additional codex entries first so it's clear what the various choices do.
Last edited by J1M on January 18th, 2025, 15:21, edited 1 time in total.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Looks like Playground.ai evaporated so I need to find another option for generating portrait images. Recommendations welcome. My usage is pretty low and I would want to redo everything in a consistent style later.

PS: I do want to support custom portraits later, but it's not a priority right now.
Last edited by J1M on January 19th, 2025, 06:01, edited 1 time in total.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Custom characters, including portraits, loaded into the skirmish. Powers from the player classes aren't implemented, so they can't do anything yet, but you can see the player power selections in the action bar at the bottom there.

Might need to represent the player passives a little differently in the tooltip too. :lol:

Image
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

The stat system I have in place is really good at handling static modifiers and the stacking rules based on bonus type, but I am concerned it may not scale well to handle magic items and conditional effects, especially those that change the properties of an existing Power.

Examples:
-Dwarf racial that modifies Second Wind
-Multi-class feats that provide modified versions of signature class abilities
-Power swap feats

It wouldn't be that challenging to simply swap a Power, but as soon as there's more than one effect modifying a Power there's a multiplicative level of complexity and you have to test "any second wind effect" instead of "equals second wind".

The last time I was working on a project related to 4e, I stopped working on it when I got to magic items. Today I had an epiphany that the AdventurerChoice system I have in place to handle the various selections players make when levelling up could be modified to also handle equipment slots. What you put on your character's head is a choice, not unlike a feat.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Added a paper doll to the character sheet. Item slots, and being able to choose items is now in place, including saving. Mostly via reusing existing code for the character building choices. The UI for it is a little clunky right now but that can be improved later.

Haven't coded up the item stats yet, so that +2 armor isn't granting any AC right now, but everything to handle swapping items in slots including their effects is in place.

Image
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

TLDR: I figured out how to implement Dwarven Second Wind, multiclass feats, and other effects that alter a property of a power.

In terms of characters, the primatives I have in place largely come down to these types: Powers (things you do on your turn), Talents (feats, racial traits, class features, other passives), and Effects (conditionally evaluated snippets of code that track a specific stat).

There are a lot of stats. In addition to the 6 ability scores and meta currencies like action points, there are resistances and immunities to damage types and effect types. But also all sorts of hidden stats that are highly conditional, like how many times you have used each power.

Monsters and Players use the same math for their stats, but have different Effects that produce the calculation. Monsters have a Bestiary entry applied whereas Players have a series of AdventurerChoices for each level.

Enabling all of this are over 50 enum types defined in Excel sheets that get exported into generated C# files to act as a strongly-typed in-memory database.

For stat bonuses, even those that are conditional, Effects are the right tool, because they are evaluated at the time that a stat is calculated and return not just a value, but also the bonus type and associated game element in order to facilitate the complicated stacking rules.

I did not want to rely on Effects for something like "Second Wind is now a minor action" because that would imply making a new stat for every property of a Power (Stat.Power_SecondWind_ActionType, Stat.Power_SecondWind_TargetType, etc). This approach could have worked, but I worry about eventual performance problems given how the number of Effects on a character might scale.

Partial classes allow for a C# class to be defined across multiple files. The solution I landed on is to use partial classes for the generated Info objects associated with these enum types and mark a specific field (in the case of Second Wind, Power.ActionType) so that it doesn't receive a generated accessor. This prevents me from forgetting to use the ".GetActionType(Creature)" function because ".ActionType" doesn't exist AND it allows the export pipeline to continue to function as it does now, which involves deleting all previously generated code each time it runs AND keeps the code for these overrides in a well-organized and uncluttered place.

Powers are not instantiated as objects on a creature, they are just looked up when they are referenced. The getter needs a Creature passed in now in order to test if that Creature has the applicable talent or not. It would have been easier to have a mutable Power object that has its ActionType changed when the player selects Dwarf as a race, which appears to be how a lot of roguelike games work, but I think that would have created a real mess when it came to partially unwinding choices as part of retraining on level up. Perhaps a better approach would have been to discard the entire creature and apply choices in-order each time a change occurred? It sounds elegant, but I wonder if it would run into issues when referencing creatures from combat effects, such as which creature was the source of a marked condition.

The screenshot below isn't particularly exciting, but you can see that the same Second Wind power that all characters share only requires a minor action for the Dwarf.

Hidden Content
This board requires you to be registered and logged-in to view hidden content.

Image
User avatar
Kalarion
Turtle
Turtle
Posts: 2161
Joined: Feb 2, '23

Geolocation

Adventurer's Guild

Post by Kalarion »

J1M wrote: January 22nd, 2025, 22:19
TLDR: I figured out how to implement Dwarven Second Wind, multiclass feats, and other effects that alter a property of a power.

In terms of characters, the primatives I have in place largely come down to these types: Powers (things you do on your turn), Talents (feats, racial traits, class features, other passives), and Effects (conditionally evaluated snippets of code that track a specific stat).

There are a lot of stats. In addition to the 6 ability scores and meta currencies like action points, there are resistances and immunities to damage types and effect types. But also all sorts of hidden stats that are highly conditional, like how many times you have used each power.

Monsters and Players use the same math for their stats, but have different Effects that produce the calculation. Monsters have a Bestiary entry applied whereas Players have a series of AdventurerChoices for each level.

Enabling all of this are over 50 enum types defined in Excel sheets that get exported into generated C# files to act as a strongly-typed in-memory database.

For stat bonuses, even those that are conditional, Effects are the right tool, because they are evaluated at the time that a stat is calculated and return not just a value, but also the bonus type and associated game element in order to facilitate the complicated stacking rules.

I did not want to rely on Effects for something like "Second Wind is now a minor action" because that would imply making a new stat for every property of a Power (Stat.Power_SecondWind_ActionType, Stat.Power_SecondWind_TargetType, etc). This approach could have worked, but I worry about eventual performance problems given how the number of Effects on a character might scale.

Partial classes allow for a C# class to be defined across multiple files. The solution I landed on is to use partial classes for the generated Info objects associated with these enum types and mark a specific field (in the case of Second Wind, Power.ActionType) so that it doesn't receive a generated accessor. This prevents me from forgetting to use the ".GetActionType(Creature)" function because ".ActionType" doesn't exist AND it allows the export pipeline to continue to function as it does now, which involves deleting all previously generated code each time it runs AND keeps the code for these overrides in a well-organized and uncluttered place.

Powers are not instantiated as objects on a creature, they are just looked up when they are referenced. The getter needs a Creature passed in now in order to test if that Creature has the applicable talent or not. It would have been easier to have a mutable Power object that has its ActionType changed when the player selects Dwarf as a race, which appears to be how a lot of roguelike games work, but I think that would have created a real mess when it came to partially unwinding choices as part of retraining on level up. Perhaps a better approach would have been to discard the entire creature and apply choices in-order each time a change occurred? It sounds elegant, but I wonder if it would run into issues when referencing creatures from combat effects, such as which creature was the source of a marked condition.

The screenshot below isn't particularly exciting, but you can see that the same Second Wind power that all characters share only requires a minor action for the Dwarf.

Hidden Content
This board requires you to be registered and logged-in to view hidden content.

Image
Hidden Content
This board requires you to be registered and logged-in to view hidden content.
. wrote:
Kalarion did this a lot better you know.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Added a panel to show initiative order as a break from implementing feats.

Curious what people would like to see work on next. Obviously the player powers for level 1-3 and then a selection of feat choices are needed, but beyond that development could go in a few directions.

Current roadmap:
Demo v1: control both sides of a skirmish between monsters (done)
Demo v2: character creator (functional, but not every choice has a codex entry)
Demo v3: put level 3 characters from the character creator into the skirmish (needs a UI for selecting a party)
Demo v4: ???

Image
Last edited by J1M on January 24th, 2025, 04:09, edited 3 times in total.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Been sorting out the differences between line of sight, line of effect, and cover checks and changing the implementation to avoid that issue with edges and corners that we discussed prior.

Also added a new terrain flag, since there is an implicit terrain type in the rules for a transparent wall. They also refer to things like curtains or arrow slits. Long story short, path blocking, sight blocking, and effect blocking can be controlled by separate flags on a piece of terrain.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Finished implementing the Combat Challenge and Combat Superiority class features. Which also means that ranged attacks now appropriately trigger attacks of opportunity. These were the most sophisticated features I've had to add so far due to the timing and their conditional nature plus the modification of other elements, like what Marked means but just for one creature.

It's pretty neat to see it working and a character trigger an opportunity attack which is then interrupted by another opportunity attack because the character making the first attack was marked by an adjacent character with Combat Challenge.
► Show Spoiler
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

First weapon-based power implemented.

Screenshot shows the dynamically calculated range based on the equipped reach weapon, the dynamically generated hit and miss effects from the class feature, and the calculated damage determined by the equipped weapon's damage die.

Since this power is so straightforward, there's not any actual scripting associated with this power specifically. Everything about it (+2 to attack rolls, no ability score bonus to damage) is determined by the data defined in a row in Excel.

Image
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Implemented another at-will weapon power.

Starting to wonder if the real reason we never saw a 4e CRPG is because every class has what are essentially ~17 spells to choose from by level 3.
User avatar
rusty_shackleford
Site Admin
Posts: 45443
Joined: Feb 2, '23
Gender: Watermelon

Geolocation

Adventurer's Guild

Post by rusty_shackleford »

J1M wrote: January 29th, 2025, 06:33
Starting to wonder if the real reason we never saw a 4e CRPG is because every class has what are essentially ~17 spells to choose from by level 3.
Aren't most of them just "ability does damage" tho?

To be clear, I've never played 4E, I'm just guessing.
Last edited by rusty_shackleford on January 29th, 2025, 06:52, edited 1 time in total.
Thank you for your attention to this matter!
Steam friend code: 40552640 https://steamcommunity.com/friends/add | email: [email protected]
Having trouble running an old Windows game?
Rusty's Stuff Collection
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

rusty_shackleford wrote: January 29th, 2025, 06:41
J1M wrote: January 29th, 2025, 06:33
Starting to wonder if the real reason we never saw a 4e CRPG is because every class has what are essentially ~17 spells to choose from by level 3.
Aren't most of them just "ability does damage" tho?

To be clear, I've never played 4E, I'm just guessing.
As an example, at level 1 the fighter can choose these at-will powers:
  • Cleave - deal damage to a second adjacent enemy
  • Reaping Strike - deal minor damage even on a miss
  • Sure Strike - trade ability modifier damage for attack roll bonus
  • Tide of Iron - push the enemy you hit 1 square and shift into their previous location
In addition to that there's 4 encounter powers to choose from and 3 daily powers to choose from, each of which will usually be more sophisticated than the at-will powers.

A wizard would have cantrip spells as well. Plus additional daily and utility spells they can swap between preparing. Plus ritual spells (out of combat spells like speak languages or teleport) that take longer to cast but don't use up choices useful in combat.
Last edited by J1M on January 29th, 2025, 22:14, edited 1 time in total.
User avatar
rusty_shackleford
Site Admin
Posts: 45443
Joined: Feb 2, '23
Gender: Watermelon

Geolocation

Adventurer's Guild

Post by rusty_shackleford »

I actually like that 4E gave abilities to martial classes, being able to do more than "fighter attacks" is an improvement.
Thank you for your attention to this matter!
Steam friend code: 40552640 https://steamcommunity.com/friends/add | email: [email protected]
Having trouble running an old Windows game?
Rusty's Stuff Collection
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

rusty_shackleford wrote: January 29th, 2025, 22:15
I actually like that 4E gave abilities to martial classes, being able to do more than "fighter attacks" is an improvement.
They get more interesting at higher levels too. Here's an example for level 7 for a fighter that targets Will defense instead of AC. Keep in mind that due to class features every enemy will also end up "marked" which is a mechanic like taunt which imposes penalties when the creature chooses to attack a character other than the one that marked them.

Image
Last edited by J1M on January 29th, 2025, 23:28, edited 1 time in total.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Recording of creating a character with Cleave and Tide of Iron powers.

Recording of using Cleave and Tide of Iron powers.

User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Implemented stances, the reliable keyword, and an interrupt inside the attack roll calculation.

I think stances are interesting, but most games don't do much with them. One of the ideas I have for a new class would be one that would focus on stances. Maybe it would be divine themed and they'd be referred to as auras for flavor. I think it would be interesting to explore more than one 'slot' for stances, having many options for switching stances, and perhaps some kind of escalating tally that is based on how many different stances you have used that can be used as a resource.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

This post is about how I implemented some encounter powers by building on top of a bunch of prior work for this project.

Tooltip for the power in question:
Image

Code for an ability modifier bonus that is conditional on using a specific power and having a certain type of weapon equipped. GetBonus is called if the stat that is being computed matches the stat in an effect. Creating a copy of the Bonus is a point of friction that I'm considering changing to allow the Bonus object to define an ability modifier, but that implies passing in a Creature each time you want to roll the dice defined in the Bonus so it's a non-trivial change.

Aside: all of the stats and numbers are defined in terms of dice, not flat numbers. This allows for things like "you get a 1d6 bonus to attack rolls under these circumstances" so that 'Dice.Parse' line resolves to something like 3d1 when a flat number is needed.

Code: Select all

public partial class ConditionalAbilityBonusEffect : FixedEffect {
	private ConditionalAbilityBonusEffect() { } //required by Godot
	public ConditionalAbilityBonusEffect(EffectType[] effectTypes, Power power, Req condition, Ability abilityMod, Stat stat, BonusType bonusType, GameElement gameElement, SrcId srcId)
		: base(effectTypes, Dice._0d, stat, bonusType, gameElement, srcId) {
		Power = power;
		Condition = condition;
		AbilityMod = abilityMod;
	}

	public Power Power { get; protected init; }
	public Req Condition { get; protected init; }
	public Ability AbilityMod { get; protected init; }

	public override void GetBonus(Creature host, Stat stat, List<Bonus> list, BonusContext bc) {
		if(IsStat(stat) && bc.Attack_Power == Power && Condition.IsMet(host)) {
			Bonus modBonus = Bonus.Create(Bonus);
			modBonus.Value = Dice.Parse(host.GetAbilityMod(AbilityMod));
			list.Add(modBonus);
		}
	}

	public override string ToStringBbcode() {
		return $"[b]{Condition.ToStringBbcode()}[/b] +{AbilityMod.Info().ShortTitle}{base.ToStringBbcode()}";
	}
}
Scripting attached to the first power, defined as an "extra effect" rather than an effect that happens on hit/miss/self:

Code: Select all

(srcId) => new([
	new ConditionalAbilityBonusEffect([], Power.ArmorPiercingThrust, new WeaponGroupReq(){ EligibleWeaponGroups = [WeaponGroup.LightBlade, WeaponGroup.Spear] }, Ability.Dex, Stat.Combat_Attack, BonusType.UntypedHidden, GameElement.Power_ArmorPiercingThrust, srcId),
	new ConditionalAbilityBonusEffect([], Power.ArmorPiercingThrust, new WeaponGroupReq(){ EligibleWeaponGroups = [WeaponGroup.LightBlade, WeaponGroup.Spear] }, Ability.Dex, Stat.Combat_AttackDamage, BonusType.UntypedHidden, GameElement.Power_ArmorPiercingThrust, srcId)
])
Scripting attached to the other power, essentially another encounter power implemented with just one line of code:

Code: Select all

(srcId) => new([
	new ConditionalAbilityBonusEffect([], Power.CrushingBlow, new WeaponGroupReq(){ EligibleWeaponGroups = [WeaponGroup.Axe, WeaponGroup.Hammer, WeaponGroup.Mace] }, Ability.Con, Stat.Combat_AttackDamage, BonusType.UntypedHidden, GameElement.Power_CrushingBlow, srcId)
])
As I build up more complexity in the system some things like this become easier. You can see that I'm leveraging the WeaponGroupReq class, which is related to all of the requirements checks that are defined for determining if a character is eligible for things like feats.

In order to finish all of the level 1-3 powers for these martial classes I'll need to add some additional capabilities, such as the ability to target more than one cell when performing a power. For example, a power that lets you shoot two different targets with an arrow. Or a power that lets you move an ally to another square. I have been putting this off for quite but there isn't really a way around it.

Four of the remaining powers for this class are multi-target.
The other is a close burst, which also needs feature work.
Last edited by J1M on February 2nd, 2025, 01:27, edited 3 times in total.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

First close burst ability added. Minion is ignoring the "marked on miss" effect because I don't have an easy way to differentiate whether a hit effect deals damage or not at the moment. (The elf isn't marked because it is allied with the character in the middle.)

Image
Last edited by J1M on February 6th, 2025, 06:13, edited 1 time in total.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Mini rant.

Since it came out, people have claimed that 4e "was designed like a videogame" and "just WoW at the table".

These claims are repeated a lot, but from my perspective are completely wrong.

Did they want 4e to have the popularity of WoW? Yes.
Did 4e directly address complaints from players? Yes.
Did players then complain about these improvements, often without understanding them? Also yes.
Does 4e's design feel different? Yes.
So what is the other influence that people can feel, but are unable to identify? Magic: The Gathering.
Sorry if you were expecting a plot twist. They just wanted it to be like their other product that made more money.


Examples of MTG influence that you wouldn't see in a videogame-first design:
  • Exception-based rules system.
  • Lots of abilities and reactiveness that resolves essentially in the way the MTG stack does.
  • A design that allows for infinite expansion of the number of powers/paragon paths/destinies in splat books.
  • An attempt to create demand for synergistic physical sales in the form of power cards/miniatures/other accessories.
What it would have been if it was actually designed to be a videogame:
  • Stats are either +X or +X%. Everything stacks with everything.
  • "Real-time" resolution: no reaction or interrupt abilities. Decision points removed, the game doesn't stop to ask if you want an ability to push someone. It just pushes them and if you didn't want that you should use another ability.
  • Finite number of spell effects, perhaps the limited choice would be obscured by structuring them in a "talent tree". Reliance on passive abilities (+5% critical chance).
  • They would have finished the VTT instead of cancelling it after one programmer murder-suicided his unfaithful wife.
Another thing I'm tired of hearing from people is that they should have called it something else instead of 4th edition. That if they had just called it "D&D Tactics" or "D&D Eberron Ruleset" it would have been really successful without making anyone upset and later it could be dubbed a full edition. This is a rather ironic statement, considering that Wizards did this plan. It was called D&D Miniatures. The marketing power of a new edition translates into sales far more effectively than any game design decision.

I think there are valid criticisms that put people off from the ruleset, like the visual presentation of the books looking too much like a modern magazine and not enough like a medieval tome. Or the class entries containing all of the powers instead of referencing an appendix for the details so it was easier to browse the classes. Or the misguided attempt to create a Forgotten Realms in-world event to meta-justify why magic spells were different instead of just creating a new setting or using Eberron.

TLDR: The Warlord is the paragon of 4e. This new and very well-received class is the exact opposite of what someone making a videogame would design.
Last edited by J1M on February 7th, 2025, 22:03, edited 5 times in total.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Took some time to clean up nullable warnings in the code.

Also improved the panel where you make character choices when you level. It uses indenting to convey where a subchoice came from and it performs requirements checks on each choice so it can highlight invalid choices in red if you make an invalid character. For example, you select a feat with a STR requirement and then lower your STR. This allows for retention of the feature that I care about a lot: the ability to build the character in a non-linear fashion.

Still procrastinating working on powers with more than one target. Have been thinking about how to handle retraining. In theory, it's not needed if characters are allowed to respecialize... until you consider that power-swap feats for multiclassing exist. This is completely out of scope for the level 3 skirmish, but it's more interesting than the targeting thing to me right now. Will probably post updates less often. That seemed to generate more discussion/feedback.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Progress on implementing level 1-10 powers for the fighter class. Technically there are enough implemented now that you could build a complete character to level 10, although there are a few levels where you wouldn't have a choice of what to take.

Lvl Power
1 Cleave
1 Reaping Strike
1 Sure Strike
1 Tide Of Iron

1 Covering Attack [NYI]
1 Passing Attack [NYI]
1 Spinning Sweep
1 Steel Strike
1 Brute Strike
1 Comeback Strike
1 Villain's Menace
2 Boundless Endurance

2 Get Over Here [NYI]
2 No Opening
2 Unstoppable
3 Armor-Piercing Thrust
3 Crushing Blow
3 Dance Of Steel
3 Precise Strike

3 Rain of Blows [NYI]
3 Sweeping Blow [NYI]
5 Crack The Shell
5 Dizzying Blow
5 Rain Of Steel

6 Battle Awareness [NYI]
6 Defensive Training
6 Unbreakable [NYI]
7 Come And Get It [NYI]
7 Overhand Sledge
7 Iron Bulwark
7 Reckless Strike

7 Sudden Surge [NYI]
9 Shift The Battlefield [NYI]
9 Thicket Of Blades
9 Victorious Surge
10 Into The Fray

10 Last Ditch Evasion [NYI]
10 Stalwart Guard [NYI]
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Question for those who have played 4e with groups that included a ranger: how often did you see someone weave dual wielding powers and ranged powers?

The most direct way to view the class is a choice between melee and ranged, but I wonder if instead of the classic armaments it would actually be more effective to include a thrown weapon as part of the dual wielding. That way both sets of attacks are always viable, the ranger can always help flank, and doesn't have to swap equipment to range attack. Or does some quirk to the rules make this ineffective?
User avatar
WhiteShark
Site Moderator
Posts: 5056
Joined: Feb 2, '23

Geolocation

Adventurer's Guild

Post by WhiteShark »

@J1M, I asked your question on the 4e Discord server, and it seems to be a viable choice:
Hidden Content
This board requires you to be registered and logged-in to view hidden content.
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Only problem with that is now I'm tempted to spend time implementing thrown weapons. :cool:
User avatar
J1M
Turtle
Turtle
Posts: 5067
Joined: Feb 15, '23

Geolocation

Adventurer's Guild

Post by J1M »

Going to stop working on this for a while. The reason I set out to do this project was because I felt 4e would make a good system for a videogame and I wanted to faithfully implement it.

Unfortunately, as I dig deeper into the powers for classes like the ranger it is now my opinion that without significant modification 4e would not make a good system for a computer game. There are too many powers that require multiple decision points. Ideally, a power does one thing and then you react to how that changes the battlefield. But many of the 4e powers involve multiple decision points. Imagine a computer game where you go to perform your action and you have the following pop-up windows in order to fully resolve it:
  • Are you using the melee or ranged version of this power? (Ranged)
  • Are you switching to your bow or using a thrown ranged weapon? (Thrown)
  • Which thrown weapon are you using, main hand or offhand? (Offhand)
  • Which creature to attack first?
  • Do you want to apply Quarry bonus damage? (No)
  • Do you want to shift 1+WIS squares? (No)
  • Which creature to attack second?
  • Do you want to apply Quarry bonus damage? (Yes)
  • Do you want to shift 1+WIS squares? (Yes)
  • Which grid square to shift to?
This is a real example for a level 3 Ranger ability. The character would also have a move and minor action for the same turn.

I feel like there is a tension between faithful implementation and a good game interface. If I modify a large number of powers to simplify them for the videogame medium it's not really 4e anymore.
► Show Spoiler