Example #1
0
        public override bool Apply()
        {
            MonsterGrade monsterGrade = Singleton <MonsterManager> .Instance.GetMonsterGrade(base.Dice.DiceNum, base.Dice.DiceFace);

            bool result;

            if (monsterGrade == null)
            {
                Summon.logger.Error <short, short>("Cannot summon monster {0} grade {1} (not found)", base.Dice.DiceNum, base.Dice.DiceFace);
                result = false;
            }
            else
            {
                if (!base.Caster.CanSummon(base.Dice.DiceNum))
                {
                    result = false;
                }
                else
                {
                    bool            visible         = (monsterGrade.Template.Id == (int)MonsterEnum.SADIDA_TREE) ? false : true; //Need to make a better method
                    SummonedMonster summonedMonster = new SummonedMonster(base.Fight.GetNextContextualId(), base.Caster.Team, base.Caster, monsterGrade, base.TargetedCell, visible);
                    ActionsHandler.SendGameActionFightSummonMessage(base.Fight.Clients, summonedMonster);
                    base.Caster.AddSummon(summonedMonster);
                    base.Caster.Team.AddFighter(summonedMonster);
                    result = true;
                }
            }
            return(result);
        }
Example #2
0
        // CONSTRUCTORS
        public BombFighter(int id, FightTeam team, FightActor summoner, MonsterGrade template, Cell cell)
            : base(id, team, summoner, template, cell)
        {
            this.m_row = 1;

            base.Look = this.Monster.Template.EntityLook.Clone();
        }
Example #3
0
        //     [StartupInvoke("MonsterPowerCalculator", StartupInvokePriority.Modules)]
        public static void Initialize()
        {
            UpdateLogger logger = new UpdateLogger();
            int          i      = 0;

            foreach (var monster in MonsterRecord.Monsters)
            {
                i++;

                MonsterGrade grade = monster.GetGrade(5);

                monster.Power  = grade.Level * 2;
                monster.Power += (int)(grade.LifePoints / 10);

                if (monster.Power > 1000)
                {
                    monster.Power = 1000;
                }

                if (monster.IsMiniBoss)
                {
                    monster.Power += 300;
                }

                if (monster.IsBoss)
                {
                    monster.Power += 500;
                }

                monster.UpdateInstantElement();

                logger.Update(i.Percentage(MonsterRecord.Monsters.Count));
            }
        }
Example #4
0
 public Monster(MonsterInGroupLightInformations informations, EntityLook look)
 {
     Look           = look;
     m_monster      = ObjectDataManager.Instance.Get <Protocol.Data.Monster>(informations.creatureGenericId);
     m_monsterGrade = m_monster.grades[informations.grade - 1];
     m_race         = ObjectDataManager.Instance.Get <MonsterRace>(m_monster.race);
     m_superRace    = ObjectDataManager.Instance.Get <MonsterSuperRace>(m_race.superRaceId);
 }
Example #5
0
        public override void Execute(TriggerBase trigger)
        {
            var            template = trigger.Get <MonsterTemplate>("monster");
            ObjectPosition position = null;
            MonsterGroup   group;

            if (template.Grades.Count <= trigger.Get <sbyte>("grade"))
            {
                trigger.ReplyError("Unexistant grade '{0}' for this monster", trigger.Get <sbyte>("grade"));
                return;
            }

            MonsterGrade grade = template.Grades[trigger.Get <sbyte>("grade")];

            if (grade.Template.EntityLook == null)
            {
                trigger.ReplyError("Cannot display this monster");
                return;
            }

            if (trigger.IsArgumentDefined("map") && trigger.IsArgumentDefined("cell") && trigger.IsArgumentDefined("direction"))
            {
                var map       = trigger.Get <Map>("map");
                var cell      = trigger.Get <short>("cell");
                var direction = trigger.Get <DirectionsEnum>("direction");

                position = new ObjectPosition(map, cell, direction);
            }
            else if (trigger is GameTrigger)
            {
                position = (trigger as GameTrigger).Character.Position;
            }

            if (position == null)
            {
                trigger.ReplyError("Position of monster is not defined");
                return;
            }

            if (trigger.IsArgumentDefined("id"))
            {
                group = position.Map.GetActor <MonsterGroup>(trigger.Get <sbyte>("id"));

                if (group == null)
                {
                    trigger.ReplyError("Group with id '{0}' not found", trigger.Get <sbyte>("id"));
                    return;
                }

                group.AddMonster(new Monster(grade, group));
            }
            else
            {
                group = position.Map.SpawnMonsterGroup(grade, position);
            }

            trigger.Reply("Monster '{0}' added to the group '{1}'", template.Id, group.Id);
        }
 public SummonedMonster(int id, FightTeam team, FightActor summoner, MonsterGrade template, Cell cell)
     : base(id, team, template.Spells.ToArray(), summoner, cell)
 {
     this.Monster = template;
     this.Look    = this.Monster.Template.EntityLook;
     this.m_stats = new StatsFields(this);
     this.m_stats.Initialize(template);
     this.AdjustStats();
 }
 //CONSTRUCTOR
 public SummonedMonster(int id, FightTeam team, FightActor summoner, MonsterGrade template, Cell cell, bool isVisibleTimeline = true, bool treeSummon = false)
     : base(id, team, template.Spells.ToArray(), summoner, cell)
 {
     this.m_isVisibleInTimeLine = isVisibleTimeline;
     this.IsTreeSummon          = treeSummon;
     this.Monster = template;
     this.Look    = this.Monster.Template.EntityLook;
     this.m_stats = new StatsFields(this);
     this.m_stats.Initialize(template);
     this.AdjustStats();
 }
