Esempio n. 1
0
 public void ApplyChanges(CreatureBaseStats gameStats)
 {
     gameStats.Power         += ChangeOfPower;
     gameStats.Endurance     += ChangeOfEndurance;
     gameStats.ImpactFactor  += ChangeOfImpactFactor;
     gameStats.BalanceFactor += ChangeOfBalanceFactor;
     gameStats.Movement      += ChangeOfMovement;
     gameStats.AttackSpeed   += ChangeOfAttackSpeed;
 }
Esempio n. 2
0
 public void ApplyChanges(CreatureBaseStats gameStats)
 {
     gameStats.Power += ChangeOfPower;
     gameStats.Endurance += ChangeOfEndurance;
     gameStats.ImpactFactor += ChangeOfImpactFactor;
     gameStats.BalanceFactor += ChangeOfBalanceFactor;
     gameStats.Movement += ChangeOfMovement;
     gameStats.AttackSpeed += ChangeOfAttackSpeed;
 }
Esempio n. 3
0
        public override void Release()
        {
            if (ObserversList != null)
            {
                ObserversList.Clear();
            }
            ObserversList = null;

            VisiblePlayers = null;
            VisibleNpcs    = null;
            VisibleItems   = null;
            VisibleGathers = null;

            if (Ai != null)
            {
                Ai.Release();
            }
            Ai = null;

            if (_lifeStats != null)
            {
                _lifeStats.Release();
            }
            _lifeStats = null;

            GameStats = null;

            Position  = null;
            BindPoint = null;
            Instance  = null;

            Target = null;

            if (VisualEffect != null)
            {
                VisualEffect.Release();
            }
            VisualEffect = null;

            if (Effects != null)
            {
                for (int i = 0; i < Effects.Count; i++)
                {
                    Effects[i].Release();
                }
            }
            Effects     = null;
            EffectsLock = null;

            base.Release();
        }
Esempio n. 4
0
        public void CopyTo(CreatureBaseStats gameStats)
        {
            //HpMp
            gameStats.HpBase    = HpBase;
            gameStats.HpStamina = HpStamina;
            gameStats.MpBase    = MpBase;
            gameStats.MpStamina = MpStamina;

            //Combat
            gameStats.Attack     = Attack;
            gameStats.Defense    = Defense;
            gameStats.Impact     = Impact;
            gameStats.Balance    = Balance;
            gameStats.CritChanse = CritChanse;
            gameStats.CritResist = CritResist;
            gameStats.CritPower  = CritPower;

            //Stats
            gameStats.Power         = Power;
            gameStats.Endurance     = Endurance;
            gameStats.ImpactFactor  = ImpactFactor;
            gameStats.BalanceFactor = BalanceFactor;
            gameStats.AttackSpeed   = AttackSpeed;
            gameStats.Movement      = Movement;

            //Resistances
            gameStats.WeakeningResist = WeakeningResist;
            gameStats.PeriodicResist  = PeriodicResist;
            gameStats.StunResist      = StunResist;

            //Regen
            gameStats.NaturalMpRegen = NaturalMpRegen;
            gameStats.CombatMpRegen  = CombatMpRegen;

            gameStats.Passivities = new List <Passivity>();
        }
Esempio n. 5
0
        public override void Release()
        {
            if (ObserversList != null)
                ObserversList.Clear();
            ObserversList = null;

            VisiblePlayers = null;
            VisibleNpcs = null;
            VisibleItems = null;
            VisibleGathers = null;

            if (Ai != null)
                Ai.Release();
            Ai = null;

            if (_lifeStats != null)
                _lifeStats.Release();
            _lifeStats = null;

            GameStats = null;

            Position = null;
            BindPoint = null;
            Instance = null;

            Target = null;

            if (VisualEffect != null)
                VisualEffect.Release();
            VisualEffect = null;

            if (Effects != null)
                for (int i = 0; i < Effects.Count; i++)
                    Effects[i].Release();
            Effects = null;
            EffectsLock = null;

            base.Release();
        }
Esempio n. 6
0
        public void CopyTo(CreatureBaseStats gameStats)
        {
            //HpMp
            gameStats.HpBase = HpBase;
            gameStats.HpStamina = HpStamina;
            gameStats.MpBase = MpBase;
            gameStats.MpStamina = MpStamina;

            //Combat
            gameStats.Attack = Attack;
            gameStats.Defense = Defense;
            gameStats.Impact = Impact;
            gameStats.Balance = Balance;
            gameStats.CritChanse = CritChanse;
            gameStats.CritResist = CritResist;
            gameStats.CritPower = CritPower;

            //Stats
            gameStats.Power = Power;
            gameStats.Endurance = Endurance;
            gameStats.ImpactFactor = ImpactFactor;
            gameStats.BalanceFactor = BalanceFactor;
            gameStats.AttackSpeed = AttackSpeed;
            gameStats.Movement = Movement;

            //Resistances
            gameStats.WeakeningResist = WeakeningResist;
            gameStats.PeriodicResist = PeriodicResist;
            gameStats.StunResist = StunResist;

            //Regen
            gameStats.NaturalMpRegen = NaturalMpRegen;
            gameStats.CombatMpRegen = CombatMpRegen;

            gameStats.Passivities = new List<Passivity>();
        }
