Reason for me asking so many questions lately, I am working on a project to do a number of things. I'll skip the explanations and whys (later) and give you the really short version.
I was unhappy with the damage mod formula, and looked for a fix. Examined the different solutions (glovz, YAAM), felt they had some limitation I didn't like, wanted something more flexible and customizable. 5 years later, I know enough to be able to do it.
It started as a desire for a simple damage mod fix, but has now grown to more. Mainly cause I realized fixing a damage formula alone cannot address all the problems. And also I wanted extra niceties.
Things I'm planning to do as part of this project:
- Rewrite the whole damage formula
- Add a DT modifier as a dedicated modifier for ammo
- Add custom damage type for ammo
- add custom penetration for weapons (any weapon can have its own value, no longer limited to weapon_penetrate perk. can apply to either or both DT and DR)
- Custom critical chance modifier for weapons (as in Fallout Tactics)
- Custom tohit chance modifier for weapons (no longer limited to +20 weapon_accurate perk)
- AC modifier for weapons (just like ammo)
- Custom knockback for weapons
- Weapon Primary and Secondary modes can have different stats
- Option for Bonus Ranged Damage to be +15% instead of +2 (As in Fallout Tactics)
- Option for Bonus HtH Damage to be be +15% instead of +2 (As in Fallout Tactics)
- Option for finesse to to be better (still conflicted)
- Address the problem of Sniper perk and bursts all bullets critical all penetrating
- change armor bypass mechanic (always 80% versus stepped)
- A general quick fix for laser resistances.
- Modular, fully customizable through ini file. can add weapons, turn features off and on.
- Compatible with RPU, Fo2tweaks, sfall 4.x, and likely ECCO mod
The above would be an engine fix. So it can be molded and used as a platform for any mod. It wouldn't be a fixed presentation. So weapon data can be customized and new weapons added should a modder want to do that.
As a complementary project
- Redo weapons
- Redo ammo
- Fix all critter resistance stats
- Fix weapon progression in the game
- Get rid of bunch of BS in the game (combat wise)
Yeah. Anyway. That's most of my objective list. That's what I'm working on.
Thanks for reading.
Hello everyone, and especially
@Cyrus!
First let me say, that I greatly enjoy your attempt to fix and improve several aspects of the game.
You addressed very important points that seem to be very important to work on and I think I don't speak for myself alone, that finding solutions for most of the items you are mentioning, is, has been and I also guess, will be a persistant thing for many players and modders of the game.
As I'm too working on an ongoing WIP-modding project to improve my game to a desirable state I would say that I have also come to the point where I solved almost all the things I marked necessary for myself (and just need time to finish all the edits).
For your specific points I want to throw my two cents, hopefully being of some help too.
Lets start with
# Add custom damage type for ammo
Ecco adds 40mm Incendiary Grenade ammo, dealing fire damage when loaded.
It does that with its
hs_afterhitroll.int hook script and works for other ammo too.
Based on that I created
EMP ammo for Grenade Launcher, Rocket Launcher and Shotguns (yay!)
works about 95% as desired, only missed shots and bursts that hit a different critter than the initial one cause normal dmg though. Would luv to have someone helping me with this by looking over the scripts. I had to find a work around for an area-of-effect-dmg behavior on missing with the shotgun and solved it somehow but I cannot say what exactly did fix it in the end. (so remember this if you find funny lines due to my limited scripting skills)
If anyone knows how to remove the normal-dmg-on-missing behavior I would be very grateful.
The script also contains added lines for a modified version of Ecco's stealth attack feature, which were needed to make that stealth feature work with selected weapons (mostly recognizing weapons in both hands).
Therefore, I created "silent" weapons (by adding them into a conditions line) and gave a huge bonus with former useless silent_death-perk.
(see PMOD_EMP_DMG_AMMO_AND_SNEAK_ATTACKS.rar)
script contains proto numbers from added items (610-641: EcCo, 642-768: PMOD)
# Custom knockback for weapons
Eccos wonderful scripts
hs_combatdamage.int and
hs_itemdamage.int make this work with every desired weapon by using hook scripts also.
In addition several other game effects are possible. Ecco uses this for item-specific knockout- and stealth attacks.
I expanded this by using loose_turn effect to create stat-related stun weapons like a
flash grenade (yay!) or stat-related knockdown effect for a heavy cannon. Also fo2tweaks adresses this by changing all knockback effects to 0 hex in its gl_g_knockback.int script, effectively removing its annoyance.
(see PMOD_CUSTOM_KNOCKOUT_KNOCKBACK_STUN GRENADES.rar)
script contains proto numbers from added items (610-641: EcCo, 642-768: PMOD)
Maybe, also custom AC or tohit or even critical chance modifier might be possible with that...
# Option for finesse to to be better (still conflicted)
The
Perks.ini from sfall modderspack allows for editing many perks and traits. There you can easily change the value for finesse.
The
gl_perkadjust.int script from sfall modderspack too at least lets you set the swift learner perk to 20%, also applies a heave_ho! fix, and lets you change values of pyromaniac, rad_resist and poison_resist perks. If someone wants to put their hands on other hard codes perk effects that would be awesome (looking on you, adrenaline_rush_perk..)
I edited many perks'n traits to better performance and balance, together with a few new ones and put them, together with the concerning frms and a
line-counted SKILLDEX.LST file to the download.
(see PMOD_CHANGED_PERKS_AND_TRAITS.rar)
# Change armor bypass mechanic, problem with sniper and burst, Bonus Ranged Damage to % than flat...
Maybe you'll find some of these points in the
gl_g_damage_mod.int from fo2tweaks.
It introduces a new damage formula by global script and may give some options to add things like that. There you definitely can set a custom penetration value and maybe can add +% ranged damage. I even think that it claims to have solved the sniper criticals with burst but I'm not sure. Honestly I decided against using it because I cound't find a sweet spot for consistant JHP/AP transition. (Looks like it doesn't have one..)
And well, I balanced my sniper_perk with 130 skill requirement in small or energy guns so it doesn't work with big burst guns or burst builds in general without some effort..
Which bringst me to another point, the everyones favorite...
# damage formula and JHP/AP fix
having tested YAAM and Glov'z I finally came to the conclusion that they do not produce consistent results when transitioning from jhp to ap ammo with different weapons, armor and caliber. Shocker.
With consistant results I mean a transition from jhp to ap getting superior generally on the same border (I prefer leather armor mk2 to metal armor) and jhp strongly falling off against power armor (I prefer getting almost useless). This contains as well a realistic shotgun-dmg-against-armor behavior. Without consistance, proper balancing and progression flow doesn't seem to be possible. (With YAAM, weapons of higher dmg seem to benefit too much from jhp caliber, rendering ap ammo almost useless again..)
While I know, everyone loves them, I came to reason, that the Weapons Redone Mod, by using the original formula and adjusting just a few weapon, ammo and armor stats, does indeed produce these results more consistently and gives the right amount of control with its simplicity. Watch the numbers in the
PMOD_AmmoArmorValues.xls I use for my own balancing calculations if you may. (with credits to Magnus's orig .xls)
It also does provide good laser resistance results as same to other more exotic resistances.
Also useful is Magnus's
gl_update_map_objs_from_proto.int script, which instantly applies changes to map objects. (see UPDATE_MAP_OBJ_FROM_PROTO.rar)
Note to mention some other things that might come in handy:
# Ecco Barter Script (
hs_barterprice.int)
Ecco does a fine job by using a barter script to adjust
buying and selling prices together with other modifiers like charisma, town reputation AND a
demand system for locations to simulate economy. While the premade formulas did not create good results I took the time to adjust the numbers to what feels like a perfect state. Some corner details:
+ selling value does not go above buying value and both meet at barter=300
+ price ratio escalates from Klam to San Fran in reasonable (blance-wise: hard) way:
8:1(KLA) to 15:1(SF) with barter=0, 3:1(KLA) to 5:1(SF) with barter=100
+ starting from ~barter=100 it is possible to do profitable trade runs between cities with existing trade routes and goods (hides, drugs, meds, gold,...)
+ items in demand are designed to match lore and local aspects (meds cheap in VC, skins cheap in Klam and vice versa,...)
(see PMOD_BARTER_FORMULA.rar)
# Fix Unarmed costs
Ecco also introduces a script (
hs_calcapcost.int) to adjust AP-costs of unarmed attacks.
Its decision to make all basic punches 3 AP and basic kicks 4 AP, together with +1 AP to the
coresponding special attacks feels natural and gives good results.
(see FIX_UNARMED_COSTS.rar)
For game flow and misc stuff I adjusted some scripts.
For example I find the costs of the
Highwayman way too pathetic and made it
10000$ instead. You can change it to whatever you like, though.
Or the fact that Randall in VC attempts to prove your
false citizenship papers, but the computer does not recognice the fraud. I fixed this by adding some lines and made him to "thank you" for "delivering" the stolen papers, confiscating them and eventually
refusing to trade with you until you get regular citicenship and so enhancing the game flow with later access to advanced gear.
I also created a new
Trader Willy formula which does take your
Luck as also barter skill into account than solely Luck, thus improving the barter skill, creating reasonable prices and giving it some more flexibility with different builds. All in the downloads. Scripts
dcsmitty.int and
ectrader.int are based on Ecco's scripts. The dcsmitty.int does contain proto numbers from added items (610-641: EcCo, 642-768: PMOD)
(see PMOD_CAR_10000_$.rar, PMOD_RANDALL_NO_FALSE_CITIZEN_PAPERS.rar and PMOD_TRADER_WILLY_SCRIPT.rar)
Thinking about Luck itself I am thinking about adding a formula to bring this into some random number generations like they are used to calculate merchant inventar and stuff. Simply adding
"* (random (8, 12))/10 * ((7+(LU/2))/10)" would create a 20% luck modifier to these calculations. But I don't know if the engine already does this hardcoded, nor have time for expanded tests. All my smaller scale tests haven't shown any effect of Luck on the original game's standard randomization. Does anyone can confirm this by chance?
Oh, and I fixed the
environmental armor by renaming some wrongly named frms, copying them for missing animations and creating an entry in the npcarmor.ini for NPCs. Still needs to be added into the game manually as the latest RP 2.3.3 did decide against. (see PMOD_ENVIRONMENTAL_ARMOR FIX.rar)
For game progression I strongly recommend to closely check the worldmap.txt edits, as even with FWR or the glorious Ecco mod critters equipment sometimes do not match their animation frms sets or still carry easy to take end-game weapons (looking on you, Prospectors or San Fran Caravan...).
While doing that I'd strongly recommend to remove all money from random critters. Better replace them with basic melee weapons and you not only halfway-solve the money problem, but also increase critters fighting capabilities when running out of ammo and stuff.
Well, using Ecco's adjustable
combat.ini and related
hs_ondeath.int script, which make critters get stripped off from some gear on death, helps there too. (also in PMOD_CUSTOM_KNOCKOUT_KNOCKBACK_STUN_GRENADES).
That's for now. Hope you find something usefull inside this humongous wall of text..