Example #8
0
        public SummonedMonster(int id, FightTeam team, FightActor summoner, MonsterGrade template, Cell cell)
            : base(id, team, template.Spells.ToArray(), summoner, cell, template.MonsterId)
        {
            Monster = template;
            Look    = Monster.Template.EntityLook.Clone();
            m_stats = new StatsFields(this);
            m_stats.Initialize(template);

            if (Monster.Template.Race.SuperRaceId == 28) //Invocations
            {
                AdjustStats();
            }
        }
Example #9
0
        static bool UpdateMonsterMainStats(MonsterGrade monster)
        {
            if (monster.Strength != 0 || monster.Agility != 0 ||
                monster.Chance != 0 || monster.Intelligence != 0 ||
                monster.Stats.Count != 0)
            {
                return(false);
            }

            var extraHp = monster.LifePoints / (double)monster.Level > 10;
            var factor  = monster.Template.IsBoss ? BossBonusFactor : 1;
            var points  = monster.Level * StatsFactor * factor;
            var stats   = GetMonsterMainStats(monster);

            if (stats.Length == 0)
            {
                if (!monster.Stats.ContainsKey(PlayerFields.DamageBonusPercent))
                {
                    monster.Stats.Add(PlayerFields.DamageBonusPercent, (short)GetPointsByInvest((int)points));
                }

                if (!monster.Stats.ContainsKey(PlayerFields.Initiative))
                {
                    monster.Stats.Add(PlayerFields.Initiative, (short)GetPointsByInvest((int)points));
                }
            }

            var total = (double)stats.Length;

            if (monster.Strength == 0)
            {
                monster.Strength += (short)GetPointsByInvest((int)Math.Floor(points * (stats.Count(x => x == PlayerFields.Strength) / total)));
            }
            if (monster.Agility == 0)
            {
                monster.Agility += (short)GetPointsByInvest((int)Math.Floor(points * (stats.Count(x => x == PlayerFields.Agility) / total)));
            }
            if (monster.Chance == 0)
            {
                monster.Chance += (short)GetPointsByInvest((int)Math.Floor(points * (stats.Count(x => x == PlayerFields.Chance) / total)));
            }
            if (monster.Intelligence == 0)
            {
                monster.Intelligence += (short)GetPointsByInvest((int)Math.Floor(points * (stats.Count(x => x == PlayerFields.Intelligence) / total)));
            }

            monster.TackleEvade = (short)((int)(monster.Level / 10d) * (extraHp ? 2 : 1));
            monster.TackleBlock = monster.TackleEvade;

            return(true);
        }
Example #10
0
        static PlayerFields[] GetMonsterMainStats(MonsterGrade monster)
        {
            if (monster.Spells.Count == 0)
            {
                return(new PlayerFields[0]);
            }

            var stats = new List <PlayerFields>();

            foreach (var spell in monster.Spells)
            {
                var spellLevel = SpellManager.Instance.GetSpellLevel(spell.Id, spell.CurrentLevel);

                if (spellLevel == null)
                {
                    continue;
                }

                foreach (var effect in spellLevel.Effects)
                {
                    var categories = SpellIdentifier.GetEffectCategories(effect.EffectId);
                    if (categories.HasFlag(SpellCategory.DamagesAir))
                    {
                        stats.Add(PlayerFields.Agility);
                    }
                    if (categories.HasFlag(SpellCategory.DamagesEarth) ||
                        categories.HasFlag(SpellCategory.DamagesNeutral))
                    {
                        stats.Add(PlayerFields.Strength);
                    }
                    if (categories.HasFlag(SpellCategory.DamagesWater))
                    {
                        stats.Add(PlayerFields.Chance);
                    }
                    if (categories.HasFlag(SpellCategory.DamagesFire) ||
                        categories.HasFlag(SpellCategory.Healing))
                    {
                        stats.Add(PlayerFields.Intelligence);
                    }
                }
            }

            return(stats.Distinct().ToArray());
        }
Example #11
0
        public SummonedTurret(int id, FightActor summoner, MonsterGrade template, Spell spell, Cell cell)
            : base(id, summoner.Team, template.Spells, summoner, cell)
        {
            Caster  = summoner;
            Monster = template;
            Look    = Monster.Template.EntityLook.Clone();

            m_spell = spell;
            m_stats = new StatsFields(this);
            m_stats.Initialize(template);

            m_stats.MP.Modified += OnMPModified;

            AdjustStats();

            Fight.TurnStarted += OnTurnStarted;

            if (Monster.Template.Id == (int)MonsterIdEnum.TACTIRELLE_3289)
            {
                Team.FighterAdded += OnFighterAdded;
            }
        }
