tukkek / javelin

Party-based roguelike (open-source strategy-RPG game).
https://javelinrl.wordpress.com/
64 stars 7 forks source link

Morale #23

Open tukkek opened 7 years ago

tukkek commented 7 years ago

More information here https://www.reddit.com/r/javelinrl/comments/5h8ezd/personalities_please/

tukkek commented 7 years ago

Some strategy games like Heroes of Might and Magic and Dominions have morale systems.

In this case "good morale" could be whenever all of your squad is either good, evil, lawful or chaotic. "Bad morale" whenever there are clashes in either axis. Neutrals are ignored either way.

tukkek commented 7 years ago

There is already a class for checking alignments that could be used for this https://github.com/tukkek/javelin/blob/master/javelin/controller/generator/encounter/MisalignmentDetector.java

tukkek commented 7 years ago

Some more resources on HoMM morale system. Maybe the benefit of having good morale would be to always give a small buff at the start of battle (or % per creature based on Wisdom roll)? For example something like shaken but beneficial? https://github.com/tukkek/javelin/blob/master/javelin/model/condition/Shaken.java

http://heroes.thelazy.net/wiki/Morale http://mightandmagic.wikia.com/wiki/Morale

tukkek commented 7 years ago

I'd be interesting to have a scale of how bad morale is and have monsters take a will check against have a bad morale or have a bonus towards achieving good morale. Both can be simple buffs or debuffs as suggested above and maybe have "exceptional / terrible morale" for especially great or awful results when the battle starts.

tukkek commented 7 years ago

Teamwork feats - would be pretty cool to have them associated with traits, so that certain traits provide certain free bonuses when morale is high.

http://www.d20pfsrd.com/feats/teamwork-feats

http://knowdirectionpodcast.com/2014/10/players-guide-to-teamwork-feats/

http://www.magieck.nl/content/images/paragraaf_629380_Teamwork%20Benefits.pdf?PHPSESSID=5372c63ae94589fe0e74382cb6de761e

http://www.minmaxboards.com/index.php?PHPSESSID=oppp1vcvmnp9jbtfq9gfm90c46&topic=4862.msg68827#msg68827

http://rpgbot.net/pathfinder/characters/teamwork_feats.php

http://www.realmshelps.net/charbuild/teamwork.shtml

tukkek commented 7 years ago

Dungeoncraft seems to have rules for morale. Would be nice to ask reddit too once I get down to working on this.

tukkek commented 7 years ago

The morale bonus should give +1 or +2 (depending on how many alignments are fully aligned) to attack rolls, damage, skill checks and saves. Same with negative ("good morale"/"bad morale"). In this way, morale conditions should be smart enough to change each other, possibly via Combatant#inspire(int bonus).

New proposal: have also a morale system that works like AD&D's where seeing an ally die can trigger negative morale - not as far as getting monsters to run, but enough to give them a negative morale condition during battle. This could also be used to implement frightening presence on monsters like Dragons (which would be a morale event that happens at the start of battle).

The morale roll is done in Combatant#demoralize(int teamel, enemyel, penalty), which is simply a take-10 Will save against DC 10 + enemy team's EL - your team's EL + penalty. A failed save calls Combatant#inspire(-1), up to -2 penalty There is no need to offer feedback to the player besides the Effect#NEGATIVE such a condition would have.

Shaken should be a state of bad morale. Could study having frightened (-3 and -4) and panicked (-5 and -6) be morale as well, this would solve a lot of problems.

When to roll for morale:

  1. Battle begins.
  2. An ally falls in your line of sight.
  3. You are damaged to wounded (penalty=-1), injured (-2) or critical (-3).
tukkek commented 3 years ago

Here are some Morale resources, thinking more about the "when to flee for your life" side of things, which is already partially implemented although without much intelligence to it and just aiming to avoid the gameplay tedium of having to finish off Very Easy, obviously one-sided and strategically uninteresting Fight states. Would be nice though to have a system to tell when Monsters should run for their lives that is more morale- and in-game-based than just quality-of-life mechanics.

For AI units, would be good to constrict the conditions for fleeing as much as possible but to give a big incentive to fleeing on the BattleAI utility function, so that fast Monsters will actively disengage and leave. For players, their units should never escape from him with no agency but instead be applied increasingly heavy debuffs to push him in that direction while providing strategic choice and value. UI-wise, the existing Condition#NEGATIVE overlay goes a long way by itself but it should also be feasible, if inelegant to check and display worsening morale before a player turn, with a blocking message.

A will save seems to be the most reasonable mechanic for this - with take-10s, the lowest the "roll", the worse a Condition it would give. With Conditions like Fear, Frightened... Combatants could be progressively prevented from attacking, casting Spells... which could also solve the AI issue of actively favoring a retreat without needing to adjust BattleAI parameters.

XP should still be awarded for fleeing Monsters but I believe that's how things work already.

Non-OGL resources:

Having an Intimidate #188 action to try and make your already-shaken opponents turn heel and run would be hilarious. Some Spells and Gear to boost your stats to enable a Intimidate-based build would be ludicrous xD filtering Intimidate targets to only those who are sure to be accepted, without any rolls to it, might be a way to reduce spamming and AI branching - like other combat actions, for similar reasons it might be better to only be used if a unit has the "Skill Focus: Intimidate" Feat - another approach is having a Feat to have that happen in the background with every Attack.

There may be a few unimplemented Monster Special Abilities that could be better this way, like Krenshar's having Doom casts now.