mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-13 15:34:36 +01:00
begin work on subquests
This commit is contained in:
@@ -265,6 +265,7 @@ namespace EpinelPS.Database
|
|||||||
|
|
||||||
public Dictionary<int, NetUserTeamData> UserTeams = new Dictionary<int, NetUserTeamData>();
|
public Dictionary<int, NetUserTeamData> UserTeams = new Dictionary<int, NetUserTeamData>();
|
||||||
public Dictionary<int, bool> MainQuestData = new();
|
public Dictionary<int, bool> MainQuestData = new();
|
||||||
|
public Dictionary<int, bool> SubQuestData = new();
|
||||||
public int InfraCoreExp = 0;
|
public int InfraCoreExp = 0;
|
||||||
public int InfraCoreLvl = 1;
|
public int InfraCoreLvl = 1;
|
||||||
public UserPointData userPointData = new();
|
public UserPointData userPointData = new();
|
||||||
@@ -350,6 +351,15 @@ namespace EpinelPS.Database
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetSubQuest(int tid, bool recievedReward)
|
||||||
|
{
|
||||||
|
if (!SubQuestData.TryAdd(tid, recievedReward))
|
||||||
|
{
|
||||||
|
SubQuestData[tid] = recievedReward;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public int GenerateUniqueItemId()
|
public int GenerateUniqueItemId()
|
||||||
{
|
{
|
||||||
var num = Rng.RandomId();
|
var num = Rng.RandomId();
|
||||||
@@ -684,6 +694,23 @@ namespace EpinelPS.Database
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Reload()
|
||||||
|
{
|
||||||
|
if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + "/db.json"))
|
||||||
|
{
|
||||||
|
Console.WriteLine("users: warning: configuration not found, writing default data");
|
||||||
|
Instance = new CoreInfo();
|
||||||
|
Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
var j = JsonConvert.DeserializeObject<CoreInfo>(File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "/db.json"));
|
||||||
|
if (j != null)
|
||||||
|
{
|
||||||
|
Instance = j;
|
||||||
|
Console.WriteLine("Database reload complete.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void ValidateDb()
|
private static void ValidateDb()
|
||||||
{
|
{
|
||||||
// check if character level is valid
|
// check if character level is valid
|
||||||
|
|||||||
@@ -214,12 +214,12 @@ namespace EpinelPS.LobbyServer.Gacha
|
|||||||
|
|
||||||
// Add "New Character" Badge
|
// Add "New Character" Badge
|
||||||
user.AddBadge(BadgeContents.BadgeContentsNikkeNew, characterData.name_code.ToString());
|
user.AddBadge(BadgeContents.BadgeContentsNikkeNew, characterData.name_code.ToString());
|
||||||
|
user.AddTrigger(TriggerType.ObtainCharacter, 1, characterData.name_code);
|
||||||
|
|
||||||
if (characterData.original_rare == "SSR" || characterData.original_rare == "SR")
|
if (characterData.original_rare == "SSR" || characterData.original_rare == "SR")
|
||||||
{
|
{
|
||||||
user.BondInfo.Add(new() { NameCode = characterData.name_code, Level = 1 });
|
user.BondInfo.Add(new() { NameCode = characterData.name_code, Level = 1 });
|
||||||
|
|
||||||
user.AddTrigger(TriggerType.ObtainCharacter, 1, characterData.name_code);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,18 @@ namespace EpinelPS.LobbyServer.Subquest
|
|||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ReqGetSubQuestList>();
|
var req = await ReadData<ReqGetSubQuestList>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
var response = new ResGetSubQuestList();
|
var response = new ResGetSubQuestList();
|
||||||
|
|
||||||
// TOOD
|
foreach(var item in user.SubQuestData)
|
||||||
|
{
|
||||||
|
response.SubquestList.Add(new NetSubQuestData(){
|
||||||
|
CreatedAt = DateTime.UtcNow.Ticks, // TODO does this matter
|
||||||
|
SubQuestId = item.Key,
|
||||||
|
IsReceived = item.Value
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
}
|
}
|
||||||
|
|||||||
28
EpinelPS/LobbyServer/Subquest/SetTrigger.cs
Normal file
28
EpinelPS/LobbyServer/Subquest/SetTrigger.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using EpinelPS.Database;
|
||||||
|
using EpinelPS.StaticInfo;
|
||||||
|
using EpinelPS.Utils;
|
||||||
|
|
||||||
|
namespace EpinelPS.LobbyServer.Subquest
|
||||||
|
{
|
||||||
|
[PacketPath("/subquest/settrigger")]
|
||||||
|
public class SetTrigger : LobbyMsgHandler
|
||||||
|
{
|
||||||
|
protected override async Task HandleAsync()
|
||||||
|
{
|
||||||
|
var req = await ReadData<ReqSetTriggerFromSubQuest>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
|
var response = new ResSetTriggerFromSubQuest();
|
||||||
|
|
||||||
|
if (!GameData.Instance.Subquests.TryGetValue(req.SubquestId, out SubquestRecord? record))
|
||||||
|
throw new Exception("no such subquest: " + req.SubquestId);
|
||||||
|
|
||||||
|
user.AddTrigger(TriggerType.CampaignGroupClear, record.clear_condition_value, record.clear_condition_id); // TODO this may need to go elsewhere
|
||||||
|
user.AddTrigger(TriggerType.SubQuestClear, 1, req.SubquestId);
|
||||||
|
|
||||||
|
JsonDb.Save();
|
||||||
|
|
||||||
|
await WriteDataAsync(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -210,6 +210,7 @@ namespace EpinelPS
|
|||||||
Console.WriteLine(" ls /users - show all users");
|
Console.WriteLine(" ls /users - show all users");
|
||||||
Console.WriteLine(" cd (user id) - select user by id");
|
Console.WriteLine(" cd (user id) - select user by id");
|
||||||
Console.WriteLine(" rmuser - delete selected user");
|
Console.WriteLine(" rmuser - delete selected user");
|
||||||
|
Console.WriteLine(" r - load changes to database from disk. Discards data in memory.");
|
||||||
Console.WriteLine(" ban - ban selected user from game");
|
Console.WriteLine(" ban - ban selected user from game");
|
||||||
Console.WriteLine(" unban - unban selected user from game");
|
Console.WriteLine(" unban - unban selected user from game");
|
||||||
Console.WriteLine(" exit - exit server application");
|
Console.WriteLine(" exit - exit server application");
|
||||||
@@ -898,6 +899,10 @@ namespace EpinelPS
|
|||||||
{
|
{
|
||||||
Console.WriteLine("Not implemented");
|
Console.WriteLine("Not implemented");
|
||||||
}
|
}
|
||||||
|
else if (input == "r")
|
||||||
|
{
|
||||||
|
JsonDb.Reload();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine("Unknown command");
|
Console.WriteLine("Unknown command");
|
||||||
|
|||||||
Reference in New Issue
Block a user