Chaosforge Forum

  • March 19, 2024, 01:18
  • Welcome, Guest
Please login or register.



Login with username, password and session length
Pages: 1 [2]  All

Author Topic: Modding wishlist  (Read 26822 times)

Simon-v

  • Composer
  • Elder Chaos Guard
  • Captain
  • *
  • *
  • Offline Offline
  • Posts: 272
  • Only Human
    • View Profile
    • The Life and Works of One Simon Volpert
Re: Modding wishlist
« Reply #15 on: March 10, 2011, 05:04 »

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.
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...
« Last Edit: May 26, 2011, 04:25 by Simon-v »
Logged

yaflhdztioxo

  • Programmer
  • Local Inquisitor
  • Captain
  • *
  • *
  • Offline Offline
  • Posts: 298
  • Lost Sole
    • View Profile
Re: Modding wishlist
« Reply #16 on: March 19, 2011, 06:41 »

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?

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

Simon-v

  • Composer
  • Elder Chaos Guard
  • Captain
  • *
  • *
  • Offline Offline
  • Posts: 272
  • Only Human
    • View Profile
    • The Life and Works of One Simon Volpert
Re: Modding wishlist
« Reply #17 on: July 08, 2011, 10:38 »

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

tehtmi

  • Programmer
  • Local Inquisitor
  • Lieutenant Colonel
  • *
  • *
  • Offline Offline
  • Posts: 458
    • View Profile
Re: Modding wishlist
« Reply #18 on: July 08, 2011, 16:55 »

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.

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.
« Last Edit: August 08, 2011, 17:52 by Kornel Kisielewicz »
Logged

yaflhdztioxo

  • Programmer
  • Local Inquisitor
  • Captain
  • *
  • *
  • Offline Offline
  • Posts: 298
  • Lost Sole
    • View Profile
Re: Modding wishlist
« Reply #19 on: July 10, 2011, 11:47 »

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

Game Hunter

  • Programmer
  • Local Inquisitor
  • Lieutenant General
  • *
  • *
  • Offline Offline
  • Posts: 1044
  • Looks like game to me.
    • View Profile
    • Channel, the Roguelike
Re: Modding wishlist
« Reply #20 on: September 04, 2011, 13:58 »

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

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)
« Last Edit: November 01, 2011, 19:16 by Game Hunter »
Logged
I'm just a dude playing a dude disguised as another dude.

Latest LPs: Angband, Delver

you

  • Programmer
  • Elder Chaos Guard
  • First Sergeant
  • *
  • *
  • Offline Offline
  • Posts: 109
  • I am You!
    • View Profile
Re: Modding wishlist
« Reply #21 on: January 23, 2012, 11:54 »

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
Logged

tehtmi

  • Programmer
  • Local Inquisitor
  • Lieutenant Colonel
  • *
  • *
  • Offline Offline
  • Posts: 458
    • View Profile
Re: Modding wishlist
« Reply #22 on: April 17, 2012, 21:46 »

121. Ability to cast LOS between player/being and coord to check presence of Obstacles, Items and Beings

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: [Select]
-- 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)

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: [Select]
Level.items_in_range(coordinate, range)
Level.beings_in_range(coordinate, range)
Logged

you

  • Programmer
  • Elder Chaos Guard
  • First Sergeant
  • *
  • *
  • Offline Offline
  • Posts: 109
  • I am You!
    • View Profile
Re: Modding wishlist
« Reply #23 on: April 18, 2012, 01:31 »

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

Morat48

  • Private FC
  • *
  • Offline Offline
  • Posts: 5
  • Lost Soul
    • View Profile
Re: Modding wishlist
« Reply #24 on: May 22, 2012, 09:20 »

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

Game Hunter

  • Programmer
  • Local Inquisitor
  • Lieutenant General
  • *
  • *
  • Offline Offline
  • Posts: 1044
  • Looks like game to me.
    • View Profile
    • Channel, the Roguelike
Re: Modding wishlist
« Reply #25 on: May 22, 2012, 09:52 »

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.
*cough*grenade launcher*cough*

That aside, the important part of this wishlist is to come up with new or modified components that must exist/change in order to accomodate what is desired. Specifically: how should this flamethrower work? Given the maximum efficacy of available parts, all that's really necessary is a weapon with the chainfire alternate and MF_EXACT/MF_RAY flags (in non-modding terms: rapid-fire weapon, attack lands exactly where aimed, and attack damages non-solid objects between it at the target), possibly with some splash damage. In this way, we already have all the pieces necessary to create a flamethrower, assuming that MF_RAY, MF_EXACT, and explosions (if splash damage is wanted) interact properly with each other. This is, however, not the only possibility of creating a flamethrower if we want to consider things not currently possible by the given API.

You should try to describe your concept of a flamethrower as precisely as possible, so that we know what kinds of things have to be included in order to make it work.
Logged
I'm just a dude playing a dude disguised as another dude.

Latest LPs: Angband, Delver

Morat48

  • Private FC
  • *
  • Offline Offline
  • Posts: 5
  • Lost Soul
    • View Profile
Re: Modding wishlist
« Reply #26 on: May 22, 2012, 11:33 »

My concept of a flamethrower would be a weapon that causes damage to everything in an area. So in my view, a flamethrower prototype should have a spread and range, similar to a shotgun. These properties would define the area of effect. When the flamethrower is fired, everything within the area of effect is damaged (unless the attack is blocked by a wall or other impassable object).

So it would be pretty similar to a shotgun with MF_RAY, except:
1) The missiles travel the full weapon range, and stop completely at that range
2) The missile is displayed simultaneously at all points within the area of effect

An optional damage-over-time effect (ie setting things on fire) might also be useful.
Logged

Sanctus

  • Sergeant
  • *
  • Offline Offline
  • Posts: 81
  • Lost Soul
    • View Profile
Re: Modding wishlist
« Reply #27 on: May 22, 2012, 13:43 »

Combat shotgun + Firestorm pack + Power pack assembly?

i mean it would be nice to have such assembly in the game, not only in mod...
Logged

yaflhdztioxo

  • Programmer
  • Local Inquisitor
  • Captain
  • *
  • *
  • Offline Offline
  • Posts: 298
  • Lost Sole
    • View Profile
Re: Modding wishlist
« Reply #28 on: July 31, 2012, 17:35 »

124. Item health / resistance / whatever (basically a way to control how much damage that nice looking exotic on the floor can take before evaporating in a fireball of death).  Currently you can mark an item as IF_NODESTROY so your options are limited to one of two extremes.
Logged
Pages: 1 [2]  All