public void FinishQuest()
 {
     myParty  = PartyGenerator.GenerateRandomParty();
     myResult = myQuest.GetResult(myParty);
     questPopup.GetComponent <Canvas>().enabled = true;
     questResults.GetComponent <QuestResultBox>().Display(myResult);
 }
 public void Display(QuestResult qr)
 {
     Debug.Log(qr.Gold.ToString());
     goldReward.GetComponent <Text>().text   = $"Gold: {qr.Gold.ToString()}";
     questOutcome.GetComponent <Text>().text = qr.success ? "Success!" : "Fail!";
     loot.GetComponent <LootRewardBox>().Display(qr.Loot);
 }
Beispiel #3
0
        public Quest(string[] ss)
        {
            switch (ss[1])
            {
            case "KAE":
                Type = QuestType.KillAllEnemies;
                break;

            case "RP":
                Type       = QuestType.ReachPosition;
                GoalObject = GameObject.Find(ss[2]);
                break;

            case "DT":
                Type       = QuestType.DestroyTarget;
                GoalObject = GameObject.Find(ss[2]);
                break;
            }
            switch (ss[3])
            {
            case "OP":
                Result       = QuestResult.OpenGate;
                ResultObject = GameObject.Find(ss[4]);
                break;

            case "C":
                Result = QuestResult.Clear;
                break;
            }
            TimelineAssetName = ss[5];
        }
Beispiel #4
0
        public override QuestResult GetResult(Party party)
        {
            int killedVictims =
                (int)((party.GetAverageStats().Speed / 3 + party.GetAverageStats().Strength / 4 - Difficulty));

            killedVictims = Math.Max(0, killedVictims);

            var qr = new QuestResult();

            qr.ReturnParty = party;
            DamageRandomParts(qr.ReturnParty, Difficulty / 100 + 4);
            // if (killedVictims <= 0) return qr;

            qr.Gold = killedVictims * party.GetAverageStats().Intelligence / 100;
            if (double.IsNaN(qr.Gold))
            {
                qr.Gold = 0;
            }

            for (var i = 0; i < 10 / 2; i++)
            {
                qr.Loot.Add(PartGenerator.GeneratePart());
            }

            qr.Report = $"You have slain {killedVictims} villagers!";

            return(qr);
        }
Beispiel #5
0
	public void PlayResultSound(QuestResult _result)
	{
		string sound = string.Empty;

		switch (_result)
		{
			case QuestResult.QUEST_ACCEPT:
				sound = "Sound/Interface/S6012_EFF_QuestAccept";
				break;

			case QuestResult.QUEST_GIVEUP:
				sound = "Sound/Interface/S6015_EFF_QuestFail";
				break;

			case QuestResult.QUEST_CLEAR:
				sound = "Sound/Interface/S6013_EFF_QuestSuccess";
				break;

			case QuestResult.QUEST_COMPLETE:
				sound = AsSoundPath.QuestComplete;
				break;
			case QuestResult.QUEST_FAILED:
				sound = "Sound/Interface/S6015_EFF_QuestFail";
				break; 
		}
		
		if (sound != string.Empty)
		{
			Debug.Log(sound);
			AsSoundManager.Instance.PlaySound( sound, Vector3.zero, false);
		}
	}
Beispiel #6
0
        public override QuestResult GetResult(Party party)
        {
            var killedChickens = (int)((party.GetAverageStats().Strength / 3) + party.GetAverageStats().Dexterity -
                                       Difficulty);

            var qr = new QuestResult {
                ReturnParty = party
            };

            DamageRandomParts(qr.ReturnParty, Difficulty / 100);
            qr.Report = $"Your party managed to kill {Math.Max(0, killedChickens)} chickens!";
            if (killedChickens <= 0)
            {
                return(qr);
            }
            if (killedChickens >= chickenCount)
            {
                qr.success = true;
            }

            qr.Gold = killedChickens;
            for (var i = 0; i < killedChickens / 2; i++)
            {
                qr.Loot.Add(PartGenerator.GeneratePart());
            }

            return(qr);
        }
 private void DisplayQuest(Quest quest, QuestResult result)
 {
     gameState.Pause();
     GetComponent <Canvas>().enabled        = true;
     questTitle.GetComponent <Text>().text  = quest.Title;
     questReport.GetComponent <Text>().text = result.Report;
     questResults.GetComponent <QuestResultBox>().Display(result);
 }
