Exemplo n.º 1
0
        /// <summary>
        /// Adds new creature of race as actor.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="creature"></param>
        public void AddActor(string name, int raceId)
        {
            var creature = new NPC();
            creature.Race = raceId;
            creature.LoadDefault();
            creature.Name = creature.RaceData.Name;
            creature.Color1 = creature.RaceData.Color1;
            creature.Color2 = creature.RaceData.Color2;
            creature.Color3 = creature.RaceData.Color3;
            creature.Height = creature.RaceData.Size;

            this.Actors[name] = creature;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Spawns a creature.
        /// </summary>
        /// <param name="raceId"></param>
        /// <param name="regionId"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="spawnId"></param>
        /// <returns></returns>
        public Creature Spawn(int raceId, int regionId, int x, int y, int spawnId, bool active, bool effect)
        {
            // Create NPC
            var creature = new NPC();
            creature.Race = raceId;
            creature.LoadDefault();
            creature.SpawnId = spawnId;
            creature.Name = creature.RaceData.Name;
            creature.Color1 = creature.RaceData.Color1;
            creature.Color2 = creature.RaceData.Color2;
            creature.Color3 = creature.RaceData.Color3;
            creature.Height = creature.RaceData.Size;
            creature.Life = creature.LifeMaxBase = creature.RaceData.Life;
            creature.State = (CreatureStates)creature.RaceData.DefaultState;
            creature.Direction = (byte)RandomProvider.Get().Next(256);

            // Set drops
            creature.Drops.GoldMin = creature.RaceData.GoldMin;
            creature.Drops.GoldMax = creature.RaceData.GoldMax;
            creature.Drops.Add(creature.RaceData.Drops);

            // Give skills
            foreach (var skill in creature.RaceData.Skills)
                creature.Skills.Add((SkillId)skill.SkillId, (SkillRank)skill.Rank, creature.Race);

            // Set AI
            if (!string.IsNullOrWhiteSpace(creature.RaceData.AI) && creature.RaceData.AI != "none")
            {
                creature.AI = this.GetAi(creature.RaceData.AI, creature);
                if (creature.AI == null)
                    Log.Warning("Spawn: Missing AI '{0}' for '{1}'.", creature.RaceData.AI, raceId);
            }

            // Warp to spawn point
            if (!creature.Warp(regionId, x, y))
            {
                Log.Error("Failed to spawn '{0}'s.", raceId);
                return null;
            }

            // Activate AI at least once
            if (creature.AI != null && active)
                creature.AI.Activate(0);

            // Spawn effect
            if (effect)
                Send.SpawnEffect(SpawnEffect.Monster, creature.RegionId, x, y, creature, creature);

            return creature;
        }