mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-08 22:25:42 +12:00
make stats menu identical to offical server ...
This commit is contained in:
parent
187dbab4fa
commit
d7e0b9a745
4 changed files with 163278 additions and 163254 deletions
326439
DataCollection/gamedata.json
326439
DataCollection/gamedata.json
File diff suppressed because it is too large
Load diff
|
@ -323,9 +323,14 @@ namespace HISP.Game
|
||||||
else
|
else
|
||||||
fmsg = Messages.QuestNotCompleted;
|
fmsg = Messages.QuestNotCompleted;
|
||||||
|
|
||||||
if (!Quest.IsQuestAvalible(user,quest))
|
foreach(int questId in quest.RequiresQuestIdCompleteStatsMenu)
|
||||||
|
{
|
||||||
|
if (user.Quests.GetTrackedQuestAmount(questId) > 0)
|
||||||
|
continue;
|
||||||
fmsg = Messages.QuestNotAvalible;
|
fmsg = Messages.QuestNotAvalible;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
message += Messages.FormatQuestLogQuest(quest.Title, quest.QuestPointsEarned, quest.Difficulty, fmsg);
|
message += Messages.FormatQuestLogQuest(quest.Title, quest.QuestPointsEarned, quest.Difficulty, fmsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ namespace HISP.Game
|
||||||
public string Notes;
|
public string Notes;
|
||||||
public string Title;
|
public string Title;
|
||||||
|
|
||||||
public int[] RequiresQuestIdComplete; // Not sure what this is for.
|
public int[] RequiresQuestIdCompleteStatsMenu; // Not sure what this is for.
|
||||||
public QuestAltActivation AltActivation;
|
public QuestAltActivation AltActivation;
|
||||||
public bool Tracked; // Should we track how many times the player has completed this quest.
|
public bool Tracked; // Should we track how many times the player has completed this quest.
|
||||||
// Fail Settings
|
// Fail Settings
|
||||||
|
@ -83,32 +83,24 @@ namespace HISP.Game
|
||||||
return sortedQuests.ToArray();
|
return sortedQuests.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsQuestAvalible(User user, QuestEntry quest)
|
public static bool CanComplete(User user, QuestEntry quest)
|
||||||
{
|
{
|
||||||
// Has completed other required quests?
|
if (quest.Tracked)
|
||||||
foreach (int questId in quest.RequiresQuestIdCompleted)
|
{
|
||||||
|
|
||||||
|
// Has completed other required quests?
|
||||||
|
foreach (int questId in quest.RequiresQuestIdCompleted)
|
||||||
if (user.Quests.GetTrackedQuestAmount(quest.Id) < 1)
|
if (user.Quests.GetTrackedQuestAmount(quest.Id) < 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Has NOT competed other MUST NOT BE required quests
|
// Has NOT competed other MUST NOT BE required quests
|
||||||
foreach (int questId in quest.RequiresQuestIdNotCompleted)
|
foreach (int questId in quest.RequiresQuestIdNotCompleted)
|
||||||
if (user.Quests.GetTrackedQuestAmount(quest.Id) > 1)
|
if (user.Quests.GetTrackedQuestAmount(quest.Id) > 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static bool ActivateQuest(User user, QuestEntry quest, bool npcActivation = false)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (quest.Tracked)
|
|
||||||
{
|
|
||||||
if (!IsQuestAvalible(user, quest))
|
|
||||||
goto Fail;
|
|
||||||
|
|
||||||
// Has allready tracked this quest?
|
// Has allready tracked this quest?
|
||||||
if (user.Quests.GetTrackedQuestAmount(quest.Id) >= quest.MaxRepeats)
|
if (user.Quests.GetTrackedQuestAmount(quest.Id) >= quest.MaxRepeats)
|
||||||
goto Fail;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,34 +118,27 @@ namespace HISP.Game
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!hasThisItem)
|
if (!hasThisItem)
|
||||||
goto Fail;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Have enough money?
|
// Have enough money?
|
||||||
if (user.Money < quest.MoneyCost)
|
if (user.Money < quest.MoneyCost)
|
||||||
goto Fail;
|
|
||||||
|
|
||||||
// Have required award (unimplemented)
|
|
||||||
|
|
||||||
goto Success;
|
|
||||||
|
|
||||||
Fail: {
|
|
||||||
if(quest.FailNpcChat != null)
|
|
||||||
{
|
|
||||||
if(!npcActivation)
|
|
||||||
{
|
|
||||||
byte[] ChatPacket = PacketBuilder.CreateChat(quest.FailNpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
|
||||||
user.LoggedinClient.SendPacket(ChatPacket);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
};
|
|
||||||
Success: {
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool ActivateQuest(User user, QuestEntry quest, bool npcActivation = false)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(CanComplete(user, quest))
|
||||||
|
{
|
||||||
// Take Items
|
// Take Items
|
||||||
foreach(QuestItemInfo itemInfo in quest.ItemsRequired)
|
foreach (QuestItemInfo itemInfo in quest.ItemsRequired)
|
||||||
{
|
{
|
||||||
InventoryItem itm = user.Inventory.GetItemByItemId(itemInfo.ItemId);
|
InventoryItem itm = user.Inventory.GetItemByItemId(itemInfo.ItemId);
|
||||||
for(int i = 0; i < itemInfo.Quantity; i++)
|
for (int i = 0; i < itemInfo.Quantity; i++)
|
||||||
user.Inventory.Remove(itm.ItemInstances[0]);
|
user.Inventory.Remove(itm.ItemInstances[0]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -178,10 +163,10 @@ namespace HISP.Game
|
||||||
if (quest.ChainedQuestId != 0)
|
if (quest.ChainedQuestId != 0)
|
||||||
ActivateQuest(user, GetQuestById(quest.ChainedQuestId));
|
ActivateQuest(user, GetQuestById(quest.ChainedQuestId));
|
||||||
|
|
||||||
if(quest.Tracked)
|
if (quest.Tracked)
|
||||||
user.Quests.TrackQuest(quest.Id);
|
user.Quests.TrackQuest(quest.Id);
|
||||||
|
|
||||||
if(quest.SuccessNpcChat != null)
|
if (quest.SuccessNpcChat != null)
|
||||||
{
|
{
|
||||||
if (!npcActivation)
|
if (!npcActivation)
|
||||||
{
|
{
|
||||||
|
@ -190,12 +175,23 @@ namespace HISP.Game
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(quest.SuccessMessage != null)
|
if (quest.SuccessMessage != null)
|
||||||
{
|
{
|
||||||
byte[] ChatPacket = PacketBuilder.CreateChat(quest.SuccessMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
byte[] ChatPacket = PacketBuilder.CreateChat(quest.SuccessMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
user.LoggedinClient.SendPacket(ChatPacket);
|
user.LoggedinClient.SendPacket(ChatPacket);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(quest.FailNpcChat != null)
|
||||||
|
{
|
||||||
|
if(!npcActivation)
|
||||||
|
{
|
||||||
|
byte[] ChatPacket = PacketBuilder.CreateChat(quest.FailNpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
|
||||||
|
user.LoggedinClient.SendPacket(ChatPacket);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public static bool DoesQuestExist(int id)
|
public static bool DoesQuestExist(int id)
|
||||||
|
|
|
@ -297,7 +297,7 @@ namespace HISP.Server
|
||||||
quest.Notes = gameData.quest_list[i].notes;
|
quest.Notes = gameData.quest_list[i].notes;
|
||||||
if(gameData.quest_list[i].title != null)
|
if(gameData.quest_list[i].title != null)
|
||||||
quest.Title = gameData.quest_list[i].title;
|
quest.Title = gameData.quest_list[i].title;
|
||||||
quest.RequiresQuestIdComplete = gameData.quest_list[i].requires_questid_npc.ToObject<int[]>();
|
quest.RequiresQuestIdCompleteStatsMenu = gameData.quest_list[i].requires_questid_statsmenu.ToObject<int[]>();
|
||||||
if (gameData.quest_list[i].alt_activation != null)
|
if (gameData.quest_list[i].alt_activation != null)
|
||||||
{
|
{
|
||||||
quest.AltActivation = new Quest.QuestAltActivation();
|
quest.AltActivation = new Quest.QuestAltActivation();
|
||||||
|
|
Loading…
Add table
Reference in a new issue