[engine] Extend weapon syntax for multiple weapon type series in same attack

Brainstorm ideas of possible additions to the game. Read this before posting!

Moderators: Forum Moderators, Developers

Forum rules
Before posting a new idea, you must read the following:
Post Reply
User avatar
WhiteWolf
Forum Regular
Posts: 557
Joined: September 22nd, 2009, 7:48 pm
Location: Hungary

[engine] Extend weapon syntax for multiple weapon type series in same attack

Post by WhiteWolf » October 10th, 2019, 7:04 am

Hello,

First let me start by saying that I am by no means a combat expert, and this is just my "Hollywood-infected" view of the technical details of armed fights :)
I think it would enrich Wesnoth's combat system, and open up room for some very interesting combos, to allow an attack to have multiple weapon types.

Motivation
The easiest example is a sword. Why is 99% of the type blade attack (1% someone tries pierce in UMC), when in reality it's a combination of the two, "parry, cut, parry, thrust", as you'd say? Hell, you could even use half-swording and use it as an impact attack. Of course this needs training and thus heavily depends on the unit, so I am not saying anything like this should be implemented in existing mainline units, I only wish for the option to create such units, that can use a combination of weapon types, thanks to their training/vigilance.

Implementations
The aim then is to define what type=blade,pierce,impact would mean for the game, and I multiple ideas with pros and cons.
  • The first is that the definition should be a comma separated list that describes the attack type of each consecutive strike. In the example above, the first strike would deal blade damage if hit, the second would deal pierce damage, the third impact. In a type=cold,cold,fire example the first hit would deal cold damage, so would the second, and the third would be fire. What if the number of attacks is higher than the length of this list? It should rewind from the start. type=blade,pierce with number=4 would mean blade,pierce,blade,pierce.
    Advantage: Deterministic, the outcome statistics, though a lot more difficult than with regular attacks, can always be calculated, and the player can evaluate his chances. It can "realistically" follow fixed advanced techniques (f.e. upper cut, lower cut, thrust == blade,blade,pierce).
    Disadvantages: The attack statistics would be hard to calculate because of the changing damage output. The question can also arise, that if an opponent is weak against blade but strong against pierce, then why does the unit have a strike with pierce instead of using blade only.(*)
  • Second implementation is that the list is a pool of available choices for the engine, and it picks the one that the current opponent is most sensitive to.
    Advantage: Deterministic, the player can always evaluate his chances. Allows for very versatile "swiss-army-knife" units.
    Disadvange: (huge): This is already possible by inserting the same attack with different types. Also, the balancing of such units could be tedious.
  • Third idea is the attack type should be decided randomly before the fight. This is more of a "wild-card" unit approach, that varies from trial to trial.
    Advantage: Nothing really, apart from the "wild-card", "fun-rng-unit" aspect.
    Disadvantage: Attack statistics cannot be calculated, backfiring attacks could be frustrating.
  • Last idea is that the attack type should be randomly recalculated at each strike. This is an even more crazy variant of the third option. However, it might be the better variant. With lots of attack strikes, there is always a good chance that some hits will have the type that the opponent is sensitive to, but still has some weaker blows to balance it out.
    Advantage: Unit balancing is probably not that hard. It's an even more "wild-card" unit approach with different type and thus different damage output with each strike :)
    Disadvantage: Attack statistics cannot be calculated, backfiring attacks could be frustrating. The question can also arise, that if an opponent is weak against a certain type, then why are there random weaker attacks of other types. (*)
(*): I think these points can be explained by the argument that a fight is not training, and it won't go perfectly. Even if your opponent is weak against for example blade, you can't always go for a cut. If you see an opening for a thrust, then why shouldn't you take it? Yes, it will deal less damage than a cut would have done, but there is no option to do a cut there. Small damage is still more than no damage - so you go for the thrust.

I personally prefer option #1, because it would open up possibilities for same crazy (in a good way) units in UMC with great variety. Combined with having multiple attacks like this, each of them corresponding to different technique, the RPG technique-unlock progression sounds great to me :)

What's currently possible and what would be needed for quasi-implementations
Number two is easily possible. However, I doubt that any other implementations are possible at the moment. You could create list-like weapon types with [language] so that it means something for the engine with an id and has a nice description for the player, but as far as I know, you can only modify a weapon's damage before the attack ( in attack event), and not during the attack (attacker hits and such).
What I can imagine as a great tool is kind of an "attacker/defender strikes" event that can modify all aspects of a weapon during combat, and fires before the hit connects and hit/miss is evaluated. I do not know if this is already possible with Lua, that would be cool.
Full engine support would be the best of course :)

Any opinions?
Author of the Underness Series, consisting of V parts: The Desolation of Karlag, The Blind Sentinel, The Stone of the North, The Invasion Of The Western Cavalry, Fingerbone of Destiny
Standalone works: The Ravagers - now for 1.14, with new bugs!

User avatar
Ravana
Forum Moderator
Posts: 2242
Joined: January 29th, 2012, 12:49 am
Location: Estonia
Contact:

Re: [engine] Extend weapon syntax for multiple weapon type series in same attack

Post by Ravana » October 10th, 2019, 3:08 pm

You can modify damage between strikes, see concentrated and growing fury specials.

User avatar
WhiteWolf
Forum Regular
Posts: 557
Joined: September 22nd, 2009, 7:48 pm
Location: Hungary

Re: [engine] Extend weapon syntax for multiple weapon type series in same attack

Post by WhiteWolf » October 15th, 2019, 2:45 pm

Quite misremembered that :doh: Then, it's already quite possible to experiment with something like this, great :D
Author of the Underness Series, consisting of V parts: The Desolation of Karlag, The Blind Sentinel, The Stone of the North, The Invasion Of The Western Cavalry, Fingerbone of Destiny
Standalone works: The Ravagers - now for 1.14, with new bugs!

User avatar
Celtic_Minstrel
Developer
Posts: 1529
Joined: August 3rd, 2012, 11:26 pm
Location: Canada
Contact:

Re: [engine] Extend weapon syntax for multiple weapon type series in same attack

Post by Celtic_Minstrel » Yesterday, 4:49 am

WhiteWolf wrote:
October 10th, 2019, 7:04 am
Disadvantages: The attack statistics would be hard to calculate because of the changing damage output.
WhiteWolf wrote:
October 10th, 2019, 7:04 am
Disadvantage: Attack statistics cannot be calculated, backfiring attacks could be frustrating.
I think you're vastly overestimating the difficulty of determining the attack statistics. For the first case, you just need to modify the formula or something – I'm not sure exactly how easy it is, but I wouldn't think it difficult enough to be a significant advantage.

As for the third case, uhh, what? Attack statistics cannot be calculated because it's random? Statistics are all about random things! Of course you could calculate the attack statistics if the game chose a random damage type from the list. It would be just the same as the first case – you need to change the logic of how the calculations go.

Aside from the weird conceptions of what the disadvantages are, I kinda like the idea (I'd probably prefer the first method). Not enough to go in and implement it, though.
Author of The Black Cross of Aleron campaign and Default++ era.
Maintainer of Steelhive.

Post Reply