A toy model for randomised gods.


We need some way to express things like: “this conduct enforces that power”, “this power clashes with that power” etc. Here, I use (something can be a power, a piety rule, a conduct, or another tag):

tags: !something     -- something cannot be used
tags: >something     -- something must be used
tags: something      -- something will get much higher weight
tags: &something     -- unique among the somethings

Examples for temple gods

Here are some examples from the actual code ( Ideally, before doing anything with random god powers, we'd move the definitions of (current) god powers to a text file. That would make testing and tweaking easier.

// The four numerical fields are: MP, HP, food, and piety.
// Note:  food_cost  = val + random2avg( val, 2 )
//        piety_cost = val + random2( (val + 1) / 2 + 1 );
//        hp cost is in per-mil of maxhp (i.e. 20 = 2% of hp, rounded up)
name: what's printed on the 'a'bility screen; strings are from
desc: what's printed on the ^ screen; strings are listed in
      -- ideally, the messages for gaining/losing the power should be listed here
function:    ABIL_ZIN_IMPRISON
name:        Imprison
cost:        5 magic, 125 food, 4 piety
piety:       3
desc:        call upon Zin to imprison the lawless
name:        "Sanctuary"
cost:        7 magic, 150 food, 15 piety
piety:       5
desc:        call upon Zin to create a sanctuary
name:        Heroism
cost:        2 magic, 50 food, 1 piety
piety:       1
desc:        gain great but temporary skills
name:        Finesse
cost:        5 magic, 100 food, 4 piety
piety:       5
desc:        speed up your combat
name:        Greater Servant of Makhleb
cost:        scaling_cost::fixed(10) health, 100 food, 5 piety
piety:       5
desc:        summon a greater servant of Makhleb
function:    ABIL_TROG_BERSERK
name:        Berserk
cost:        200 food
piety:       1
desc:        go berserk at will
function:    ABIL_TROG_REGEN_MR
name:        Trog's Hand
cost:        50 food, generic_cost::range(2, 3) piety
piety:       2
desc:        regenerate and be protected from hostile enchantments
name:        Brothers in Arms
cost:        100 food, generic_cost::range(5, 6) piety
piety:       4
desc:        call in reinforcements
name:        "Corrupt"
cost:        7 magic, scaling_cost::fixed(5) health, 500 food, generic_cost::range(10, 14) piety
piety:       4
desc:        corrupt the fabric of space
name:        "Enter the Abyss"
cost:        9 magic, 500 food, generic_cost::fixed(35) piety
piety:       5
desc:        gate yourself to the Abyss - for a price
abflag:      ABFLAG_PAIN
name:        "Stack Five"
cost:        5 magic, 250 food, 10 piety
piety:       5
desc:        order the top five cards of a deck, losing the rest
name:        "Cure Bad Mutation"
cost:        8 magic, 200 food, 15 piety
piety:       5
desc:        call upon Jiyva to remove your harmful mutations
function:    ABIL_FEDHAS_RAIN
name:        "Rain"
cost:        4 magic, 150 food, 4 piety
piety:       4
desc:        control the weather
name:        "Step From Time"
cost:        10 magic, 200 food, 10 piety
piety:       5
desc:        step out of the time flow

Trademark Powers

We should start with powers that can be directly used, with almost no additional coding needed (Fire/Ice Storm, Artefact, Tomb, Guardian Genie). Summon Uniques and Undying Loyalty do require some code, but I wanted two simple powers with interesting tags.

The Shoplift power is harder to code (but we will want that one anyway!); I list it here to show some tags combinations. And also some limits of the mask.

name:     Fire_Storm
weight:   5
costs:    40 piety, 400 hunger, 9 magic  
use:      active
piety:    5
clause:   "create a fiery storm upon their foes"
tags:     fire, !allies
labels:   trademark, tactical  
name:     Ice_Storm
weight:   5
costs:    40 piety, 400 hunger, 9 magic  
use:      active
piety:    5
clause:   "create a storm of arctic fury upon their foes"
tags:     ice, !allies
labels:   trademark, tactical
name:     Artefactise
weight:   10
costs:    80 piety
use:      active
piety:    5
clause:   "turn the wielded item into an artefact"
tags:     acid, !allies
labels:   trademark, strategical
name:     Tomb_Self
weight:   10
costs:    60 piety, 300 hunger, 7 magic  
use:      active
piety:    5
clause:   "entomb themselves"
tags:     earth
labels:   trademark, emergency
name:     Guardian_Genie -- like amulet of guardian spirit 
weight:   10             -- but with better MP -> HP ratio
costs:    none           -- for a start, say: 1 MP -> 3 HP
use:      passive
piety:    3
clause:   "avoid deadly accidents by resourcefully turning power into life"
labels:   trademark, strategical
name:     Summon_Uniques -- uniques are listed in five tiers (for **,...,****** piety)
weight:   5              -- track killed uniques in a ring (if killed again, go at end)
costs:    20 piety       -- using the ability looks for a unique of fitting tier at the top
use:      active
piety:    2
clause:   "temporarily call vanquished heroes to fight side by side"
tags:     hates uniques, allies
labels:   trademark, tactical
name:     Wordless_Magic
weight:   10
costs:    continuous piety, 300 hunger magic   -- "continuous piety" = like Injury Mirror
use:      active                               -- you pay piety when using the power, and
piety:    4                                    -- each casting costs piety per spell level
clause:   "cast like a demon, even enshrouded in silence"
tags:     caster, likes demons
labels:   trademark, tactical
name:     Undying_Loyalty
weight:   10
costs:    none 
use:      passive
piety:    0
clause:   "encourage allies to fight beyond death"
tags:     allies
labels:   trademark, strategical
name:     Shoplift
weight:   3
cost:     30 piety       -- ideally, piety cost would increase (e.g. 10, 30, 50 per shop)
use:      special        -- not a normal active ability: it is a new option in shops
piety:    1              -- can steel thrice from a shop: at *, at *** and at ***** piety
clause:   "steal items from the stock of shopkeepers"
labels:   trademark, strategical

Here is a simple way to keep constant costs, while still having further shoplifts be more expensive. Note the weights and tags!

name:     Shoplift_I
weight:   3
cost:     10 piety       -- 10 piety cost for the first shoplift
use:      shop           -- needs a special hook to be used in shops
piety:    1              -- first theft at * piety
clause:   "steal items from the stock of shopkeepers"
tags:     >Shoplift_II   -- *forces* the other two Shoplift powers
tags:     >Shoplift_III
labels:   trademark, strategical
name:     Shoplift_II    -- and similarly for Shoplift_III, not listed here
weight:   0              -- 0 weight - cannot be rolled randomly!
cost:     30 piety       -- 30 piety cost for second shoplift
use:      special        -- not a normal active ability: it is a new option in shops
piety:    3              -- second theft at *** piety
clause:                  -- no clause or labels needed (those come from Shoplift_I)

Other Powers

Sorted by tags. I try to provide some tags with enough powers, so that we can build gods not just from conduct or completely at random, but also along tag. Trademark powers or conducts of that tag mentioned, but the entry is not copied from above.


Trademark powers: Undying_Loyalty
name:     Summon_Insects   -- perhaps can recycle the Foxfire card here, at least in part
weight:   10
cost:     3 piety, 3 magic, 30 hunger
use:      active
piety:    1
clause:   "can cause a multitude of insects for support"
tags:     allies  
name:     Summon_Eyes      -- all kinds of eyes - very strong, but nasty if it goes wrong
weight:   5                -- ability summons a single eyeball
cost:     3 piety, 6 magic, 60 hunger
use:      active
piety:    3
clause:   "can rely on the help of eyeballs"
tags:     allies
name:     Summon_Golem     -- the golem has a long duration
weight:   5
cost:     5 piety, 8 magic, 30 hunger
use:      active
piety:    3
clause:   "can construct a long-lasting golem"
tags:     allies  
name:     Friendly_Swap     -- always works
weight:   10
cost:     2 piety, 2 magic
use:      active
piety:    1
clause:   "can swap position with any friendly creature in sight"
tags:     allies  
name:     Collective_Drinks  -- inspired by dtsund's Crawl Light which uses this power for Beogh
weight:   10                 -- potions quaffed by player also apply to all allies in a range (say 3 squares)
cost:     none
use:      passive
piety:    2
clause:   "apply the effects of their potions to their nearby allies"
tags:     allies  


Piety gain: exploration_with_books
name:     Book_Explosion     -- re-use Trog's book burning but replace the single column of fire
weight:   10                 -- with a 3x3 fireball; power depends on book, as with Trog
cost:     none
use:      active
piety:    2
clause:   "set spellbooks ablaze into impressive balls of fire"
tags:     books
name:     Animate_Book       -- re-use Dancing Weapon code (in particular, book not gone afterwards)
weight:   10                 -- power from book level
cost:     5 magic, 4 piety, 50 hunger
use:      active
piety:    2
clause:   "animate books, turning them into aggressive and voracious companions"
tags:     books
name:     Cast_From_Book     -- cast spell from book at 100% success and 75% power
weight:   10                 -- destroys book
cost:     9 magic, 4 piety, 300 hunger
use:      active
piety:    3
clause:   "tear out a single page from any spellbook, casting that spell without failure and destroying the book in the process"
tags:     books
name:     Tame_By_Book       -- can enslave hostile casters by throwing a book at them
weight:   5                  -- always works, but duration depends on book power vs caster HD
cost:     none               -- book is gone
use:      passive
piety:    2
clause:   "temporarily have hostile spellcasters switch allegiance by throwing spellbooks at them"
tags:     books


Trademark power: Tomb_Self
name:     Tomb_Other    -- recycle Zin's Imprison power 
weight:   10            -- cost etc. should be taken from Zin as well
cost:     3 piety, 50 food, 5 magic
use:      active
piety:    2
clause:   "temporarily imprison their enemies"
tags:     earth
name:     Crush         -- drop down something on the target (a stone, a large rock, or a wall):
weight:   10            -- choose between stone and rock depending on piety (only rock if piety>100) and monster size        
cost:     3 piety       -- *if* a large rock is used *and* the monster dies, have a chance to place a rock wall instead
use:      active
piety:    2
clause:   "drop heavy objects on their foes"
tags:     earth
name:     Passwall      -- the spell
weight:   10        
cost:     3 piety, 50 food, 5 magic
use:      active
piety:    2
clause:   "pass through rock walls"
tags:     earth, stealth
name:     Descend_Self  -- Create shaft beneath player; still have to use > to go down 
weight:   10            -- so a two turn escape; does not work in Abyss, Pan, branch ends
cost:     6 piety, 300 hunger
use:      active
piety:    3
clause:   "can create a shaft to escape from peril"
tags:     earth, emergency
name:     Descend_Other -- Create shaft beneath a monster; the monster falls down right away
weight:   10            -- does not work in Abyss, Pan, branch ends, on large/flying monsters
cost:     3 piety, 5 magic, 100 hunger
use:      active
piety:    2
clause:   "can create a shaft to send monsters to the next level, apart from the large and flying ones"
tags:     earth


Piety gain:  kill_suddenly
Minor Power: Passwall
name:     Ensnare            -- throw nets on all enemies in sight
weight:   10                 -- durability of nets depends on Invocations
cost:     5 piety
use:      active
piety:    1
clause:   "may ensnare all enemies in sight"
tags:     stealth            -- good for stabbing
name:     Detect_Sleepers   -- like Ashenzari's monster detection (at maximal Ash piety)
weight:   10                 -- but only for sleeping monsters
cost:     5 piety            -- and don't show monster tier
use:      passive
piety:    1
clause:   "will detect targets before seeing them"
tags:     stealth

Piety gain

In principle, we have lots of knobs with piety powers: how much piety to gain from a kill (or an explored square); how much piety to lose per turn. But I believe that's not a good approach — impossible to get the information to players in a decent fashion, and it does not make balancing easier. Instead, I suggest that we follow established gods. So “piety for all kills” takes Makhleb's parameters, and “piety for exploration while carrying books” takes Ashenzari's mechanic, turning curses into books.

name:     exploration
desc:     "wants followers to explore the world"
gain:     Ashenzari(1)   -- number is bonded parts with Ashenzari
name:     exploration_with_books
desc:     "wants followers to explore the world while carrying as much literature as possible"
gain:     Ashenzari((books-5)/3)
tags:     caster, books
name:     sacrifice_books
desc:     "wants followers to keep the dungeon free of books"
gain:     value/30          -- made up value, I don't know what's good here
tags:     !caster, !books   -- might fit thematically with the books tag, but not in gameplay
name:     sacrifice_gold
desc:     "demands a tithe"
gain:     Zin
tags:     shoplift
name:     kill
desc:     "wants followers to kill the living as well as the dead and demons"
gain:     Makhleb
name:     kill_uniques
desc:     "wants followers to take on heretic heroes as quickly as possible"
gain:     10             -- again, no idea
                         -- for later (if we keep this), it'd be interesting to link piety gain to
                         -- time between unique seen and killed, eg. gain = 5 + f(time_killed-time_seen)
name:     kill_novelties
desc:     "only appreciates the first time kill of any breed"
gain:     4 * Makhleb
name:     kill_suddenly  -- enemy does not wake up (stabbed to death or otherwise one-hit kill)
desc:     "only values kills which did not wake up the victim"
gain:     7
tags:     stealth


Not much here, just to have conducts in the infrastructure.

The third one just as an example of god building:

  • Conducts come first. If no_buying is rolled, then the shoplift power is forced. Gold sacrifice may or may not become the piety gain mechanic (but chances are increased).
  • Piety gain comes next. If sacrifice_gold is rolled, then shoplift may or may not become a power (but chances are increased).
  • Even without no_buying and sacrifice_gold, shoplift may be rolled as a trademark power (hence the reduced weight).
name:     reduced_inventory
desc:     "demands worshippers to rely on faith rather than trinkets"
weight:   1
effect:   signature          -- this is a major conduct: the player gets a second trademark power!
                             -- (each piety star reduces inventory by four more slots)
name:     no_dropping
desc:     "abhors at the very idea of putting things on the floor"
weight:   1
effect:                      -- items dropped vanish (ideally, turn off autopickup and autoinscribe all items upon pickup with !d)
effect:   signature          -- this is comparable to reduced inventory above
tags:     conversation       -- increased chance for the conversation power
name:     no_buying
desc:     "hates merchants and their ways"
weight:   1
tags:     >shoplift, sacrifice_gold  -- forces shoplift power; higher chance to have gold sacrifice as piety gain
name:     no_casting         -- blatant Trog rip-off, but okay for a random god
desc:     "hates all users of magic"
weight:   1
tags:     !caster, books     -- forbids any powers etc. befitting casters; the books effects are about unusual book use, so fit
tags:     >kill_casters      -- forces use of  (the minor) piety gain for killing casters 
Logged in as: Anonymous (VIEWER)
dcss/brainstorm/god/concept/random_god/miniature.txt · Last modified: 2013-04-10 20:49 by dpeg
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki