mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-10 23:25:41 +12:00
add
This commit is contained in:
parent
efc21b7b5b
commit
d02b28115b
4 changed files with 64 additions and 18 deletions
|
@ -316,6 +316,33 @@ namespace HISP.Game
|
|||
message += Messages.QuestLogHeader;
|
||||
Quest.QuestEntry[] questList = Quest.GetPublicQuestList();
|
||||
foreach (Quest.QuestEntry quest in questList)
|
||||
{
|
||||
string fmsg = "";
|
||||
if (user.Quests.GetTrackedQuestAmount(quest.Id) > 0)
|
||||
fmsg = Messages.QuestCompleted;
|
||||
else
|
||||
fmsg = Messages.QuestNotCompleted;
|
||||
|
||||
if (Quest.IsQuestAvalible(user,quest))
|
||||
fmsg = Messages.QuestNotAvalible;
|
||||
|
||||
message += Messages.FormatQuestLogQuest(quest.Title, quest.QuestPointsEarned, quest.Difficulty, fmsg);
|
||||
}
|
||||
|
||||
int totalComplete = 0;
|
||||
int totalQuestPoints = 0;
|
||||
foreach(Quest.QuestEntry quest in questList)
|
||||
{
|
||||
if(user.Quests.GetTrackedQuestAmount(quest.Id) > 0)
|
||||
totalComplete++;
|
||||
totalQuestPoints += quest.QuestPointsEarned;
|
||||
}
|
||||
|
||||
message += Messages.FormatQuestFooter(totalComplete, questList.Length, user.QuestPoints, totalQuestPoints);
|
||||
message += Messages.BackToMap;
|
||||
message += Messages.MetaTerminator;
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
public static string BuildSpecialTileInfo(User user, World.SpecialTile specialTile)
|
||||
|
|
|
@ -72,14 +72,30 @@ namespace HISP.Game
|
|||
}
|
||||
public static QuestEntry[] GetPublicQuestList()
|
||||
{
|
||||
List<QuestEntry> quests = QuestList.OrderBy(o => o.Title).ToList();
|
||||
foreach(QuestEntry quest in quests)
|
||||
QuestEntry[] quests = QuestList.OrderBy(o => o.Title).ToArray();
|
||||
List<QuestEntry> sortedQuests = new List<QuestEntry>();
|
||||
foreach (QuestEntry quest in quests)
|
||||
{
|
||||
if (quest.Title == null)
|
||||
quests.Remove(quest);
|
||||
if (quest.Title != null)
|
||||
sortedQuests.Add(quest);
|
||||
|
||||
}
|
||||
return quests.ToArray();
|
||||
return sortedQuests.ToArray();
|
||||
}
|
||||
|
||||
public static bool IsQuestAvalible(User user, QuestEntry quest)
|
||||
{
|
||||
// Has completed other required quests?
|
||||
foreach (int questId in quest.RequiresQuestIdCompleted)
|
||||
if (user.Quests.GetTrackedQuestAmount(quest.Id) < 1)
|
||||
return false;
|
||||
|
||||
// Has NOT competed other MUST NOT BE required quests
|
||||
foreach (int questId in quest.RequiresQuestIdNotCompleted)
|
||||
if (user.Quests.GetTrackedQuestAmount(quest.Id) > 1)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool ActivateQuest(User user, QuestEntry quest, bool npcActivation = false)
|
||||
|
@ -87,15 +103,9 @@ namespace HISP.Game
|
|||
|
||||
if (quest.Tracked)
|
||||
{
|
||||
// Has completed other required quests?
|
||||
foreach (int questId in quest.RequiresQuestIdCompleted)
|
||||
if (user.Quests.GetTrackedQuestAmount(quest.Id) < 1)
|
||||
goto Fail;
|
||||
if (!IsQuestAvalible(user, quest))
|
||||
goto Fail;
|
||||
|
||||
// Has NOT competed other MUST NOT BE required quests
|
||||
foreach (int questId in quest.RequiresQuestIdNotCompleted)
|
||||
if (user.Quests.GetTrackedQuestAmount(quest.Id) > 1)
|
||||
goto Fail;
|
||||
// Has allready tracked this quest?
|
||||
if (user.Quests.GetTrackedQuestAmount(quest.Id) >= quest.MaxRepeats)
|
||||
goto Fail;
|
||||
|
|
|
@ -440,8 +440,8 @@ namespace HISP.Server
|
|||
Messages.RandomMovement = gameData.messages.random_movement;
|
||||
|
||||
// Quests Log
|
||||
Messages.QuestLogHeader = gameData.messages.meta.quest_log.meta.header_meta;
|
||||
Messages.QuestFormat = gameData.messages.meta.quest_log.meta.quest_format;
|
||||
Messages.QuestLogHeader = gameData.messages.meta.quest_log.header_meta;
|
||||
Messages.QuestFormat = gameData.messages.meta.quest_log.quest_format;
|
||||
|
||||
Messages.QuestNotCompleted = gameData.messages.meta.quest_log.not_complete;
|
||||
Messages.QuestNotAvalible = gameData.messages.meta.quest_log.not_avalible;
|
||||
|
|
|
@ -147,10 +147,19 @@ namespace HISP.Server
|
|||
return;
|
||||
}
|
||||
|
||||
if(buttonId == 21) // Private Notes
|
||||
switch(buttonId)
|
||||
{
|
||||
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPrivateNotes(sender.LoggedinUser));
|
||||
sender.SendPacket(metaPacket);
|
||||
case 3:
|
||||
byte[] metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildQuestLog(sender.LoggedinUser));
|
||||
sender.SendPacket(metaPacket);
|
||||
break;
|
||||
case 21:
|
||||
metaPacket = PacketBuilder.CreateMetaPacket(Meta.BuildPrivateNotes(sender.LoggedinUser));
|
||||
sender.SendPacket(metaPacket);
|
||||
break;
|
||||
default:
|
||||
Logger.ErrorPrint("Dynamic button #" + buttonId + " unknown...");
|
||||
break;
|
||||
}
|
||||
}
|
||||
public static void OnUserInfoRequest(GameClient sender, byte[] packet)
|
||||
|
|
Loading…
Add table
Reference in a new issue