nrlulz / ACF

Combat damage system for Garry's Mod
110 stars 116 forks source link

HE Projectiles: Fuse #32

Open Fervidusletum opened 11 years ago

Fervidusletum commented 11 years ago

I've noticed there's some existing code for fused projectiles; I was wondering if there is a reason that HE shells don't take advantage of this for airbursting. Are there any potential balance issues? Airbursting HE 203mm HW on aircraft or above tanks? I know it would be useful for smaller caliber weapons as anti-air.

My only concern is how the user sets the time delay on the fuse.

A wire input on the gun doesn't make much sense: assuming only HE rounds are fuse-able, do we always have the wire input on the gun? If the input is only when the HE round is loaded, what happens when round type is switched?

A wire input on HE ammo crates makes a bit more sense, but is a bit clunkier: say the user has to use 4 crates to fit all their ammo, then they have to wire each crate.

Fusing could be set with other settings during ammo creation in the tool. This I think would be more realistic (I assume fuse delay couldn't easily/rapidly be set on the fly, in the 40s-60s). It would also make it far more difficult for large caliber, slow firing weapons to be used as AA, due to unload/reload speeds to get the best appx. fuse delay.

Using e2 functions, say Gun:acfSetFuse(timedelaymillis), is another option, but excludes users who don't e2.

Bubbus commented 11 years ago

Frankess added some fusing code a while ago, but I'm not entirely sure how it works. Might be an ammo attribute?

There was some discussion about flak shells a few weeks ago, timed HE with some spalling at the point of detonation, would be great for AA and AT airburst, but you have to get the standoff right because the timer is an ammo attribute. The mentioned guideline was ~15-20mm spall penetration for an 88mm shell. If you want to create that ammotype, we can throw it into master with the flechettes.

Fervidusletum commented 11 years ago

Fusing is available for any ammo type, just define "FuseLength" in the bulletdata (can be set at ammo creation or when a round is fired via functions defined in ammo).

From what I understand flak shells were mostly HE, fired from autocannons (e.g. bofors) or artillery (e.g. flak-88). With a large plate, 75mm HW HE shells have around 13mm pen from the explosion, plus 12mm pen from fragmentation (source is debug prints from the damage function). I'm not sure a new ammo type is necessary. However, if folks want a new ammo type instead of fused HE, the spalling function could be adapted for use as a fragmentation round.

As a side note, one thing I noticed is that HE damage is not distance dependent. It seems that full damage is split between props based on the relative sizes of the 'blast shadows' that props in the blast radius cast. A single prop will receive the entire damage of the explosion, as if the explosion was directed only at the prop. A prop will take full damage even if it is barely inside the blast radius, but once just outside the blast radius, no damage is taken. Perhaps this is a topic for a new issue, though.

Amplar commented 11 years ago

Setting fuse length in ammo creation...? this seems incredibly pointless, as aircraft are usually at different altitudes. Guns need a fuse input for this.

Fervidusletum commented 11 years ago

Yes, having 1 box of ammo with all the same fuse length would be rather pointless...

My thinking on the option of having fuse set at ammo creation was that there'd be multiple boxes of ammo the user would create, with different fuse times for each box. The intent was to introduce a bit of strategy, instead of 1 size fits all crate with a simple delay algorithm e2 and then fire until empty.

Instead, the user would have to decide if they want to reload for a new fuse time, or wait for the target to get to the right distance. Also, there would be some strategy in picking the amount of ammo to haul for each timing and the number/distribution of timings, and perhaps in ammo conservation if you're running out of ammo for a certain fuse length. Another strategy element could be forcing the user to choose between timed and impact detonation for their HE ammo.

An alternative option that achieves some of this would be to introduce a short firing delay every time the fuse length is changed via input, perhaps?

Bubbus commented 11 years ago

Being able to set the fuse time of shells with an input is probably OP, it lets you top-attack tanks pretty easily. This is one of the major arguments against flak munitions. However if you have to reload your weapon to make the new fuse time take effect it'd probably balance out. Makes sense too cause you'd have to unload all the old shells and replace them with the new ones. Weapons without magazines would have unaffected fire rate if you change fuse length during reload after firing. However setting fuse length as an ammo parameter is great for two things: realism within the 50s era and very easy implementation.

Redreaper commented 11 years ago

Proximity fuses would be good, simply a forward rangerhull based off shellcaliberXmultiplier. I'd like to see airburst artillery. Reloading makes a lot of sense, I do think you're onto something.

xznhj8129 commented 5 years ago

Have we made any progress on timed and/or proximity fuses? We would absolutely need the ability to set the time delay for every shot, because a plane's distance changes rapidly. Proximity (VT) fuses are much more powerful than timed, but not always fun for balance reasons.