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); }
// 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(); }
// [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)); } }
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); }
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(); }
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(); } }
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); }
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()); }
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; } }
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; }
/// <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 }); } } } }
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; } }
public Monster(MonsterGrade grade, MonsterGroup group) { this.Grade = grade; this.Group = group; }
public LivingChest(int id, FightTeam team, FightActor summoner, MonsterGrade template, Cell cell) : base(id, team, summoner, template, cell) { }
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; } }