public Servant() : base("pixie") { IsCollisionFree = false; Pushing.Force = 0f; // servants cant push others. DrawInfo.DrawColor = Color.Yellow; ComplexBehavior = new SubsumptionBehavior(); Add(ComplexBehavior); // avoid knights - done by a 'reversed' chase AvoidingKnights = new ChaseBehavior(typeof(Knight), true); AvoidingKnights.MoveSpeed = RandomMath.RandomBetween(0.43f, 0.65f); AvoidingKnights.ChaseRange = RandomMath.RandomBetween(10f, 17f); AvoidingKnights.ReverseBehavior(); ComplexBehavior.Add(AvoidingKnights); // avoid hero - done by a 'reversed' chase AvoidingHero = new ChaseBehavior(Level.Current.hero); AvoidingHero.MoveSpeed = RandomMath.RandomBetween(0.43f, 0.65f); AvoidingHero.ChaseRange = RandomMath.RandomBetween(10f, 17f); AvoidingHero.ReverseBehavior(); ComplexBehavior.Add(AvoidingHero); Wandering = new RandomWanderBehavior(9.7f, 14.3f); Wandering.MoveSpeed = 0.3f; ComplexBehavior.Add(Wandering); }
public RedGuard(Thing chaseTarget) : base("pixie") { IsCollisionFree = false; DrawInfo.DrawColor = new Color(255, 10, 4); Health = 13f; ComplexBehavior = new SubsumptionBehavior(); Add(ComplexBehavior); Combat = new CombatBehavior(typeof(Knight)); ComplexBehavior.Add(Combat); // chase knights that are very close ChasingComp = new ChaseBehavior(typeof(Knight), true); ChasingComp.MoveSpeed = RandomMath.RandomBetween(0.43f, 0.65f); ChasingComp.ChaseRange = 2f; // RandomMath.RandomBetween(12f, 40f); ComplexBehavior.Add(ChasingComp); // chase hero Chasing = new ChaseBehavior(chaseTarget); Chasing.MoveSpeed = RandomMath.RandomBetween(0.47f, 0.75f); Chasing.ChaseRange = 14f; // RandomMath.RandomBetween(12f, 40f); ComplexBehavior.Add(Chasing); Turning = new AlwaysTurnRightBehavior(); // patrolling Turning.MoveSpeed = Chasing.MoveSpeed; //RandomMath.RandomBetween(0.57f, 1.05f); Turning.MoveSpeed = 0.7f; ComplexBehavior.Add(Turning); Wandering = new RandomWanderBehavior(2.7f, 11.3f); Wandering.MoveSpeed = 0.7f; ComplexBehavior.Add(Wandering); }
public Companion() : base("pixie") { IsCollisionFree = false; SetColors(4f, new Color(38, 30, 240), new Color(150, 150, 255)); Pushing.Force = RandomMath.RandomBetween(1f, 1.5f); SubsumptionBehavior sub = new SubsumptionBehavior(); Add(sub); Combat = new CombatBehavior(typeof(RedGuard)); sub.Add(Combat); ChasingHero = new ChaseBehavior(Level.Current.pixie); ChasingHero.ChaseRange = 370f; ChasingHero.SatisfiedRange = 6f; ChasingHero.MoveDeltaTime = RandomMath.RandomBetween(1.2f, 1.5f); sub.Add(ChasingHero); ChasingRedGuard = new ChaseBehavior(typeof(RedGuard)); ChasingRedGuard.ChaseRange = 20f; ChasingRedGuard.MoveDeltaTime = RandomMath.RandomBetween(1.1f, 1.5f); sub.Add(ChasingRedGuard); Attacking = new AttackBehavior(Level.Current.pixie); Attacking.AttackDuration = RandomMath.RandomBetween(1.5f, 2.8f); sub.Add(Attacking); Wandering = new RandomWanderBehavior(2.7f, 11.3f); Wandering.MoveDeltaTime = RandomMath.RandomBetween(0.09f, 0.25f); sub.Add(Wandering); }
public BadPixel(Thing chaseTarget) : base("shape2x2") { IsCollisionFree = false; DrawInfo.DrawColor = new Color(255, 10, 4); SubsumptionBehavior sub = new SubsumptionBehavior(); Add(sub); Chasing = new ChaseBehavior(chaseTarget); Chasing.MoveSpeed = RandomMath.RandomBetween(0.47f, 0.75f); Chasing.ChaseRange = 6f; // RandomMath.RandomBetween(12f, 40f); sub.Add(Chasing); Turning = new AlwaysTurnRightBehavior(); Turning.MoveSpeed = Chasing.MoveSpeed; //RandomMath.RandomBetween(0.57f, 1.05f); Turning.MoveSpeed = 0.7f; sub.Add(Turning); Wandering = new RandomWanderBehavior(2.7f, 11.3f); Wandering.MoveSpeed = 0.7f; sub.Add(Wandering); }
public Knight() : base("pixie") { IsCollisionFree = false; SetColors(4f, new Color(28, 20, 230), new Color(76, 76, 255)); Health = 13f; Pushing.Force = RandomMath.RandomBetween(1f, 1.5f); ComplexBehavior = new SubsumptionBehavior(); ComplexBehavior.Active = false; // initially, knight stays near square table. Add(ComplexBehavior); Combat = new CombatBehavior(typeof(RedGuard)); ComplexBehavior.Add(Combat); ChasingHero = new ChaseBehavior(Level.Current.hero); ChasingHero.ChaseRange = 20f; ChasingHero.SatisfiedRange = 8f; ChasingHero.MoveSpeed = RandomMath.RandomBetween(1.54f, 1.87f); ComplexBehavior.Add(ChasingHero); var tb = new PathFindToTargetBehavior() { ChaseTarget = Level.Current.hero, ChaseRange = 970f, SatisfiedRange = ChasingHero.ChaseRange - 2f }; ComplexBehavior.Add(tb); ChasingRedGuard = new ChaseBehavior(typeof(RedGuard), true); ChasingRedGuard.ChaseRange = 20f; ChasingRedGuard.MoveSpeed = RandomMath.RandomBetween(1.1f, 1.5f); ComplexBehavior.Add(ChasingRedGuard); Attacking = new AttackBehavior(Level.Current.hero); Attacking.AttackDuration = RandomMath.RandomBetween(1.9f, 2.95f); ComplexBehavior.Add(Attacking); Wandering = new RandomWanderBehavior(15.7f, 23.3f); Wandering.MoveSpeed = RandomMath.RandomBetween(0.001f, 0.02f); ComplexBehavior.Add(Wandering); }