tukkek / javelin

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

Domain shrines #205

Open tukkek opened 6 years ago

tukkek commented 6 years ago

For religious cities, see if it's possible to implement certain divine domains as shrines instead (or in addition) to generic shrines.

tukkek commented 6 years ago

Shrines and wizard guilds should feature 2 tabs: one for learning the spells, the other for casting the eligible ones as rituals.

This approach should be done to other types of locations too: for example guilds should have an Upgrade tab and a Hire tab. This allows much more code to be reused instead of each Location Screen being mostly custom Select Screens. Rather than tabs, have a main screen that serves as navigation through buttons that open the actual screens - this way we can also display a nice Location image, possibly with a background based on the current Terrain.

tukkek commented 6 years ago

Actually creating domain shrines is tricky because few spells can be easily implemented on Javelin. Maybe easier to have minor/standard/major shrines with 3/5/7 random ritual spells available (upgrades tied to town size).

To make them feel more thematic, could pick one magic school or trait at a time and fill them in, instead of purely at random.

tukkek commented 3 years ago

Dungeon Shrines would take a very specific set of circumstances to work but it seems doable. The major issue is that NPC spellcasting caps out at (less than) $3,000 even for level 9, caster-level 20 spells - making it highly underpowered when compared to a single EL20 encounter which rewards $100,000 on average.

The work-around for this is:

To gain a blessing, an Item is sacrificed. The item value is then randomized to represent the humor of the gods. Units with high-enough Knowledge may take-ten to uncover the possible shrine blessings, to the limit of their skills. Individual blessings could also be permanently revealed once they are cast.

Since this is extremely specific, requiring a subset of a subset of a spell school, in practical terms (single-target, long-lasting Enchantments), making it domain-based or even alignment-based may be asking too much, especially for a first implementation. A better progressive approach would be:

  1. A single set of spells levels 1 through 9.
  2. Same but for lawful/good and chaotic/evil.
  3. ... the 4 alignments.
  4. ... all spell schools.
  5. ... domain-based.

These need not be completed a whole step at a time but one Shrine at a time (for example: one new Domain shrine per release).

Shrines could and should mix-and-match, with a cumulative 50% chance of drawing from an extra pool. This is a good balance between "conceptually pure" and "unexpected and imagination-sparking" shrines and making good use of the Knowledge skill for gameplay purposes. Even without the skill it should be exciting and strategic to ponder risk-and-reward and learn a shrine's blessings by trying it out. This is broken if every shrine is a complete coin-toss though, so a Dungeon should probably have its own, semi-static Blessings table.

The pricing table, following the spellcasting service = level * caster level * 10 gp formula is, as follows (note that caster levels above 20 should be capped at 20 for other purposes than pricing):

Spell level Caster level Individual cast budget Party of 4 budget Total budget
1 20 200 800 800
2 20 400 1,600 2,400
3 20 600 2,400 4,800
4 20 800 3,200 8,000
5 20 1,000 4,000 12,000
6 20 1,200 4,800 16,800
7 20 1,400 5,600 22,400
8 20 1,600 6,400 28,800
9 20 1,800 7,200 36,000
10 20 2,000 8,000 44,000
11 21 2,310 9,240 53,240

Project-wise, this depends on scaling spells #157 and is a very heavy focus on Enchantment spells so it should be alternated with more general-purpose spell #59 .

tukkek commented 2 years ago

Having each specific Shrine also perform a unique function is also an interesting concept. In this case, item sacrifices lead to some sort of functional blessing - and while buffs and enchantments are fine, these can be done as Rituals while this per-domain specific use would be more of a unique mechanic affecting the Dungeon itself.

Blessings need to give some sort of feedback to let the player know if something has worked or not. If the sacrifice is not valuable enough, just say "nothing happens" and let the player keep the item.

Gold and Artifacts will never be accepted as sacrifice but other items and Precious Object can.

Each shrine having a minor and a major Blessing with relative values as in the example below sounds like a good, fair framework.

Shrines would be unknown unless the Squad can pass a Knowledge DC. They can still be used for Blessings but they would be more of a shot in the dark, not knowing what effect is given. Having one overall image/shape but different colors/patterns/textures could work well and can somehow be used with reveal() (with Knowledge instead of Spot).


An interesting idea for a Protection Shrine is to sacrifice a powerful-enough Item to make the level or the Dungeon less dangerous. This can easily be done by setting some rows of the Random Dungeon Encounter Table to null. This should probably be equivalent to something like:

  1. sacrifice value >= Dungeon#EL gold reward × 3 -> remove one Encounter from the Table.
  2. If the value if 10 times higher than in # 1, have the chance apply also for the level above and below (all levels would be ideal but that's too powerful for edge cases like the Deep Dungeon.

Messages would go along the way of "you feel safer here" and "you feel much safer here". If there are no more encounters to remove, return false so it falls-back to "no blessing" behavior.


Travel shrines could show the Dungeon map. Again ×3 reveals level map, ×10 reveals lower and upper floor as well.

Luck shrines could have a random effect from any other shrine (each time it's used).

tukkek commented 2 years ago

Suggested domains and alignment:

Primary: chaos (CN), evil (NE), good (NG), law (LN) and magic (N). Secondary: air (CN), earth (LN), fire (NE), water (NG). Tertiary: knowledge (LG), luck (CG), Destruction (CE), war (LE).

These three offer the best distribution (especially if you remove the primary or secondary ones that are repeats).

Adding these will enforce that all alignments have at most two representatives: Healing (LG), trickery (CE)

With these (less well-defined ones), every domain has 2 representatives: Death (LE), Plant (CG), Travel (N).

More: Animal (CN), Protection (NG), Strength (LN), Sun (LN). Pathfinder has more domains too and even more for third party.