Differences

This shows you the differences between two versions of the page.

Link to this comparison view

dcss:brainstorm:god:concept:random_god:status [2013-06-09 13:11]
qoala [TODO list] Updates based on rng-god.h
dcss:brainstorm:god:concept:random_god:status [2013-06-10 09:38] (current)
qoala [TODO list] made steps towards multiple randgods; fixed save compat
Line 21: Line 21:
   * <del>!!! In enum.h, reset ''GOD_NAMELESS = 101'' (after all valid gods for the foreseeable future, broken by removal of ''GOD_RANDOM = 100'')</del>   * <del>!!! In enum.h, reset ''GOD_NAMELESS = 101'' (after all valid gods for the foreseeable future, broken by removal of ''GOD_RANDOM = 100'')</del>
   * In ''zotdef.cc'', make ''zotdef_create_altar'' less hackishly handle rand gods.   * In ''zotdef.cc'', make ''zotdef_create_altar'' less hackishly handle rand gods.
-  * Make an enum for ''GOD_MIN_RANDGOD'', ''GOD_MAX_RANDGOD'', and ''NUM_RANDGODS'' (the difference between the min and max + 1) +  * <del>Make an enum for ''GOD_MIN_RANDGOD'', ''GOD_MAX_RANDGOD'', and ''NUM_RANDGODS'' (the difference between the min and max + 1)</del> 
-  * Group randgod data into a ''struct randgod'', then store a variable number (''NUM_RANDGODS'') of them in ''struct player'' +  * <del>Group randgod data into a ''struct randgod'', then store a variable number (''NUM_RANDGODS'') of them in ''struct player''</del>
-  * Add piety decay rate to ''struct randgod''.+
   * Move god generation out of ''ng-init.cc''   * Move god generation out of ''ng-init.cc''
   * Move god name generation to its own function for easy replacement   * Move god name generation to its own function for easy replacement
   * In ''ng-init.cc'', stop including ''colour.h'' and ''rng-god-func.h'' after moving code   * In ''ng-init.cc'', stop including ''colour.h'' and ''rng-god-func.h'' after moving code
-  * In ''player.h'', try to not include all of ''rng-func-data.h'', see other entries about splitting that header+  * <del>In ''player.h'', try to not include all of ''rng-func-data.h'', see other entries about splitting that header</del>
   * Expose the ability to set randgod entries in ''god_abilities'' from ''abl-show.cc''?  (Instead of initiallizing them via ''extern'')   * Expose the ability to set randgod entries in ''god_abilities'' from ''abl-show.cc''?  (Instead of initiallizing them via ''extern'')
   * Expose the ability to set randgod entries in ''god_gain|lose_power_messages'' from ''religion.cc''?  (Instead of initiallizing them via ''extern'')   * Expose the ability to set randgod entries in ''god_gain|lose_power_messages'' from ''religion.cc''?  (Instead of initiallizing them via ''extern'')
-  * !!! Move randgod store/load out of ''tag_*_char'' int ''tag_*_you_dungeon''.  //Don't// break ''TAG_CHR_FORMAT''! +  * <del>!!! Move randgod store/load out of ''tag_*_char'' int ''tag_*_you_dungeon''.  //Don't// break ''TAG_CHR_FORMAT''!</del> 
-    * Add a minor version for the new data, so that we also maintain save compatibility at the less sever levels.+    * <del>Add a minor version for the new data, so that we also maintain save compatibility at the less sever levels.</del>
   * <del>!!! //Don't// shift ''DNGN'' enums.  Remove ''DNGN_ALTAR_UNUSED'' so that the fountain enums aren't shifted; that's what it was there for.</del>   * <del>!!! //Don't// shift ''DNGN'' enums.  Remove ''DNGN_ALTAR_UNUSED'' so that the fountain enums aren't shifted; that's what it was there for.</del>
     * Learn which "map_marker" can change name/colour/tile/description of a feature (It's how portal entries work), so that we can fit all the randgods into one enum.     * Learn which "map_marker" can change name/colour/tile/description of a feature (It's how portal entries work), so that we can fit all the randgods into one enum.
     * Figure out if the above solution already sufficiently breaks all the code assuming that altar enums 1-to-1 map with god enums (in order), that it doesn't matter where we put the enums for god altars.     * Figure out if the above solution already sufficiently breaks all the code assuming that altar enums 1-to-1 map with god enums (in order), that it doesn't matter where we put the enums for god altars.
     * <del>Add a note that more DNGN_ALTAR_UNUSED enums should be generated on the next major version bump.</del>  If we somehow retain the assumption that altars and gods map 1-to-1, this should also leave empty enums corresponding to the remaining randgod slots.     * <del>Add a note that more DNGN_ALTAR_UNUSED enums should be generated on the next major version bump.</del>  If we somehow retain the assumption that altars and gods map 1-to-1, this should also leave empty enums corresponding to the remaining randgod slots.
 +    * Update ''feature.cc'' and ''directn.cc'' to use the right god for a randgod altar
   * <del>Move definitions of rng_god_power and other stuff outside of ''rng-god-func.h'' and into ''rng-god.h''.  Change includes.</del>   * <del>Move definitions of rng_god_power and other stuff outside of ''rng-god-func.h'' and into ''rng-god.h''.  Change includes.</del>
