far cover correctly accounts for standard cover

rohan
Sep 11, 2022, 10:38 AM
WVILZZOZWLDB3W3WPJOMTB3Z2U3CJLHXHSEONFDZ762ZCS4P6UTAC

Dependencies

  • [2] VHVL5HH4 simplify far cover by starting at only the peek tile
  • [3] JSCVVDFD remove commented code and excess tabs
  • [4] UA2L2WYU use correct config file
  • [5] MPALURGP maximum far cover is low cover malus
  • [6] 6GNTEDE4 use real LOS functions to determine Far Cover (automatically accounts for roof edge protection)
  • [7] X4IR7ZAH baseline from krumiro's [WotC] RW Realistic Aiming Angles

Change contents

  • replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 528
    [3.167][3.167:189]()
    local int FarCover;
    [3.167]
    [3.46356]
    local int ExistingCoverHeight, TargetHeight, FarCover;
  • replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 785
    [3.1431][3.1431:1480]()
    for (i=0; i<=TargetState.UnitHeight; i++)
    [3.1431]
    [3.7955]
    if (VisInfo.TargetCover == CT_None)
    {
    ExistingCoverHeight = 0;
    TargetHeight = TargetState.UnitHeight;
    }
    else if (VisInfo.TargetCover == CT_MidLevel)
    {
    ExistingCoverHeight = 1;
    TargetHeight = TargetState.UnitHeight - 1; // Crouched behind low cover
    }
    else
    {
    ExistingCoverHeight = 2;
    TargetHeight = TargetState.UnitHeight;
    }
    for (i=ExistingCoverHeight; i<=TargetHeight; i++)
  • replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 804
    [3.837][3.1874:2002](),[3.2002][3.973:984](),[3.973][3.973:984](),[3.984][3.2003:2097](),[3.2097][2.165:299](),[2.299][3.2097:2122](),[3.2097][3.2097:2122](),[3.2122][3.1079:1090](),[3.1079][3.1079:1090]()
    if ((i == 0 && VisInfo.TargetCover == CT_None) || ((i == 1 || i == 2) && VisInfo.TargetCover != CT_Standing) || i > 2)
    {
    `log("LOS blocked by far cover:"@i@","@VisInfo.TargetCover, true, 'XCom_HitRolls');
    `log("Blocking tile:"@RayTrace.BlockedTile.X@","@RayTrace.BlockedTile.Y@","@RayTrace.BlockedTile.Z, true, 'XCom_HitRolls');
    FarCover += 1;
    }
    [3.837]
    [3.1090]
    `log("LOS blocked by far cover:"@i@","@VisInfo.TargetCover, true, 'XCom_HitRolls');
    `log("Blocking tile:"@RayTrace.BlockedTile.X@","@RayTrace.BlockedTile.Y@","@RayTrace.BlockedTile.Z, true, 'XCom_HitRolls');
    FarCover += 1;
  • replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 815
    [3.2307][3.2307:2356]()
    for (i=0; i<=TargetState.UnitHeight; i++)
    [3.2307]
    [3.1240]
    for (i=0; i<=TargetState.UnitHeight; i++) // Target not crouched when peeking
  • edit in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 820
    [3.2682]
    [3.2682]
    `log("Blocking tile:"@RayTrace.BlockedTile.X@","@RayTrace.BlockedTile.Y@","@RayTrace.BlockedTile.Z, true, 'XCom_HitRolls');