public bool AbsorbsWalker(Walks walker) { if (Homebase) { Homebase.DidAbsorb(walker); return(true); } return(false); }
public void DidAbsorb(Walks walker) { lastAbsorbTime = Time.time; if (walker.CompareTag("Mouse")) { playerData.mouseCount += 1; } else if (walker.CompareTag("Cat")) { playerData.mouseCount = (int)(playerData.mouseCount * 0.6666f); } }
public Direction ShouldRedirect(Direction myDirection, ref Vector2Int lastRedirectCoord, Walks walker) { if (blockState == BlockState.Confuse) { const int numDirections = 4; var nextIndex = ((int)myDirection + 1 + Random.Range(0, numDirections - 1)) % numDirections; myDirection = (Direction)nextIndex; } Direction arrowDirection; bool hasArrow = GetArrowDirection(out arrowDirection); if (hasArrow && myDirection != arrowDirection) { if (arrowDirection == OppositeDirection(myDirection) && walker.DiminishesArrows) { DiminishArrow(); } myDirection = arrowDirection; } if (HasWallOrNeighborWall(myDirection)) { myDirection = DirectionWhenHitWall(myDirection); if (HasWallOrNeighborWall(myDirection)) { myDirection = OppositeDirection(myDirection); if (HasWallOrNeighborWall(myDirection)) { myDirection = OppositeDirection(myDirection); } } } return(myDirection); }