Beispiel #1
0
        public void ComposeCreature(CreatureFaction faction, int creatureId, int definitionId, FDPosition position, int dropItem = 0)
        {
            CreatureDefinition creatureDef = DefinitionStore.Instance.GetCreatureDefinition(definitionId);
            FDCreature         creature    = new FDCreature(creatureId, faction, creatureDef, position);

            switch (faction)
            {
            case CreatureFaction.Friend:
                this.Friends.Add(creature);
                break;

            case CreatureFaction.Enemy:
                if (dropItem > 0)
                {
                    creature.Data.DropItem = dropItem;
                }
                this.Enemies.Add(creature);
                break;

            case CreatureFaction.Npc:
                this.Npcs.Add(creature);
                break;

            default:
                break;
            }

            CreatureComposePack pack = new CreatureComposePack(creatureId, creatureDef.AnimationId, position);

            gameCallback.OnHandlePack(pack);
        }
        private void AddPeasantHabitats()
        {
            Random random = new Random(08);

            CreatureDefinition creatureDefinition = new CreatureDefinition("Peasant");

            for (int i = 0; i < 50; i++)
            {
                Point position = new Point(random.Next(512), random.Next(512));
                MapObjectFactory.AddHabitat(position, creatureDefinition);
            }
        }
        public static void AddHabitat(Point position, CreatureDefinition creatureDefinition, int production = 7, JEventBus eventBus = null)
        {
            string structureName = creatureDefinition.Name + "Habitat";
            StructureDefinition         structureDefinition         = new StructureDefinition(structureName, new Point(1, 1));
            Structure                   structure                   = new Structure(structureDefinition);
            AddStructureOnWorldMapEvent addStructureOnWorldMapEvent =
                new AddStructureOnWorldMapEvent(structure, position);

            addStructureOnWorldMapEvent.Params.Add("template", "Habitat");
            addStructureOnWorldMapEvent.Params.Add("production", production);
            addStructureOnWorldMapEvent.Params.Add("definition", creatureDefinition);
            BaseApi.SendEvent(eventBus, addStructureOnWorldMapEvent);
        }
        public static void AddArmy(string name, Point startPosition, bool addAi = true, JEventBus eventBus = null)
        {
            CreatureDefinition creatureDefinition = new CreatureDefinition("Peasant");
            Creature           creature           = new Creature(creatureDefinition, 10);

            Army army = new Army();

            army.Fraction = new Fraction(name);
            army.Fraction.Resources.Add("Gold", new Resource(new ResourceDefinition("Gold"), 500));
            army.Creatures.Add(creature);

            AddArmyEvent addArmyEvent = new AddArmyEvent(army, startPosition, addAi);

            BaseApi.SendEvent(eventBus, addArmyEvent);
        }
Beispiel #5
0
        public static CreatureData FromDefinition(int creatureId, CreatureDefinition definition)
        {
            CreatureData data = new CreatureData();

            data.CreatureId   = creatureId;
            data.DefinitionId = definition.DefinitionId;

            data.Level = definition.InitialLevel;
            data.Hp    = data.HpMax = definition.InitialHp;
            data.Mp    = data.MpMax = definition.InitialMp;

            data.Ap  = definition.InitialAp;
            data.Dp  = definition.InitialDp;
            data.Dx  = definition.InitialDx;
            data.Mv  = definition.InitialMv;
            data.Exp = definition.InitialEx;

            data.Items  = definition.Items;
            data.Magics = definition.Magics;

            // Get Equiped items
            data.AttackItemIndex = -1;
            data.DefendItemIndex = -1;
            for (int i = 0; i < data.Items.Count; i++)
            {
                int            itemId = data.Items[i];
                ItemDefinition item   = DefinitionStore.Instance.GetItemDefinition(itemId);
                if (item != null && item is AttackItemDefinition)
                {
                    data.AttackItemIndex = i;
                }
                if (item != null && item is DefendItemDefinition)
                {
                    data.DefendItemIndex = i;
                }
            }

            data.Effects = new List <CreatureEffects>();

            return(data);
        }
Beispiel #6
0
        public FDCreature(int creatureId, CreatureFaction faction, CreatureDefinition definition, FDPosition position)
        {
            this.Faction = faction;

            this.Data = new CreatureData();
            this.Data = CreatureData.FromDefinition(creatureId, definition);

            this.Definition      = definition;
            this.Position        = position;
            this.PreMovePosition = position;

            this.Data.LastGainedExperience = 0;

            if (this.Definition.Occupation == 154 || this.Definition.Occupation == 155 || this.Definition.DefinitionId == 747)
            {
                this.Data.AIType = CreatureData.AITypes.AIType_Defensive;
            }
            else
            {
                this.Data.AIType = CreatureData.AITypes.AIType_Aggressive;
            }
        }
Beispiel #7
0
 public Creature(CreatureDefinition definition, int count = 1)
 {
     Definition = definition;
     Count      = count;
 }
Beispiel #8
0
 public override void Initialize()
 {
     CreatureDefinition = null;
     Production         = 0;
 }
Beispiel #9
0
 public Habitat(CreatureDefinition creatureDefinition, int production)
 {
     CreatureDefinition = creatureDefinition;
     Production         = production;
 }