Beispiel #8
0
        protected void AddReward(int groupId, RewardGroupType type, QuestResult result, QuestReward reward)
        {
            if (!this.RewardGroups.ContainsKey(groupId))
            {
                this.RewardGroups[groupId] = new QuestRewardGroup(groupId, type);
            }

            reward.Result = result;

            this.RewardGroups[groupId].Add(reward);
        }
Beispiel #9
0
    public void QuestComplited(QuestResult questResult)
    {
        var q = Instantiate(questPrevfab, questCanvas.transform);

        q.GetComponent <QuestDisplay>().Description.GetComponent <Text>().text = questResult.description;
        q.GetComponent <QuestDisplay>().Header.GetComponent <Text>().text      = questResult.header;
        q.GetComponent <QuestDisplay>().Image.GetComponent <Image>().sprite    = questResult.image;

        currQuest = q;
        questCanvas.SetActive(true);
    }
    public void FinishQuest()
    {
        foreach (var body in BodyQueue)
        {
            Party.Bodies.Add(body);
        }

        questState      = QuestState.Complete;
        LastQuestResult = CurrentQuest?.GetResult(Party);
        Gold           += (int)LastQuestResult.Gold;
        QuestEventManager.SendQuestFinished(CurrentQuest, LastQuestResult);
    }
Beispiel #11
0
        /// <summary>
        /// Adds reward to a specific reward group, that the player can select
        /// after completing the quest.
        /// </summary>
        /// <remarks>
        /// Mainly used for PTJs.
        /// </remarks>
        /// <param name="groupId"></param>
        /// <param name="type"></param>
        /// <param name="result"></param>
        /// <param name="reward"></param>
        /// <param name="options"></param>
        protected void AddReward(int groupId, RewardGroupType type, QuestResult result, QuestReward reward, RewardOptions options = RewardOptions.None)
        {
            if (!this.RewardGroups.ContainsKey(groupId))
            {
                this.RewardGroups[groupId] = new QuestRewardGroup(groupId, type);
            }

            reward.Result  = result;
            reward.Visible = (options & RewardOptions.Hidden) == 0;

            this.RewardGroups[groupId].Add(reward);
        }
    public void Restart()
    {
        Difficulty = 0;
        Gold       = 0;


        StartNewQuest();
        QuestTimer = CurrentQuest.MaxDuration;

        BeltContent     = new List <BodyPartVisual>();
        PartQueue       = new List <BodyPartVisual>();
        BodyQueue       = new List <Body>();
        LastQuestResult = null;
    }
Beispiel #13
0
        public ICollection <QuestReward> GetRewards(int rewardGroup, QuestResult result)
        {
            var rewards = new List <QuestReward>();

            QuestRewardGroup group;

            this.RewardGroups.TryGetValue(rewardGroup, out group);
            if (group != null && result != QuestResult.None)
            {
                rewards.AddRange(group.Rewards.Where(a => a.Result == result));
            }

            return(rewards);
        }
        public override QuestResult GetResult(Party party)
        {
            var result = new QuestResult();

            if (!(party.GetAverageStats().Vitality > 100))
            {
                return(result);
            }
            result.success     = true;
            result.Report      = "Lots of stuff happened. You should have been there.";
            result.ReturnParty = party;
            result.Gold        = 1000;
            return(result);
        }
Beispiel #15
0
	public void ShowResultMessage(QuestResult _result)
	{
        // play sound effect
        PlayResultSound(_result);

        HideAll();
        if (dicSimpleSprite.ContainsKey(_result))
        {
            nowSpite = dicSimpleSprite[_result];
            nowSpite.Start();
            fPassedTime = 0.0f;
            bShow = true;
            nowSpite.Hide(false);
        }
	}
