mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-12 23:14:34 +01:00
Implement daily, weekly, and challenge missions
This commit is contained in:
@@ -87,6 +87,13 @@ namespace EpinelPS.Database
|
|||||||
public int WipeoutCount = 0;
|
public int WipeoutCount = 0;
|
||||||
public bool ClearedSimulationRoom = false;
|
public bool ClearedSimulationRoom = false;
|
||||||
public int InterceptionTickets = 3;
|
public int InterceptionTickets = 3;
|
||||||
|
public List<int> CompletedDailyMissions = [];
|
||||||
|
public int DailyMissionPoints;
|
||||||
|
}
|
||||||
|
public class WeeklyResetableData
|
||||||
|
{
|
||||||
|
public List<int> CompletedWeeklyMissions = [];
|
||||||
|
public int WeeklyMissionPoints;
|
||||||
}
|
}
|
||||||
public class OutpostBuffs
|
public class OutpostBuffs
|
||||||
{
|
{
|
||||||
@@ -229,6 +236,7 @@ namespace EpinelPS.Database
|
|||||||
public int SynchroDeviceLevel = 200;
|
public int SynchroDeviceLevel = 200;
|
||||||
|
|
||||||
public ResetableData ResetableData = new();
|
public ResetableData ResetableData = new();
|
||||||
|
public WeeklyResetableData WeeklyResetableData = new();
|
||||||
public List<ItemData> Items = new();
|
public List<ItemData> Items = new();
|
||||||
public List<Character> Characters = [];
|
public List<Character> Characters = [];
|
||||||
public NetWholeUserTeamData RepresentationTeamData = new();
|
public NetWholeUserTeamData RepresentationTeamData = new();
|
||||||
@@ -272,6 +280,7 @@ namespace EpinelPS.Database
|
|||||||
public List<NetUserAttractiveData> BondInfo = [];
|
public List<NetUserAttractiveData> BondInfo = [];
|
||||||
public List<Trigger> Triggers = [];
|
public List<Trigger> Triggers = [];
|
||||||
public int LastTriggerId = 1;
|
public int LastTriggerId = 1;
|
||||||
|
public List<int> CompletedAchievements = [];
|
||||||
|
|
||||||
// Event data
|
// Event data
|
||||||
public Dictionary<int, EventData> EventInfo = new();
|
public Dictionary<int, EventData> EventInfo = new();
|
||||||
@@ -284,7 +293,7 @@ namespace EpinelPS.Database
|
|||||||
Id = LastTriggerId++,
|
Id = LastTriggerId++,
|
||||||
Type = type,
|
Type = type,
|
||||||
ConditionId = conditionId,
|
ConditionId = conditionId,
|
||||||
CreatedAt = DateTime.Now.Ticks,
|
CreatedAt = DateTime.UtcNow.AddHours(9).Ticks,
|
||||||
Value = value
|
Value = value
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -319,15 +328,11 @@ namespace EpinelPS.Database
|
|||||||
|
|
||||||
public void SetQuest(int tid, bool recievedReward)
|
public void SetQuest(int tid, bool recievedReward)
|
||||||
{
|
{
|
||||||
if (MainQuestData.ContainsKey(tid))
|
if (!MainQuestData.TryAdd(tid, recievedReward))
|
||||||
{
|
{
|
||||||
MainQuestData[tid] = recievedReward;
|
MainQuestData[tid] = recievedReward;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
MainQuestData.Add(tid, recievedReward);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GenerateUniqueItemId()
|
public int GenerateUniqueItemId()
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ namespace EpinelPS.StaticInfo
|
|||||||
public readonly Dictionary<int, CostRecord> costTable = [];
|
public readonly Dictionary<int, CostRecord> costTable = [];
|
||||||
public readonly Dictionary<string, MidasProductRecord> mediasProductTable = [];
|
public readonly Dictionary<string, MidasProductRecord> mediasProductTable = [];
|
||||||
public readonly Dictionary<int, TowerRecord> towerTable = [];
|
public readonly Dictionary<int, TowerRecord> towerTable = [];
|
||||||
|
public readonly Dictionary<int, TriggerRecord> TriggerTable = [];
|
||||||
|
|
||||||
|
|
||||||
public byte[] Sha256Hash;
|
public byte[] Sha256Hash;
|
||||||
@@ -501,6 +501,12 @@ namespace EpinelPS.StaticInfo
|
|||||||
{
|
{
|
||||||
this.towerTable.Add(obj.id, obj);
|
this.towerTable.Add(obj.id, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var triggerTable = await LoadZip<TriggerTable>("TriggerTable.json", progress);
|
||||||
|
foreach (var obj in triggerTable.records)
|
||||||
|
{
|
||||||
|
this.TriggerTable.Add(obj.id, obj);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public MainQuestCompletionRecord? GetMainQuestForStageClearCondition(int stage)
|
public MainQuestCompletionRecord? GetMainQuestForStageClearCondition(int stage)
|
||||||
|
|||||||
@@ -658,4 +658,19 @@
|
|||||||
{
|
{
|
||||||
public List<SideStoryStageRecord> records = [];
|
public List<SideStoryStageRecord> records = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class TriggerRecord
|
||||||
|
{
|
||||||
|
public int id;
|
||||||
|
public int condition_id;
|
||||||
|
public int condition_value;
|
||||||
|
public int reward_id;
|
||||||
|
public int point_value;
|
||||||
|
public bool print_value;
|
||||||
|
public int before_trigger_id;
|
||||||
|
}
|
||||||
|
public class TriggerTable
|
||||||
|
{
|
||||||
|
public List<TriggerRecord> records = [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,6 +73,8 @@ namespace EpinelPS.LobbyServer.Character
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
user.AddTrigger(TriggerType.CharacterLevelUpCount, 1);
|
||||||
JsonDb.Save();
|
JsonDb.Save();
|
||||||
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
|
|||||||
@@ -79,6 +79,11 @@ namespace EpinelPS.LobbyServer.Character
|
|||||||
newChar.Skill2Lv++;
|
newChar.Skill2Lv++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (character.UltimateLevel == 10 && character.Skill1Lvl == 10 && character.Skill2Lvl == 10)
|
||||||
|
{
|
||||||
|
user.AddTrigger(TriggerType.CharacterSkillLevelMax, 1);
|
||||||
|
}
|
||||||
|
|
||||||
response.Character = newChar;
|
response.Character = newChar;
|
||||||
|
|
||||||
JsonDb.Save();
|
JsonDb.Save();
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ namespace EpinelPS.LobbyServer.Character
|
|||||||
}
|
}
|
||||||
response.SynchroLv = user.SynchroDeviceLevel;
|
response.SynchroLv = user.SynchroDeviceLevel;
|
||||||
|
|
||||||
|
user.AddTrigger(TriggerType.CharacterLevelUpCount, 1);
|
||||||
|
|
||||||
JsonDb.Save();
|
JsonDb.Save();
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,6 +81,11 @@ namespace EpinelPS.LobbyServer.Character
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (newCharacter.grade_core_id == 103 || newCharacter.grade_core_id == 11 || newCharacter.grade_core_id == 201)
|
||||||
|
{
|
||||||
|
user.AddTrigger(TriggerType.CharacterGradeMax, 1);
|
||||||
|
}
|
||||||
|
|
||||||
JsonDb.Save();
|
JsonDb.Save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -201,10 +201,19 @@ namespace EpinelPS.LobbyServer.Gacha
|
|||||||
user.AddBadge(BadgeContents.BadgeContentsNikkeNew, characterData.name_code.ToString());
|
user.AddBadge(BadgeContents.BadgeContentsNikkeNew, characterData.name_code.ToString());
|
||||||
|
|
||||||
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 });
|
||||||
|
|
||||||
|
if (characterData.original_rare == "SSR")
|
||||||
|
{
|
||||||
|
user.AddTrigger(TriggerType.ObtainCharacterSSR, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
response.Gacha.Add(gacha);
|
response.Gacha.Add(gacha);
|
||||||
|
|
||||||
|
user.AddTrigger(TriggerType.GachaCharacter, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
response.Reward.Currency.Add(new NetCurrencyData() { Type = (int)CurrencyType.SilverMileageTicket, Value = numberOfPulls });
|
response.Reward.Currency.Add(new NetCurrencyData() { Type = (int)CurrencyType.SilverMileageTicket, Value = numberOfPulls });
|
||||||
@@ -212,6 +221,7 @@ namespace EpinelPS.LobbyServer.Gacha
|
|||||||
user.AddCurrency(CurrencyType.SilverMileageTicket, numberOfPulls);
|
user.AddCurrency(CurrencyType.SilverMileageTicket, numberOfPulls);
|
||||||
|
|
||||||
user.GachaTutorialPlayCount++;
|
user.GachaTutorialPlayCount++;
|
||||||
|
|
||||||
JsonDb.Save();
|
JsonDb.Save();
|
||||||
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
|
|||||||
@@ -7,11 +7,12 @@ namespace EpinelPS.LobbyServer.Mission
|
|||||||
{
|
{
|
||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ReqGetAchievementRewardedData>();
|
await ReadData<ReqGetAchievementRewardedData>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
var response = new ResGetAchievementRewardedData();
|
var response = new ResGetAchievementRewardedData();
|
||||||
|
response.Ids.AddRange(user.CompletedAchievements);
|
||||||
// TODO
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
36
EpinelPS/LobbyServer/Mission/ObtainAchievement.cs
Normal file
36
EpinelPS/LobbyServer/Mission/ObtainAchievement.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
using EpinelPS.StaticInfo;
|
||||||
|
using EpinelPS.Utils;
|
||||||
|
|
||||||
|
namespace EpinelPS.LobbyServer.Mission
|
||||||
|
{
|
||||||
|
[PacketPath("/mission/obtain/achievement")]
|
||||||
|
public class ObtainAchievement : LobbyMsgHandler
|
||||||
|
{
|
||||||
|
protected override async Task HandleAsync()
|
||||||
|
{
|
||||||
|
var req = await ReadData<ReqObtainAchievementReward>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
|
var response = new ResObtainAchievementReward();
|
||||||
|
|
||||||
|
List<NetRewardData> rewards = new();
|
||||||
|
|
||||||
|
foreach (var item in req.TidList)
|
||||||
|
{
|
||||||
|
if (user.CompletedAchievements.Contains(item)) continue;
|
||||||
|
|
||||||
|
if (!GameData.Instance.TriggerTable.TryGetValue(item, out TriggerRecord? key)) throw new Exception("unknown TID");
|
||||||
|
|
||||||
|
var rewardRecord = GameData.Instance.GetRewardTableEntry(key.reward_id) ?? throw new Exception("unable to lookup reward");
|
||||||
|
|
||||||
|
rewards.Add(RewardUtils.RegisterRewardsForUser(user, rewardRecord));
|
||||||
|
|
||||||
|
user.CompletedAchievements.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
response.Reward = NetUtils.MergeRewards(rewards, user);
|
||||||
|
|
||||||
|
await WriteDataAsync(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using EpinelPS.Database;
|
||||||
|
using EpinelPS.StaticInfo;
|
||||||
using EpinelPS.Utils;
|
using EpinelPS.Utils;
|
||||||
|
|
||||||
namespace EpinelPS.LobbyServer.Mission
|
namespace EpinelPS.LobbyServer.Mission
|
||||||
@@ -8,10 +10,49 @@ namespace EpinelPS.LobbyServer.Mission
|
|||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ReqObtainDailyMissionReward>();
|
var req = await ReadData<ReqObtainDailyMissionReward>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
var response = new ResObtainDailyMissionReward();
|
var response = new ResObtainDailyMissionReward();
|
||||||
|
|
||||||
// TODO
|
List<NetRewardData> rewards = new();
|
||||||
|
|
||||||
|
int total_points = 0;
|
||||||
|
|
||||||
|
foreach (var item in req.TidList)
|
||||||
|
{
|
||||||
|
if (user.ResetableData.CompletedDailyMissions.Contains(item)) continue;
|
||||||
|
|
||||||
|
if (!GameData.Instance.TriggerTable.TryGetValue(item, out TriggerRecord? key)) throw new Exception("unknown TID");
|
||||||
|
|
||||||
|
user.ResetableData.CompletedDailyMissions.Add(item);
|
||||||
|
|
||||||
|
if (key.reward_id != 0)
|
||||||
|
{
|
||||||
|
// Actual reward
|
||||||
|
var rewardRecord = GameData.Instance.GetRewardTableEntry(key.reward_id) ?? throw new Exception("unable to lookup reward");
|
||||||
|
rewards.Add(RewardUtils.RegisterRewardsForUser(user, rewardRecord));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Point reward
|
||||||
|
|
||||||
|
var reward = new NetRewardData();
|
||||||
|
|
||||||
|
rewards.Add(reward);
|
||||||
|
|
||||||
|
total_points += key.point_value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
user.AddTrigger(TriggerType.PointRewardDaily, total_points);
|
||||||
|
user.ResetableData.DailyMissionPoints += total_points;
|
||||||
|
|
||||||
|
response.Reward = NetUtils.MergeRewards(rewards, user);
|
||||||
|
response.EventBonusReward = new() { PassPoint = new() };
|
||||||
|
response.Reward.PassPoint = new();
|
||||||
|
|
||||||
|
JsonDb.Save();
|
||||||
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
59
EpinelPS/LobbyServer/Mission/ObtainWeekly.cs
Normal file
59
EpinelPS/LobbyServer/Mission/ObtainWeekly.cs
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
using EpinelPS.Database;
|
||||||
|
using EpinelPS.StaticInfo;
|
||||||
|
using EpinelPS.Utils;
|
||||||
|
|
||||||
|
namespace EpinelPS.LobbyServer.Mission
|
||||||
|
{
|
||||||
|
[PacketPath("/mission/obtain/weekly")]
|
||||||
|
public class ObtainWeekly : LobbyMsgHandler
|
||||||
|
{
|
||||||
|
protected override async Task HandleAsync()
|
||||||
|
{
|
||||||
|
var req = await ReadData<ReqObtainWeeklyMissionReward>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
|
var response = new ResObtainWeeklyMissionReward();
|
||||||
|
|
||||||
|
List<NetRewardData> rewards = new();
|
||||||
|
|
||||||
|
int total_points = 0;
|
||||||
|
|
||||||
|
foreach (var item in req.TidList)
|
||||||
|
{
|
||||||
|
if (user.WeeklyResetableData.CompletedWeeklyMissions.Contains(item)) continue;
|
||||||
|
|
||||||
|
if (!GameData.Instance.TriggerTable.TryGetValue(item, out TriggerRecord? key)) throw new Exception("unknown TID");
|
||||||
|
|
||||||
|
user.WeeklyResetableData.CompletedWeeklyMissions.Add(item);
|
||||||
|
|
||||||
|
if (key.reward_id != 0)
|
||||||
|
{
|
||||||
|
// Actual reward
|
||||||
|
var rewardRecord = GameData.Instance.GetRewardTableEntry(key.reward_id) ?? throw new Exception("unable to lookup reward");
|
||||||
|
rewards.Add(RewardUtils.RegisterRewardsForUser(user, rewardRecord));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Point reward
|
||||||
|
|
||||||
|
var reward = new NetRewardData();
|
||||||
|
|
||||||
|
rewards.Add(reward);
|
||||||
|
|
||||||
|
total_points += key.point_value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
user.AddTrigger(TriggerType.PointRewardWeekly, total_points);
|
||||||
|
user.WeeklyResetableData.WeeklyMissionPoints += total_points;
|
||||||
|
|
||||||
|
response.Reward = NetUtils.MergeRewards(rewards, user);
|
||||||
|
response.EventBonusReward = new() { PassPoint = new() };
|
||||||
|
response.Reward.PassPoint = new();
|
||||||
|
|
||||||
|
JsonDb.Save();
|
||||||
|
|
||||||
|
await WriteDataAsync(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,10 +7,11 @@ namespace EpinelPS.LobbyServer.Mission.Rewards
|
|||||||
{
|
{
|
||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ReqGetDailyRewardedData>();
|
await ReadData<ReqGetDailyRewardedData>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
// TODO: implement
|
|
||||||
var response = new ResGetDailyRewardedData();
|
var response = new ResGetDailyRewardedData();
|
||||||
|
response.Ids.Add(user.ResetableData.CompletedDailyMissions);
|
||||||
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,10 +7,11 @@ namespace EpinelPS.LobbyServer.Mission.Rewards
|
|||||||
{
|
{
|
||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ReqGetWeeklyRewardedData>();
|
await ReadData<ReqGetWeeklyRewardedData>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
// TODO: implement
|
|
||||||
var response = new ResGetWeeklyRewardedData();
|
var response = new ResGetWeeklyRewardedData();
|
||||||
|
response.Ids.Add(user.WeeklyResetableData.CompletedWeeklyMissions);
|
||||||
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using EpinelPS.Utils;
|
using EpinelPS.Database;
|
||||||
|
using EpinelPS.Utils;
|
||||||
|
|
||||||
namespace EpinelPS.LobbyServer.Outpost
|
namespace EpinelPS.LobbyServer.Outpost
|
||||||
{
|
{
|
||||||
@@ -28,6 +29,10 @@ namespace EpinelPS.LobbyServer.Outpost
|
|||||||
response.Currencies.Add(new NetUserCurrencyData() { Type = (int)item.Key, Value = item.Value});
|
response.Currencies.Add(new NetUserCurrencyData() { Type = (int)item.Key, Value = item.Value});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
user.AddTrigger(StaticInfo.TriggerType.OutpostFastBattleReward, 1);
|
||||||
|
|
||||||
|
JsonDb.Save();
|
||||||
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ namespace EpinelPS.LobbyServer.Msgs.Outpost
|
|||||||
|
|
||||||
user.BattleTime = DateTime.UtcNow;
|
user.BattleTime = DateTime.UtcNow;
|
||||||
|
|
||||||
|
user.AddTrigger(StaticInfo.TriggerType.OutpostBattleReward, 1);
|
||||||
|
|
||||||
JsonDb.Save();
|
JsonDb.Save();
|
||||||
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
|
|||||||
@@ -42,6 +42,27 @@ namespace EpinelPS.LobbyServer.Tower
|
|||||||
user.TowerProgress[TowerType] = record.floor;
|
user.TowerProgress[TowerType] = record.floor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (record.type == "TETRA")
|
||||||
|
{
|
||||||
|
user.AddTrigger(TriggerType.TowerTetraClear, 1);
|
||||||
|
}
|
||||||
|
else if (record.type == "ELYSION")
|
||||||
|
{
|
||||||
|
user.AddTrigger(TriggerType.TowerElysionClear, 1);
|
||||||
|
}
|
||||||
|
else if (record.type == "MISSILIS")
|
||||||
|
{
|
||||||
|
user.AddTrigger(TriggerType.TowerMissilisClear, 1);
|
||||||
|
}
|
||||||
|
else if (record.type == "PILGRIM")
|
||||||
|
{
|
||||||
|
user.AddTrigger(TriggerType.TowerOverspecClear, 1);
|
||||||
|
}
|
||||||
|
else if (record.type == "ALL")
|
||||||
|
{
|
||||||
|
user.AddTrigger(TriggerType.TowerBasicClear, 1);
|
||||||
|
}
|
||||||
|
|
||||||
var reward = GameData.Instance.GetRewardTableEntry(record.reward_id) ?? throw new Exception("failed to get reward");
|
var reward = GameData.Instance.GetRewardTableEntry(record.reward_id) ?? throw new Exception("failed to get reward");
|
||||||
response.Reward = RewardUtils.RegisterRewardsForUser(user, reward);
|
response.Reward = RewardUtils.RegisterRewardsForUser(user, reward);
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using EpinelPS.Database;
|
||||||
using EpinelPS.Utils;
|
using EpinelPS.Utils;
|
||||||
|
|
||||||
namespace EpinelPS.LobbyServer.Tower
|
namespace EpinelPS.LobbyServer.Tower
|
||||||
@@ -8,9 +9,14 @@ namespace EpinelPS.LobbyServer.Tower
|
|||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ReqEnterTower>();
|
var req = await ReadData<ReqEnterTower>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
var response = new ResEnterTower();
|
var response = new ResEnterTower();
|
||||||
|
|
||||||
|
|
||||||
|
user.AddTrigger(StaticInfo.TriggerType.TowerAllStart, 1);
|
||||||
|
JsonDb.Save();
|
||||||
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,10 +132,18 @@ namespace EpinelPS.Utils
|
|||||||
result.UserItems.Add(item);
|
result.UserItems.Add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (var item in reward.Point)
|
||||||
|
{
|
||||||
|
result.Point.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var c in reward.Character)
|
foreach (var c in reward.Character)
|
||||||
{
|
{
|
||||||
Console.WriteLine("MergeRewards - TODO Character");
|
Console.WriteLine("MergeRewards - TODO Character");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (reward.InfraCoreExp != null)
|
||||||
|
result.InfraCoreExp = reward.InfraCoreExp;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var c in currencyDict)
|
foreach (var c in currencyDict)
|
||||||
@@ -175,7 +183,7 @@ namespace EpinelPS.Utils
|
|||||||
if (includeBoost)
|
if (includeBoost)
|
||||||
boost += CalculateBoostValueForOutpost(user, type);
|
boost += CalculateBoostValueForOutpost(user, type);
|
||||||
|
|
||||||
switch(type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case CurrencyType.CharacterExp2:
|
case CurrencyType.CharacterExp2:
|
||||||
value = battleData.character_exp2;
|
value = battleData.character_exp2;
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ namespace EpinelPS.Utils
|
|||||||
|
|
||||||
foreach (var item in rewardData.rewards)
|
foreach (var item in rewardData.rewards)
|
||||||
{
|
{
|
||||||
if (item.reward_id != 0)
|
if (item.reward_id != 0 || !string.IsNullOrEmpty(item.reward_type))
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(item.reward_type) || string.IsNullOrWhiteSpace(item.reward_type)) { }
|
if (string.IsNullOrEmpty(item.reward_type) || string.IsNullOrWhiteSpace(item.reward_type)) { }
|
||||||
else if (item.reward_type == "Currency")
|
else if (item.reward_type == "Currency")
|
||||||
@@ -167,6 +167,15 @@ namespace EpinelPS.Utils
|
|||||||
user.JukeboxBgm.Add(item.reward_id);
|
user.JukeboxBgm.Add(item.reward_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (item.reward_type == "InfraCoreExp")
|
||||||
|
{
|
||||||
|
ret.InfraCoreExp = new NetIncreaseExpData()
|
||||||
|
{
|
||||||
|
BeforeLv = user.InfraCoreLvl,
|
||||||
|
BeforeExp = user.InfraCoreExp,
|
||||||
|
// TODO
|
||||||
|
};
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine("TODO: Reward type " + item.reward_type);
|
Console.WriteLine("TODO: Reward type " + item.reward_type);
|
||||||
|
|||||||
Reference in New Issue
Block a user