DoomRL > Modding

Modding wishlist

(1/6) > >>

Malek Deneith:
Kornel asked me recently to start writing up a wishlist for things in modding, so here it is. This will be updated when new thoughts come to me, feel free to add your own wishes, but remember - no guarantees are beeing made that anything on the list appears, unless Kornel says so himself ;)

Color map:
In release
In beta
In SVN
Impossible to add or denied feature
Duplicate

1. Make exotics available.
2. Make uniques available except the ones that *really* need to stay "behind the curtain" (a category occupied mostly by Dragonslayer I think :P).
3. An option to make "unmodable" content to either drop randomly as normal or not (i.e. if Dragonslayer gets hidden modders should have an option do they want it to drop as it does in regular game or not).
4. An similar option to block out "core" monsters and items from spawning
5. A teleport flag for monsters - makes them phase near the player when he gets in sigh
6. A flag or event that makes monster perform one final attack on death, provided that he is able to (player in sight/weapon range, enough ammo in magazine, etc.)
7. Ability to give the monster up to 3-4 weapons and have them switch between them (possibly flags for weapons to define on what range what weapon gets used?)
8. "Vampiric" flag for weapons and monsters
9. A flag that allows the weapon to gain ammo when it sits in alternate slot and monsters get killed by other equipped weapon (Denied)
10. A clearFlag hook for items. Come to think of it setFlag and clearFlag for cells might be of use
11. Way of clearing monsters or items on the map "on demand".
12. Hook that would allow weapon to do stuff on fire. Needs to be able to mess with wielder's stats using this, and ideally it would proc *after* creatures OnAction
13. Ability to tinker with how much "hp" armor has (Denied; EDIT: isn't this doable with maxdurability?)
14. Ability to set hp and armor durability to display actual hp rather than % (denied)
15. Reverse knockback flag - i.e. ability to have weapons that suck the target towards origin of attack/explosion rather than away from it (Denied)
Spoiler: Aggregated Items (click to show/hide)16. a getCell feature (in whatever roundabout method is necessary; I just want complete access to the level)
17. a getBeings feature (so you can loop through and mess with every being in a level)
18. All hardcoded IDs not being hardcoded
19. A way to fill a custom level with a randomly generated one (that way I can have a half-random, half-custom level)
20. Ability to influence level generation (Aargh!  Caves!  Also, change item/being weights and the like mid-game)
21. AI tweaks
22. More control over music (in-level music changes)
23. A door flag for cells
24. Chainable custom levels (with and without ability to skip normal levels as a result)
25. A hierarchy of hooks (For instance, you can hook an individual weapon's OnKill hook, all OnKill hooks for a level, or all OnKill hooks for the entire game!  Some already do this)
26. A way to bounce grenade shots so that SkulltagRL is viable (Denied)
27. More hooks!  Hooks are where the power is >)
28. A hook for creating our own levers
29. Ability to have weapon reload without any ammunition involved (and by "reload" I mean when pressing 'r' rather than automatic regeneration of amunition)
30. A flag that makes enemies destroy walls that are destructible (Denied, should be doable with AI)
31. Short charge/jump attack bulldemons in BerserkRL have
32. If possible long charge attack - further range, goes for set distance or until hits wall, damages and knocks to the side beings that are in path (thus allowing for the charge to go "through" the target), has a "cooldown" afterwards (representing monster losing momentum and turning to attack again, also prevents the player from being spammed by that) (Denied)
33. Self-destruct attack for monsters? (Perhaps possible already by giving monsters melee range exploding attack, would need to check) Can't be done. I can haz Being.explosion plz? ^^" Edit: Ideally this should allow for both "zomg I make myself go boom" and "agh, dying I'll go boom" :P
34. A flag that makes monsters inactive until they see player (i.e. they do nothing, except perhaps idle sounds :P). Perhaps also "player sighted" soundbind if this flag does get created?
35. Ability to make item "unique" in the sense that player can't carry more than one of these at the same time.
36. Ability to spawn mosnters and items exactly on chosen coordinates. Apparently dropBeing and dropItem handle these, yaaaay. Though add mentions there are unsafe for some reason, so it might be worth looking into anyway.
37.  Split CF_BLOCKMOVE into a BLOCKMOVE and BLOCKMISSILE flag (and possibly even a BLOCKPLAYER).  That way we can make windows that can be shot through but not walked through and gateways that can be walked through but not shot through. (Denied)
38.  Do not make the UNIQUE flag automatically mean UNDESTROYABLE.  We already have a flag for that.
39.  NODESTROY flag, when applied to powerups, currently prevents them from being destroyed when consumed.  That can already be replicated with hooks.  What I want is a powerup immune to splash damage, not infinite uses.
40.  Any other flags that serve two purposes should be split up.
41.  Ability to fine tune player inventory--hook equip, remove, remove individual items, etc.
42.  Adding ammo to inventory directly should stack properly.
43.  Player.win() can specify win type
44.  add Player.lose()
45.  Some way to mess with the UI similar to berserk, inv, and env suits but without going through affects.  UI.setColorEffect(foreground, background, invert)? (Will not be done)
46.  Powerups should have customizable ascii....
46a.  Flags for setting creatures as nonhostile, so they can be designated to attack under certain conditions.
47.  Should doors and barrels really be cells?  Possibly this will be taken care of when furniture like flair is added... (Will not be done)
47a.  Some way to designate sides in a fight, including a setting for solo fighters.
48.  Flags for setting creatures as "defensive" - attack opponents if their charge (ward? master?) is attacked.  (Could probably be faked if 46 was implemented.)
49. Being.clearSlot(CONST_SLOT) function to free only one slot
50. Being.unEqSlot(CONST_SLOT) function to move equiped item to inventory
51. Item.drop() function to make holder drop item
52. Unlock Level.put in mid-game
53. Ability to control being movement (something like Being.move(COORD_X, COORD_Y))
54: 'spread' flag works on rapidfire weapons in the way you'd expect it to (not until async comes out though, otherwise it'd be slow)
55. Custom Flags. If a defined cell/being/item/etc type is given a flag that is not present in base doomrl, the engine automatically creates a ("flag_name" = true) association for that type. Mainly want it for cells. (Denied for DoomRL1)
56. Cell Flag Querying. Being able to ask if a cell on a particular square has a particular flag. ie: cellHasFlag(x, y, cell_flag). Should work with custom flags from mod item 55. (Denied for DoomRL1)
57. Map Table. Holds maps with given names, as is the current case for cell/item/being/etc definitions. Placing the initial map could look like Level.put(2,2,MAP_THISLEVEL).
58. Map Painting. Being able to "paint"/apply maps during play (not just at creation), that are defined with mod item 57. Ie: paint_map(x, y, map_name), paint_map_centered(x, y, map_name).
59.  Access to more engine variables.  The current level's NPC count is the only one I can think of offhand that I'd like.
60. Ability to toggle trait picking on level up (ability to disable first trait, ability to give traits every 2nd/3rd/4th level up)
61. Reload trait table every levelup.
62. Level.clearLight() to reset level exploration state
63. Player.powerMap(show_items) to explore only the map
64. Ability to choose ASCII character for items
65. Customization of sound volume, attenuation, pitch, and tempo on Being.PlaySound().
66. Ability to hook and prevent Player's death, making respawn possible.
67. The bool in Item.OnUse(), which currently determines if a consumable should be, well, consumed, should also determine if a lever's charge is consumed.
68. Currently the odd set of exceptions like blasters and hellgates use special color constants like MULTIYELLOW to display their graphical goodness.  I'd like that to be expanded to a color array instead. (Denied)
69. Affects can be quite handy, but not when we are limited to 5.  As is anyone wanting to abuse those must create their own affects-like system in Lua. (denied; EDIT: this has been expanded to 12 since)
70. Affects should be Effects :) (denied, he he he)
71. Well what about MF_IMMIDATE?  Honestly it took me a while to figure out what that was supposed to be...(there's no MF_IMMIDATE anymore, going to assume it's MF_RAY
72. ItemSets blow away regular item OnEquip messages.  This can be hacked around, or something similar to Being's weapon OnCreate could be added in to make modders saner. (denied)
73. Tweak HUD.  Maybe I want my status bar at the top, or I want to replace the health counter with a vague text description.  Currently we can edit about 11 characters lovingly reserved for the level name, but that still leaves a few rows to adjust. (denied)
74. For full modding: Lua main menu
75. Stackable consumables - health items, grenades and such. (Denied for DoomRL1)
76. While we're at it, also stackable melee weapons, such as knives. (Denied for DoomRL1)
77. OnHitBeing working on melee weapons.
78. OnHitBeing working on explosions. (Denied, OnHitBeing is specifically designed to NOT affect splash damage. May consider more general hit hooks though.)
79. Melee weapons that use ammo in one way or another, either for normal swing or for powering the AltFire.
80. On(Normal)Fire hook for weapons, because, why not?
81. Customizable "the X is hit" message, "the X dies" message and health status strings ("unhurt" to "almost dead"). I totally need this for something...
82. We have CF_BLOCKLOS and CF_BLOCKMOVE.  Setting just BLOCKMOVE (to create a window) has... interesting effects on the AI.  Can we tweak the aiming code to take into account non-fragile BLOCKMOVE tiles when firing? (Denied, can/should be worked around with AI
83. BlockLOS and BlockMove are nice, but it'd be very nice if we could block certain creatures, or not block shots, or even have one way cells.  I think an OnTryEnter and OnTryShoot hook could handle the myriad of desirable combinations.  Fog tiles, barriers, open windows, closed windows... (Denied, see #37)
84. More error-checking for common modding mistakes and better, more helpful error messages and backtraces. I've lost count of the number of times i couldn't find why the hell was the bloody thing crashing in core.lua, when in fact it was something wrong with the map array and its associated translation. Anything that helps us find the cause of the crash without performing a tedious line-by-line audit is a blessing, and will be much rejoicing within the modding community. (This will hopefully be included later.)
85. A simple API to view and modify current cell HP.
86. The OnFire hook should work for melee weapons (it works when pressing 'f' but not when autoattacking) in the style of the corresponding challenge hook.
87. A mod should be able to declare global hooks that are triggered throughout the entire mod in the style of challenge hooks.  I think all of the challenge hooks would be useful as well as some of the level hooks like OnTick.
88. This would be partly addressed by having a global OnTick, but it would also be very helpful to have a built-in system of adding new temporary hooks on the fly. E.g. dropping a bomb could create an OnTick hook that counts down until explosion. The return value could determine whether to keep the hook or remove it.
89. I don't see why challenges are disabled in sandbox. (Interaction of some settings with challenges and general modding could have bad results. Most if not all challenges are easily replicable: total conversion mods will allow use of custom challenges.)
90. A way to remove beings from the map and items from the map/inventory/equipment without them being deallocated. (denied - would be a source of unendless errors the way the current system is implemented... however, feel free to request things that would need this feature)
91. An API to handle moving items between the floor, the inventory, and the various equipment slots of a being.
92. The Generator functions should separate out the layout generator into a separate function (like is already done for tiled dungeons) so that modders can more easily use the layouts without necessarily using the same item/monster/etc generation.
93. The "floor" cell seems to have special status at least as the cell that is created when another cell is destroyed. There should be some way to change this... perhaps the current style's floor cell should be used instead.  (Currently it is impossible change style, although the lua code can be tricked, but I would expect this to be possible with the advent of full modding.)
94. In sandbox, medals and badges can be awarded, but they don't appear in the mortem.  I can see no reason to prevent this.  (Especially if the default medals are not checked.)
95. The player's OnAction hook currently cannot be used, because the player was created when there was no OnAction hook.  Could an empty OnAction hook be given to the player so that modders can override it?
96. Removal of the Dragonslayer from the items table causes some problems... the normal item drop code loops through the items table, but it will stop when it gets to the Dragonslayer's empty slot.  Either the item drop code could be made more robust, or the Dragonslayer could be prevented from loading in the first place. (It's pretty easy to put Dragonslayer in a mod now, by the way.)
97.  When ammo is added to the inventory it is not merged with other stacks.  Either auto-merge ammo on add or have a specific function for adding ammo that will take the ID, count, and return any remainder.
98. A better way to bind sounds to beings: currently it has to be done by appending to the prototype and that is all kinds of messy.
99. A resistance table, rather than a bunch of different resistance properties. Something like res = { bullet = 25, fire = 25, ... }. (Denied)
100. A console command to load modules (for debugging purposes). Having to load modules by starting DoomRL, then Custom Game, then selecting the mod is a little tedious when you have lots of little bugs to fix.
101. An OnAttacked hook that belongs to the being object. Right now there's one for the AI object, but certainly there could be reasons to use OnAttacked that aren't related to the AI.
102. Allow OnAltFire to work with pre-scripted alternate fires. (If the same is true of OnAltReload and scripted alternate reloads, then the same for that.)
103. Allow OnFired to work with melee weapons.
104. Currently, default sounds cannot be overridden (maybe because they're bound via sound.lua), making it impossible to replace sounds for modding purposes. We need SOME way to do this.
105. A way to disable/limit classes, traits, and name selection before the mod starts. (I understand if editing these is for TC modules but allowing any possibility can screw around with level balance.)
106. A BF_NOTARGET flag that prevents monsters from being able to target the player (and prevents the player from automatically targeting a being). (Denied, can/should use AI to replicate this
107. Separate IF_SPREAD's functionality into missile/weapon properties, as described here:

--- Quote from: Game Hunter on September 28, 2011, 10:44 ---The problem with Mancubus lies with the way that the weapon-spreading function works. Currently, IF_SPREAD bases the angle of spreading by the distance from the player (that is, where the attack is aimed), and can only fire three shots at once. Ideally, this flag would be replaced with the ability to define your own projectile-based spread, in which the number of spreaded shots and the maximum spreading angle are modifiable (and will work with a number of shots, like a spread-chaingun). An even number of shots would cause the "extra" projectile to undergo a reflective transformation on each fire, and an odd number would work as-is.

If we could get this kind of result, then the Mancubus could shoot only two projectiles, specifically at a particular angle, and could be forced to fire three times consecutively, with the off-projectile shooting left-right-left or right-left-right. This would imitate the original's quite nicely, and have the benefit of not causing insta-kills in a hallway. It's a start, anyway.

--- End quote ---
108. A way to "throw" an item without using ALT_THROW on a melee weapon, as well as a way to trigger when the item is dropped on the ground in this manner. (I've managed to emulate this but it's pretty hacky so a shortcut would be nice.)
109. Some kind of engine ticking hook that triggers whenever the item is in your inventory (OnInvTick). It'd be nice to allow stuff to regenerate while it's not equipped. (Maybe a way to combine OnEquipTick and OnInvTick, while we're at it.) (Denied)
110. DamageType objects. It'd keep track of how well DR armor absorbs it; gibbing; knockback; whether it destroys non-fragile cells, fragile cells, or neither; maybe even OnHit and OnHitBeing hooks (OnHit triggering at the cell wherever a missile fired from weapon associated with the damage type stops). (Slated for next version, albeit these specific suggestion aren't necessarily assured)
111. If nothing else from that last suggestion, an OnHit trigger for weapons (or missiles, depending on how it needs to be set up).
112. being:pickup should have a second return for the item that was picked up (can make it easier to, say, wear it or use it after pickup)
113. being:swap to swap weapons between weapon and prepared slots (it's called being:quick_weapon)
114. being:attack should work with a melee weapon (if one is equipped in the weapon slot)
115. being:unload to unload a weapon in the being's equipment or inventory (take eq slot, inv slot, coord (unload from ground), or item: last one searches equipment, then inventory, then map for item)

* return 0 on success
* return 1 on partial failure (ran out of inventory space to store the ammo)
* return 2 on failure due to the weapon being un-unloadable
* return 3 on failure due to no ammo in weapon (potentially could trigger a scavenger effect?)116. being:direct_seek and being:path_next should have a second return, the coordinate that the being moved in (or tried to move in but failed)
117. being:path_find should have a second return, a table of coordinates that make up the path that was found
118. A bunch of being properties don't seem to work with anything but the player (such as pistolbonus): please change code to allow them to affect all beings!
119. Same as 118 but for BF_ flags (such as BF_DUALGUN)
120. A hook for missile impact with the wall
121. Ability to cast LOS between player/being and coord to check presence of Obstacles, Items and Beings
122. Access to keybindings from module. (i want to add some keys in my module but config cannot interact with module and vice versa)
123. A flamethrower prototype (see post)

yaflhdztioxo:
5 can be done with linedefs and dropBeing(), but it's hackish
6 can be probably be done with the OnDie hook, but I don't think you can spawn a missile from there.
7 can be done with some abuse of OnCreate.

Of course just because something is possible doesn't mean that the interface shouldn't change to make it easy.


I would like:
16. a getCell feature (in whatever roundabout method is necessary; I just want complete access to the level)
17. a getBeings feature (so you can loop through and mess with every being in a level)
18. All hardcoded IDs not being hardcoded
19. A way to fill a custom level with a randomly generated one (that way I can have a half-random, half-custom level)
20. Ability to influence level generation (Aargh!  Caves!  Also, change item/being weights and the like mid-game)
21. AI tweaks
22. More control over music (in-level music changes)
23. A door flag for cells
24. Chainable custom levels (with and without ability to skip normal levels as a result)
25. A hierarchy of hooks (For instance, you can hook an individual weapon's OnKill hook, all OnKill hooks for a level, or all OnKill hooks for the entire game!  Some already do this)
26. A way to bounce grenade shots so that SkulltagRL is viable (Denied)
27. More hooks!  Hooks are where the power is >)

I'm all for more power.  Though the one I *really* want is getCell.

Just setting up a unified number list for stuff that we ask for - Malek

yaflhdztioxo:
28. A hook for creating our own levers

Malek Deneith:
Moar!

29. Ability to have weapon reload without any ammunition involved (and by "reload" I mean when pressing 'r' rather than automatic regeneration of amunition)
30. A flag that makes enemies destroy walls that are destructible (Denied)
31. Short charge/jump attack bulldemons in BerserkRL have
32. If possible long charge attack - further range, goes for set distance or until hits wall, damages and knocks to the side beings that are in path (thus allowing for the charge to go "through" the target), has a "cooldown" afterwards (representing monster losing momentum and turning to attack again, also prevents the player from being spammed by that) (Denied)
33. Self-destruct attack for monsters? (Perhaps possible already by giving monsters melee range exploding attack, would need to check) Can't be done. I can haz Being.explosion plz? ^^" Edit: Ideally this should allow for both "zomg I make myself go boom" and "agh, dying I'll go boom" :P
34. A flag that makes monsters inactive until they see player (i.e. they do nothing, except perhaps idle sounds :P). Perhaps also "player sighted" soundbind if this flag does get created?

35. Ability to make item "unique" in the sense that player can't carry more than one of these at the same time.
36. Ability to spawn mosnters and items exactly on chosen coordinates. Apparently dropBeing and dropItem handle these, yaaaay. Though add mentions there are unsafe for some reason, so it might be worth looking into anyway.

yaflhdztioxo:
37.  Split CF_BLOCKMOVE into a BLOCKMOVE and BLOCKMISSILE flag (and possibly even a BLOCKPLAYER).  That way we can make windows that can be shot through but not walked through and gateways that can be walked through but not shot through.
38.  Do not make the UNIQUE flag automatically mean UNDESTROYABLE.  We already have a flag for that.
39.  NODESTROY flag, when applied to powerups, currently prevents them from being destroyed when consumed.  That can already be replicated with hooks.  What I want is a powerup immune to splash damage, not infinite uses.
40.  Any other flags that serve two purposes should be split up.
46.  Powerups should have customizable ascii....
47.  Should doors and barrels really be cells?  Possibly this will be taken care of when furniture like flair is added... (Will not be done)
41.  Ability to fine tune player inventory--hook equip, remove, remove individual items, etc.
42.  Adding ammo to inventory directly should stack properly.

I need Simon to search through his logs for 'wish'.   I know a lot of things are coming and that design changes might render a lot of these moot but requests 27-32 I really want :)

*more*
43.  Player.win() can specify win type
44.  add Player.lose()
45.  Some way to mess with the UI similar to berserk, inv, and env suits but without going through affects.  UI.setColorEffect(foreground, background, invert)?

Navigation

[0] Message Index

[#] Next page

Go to full version