DoomRL > Modding

Modding wishlist

<< < (5/6) > >>

Game Hunter:
Some things to address 0.9.9.4 stuff:

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, ... }.

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).

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.)

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).

111. If nothing else from that last suggestion, an OnHit trigger for weapons (or missiles, depending on how it needs to be set up).

We could use an expansion on being AI functions:

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

* return 1 if swap only includes one weapon (that is, one of the weapons is "fists")
* return 2 is swap includes two weapons
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)

you:
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

tehtmi:

--- Quote from: you on January 23, 2012, 11:54 ---121. Ability to cast LOS between player/being and coord to check presence of Obstacles, Items and Beings

--- End quote ---

There are some LOS functions currently:
(Note that DoomRL uses two different LOS algorithms: the player's more generous field of view, and monster's more restricted point-to-point.

--- Code: ----- Check if the being is in the player's LOS
begin:is_visible()

-- Check if a cell is in the player's LOS
Level.light[coordinate][LFVISIBLE]

-- Check if there is LOS between two cells using the monster algorithm
Level.eye_contact(coordinate1, coordinate2)

-- Check if there is LOS to a being/item/coord using the monster algorithm
being:eye_contact(other)
being:in_sight(other)

--- End code ---

Monster AIs use being:in_sight.  It checks the ensures the sight radius is used as well.

If you want to find nearby items and beings to a certain position, there are also pascal-implemented iterators that should make this faster, although they don't check LOS:


--- Code: ---Level.items_in_range(coordinate, range)
Level.beings_in_range(coordinate, range)

--- End code ---

you:
122. Access to keybindings from module. (i want to add some keys in my module but config cannot interact with module and vice versa)

Morat48:
123. A flamethrower prototype

I know flamethrowers weren't present in Doom, but it's the only major weapon archetype that I can think of that isn't represented in DoomRL. Since not all the weapons in DoomRL are from Doom (like the tristar blaster), a flamethrower could be an interesting rare or unique item. Even if not, I expect it would be useful for modders to have that prototype available.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version