[0.10.6] Gun Bonsai -- everything-compatible weapon upgrading
Forum rules
The Projects forums are only for projects. If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.
Got a cool project idea but nothing else? Put it in the project ideas thread instead!
Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.
Please read the full rules for more details.
The Projects forums are only for projects. If you are asking questions about a project, either find that project's thread, or start a thread in the General section instead.
Got a cool project idea but nothing else? Put it in the project ideas thread instead!
Projects for any Doom-based engine (especially 3DGE) are perfectly acceptable here too.
Please read the full rules for more details.
-
- Posts: 5
- Joined: Fri Jun 16, 2023 4:10 pm
- Preferred Pronouns: She/Her
- Operating System Version (Optional): windows...?
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
even without libtooltip it refuses to work
-
- Posts: 2
- Joined: Tue Dec 05, 2023 5:45 pm
- Preferred Pronouns: She/Her
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
Hello!
I've been using this mod pretty heavily ever since someone introduced it. With Doom RPG being a too-heavy moc for RPG scaling, and it making some monsters positively abysmal to fight, I was still looking for something RPG-like that I could add more enemies to, so that there's more of them so there has to be more for me. Gun Bonsai has filled this spot nicely and has cemented itself in my load order. I've used it with DRLA, Final Doomer, Samsara, Golden Souls, Simon's Destiny, Ashes, and a few others. I have really enjoyed it.
That being said, I have a few requests if I'm allowed, or at least suggestions. I will admit I haven't read the entirety of the post because of how many messages there are and the suggestions I have, so if others have suggested these I apologize.
1) Allow turning down stacks of something:
- Say I take 5 stacks of rapid fire but the fifth one ends up screwing me up because it glitches my gun or makes it fire *too* fast for me. If I could turn it back to 4/5 instead of just to "Off" it would let me experiment more with the levels I get.
2) Allow multiplicative/exponential/etc leveling.
- Early on the levels need to be faster to get your momentum going, but later levels need to be longer because of the amount of damage you can output. In the beginning, 5000 XP is good for the first level, but once you're starting to kill entire maps with a few shots, it starts piling on the XP really quickly, especially because of things like lazy points' combo.
3) Add more features for guns.
- Reduced/Increased Spread (Make that Chaingun into a Sniper, make that SSG into an even broader-firing shotgun but make the pellets each do a ton of damage)
- There's Rapid Fire, but what about Slowed Fire (to make a normally rapid fire weapon into a slower, corrosive one maybe?) for making some gun slower but more powerful by choice? Along with the suggestion to allow 4/5 stacks of something, maybe taking an inverted perk (Rapid Fire -> Slowed Fire) could reduce things back down in the event you "overdo it" and cost you a level in the process so it could be more immersive.
- If a gun had a Reload Speed, making that selectively faster as Rapid Fire can make it faster but it also makes some guns fire too fast.
- With the above "On Reload" perks, like "Causes an explosion around the player for X amount of damage per bullet reloaded" or something.
- Increased Magazine Size (For guns that support it. Bandoliers sort of works depending on the mod)
- Add bonuses like "Extra shot per shot", "More Pellets", maybe some "ammo" mods, sort of like the elemental mods, but exclusive to each other (slug vs. shells vs. dragons breath etc)
- Add Melee Unit range to melee weapons. It might not make much sense, but it is one of the bigger things melee needs is range and being able to increase the punching distance would be neat. Could call it "Ki Strikes" or something where attacks have extended 'energy' range.
- The critical shots mod has "critical hits" as a rare thing that happens, however having them as a percentage of something that the gun could trigger could be an option for Gun Bonsai. % chance to do X multiplied damage, and more stacks increase likelihood, and then you could have other perks that play off things like "When crits happen do X".
- Allow a feature for a level up to give a gun XP sharing. Some guns are hard to level up, especially if you got them later in a run, so a gun being able to give 1/10th of it's XP to another gun or something would be nice. It's like the EXP Share from Pokemon, only for your bullets.
4) Balancing the elemental mods
- These mods are all good, but ultimately, they all kind of fall short over time compared to either lightning or just explosive death/he shots. Slow + Stun + Chain Lightning 50% Enemy Health > Slow Poison/Corrosion or Fast Fire to 50%. That, or as mentioned HE Shots or Explosive Death can really make a gun very powerful and then those elemental effects aren't quite really as useful. If you start adding in stacks of damage, and then add in even a couple of stacks of rapid fire, most things seem like they would be better off using lightning, so, I'm not sure how to really balance them. However:
- Poison may need to tick harder, faster, and with less stacks in order for it to carry a weapon's damage. Corrosion does a good job of doing damage with a few levels in it, but poison generally feels pretty weak even with a bunch of stacks. I've hammered into a boss enemy with thousands of HP with a 15 damage pistol that applies poison and it just takes a lot of time. Fire will beat it to 50% for sure, and corrosion seems to beat it out just because of higher starting damage and higher ending damage. I like the bonuses that they give, and think all should follow a sort of pattern In order to keep them equal.
- First tier is DOT or Status.
- Second tier is effect when stacks are added
- Third tier is AOE damage that is roughly equal.
Or something where the tiers equally have analogues in other trees, that way things feel more like sidegrades instead of one being flat out better. Hallucinogens and Revivication are good examples of the same effect, but Putrefaction and Chain Lightning are too different, despite being the third tier.
Chain Lightning being able to deal 50% of enemy health across multiple enemies means that to kill a group of mobs all you have to do is kill two of them. It's incredibly powerful for that reason, and I've killed two enemies and then opened up closets to find the contents inside dead thanks to chain lightning. It's very good at clearing maps. If Fire didn't stop burning at 50% with a perk or burned longer per stack, etc it could keep up. Same with Corrosive because of the stacks adding more damage and it being able to scale fairly heavily, but poison cannot really add to this style of damage. Weakness is a nice modification, but it doesn't get applied quite so universally, so it could be useful in a fight, or useless. Perhaps poison weapons should gain some aoe to their bullets to apply poison to everything in range as a part of the perk to make it so everything starts ticking faster, and everyone gets applied weakness.
Not sure what the answer is here but the elemental trees aren't quite balanced, though the idea is great and I would like to see more elements or effects added. If every third tier AOE was equally as powerful as chain lightning, it could add to some versatility.
5) Silly effects
- Maybe something like every X gun levels you can add a bonus silly effect. Add a color multiplier to the bullet puffs or something and make them rainbow. Make the beams the plasma rifle fires change colors. Is stuff like that possible? If it's not too intense on the game and it's lightweight and you're multiplying colors (sort of like mk-champions would with sprites and their champion colors) maybe you could do some silly effects or bonus effects that aren't the most useful but are fun to have. The confetti on headshot style thing comes to mind.
6) HE Shots/Explosive Damage Knockback reduction
Explosive Death has a tendency to launch you to the ceiling of whatever map you're on if you're too close. I don't know what the cause of this is, but it can sometimes really throw you a good distance, and I'm not sure if it's intended. The self-damage reduction might need to include a knockback reduction, and Blast Shaping might benefit from knockback reduction as a perk, too. or it being a separate perk altogether.
7) Scavenge Lead Boost
- This perk doesn't really benefit you as much as Scavenge Steel or Scavenge Blood per level, because of the fact that pickups aren't equal. One rocket is much bigger than a clip that has two bullets in it. I think dropping full-sized drops might be the solution here, but letting the cap for Scavenge Lead be 2-3, or something. I tend to play with triple monster density and scavenge lead really comes in handy but only after 2-3 stacks and after I've had time to fill up on stuff I'm not actively using. Then it becomes a bit less needed once I have the AOE on my guns. I think it would need to be more useful throughout, and this means more ammo in the beginning. The return on investment for scavenge lead needs to be a bit higher. Maybe for guns with higher capacity/ammo pools it could drop more.
Overall, I really like this mod and I'm gonna keep using it, so I hope to see this take off more, as the light RPG aspects are nice without having to dedicate to Doom RPG. Thank you very much for your time and making this, as it's quite a fun mod and there's something really satisfying wielding the standard pistol and running around pulling off incredible feats because I really put time into it.
Thank you, have a good night.
I've been using this mod pretty heavily ever since someone introduced it. With Doom RPG being a too-heavy moc for RPG scaling, and it making some monsters positively abysmal to fight, I was still looking for something RPG-like that I could add more enemies to, so that there's more of them so there has to be more for me. Gun Bonsai has filled this spot nicely and has cemented itself in my load order. I've used it with DRLA, Final Doomer, Samsara, Golden Souls, Simon's Destiny, Ashes, and a few others. I have really enjoyed it.
That being said, I have a few requests if I'm allowed, or at least suggestions. I will admit I haven't read the entirety of the post because of how many messages there are and the suggestions I have, so if others have suggested these I apologize.
1) Allow turning down stacks of something:
- Say I take 5 stacks of rapid fire but the fifth one ends up screwing me up because it glitches my gun or makes it fire *too* fast for me. If I could turn it back to 4/5 instead of just to "Off" it would let me experiment more with the levels I get.
2) Allow multiplicative/exponential/etc leveling.
- Early on the levels need to be faster to get your momentum going, but later levels need to be longer because of the amount of damage you can output. In the beginning, 5000 XP is good for the first level, but once you're starting to kill entire maps with a few shots, it starts piling on the XP really quickly, especially because of things like lazy points' combo.
3) Add more features for guns.
- Reduced/Increased Spread (Make that Chaingun into a Sniper, make that SSG into an even broader-firing shotgun but make the pellets each do a ton of damage)
- There's Rapid Fire, but what about Slowed Fire (to make a normally rapid fire weapon into a slower, corrosive one maybe?) for making some gun slower but more powerful by choice? Along with the suggestion to allow 4/5 stacks of something, maybe taking an inverted perk (Rapid Fire -> Slowed Fire) could reduce things back down in the event you "overdo it" and cost you a level in the process so it could be more immersive.
- If a gun had a Reload Speed, making that selectively faster as Rapid Fire can make it faster but it also makes some guns fire too fast.
- With the above "On Reload" perks, like "Causes an explosion around the player for X amount of damage per bullet reloaded" or something.
- Increased Magazine Size (For guns that support it. Bandoliers sort of works depending on the mod)
- Add bonuses like "Extra shot per shot", "More Pellets", maybe some "ammo" mods, sort of like the elemental mods, but exclusive to each other (slug vs. shells vs. dragons breath etc)
- Add Melee Unit range to melee weapons. It might not make much sense, but it is one of the bigger things melee needs is range and being able to increase the punching distance would be neat. Could call it "Ki Strikes" or something where attacks have extended 'energy' range.
- The critical shots mod has "critical hits" as a rare thing that happens, however having them as a percentage of something that the gun could trigger could be an option for Gun Bonsai. % chance to do X multiplied damage, and more stacks increase likelihood, and then you could have other perks that play off things like "When crits happen do X".
- Allow a feature for a level up to give a gun XP sharing. Some guns are hard to level up, especially if you got them later in a run, so a gun being able to give 1/10th of it's XP to another gun or something would be nice. It's like the EXP Share from Pokemon, only for your bullets.
4) Balancing the elemental mods
- These mods are all good, but ultimately, they all kind of fall short over time compared to either lightning or just explosive death/he shots. Slow + Stun + Chain Lightning 50% Enemy Health > Slow Poison/Corrosion or Fast Fire to 50%. That, or as mentioned HE Shots or Explosive Death can really make a gun very powerful and then those elemental effects aren't quite really as useful. If you start adding in stacks of damage, and then add in even a couple of stacks of rapid fire, most things seem like they would be better off using lightning, so, I'm not sure how to really balance them. However:
- Poison may need to tick harder, faster, and with less stacks in order for it to carry a weapon's damage. Corrosion does a good job of doing damage with a few levels in it, but poison generally feels pretty weak even with a bunch of stacks. I've hammered into a boss enemy with thousands of HP with a 15 damage pistol that applies poison and it just takes a lot of time. Fire will beat it to 50% for sure, and corrosion seems to beat it out just because of higher starting damage and higher ending damage. I like the bonuses that they give, and think all should follow a sort of pattern In order to keep them equal.
- First tier is DOT or Status.
- Second tier is effect when stacks are added
- Third tier is AOE damage that is roughly equal.
Or something where the tiers equally have analogues in other trees, that way things feel more like sidegrades instead of one being flat out better. Hallucinogens and Revivication are good examples of the same effect, but Putrefaction and Chain Lightning are too different, despite being the third tier.
Chain Lightning being able to deal 50% of enemy health across multiple enemies means that to kill a group of mobs all you have to do is kill two of them. It's incredibly powerful for that reason, and I've killed two enemies and then opened up closets to find the contents inside dead thanks to chain lightning. It's very good at clearing maps. If Fire didn't stop burning at 50% with a perk or burned longer per stack, etc it could keep up. Same with Corrosive because of the stacks adding more damage and it being able to scale fairly heavily, but poison cannot really add to this style of damage. Weakness is a nice modification, but it doesn't get applied quite so universally, so it could be useful in a fight, or useless. Perhaps poison weapons should gain some aoe to their bullets to apply poison to everything in range as a part of the perk to make it so everything starts ticking faster, and everyone gets applied weakness.
Not sure what the answer is here but the elemental trees aren't quite balanced, though the idea is great and I would like to see more elements or effects added. If every third tier AOE was equally as powerful as chain lightning, it could add to some versatility.
5) Silly effects
- Maybe something like every X gun levels you can add a bonus silly effect. Add a color multiplier to the bullet puffs or something and make them rainbow. Make the beams the plasma rifle fires change colors. Is stuff like that possible? If it's not too intense on the game and it's lightweight and you're multiplying colors (sort of like mk-champions would with sprites and their champion colors) maybe you could do some silly effects or bonus effects that aren't the most useful but are fun to have. The confetti on headshot style thing comes to mind.
6) HE Shots/Explosive Damage Knockback reduction
Explosive Death has a tendency to launch you to the ceiling of whatever map you're on if you're too close. I don't know what the cause of this is, but it can sometimes really throw you a good distance, and I'm not sure if it's intended. The self-damage reduction might need to include a knockback reduction, and Blast Shaping might benefit from knockback reduction as a perk, too. or it being a separate perk altogether.
7) Scavenge Lead Boost
- This perk doesn't really benefit you as much as Scavenge Steel or Scavenge Blood per level, because of the fact that pickups aren't equal. One rocket is much bigger than a clip that has two bullets in it. I think dropping full-sized drops might be the solution here, but letting the cap for Scavenge Lead be 2-3, or something. I tend to play with triple monster density and scavenge lead really comes in handy but only after 2-3 stacks and after I've had time to fill up on stuff I'm not actively using. Then it becomes a bit less needed once I have the AOE on my guns. I think it would need to be more useful throughout, and this means more ammo in the beginning. The return on investment for scavenge lead needs to be a bit higher. Maybe for guns with higher capacity/ammo pools it could drop more.
Overall, I really like this mod and I'm gonna keep using it, so I hope to see this take off more, as the light RPG aspects are nice without having to dedicate to Doom RPG. Thank you very much for your time and making this, as it's quite a fun mod and there's something really satisfying wielding the standard pistol and running around pulling off incredible feats because I really put time into it.
Thank you, have a good night.
Last edited by RhythmCorvid on Wed Dec 06, 2023 12:04 am, edited 4 times in total.
-
- Posts: 81
- Joined: Thu May 22, 2014 6:04 am
- Graphics Processor: nVidia with Vulkan support
- Location: It's Never Worth The Risk
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
One feature I'd like is to have gun upgrades but the ability to disable the elemental mods. Or even select what gun upgrades you can select.
-
- Posts: 172
- Joined: Sun Sep 01, 2019 10:59 am
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
You can disable the elemental upgrades using the BONSAIRC lump. I have done this myself for certain styles of gameplay.BoneofMalkav wrote: ↑Thu Dec 07, 2023 7:31 am One feature I'd like is to have gun upgrades but the ability to disable the elemental mods. Or even select what gun upgrades you can select.
-
- Posts: 229
- Joined: Thu Oct 05, 2017 10:09 am
- Preferred Pronouns: She/Her
- Operating System Version (Optional): NixOS
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
Thank you everyone who's posted about how much you enjoy the mod. Work on 0.11 is proceeding in fits and starts, and in the meantime I've batched up a few changes and fixes into the 0.10.5 branch to go with the imminent Indestructable 0.3 release.
First, though, I've got a bunch of posts to catch up on, so let's go. Bug reports and technical difficulties in this post.
What are your config values for bonsai_base_level_cost, bonsai_level_cost_mul_for_melee, and bonsai_level_cost_mul_for_wimpy? If any of those are 0 this could be the result. If they're all nonzero I have no idea what's going on.
First, though, I've got a bunch of posts to catch up on, so let's go. Bug reports and technical difficulties in this post.
This was fixed in 0.10.4, or should be.
This looks like it's crashing in the HUD code, specifically in the part where it does a division to figure out how close to your next level-up you are -- if it somehow calculates the XP to level up as 0, this will happen.
What are your config values for bonsai_base_level_cost, bonsai_level_cost_mul_for_melee, and bonsai_level_cost_mul_for_wimpy? If any of those are 0 this could be the result. If they're all nonzero I have no idea what's going on.
Yep, it's in the modding documentation. You can grant weapon or player XP or just install upgrades directly.
This setting only affects how Gun Bonsai upgrades are treated when dropping and picking up weapons; it shouldn't have any effect on DRLA upgrades. That said, based on your posts elsethread, it sounds like you've tracked this down to a bad interaction between DRLA and Indestructable's time-stop effect, likely GB's Swiftness upgrade as well. A workaround in the meantime, for anyone else encountering this, is to avoid dropping weapons while time is stopped or slowed.RevanGarcia wrote: ↑Sat Aug 26, 2023 8:28 pmIt's in Gun Bonsai's compatibility options: "Weapon upgrades bind to".AliciaPendragon wrote: ↑Sat Aug 26, 2023 6:42 pm Where exactly is that setting? In gun bonsai's options or DRLA's?
I had no problems with Gun Bonsai so far, mine is set to "individual weapon with inheritance".
Gods, I regret implementing Bandoliers just because of how many bad interactions it has. It's practically impossible to write ammo capacity upgrades that don't interfere with each other. On the plus side, while writing this I had an idea for how to rework Bandoliers: instead of touching the ammo limits at all, instead have it siphon off and store ammo when you're nearly full, and feed the ammo back into your inventory when you run low. I don't think that's getting into the 0.10.x series though.
-
- Posts: 229
- Joined: Thu Oct 05, 2017 10:09 am
- Preferred Pronouns: She/Her
- Operating System Version (Optional): NixOS
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
Now, suggestions and feedback.
That said, critical hits are an interesting idea; I've tried to avoid too much randomness, but it might be neat to have as an alternative to the normal Damage upgrade that hits harder but less reliably, with other upgrades that key off crits locked behind it. Not in 0.10 but I think that could a fun thing to add in 0.11+. Might even make sense to move some of the spicier upgrades like explosive shots and submunitions behind it as "on crit" or "on crit kill" effects.
As for XP sharing, note that XP is awarded to your currently readied weapon, so doing things like firing a rocket and switching guns before it impacts, or landing a DoT and swapping weapons, can be a good way to get some extra XP onto a weaker weapon.
Chain Lightning does probably want nerfing (or the other AoE effects buffing, or both). That said, I tend to pick Revivification instead; it may not be as effective, especially in maps with high energy density, but I find it more fun.
That said, my understanding was that knockback is based on damage inflicted, so I would expect the self-damage reduction of Explosive Death and Blast Shaping to already reduce knockback significantly.
This isn't a panacea, but it's hard to make it more tuned since it doesn't know a priori how to value individual rounds, so the best it can do is guess based on how many you're expected to pick up at a time: a standard bullet pickup contains 10 bullets and a standard rocket pickup contains 1, so rockets are 10x more valuable (and thus 10x rarer) than bullets.
Mags/reloading are something each mod has to implement itself, rather than something built into the engine, so code for that would have to be customized for each mod in question. So it's not something that's ever going to be part of Gun Bonsai proper, but if anyone wants to write an addon for a specific mod that does something like that, go for it! I've done my best to make it easy for people to write addons for GB, so they can implement cool mod-specific behaviour that can't go into the core mod.
I'd want to make it configurable (with sensible defaults) rather than hardcoded, but please share the code (or open a PR) if you're ok with me basing the final feature on it; this seems like a good thing to have. It's something I toyed with in early prototypes but eventually went with the current linear setting, but I was also mostly playing on more sedate wads; I gather it rapidly gets kind of silly on slaughtermaps.AndroSynth wrote: ↑Wed Nov 22, 2023 10:28 am One question I had was have you considered adding a non-linear scaling method to the XP needed per level? From my experience, no matter the value put in for score/damage factor, and XP per level, that gaining later levels actually happen more rapidly than earlier levels. I think this is exacerbated by the other mods I'm running in addition, but not only. I think the root cause is that the damage from upgrades grows non-linearly (which not in itself a problem), so the XP must grow accordingly, or fall behind.
To that point, I did tweak your code on my personal version and added in a slight exponential growth factor for each level. That way the levels slow down a bit at higher levels, and I'm incentivized to upgrade my base equipment (with DoomRLA or alternative) rather than sticking to the early guns.
Haven't done so, but I'd be glad to put a proper github pull request up if you have any interest in adding that feature, or can just show the couple lines I changed. If not, no worries, and thanks for the fun!
This would be surprisingly easy to implement on the code side, I think the annoying part would be the UI wiring needed to enable it. Added to the TODO list.
A lot of these just aren't possible to implement in a general way, sadly. For example, shot spread is usually baked into the code used to implement the weapon's fire states, rather than an actor property, and thus needs actor-specific code to override, which can't be done in a generally-compatible way. Same deal with anything around reloading/magazines, extra pellets per shot, range increases.
That said, critical hits are an interesting idea; I've tried to avoid too much randomness, but it might be neat to have as an alternative to the normal Damage upgrade that hits harder but less reliably, with other upgrades that key off crits locked behind it. Not in 0.10 but I think that could a fun thing to add in 0.11+. Might even make sense to move some of the spicier upgrades like explosive shots and submunitions behind it as "on crit" or "on crit kill" effects.
As for XP sharing, note that XP is awarded to your currently readied weapon, so doing things like firing a rocket and switching guns before it impacts, or landing a DoT and swapping weapons, can be a good way to get some extra XP onto a weaker weapon.
This is an ongoing process, and I'll think about your suggestions. I will say that Poison, specifically, really wants a rapid fire weapon, and a pistol won't cut it; you want it on a chaingun or plasma rifle, or something with similar RoF. It really shines when you're landing lots of little hits, in contrast to Acid which is optimized for powerful but slow weapons.
Chain Lightning does probably want nerfing (or the other AoE effects buffing, or both). That said, I tend to pick Revivification instead; it may not be as effective, especially in maps with high energy density, but I find it more fun.
Something I've had kicking around as a backburner idea since the very early version, as it happens. Other ideas include "confetti when you pick up a new weapon/level up/etc", "killed enemies have a chance to rocket into the air and burst like a firework", and "an unlockable hint system full of useful tips like 'try to avoid dying' and 'shoot enemies to damage them'". There's just always something else to work on first -- either bugfixes and gameplay features, or different projects entirely.
Huh. I've never seen that, but I'll experiment with it. It's not an upgrade I use a lot, to be honest.RhythmCorvid wrote: ↑Tue Dec 05, 2023 10:16 pm 6) HE Shots/Explosive Damage Knockback reduction
Explosive Death has a tendency to launch you to the ceiling of whatever map you're on if you're too close.
That said, my understanding was that knockback is based on damage inflicted, so I would expect the self-damage reduction of Explosive Death and Blast Shaping to already reduce knockback significantly.
For me I think this is actually my favourite of the three Scavenge perks! It usually results in me having more ammo than I know what to do with, which means I can spent it more profligately to avoid losing health or armour in the first place. That said, the rocket/clip dichotomy is already taken into effect, as best I can -- basically, it defaults to dropping ¼ as much ammo as a normal ammo pickup, and if this results in fractional ammo it rolls dice about it. So the comparison is between "2-3 bullets" and "25% chance of getting a rocket (and 75% chance of nothing)".RhythmCorvid wrote: ↑Tue Dec 05, 2023 10:16 pm 7) Scavenge Lead Boost
- This perk doesn't really benefit you as much as Scavenge Steel or Scavenge Blood per level, because of the fact that pickups aren't equal. One rocket is much bigger than a clip that has two bullets in it. I think dropping full-sized drops might be the solution here, but letting the cap for Scavenge Lead be 2-3, or something.
This isn't a panacea, but it's hard to make it more tuned since it doesn't know a priori how to value individual rounds, so the best it can do is guess based on how many you're expected to pick up at a time: a standard bullet pickup contains 10 bullets and a standard rocket pickup contains 1, so rockets are 10x more valuable (and thus 10x rarer) than bullets.
-
- Posts: 878
- Joined: Tue May 07, 2019 12:24 pm
- Graphics Processor: nVidia with Vulkan support
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
there are a few things ive thought about for the progression curve.AndroSynth wrote: ↑Wed Nov 22, 2023 10:28 am One question I had was have you considered adding a non-linear scaling method to the XP needed per level? From my experience, no matter the value put in for score/damage factor, and XP per level, that gaining later levels actually happen more rapidly than earlier levels. I think this is exacerbated by the other mods I'm running in addition, but not only. I think the root cause is that the damage from upgrades grows non-linearly (which not in itself a problem), so the XP must grow accordingly, or fall behind.
settings like
-XP multiplier exponent per level. (XP = XP * level * multiplier)
-Perks per level. (multiple picks per level up or at certain level intervals, like 2 picks every 5th level)
-Min level requirements for certain perks. (Perk Tiers)
-Maximum caps on certain perks too.
it would probably be a bit of work to add these functions though.
-
- Posts: 229
- Joined: Thu Oct 05, 2017 10:09 am
- Preferred Pronouns: She/Her
- Operating System Version (Optional): NixOS
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
Perk requirements are actually pretty easy to add; the hooks are already there for the functionality that checks if a given perk is compatible with your current weapon and that you have all the prerequisites for it. Indeed, a bunch of perks already have level caps, usually because it either stops improving or gets way too powerful after a certain point. Nothing has a minimum level requirement yet but it would be trivial to add, a literal one-line change in most cases.
Exponential XP scaling, similarly, only requires changing one thing (well, plus all the UI/localization/documentation/MENUDEF changes), WeaponInfo::GetXPForLevel(). At the moment the scaling is triangular, i.e. the cost to go up a level increases by a constant amount per level and the total cost to reach level N is (base_cost * (N²+N)/2). It would not be difficult to incorporate an exponential term instead of, or as well as, the quadratic term. 0.11 changes some of this code but in ways that mostly make it easier.
Varying how many upgrades you get each level is easy to implement in principle (once again the changes only need to be made in one place, Registry::GenerateUpgradesFor*()), but I am at a loss to make configuring it a reasonable experience.
Exponential XP scaling, similarly, only requires changing one thing (well, plus all the UI/localization/documentation/MENUDEF changes), WeaponInfo::GetXPForLevel(). At the moment the scaling is triangular, i.e. the cost to go up a level increases by a constant amount per level and the total cost to reach level N is (base_cost * (N²+N)/2). It would not be difficult to incorporate an exponential term instead of, or as well as, the quadratic term. 0.11 changes some of this code but in ways that mostly make it easier.
Varying how many upgrades you get each level is easy to implement in principle (once again the changes only need to be made in one place, Registry::GenerateUpgradesFor*()), but I am at a loss to make configuring it a reasonable experience.
-
- Posts: 8196
- Joined: Sun Jan 28, 2007 3:55 pm
- Preferred Pronouns: He/Him
- Location: QZDoom Maintenance Team
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
Is there any ability to add XP on kill? Or is it all via damage? For my mod Triple M, I'd prefer it be on kill but first I need to figure out how to add monsters to a list to give exp for. Seems right now I'd just be doing SendNetworkEvent on monster death.
I'm assuming the bonsai-debug,w-xp <xp> is for weapons and p-xp for players?
I'm assuming the bonsai-debug,w-xp <xp> is for weapons and p-xp for players?
-
- Posts: 158
- Joined: Thu Sep 03, 2015 10:45 pm
- Preferred Pronouns: No Preference
- Graphics Processor: Intel (Modern GZDoom)
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
This idea can be achieved by using LossForWords's Hotline Doom minimod, setting xp gain by damage to lower or 0, and setting xp gain by score to any value.Major Cooke wrote: ↑Wed Dec 20, 2023 10:51 pm Is there any ability to add XP on kill? Or is it all via damage? For my mod Triple M, I'd prefer it be on kill but first I need to figure out how to add monsters to a list to give exp for. Seems right now I'd just be doing SendNetworkEvent on monster death.
I'm assuming the bonsai-debug,w-xp <xp> is for weapons and p-xp for players?
-
- Posts: 2
- Joined: Tue Dec 05, 2023 5:45 pm
- Preferred Pronouns: She/Her
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
7) Scavenge Lead Boost
I've been thinking about this a bit, what if you used fractional big pickups? 1~n stacks of scavenge lead guaranteed to drop 1 large pickup of 10~100% quality or something, and since it's a large pickup it is roughly the same to the game? Since big pickups are more consistently ammo dense it gives you more room to start your floor and increase your ceiling. I do end up taking enough stacks of scavenge lead where it doesn't matter, but I have to admit killing an enemy to get two bullets back just feels meh. Maybe something based on ammo pool of the gun (since different mods change the max ammo, as does bandoliers. Making that increase ammo (or making pickups more valuable as an entirely separate perk) per pickup could help if it doesn't already.) and doing something there? Spitballing, not looking to give concrete suggestions, just ideas. Or maybe using the builtin actor for bonsai to just roughly assign minimums to the the rolls, so like if it's in slot 5, 1/4 or 1, if it's in slot 2 or 4, 1/4 or 4.
I've been thinking about this a bit, what if you used fractional big pickups? 1~n stacks of scavenge lead guaranteed to drop 1 large pickup of 10~100% quality or something, and since it's a large pickup it is roughly the same to the game? Since big pickups are more consistently ammo dense it gives you more room to start your floor and increase your ceiling. I do end up taking enough stacks of scavenge lead where it doesn't matter, but I have to admit killing an enemy to get two bullets back just feels meh. Maybe something based on ammo pool of the gun (since different mods change the max ammo, as does bandoliers. Making that increase ammo (or making pickups more valuable as an entirely separate perk) per pickup could help if it doesn't already.) and doing something there? Spitballing, not looking to give concrete suggestions, just ideas. Or maybe using the builtin actor for bonsai to just roughly assign minimums to the the rolls, so like if it's in slot 5, 1/4 or 1, if it's in slot 2 or 4, 1/4 or 4.
-
- Posts: 229
- Joined: Thu Oct 05, 2017 10:09 am
- Preferred Pronouns: She/Her
- Operating System Version (Optional): NixOS
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
Yeah, w-xp grants XP to the currently wielded weapon and p-xp to the player. Note that under normal circumstances player XP is granted automatically as the player levels up weapons.Major Cooke wrote: ↑Wed Dec 20, 2023 10:51 pm Is there any ability to add XP on kill? Or is it all via damage? For my mod Triple M, I'd prefer it be on kill but first I need to figure out how to add monsters to a list to give exp for. Seems right now I'd just be doing SendNetworkEvent on monster death.
I'm assuming the bonsai-debug,w-xp <xp> is for weapons and p-xp for players?
That said, you shouldn't use those for mod integrations. A better choice is to set the bonsai_damage_to_xp_factor cvar to 0, bonsai_score_to_xp_factor to 1, and then just give the player points equal to the amount of XP you want them to gain, by increasing the "score" field on the PlayerPawn when they kill something (or, less directly, spawning an appropriate ScoreItem when something dies that the player can then pick up).
It worked in Hedon last time I tested it, but Hedon has also gotten a massive update since then, so I'll have to check again. I don't remember having to do anything special to get it working but you do need to load it in the version of gzdoom that comes with Hedon, rather than trying to load Hedon in your own gzdoom install.
-
- Posts: 8196
- Joined: Sun Jan 28, 2007 3:55 pm
- Preferred Pronouns: He/Him
- Location: QZDoom Maintenance Team
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
Ah, scoreitem is a thing? Okay. I'll try that. Thanks!
-
- Posts: 229
- Joined: Thu Oct 05, 2017 10:09 am
- Preferred Pronouns: She/Her
- Operating System Version (Optional): NixOS
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
Looked into this a bit more. It looks like Hedon is still based on an older version of gzDoom, which in particular is missing two features I use:
- `WorldEvent.NextMap` in the LevelUnloaded, used by an upcoming version of Indestructable
- `+DONTFOLLOWPLAYERS` monster flag, used by the new Revivification behaviour introduced in 0.10.0.
This means I've also broken lzDoom compatibility. Sigh.
Neither of these would be difficult to backport from gzDoom into lzDoom and hDoom, but I don't want to open the wormcan that is maintaining additional forks myself, and it would be a dick move to run around pestering Rachelle and drfrag to cut new releases of projects they're done with just to support my mod.
The use of NextMap in Indestructable is just a small eficiency thing, and since it only matters when you're leaving a level it's not a big deal to drop that entirely, which should restore both lzDoom and Hedon compatibility. For Gun Bonsai, I added that to stop your reviv'd minions from cuddling up to you when not actively involved in fighting, but with the short unsummon timer now it might be less of a problem; I'll test it out. Hedon support isn't a high priority for me but I would at least like to retain compatibility with lzDoom -- although sooner or later I expect that to become impossible.
Documented here. Bonsai's score-based XP just reads the player's 'score' field, so anything that increases that will work once the cvars are set appropriately.
-
- Posts: 8196
- Joined: Sun Jan 28, 2007 3:55 pm
- Preferred Pronouns: He/Him
- Location: QZDoom Maintenance Team
Re: [0.10.4] Gun Bonsai -- everything-compatible weapon upgrading
I'll see what I can do for that soon.
Any chance you could introduce service into your mod? Some mods might make use of Score and ScoreItem for different things. Using Service classes will provide seamless integration for others and minimize conflicts.
Any chance you could introduce service into your mod? Some mods might make use of Score and ScoreItem for different things. Using Service classes will provide seamless integration for others and minimize conflicts.