public StatsData(IStatsOwner owner, PlayerFields name, int valueBase, int limit) { this.ValueBase = valueBase; this.m_limit = new int?(limit); this.Name = name; this.Owner = owner; }
private void OnActorAttacked(TriggerBuff buff, BuffTriggerType trigger, object token) { System.Collections.Generic.IEnumerable <StatBuff> source = buff.Target.GetBuffs((Buff entry) => entry.Spell == base.Spell).OfType <StatBuff>(); int num = ( from entry in source where (int)entry.Duration == this.Effect.Duration select entry).Sum((StatBuff entry) => (int)entry.Value); short diceFace = base.Dice.DiceFace; if (num < (int)diceFace) { Fights.Damage damage = (Fights.Damage)token; int num2 = damage.Amount; if (num2 + num > (int)diceFace) { num2 = (int)((short)((int)diceFace - num)); } PlayerFields punishmentBoostType = Punishment.GetPunishmentBoostType(base.Dice.DiceNum); StatBuff buff2 = new StatBuff(buff.Target.PopNextBuffId(), buff.Target, base.Caster, base.Dice, base.Spell, (short)num2, punishmentBoostType, false, true, (short)Punishment.GetBuffEffectId(punishmentBoostType)) { Duration = base.Dice.Value }; buff.Target.AddAndApplyBuff(buff2, true); } }
/// <summary> /// Creates a column model for a player /// </summary> /// <param name="fields">The visible columns</param> public static ColumnModel CreateColumnModel(PlayerFields fields) { ImageColumn visibleColumn = CreateImageColumn(string.Empty, 20, VillageGridExRes.Player_VisibleTooltip); TextColumn playerNameColumn = CreateTextColumn(VillageGridExRes.Name, 85, VillageGridExRes.Player_NameTooltip); TextColumn playerTribeColumn = CreateTextColumn(VillageGridExRes.Tribe, 60, VillageGridExRes.Player_TribeTooltip); NumberColumn playerPointsColumn = CreateNumberColumn(VillageGridExRes.Points, 72, VillageGridExRes.Player_PointsTooltip); NumberColumn playerVillagesColumn = CreateNumberColumn(VillageGridExRes.Villages, 60, VillageGridExRes.Player_VillagesTooltip); TextColumn playerVillagesDifferenceColumn = CreateTextColumn(VillageGridExRes.Difference, 60, VillageGridExRes.Player_VillagesDiffTooltip); TextColumn playerTribeDifferenceColumn = CreateTextColumn(VillageGridExRes.TribeOld, 65, VillageGridExRes.Player_TribeOldTooltip); NumberColumn playerPointsDifferenceColumn = CreateNumberColumn(VillageGridExRes.Difference, 55, VillageGridExRes.Player_PointsDiffTooltip); playerNameColumn.Visible = (fields & PlayerFields.Name) != 0; playerPointsColumn.Visible = (fields & PlayerFields.Points) != 0; playerPointsDifferenceColumn.Visible = (fields & PlayerFields.PointsDifference) != 0; playerTribeColumn.Visible = (fields & PlayerFields.Tribe) != 0; playerTribeDifferenceColumn.Visible = (fields & PlayerFields.TribeDifference) != 0; playerVillagesColumn.Visible = (fields & PlayerFields.Villages) != 0; playerVillagesDifferenceColumn.Visible = (fields & PlayerFields.VillagesDifference) != 0; return(new ColumnModel(new Column[] { visibleColumn, playerNameColumn, playerTribeDifferenceColumn, playerTribeColumn, playerPointsColumn, playerPointsDifferenceColumn, playerVillagesColumn, playerVillagesDifferenceColumn })); }
private static EffectsEnum GetBuffEffectId(PlayerFields caracteristic) { EffectsEnum result; switch (caracteristic) { case PlayerFields.Strength: result = EffectsEnum.Effect_AddStrength; break; case PlayerFields.Vitality: result = EffectsEnum.Effect_AddVitality; break; case PlayerFields.Wisdom: result = EffectsEnum.Effect_AddWisdom; break; case PlayerFields.Chance: result = EffectsEnum.Effect_AddChance; break; case PlayerFields.Agility: result = EffectsEnum.Effect_AddAgility; break; case PlayerFields.Intelligence: result = EffectsEnum.Effect_AddIntelligence; break; default: throw new System.Exception(string.Format("Buff Effect not found for caracteristic {0}", caracteristic)); } return(result); }
public StatsData(IStatsOwner owner, PlayerFields name, int valueBase, StatsFormulasHandler formulas = null) { ValueBase = valueBase; m_formulas = formulas; Name = name; Owner = owner; }
public StatsData this[PlayerFields name] { get { StatsData statsData; return(this.Fields.TryGetValue(name, out statsData) ? statsData : null); } }
public StatsData this[PlayerFields name] { get { StatsData value; return(Fields.TryGetValue(name, out value) ? value : null); } }
public StatsData(IStatsOwner owner, PlayerFields name, int valueBase, int?limit, bool limitEquippedOnly = false) { ValueBase = valueBase; m_limit = limit; m_limitEquippedOnly = limitEquippedOnly; Name = name; Owner = owner; }
public StatBuff AddStatBuff(FightActor target, short value, PlayerFields caracteritic, bool dispelable, CustomActionsEnum customAction) { int id = target.PopNextBuffId(); StatBuff statBuff = new StatBuff(id, target, this.Caster, this.Effect, this.Spell, value, caracteritic, this.Critical, dispelable, (short)customAction); target.AddAndApplyBuff(statBuff, true); return(statBuff); }
public Buff AddStatBuff(FightActor target, short value, PlayerFields caracteritic, short?customActionId = null) { if (IsTriggerBuff()) { return(AddTriggerBuff(target, (buff, triggerrer, type, token) => AddStatBuffDirectly(target, value, caracteritic, customActionId, triggerrer: triggerrer))); } return(AddStatBuffDirectly(target, value, caracteritic, customActionId)); }
short AdjustBonusStat(short bonus, PlayerFields characteristic) { if (Target.Stats[characteristic].Additional >= StatBonusLimit) { return(0); } return(Target.Stats[characteristic].Additional + bonus > StatBonusLimit ? StatBonusLimit : bonus); }
public Skill(SkillCollection skills, PlayerFields field, SkillRecord record, SkillLine skillLine) { PlayerField = field; m_skills = skills; m_record = record; SkillLine = skillLine; m_skills.Owner.SetUInt16Low(field, (ushort)skillLine.Id); m_skills.Owner.SetUInt16High(field, skillLine.Abandonable); SetCurrentValueSilently(record.CurrentValue); MaxValue = record.MaxValue; }
public Skill(SkillCollection skills, PlayerFields field, SkillRecord record, SkillLine skillLine) { this.PlayerField = field; this.m_skills = skills; this.m_record = record; this.SkillLine = skillLine; this.m_skills.Owner.SetUInt16Low((UpdateFieldId)field, (ushort)skillLine.Id); this.m_skills.Owner.SetUInt16High((UpdateFieldId)field, skillLine.Abandonable); this.SetCurrentValueSilently(record.CurrentValue); this.MaxValue = record.MaxValue; }
/// <summary> /// Returns the next free Player's skill-field /// </summary> public PlayerFields FindFreeField() { for (PlayerFields i = PlayerFields.SKILL_INFO_1_1; i < SkillHandler.HighestField; i += 3) { if (m_owner.GetUInt32(i) == 0) { return(i); } } // should never happen throw new Exception("No more free skill-fields? Impossible!"); }
/// <summary>Returns the next free Player's skill-field</summary> public PlayerFields FindFreeField() { PlayerFields field = PlayerFields.SKILL_INFO_1_1; while (field < PlayerFields.CHARACTER_POINTS1) { if (m_owner.GetUInt32(field) == 0U) { return(field); } field += 3; } throw new Exception("No more free skill-fields? Impossible!"); }
public Skill(SkillCollection skills, PlayerFields field, SkillLine skill, uint value, uint max) { m_record = new SkillRecord { SkillId = skill.Id, OwnerId = skills.Owner.Record.Guid }; m_skills = skills; PlayerField = field; SkillLine = skill; m_skills.Owner.SetUInt16Low(field, (ushort)skill.Id); m_skills.Owner.SetUInt16High(field, skill.Abandonable); CurrentValue = (ushort)value; MaxValue = (ushort)max; m_record.CreateLater(); }
public void UpdateValue <T>(PlayerFields pos, T value, int increment = 0) { m_touched[OBJECT_TYPES.TYPE_PLAYER] = true; m_playerfields.Set((int)pos + increment, true); if (value is long || value is ulong) //64bit needs to store + append two 32 bits - obviously { m_playerfields.Set((int)pos + 1 + increment, true); m_playervalues[(int)pos + increment] = Convert.ToInt32(Convert.ToInt64(value) & uint.MaxValue); m_playervalues[(int)pos + 1 + increment] = Convert.ToInt32((Convert.ToInt64(value) >> 32) & uint.MaxValue); } else { m_playervalues[(int)pos + increment] = value; } }
public Skill(SkillCollection skills, PlayerFields field, SkillLine skill, uint value, uint max) { this.m_record = new SkillRecord() { SkillId = skill.Id, OwnerId = skills.Owner.Record.Guid }; this.m_skills = skills; this.PlayerField = field; this.SkillLine = skill; this.m_skills.Owner.SetUInt16Low((UpdateFieldId)field, (ushort)skill.Id); this.m_skills.Owner.SetUInt16High((UpdateFieldId)field, skill.Abandonable); this.CurrentValue = (ushort)value; this.MaxValue = (ushort)max; this.m_record.CreateLater(); }
public Skill(SkillCollection skills, PlayerFields field, SkillLine skill, uint value, uint max) { m_record = new SkillRecord { SkillId = skill.Id, OwnerId = skills.Owner.Record.Guid }; m_skills = skills; PlayerField = field; SkillLine = skill; m_skills.Owner.SetUInt16Low(field, (ushort)skill.Id); m_skills.Owner.SetUInt16High(field, skill.Abandonable); CurrentValue = (ushort)value; MaxValue = (ushort)max; RealmWorldDBMgr.DatabaseProvider.SaveOrUpdate(m_record); }
public override void Process(CmdTrigger <RealmServerCmdArgs> trigger) { Character target = (Character)trigger.Args.Target; ZoneId id = trigger.Text.NextEnum <ZoneId>(ZoneId.None); if (id == ZoneId.None) { for (PlayerFields playerFields = PlayerFields.EXPLORED_ZONES_1; playerFields < (PlayerFields)(1041L + (long)UpdateFieldMgr.ExplorationZoneFieldSize); ++playerFields) { target.SetUInt32((UpdateFieldId)playerFields, uint.MaxValue); } } else { target.SetZoneExplored(id, !target.IsZoneExplored(id)); } }
protected Buff AddStatBuffDirectly(FightActor target, short value, PlayerFields caracteritic, short?customActionId = null, bool noDelay = false, FightActor triggerrer = null) { var id = target.PopNextBuffId(); var buff = new StatBuff(id, target, Caster, this, Spell, value, caracteritic, Critical, DefaultDispellableStatus, triggerrer); if (customActionId != null) { buff.CustomActionId = customActionId; } if (noDelay) { buff.Delay = 0; } target.AddBuff(buff); return(buff); }
public static PlayerFields GetEffectCaracteristic(EffectsEnum effect) { if (effect <= EffectsEnum.Effect_SubDamageBonus) { if (effect == EffectsEnum.Effect_SubRange || effect == EffectsEnum.Effect_SubRange_135) { PlayerFields result = PlayerFields.Range; return(result); } if (effect == EffectsEnum.Effect_SubDamageBonus) { PlayerFields result = PlayerFields.DamageBonus; return(result); } } else { if (effect <= EffectsEnum.Effect_SubCriticalHit) { switch (effect) { case EffectsEnum.Effect_SubChance: { PlayerFields result = PlayerFields.Chance; return(result); } case EffectsEnum.Effect_SubVitality: case EffectsEnum.Effect_IncreaseWeight: case EffectsEnum.Effect_DecreaseWeight: break; case EffectsEnum.Effect_SubAgility: { PlayerFields result = PlayerFields.Agility; return(result); } case EffectsEnum.Effect_SubIntelligence: { PlayerFields result = PlayerFields.Intelligence; return(result); } case EffectsEnum.Effect_SubWisdom: { PlayerFields result = PlayerFields.Wisdom; return(result); } case EffectsEnum.Effect_SubStrength: { PlayerFields result = PlayerFields.Strength; return(result); } case EffectsEnum.Effect_SubDodgeAPProbability: { PlayerFields result = PlayerFields.DodgeAPProbability; return(result); } case EffectsEnum.Effect_SubDodgeMPProbability: { PlayerFields result = PlayerFields.DodgeMPProbability; return(result); } default: if (effect == EffectsEnum.Effect_SubCriticalHit) { PlayerFields result = PlayerFields.CriticalHit; return(result); } break; } } else { if (effect == EffectsEnum.Effect_SubDamageBonusPercent) { PlayerFields result = PlayerFields.DamageBonusPercent; return(result); } switch (effect) { case EffectsEnum.Effect_SubDodge: { PlayerFields result = PlayerFields.TackleEvade; return(result); } case EffectsEnum.Effect_SubLock: { PlayerFields result = PlayerFields.TackleBlock; return(result); } } } } throw new System.Exception(string.Format("'{0}' has no binded caracteristic", effect)); }
public int GetTotal(PlayerFields name) { var field = this[name]; return(field == null ? 0 : field.Total); }
private static void HandleValuesUpdate(uint blockId, UpdateType updateType, ObjectType objectType, Packet packet) { var maskSizeBlocks = packet.ReadByte("{0}. MaskSize", blockId); var maskSizeBytes = maskSizeBlocks * 4; var maskSizeBits = maskSizeBytes * 8; var bits = new BitArray(maskSizeBits); var fields = new Hashtable(); byte dynamicUpdateCount; for (int i = 0, b = 0; i < maskSizeBlocks; i++) { uint mask = packet.ReadUInt32("{0}. Mask[{1}]", blockId, i); packet.SetLastDataField("{0:X8}", mask); var bytes = BitConverter.GetBytes(mask); var blockBits = new BitArray(bytes); for (int x = 0; x < 32; x++) { bits[b++] = blockBits[x]; } } for (int i = 0; i < maskSizeBits; i++) { if (!bits.Get(i)) { continue; } ObjectFields objectField = (ObjectFields)i; UnitFields unitField = (UnitFields)i; PlayerFields playerField = (PlayerFields)i; if (Enum.IsDefined(typeof(ObjectFields), i)) { Debug.Print(objectField.GetFullName()); } else if (Enum.IsDefined(typeof(UnitFields), i)) { Debug.Print(unitField.GetFullName()); } else if (Enum.IsDefined(typeof(PlayerFields), i)) { Debug.Print(playerField.GetFullName()); } else { Debug.Print("Unknown: {0}", i); } if (i < (int)ObjectFields.End) { switch (objectField) { case ObjectFields.Scale: fields[i] = packet.ReadSingle(objectField.GetFullName()); break; default: fields[i] = packet.ReadUInt32(objectField.GetFullName()); break; } } else { // NOTE: This assumes a unit or player of some kind. // It does not allow for game objects or such (yet). switch (objectType) { case ObjectType.Player: case ObjectType.Unit: switch (i) { case (int)UnitFields.BoundingRadius: case (int)UnitFields.CombatReach: case (int)UnitFields.MinDamage: case (int)UnitFields.MaxDamage: case (int)UnitFields.MinOffHandDamage: case (int)UnitFields.MaxOffHandDamage: case (int)UnitFields.ModCastingSpeed: case (int)UnitFields.ModHaste: case (int)UnitFields.ModRangedHaste: case (int)UnitFields.AttackPowerMultiplier: case (int)UnitFields.RangedAttackPowerMultiplier: case (int)UnitFields.MinRangedDamage: case (int)UnitFields.MaxRangedDamage: case (int)UnitFields.PowerCostMultiplier: case (int)PlayerFields.BlockPercentage: case (int)PlayerFields.DodgePercentage: case (int)PlayerFields.ParryPercentage: case (int)PlayerFields.CritPercentage: case (int)PlayerFields.RangedCritPercentage: case (int)PlayerFields.OffhandCritPercentage: case (int)PlayerFields.Mastery: case (int)PlayerFields.ModHealingPercent: case (int)PlayerFields.ModHealingDonePercent: case (int)PlayerFields.WeaponDmgMultipliers: case (int)PlayerFields.ModSpellPowerPercent: case (int)PlayerFields.ModResiliencePercent: case (int)PlayerFields.OverrideSpellPowerByAPPercent: case (int)PlayerFields.OverrideAPBySpellPowerPercent: case (int)PlayerFields.RuneRegen: case (int)PlayerFields.RuneRegen1: case (int)PlayerFields.RuneRegen2: case (int)PlayerFields.RuneRegen3: case (int)PlayerFields.UiHitModifier: case (int)PlayerFields.UiSpellHitModifier: case (int)PlayerFields.HomeRealmTimeOffset: case (int)PlayerFields.ModPetHaste: fields[i] = packet.ReadSingle(i < (int)UnitFields.End ? unitField.GetFullName() : playerField.GetFullName()); break; default: fields[i] = packet.ReadUInt32(i < (int)UnitFields.End ? unitField.GetFullName() : playerField.GetFullName()); break; } break; default: break; } } } dynamicUpdateCount = packet.ReadByte("Dynamic update count"); }
public StatBuff(int id, FightActor target, FightActor caster, SpellEffectHandler effect, Spell spell, short value, PlayerFields caracteristic, bool critical, FightDispellableEnum dispelable, FightActor triggerer = null) : base(id, target, caster, effect, spell, critical, dispelable, triggerer: triggerer) { Value = value; Caracteristic = caracteristic; }
/// <summary> /// /// </summary> /// <param name="val"></param> public UpdateFieldId( PlayerFields value ) { m_RawId = (int)value; }
public int GetTotal(PlayerFields name) { StatsData statsData = this[name]; return((statsData == null) ? 0 : statsData.Total); }
public ExtendedUpdateFieldId(PlayerFields val) { RawId = (int)val; ObjectType = ObjectTypeId.Player; }
public int GetInt32(PlayerFields field) { return m_updateValues[(int)field].Int32; }
/// <summary> /// Creates a column model for a player /// </summary> /// <param name="fields">The visible columns</param> public static ColumnModel CreateColumnModel(PlayerFields fields) { ImageColumn visibleColumn = CreateImageColumn(string.Empty, 20, "Show image if at least one village of the player is currently visible on the main map."); TextColumn playerNameColumn = CreateTextColumn("Name", 85, "The name of the player"); TextColumn playerTribeColumn = CreateTextColumn("Tribe", 60, "The tribe the player belongs to"); NumberColumn playerPointsColumn = CreateNumberColumn("Points", 72, "Points of the player"); NumberColumn playerVillagesColumn = CreateNumberColumn("Villages", 60, "Villages of the player"); TextColumn playerVillagesDifferenceColumn = CreateTextColumn("Diff.", 60, "Villages gained and/or lost since previous data"); TextColumn playerTribeDifferenceColumn = CreateTextColumn("Old tribe", 65, "The tribe the player switched from since previous data"); NumberColumn playerPointsDifferenceColumn = CreateNumberColumn("Diff.", 55, "The difference in player points since previous data"); playerNameColumn.Visible = (fields & PlayerFields.Name) != 0; playerPointsColumn.Visible = (fields & PlayerFields.Points) != 0; playerPointsDifferenceColumn.Visible = (fields & PlayerFields.PointsDifference) != 0; playerTribeColumn.Visible = (fields & PlayerFields.Tribe) != 0; playerTribeDifferenceColumn.Visible = (fields & PlayerFields.TribeDifference) != 0; playerVillagesColumn.Visible = (fields & PlayerFields.Villages) != 0; playerVillagesDifferenceColumn.Visible = (fields & PlayerFields.VillagesDifference) != 0; return new ColumnModel(new Column[] { visibleColumn, playerNameColumn, playerTribeDifferenceColumn, playerTribeColumn, playerPointsColumn, playerPointsDifferenceColumn, playerVillagesColumn, playerVillagesDifferenceColumn}); }
public StatBuff(int id, FightActor target, FightActor caster, EffectBase effect, Spell spell, short value, PlayerFields caracteristic, bool critical, bool dispelable, short customActionId) : base(id, target, caster, effect, spell, critical, dispelable, customActionId) { this.Value = value; this.Caracteristic = caracteristic; }
/// <summary> /// /// </summary> /// <param name="val"></param> public UpdateFieldId(PlayerFields value) { m_RawId = (int)value; }
public uint GetUInt32(PlayerFields field) { return(m_updateValues[(int)field].UInt32); }
public int GetInt32(PlayerFields field) { return(this.m_updateValues[(int)field].Int32); }