public override void Activate(CreatureStates Creature, Raycast Raycast, Good.Times.State State) { base.Activate (Creature, Raycast, State); if (State == State.BeginningOfTurn) { RecordHeight(Creature,Raycast); } if (State == State.Jump) { if (Raycast.SearchForCreature(Creature.Front,Creature.Storey) && Raycast.SearchForHeight(Creature.Front,true) && Creature.Jump >= Raycast.TargetMultipleCreature.Count) { float x = Raycast.TargetCreature.transform.position.x; float y = Raycast.TargetCreature.transform.position.y; float AddHeight = Raycast.TargetMultipleCreature.Select(h => h.Height).Sum(); Move(Creature,x,y + AddHeight); Creature.Storey = Raycast.TargetMultipleCreature.OrderByDescending(s => s.Storey).ToList()[0].Storey + 1; } } if (State == State.EndOfTurn) { RecordHeight(Creature,Raycast); Fall(Creature, Raycast); } }
protected void VanillaSlash(CreatureStates Creature,Raycast Raycast, Vector3 SlashDirection) { if (Raycast.SearchForCreature(SlashDirection, Creature.Storey)) { Raycast.TargetCreature.Health -= Creature.Damage; } }
private void Fall(CreatureStates Creature, Raycast Raycast) { if (Raycast.SearchForCreature(Vector3.down,Creature.Storey -1) == false && Creature.Storey > 1) { float x = Creature.transform.position.x; float y = Creature.transform.position.y; Move(Creature,x,y-FallDistance); Creature.Storey--; } }
private void Fall(Creature_States Creature, Raycast Raycast) { if (Raycast.SearchForCreature(Vector2.down,Creature.Storey -1) == false && Creature.Storey > 1) { float x = Creature.transform.position.x; float y = Creature.transform.position.y; Vector2 FallLocation = new Vector2 (x, y - FallDistance); transform.position = FallLocation; Creature.Storey--; } }
private void RecordHeight(CreatureStates Creature, Raycast Raycast) { if (Raycast.SearchForCreature(Vector3.down,Creature.Storey -1)) FallDistance = Raycast.TargetCreature.Height; }