Exemplo n.º 1
0
 private void QuestEvents_QuestCompleted(object sender, QuestEventArgs e)
 {
     if (this.StoryHelper.IsAdventureQuest(e.WhichQuest, 4) && !Game1.player.hasOrWillReceiveMail(DONE_LETTER_KEY))
     {
         Game1.addMailForTomorrow(DONE_LETTER_KEY);
     }
 }
Exemplo n.º 2
0
 public static void OnTalkStart(GameObject sender, QuestEventArgs e)
 {
     if (talkStart != null)
     {
         talkStart(sender, e);
     }
 }
Exemplo n.º 3
0
 void Quest_OnQuestAdded(object sender, QuestEventArgs e)
 {
     //UI fx to make it glow a little before dissapearing
     WriteQuestOnHUD(e.m_quest);
     InformQuestCanvas(e.m_quest);
     FlashText();//todo send the quest so we can flash the individual one
 }
Exemplo n.º 4
0
        /// <summary>
        /// Checks the trigger, this method is called whenever a event associated with this questparts quest
        /// or a manualy associated eventhandler is notified.
        /// </summary>
        /// <param name="e"></param>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public override bool Check(DOLEvent e, object sender, EventArgs args)
        {
            bool result = false;

            if (e == GamePlayerEvent.AbortQuest)
            {
                GamePlayer     player = BehaviourUtils.GuessGamePlayerFromNotify(e, sender, args);
                QuestEventArgs qArgs  = (QuestEventArgs)args;
                result = (qArgs.Player.ObjectID == player.ObjectID && QuestMgr.GetQuestTypeForID(qArgs.QuestID).Equals(I));
            }

            return(result);
        }
