Players are sometimes unable to fire or reload AT guns

Issue #450 new
Colin Basnett created an issue

Note how there is no ammo switching indicator in the screenshot.

Comments (6)

  1. Colin Basnett reporter

    Upgrading this to a blocker bug as it has been encountered many times in recent testing. This seems to be client-dependent. I will update with more specifics soon.

  2. Colin Basnett reporter

    Okay so, the bug manifests completely client-side. Two different players can get on the same gun, one will be completely fine and the other will be bugged.

  3. Matt Hands

    The missing parts on the HUD display in the screenshot (ammo text & selection indicator, plus greyed out 'turret' icon in the clockface) are caused by HUD function DrawVehicleIcon() not being able to set its Cannon local variable, which is from the CannonTurret actor reference in DHArmoredVehicle class.

    The only way that can happen is the armored vehicle doesn't have the cannon weapon pawn or that weapon pawn doesn't have a its cannon actor reference ('Gun') or that isn't an ROTankCannon class.

    So I think either a crucial class is missing from that client (hard to see how, as the player can see the turret and I'm told can crew the gun) or one of the crucial actors hasn't managed to set its reference to another crucial actor. But I can't see how.

  4. Matt Hands

    I am hopeful that this will have been fixed by commit f717bcf.

    Please keep an eye out for any cannon fire or reload problems. I doubt this is specific to AT gun, so watch any kind of vehicle cannon. Most importantly: if you see a bug or hear a player report one, then use or get them to use debug exec 'LogCannon' and paste the results here. I have added extra information to that debug tool.

  5. Matt Hands

    For the record, note this is a completely separate issue to an older cannon fire bug that is covered and fixed in ://bitbucket.org/darklightgames/darkesthour/issues/313/players-are-sometimes-unable-to-fire-guns (vehicle + AT guns). That bug was caused by a problem with the clientside value of bClientCanFireCannon and dates back to RO. This bug appears to be caused by occasionally missing actor references.

  6. Matt Hands

    I have left debug exec LogCannon in for the 6.0 release, which will work in any mode as it's completely harmless. If we see or hear of any apparent cannon can't fire bugs, we should run this or get the affected player to run it, and then report the results from the log. All the exec does is log a list of potentially relevant clientside properties. There's no longer any server stuff or replicated function call.

    Unless we see a problem in the next day or two, I think this issue can be closed.

    For info, here's the debug exec:

    exec function LogCannon() // DEBUG (Matt: please use & report if you ever find you can't fire cannon or do a reload, when you should be able to)
    {
        Log("LOGCANNON: Gun =" @ Gun.Tag @ " Cannon =" @ Cannon.Tag @ " Gun.Owner =" @ Gun.Owner.Tag @ " Cannon.CannonPawn =" @ Cannon.CannonPawn.Tag);
        Log(Tag @ " CannonReloadState =" @ GetEnum(enum'ECannonReloadState', Cannon.CannonReloadState)
            @ " bClientCanFireCannon =" @ Cannon.bClientCanFireCannon @ " ProjectileClass =" @ Cannon.ProjectileClass);
        Log("PrimaryAmmoCount() =" @ Cannon.PrimaryAmmoCount() @ " ViewTransition =" @ IsInState('ViewTransition')
            @ " DriverPositionIndex =" @ DriverPositionIndex @ " Controller =" @ Controller.Tag);
    }
    
  7. Log in to comment