Esempio n. 7
0
        public Projectile(Creature.Creature owner, ProjectileSkill projectileSkill)
        {
            Player.Player player = owner as Player.Player;
            Npc.Npc npc = owner as Npc.Npc;

            Parent = owner;

            if (npc != null)
            {
                TargetPosition = new WorldPosition();
                npc.Target.Position.CopyTo(TargetPosition);
            }
            else
                TargetPosition = owner.Attack.Args.TargetPosition;

            Position = new WorldPosition
                           {
                               Heading = owner.Position.Heading,
                               X = owner.Position.X,
                               Y = owner.Position.Y,
                               Z = owner.Position.Z + projectileSkill.DetachHeight,
                           };

            double angle = Position.Heading * Math.PI / 32768;

            Position.X += projectileSkill.DetachDistance * (float)Math.Cos(angle);
            Position.Y += projectileSkill.DetachDistance * (float)Math.Sin(angle);

            Instance = owner.Instance;
            ProjectileSkill = projectileSkill;
            GameStats = new CreatureBaseStats {HpBase = 1};

            if (player != null)
            {
                Skill = Data.Skills[0][player.TemplateId][ProjectileSkill.Id];
                SkillId = Skill.Id;
            }
            else if (npc != null)
            {
                Skill = Data.Skills[npc.NpcTemplate.HuntingZoneId][npc.NpcTemplate.Id][ProjectileSkill.Id];
                SkillId = Skill.Id + 0x40000000 + (npc.NpcTemplate.HuntingZoneId << 16);
            }

            Lifetime = Skill.ProjectileData.LifeTime != 0
                           ? Skill.ProjectileData.LifeTime
                           : 1000;

            if (projectileSkill.FlyingDistance <= 0f)
                TargetPosition = null;
            else if (Skill != null)
            {
                if (TargetPosition.IsNull())
                {
                    TargetPosition = Position.Clone();

                    TargetPosition.X += projectileSkill.FlyingDistance * (float)Math.Cos(angle);
                    TargetPosition.Y += projectileSkill.FlyingDistance * (float)Math.Sin(angle);
                }

                Speed = (int) (projectileSkill.FlyingDistance*1000/Lifetime);
            }

            if (Skill != null)
            {
                if (Skill.TargetingList != null)
                {
                    for (int i = 0; i < Skill.TargetingList.Count; i++)
                    {
                        if (Skill.TargetingList[i].AreaList == null)
                            continue;

                        for (int j = 0; j < Skill.TargetingList[i].AreaList.Count; j++)
                        {
                            if (Skill.TargetingList[i].AreaList[j].MaxRadius > AttackDistance)
                            {
                                AttackDistance = Skill.TargetingList[i].AreaList[j].MaxRadius;
                                return;
                            }
                        }
                    }
                }
            }
        }
Esempio n. 8
0
        public static int LoadStats()
        {
            /*
            using (FileStream fs = File.OpenRead(DataPath + "stats.bin"))
            {
                Stats = Serializer.Deserialize<List<CreatureBaseStats>>(fs);
            }
            */

            try
            {
                XmlReader xmlFile;
                xmlFile = XmlReader.Create(statsFile, new XmlReaderSettings());
                DataSet ds = new DataSet();
                ds.ReadXml(xmlFile);

                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    CreatureBaseStats tmpStats = new CreatureBaseStats();
                    tmpStats.NpcId = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[0]);
                    tmpStats.NpcName = Convert.ToString(ds.Tables[0].Rows[i].ItemArray[1]);

                    var tmpClass = Convert.ToString(ds.Tables[0].Rows[i].ItemArray[2]);

                    tmpStats.Level = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[3]);
                    tmpStats.NpcHuntingZoneId = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[4]);

                    tmpStats.Attack = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[5]);
                    tmpStats.AttackSpeed = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[6]);

                    tmpStats.Balance = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[7]);
                    tmpStats.BalanceFactor = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[8]);

                    tmpStats.Impact = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[9]);
                    tmpStats.ImpactFactor = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[10]);

                    tmpStats.CritChanse = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[11]);
                    tmpStats.CritPower = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[12]);

                    tmpStats.Movement = Convert.ToInt16(ds.Tables[0].Rows[i].ItemArray[13]);
                    tmpStats.Power = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[14]);

                    tmpStats.HpBase = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[15]);
                    tmpStats.HpStamina = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[16]);

                    tmpStats.MpBase = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[17]);
                    tmpStats.MpStamina = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[18]);

                    tmpStats.NaturalMpRegen = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[19]);
                    tmpStats.CombatMpRegen = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[20]);

                    tmpStats.Endurance = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[21]);
                    tmpStats.Defense = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[22]);

                    tmpStats.CritResist = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[23]);
                    tmpStats.StunResist = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[24]);
                    tmpStats.PeriodicResist = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[25]);
                    tmpStats.WeakeningResist = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[26]);

                    switch (tmpClass){
                        case "Warrior":
                            tmpStats.PlayerClass = Enums.PlayerClass.Warrior;
                            break;
                        case "Lancer":
                            tmpStats.PlayerClass = Enums.PlayerClass.Lancer;
                            break;
                        case "Slayer":
                            tmpStats.PlayerClass = Enums.PlayerClass.Slayer;
                            break;
                        case "Berserker":
                            tmpStats.PlayerClass = Enums.PlayerClass.Berserker;
                            break;
                        case "Sorcerer":
                            tmpStats.PlayerClass = Enums.PlayerClass.Sorcerer;
                            break;
                        case "Archer":
                            tmpStats.PlayerClass = Enums.PlayerClass.Archer;
                            break;
                        case "Priest":
                            tmpStats.PlayerClass = Enums.PlayerClass.Priest;
                            break;
                        case "Mystic":
                            tmpStats.PlayerClass = Enums.PlayerClass.Mystic;
                            break;
                        default:
                            throw new Exception("Unk Class");

                    }

                    Stats.Add(tmpStats);
                }
            }
            catch
            {
                Console.Beep();
            }

            return Stats.Count;
        }