Example #12
0
        public SummonedBomb(int id, FightTeam team, SpellBombTemplate spellBombTemplate, MonsterGrade monsterBombTemplate, FightActor summoner, Cell cell)
            : base(team)
        {
            Id                  = id;
            Position            = summoner.Position.Clone();
            Look                = monsterBombTemplate.Template.EntityLook.Clone();
            Cell                = cell;
            MonsterBombTemplate = monsterBombTemplate;
            Summoner            = summoner;
            SpellBombTemplate   = spellBombTemplate;
            m_stats             = new StatsFields(this);
            m_stats.Initialize(monsterBombTemplate);
            WallSpell = new Spell((int)wallsSpells[SpellBombTemplate.WallId], (byte)MonsterBombTemplate.GradeId);
            m_color   = wallsColors[SpellBombTemplate.WallId];
            AdjustStats();

            ExplodSpell = new Spell(spellBombTemplate.ExplodReactionSpell, (byte)MonsterBombTemplate.GradeId);

            Fight.TurnStarted += OnTurnStarted;
            Team.FighterAdded += OnFighterAdded;

            m_initialized = true;
        }
Example #13
0
        /// <summary>
        /// 0 dans les stats de mobs, a voir. + Initiative Mobs :)
        /// </summary>
        /// <param name="grade"></param>
        public FighterStats(MonsterGrade grade, int power)
        {
            this.CurrentLifePoints    = (int)grade.LifePoints;
            this.CurrentMaxLifePoints = (int)grade.LifePoints;
            this.InvisibilityState    = GameActionFightInvisibilityStateEnum.VISIBLE;
            this.ShieldPoints         = 0;
            this.Summoned             = false;
            this.SummonerId           = 0;

            this.ActionPoints            = ApCharacteristic.New(grade.ActionPoints);
            this.MovementPoints          = MpCharacteristic.New(grade.MovementPoints);
            this.Agility                 = Characteristic.New((short)(power));
            this.AirDamageBonus          = Characteristic.Zero();
            this.AirReduction            = Characteristic.Zero();
            this.AirResistPercent        = ResistanceCharacteristic.New(grade.AirResistance);
            this.AllDamagesBonus         = Characteristic.Zero();
            this.Chance                  = Characteristic.New((short)(power));
            this.CriticalDamageBonus     = Characteristic.Zero();
            this.CriticalDamageReduction = Characteristic.Zero();
            this.CriticalHit             = Characteristic.Zero();
            this.CriticalHitWeapon       = 0;
            this.DamagesBonusPercent     = Characteristic.Zero();
            this.DodgePAProbability      = Characteristic.New(grade.PADodge);
            this.DodgePMProbability      = Characteristic.New(grade.PmDodge);
            this.EarthDamageBonus        = Characteristic.Zero();
            this.EarthReduction          = Characteristic.Zero();
            this.EarthResistPercent      = ResistanceCharacteristic.New(grade.EarthResistance);
            this.Energy                  = 0;
            this.FireDamageBonus         = Characteristic.Zero();
            this.FireReduction           = Characteristic.Zero();
            this.FireResistPercent       = ResistanceCharacteristic.New(grade.FireResistance);
            this.GlobalDamageReduction   = 0;
            this.GlyphBonusPercent       = Characteristic.Zero();
            this.HealBonus               = Characteristic.Zero();
            this.Initiative              = Characteristic.Zero();
            this.Intelligence            = Characteristic.New((short)(power));
            this.LifePoints              = (int)grade.LifePoints;
            this.MaxEnergyPoints         = 0;
            this.MaxLifePoints           = (int)grade.LifePoints;
            this.NeutralDamageBonus      = Characteristic.Zero();
            this.NeutralReduction        = Characteristic.Zero();
            this.NeutralResistPercent    = ResistanceCharacteristic.New(grade.NeutralResistance);
            this.PAAttack                = Characteristic.Zero();
            this.PermanentDamagePercent  = Characteristic.Zero();
            this.PvPAirResistPercent     = ResistanceCharacteristic.Zero();
            this.PvPAirReduction         = Characteristic.Zero();
            this.PvPEarthReduction       = Characteristic.Zero();
            this.PvPEarthResistPercent   = ResistanceCharacteristic.Zero();
            this.PvPFireReduction        = Characteristic.Zero();
            this.PvPFireResistPercent    = ResistanceCharacteristic.Zero();
            this.PvPNeutralReduction     = Characteristic.Zero();
            this.PvPNeutralResistPercent = ResistanceCharacteristic.Zero();
            this.PvPWaterReduction       = ResistanceCharacteristic.Zero();
            this.PvPWaterResistPercent   = ResistanceCharacteristic.Zero();
            this.PushDamageReduction     = Characteristic.Zero();
            this.PushDamageBonus         = Characteristic.Zero();
            this.Prospecting             = Characteristic.Zero();
            this.PMAttack                = Characteristic.Zero();
            this.Range                     = RangeCharacteristic.Zero();
            this.Reflect                   = Characteristic.New((short)grade.DamageReflect);
            this.RuneBonusPercent          = Characteristic.Zero();
            this.Strength                  = Characteristic.New((short)(power));
            this.SummonableCreaturesBoost  = Characteristic.New(1);
            this.TackleBlock               = Characteristic.Zero();
            this.TackleEvade               = Characteristic.Zero();
            this.TrapBonus                 = Characteristic.Zero();;
            this.TrapBonusPercent          = Characteristic.Zero();
            this.Vitality                  = Characteristic.Zero();
            this.WaterDamageBonus          = Characteristic.Zero();
            this.WaterReduction            = Characteristic.Zero();
            this.WaterResistPercent        = ResistanceCharacteristic.New(grade.WaterResistance);
            this.WeaponDamagesBonusPercent = Characteristic.Zero();
            this.WeightBonus               = 0;
            this.Wisdom                    = Characteristic.New((short)(grade.Wisdom));//+ ((double)power / (double)2)));
            this.FinalDamageCoefficient    = 1;
        }
        public override void Execute(TriggerBase trigger)
        {
            MonsterTemplate monsterTemplate = trigger.Get <MonsterTemplate>("monster");
            ObjectPosition  objectPosition  = null;

            if (monsterTemplate.Grades.Count <= (int)trigger.Get <sbyte>("grade"))
            {
                trigger.ReplyError("Unexistant grade '{0}' for this monster", new object[]
                {
                    trigger.Get <sbyte>("grade")
                });
            }
            else
            {
                MonsterGrade monsterGrade = monsterTemplate.Grades[(int)trigger.Get <sbyte>("grade")];
                if (monsterGrade.Template.EntityLook == null)
                {
                    trigger.ReplyError("Cannot display this monster");
                }
                else
                {
                    if (trigger.IsArgumentDefined("map") && trigger.IsArgumentDefined("cell") && trigger.IsArgumentDefined("direction"))
                    {
                        Map            map       = trigger.Get <Map>("map");
                        short          cellId    = trigger.Get <short>("cell");
                        DirectionsEnum direction = trigger.Get <DirectionsEnum>("direction");
                        objectPosition = new ObjectPosition(map, cellId, direction);
                    }
                    else
                    {
                        if (trigger is GameTrigger)
                        {
                            objectPosition = (trigger as GameTrigger).Character.Position;
                        }
                    }
                    if (objectPosition == null)
                    {
                        trigger.ReplyError("Position of monster is not defined");
                    }
                    else
                    {
                        MonsterGroup monsterGroup;
                        if (trigger.IsArgumentDefined("id"))
                        {
                            monsterGroup = objectPosition.Map.GetActor <MonsterGroup>((int)trigger.Get <sbyte>("id"));
                            if (monsterGroup == null)
                            {
                                trigger.ReplyError("Group with id '{0}' not found", new object[]
                                {
                                    trigger.Get <sbyte>("id")
                                });
                                return;
                            }
                            monsterGroup.AddMonster(new Monster(monsterGrade, monsterGroup));
                        }
                        else
                        {
                            monsterGroup = objectPosition.Map.SpawnMonsterGroup(monsterGrade, objectPosition);
                        }
                        trigger.Reply("Monster '{0}' added to the group '{1}'", new object[]
                        {
                            monsterTemplate.Id,
                            monsterGroup.Id
                        });
                    }
                }
            }
        }
Example #15
0
 public void Initialize(MonsterGrade record)
 {
     this.Fields = new System.Collections.Generic.Dictionary <PlayerFields, StatsData>();
     this.Fields.Add(PlayerFields.Initiative, new StatsInitiative(this.Owner, 0));
     this.Fields.Add(PlayerFields.Prospecting, new StatsData(this.Owner, PlayerFields.Prospecting, 100, StatsFields.FormulasChanceDependant));
     this.Fields.Add(PlayerFields.AP, new StatsAP(this.Owner, (int)((short)record.ActionPoints)));
     this.Fields.Add(PlayerFields.MP, new StatsMP(this.Owner, (int)((short)record.MovementPoints)));
     this.Fields.Add(PlayerFields.Strength, new StatsData(this.Owner, PlayerFields.Strength, (int)record.Strength, null));
     this.Fields.Add(PlayerFields.Vitality, new StatsData(this.Owner, PlayerFields.Vitality, (int)record.Vitality, null));
     this.Fields.Add(PlayerFields.Health, new StatsHealth(this.Owner, (int)((short)record.LifePoints), 0));
     this.Fields.Add(PlayerFields.Wisdom, new StatsData(this.Owner, PlayerFields.Wisdom, (int)record.Wisdom, null));
     this.Fields.Add(PlayerFields.Chance, new StatsData(this.Owner, PlayerFields.Chance, (int)record.Chance, null));
     this.Fields.Add(PlayerFields.Agility, new StatsData(this.Owner, PlayerFields.Agility, (int)record.Agility, null));
     this.Fields.Add(PlayerFields.Intelligence, new StatsData(this.Owner, PlayerFields.Intelligence, (int)record.Intelligence, null));
     this.Fields.Add(PlayerFields.Range, new StatsData(this.Owner, PlayerFields.Range, 0, null));
     this.Fields.Add(PlayerFields.SummonLimit, new StatsData(this.Owner, PlayerFields.SummonLimit, 1, null));
     this.Fields.Add(PlayerFields.DamageReflection, new StatsData(this.Owner, PlayerFields.DamageReflection, 0, null));
     this.Fields.Add(PlayerFields.CriticalHit, new StatsData(this.Owner, PlayerFields.CriticalHit, 0, null));
     this.Fields.Add(PlayerFields.CriticalMiss, new StatsData(this.Owner, PlayerFields.CriticalMiss, 0, null));
     this.Fields.Add(PlayerFields.HealBonus, new StatsData(this.Owner, PlayerFields.HealBonus, 0, null));
     this.Fields.Add(PlayerFields.DamageBonus, new StatsData(this.Owner, PlayerFields.DamageBonus, 0, null));
     this.Fields.Add(PlayerFields.WeaponDamageBonus, new StatsData(this.Owner, PlayerFields.WeaponDamageBonus, 0, null));
     this.Fields.Add(PlayerFields.DamageBonusPercent, new StatsData(this.Owner, PlayerFields.DamageBonusPercent, 0, null));
     this.Fields.Add(PlayerFields.TrapBonus, new StatsData(this.Owner, PlayerFields.TrapBonus, 0, null));
     this.Fields.Add(PlayerFields.TrapBonusPercent, new StatsData(this.Owner, PlayerFields.TrapBonusPercent, 0, null));
     this.Fields.Add(PlayerFields.PermanentDamagePercent, new StatsData(this.Owner, PlayerFields.PermanentDamagePercent, 0, null));
     this.Fields.Add(PlayerFields.TackleBlock, new StatsData(this.Owner, PlayerFields.TackleBlock, (int)record.TackleBlock, StatsFields.FormulasAgilityDependant));
     this.Fields.Add(PlayerFields.TackleEvade, new StatsData(this.Owner, PlayerFields.TackleEvade, (int)record.TackleEvade, StatsFields.FormulasAgilityDependant));
     this.Fields.Add(PlayerFields.APAttack, new StatsData(this.Owner, PlayerFields.APAttack, 0, null));
     this.Fields.Add(PlayerFields.MPAttack, new StatsData(this.Owner, PlayerFields.MPAttack, 0, null));
     this.Fields.Add(PlayerFields.PushDamageBonus, new StatsData(this.Owner, PlayerFields.PushDamageBonus, 0, null));
     this.Fields.Add(PlayerFields.CriticalDamageBonus, new StatsData(this.Owner, PlayerFields.CriticalDamageBonus, 0, null));
     this.Fields.Add(PlayerFields.NeutralDamageBonus, new StatsData(this.Owner, PlayerFields.NeutralDamageBonus, 0, null));
     this.Fields.Add(PlayerFields.EarthDamageBonus, new StatsData(this.Owner, PlayerFields.EarthDamageBonus, 0, null));
     this.Fields.Add(PlayerFields.WaterDamageBonus, new StatsData(this.Owner, PlayerFields.WaterDamageBonus, 0, null));
     this.Fields.Add(PlayerFields.AirDamageBonus, new StatsData(this.Owner, PlayerFields.AirDamageBonus, 0, null));
     this.Fields.Add(PlayerFields.FireDamageBonus, new StatsData(this.Owner, PlayerFields.FireDamageBonus, 0, null));
     this.Fields.Add(PlayerFields.DodgeAPProbability, new StatsData(this.Owner, PlayerFields.DodgeAPProbability, (int)((short)record.PaDodge), StatsFields.FormulasWisdomDependant));
     this.Fields.Add(PlayerFields.DodgeMPProbability, new StatsData(this.Owner, PlayerFields.DodgeMPProbability, (int)((short)record.PmDodge), StatsFields.FormulasWisdomDependant));
     this.Fields.Add(PlayerFields.NeutralResistPercent, new StatsData(this.Owner, PlayerFields.NeutralResistPercent, (int)((short)record.NeutralResistance), null));
     this.Fields.Add(PlayerFields.EarthResistPercent, new StatsData(this.Owner, PlayerFields.EarthResistPercent, (int)((short)record.EarthResistance), null));
     this.Fields.Add(PlayerFields.WaterResistPercent, new StatsData(this.Owner, PlayerFields.WaterResistPercent, (int)((short)record.WaterResistance), null));
     this.Fields.Add(PlayerFields.AirResistPercent, new StatsData(this.Owner, PlayerFields.AirResistPercent, (int)((short)record.AirResistance), null));
     this.Fields.Add(PlayerFields.FireResistPercent, new StatsData(this.Owner, PlayerFields.FireResistPercent, (int)((short)record.FireResistance), null));
     this.Fields.Add(PlayerFields.NeutralElementReduction, new StatsData(this.Owner, PlayerFields.NeutralElementReduction, 0, null));
     this.Fields.Add(PlayerFields.EarthElementReduction, new StatsData(this.Owner, PlayerFields.EarthElementReduction, 0, null));
     this.Fields.Add(PlayerFields.WaterElementReduction, new StatsData(this.Owner, PlayerFields.WaterElementReduction, 0, null));
     this.Fields.Add(PlayerFields.AirElementReduction, new StatsData(this.Owner, PlayerFields.AirElementReduction, 0, null));
     this.Fields.Add(PlayerFields.FireElementReduction, new StatsData(this.Owner, PlayerFields.FireElementReduction, 0, null));
     this.Fields.Add(PlayerFields.PushDamageReduction, new StatsData(this.Owner, PlayerFields.PushDamageReduction, 0, null));
     this.Fields.Add(PlayerFields.CriticalDamageReduction, new StatsData(this.Owner, PlayerFields.CriticalDamageReduction, 0, null));
     this.Fields.Add(PlayerFields.PvpNeutralResistPercent, new StatsData(this.Owner, PlayerFields.PvpNeutralResistPercent, 0, null));
     this.Fields.Add(PlayerFields.PvpEarthResistPercent, new StatsData(this.Owner, PlayerFields.PvpEarthResistPercent, 0, null));
     this.Fields.Add(PlayerFields.PvpWaterResistPercent, new StatsData(this.Owner, PlayerFields.PvpWaterResistPercent, 0, null));
     this.Fields.Add(PlayerFields.PvpAirResistPercent, new StatsData(this.Owner, PlayerFields.PvpAirResistPercent, 0, null));
     this.Fields.Add(PlayerFields.PvpFireResistPercent, new StatsData(this.Owner, PlayerFields.PvpFireResistPercent, 0, null));
     this.Fields.Add(PlayerFields.PvpNeutralElementReduction, new StatsData(this.Owner, PlayerFields.PvpNeutralElementReduction, 0, null));
     this.Fields.Add(PlayerFields.PvpEarthElementReduction, new StatsData(this.Owner, PlayerFields.PvpEarthElementReduction, 0, null));
     this.Fields.Add(PlayerFields.PvpWaterElementReduction, new StatsData(this.Owner, PlayerFields.PvpWaterElementReduction, 0, null));
     this.Fields.Add(PlayerFields.PvpAirElementReduction, new StatsData(this.Owner, PlayerFields.PvpAirElementReduction, 0, null));
     this.Fields.Add(PlayerFields.PvpFireElementReduction, new StatsData(this.Owner, PlayerFields.PvpFireElementReduction, 0, null));
     this.Fields.Add(PlayerFields.GlobalDamageReduction, new StatsData(this.Owner, PlayerFields.GlobalDamageReduction, 0, null));
     this.Fields.Add(PlayerFields.DamageMultiplicator, new StatsData(this.Owner, PlayerFields.DamageMultiplicator, 0, null));
     this.Fields.Add(PlayerFields.PhysicalDamage, new StatsData(this.Owner, PlayerFields.PhysicalDamage, 0, null));
     this.Fields.Add(PlayerFields.MagicDamage, new StatsData(this.Owner, PlayerFields.MagicDamage, 0, null));
     this.Fields.Add(PlayerFields.PhysicalDamageReduction, new StatsData(this.Owner, PlayerFields.PhysicalDamageReduction, 0, null));
     this.Fields.Add(PlayerFields.MagicDamageReduction, new StatsData(this.Owner, PlayerFields.MagicDamageReduction, 0, null));
     this.Fields.Add(PlayerFields.WaterDamageArmor, new StatsData(this.Owner, PlayerFields.WaterDamageArmor, 0, null));
     this.Fields.Add(PlayerFields.EarthDamageArmor, new StatsData(this.Owner, PlayerFields.EarthDamageArmor, 0, null));
     this.Fields.Add(PlayerFields.NeutralDamageArmor, new StatsData(this.Owner, PlayerFields.NeutralDamageArmor, 0, null));
     this.Fields.Add(PlayerFields.AirDamageArmor, new StatsData(this.Owner, PlayerFields.AirDamageArmor, 0, null));
     this.Fields.Add(PlayerFields.FireDamageArmor, new StatsData(this.Owner, PlayerFields.FireDamageArmor, 0, null));
     this.Fields.Add(PlayerFields.Erosion, new StatsData(this.Owner, PlayerFields.Erosion, 10, null));
     foreach (System.Collections.Generic.KeyValuePair <PlayerFields, short> current in record.Stats)
     {
         this.Fields[current.Key].Base = (int)current.Value;
     }
 }
Example #16
0
 public Monster(MonsterGrade grade, MonsterGroup group)
 {
     this.Grade = grade;
     this.Group = group;
 }
Example #17
0
 public LivingChest(int id, FightTeam team, FightActor summoner, MonsterGrade template, Cell cell)
     : base(id, team, summoner, template, cell)
 {
 }
Example #18
0
        public void Initialize(MonsterGrade record)
        {
            // note : keep this order !

            Fields = new Dictionary <PlayerFields, StatsData>();

            Fields.Add(PlayerFields.Initiative, new StatsInitiative(Owner, 0));
            Fields.Add(PlayerFields.Prospecting, new StatsData(Owner, PlayerFields.Prospecting, 100, FormulasChanceDependant));
            Fields.Add(PlayerFields.AP, new StatsAP(Owner, (short)record.ActionPoints));
            Fields.Add(PlayerFields.MP, new StatsMP(Owner, (short)record.MovementPoints));
            Fields.Add(PlayerFields.Strength, new StatsData(Owner, PlayerFields.Strength, record.Strength));
            Fields.Add(PlayerFields.Vitality, new StatsData(Owner, PlayerFields.Vitality, record.Vitality));
            Fields.Add(PlayerFields.Health, new StatsHealth(Owner, (short)record.LifePoints, 0));
            Fields.Add(PlayerFields.Wisdom, new StatsData(Owner, PlayerFields.Wisdom, record.Wisdom));
            Fields.Add(PlayerFields.Chance, new StatsData(Owner, PlayerFields.Chance, record.Chance));
            Fields.Add(PlayerFields.Agility, new StatsData(Owner, PlayerFields.Agility, record.Agility));
            Fields.Add(PlayerFields.Intelligence, new StatsData(Owner, PlayerFields.Intelligence, record.Intelligence));
            Fields.Add(PlayerFields.Range, new StatsData(Owner, PlayerFields.Range, 0));
            Fields.Add(PlayerFields.SummonLimit, new StatsData(Owner, PlayerFields.SummonLimit, 1));
            Fields.Add(PlayerFields.DamageReflection, new StatsData(Owner, PlayerFields.DamageReflection, 0));
            Fields.Add(PlayerFields.CriticalHit, new StatsData(Owner, PlayerFields.CriticalHit, 0));
            Fields.Add(PlayerFields.CriticalMiss, new StatsData(Owner, PlayerFields.CriticalMiss, 0));
            Fields.Add(PlayerFields.HealBonus, new StatsData(Owner, PlayerFields.HealBonus, 0));
            Fields.Add(PlayerFields.DamageBonus, new StatsData(Owner, PlayerFields.DamageBonus, 0));
            Fields.Add(PlayerFields.WeaponDamageBonus, new StatsData(Owner, PlayerFields.WeaponDamageBonus, 0));
            Fields.Add(PlayerFields.DamageBonusPercent, new StatsData(Owner, PlayerFields.DamageBonusPercent, 0));
            Fields.Add(PlayerFields.TrapBonus, new StatsData(Owner, PlayerFields.TrapBonus, 0));
            Fields.Add(PlayerFields.TrapBonusPercent, new StatsData(Owner, PlayerFields.TrapBonusPercent, 0));
            Fields.Add(PlayerFields.PermanentDamagePercent, new StatsData(Owner, PlayerFields.PermanentDamagePercent, 0));
            Fields.Add(PlayerFields.TackleBlock, new StatsData(Owner, PlayerFields.TackleBlock, record.TackleBlock, FormulasAgilityDependant));
            Fields.Add(PlayerFields.TackleEvade, new StatsData(Owner, PlayerFields.TackleEvade, record.TackleEvade, FormulasAgilityDependant));
            Fields.Add(PlayerFields.APAttack, new StatsData(Owner, PlayerFields.APAttack, 0, FormulasWisdomDependant));
            Fields.Add(PlayerFields.MPAttack, new StatsData(Owner, PlayerFields.MPAttack, 0, FormulasWisdomDependant));
            Fields.Add(PlayerFields.PushDamageBonus, new StatsData(Owner, PlayerFields.PushDamageBonus, 0));
            Fields.Add(PlayerFields.CriticalDamageBonus, new StatsData(Owner, PlayerFields.CriticalDamageBonus, 0));
            Fields.Add(PlayerFields.NeutralDamageBonus, new StatsData(Owner, PlayerFields.NeutralDamageBonus, 0));
            Fields.Add(PlayerFields.EarthDamageBonus, new StatsData(Owner, PlayerFields.EarthDamageBonus, 0));
            Fields.Add(PlayerFields.WaterDamageBonus, new StatsData(Owner, PlayerFields.WaterDamageBonus, 0));
            Fields.Add(PlayerFields.AirDamageBonus, new StatsData(Owner, PlayerFields.AirDamageBonus, 0));
            Fields.Add(PlayerFields.FireDamageBonus, new StatsData(Owner, PlayerFields.FireDamageBonus, 0));
            Fields.Add(PlayerFields.DodgeAPProbability, new StatsData(Owner, PlayerFields.DodgeAPProbability, (short)record.PaDodge, FormulasWisdomDependant));
            Fields.Add(PlayerFields.DodgeMPProbability, new StatsData(Owner, PlayerFields.DodgeMPProbability, (short)record.PmDodge, FormulasWisdomDependant));
            Fields.Add(PlayerFields.NeutralResistPercent, new StatsData(Owner, PlayerFields.NeutralResistPercent, (short)record.NeutralResistance));
            Fields.Add(PlayerFields.EarthResistPercent, new StatsData(Owner, PlayerFields.EarthResistPercent, (short)record.EarthResistance));
            Fields.Add(PlayerFields.WaterResistPercent, new StatsData(Owner, PlayerFields.WaterResistPercent, (short)record.WaterResistance));
            Fields.Add(PlayerFields.AirResistPercent, new StatsData(Owner, PlayerFields.AirResistPercent, (short)record.AirResistance));
            Fields.Add(PlayerFields.FireResistPercent, new StatsData(Owner, PlayerFields.FireResistPercent, (short)record.FireResistance));
            Fields.Add(PlayerFields.NeutralElementReduction, new StatsData(Owner, PlayerFields.NeutralElementReduction, 0));
            Fields.Add(PlayerFields.EarthElementReduction, new StatsData(Owner, PlayerFields.EarthElementReduction, 0));
            Fields.Add(PlayerFields.WaterElementReduction, new StatsData(Owner, PlayerFields.WaterElementReduction, 0));
            Fields.Add(PlayerFields.AirElementReduction, new StatsData(Owner, PlayerFields.AirElementReduction, 0));
            Fields.Add(PlayerFields.FireElementReduction, new StatsData(Owner, PlayerFields.FireElementReduction, 0));
            Fields.Add(PlayerFields.PushDamageReduction, new StatsData(Owner, PlayerFields.PushDamageReduction, 0));
            Fields.Add(PlayerFields.CriticalDamageReduction, new StatsData(Owner, PlayerFields.CriticalDamageReduction, 0));
            Fields.Add(PlayerFields.PvpNeutralResistPercent, new StatsData(Owner, PlayerFields.PvpNeutralResistPercent, 0));
            Fields.Add(PlayerFields.PvpEarthResistPercent, new StatsData(Owner, PlayerFields.PvpEarthResistPercent, 0));
            Fields.Add(PlayerFields.PvpWaterResistPercent, new StatsData(Owner, PlayerFields.PvpWaterResistPercent, 0));
            Fields.Add(PlayerFields.PvpAirResistPercent, new StatsData(Owner, PlayerFields.PvpAirResistPercent, 0));
            Fields.Add(PlayerFields.PvpFireResistPercent, new StatsData(Owner, PlayerFields.PvpFireResistPercent, 0));
            Fields.Add(PlayerFields.PvpNeutralElementReduction, new StatsData(Owner, PlayerFields.PvpNeutralElementReduction, 0));
            Fields.Add(PlayerFields.PvpEarthElementReduction, new StatsData(Owner, PlayerFields.PvpEarthElementReduction, 0));
            Fields.Add(PlayerFields.PvpWaterElementReduction, new StatsData(Owner, PlayerFields.PvpWaterElementReduction, 0));
            Fields.Add(PlayerFields.PvpAirElementReduction, new StatsData(Owner, PlayerFields.PvpAirElementReduction, 0));
            Fields.Add(PlayerFields.PvpFireElementReduction, new StatsData(Owner, PlayerFields.PvpFireElementReduction, 0));
            Fields.Add(PlayerFields.GlobalDamageReduction, new StatsData(Owner, PlayerFields.GlobalDamageReduction, 0));
            Fields.Add(PlayerFields.DamageMultiplicator, new StatsData(Owner, PlayerFields.DamageMultiplicator, 0));
            Fields.Add(PlayerFields.PhysicalDamage, new StatsData(Owner, PlayerFields.PhysicalDamage, 0));
            Fields.Add(PlayerFields.MagicDamage, new StatsData(Owner, PlayerFields.MagicDamage, 0));
            Fields.Add(PlayerFields.PhysicalDamageReduction, new StatsData(Owner, PlayerFields.PhysicalDamageReduction, 0));
            Fields.Add(PlayerFields.MagicDamageReduction, new StatsData(Owner, PlayerFields.MagicDamageReduction, 0));
            Fields.Add(PlayerFields.Weight, new StatsData(Owner, PlayerFields.Weight, 0));
            Fields.Add(PlayerFields.WaterDamageArmor, new StatsData(Owner, PlayerFields.WaterDamageArmor, 0));
            Fields.Add(PlayerFields.EarthDamageArmor, new StatsData(Owner, PlayerFields.EarthDamageArmor, 0));
            Fields.Add(PlayerFields.NeutralDamageArmor, new StatsData(Owner, PlayerFields.NeutralDamageArmor, 0));
            Fields.Add(PlayerFields.AirDamageArmor, new StatsData(Owner, PlayerFields.AirDamageArmor, 0));
            Fields.Add(PlayerFields.FireDamageArmor, new StatsData(Owner, PlayerFields.FireDamageArmor, 0));
            Fields.Add(PlayerFields.Erosion, new StatsData(Owner, PlayerFields.Erosion, 10));
            Fields.Add(PlayerFields.ComboBonus, new StatsData(Owner, PlayerFields.ComboBonus, 0));
            Fields.Add(PlayerFields.Shield, new StatsData(Owner, PlayerFields.Shield, 0));
            Fields.Add(PlayerFields.SpellDamageBonus, new StatsData(Owner, PlayerFields.SpellDamageBonus, 0));

            foreach (var pair in record.Stats)
            {
                Fields[pair.Key].Base = pair.Value;
            }
        }