Ahli / sc2xml

11 stars 1 forks source link

Shield battery healing visible through fog of war #121

Open feardragon64 opened 11 months ago

feardragon64 commented 11 months ago

See clip:

https://clips.twitch.tv/DirtyFineChinchillaDogFace-6edi_Nk4Ho14iZkU

Shield battery healing units is visible through fog of war.

Ahli commented 11 months ago

The actor is ShieldBatteryRechargeEx5@ImpactActor. It is set to be hidden in fog, but it also inherits visibility from its host, so that setting is overridden. But I am not sure why it actually becomes visible. I guess that it probably cannot inherit it from the beam actor (which is set to be property host) and falls back to being visible.

Not inheriting the visibility makes the impact model "standalone" in that aspect, so it is like any other model and becomes visible once its model's visual radius touches a vision radius.

    <CActorModel id="ShieldBatteryRechargeEx5@ImpactActor">
        <Inherits index="Visibility" value="0"/>
    </CActorModel>

When I test it recharging an Archon, the model is visible before the Archon itself. This isn't great, if it is too noticeable. Medivac's healing beam has the same issue (if I remember it correctly), so if the difference is tiny, this is fine.

To make the impact of this smaller, the visual radius needs to be overridden. The default value is the radius of the bounding sphere, so 2.388. image

During tests, 0.5 looks good on an Archon since both models look like they appear at the same time. So, this should be changed as well:

    <CModel id="ShieldBatteryRechargeEx5@ActionImpact">
        <RadiusLoose value="0.500000"/>
    </CModel>

While testing, I noticed a few more issues:

test map with fix in actor + model data