MCPcopy
hub / github.com/FreezingMoon/AncientBeast / getOpticBurstEffectiveDistance

Function getOpticBurstEffectiveDistance

src/abilities/Cycloper.ts:860–885  ·  view source on GitHub ↗
(
	cycloper: Creature,
	target: Creature,
	path: Hex[],
	args: { direction?: number } | undefined,
	G: Game,
)

Source from the content-addressed store, hash-verified

858}
859
860function getOpticBurstEffectiveDistance(
861 cycloper: Creature,
862 target: Creature,
863 path: Hex[],
864 args: { direction?: number } | undefined,
865 G: Game,
866) {
867 const directionalDistance = getTargetDistanceInDirection(cycloper, target, args?.direction, G);
868
869 if (Number.isFinite(directionalDistance)) {
870 const relayBonus = isRiotShieldUpgraded(cycloper)
871 ? countAlliedRelayWallsBeforeTarget(cycloper, target, args?.direction, G)
872 : 0;
873 const effectiveDistance = Math.max(0, directionalDistance - 1 - relayBonus);
874 return effectiveDistance;
875 }
876
877 // Fallback when direction context is unavailable.
878 const emptyHexDistance = arrayUtils.filterCreature(path.slice(0), false, false).length;
879 const relayBonus = isRiotShieldUpgraded(cycloper)
880 ? countAlliedRelayWallsBeforeTarget(cycloper, target, args?.direction, G)
881 : 0;
882
883 const effectiveDistance = Math.max(0, emptyHexDistance - relayBonus);
884 return effectiveDistance;
885}
886
887function countAlliedRelayWallsBeforeTarget(
888 cycloper: Creature,

Callers 1

Cycloper.tsFile · 0.85

Calls 3

isRiotShieldUpgradedFunction · 0.85

Tested by

no test coverage detected