fix up floor calc after refactor

rohan
Sep 24, 2022, 9:23 AM
B7ELQAIFLBQVGQWXCHST3O25NA2LNGPJ2OXMDOTKO67VDSVMDTGAC

Dependencies

  • [2] VPPB2AXM use target tile floor for peek floor to avoid issues peeking over non-walkable surfaces
  • [3] FBVEEM2F don't give cover to targets not currenty taking cover
  • [4] WVILZZOZ far cover correctly accounts for standard cover
  • [5] MPALURGP maximum far cover is low cover malus
  • [6] X4IR7ZAH baseline from krumiro's [WotC] RW Realistic Aiming Angles
  • [7] UA2L2WYU use correct config file
  • [8] 6GNTEDE4 use real LOS functions to determine Far Cover (automatically accounts for roof edge protection)
  • [9] 2S6H2GVK logging
  • [10] ZC7RMRAE simpler no-line-of-sight which also accounts for existing cover, higher resolution far cover

Change contents

  • edit in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 755
    [4.199][3.0:82](),[3.82][4.251:383](),[4.251][4.251:383]()
    else if (TargetState.CanTakeCover() && VisInfo.TargetCover == CT_MidLevel)
    {
    ExistingCoverHeight = 1;
    TargetHeight = TargetState.UnitHeight - 1; // Crouched behind low cover
    }
  • replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 757
    [4.404][4.404:484]()
    ExistingCoverHeight = 2;
    TargetHeight = TargetState.UnitHeight;
    [4.404]
    [4.484]
    if (VisInfo.TargetCover == CT_MidLevel)
    {
    ExistingCoverHeight = 1;
    TargetHeight = TargetState.UnitHeight - 1; // Crouched behind low cover
    }
    else
    {
    ExistingCoverHeight = 2;
    TargetHeight = TargetState.UnitHeight;
    }
  • replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 775
    [4.843][4.843:897]()
    LosTile.Z = `XWORLD.GetFloorTileZ(TargetTile);
    [4.843]
    [2.0]
    LosVec = `XWORLD.GetPositionFromTileCoordinates(LosTile);
  • edit in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 777
    [2.25][4.897:962](),[4.897][4.897:962]()
    LosVec = `XWORLD.GetPositionFromTileCoordinates(LosTile);
  • replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 785
    [4.1313][4.1313:1414]()
    `log("LOS blocked by far cover vector:"@i@","@VisInfo.TargetCover, true, 'XCom_HitRolls');
    [4.1313]
    [4.1414]
    `log("LOS blocked by far cover vector:"@i@","@VisInfo.TargetCover@","@RayTrace.BlockedTile.X@","@RayTrace.BlockedTile.Y@","@RayTrace.BlockedTile.Z, true, 'XCom_HitRolls');
  • replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 803
    [4.2253][2.89:177]()
    LosTile.Z = Floor; // not based on peek tile as that can be on a different level
    [4.2253]
    [4.1752]
    LosTile.Z = TargetTile.Z; // not based on peek tile as that can be on a different level
  • replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 810
    [4.1287][4.2011:2087](),[4.2087][4.889:1022](),[4.2682][4.889:1022]()
    `log("LOS blocked by far cover vector:"@i, true, 'XCom_HitRolls');
    `log("Blocking tile:"@RayTrace.BlockedTile.X@","@RayTrace.BlockedTile.Y@","@RayTrace.BlockedTile.Z, true, 'XCom_HitRolls');
    [4.1287]
    [4.2682]
    `log("LOS blocked by far cover vector:"@i@","@RayTrace.BlockedTile.X@","@RayTrace.BlockedTile.Y@","@RayTrace.BlockedTile.Z, true, 'XCom_HitRolls');