-  * Move ''rng_god_power'' data out of ''struct player''/''struct randgod''.  Store just the enums? 
-  * Clear randgod stuff in player during player::init 
-  * Stop initializing randgod stuff on startup. 
-    * Remove include of ''abl-show.h'' from ''startup.cc'' if we move out of there. 
-    * If so, make sure things get initialized (and/or cleared) in ''you::init()'' or somewhere else called by ''main.cc:_reset_game()'' so that ''restart_after_game'' works properly. 
-    * Eventually random gods will be generated or loaded when a map (or wiz command or zotdef ability) request a new one. 
  
  
 Lower priority stuff (some of the above might belong here) Lower priority stuff (some of the above might belong here)
   * In rng-god.h, Convert labels to an enum of bit flags   * In rng-god.h, Convert labels to an enum of bit flags
 +  * Add piety decay rate to ''struct randgod''.
   * Change the costs (in var name and order) to match those in ability_def   * Change the costs (in var name and order) to match those in ability_def
   * Make piety cost a ''generic_cost'', like in abiliy_def   * Make piety cost a ''generic_cost'', like in abiliy_def
Line 53: Line 48:
   * Stop exposing the raw ''rng_god_power'' array to every file including ''rng-god.h''   * Stop exposing the raw ''rng_god_power'' array to every file including ''rng-god.h''
   * Give ''rng_god_power'' the space to store other function types beyond invocation (and allow the perl script to store NULL references if a function isn't present).   * Give ''rng_god_power'' the space to store other function types beyond invocation (and allow the perl script to store NULL references if a function isn't present).
 +  * ''abl-show.cc'': ''rng_god_ability_defs'' should be initialized at an appropriate time rather than overwritten every time ''get_ability_def'' is called.
 +  * See about using a variant of ''random_choose_weighted'' in ''_generate_rng_god_powers()''
 +  * Move ''rng_god_power'' data out of ''stuct player''/''struct randgod''.  Store just the enums?
 +    * Ah, the current system stores in the save a string ''id'' matching the ''id'' of the power, and stores in the god struct a pointer into the power list.  Still might want enums, but the current is acceptable for now.
 +  * Find a better way to loop over the list of ''rng_god_powers'' than checking ''(id.length() == 0)'', as currently done in ''_generate_rng_god_powers()''
 +  * Clear randgod stuff in player during player::init
 +    * Fix initialisation of random god abilities on restart_after_game.  Abilities below the last (non-trademark?) don't appear on the 'a' list.  Those same abilities seem to also be retained between generation attempts.
 +  * Stop initializing randgod stuff on startup.
 +    * Remove include of ''abl-show.h'' from ''startup.cc'' if we move out of there.
 +    * If so, make sure things get initialized (and/or cleared) in ''you::init()'' or somewhere else called by ''main.cc:_reset_game()'' so that ''restart_after_game'' works properly.
 +    * Eventually random gods will be generated or loaded when a map (or wiz command or zotdef ability) request a new one.
 +  * Fix ability gain/loss message for DETECT_SLEEPERS "You //can will// ..."
Logged in as: Anonymous (VIEWER)
dcss/brainstorm/god/concept/random_god/status.txt · Last modified: 2013-06-10 09:38 by qoala
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki