Missile Explosions and Hull Damage Detection
-
I agree that it’s a terrible solution.
I have no clue about modelling and surs, but is there someway to make ‘multiple’ centers for the ship model so that the explosion can hit one center but still damage the entire ship?
As an afterthought (and not likely a favorable option), I guess you could also have shields act as the hull of the ship. For example, give your large ship a shield that does not regen (or is very slow), and a very low hull strength. That way, missiles will still cause damage to the ship, wherever they hit. Once the shield goes down, a couple shots is enough to destroy the ship.
Another option, but again, its really not a viable option unless you want to rework all your ship setups.
-
Sadly, I don’t think we’ll ever get a fix for this
-
I’ve been unsuccessful in trying to test this with the vanilla game. Changing Flint to use the Osiris and Javelin’s [Explosion] radius to 0.001, full damage still occurs (hitting in the center, as well as at each end). Thinking there may be a difference between ship and solar, switched the DA_archetype of the Bloodhound to the Osiris, same result. Is there another radius I need to change, or is it particular to custom ships?
-
I’ll wager it’s another MP-only issue.
-
This has been bugging me with non custom ships like the liberty dreadnought, rheinland battleship, etc.
From your post, adoxa, are you saying you got a 0.001 radius missile to do full damage to an osiris? because that IS basically what i want…did you change anything else besides the radius? or did i read your post wrong?
-
sona1111 wrote:
so theirs no way to make something like a…tracking gun bullet? Has properties like a gun weapon but tracks like a missile?The only way would be to make all your guns into missiles, but allow them to use the gun’s const_effect rather than the missile’s effect. Something like this:
[Motor]
nickname = admin_gun01_motor
lifetime = 0
accel = 0
delay = 0[Explosion]
nickname = admin_gun01_explosion
effect = gf_li_cruisedisruption
lifetime = 0, 0
process = disappear
strength = 100
radius = 10
hull_damage = 1000
energy_damage = 200
impulse = 0[Munition]
nickname = admin_gun01_ammo
explosion_arch = admin_gun01_explosion
hp_type = hp_gun
requires_ammo = false
hit_pts = 500000
detonation_dist = 15
lifetime = 25
motor = admin_gun01_motor
force_gun_ori = false
one_shot_sound = fire_no1
const_effect = ci_laser_02_proj
HP_trail_parent = HPExhaust
seeker = LOCK
time_to_lock = 0
seeker_range = 20000
seeker_fov_deg = 180
max_angular_velocity = 20
cruise_disruptor = false
DA_archetype = equipment\models\weapons\li_rad_missile.3db
material_library = equipment\models\li_equip.mat
mass = 1
volume = 0[Gun]
nickname = admin_gun01
ids_name = 123456
ids_info = 123456
DA_archetype = Equipment\models\weapons\no_fighter_gun.cmp
HP_child = HPConnect
hit_pts = 5000
explosion_resistance = 1
debris_type = debris_normal
parent_impulse = 20
child_impulse = 80
volume = 0
mass = 10
hp_gun_type = hp_gun_special_1
damage_per_fire = 0
power_usage = 100
refire_delay = 0.25
muzzle_velocity = 700
toughness = 25.4000000
projectile_archetype = admin_gun01_ammo
separation_explosion = sever_debris
auto_turret = false
turn_rate = 180
lootable = false
LODranges = 0, 20I think you can also add a secondary set of hull_damage and energy_damage values in the [Munition] section (guns have them here) so you don’t have to rely on the explosion to do the damage.
-
no, i was saying to do it in reverse. The problem is with the missiles, the guns work ok. If the hit detection could work like the gun bullets do (they dont need a radius to register damage), then all the rest of the stats could work like a missile.
in an unrelated question: does anyone know what that “strength = 100” in the explosion means?
-
Took a different approach, using the mission Rheinland battleship (MSN_d_r_battleship) as Flint (suprise_pi_freighter). In SP, with a radius of 0.001, hits were taken everywhere, except for the very front; restoring 16, even the front took hits. In MP, I see what you mean - it is very particular as to where it takes damage. I’ll have more of a play later, but don’t get your hopes up.
Strength isn’t used, ignore it (I’ll delete them with the next release of JFLP).
-
It would appear missiles deal damage only to the center of a group. If the model is multi-part, it will deal damage to each part whose center is within the radius of the explosion.
I wonder if there would be a way to change this so that it uses the same method as guns…
-
FriendlyFire wrote:
It would appear missiles deal damage only to the center of a group. If the model is multi-part, it will deal damage to each part whose center is within the radius of the explosion.I wonder if there would be a way to change this so that it uses the same method as guns…
Thats what i was saying…
Can you simply change it to “type = gun” somehow, but keep the motor, tracking, FX, etc?
-
No.
-
So, maybe make a model that is made of many small(so that the centre is easely accessible by explosion)collision_groups, give them the same hit_pts as the root(a very small .cmp for the root), proper fuses, root_health_proxy = true and here you go/
It will take a lot of time, but no visible changes will be seen after and it should work(at least for npcs, as they will fire only at the centre of the ship model), also will work for players with some limitations.
BTW, afair you can assign a fuse through collision group to the hole model.
Also the collision_groups may be superfacial only = less work + working variant. -
Collision groups are the reason that the problem is arising for me. I am creating a massive FX pack that is based on damage-per-section and it all works out great except if their is a problem with the missile/torpedo splash damage carrying over to mutiple collision groups and giving bonus damage. (up to 8 times as much in some places)
-
This is indeed a very annoying problem that we’ve been struggling with in Flak for quite some time. So far, I’ve simply tried to find a balance in a sufficiently high explosion radius that does not sacrifice fighter balance in the process.
One thing that may be worth looking into, however, is moving the hull_damage and shield_damage entries on your missiles/torpedoes from [Explosion] to [Munition], without changing any other properties of the missile. I haven’t had time to extensively test this, but it seems to allow guided munitions to damage any part of any craft only once - however, it also sacrifices any splash damage, which can be a large balancing part of most ordinance (twin-torpedo Stealth Bombers would be crazy overpowered in Flak if they were able to bomb at close ranges without killing themselves). I’m not sure if it still takes detonation_dist into account (so if the missile is set to detonate16m from the target, I don’t know if it will still damage the target from that range or if it must physically hit the target), and of course at the end of the day it’s still a sloppy workaround.
I think M0tah was originally intending to look at a Hook-side solution for this, but I’m not sure what his progress was - he’s been busy as of late and hasn’t had time for FLHook work. Adoxa, you said ordinance still returned a specific damage type (16) even though it didn’t always damage the craft?
-
Maybe instead of moving both shield and hull damage just move the hull damage to the [Munition] entries (Since Shield damage still works). Or leave the [damage] entry and balance the damage out between the munition and damage (So you have the splash damage and not an overly damaging weapon).
-
Decided to investigate the issue; here’s what I found.
0x0C->0x00 in server.dll, 0x960C = fixes explosion damage at full strength ```This should fix the issue (it has in my testing so far). Explanation FL hardcodes three different multipliers of damage for explosions - 1, 2/3, 1/3, and 0, depending on how far away from the center of the object the explosion is. As far as I can tell, this is computed using the following mapping: Distance^2 -> Strength <= (Explosion radius)^2 * 0.1111… -> 1 <= (Explosion radius)^2 * 0.4444... -> 2/3 <= (Explosion radius)^2 -> 1/3 > (Explosion radius)^2 -> 0 So when the hit is farther than the explosion's radius away from the root of the ship, no damage is dealt. The above hack fixes the multiplier at 1 regardless of the distance.