Beispiel #16
0
        public static bool UseTool(User user, string tool, int x, int y)
        {
            if (tool == Quest.Shovel)
            {
                // check Treasures
                if (Treasure.IsTileTreasure(x, y))
                {
                    Treasure treasure = Treasure.GetTreasureAt(x, y);
                    if (treasure.Type == "BURIED")
                    {
                        treasure.CollectTreasure(user);
                    }
                    return(true);
                }
            }

            QuestResult result = null;

            foreach (QuestEntry quest in QuestList)
            {
                if (quest.AltActivation.Type == tool && quest.AltActivation.ActivateX == x && quest.AltActivation.ActivateY == y)
                {
                    result = ActivateQuest(user, quest, true, result);
                    if (result.QuestCompleted)
                    {
                        if (result.NpcChat != null)
                        {
                            byte[] ChatPacket = PacketBuilder.CreateChat(result.NpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
                            user.LoggedinClient.SendPacket(ChatPacket);
                        }
                        return(true);
                    }
                }
            }

            if (result != null)
            {
                if (result.NpcChat != null)
                {
                    byte[] ChatPacket = PacketBuilder.CreateChat(result.NpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
                    user.LoggedinClient.SendPacket(ChatPacket);
                }
                return(true);
            }


            return(false);
        }
Beispiel #17
0
    void Start()
    {
        this.anim = GetComponent <Animator>();

        hud = hudObject.GetComponent <HUD>();

        stats = hud.statsObject.GetComponent <Stats>();

        ammo = hud.ammoObject.GetComponent <Ammo>();

        stats.SetHP(healthPoints);
        stats.SetArmor(armor);


        gunDataBase = gunDataBaseObject.GetComponent <GunDataBase>();
        List <GunInfo> pistols = new List <GunInfo>();

        foreach (var g in (gunDataBase.Guns))
        {
            pistols.Add(g.GetComponent <GunInfo>());
        }

        unlockedGuns.AddRange(pistols);

        Quest       newQ        = new Quest();
        QuestResult questResult = new QuestResult();

        newQ.isActive = true;
        newQ.check    = QuestFunctionsList.ScarLUnlockCheck;
        newQ.doresult = QuestFunctionsList.ScalLUnclockDoResult;
        newQ.quest_id = "unlock_scarL";

        questResult.header      = "Unlocked new gun";
        questResult.description = "Name: " + gunDataBase.GetById("Assault_scarl").GetComponent <GunInfo>().DisplayName + '\n'
                                  + "Rarity: " + gunDataBase.GetById("Assault_scarl").GetComponent <GunInfo>().Rarity.ToString();
        questResult.image = gunDataBase.GetById("Assault_scarl").GetComponent <SpriteRenderer>().sprite;


        newQ.result = questResult;

        quests.Add(newQ);


        foreach (var q in quests)
        {
            q.player = this;
        }
    }
Beispiel #18
0
        public static QuestResult FailQuest(User user, QuestEntry quest, bool npcActivation = false, QuestResult res = null)
        {
            if (res == null)
            {
                res = new QuestResult();
            }
            res.QuestCompleted = false;

            if (npcActivation)
            {
                if (quest.GotoNpcChatpoint != -1)
                {
                    res.GotoChatpoint = quest.GotoNpcChatpoint;
                }
                if (quest.HideReplyOnFail != false)
                {
                    res.HideRepliesOnFail = quest.HideReplyOnFail;
                }
                if (res.SetChatpoint != -1)
                {
                    res.SetChatpoint = quest.SetNpcChatpoint;
                }
            }
            if (quest.FailNpcChat != null)
            {
                if (!npcActivation)
                {
                    byte[] ChatPacket = PacketBuilder.CreateChat(quest.FailNpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
                    user.LoggedinClient.SendPacket(ChatPacket);
                }
                else
                {
                    if (quest.FailNpcChat != null)
                    {
                        if (npcActivation)
                        {
                            if (quest.FailNpcChat != "")
                            {
                                res.NpcChat = quest.FailNpcChat;
                            }
                        }
                    }
                }
            }
            return(res);
        }
Beispiel #19
0
 /// <summary>
 /// Returns true if group contains rewards for result.
 /// </summary>
 /// <param name="result"></param>
 /// <returns></returns>
 public bool HasRewardsFor(QuestResult result)
 {
     return(this.Rewards.Any(a => a.Result == result));
 }
Beispiel #20
0
		/// <summary>
		/// Returns true if group contains rewards for result.
		/// </summary>
		/// <param name="result"></param>
		/// <returns></returns>
		public bool HasRewardsFor(QuestResult result)
		{
			return this.Rewards.Any(a => a.Result == result);
		}
Beispiel #21
0
 public DialogPtjReport(QuestResult result)
 {
     this.Result = result;
 }
Beispiel #22
0
        public static QuestResult CompleteQuest(User user, QuestEntry quest, bool npcActivation = false, QuestResult res = null)
        {
            if (res == null)
            {
                res = new QuestResult();
            }
            // Take Items
            foreach (QuestItemInfo itemInfo in quest.ItemsRequired)
            {
                InventoryItem itm = user.Inventory.GetItemByItemId(itemInfo.ItemId);
                for (int i = 0; i < itemInfo.Quantity; i++)
                {
                    user.Inventory.Remove(itm.ItemInstances[0]);
                }
            }
            // Take Money
            user.TakeMoney(quest.MoneyCost);
            // Give money
            user.AddMoney(quest.MoneyEarned);
            // Give items
            foreach (QuestItemInfo itemInfo in quest.ItemsEarned)
            {
                for (int i = 0; i < itemInfo.Quantity; i++)
                {
                    ItemInstance         itm             = new ItemInstance(itemInfo.ItemId);
                    Item.ItemInformation itemInformation = itm.GetItemInfo();
                    if (itemInformation.Type == "CONCEPTUAL")
                    {
                        Item.ConsumeItem(user, itemInformation);
                    }
                    else
                    {
                        user.Inventory.AddIgnoringFull(itm);
                    }
                }
            }
            if (quest.WarpX != 0 && quest.WarpY != 0)
            {
                user.Teleport(quest.WarpX, quest.WarpY);
            }

            // Give quest points
            user.QuestPoints += quest.QuestPointsEarned;

            res.QuestCompleted = true;
            if (npcActivation)
            {
                if (quest.SuccessNpcChat != null && quest.SuccessNpcChat != "")
                {
                    res.NpcChat = quest.SuccessNpcChat;
                }

                if (quest.SetNpcChatpoint != -1)
                {
                    res.SetChatpoint = quest.SetNpcChatpoint;
                }

                if (quest.GotoNpcChatpoint != -1)
                {
                    res.GotoChatpoint = quest.GotoNpcChatpoint;
                }
            }

            if (quest.Tracked)
            {
                user.Quests.TrackQuest(quest.Id);
            }

            if (quest.ChainedQuestId != 0)
            {
                res = ActivateQuest(user, Quest.GetQuestById(quest.ChainedQuestId), npcActivation, res);
            }

            if (quest.SuccessMessage != null)
            {
                byte[] ChatPacket = PacketBuilder.CreateChat(quest.SuccessMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
                user.LoggedinClient.SendPacket(ChatPacket);
            }

            if (quest.SuccessNpcChat != null)
            {
                if (!npcActivation)
                {
                    byte[] ChatPacket = PacketBuilder.CreateChat(quest.SuccessNpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
                    user.LoggedinClient.SendPacket(ChatPacket);
                }
            }

            // Check if award unlocked
            int questPointsPercent = Convert.ToInt32(Math.Floor(((decimal)user.QuestPoints / (decimal)GetTotalQuestPoints()) * (decimal)100.0));

            if (questPointsPercent >= 25)
            {
                user.Awards.AddAward(Award.GetAwardById(1)); // 25% Quest Completion Award.
            }
            if (questPointsPercent >= 50)
            {
                user.Awards.AddAward(Award.GetAwardById(2)); // 50% Quest Completion Award.
            }
            if (questPointsPercent >= 75)
            {
                user.Awards.AddAward(Award.GetAwardById(3)); // 75% Quest Completion Award.
            }
            if (questPointsPercent >= 100)
            {
                user.Awards.AddAward(Award.GetAwardById(4)); // 100% Quest Completion Award.
            }
            // Is cloud isles quest?
            if (quest.Id == 1373)
            {
                byte[] swfLoadPacket = PacketBuilder.CreateSwfModulePacket("ballooncutscene", PacketBuilder.PACKET_SWF_CUTSCENE);
                user.LoggedinClient.SendPacket(swfLoadPacket);
            }

            return(res);
        }
Beispiel #23
0
		/// <summary>
		/// Returns rewards for the given group and result.
		/// </summary>
		/// <remarks>
		/// Mainly used for PTJs.
		/// </remarks>
		/// <param name="rewardGroup"></param>
		/// <param name="result"></param>
		/// <returns></returns>
		public ICollection<QuestReward> GetRewards(int rewardGroup, QuestResult result)
		{
			var rewards = new List<QuestReward>();

			QuestRewardGroup group;
			this.RewardGroups.TryGetValue(rewardGroup, out group);
			if (group != null && result != QuestResult.None)
				rewards.AddRange(group.Rewards.Where(a => a.Result == result));

			return rewards;
		}
Beispiel #24
0
		/// <summary>
		/// Adds reward to a specific reward group, that the player can select
		/// after completing the quest.
		/// </summary>
		/// <remarks>
		/// Mainly used for PTJs.
		/// </remarks>
		/// <param name="groupId"></param>
		/// <param name="type"></param>
		/// <param name="result"></param>
		/// <param name="reward"></param>
		protected void AddReward(int groupId, RewardGroupType type, QuestResult result, QuestReward reward)
		{
			if (!this.RewardGroups.ContainsKey(groupId))
				this.RewardGroups[groupId] = new QuestRewardGroup(groupId, type);

			reward.Result = result;

			this.RewardGroups[groupId].Add(reward);
		}
Beispiel #25
0
		public DialogPtjReport PtjReport(QuestResult result) { return new DialogPtjReport(result); }
Beispiel #26
0
 public DialogPtjReport(QuestResult result)
 {
     this.Result = result;
 }
Beispiel #27
0
 public static QuestResult ActivateQuest(User user, QuestEntry quest, bool npcActivation = false, QuestResult res = null)
 {
     if (CanComplete(user, quest))
     {
         return(CompleteQuest(user, quest, npcActivation, res));
     }
     else
     {
         return(FailQuest(user, quest, npcActivation, res));
     }
 }
Beispiel #28
0
		/// <summary>
		/// Adds reward to a specific reward group, that the player can select
		/// after completing the quest.
		/// </summary>
		/// <remarks>
		/// Mainly used for PTJs.
		/// </remarks>
		/// <param name="groupId"></param>
		/// <param name="type"></param>
		/// <param name="result"></param>
		/// <param name="reward"></param>
		/// <param name="options"></param>
		protected void AddReward(int groupId, RewardGroupType type, QuestResult result, QuestReward reward, RewardOptions options = RewardOptions.None)
		{
			if (!this.RewardGroups.ContainsKey(groupId))
				this.RewardGroups[groupId] = new QuestRewardGroup(groupId, type);

			reward.Result = result;
			reward.Visible = (options & RewardOptions.Hidden) == 0;

			this.RewardGroups[groupId].Add(reward);
		}
Beispiel #29
0
		/// <summary>
		/// Returns XML code to display the rewards for the given result.
		/// </summary>
		/// <param name="result"></param>
		/// <returns></returns>
		public string GetPtjReportXml(QuestResult result)
		{
			return string.Format("<arbeit_report result=\"{0}\"/>", (byte)result);
		}
 public static void SendQuestFinished(Quest quest, QuestResult qr)
 {
     QuestFinishedEvent?.Invoke(quest, qr);
 }