Exemplo n.º 5
0
        private void OnQuestAccepted(object sender, QuestEventArgs e)
        {
            if (!e.IsManaged || this._npcQuestOffers.Value.Count == 0)
            {
                return;
            }

            CustomQuest quest = e.GetManagedQuest();
            QuestOffer <NpcOfferAttributes> offer = this.QuestOffers.FirstOrDefault(o => o.QuestName == quest.GetFullName());

            if (offer != null)
            {
                this.QuestOffers.Remove(offer);
                this.RefreshActiveIndicators();
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Checks the trigger, this method is called whenever a event associated with this questparts quest
        /// or a manualy associated eventhandler is notified.
        /// </summary>
        /// <param name="e"></param>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public override bool Check(DOLEvent e, object sender, EventArgs args)
        {
            bool result = false;

            if (e == GamePlayerEvent.AcceptQuest)
            {
                GamePlayer     player = BehaviourUtils.GuessGamePlayerFromNotify(e, sender, args);
                QuestEventArgs qArgs  = (QuestEventArgs)args;
                Type           type   = QuestMgr.GetQuestTypeForID(qArgs.QuestID);
                if (type != null)
                {
                    result = qArgs.Player.ObjectID == player.ObjectID && type == I;
                }
            }

            return(result);
        }
Exemplo n.º 7
0
        void f2_QuestComplete(object sender, QuestEventArgs e)
        {
            m_tbStatus.Text = "You gained " + e.m_EXP + " Experience." +
                              Environment.NewLine +
                              m_tbStatus.Text;

            EXP += 25;

            if (EXP == 100)
            {
                Level += 1;
                LevelUp();
                EXP -= 100;
            }

            m_tbLevel.Text = Level.ToString();
        }
Exemplo n.º 8
0
        protected static void SubscribeQuest(DOLEvent e, object sender, EventArgs args)
        {
            QuestEventArgs qargs = args as QuestEventArgs;

            if (qargs == null)
            {
                return;
            }

            if (qargs.QuestID != QuestMgr.GetIDForQuestType(typeof(TraitorInMularn)))
            {
                return;
            }

            if (e == GamePlayerEvent.AcceptQuest)
            {
                CheckPlayerAcceptQuest(qargs.Player, 0x01);
            }
            else if (e == GamePlayerEvent.DeclineQuest)
            {
                CheckPlayerAcceptQuest(qargs.Player, 0x00);
            }
        }
Exemplo n.º 9
0
 private void MasterOfKnowledge_OnActivateQuest(object sender, QuestEventArgs e)
 {
     rejectGaze = e.Quest != quest;
 }
Exemplo n.º 10
0
 private void MasterOfKnowledge_OnDeliverQuest(object sender, QuestEventArgs e)
 {
     rejectGaze = false;
 }
Exemplo n.º 11
0
 public void OnQuestRemoved(object sender, QuestEventArgs args)
 {
     _ClearQuestLog();
     _FillQuestLog();
 }
Exemplo n.º 12
0
	private void MasterOfKnowledge_OnActivateQuest( object sender, QuestEventArgs e ) {
		rejectGaze = e.Quest != quest;
	}
Exemplo n.º 13
0
	private void MasterOfKnowledge_OnDeliverQuest( object sender, QuestEventArgs e ) {
		rejectGaze = false;
	}
Exemplo n.º 14
0
 void Quest_OnQuestRemoved(object sender, QuestEventArgs e)
 {
     FlashText();
     CrossOffQuestFromList(e.m_quest);
     //TODO: quests need to be removed and all shifted upwards by one....oh my god. the dreaded shifting of information code...i am ...not strong enough to do this as of sept 24...everything will break
 }
Exemplo n.º 15
0
            /// <summary>
            /// Called on every timer tick
            /// </summary>
            protected override void OnTick()
            {
                var player = (GamePlayer)m_actionSource;

                if (player == null)
                {
                    return;
                }

                // log.DebugFormat("Dialog - response: {0}, messageType: {1}, data1: {2}, data2: {3}, data3: {4}", m_response, m_messageType, m_data1, m_data2, m_data3);

                switch ((eDialogCode)m_messageType)
                {
                case eDialogCode.CustomDialog:
                {
                    if (m_data2 == 0x01)
                    {
                        CustomDialogResponse callback;
                        lock (player)
                        {
                            callback = player.CustomDialogCallback;
                            player.CustomDialogCallback = null;
                        }

                        if (callback == null)
                        {
                            return;
                        }

                        callback(player, m_response);
                    }
                    break;
                }

                case eDialogCode.GuildInvite:
                {
                    var guildLeader = WorldMgr.GetObjectByIDFromRegion(player.CurrentRegionID, (ushort)m_data1) as GamePlayer;
                    if (m_response == 0x01)                                     //accept
                    {
                        if (guildLeader == null)
                        {
                            player.Out.SendMessage("You need to be in the same region as the guild leader to accept an invitation.",
                                                   eChatType.CT_System, eChatLoc.CL_SystemWindow);
                            return;
                        }
                        if (player.Guild != null)
                        {
                            player.Out.SendMessage("You are still in a guild, you'll have to leave it first.", eChatType.CT_System,
                                                   eChatLoc.CL_SystemWindow);
                            return;
                        }
                        if (guildLeader.Guild != null)
                        {
                            guildLeader.Guild.AddPlayer(player);
                            return;
                        }

                        player.Out.SendMessage("Player doing the invite is not in a guild!", eChatType.CT_System,
                                               eChatLoc.CL_SystemWindow);
                        return;
                    }

                    if (guildLeader != null)
                    {
                        guildLeader.Out.SendMessage(player.Name + " declined your invite.", eChatType.CT_System,
                                                    eChatLoc.CL_SystemWindow);
                    }
                    return;
                }

                case eDialogCode.GuildLeave:
                {
                    if (m_response == 0x01)                                     //accepte
                    {
                        if (player.Guild == null)
                        {
                            player.Out.SendMessage("You are not in a guild.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                            return;
                        }

                        player.Guild.RemovePlayer(player.Name, player);
                    }
                    else
                    {
                        player.Out.SendMessage("You decline to quit your guild.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                        return;
                    }
                    break;
                }

                case eDialogCode.QuestSubscribe:
                {
                    var questNPC = (GameLiving)WorldMgr.GetObjectByIDFromRegion(player.CurrentRegionID, (ushort)m_data2);
                    if (questNPC == null)
                    {
                        return;
                    }

                    var args = new QuestEventArgs(questNPC, player, (ushort)m_data1);
                    if (m_response == 0x01)                                     // accept
                    {
                        // TODO add quest to player
                        // Note: This is done withing quest code since we have to check requirements, etc for each quest individually
                        // i'm reusing the questsubscribe command for quest abort since its 99% the same, only different event dets fired
                        player.Notify(m_data3 == 0x01 ? GamePlayerEvent.AbortQuest : GamePlayerEvent.AcceptQuest, player, args);
                        return;
                    }
                    player.Notify(m_data3 == 0x01 ? GamePlayerEvent.ContinueQuest : GamePlayerEvent.DeclineQuest, player, args);
                    return;
                }

                case eDialogCode.GroupInvite:
                {
                    if (m_response == 0x01)
                    {
                        GameClient cln = WorldMgr.GetClientFromID(m_data1);
                        if (cln == null)
                        {
                            return;
                        }

                        GamePlayer groupLeader = cln.Player;
                        if (groupLeader == null)
                        {
                            return;
                        }

                        if (player.Group != null)
                        {
                            player.Out.SendMessage("You are still in a group.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                            return;
                        }
                        if (!GameServer.ServerRules.IsAllowedToGroup(groupLeader, player, false))
                        {
                            return;
                        }
                        if (player.InCombatPvE)
                        {
                            player.Out.SendMessage("You can't join a group while in combat!", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                            return;
                        }
                        if (groupLeader.Group != null)
                        {
                            if (groupLeader.Group.Leader != groupLeader)
                            {
                                return;
                            }
                            if (groupLeader.Group.MemberCount >= ServerProperties.Properties.GROUP_MAX_MEMBER)
                            {
                                player.Out.SendMessage("The group is full.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                                return;
                            }
                            groupLeader.Group.AddMember(player);
                            GameEventMgr.Notify(GamePlayerEvent.AcceptGroup, player);
                            return;
                        }

                        var group = new Group(groupLeader);
                        GroupMgr.AddGroup(group);

                        group.AddMember(groupLeader);
                        group.AddMember(player);

                        GameEventMgr.Notify(GamePlayerEvent.AcceptGroup, player);

                        return;
                    }
                    break;
                }

                case eDialogCode.KeepClaim:
                {
                    if (m_response == 0x01)
                    {
                        if (player.Guild == null)
                        {
                            player.Out.SendMessage("You have to be a member of a guild, before you can use any of the commands!",
                                                   eChatType.CT_System, eChatLoc.CL_SystemWindow);
                            return;
                        }

                        AbstractGameKeep keep = GameServer.KeepManager.GetKeepCloseToSpot(player.CurrentRegionID, player.Position, WorldMgr.VISIBILITY_DISTANCE);
                        if (keep == null)
                        {
                            player.Out.SendMessage("You have to be near the keep to claim it.", eChatType.CT_System,
                                                   eChatLoc.CL_SystemWindow);
                            return;
                        }

                        if (keep.CheckForClaim(player))
                        {
                            keep.Claim(player);
                        }
                        break;
                    }
                    break;
                }

                case eDialogCode.HousePayRent:
                {
                    if (m_response == 0x00)
                    {
                        if (player.TempProperties.getProperty <long>(HousingConstants.MoneyForHouseRent, -1) != -1)
                        {
                            player.TempProperties.removeProperty(HousingConstants.MoneyForHouseRent);
                        }

                        if (player.TempProperties.getProperty <long>(HousingConstants.BPsForHouseRent, -1) != -1)
                        {
                            player.TempProperties.removeProperty(HousingConstants.BPsForHouseRent);
                        }

                        player.TempProperties.removeProperty(HousingConstants.HouseForHouseRent);

                        return;
                    }

                    var house      = player.TempProperties.getProperty <House>(HousingConstants.HouseForHouseRent, null);
                    var moneyToAdd = player.TempProperties.getProperty <long>(HousingConstants.MoneyForHouseRent, -1);
                    var bpsToMoney = player.TempProperties.getProperty <long>(HousingConstants.BPsForHouseRent, -1);

                    if (moneyToAdd != -1)
                    {
                        // if we're giving money and already have some in the lockbox, make sure we don't
                        // take more than what would cover 4 weeks of rent.
                        if (moneyToAdd + house.KeptMoney > HouseMgr.GetRentByModel(house.Model) * ServerProperties.Properties.RENT_LOCKBOX_PAYMENTS)
                        {
                            moneyToAdd = (HouseMgr.GetRentByModel(house.Model) * ServerProperties.Properties.RENT_LOCKBOX_PAYMENTS) - house.KeptMoney;
                        }

                        // take the money from the player
                        if (!player.RemoveMoney(moneyToAdd))
                        {
                            return;
                        }
                        InventoryLogging.LogInventoryAction(player, "(HOUSE;" + house.HouseNumber + ")", eInventoryActionType.Other, moneyToAdd);

                        // add the money to the lockbox
                        house.KeptMoney += moneyToAdd;

                        // save the house and the player
                        house.SaveIntoDatabase();
                        player.SaveIntoDatabase();

                        // notify the player of what we took and how long they are prepaid for
                        player.Out.SendMessage("You deposit " + Money.GetString(moneyToAdd) + " in the lockbox.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                        player.Out.SendMessage("The lockbox now has " + Money.GetString(house.KeptMoney) + " in it.  The weekly payment is " +
                                               Money.GetString(HouseMgr.GetRentByModel(house.Model)) + ".", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                        player.Out.SendMessage("The house is now prepaid for the next " + (house.KeptMoney / HouseMgr.GetRentByModel(house.Model)) +
                                               " payments.", eChatType.CT_System, eChatLoc.CL_SystemWindow);

                        // clean up
                        player.TempProperties.removeProperty(HousingConstants.MoneyForHouseRent);
                    }
                    else
                    {
                        if (bpsToMoney + house.KeptMoney > HouseMgr.GetRentByModel(house.Model) * ServerProperties.Properties.RENT_LOCKBOX_PAYMENTS)
                        {
                            bpsToMoney = (HouseMgr.GetRentByModel(house.Model) * ServerProperties.Properties.RENT_LOCKBOX_PAYMENTS) - house.KeptMoney;
                        }

                        if (!player.RemoveBountyPoints(Money.GetGold(bpsToMoney)))
                        {
                            return;
                        }

                        // add the bps to the lockbox
                        house.KeptMoney += bpsToMoney;

                        // save the house and the player
                        house.SaveIntoDatabase();
                        player.SaveIntoDatabase();

                        // notify the player of what we took and how long they are prepaid for
                        player.Out.SendMessage("You deposit " + Money.GetString(bpsToMoney) + " in the lockbox.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                        player.Out.SendMessage("The lockbox now has " + Money.GetString(house.KeptMoney) + " in it.  The weekly payment is " +
                                               Money.GetString(HouseMgr.GetRentByModel(house.Model)) + ".", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                        player.Out.SendMessage("The house is now prepaid for the next " + (house.KeptMoney / HouseMgr.GetRentByModel(house.Model)) +
                                               " payments.", eChatType.CT_System, eChatLoc.CL_SystemWindow);

                        // clean up
                        player.TempProperties.removeProperty(HousingConstants.BPsForHouseRent);
                    }

                    // clean up
                    player.TempProperties.removeProperty(HousingConstants.MoneyForHouseRent);
                    break;
                }

                case eDialogCode.MasterLevelWindow:
                {
                    player.Out.SendMasterLevelWindow(m_response);
                    break;
                }
                }
            }
Exemplo n.º 16
0
 private void MasterOfKnowledge_OnActivateQuest(object sender, QuestEventArgs e)
 {
 }
Exemplo n.º 17
0
	private void MasterOfKnowledge_OnActivateQuest( object sender, QuestEventArgs e ) {
		
	}