public Demon(CreatureStats stats, Faction faction, ComponentManager manager, string name, Vector3 position) : base(manager, stats, faction, name) { Physics = new Physics(manager, "Demon", Matrix.CreateTranslation(position), new Vector3(0.5f, 0.5f, 0.5f), new Vector3(0.0f, -0.25f, 0.0f), 1.0f, 1.0f, 0.999f, 0.999f, new Vector3(0, -10, 0)); Physics.AddChild(this); Physics.Orientation = Physics.OrientMode.RotateY; CreateCosmeticChildren(Manager); Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(10, 5, 10), Vector3.Zero)); Physics.AddChild(new PacingCreatureAI(Manager, "Demon AI", Sensor) { Movement = { CanFly = true, CanSwim = false, CanDig = true } }); Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)); Physics.Tags.Add("Demon"); Stats.FullName = TextGenerator.ToTitleCase(TextGenerator.GenerateRandom("$names_demon")); Stats.BaseSize = 4; }
private void OpenDiplomacyConversation(WorldManager World) { World.Paused = true; var name = ""; if (Creatures.Count > 0) { name = Creatures.First().Stats.FullName; } else { name = TextGenerator.ToTitleCase(TextGenerator.GenerateRandom(Datastructures.SelectRandom(OwnerFaction.Race.NameTemplates).ToArray())); } // Prepare conversation memory for an envoy conversation. var cMem = World.ConversationMemory; cMem.SetValue("$world", new Yarn.Value(World)); cMem.SetValue("$envoy", new Yarn.Value(this)); cMem.SetValue("$envoy_demands_tribute", new Yarn.Value(this.TributeDemanded != 0)); cMem.SetValue("$envoy_tribute_demanded", new Yarn.Value((float)this.TributeDemanded.Value)); cMem.SetValue("$envoy_name", new Yarn.Value(name)); cMem.SetValue("$envoy_faction", new Yarn.Value(OwnerFaction.ParentFaction.Name)); cMem.SetValue("$player_faction", new Yarn.Value(this.OtherFaction)); cMem.SetValue("$offensive_trades", new Yarn.Value(0)); cMem.SetValue("$trades", new Yarn.Value(0)); var politics = World.Overworld.GetPolitics(OtherFaction.ParentFaction, OwnerFaction.ParentFaction); cMem.SetValue("$faction_was_at_war", new Yarn.Value(politics.IsAtWar)); cMem.SetValue("$envoy_relationship", new Yarn.Value(politics.GetCurrentRelationship().ToString())); GameStateManager.PushState(new YarnState(OwnerFaction.World, OwnerFaction.Race.DiplomacyConversation, "Start", cMem)); }
public Skeleton(CreatureStats stats, Faction faction, ComponentManager manager, string name, Vector3 position) : base(manager, stats, faction, name) { Physics = new Physics(manager, "Skeleton", Matrix.CreateTranslation(position), new Vector3(0.5f, 0.5f, 0.5f), new Vector3(0.0f, -0.25f, 0.0f), 1.0f, 1.0f, 0.999f, 0.999f, new Vector3(0, -10, 0)); Physics.AddChild(this); Physics.Orientation = Physics.OrientMode.RotateY; Physics.AddChild(new EnemySensor(Manager, "EnemySensor", Matrix.Identity, new Vector3(5, 5, 5), Vector3.Zero)); Physics.AddChild(new CreatureAI(Manager, "Skeleton AI", Sensor)); Physics.AddChild(new Inventory(Manager, "Inventory", Physics.BoundingBox.Extents(), Physics.LocalBoundingBoxOffset)); Physics.Tags.Add("Skeleton"); Physics.AddChild(new Flammable(Manager, "Flames")); Stats.FullName = TextGenerator.ToTitleCase(TextGenerator.GenerateRandom("$names_undead")); Stats.BaseSize = 3; AI.Movement.CanClimbWalls = true; AI.Movement.SetCost(MoveType.ClimbWalls, 50.0f); AI.Movement.SetSpeed(MoveType.ClimbWalls, 0.15f); AI.Movement.SetCan(MoveType.Dig, true); CreateCosmeticChildren(Manager); }
public OverworldFaction GenerateOverworldFaction(Overworld Settings, int idx, int n) { var race = Library.GetRandomIntelligentRace(); var fact = new OverworldFaction() { Race = race.Name, Name = TextGenerator.ToTitleCase(TextGenerator.GenerateRandom(Datastructures.SelectRandom(race.FactionNameTemplates).ToArray())), PrimaryColor = new HSLColor(idx * (255.0f / n), 255.0, MathFunctions.Rand(100.0f, 200.0f)), GoodWill = MathFunctions.Rand(-1, 1), InteractiveFaction = true }; return(fact); }