public Quest(ushort type, XElement elem) { XElement n; QuestType = type; QuestId = elem.Attribute("id").Value; if ((n = elem.Element("LevelReq")) != null) { LevelRequirement = Utils.FromString(n.Value); } else { LevelRequirement = 0; } QuestRequirement = new List <string>(); foreach (var i in elem.Elements("QuestReq")) { QuestRequirement.Add(i.Value); } Objectives = new List <QuestObjective>(); foreach (var i in elem.Elements("Objective")) { Objectives.Add(new QuestObjective(i)); } Rewards = new QuestReward(); if ((n = elem.Element("Reward")) != null) { Rewards.FromXML(n); } }
private bool Reward(Player player) { QuestReward reward = Global.QuestEngine.GetRewardForPlayer(player, Quest); if (reward != null && reward.Items != null) { if (Global.StorageService.GetFreeSlots(player.Inventory).Count < reward.Items.Count) { SystemMessages.InventoryIsFull.Send(player); return(false); } foreach (KeyValuePair <int, int> keyValuePair in reward.Items) { Global.StorageService.AddItem(player, player.Inventory, keyValuePair.Key, keyValuePair.Value); } } if (Quest.RewardMoney > 0) { Global.StorageService.AddMoneys(player, player.Inventory, Quest.RewardMoney); SystemMessages.YouReceiveMoney(Quest.RewardMoney.ToString(CultureInfo.InvariantCulture)).Send(player.Connection); } if (Quest.RewardExp > 0) { Global.PlayerService.AddExp(player, Quest.RewardExp, null); } return(true); }
private static void ShowQuestRewardInfo(ref bool show, string prefix, QuestReward reward) { RPGMakerGUI.FoldoutList(ref show, prefix, reward.Items, Rm_RPGHandler.Instance.Repositories.Items.AllItems, "+ItemReward", "", "Click +ItemReward to add an item as a reward.", "ItemID"); RPGMakerGUI.FoldoutList(ref show, prefix + " (Craftable Items)", reward.CraftableItems, Rm_RPGHandler.Instance.Repositories.CraftableItems.AllItems, "+CraftItemReward", "", "Click +CraftItemReward to add a craftable item as a reward.", "ItemID"); RPGMakerGUI.FoldoutList(ref show, prefix + " (Quest Items)", reward.QuestItems, Rm_RPGHandler.Instance.Repositories.QuestItems.AllItems, "+QuestItemReward", "", "Click +QuestItemReward to add a quest item as a reward.", "ItemID"); reward.Exp = RPGMakerGUI.IntField("Exp Reward:", reward.Exp); reward.Gold = RPGMakerGUI.IntField("Gold Reward:", reward.Gold); if (RPGMakerGUI.Toggle("Gives Reputation?", ref reward.GivesReputation)) { RPGMakerGUI.PopupID <ReputationDefinition>("- Reputation", ref reward.Reputation.ReputationID); reward.Reputation.Value = RPGMakerGUI.IntField("- Amount", reward.Reputation.Value); } if (RPGMakerGUI.Toggle("Gives Trait Exp?", ref reward.GivesTraitExp)) { RPGMakerGUI.PopupID <Rm_TraitDefintion>("- Trait", ref reward.TraitID); reward.TraitExp = RPGMakerGUI.IntField("- Amount", reward.TraitExp); } if (RPGMakerGUI.Toggle("Unlocks Skill?", ref reward.UnlocksSkill)) { RPGMakerGUI.PopupID <Skill>("- Skill", ref reward.SkillID); } if (RPGMakerGUI.Toggle("Applys Status Effect?", ref reward.ApplysStatusEffect)) { RPGMakerGUI.PopupID <StatusEffect>("- Status Effect", ref reward.StatusEffectID); } }
private void WriteReward(BinaryWriter w, QuestReward o) { w.Write((byte)o.Type); w.Write(o.Value); w.Write((sbyte)o.LuckMorale); w.Write((byte)o.Resource); w.Write((byte)o.SkillType); if (o.SecondarySkill != null) { w.Write((byte)o.SecondarySkill.Level); w.Write((byte)o.SecondarySkill.Type); } if (o.Artifact != null) { w.Write(o.Artifact.Value); } if (o.Spell != null) { w.Write(o.Spell.Value); } if (o.Monster != null) { w.Write(o.Monster.Value); } }
private Quest GetRandomQuest(QuestReward type) { List <string> usedQuests = new List <string>(); for (int i = 0; i < currentQuests.Count; ++i) { usedQuests.Add(currentQuests[i].name); } List <Quest> validQuests = new List <Quest> (); for (int i = 0; i < quests.Count; ++i) { if (quests[i].rewardType == type && !usedQuests.Contains(quests[i].name)) { validQuests.Add(quests[i]); } } if (validQuests.Count == 0) { Debug.Log("no valid quests. type: " + type.ToString()); return(null); } int random = Random.Range(0, validQuests.Count); Quest quest = validQuests [random].GetDublicate(); quest.CalculateTroops(baseDifficultyValue); return(quest); }
private void RewardImpl(QuestReward reward) { switch (reward.Type) { case QuestRewardType.credits: { GetComponent <MmoActor>()?.ActionExecutor?._AddCredits(reward.Count); } break; case QuestRewardType.exp: { GetComponent <PlayerCharacterObject>()?.AddExp(reward.Count); } break; case QuestRewardType.nebula_credits: { GetComponent <MmoActor>()?.ActionExecutor?.AddNebulaCredits(reward.Count); } break; case QuestRewardType.item: { InventoryItemQuestReward itemQuestReward = reward as InventoryItemQuestReward; if (itemQuestReward != null) { RewardItemImpl(itemQuestReward); } } break; } }
public void SendDialog(Quest quest = null, QuestReward reward = null) { new SpShowDialog(Npc, Stage, Buttons, DialogId, Special1, Special2, Page, Uid, quest, reward).Send(Player.Connection); Global.VisibleService.Send(Player, new SpCharacterEmotions(Player, PlayerEmotion.Dialog)); Global.VisibleService.Send(Npc, new SpNpcEmotion(Npc, Player, new Random().Next(1, 3))); }
private static void AddReward(Player player, QuestReward reward) { switch (reward.RewardType) { case QuestRewardType.Attribute: var attribute = player.SelectedCharacter !.Attributes.FirstOrDefault(a => a.Definition == reward.AttributeReward); if (attribute is null) { attribute = player.PersistenceContext.CreateNew <StatAttribute>(reward.AttributeReward, 0); player.SelectedCharacter.Attributes.Add(attribute); } attribute.Value += reward.Value; player.ViewPlugIns.GetPlugIn <ILegacyQuestRewardPlugIn>()?.Show(player, QuestRewardType.Attribute, reward.Value, attribute.Definition); break; case QuestRewardType.Item: var item = player.PersistenceContext.CreateNew <Item>(); item.AssignValues(reward.ItemReward ?? throw new InvalidOperationException($"Reward {reward.GetId()} is defined as item reward, but has no item assigned")); if (player.Inventory !.AddItem(item)) { player.ViewPlugIns.GetPlugIn <IItemAppearPlugIn>()?.ItemAppear(item); } else { player.CurrentMap?.Add(new DroppedItem(item, player.Position, player.CurrentMap, player, player.GetAsEnumerable())); } break;
public void AddReward(string questId, QuestReward reward) { if (!currentEntries.TryGetValue(questId, out QuestsTrackerEntry entry)) { return; } entry.AddRewardToGive(reward); }
public static void SendRewardObtained(QuestModel quest, QuestReward reward) { var data = new Dictionary <string, string>(); FillQuestData(data, quest); FillRewardData(data, reward); GenericAnalytics.SendAnalytic(REWARD_OBTAINED, data); }
public void ShowRewardObtained(QuestReward reward) { var questNotification = Instantiate(rewardObtainedPrefab, transform).GetComponent <QuestNotification_RewardObtained>(); questNotification.Populate(reward); questNotification.gameObject.SetActive(false); notificationsQueue.Enqueue(questNotification); }
public void ReadXmlPrototype(XmlTextReader reader_parent) { Name = reader_parent.GetAttribute("Name"); Goals = new List <QuestGoal>(); Rewards = new List <QuestReward>(); PreRequiredCompletedQuest = new List <string>(); XmlReader reader = reader_parent.ReadSubtree(); while (reader.Read()) { switch (reader.Name) { case "Description": reader.Read(); Description = reader.ReadContentAsString(); break; case "PreRequiredCompletedQuests": XmlReader subReader = reader.ReadSubtree(); while (subReader.Read()) { if (subReader.Name == "PreRequiredCompletedQuest") { PreRequiredCompletedQuest.Add(subReader.GetAttribute("Name")); } } break; case "Goals": XmlReader goals_reader = reader.ReadSubtree(); while (goals_reader.Read()) { if (goals_reader.Name == "Goal") { QuestGoal goal = new QuestGoal(); goal.ReadXmlPrototype(goals_reader); Goals.Add(goal); } } break; case "Rewards": XmlReader reward_reader = reader.ReadSubtree(); while (reward_reader.Read()) { if (reward_reader.Name == "Reward") { QuestReward reward = new QuestReward(); reward.ReadXmlPrototype(reward_reader); Rewards.Add(reward); } } break; } } }
public QuestData(int ID, Quest quest, string name, string Contents, QuestReward reward, Current current) { QuestID = ID; this.quest = quest; QuestName = name; QuestContents = Contents; Reward = reward; this.current = current; }
public void CreateQueustLog(QuestReward reward) { var logs = _dataRepository.GetLogs(); var logText = reward.ToString(); var newLog = new Log(LogTypeEnum.Quest, logText); logs.Insert(0, newLog); _dataRepository.SaveToFile(logs); }
public override void Handle(GameSession session, PacketReader packet) // TODO: Refactor when DB is implemented { QuestMode mode = (QuestMode)packet.ReadByte(); switch (mode) { case QuestMode.AcceptQuest: { int questid = packet.ReadInt(); int objectid = packet.ReadInt(); session.Send(QuestPacket.AcceptQuest(questid)); break; } case QuestMode.CompleteQuest: { int questid = packet.ReadInt(); int objectid = packet.ReadInt(); session.Send(QuestPacket.CompleteQuest(questid)); QuestReward quest = QuestMetadataStorage.GetMetadata(questid).Reward; session.Player.Levels.GainExp(quest.Exp); session.Player.Wallet.Meso.Modify(quest.Money); break; } case QuestMode.ExplorationGoals: List <QuestMetadata> list = new List <QuestMetadata>(); int listSize = packet.ReadInt(); for (int i = 0; i < listSize; i++) { list.Add(QuestMetadataStorage.GetMetadata(packet.ReadInt())); } session.Send(QuestPacket.SendQuests(list)); break; case QuestMode.CompleteNavigator: int questId = packet.ReadInt(); foreach (QuestRewardItem item in QuestMetadataStorage.GetMetadata(questId).RewardItem) { InventoryController.Add(session, new Types.Item(item.Code), true); } session.Send(QuestPacket.CompleteQuest(questId)); break; default: IPacketHandler <GameSession> .LogUnknownMode(mode); break; } }
public string QuestCompleted(int nID, QuestReward reward, bool bGoldReward, bool bMBReward) { Quest quest = Data.Singleton.Quests.FirstOrDefault(obj => obj.QuestID == nID); Bitmap result = new Bitmap(350, 120); using (Graphics g = Graphics.FromImage(result)) using (StringFormat sf = new StringFormat()) using (SolidBrush b = new SolidBrush(Color.Black)) using (SolidBrush b2 = new SolidBrush(m_arQuestColors[1])) { g.Clear(Color.FromArgb(240, 240, 240)); g.FillRectangle(b2, new Rectangle(0, 0, 8, 120)); g.DrawImage(AddIcons[2], 10, 15); // Text using (Font f = new Font(FontCollection.Families[0], 14, FontStyle.Bold)) g.DrawString(quest.Name, f, b, new Rectangle(104, 14, 250, 20), sf); using (Font f = new Font(FontCollection.Families[0], 12, FontStyle.Regular)) g.DrawString(quest.Description, f, b, new Rectangle(105, 34, 250, 20), sf); using (Font f = new Font(FontCollection.Families[0], 16, FontStyle.Regular)) { // XP g.DrawString("+" + reward.XP.ToString() + "XP", f, b, new Rectangle(105, 60, 200, 25)); // MONEY g.DrawImage(Icons[0], new Rectangle(190, 60, 25, 25)); if (bGoldReward) { g.DrawString(reward.Gold.ToString(), f, b, new Rectangle(215, 60, 215, 25)); } else { g.DrawString("0", f, b, new Rectangle(215, 60, 215, 25)); } // MYSTERY BOX if (bMBReward) { g.DrawImage(Items[12], new Rectangle(265, 52, 40, 40)); } } } Random rnd = new Random(); int x = rnd.Next(100); result.Save(Path.Combine(FilePath, x + "QuestCompleted.png"), ImageFormat.Png); return(x + "QuestCompleted.png"); }
private static void FillRewardData(Dictionary <string, string> data, QuestReward reward) { if (reward == null) { return; } data.Add("reward_id", reward.id); data.Add("reward_name", reward.name); data.Add("reward_type", reward.type); }
//跑腿任务 public Quest(int id, string name, string des, QuestType questType, int npcid, QuestReward questRewards, int startnpcid) { ID = id; Name = name; Des = des; Questtype = questType; NPCID = npcid; QuestRewards = questRewards; StartNPCID = startnpcid; SetTypeIcon(); }
//得到物品任务 public Quest(int id, string name, string des, QuestType questType, int npcid, QuestReward questRewards, int itemid, int count) { ID = id; Name = name; Des = des; Questtype = questType; NPCID = npcid; QuestRewards = questRewards; ItemID = itemid; Count = count; SetTypeIcon(); }
//杀敌任务 public Quest(int id, string name, string des, QuestType questType, int npcid, int enemyid, int killcount, QuestReward questRewards) { ID = id; Name = name; Des = des; Questtype = questType; NPCID = npcid; QuestRewards = questRewards; SetTypeIcon(); EnemyID = enemyid; KillCount = killcount; }
public Quest(int id, string name, string des, QuestType questType, int npcid, QuestReward questRewards) { ID = id; Name = name; Des = des; Questtype = questType; NPCID = npcid; QuestRewards = questRewards; SetTypeIcon(); Queststatus = QuestStatus.None; CurrentStatus = Queststatus; }
private void Awake() { if (Instance == null) { Instance = this; //DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); } text = GetComponent <TextMeshProUGUI>(); }
public SpShowDialog(Npc npc, int stage, List <DialogButton> buttons, int dialogId, int special1, int special2, int page, int dialogUid, Quest quest = null, QuestReward reward = null) { Npc = npc; Stage = stage; Buttons = buttons; DialogUid = dialogUid; DialogId = dialogId; Special1 = special1; Special2 = special2; Page = page; Quest = quest; Reward = reward; }
public void SelectReward(QuestReward reward) { if (_questState == QuestState.Finished) { if (_rewardSelect.Contains(reward)) { _rewardSelected = reward; } else { throw new System.Exception("Selected reward is not available"); } } }
public void ParseQuestInfo() { QuestList = new List <Quest>(); TextAsset QuestText = Resources.Load <TextAsset>("Json/QuestsInfo"); string questsJson = QuestText.text; JSONObject j = new JSONObject(questsJson); foreach (JSONObject temp in j.list) { int id = (int)temp["id"].n; string name = temp["name"].str; string des = temp["des"].str; int npcid = (int)temp["npcid"].n; JSONObject j2 = temp["reward"]; int coin = (int)j2["coin"].n; int exp = (int)j2["exp"].n; QuestReward questReward = new QuestReward(coin, exp); Quest.QuestType type = (Quest.QuestType)System.Enum.Parse(typeof(Quest.QuestType), temp["type"].str); Quest quest = null; switch (type) { case Quest.QuestType.Combat: int enemyid = (int)temp["enemyid"].n; int killcount = (int)temp["killcount"].n; quest = new Quest(id, name, des, type, npcid, enemyid, killcount, questReward); break; case Quest.QuestType.Talk: int endnpcid = (int)temp["startnpcid"].n; quest = new Quest(id, name, des, type, npcid, questReward, endnpcid); break; case Quest.QuestType.GetItem: int itemid = (int)temp["itemid"].n; int count = (int)temp["count"].n; quest = new Quest(id, name, des, type, npcid, questReward, itemid, count); break; case Quest.QuestType.Work: quest = new Quest(id, name, des, type, npcid, questReward); break; } QuestList.Add(quest); } }
public static string GetReward(this QuestRewardType type, QuestReward info) { var rewardKey = "quest_reward_" + Convert.ToInt32(type); switch (type) { case QuestRewardType.AvatarClothing: case QuestRewardType.Quest: return(Translator.Instance.Translate(rewardKey)); case QuestRewardType.Candy: var name = Translator.Instance.GetPokemonName(info.Ditto ? 132 : info.PokemonId); return(Translator.Instance.Translate(rewardKey, info.Amount, name)); case QuestRewardType.Experience: return(Translator.Instance.Translate(rewardKey, info.Amount)); case QuestRewardType.Item: var itemName = Translator.Instance.GetItem(info.Item); return(Translator.Instance.Translate(rewardKey, info.Amount, itemName)); case QuestRewardType.PokemonEncounter: var formName = info.FormId > 0 ? Translator.Instance.GetFormName(info.FormId) : null; var pkmnName = (info.Shiny ? $"**SHINY** " : "") + Translator.Instance.GetPokemonName(info.Ditto ? 132 : info.PokemonId); return($"{pkmnName} {formName}"); case QuestRewardType.Stardust: return(Translator.Instance.Translate(rewardKey, info.Amount)); case QuestRewardType.MegaResource: return(Translator.Instance.Translate(rewardKey, info.PokemonId, info.Amount)); case QuestRewardType.XlCandy: // TODO: By PokemonId? return(Translator.Instance.Translate(rewardKey, info.Amount)); case QuestRewardType.Sticker: return(Translator.Instance.Translate(rewardKey, info.StickerId, info.Amount)); case QuestRewardType.Pokecoin: return(Translator.Instance.Translate(rewardKey, info.Amount)); case QuestRewardType.LevelCap: return(type.ToString()); } return("Unknown"); }
private void btnAddReward_Click(object sender, EventArgs e) { ListViewItem lvi = lvSteps.SelectedItems[0]; QuestStep qs = (QuestStep)lvi.Tag; // Create reward QuestReward qr = new QuestReward((byte)Math.Max(cbRewardType.SelectedIndex, 0), 0); qr.New = true; // Add to the step qs.Rewards.Add(qr); // Add to the display AddRewardToDisplay(qr); SetDirty(true); }
internal IEnumerator QuestManageCycle() { if (mode == 0) { SaveEmptyTree(); yield break; } // load all quests in game from files. LoadQuestsFromFiles(); while (true) { // load proper set GameManager.Instance.quests.SetNextSetOfQuests(); // load quests on ui GameManager.Instance.ui.ShowQuestChoices(GameManager.Instance.quests.ActiveQuestSet); // wait ui input, then close ui while (!GameManager.Instance.ui.anySelectedQuest) { yield return(null); } GameManager.Instance.ui.ConsumeSelectedQuest(); GameManager.Instance.ui.HideQuestUI(); // start quest and for it to end QuestReward reward = GameManager.Instance.quests.ActiveQuest.reward; GameManager.Instance.quests.StartWaves(); yield return(null); while (GameManager.Instance.quests.AnyQuest) { yield return(null); } // apply quest results // temporary solution GameManager.Instance.station.BuildNextPiece(GameManager.Instance.station.NextAvaliablePiece()); //reward.Apply(GameManager.Instance.station.NextBuildPos); Debug.Log("[QUEST] current quest ended"); yield return(null); } }
public static bool ToQuestReward(QuestRewardDTO input, QuestReward output) { if (input == null) { return(false); } output.QuestRewardId = input.QuestRewardId; output.RewardType = input.RewardType; output.Data = input.Data; output.Design = input.Design; output.Rarity = input.Rarity; output.Upgrade = input.Upgrade; output.Amount = input.Amount; output.QuestId = input.QuestId; return(true); }
public Tbl_QuestReward_Record(XmlNode mainNode) { try { m_Reward = new QuestReward(); foreach (XmlNode node in mainNode.ChildNodes) { QuestReward.LoadFromXml(m_Reward, node); } } catch (System.Exception e) { System.Diagnostics.Trace.WriteLine(e.Message); } }
public QuestItem(int id, string releaseNpc, int overNpc, string questName, string questDescr, string[] questDialogueNpc, string[] questDialoguePlayer, string unFinished, string finished, QuestNPC[] questTalkNpc, bool questAccept, bool questState, bool questSubmit, QuestEnemy[] questKillEnemy, Quest_Item[] questNeedItem, QuestReward questRewardItem) { this.id = id; this.releaseNpc = releaseNpc; this.overNpc = overNpc; this.questName = questName; this.questDescr = questDescr; this.questDialogueNpc = questDialogueNpc; this.questDialoguePlayer = questDialoguePlayer; this.unFinished = unFinished; this.finished = finished; this.questTalkNpc = questTalkNpc; this.questAccept = questAccept; this.questState = questState; this.questSubmit = questSubmit; this.questKillEnemy = questKillEnemy; this.questNeedItem = questNeedItem; this.questRewardItem = questRewardItem; }
public void SetUp() { QuestModel questMock = new QuestModel { id = MOCK_QUEST_ID, status = QuestsLiterals.Status.ON_GOING }; QuestSection sectionMock = new QuestSection { id = MOCK_SECTION_ID }; QuestTask taskMock = new QuestTask { id = MOCK_TASK_ID }; QuestReward rewardMock = new QuestReward { id = MOCK_REWARD_ID }; sectionMock.tasks = new [] { taskMock }; questMock.sections = new [] { sectionMock }; questMock.rewards = new [] { rewardMock }; DataStore.i.Quests.quests.Set(new []
void AddRewardToDisplay(QuestReward qr) { ListViewItem rvi = lvRewards.Items.Add(qr.Type.ToString()); rvi.SubItems.Add(RewardContextString(qr)); rvi.Tag = qr; }
public Quest(ushort type, XElement elem) { XElement n; QuestType = type; QuestId = elem.Attribute("id").Value; if ((n = elem.Element("LevelReq")) != null) LevelRequirement = Utils.FromString(n.Value); else LevelRequirement = 0; QuestRequirement = new List<string>(); foreach (var i in elem.Elements("QuestReq")) QuestRequirement.Add(i.Value); Objectives = new List<QuestObjective>(); foreach (var i in elem.Elements("Objective")) Objectives.Add(new QuestObjective(i)); Rewards = new QuestReward(); if ((n = elem.Element("Reward")) != null) Rewards.FromXML(n); }
void SetRewardContext(QuestReward qr) { switch (qr.Type) { case QuestReward.RewardType.Gold: case QuestReward.RewardType.Exp: case QuestReward.RewardType.Fame: cbRewardContext.Visible = false; tbRewardContext.Enabled = true; tbRewardContext.Text = qr.Context.ToString(); break; case QuestReward.RewardType.Item: cbRewardContext.Enabled = true; cbRewardContext.Visible = true; cbRewardContext.Items.Clear(); foreach (NamedItemTemplate nit in _items.Values) cbRewardContext.Items.Add(nit); if (_items.ContainsKey(qr.Context)) cbRewardContext.SelectedItem = _items[qr.Context]; else cbRewardContext.SelectedItem = null; break; case QuestReward.RewardType.Teleport: cbRewardContext.Enabled = true; cbRewardContext.Visible = true; cbRewardContext.Items.Clear(); foreach( Location loc in _locations.Values ) cbRewardContext.Items.Add(loc); if( _locations.ContainsKey(qr.Context) ) cbRewardContext.SelectedItem = _locations[qr.Context]; else cbRewardContext.SelectedItem = null; break; case QuestReward.RewardType.Skill: // TODO: Implement skill cbRewardContext.Visible = false; tbRewardContext.Enabled = true; tbRewardContext.Text = qr.Context.ToString(); break; } }
string RewardContextString(QuestReward qr) { string str = ""; switch (qr.Type) { case QuestReward.RewardType.Gold: case QuestReward.RewardType.Exp: case QuestReward.RewardType.Fame: str = qr.Context.ToString(); break; case QuestReward.RewardType.Item: if (_items.ContainsKey(qr.Context)) { NamedItemTemplate nit = _items[qr.Context]; str = nit.ToString(); } else str = qr.Context.ToString(); break; case QuestReward.RewardType.Teleport: if (_locations.ContainsKey(qr.Context)) { Location loc = _locations[qr.Context]; str = loc.ToString(); } else str = qr.Context.ToString(); break; case QuestReward.RewardType.Skill: // TODO: Need to implement skills str = qr.Context.ToString(); break; } return str; }