private QuestRewardItemGroup BuildItemGroup(QuestRewardGroupType type, string itemPrefix, string countPrefix, string stainPrefix, string hqPrefix, int count) { List <QuestRewardItem> items = new List <QuestRewardItem>(); for (int i = 0; i < count; ++i) { Item itm = Quest.As <Item>(itemPrefix, i); int c = Quest.AsInt32(countPrefix, i); if (itm == null || itm.Key == 0 || c == 0) { continue; } Stain s = null; if (stainPrefix != null) { s = Quest.As <Stain>(stainPrefix, i); } bool isHq = false; if (hqPrefix != null) { isHq = Quest.AsBoolean(hqPrefix, i); } items.Add(new QuestRewardItem(itm, c, s, isHq)); } return(new QuestRewardItemGroup(items, type, null)); }
private QuestRewardItemGroup BuildItemGroup(QuestRewardGroupType type, string itemPrefix, string countPrefix, string stainPrefix, int count) { var items = new List <QuestRewardItem>(); for (var i = 0; i < count; ++i) { var itm = Quest.As <Item>(itemPrefix, i); var c = Quest.AsInt32(countPrefix, i); if (itm.Key == 0 || c == 0) { continue; } Stain s = null; if (stainPrefix != null) { s = Quest.As <Stain>(stainPrefix, i); } items.Add(new QuestRewardItem(itm, c, s)); } return(new QuestRewardItemGroup(items, type)); }
private QuestRewardItemGroup[] BuildItems() { const int CatalystCount = 3; const int Group1Count = 6; const int Group2Count = 5; int groupsType = Quest.AsInt32("ItemRewardType"); QuestRewardGroupType t1 = QuestRewardGroupType.Unknown; QuestRewardGroupType t2 = QuestRewardGroupType.Unknown; switch (groupsType) { case 0: return(new QuestRewardItemGroup[0]); case 1: t1 = QuestRewardGroupType.All; t2 = QuestRewardGroupType.One; break; case 3: // Gender-specific rewards. case 7: // Beast rank bonuses. // Special handler break; case 5: t1 = QuestRewardGroupType.OnePerDay; t2 = QuestRewardGroupType.OnePerDay; break; case 6: // Relic quests break; } List <QuestRewardItemGroup> groups = new List <QuestRewardItemGroup>(); QuestRewardItemGroup catalysts = BuildItemGroup(QuestRewardGroupType.All, "Item{Catalyst}", "ItemCount{Catalyst}", null, null, CatalystCount); groups.Add(catalysts); int tomestoneCount = Quest.AsInt32("TomestoneCount{Reward}"); if (tomestoneCount > 0) { Item tomestoneItem = Quest.As <Item>("Tomestone{Reward}"); if (tomestoneItem != null) { groups.Add( new QuestRewardItemGroup( new[] { new QuestRewardItem(tomestoneItem, tomestoneCount, null, false) }, QuestRewardGroupType.All, null)); } } if (groupsType == 3) { { Item mItem = Quest.As <Item>("Item{Reward}[0]", 0); int mCount = Quest.AsInt32("ItemCount{Reward}[0]", 0); Stain mStain = Quest.As <Stain>("Stain{Reward}[0]", 0); groups.Add( new QuestRewardItemGroup( new[] { new QuestRewardItem(mItem, mCount, mStain, false) }, QuestRewardGroupType.GenderSpecificMale, null)); } { Item fItem = Quest.As <Item>("Item{Reward}[0]", 1); int fCount = Quest.AsInt32("ItemCount{Reward}[0]", 1); Stain fStain = Quest.As <Stain>("Stain{Reward}[0]", 1); groups.Add( new QuestRewardItemGroup( new[] { new QuestRewardItem(fItem, fCount, fStain, false) }, QuestRewardGroupType.GenderSpecificFemale, null)); } } else if (groupsType == 6) { groups.AddRange(BuildClassQuestJobRewardItemGroups("Item{Reward}[0]", Group1Count)); groups.Add(BuildItemGroup(t2, "Item{Reward}[1]", "ItemCount{Reward}[1]", "Stain{Reward}[1]", "IsHQ{Reward}[1]", Group2Count)); } else if (groupsType == 7) { XivRow beastRankBonus = (XivRow)Quest.BeastTribe["BeastRankBonus"]; Item item = beastRankBonus.As <Item>(); List <int> counts = new List <int>(); for (int i = 0; i < 8; i++) { counts.Add(beastRankBonus.AsInt32("Item{Quantity}", i)); } groups.Add(new QuestRewardItemGroup(new[] { new QuestRewardItem(item, counts.Distinct(), null, false) }, QuestRewardGroupType.BeastRankBonus, null)); } else { groups.Add(BuildItemGroup(t1, "Item{Reward}[0]", "ItemCount{Reward}[0]", "Stain{Reward}[0]", null, Group1Count)); groups.Add(BuildItemGroup(t2, "Item{Reward}[1]", "ItemCount{Reward}[1]", "Stain{Reward}[1]", "IsHQ{Reward}[1]", Group2Count)); } return(groups.Where(g => g.Items.Any()).ToArray()); }
private QuestRewardItemGroup BuildItemGroup(QuestRewardGroupType type, string itemPrefix, string countPrefix, string stainPrefix, int count) { var items = new List<QuestRewardItem>(); for (var i = 0; i < count; ++i) { var itm = Quest.As<Item>(itemPrefix, i); var c = Quest.AsInt32(countPrefix, i); if (itm.Key == 0 || c == 0) continue; Stain s = null; if (stainPrefix != null) s = Quest.As<Stain>(stainPrefix, i); items.Add(new QuestRewardItem(itm, c, s)); } return new QuestRewardItemGroup(items, type); }
public QuestRewardItemGroup(IEnumerable <QuestRewardItem> items, QuestRewardGroupType type, ClassJobCategory category) { this.Items = items; this.Type = type; this.ClassJobCategory = category; }
public QuestRewardItemGroup(IEnumerable<QuestRewardItem> items, QuestRewardGroupType type) { this.Items = items; this.Type = type; }
public QuestRewardItemGroup(IEnumerable <QuestRewardItem> items, QuestRewardGroupType type) { this.Items = items; this.Type = type; }