simplify far cover by starting at only the peek tile
Dependencies
- [2]
6GNTEDE4use real LOS functions to determine Far Cover (automatically accounts for roof edge protection) - [3]
MPALURGPmaximum far cover is low cover malus - [4]
X4IR7ZAHbaseline from krumiro's [WotC] RW Realistic Aiming Angles - [5]
UA2L2WYUuse correct config file - [6]
JSCVVDFDremove commented code and excess tabs
Change contents
- replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 525
local TTile PeekTile, PeekHead, LosTile, TargetPeekTile;local TTile PeekHead, LosTile, TargetPeekTile; - replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 770
PeekTile = VisInfo.SourceTile;PeekHead = PeekTile; PeekHead.Z = `XWORLD.GetFloorTileZ(PeekTile) + UnitState.UnitHeight;`log("PeekTile:"@PeekTile.X@","@PeekTile.Y@","@PeekTile.Z, true, 'XCom_HitRolls');PeekHead = VisInfo.SourceTile; PeekHead.Z = `XWORLD.GetFloorTileZ(PeekHead) + UnitState.UnitHeight; - edit in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 784[3.7964]→[2.1481:1551](∅→∅),[2.1551]→[3.446:456](∅→∅),[3.446]→[3.446:456](∅→∅),[3.456]→[2.1552:1680](∅→∅),[2.1680]→[3.564:575](∅→∅),[3.564]→[3.564:575](∅→∅),[3.575]→[2.1681:1800](∅→∅),[2.1800]→[3.723:744](∅→∅),[3.723]→[3.723:744](∅→∅),[3.744]→[2.1801:1803](∅→∅)
if (`XWORLD.VoxelRaytrace_Tiles(PeekTile, LosTile, RayTrace)){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');FarCover += 1;}} - edit in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 789
`log("Blocking tile:"@RayTrace.BlockedTile.X@","@RayTrace.BlockedTile.Y@","@RayTrace.BlockedTile.Z, true, 'XCom_HitRolls'); - edit in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 802
if (`XWORLD.VoxelRaytrace_Tiles(PeekTile, LosTile, RayTrace)){`log("LOS blocked by far cover:"@i, true, 'XCom_HitRolls');FarCover += 1;} - replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 825
FarCover = Max(0, FarCover - (TargetState.UnitHeight - 2) * 2);FarCover = Max(0, FarCover - (TargetState.UnitHeight - 2)); - replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 828
if (default.GiveHitChanceZeroWhenTargetableEnemiesAreInsteadNotTrulyInLineOfSight && FarCover == 12)if (default.GiveHitChanceZeroWhenTargetableEnemiesAreInsteadNotTrulyInLineOfSight && FarCover == 6) - replacement in RWRealisticAimingAnglesHL/Src/RWRealisticAimingAnglesHL/Classes/Override_X2AbilityToHitCalc_StandardAim.uc at line 836
FarCoverBonus = FarCover * HIGH_COVER_BONUS / 12; // 12 is the maximum considered rayFarCoverBonus = FarCover * HIGH_COVER_BONUS / 6; // 6 is the maximum considered ray