public QuestInfo(BinaryReader reader) { Index = reader.ReadInt32(); Name = reader.ReadString(); Group = reader.ReadString(); FileName = reader.ReadString(); RequiredMinLevel = reader.ReadInt32(); if (Envir.LoadVersion >= 38) { RequiredMaxLevel = reader.ReadInt32(); if (RequiredMaxLevel == 0) { RequiredMaxLevel = ushort.MaxValue; } } RequiredQuest = reader.ReadInt32(); RequiredClass = (RequiredClass)reader.ReadByte(); Type = (QuestType)reader.ReadByte(); GotoMessage = reader.ReadString(); KillMessage = reader.ReadString(); ItemMessage = reader.ReadString(); if (Envir.LoadVersion >= 37) { FlagMessage = reader.ReadString(); } LoadInfo(); }
public ClientQuestInfo(BinaryReader reader) { Index = reader.ReadInt32(); NPCIndex = reader.ReadUInt32(); Name = reader.ReadString(); Group = reader.ReadString(); int count = reader.ReadInt32(); for (int i = 0; i < count; i++) { Description.Add(reader.ReadString()); } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { TaskDescription.Add(reader.ReadString()); } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { ReturnDescription.Add(reader.ReadString()); } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { CompletionDescription.Add(reader.ReadString()); } MinLevelNeeded = reader.ReadInt32(); MaxLevelNeeded = reader.ReadInt32(); QuestNeeded = reader.ReadInt32(); ClassNeeded = (RequiredClass)reader.ReadByte(); Type = (QuestType)reader.ReadByte(); TimeLimitInSeconds = reader.ReadInt32(); RewardGold = reader.ReadUInt32(); RewardExp = reader.ReadUInt32(); RewardCredit = reader.ReadUInt32(); count = reader.ReadInt32(); for (int i = 0; i < count; i++) { RewardsFixedItem.Add(new QuestItemReward(reader)); } count = reader.ReadInt32(); for (int i = 0; i < count; i++) { RewardsSelectItem.Add(new QuestItemReward(reader)); } FinishNPCIndex = reader.ReadUInt32(); }
protected internal override void OnCreated() { base.OnCreated(); Amount = 1; Class = RequiredClass.All; }
public LMS_RewardInfo(BinaryReader reader) { bool valid = reader.ReadBoolean(); if (valid) { ItemReward = new ItemInfo(reader, Envir.LoadVersion, Envir.LoadCustomVersion, false); } RequiredClass = (RequiredClass)reader.ReadByte(); Group = reader.ReadByte(); Rate = reader.ReadUInt16(); Rank = reader.ReadByte(); }
public QuestInfo(BinaryReader reader) { Index = reader.ReadInt32(); Name = reader.ReadString(); Group = reader.ReadString(); FileName = reader.ReadString(); RequiredMinLevel = reader.ReadInt32(); if (Envir.LoadVersion >= 38) { RequiredMaxLevel = reader.ReadInt32(); if (RequiredMaxLevel == 0) { RequiredMaxLevel = ushort.MaxValue; } } RequiredQuest = reader.ReadInt32(); RequiredClass = (RequiredClass)reader.ReadByte(); Type = (QuestType)reader.ReadByte(); GotoMessage = reader.ReadString(); KillMessage = reader.ReadString(); ItemMessage = reader.ReadString(); if (Envir.LoadVersion >= 37) { FlagMessage = reader.ReadString(); } if (Envir.LoadVersion > 72) { percentageExp = reader.ReadBoolean(); } if (Envir.LoadVersion > 77) { Time = reader.ReadInt32(); } if (Envir.LoadVersion > 103) { HeroQuest = reader.ReadBoolean(); } if (Envir.LoadVersion > 111) { autoComplete = reader.ReadBoolean(); } LoadInfo(); }
public QuestInfo(MySqlDataReader readerQuestInfo) { Index = Convert.ToInt32(readerQuestInfo["IndexID"]); Name = readerQuestInfo["Name"].ToString(); Group = readerQuestInfo["Group_"].ToString(); FileName = readerQuestInfo["FileName"].ToString(); RequiredMinLevel = Convert.ToInt32(readerQuestInfo["RequiredMinLevel"]); RequiredMaxLevel = Convert.ToInt32(readerQuestInfo["RequiredMaxLevel"]); RequiredQuest = Convert.ToInt32(readerQuestInfo["RequiredQuest"]); RequiredClass = (RequiredClass)Convert.ToByte(readerQuestInfo["RequiredClass"]); Type = (QuestType)Convert.ToByte(readerQuestInfo["Type"]); GotoMessage = readerQuestInfo["GotoMessage"].ToString(); KillMessage = readerQuestInfo["KillMessage"].ToString(); ItemMessage = readerQuestInfo["ItemMessage"].ToString(); FlagMessage = readerQuestInfo["FlagMessage"].ToString(); LoadInfo(); }
public QuestInfo UpdateQuestInfo(QuestInfo m) { CarryItems = m.CarryItems; CompletionDescription = m.CompletionDescription; CreditReward = m.CreditReward; Description = m.Description; ExpReward = m.ExpReward; FileName = m.FileName; FixedRewards = m.FixedRewards; BuffRewards = m.BuffRewards; FlagMessage = m.FlagMessage; FlagTasks = m.FlagTasks; GoldReward = m.GoldReward; GotoMessage = m.GotoMessage; Group = m.Group; Index = m.Index; ItemMessage = m.ItemMessage; ItemTasks = m.ItemTasks; KillMessage = m.KillMessage; KillTasks = m.KillTasks; Name = m.Name; NpcIndex = m.NpcIndex; NpcInfo = m.NpcInfo; percentageExp = m.percentageExp; autoComplete = m.autoComplete; RequiredClass = m.RequiredClass; RequiredMaxLevel = m.RequiredMaxLevel; RequiredMinLevel = m.RequiredMinLevel; RequiredQuest = m.RequiredQuest; SelectRewards = m.SelectRewards; TaskDescription = m.TaskDescription; Time = m.Time; Type = m.Type; _finishNpcIndex = m._finishNpcIndex; _regexMessage = m._regexMessage; ItemExpReward = m.ItemExpReward; return(this); }
public QuestInfo(BinaryReader reader) { Index = reader.ReadInt32(); Name = reader.ReadString(); Group = reader.ReadString(); FileName = reader.ReadString(); RequiredMinLevel = reader.ReadInt32(); if (Envir.LoadVersion >= 38) { RequiredMaxLevel = reader.ReadInt32(); if (RequiredMaxLevel == 0) RequiredMaxLevel = byte.MaxValue; } RequiredQuest = reader.ReadInt32(); RequiredClass = (RequiredClass)reader.ReadByte(); Type = (QuestType)reader.ReadByte(); GotoMessage = reader.ReadString(); KillMessage = reader.ReadString(); ItemMessage = reader.ReadString(); if(Envir.LoadVersion >= 37) FlagMessage = reader.ReadString(); LoadInfo(); }
public ClientQuestInfo(BinaryReader reader) { Index = reader.ReadInt32(); NPCIndex = reader.ReadUInt32(); Name = reader.ReadString(); Group = reader.ReadString(); int count = reader.ReadInt32(); for (int i = 0; i < count; i++) Description.Add(reader.ReadString()); count = reader.ReadInt32(); for (int i = 0; i < count; i++) TaskDescription.Add(reader.ReadString()); count = reader.ReadInt32(); for (int i = 0; i < count; i++) CompletionDescription.Add(reader.ReadString()); MinLevelNeeded = reader.ReadInt32(); MaxLevelNeeded = reader.ReadInt32(); QuestNeeded = reader.ReadInt32(); ClassNeeded = (RequiredClass)reader.ReadByte(); Type = (QuestType)reader.ReadByte(); RewardGold = reader.ReadUInt32(); RewardExp = reader.ReadUInt32(); RewardCredit = reader.ReadUInt32(); count = reader.ReadInt32(); for (int i = 0; i < count; i++ ) RewardsFixedItem.Add(new QuestItemReward(reader)); count = reader.ReadInt32(); for (int i = 0; i < count; i++) RewardsSelectItem.Add(new QuestItemReward(reader)); FinishNPCIndex = reader.ReadUInt32(); }
public ItemInfo(BinaryReader reader, int version = int.MaxValue, int Customversion = int.MaxValue) { Index = reader.ReadInt32(); Name = reader.ReadString(); Type = (ItemType) reader.ReadByte(); if (version >= 40) Grade = (ItemGrade)reader.ReadByte(); RequiredType = (RequiredType) reader.ReadByte(); RequiredClass = (RequiredClass) reader.ReadByte(); RequiredGender = (RequiredGender) reader.ReadByte(); if(version >= 17) Set = (ItemSet)reader.ReadByte(); Shape = version >= 30 ? reader.ReadInt16() : reader.ReadSByte(); Weight = reader.ReadByte(); Light = reader.ReadByte(); RequiredAmount = reader.ReadByte(); Image = reader.ReadUInt16(); Durability = reader.ReadUInt16(); StackSize = reader.ReadUInt32(); Price = reader.ReadUInt32(); MinAC = reader.ReadByte(); MaxAC = reader.ReadByte(); MinMAC = reader.ReadByte(); MaxMAC = reader.ReadByte(); MinDC = reader.ReadByte(); MaxDC = reader.ReadByte(); MinMC = reader.ReadByte(); MaxMC = reader.ReadByte(); MinSC = reader.ReadByte(); MaxSC = reader.ReadByte(); if (version < 25) { HP = reader.ReadByte(); MP = reader.ReadByte(); } else { HP = reader.ReadUInt16(); MP = reader.ReadUInt16(); } Accuracy = reader.ReadByte(); Agility = reader.ReadByte(); Luck = reader.ReadSByte(); AttackSpeed = reader.ReadSByte(); StartItem = reader.ReadBoolean(); BagWeight = reader.ReadByte(); HandWeight = reader.ReadByte(); WearWeight = reader.ReadByte(); if (version >= 9) Effect = reader.ReadByte(); if (version >= 20) { Strong = reader.ReadByte(); MagicResist = reader.ReadByte(); PoisonResist = reader.ReadByte(); HealthRecovery = reader.ReadByte(); SpellRecovery = reader.ReadByte(); PoisonRecovery = reader.ReadByte(); HPrate = reader.ReadByte(); MPrate = reader.ReadByte(); CriticalRate = reader.ReadByte(); CriticalDamage = reader.ReadByte(); byte bools = reader.ReadByte(); NeedIdentify = (bools & 0x01) == 0x01; ShowGroupPickup = (bools & 0x02) == 0x02; ClassBased = (bools & 0x04) == 0x04; LevelBased = (bools & 0x08) == 0x08; CanMine = (bools & 0x10) == 0x10; MaxAcRate = reader.ReadByte(); MaxMacRate = reader.ReadByte(); Holy = reader.ReadByte(); Freezing = reader.ReadByte(); PoisonAttack = reader.ReadByte(); if (version < 55) { Bind = (BindMode)reader.ReadByte(); } else { Bind = (BindMode)reader.ReadInt16(); } } if (version >= 21) { Reflect = reader.ReadByte(); HpDrainRate = reader.ReadByte(); Unique = (SpecialItemMode)reader.ReadInt16(); } if (version >= 24) { RandomStatsId = reader.ReadByte(); } else { RandomStatsId = 255; if ((Type == ItemType.Weapon) || (Type == ItemType.Armour) || (Type == ItemType.Helmet) || (Type == ItemType.Necklace) || (Type == ItemType.Bracelet) || (Type == ItemType.Ring) || (Type == ItemType.Mount)) RandomStatsId = (byte)Type; if ((Type == ItemType.Belt) || (Type == ItemType.Boots)) RandomStatsId = 7; } if (version >= 40) CanFastRun = reader.ReadBoolean(); if (version >= 41) { CanAwakening = reader.ReadBoolean(); bool isTooltip = reader.ReadBoolean(); if (isTooltip) ToolTip = reader.ReadString(); } }
public ItemInfo(BinaryReader reader, int version = int.MaxValue, int Customversion = int.MaxValue) { Index = reader.ReadInt32(); Name = reader.ReadString(); Type = (ItemType)reader.ReadByte(); Grade = (ItemGrade)reader.ReadByte(); RequiredType = (RequiredType)reader.ReadByte(); RequiredClass = (RequiredClass)reader.ReadByte(); RequiredGender = (RequiredGender)reader.ReadByte(); Set = (ItemSet)reader.ReadByte(); Shape = reader.ReadInt16(); Weight = reader.ReadByte(); Light = reader.ReadByte(); RequiredAmount = reader.ReadByte(); Image = reader.ReadUInt16(); Durability = reader.ReadUInt16(); StackSize = reader.ReadUInt32(); Price = reader.ReadUInt32(); MinAC = reader.ReadByte(); MaxAC = reader.ReadByte(); MinMAC = reader.ReadByte(); MaxMAC = reader.ReadByte(); MinDC = reader.ReadByte(); MaxDC = reader.ReadByte(); MinMC = reader.ReadByte(); MaxMC = reader.ReadByte(); MinSC = reader.ReadByte(); MaxSC = reader.ReadByte(); HP = reader.ReadUInt16(); MP = reader.ReadUInt16(); Accuracy = reader.ReadByte(); Agility = reader.ReadByte(); Luck = reader.ReadSByte(); AttackSpeed = reader.ReadSByte(); StartItem = reader.ReadBoolean(); BagWeight = reader.ReadByte(); HandWeight = reader.ReadByte(); WearWeight = reader.ReadByte(); Effect = reader.ReadByte(); Strong = reader.ReadByte(); MagicResist = reader.ReadByte(); PoisonResist = reader.ReadByte(); HealthRecovery = reader.ReadByte(); SpellRecovery = reader.ReadByte(); PoisonRecovery = reader.ReadByte(); HPrate = reader.ReadByte(); MPrate = reader.ReadByte(); CriticalRate = reader.ReadByte(); CriticalDamage = reader.ReadByte(); byte bools = reader.ReadByte(); NeedIdentify = (bools & 0x01) == 0x01; ShowGroupPickup = (bools & 0x02) == 0x02; ClassBased = (bools & 0x04) == 0x04; LevelBased = (bools & 0x08) == 0x08; CanMine = (bools & 0x10) == 0x10; if (version >= 77) { GlobalDropNotify = (bools & 0x20) == 0x20; } MaxAcRate = reader.ReadByte(); MaxMacRate = reader.ReadByte(); Holy = reader.ReadByte(); Freezing = reader.ReadByte(); PoisonAttack = reader.ReadByte(); Bind = (BindMode)reader.ReadInt16(); Reflect = reader.ReadByte(); HpDrainRate = reader.ReadByte(); Unique = (SpecialItemMode)reader.ReadInt16(); RandomStatsId = reader.ReadByte(); CanFastRun = reader.ReadBoolean(); CanAwakening = reader.ReadBoolean(); bool isTooltip = reader.ReadBoolean(); if (isTooltip) { ToolTip = reader.ReadString(); } if (version < 70) //before db version 70 all specialitems had wedding rings disabled, after that it became a server option { if ((Type == ItemType.Ring) && (Unique != SpecialItemMode.None)) { Bind |= BindMode.NoWeddingRing; } } }
public List <LMS_RewardInfo> CreateRewards(byte rank, PlayerObject player) { RequiredClass playersClass = player.Class == MirClass.Warrior ? RequiredClass.Warrior : player.Class == MirClass.Wizard ? RequiredClass.Wizard : player.Class == MirClass.Taoist ? RequiredClass.Taoist : player.Class == MirClass.Assassin ? RequiredClass.Assassin : RequiredClass.Archer; List <LMS_RewardInfo> rewards = new List <LMS_RewardInfo>(); List <LMS_RewardInfo> group0 = new List <LMS_RewardInfo>(); List <LMS_RewardInfo> group1 = new List <LMS_RewardInfo>(); List <LMS_RewardInfo> group2 = new List <LMS_RewardInfo>(); List <LMS_RewardInfo> group3 = new List <LMS_RewardInfo>(); List <LMS_RewardInfo> group4 = new List <LMS_RewardInfo>(); for (int i = 0; i < Info.Rewards.Count; i++) { if (Info.Rewards[i].Rank == 0) { } else if (Info.Rewards[i].Rank != rank) { continue; } if (Info.Rewards[i].RequiredClass == RequiredClass.None) { } else if (Info.Rewards[i].RequiredClass != playersClass) { continue; } if (Info.Rewards[i].Group == 0) { group0.Add(Info.Rewards[i]); } else if (Info.Rewards[i].Group == 1) { group1.Add(Info.Rewards[i]); } else if (Info.Rewards[i].Group == 2) { group2.Add(Info.Rewards[i]); } else if (Info.Rewards[i].Group == 3) { group3.Add(Info.Rewards[i]); } else if (Info.Rewards[i].Group == 4) { group4.Add(Info.Rewards[i]); } } if (group0 != null && group0.Count > 0) { int item1Index = group0.Count == 1 ? 0 : Envir.Random.Next(0, group0.Count - 1); if (group0[item1Index] != null) { if (Envir.Random.Next(0, 10000) <= group0[item1Index].Rate) { rewards.Add(group0[item1Index]); } } } if (group1 != null && group1.Count > 0) { int item2Index = group1.Count == 1 ? 0 : Envir.Random.Next(0, group1.Count - 1); if (Envir.Random.Next(0, 10000) <= group1[item2Index].Rate) { rewards.Add(group1[item2Index]); } } if (group2 != null && group2.Count > 0) { int item3Index = group2.Count == 1 ? 0 : Envir.Random.Next(0, group2.Count - 1); if (Envir.Random.Next(0, 10000) <= group2[item3Index].Rate) { rewards.Add(group2[item3Index]); } } if (group3 != null && group3.Count > 0) { int item4Index = group3.Count == 1 ? 0 : Envir.Random.Next(0, group3.Count - 1); if (Envir.Random.Next(0, 10000) <= group3[item4Index].Rate) { rewards.Add(group3[item4Index]); } } if (group4 != null && group4.Count > 0) { int item5Index = group4.Count == 1 ? 0 : Envir.Random.Next(0, group4.Count - 1); if (Envir.Random.Next(0, 10000) <= group4[item5Index].Rate) { rewards.Add(group4[item5Index]); } } return(rewards); }
public ItemInfo(BinaryReader reader, int version = int.MaxValue) { Index = reader.ReadInt32(); Name = reader.ReadString(); Type = (ItemType) reader.ReadByte(); RequiredType = (RequiredType) reader.ReadByte(); RequiredClass = (RequiredClass) reader.ReadByte(); RequiredGender = (RequiredGender) reader.ReadByte(); Shape = reader.ReadSByte(); Weight = reader.ReadByte(); Light = reader.ReadByte(); RequiredAmount = reader.ReadByte(); Image = reader.ReadUInt16(); Durability = reader.ReadUInt16(); StackSize = reader.ReadUInt32(); Price = reader.ReadUInt32(); MinAC = reader.ReadByte(); MaxAC = reader.ReadByte(); MinMAC = reader.ReadByte(); MaxMAC = reader.ReadByte(); MinDC = reader.ReadByte(); MaxDC = reader.ReadByte(); MinMC = reader.ReadByte(); MaxMC = reader.ReadByte(); MinSC = reader.ReadByte(); MaxSC = reader.ReadByte(); HP = reader.ReadByte(); MP = reader.ReadByte(); Accuracy = reader.ReadByte(); Agility = reader.ReadByte(); Luck = reader.ReadSByte(); AttackSpeed = reader.ReadSByte(); StartItem = reader.ReadBoolean(); BagWeight = reader.ReadByte(); HandWeight = reader.ReadByte(); WearWeight = reader.ReadByte(); if (version >= 9) Effect = reader.ReadByte(); }
public ItemInfo(BinaryReader reader, int version = int.MaxValue, int customVersion = int.MaxValue) { Index = reader.ReadInt32(); Name = reader.ReadString(); Type = (ItemType)reader.ReadByte(); Grade = (ItemGrade)reader.ReadByte(); RequiredType = (RequiredType)reader.ReadByte(); RequiredClass = (RequiredClass)reader.ReadByte(); RequiredGender = (RequiredGender)reader.ReadByte(); Set = (ItemSet)reader.ReadByte(); Shape = reader.ReadInt16(); Weight = reader.ReadByte(); Light = reader.ReadByte(); RequiredAmount = reader.ReadByte(); Image = reader.ReadUInt16(); Durability = reader.ReadUInt16(); if (version <= 84) { StackSize = (ushort)reader.ReadUInt32(); } else { StackSize = reader.ReadUInt16(); } Price = reader.ReadUInt32(); if (version <= 84) { Stats = new Stats(); Stats[Stat.MinAC] = reader.ReadByte(); Stats[Stat.MaxAC] = reader.ReadByte(); Stats[Stat.MinMAC] = reader.ReadByte(); Stats[Stat.MaxMAC] = reader.ReadByte(); Stats[Stat.MinDC] = reader.ReadByte(); Stats[Stat.MaxDC] = reader.ReadByte(); Stats[Stat.MinMC] = reader.ReadByte(); Stats[Stat.MaxMC] = reader.ReadByte(); Stats[Stat.MinSC] = reader.ReadByte(); Stats[Stat.MaxSC] = reader.ReadByte(); Stats[Stat.HP] = reader.ReadUInt16(); Stats[Stat.MP] = reader.ReadUInt16(); Stats[Stat.Accuracy] = reader.ReadByte(); Stats[Stat.Agility] = reader.ReadByte(); Stats[Stat.Luck] = reader.ReadSByte(); Stats[Stat.AttackSpeed] = reader.ReadSByte(); } StartItem = reader.ReadBoolean(); if (version <= 84) { Stats[Stat.BagWeight] = reader.ReadByte(); Stats[Stat.HandWeight] = reader.ReadByte(); Stats[Stat.WearWeight] = reader.ReadByte(); } Effect = reader.ReadByte(); if (version <= 84) { Stats[Stat.Strong] = reader.ReadByte(); Stats[Stat.MagicResist] = reader.ReadByte(); Stats[Stat.PoisonResist] = reader.ReadByte(); Stats[Stat.HealthRecovery] = reader.ReadByte(); Stats[Stat.SpellRecovery] = reader.ReadByte(); Stats[Stat.PoisonRecovery] = reader.ReadByte(); Stats[Stat.HPRatePercent] = reader.ReadByte(); Stats[Stat.MPRatePercent] = reader.ReadByte(); Stats[Stat.CriticalRate] = reader.ReadByte(); Stats[Stat.CriticalDamage] = reader.ReadByte(); } byte bools = reader.ReadByte(); NeedIdentify = (bools & 0x01) == 0x01; ShowGroupPickup = (bools & 0x02) == 0x02; ClassBased = (bools & 0x04) == 0x04; LevelBased = (bools & 0x08) == 0x08; CanMine = (bools & 0x10) == 0x10; if (version >= 77) { GlobalDropNotify = (bools & 0x20) == 0x20; } if (version <= 84) { Stats[Stat.MaxACRatePercent] = reader.ReadByte(); Stats[Stat.MaxMACRatePercent] = reader.ReadByte(); Stats[Stat.Holy] = reader.ReadByte(); Stats[Stat.Freezing] = reader.ReadByte(); Stats[Stat.PoisonAttack] = reader.ReadByte(); } Bind = (BindMode)reader.ReadInt16(); if (version <= 84) { Stats[Stat.Reflect] = reader.ReadByte(); Stats[Stat.HPDrainRatePercent] = reader.ReadByte(); } Unique = (SpecialItemMode)reader.ReadInt16(); RandomStatsId = reader.ReadByte(); CanFastRun = reader.ReadBoolean(); CanAwakening = reader.ReadBoolean(); if (version > 83) { Slots = reader.ReadByte(); } if (version > 84) { Stats = new Stats(reader); } bool isTooltip = reader.ReadBoolean(); if (isTooltip) { ToolTip = reader.ReadString(); } if (version < 70) //before db version 70 all specialitems had wedding rings disabled, after that it became a server option { if ((Type == ItemType.Ring) && (Unique != SpecialItemMode.None)) { Bind |= BindMode.NoWeddingRing; } } }