Implement daily activity missions

This commit is contained in:
Melledy
2025-11-07 05:29:57 -08:00
parent 67029b7094
commit ad538d59ed
26 changed files with 513 additions and 18 deletions

View File

@@ -7,6 +7,7 @@ import emu.nebula.proto.CharGemInstanceSettle.CharGemInstanceSettleResp;
import emu.nebula.net.HandlerId;
import emu.nebula.data.GameData;
import emu.nebula.game.instance.InstanceSettleData;
import emu.nebula.game.quest.QuestCondType;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.char_gem_instance_settle_req)
@@ -29,6 +30,7 @@ public class HandlerCharGemInstanceSettleReq extends NetHandler {
// Settle instance
var changes = player.getInstanceManager().settleInstance(
data,
QuestCondType.CharGemInstanceClearTotal,
player.getInstanceManager().getCharGemLog(),
"charGemLog",
req.getStar()

View File

@@ -7,6 +7,7 @@ import emu.nebula.proto.CharGemInstanceSweep.CharGemInstanceSweepResp;
import emu.nebula.proto.CharGemInstanceSweep.CharGemInstanceSweepReward;
import emu.nebula.net.HandlerId;
import emu.nebula.data.GameData;
import emu.nebula.game.quest.QuestCondType;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.char_gem_instance_sweep_req)
@@ -26,6 +27,7 @@ public class HandlerCharGemInstanceSweepReq extends NetHandler {
// Sweep
var change = session.getPlayer().getInstanceManager().sweepInstance(
data,
QuestCondType.CharGemInstanceClearTotal,
session.getPlayer().getInstanceManager().getCharGemLog(),
0,
req.getTimes()

View File

@@ -2,7 +2,9 @@ package emu.nebula.server.handlers;
import emu.nebula.net.NetHandler;
import emu.nebula.net.NetMsgId;
import emu.nebula.proto.Public.Nil;
import emu.nebula.net.HandlerId;
import emu.nebula.game.quest.QuestCondType;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.client_event_report_req)
@@ -10,7 +12,11 @@ public class HandlerClientEventReportReq extends NetHandler {
@Override
public byte[] handle(GameSession session, byte[] message) throws Exception {
return session.encodeMsg(NetMsgId.client_event_report_succeed_ack);
// Interact
session.getPlayer().getQuestManager().triggerQuest(QuestCondType.ClientReport, 1);
// Encode response
return session.encodeMsg(NetMsgId.client_event_report_succeed_ack, Nil.newInstance());
}
}

View File

@@ -7,6 +7,7 @@ import emu.nebula.proto.DailyInstanceRaid.DailyInstanceRaidResp;
import emu.nebula.proto.DailyInstanceRaid.DailyInstanceReward;
import emu.nebula.net.HandlerId;
import emu.nebula.data.GameData;
import emu.nebula.game.quest.QuestCondType;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.daily_instance_raid_req)
@@ -31,6 +32,7 @@ public class HandlerDailyInstanceRaidReq extends NetHandler {
// Sweep
var change = session.getPlayer().getInstanceManager().sweepInstance(
data,
QuestCondType.DailyInstanceClearTotal,
session.getPlayer().getInstanceManager().getDailyInstanceLog(),
req.getRewardType(),
req.getTimes()

View File

@@ -7,6 +7,7 @@ import emu.nebula.proto.DailyInstanceSettle.DailyInstanceSettleResp;
import emu.nebula.net.HandlerId;
import emu.nebula.data.GameData;
import emu.nebula.game.instance.InstanceSettleData;
import emu.nebula.game.quest.QuestCondType;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.daily_instance_settle_req)
@@ -29,6 +30,7 @@ public class HandlerDailyInstanceSettleReq extends NetHandler {
// Settle instance
var changes = player.getInstanceManager().settleInstance(
data,
QuestCondType.DailyInstanceClearTotal,
player.getInstanceManager().getDailyInstanceLog(),
"dailyInstanceLog",
req.getStar()

View File

@@ -13,6 +13,7 @@ public class HandlerGachaNewbieInfoReq extends NetHandler {
@Override
public byte[] handle(GameSession session, byte[] message) throws Exception {
var rsp = GachaNewbieInfoResp.newInstance();
var info = GachaNewbieInfo.newInstance()
.setId(5)
.setReceive(true);

View File

@@ -0,0 +1,34 @@
package emu.nebula.server.handlers;
import emu.nebula.net.NetHandler;
import emu.nebula.net.NetMsgId;
import emu.nebula.proto.QuestDailyActiveRewardRecevie.QuestDailyActiveRewardReceiveResp;
import it.unimi.dsi.fastutil.ints.IntList;
import emu.nebula.net.HandlerId;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.quest_daily_active_reward_receive_req)
public class HandlerQuestDailyActiveRewardReceiveReq extends NetHandler {
@Override
public byte[] handle(GameSession session, byte[] message) throws Exception {
// Receive rewards
var change = session.getPlayer().getQuestManager().claimActiveRewards();
if (change == null) {
return session.encodeMsg(NetMsgId.quest_daily_active_reward_receive_failed_ack);
}
// Build response
var rsp = QuestDailyActiveRewardReceiveResp.newInstance()
.setChange(change.toProto());
if (change.getExtraData() != null && change.getExtraData() instanceof IntList ids) {
ids.forEach(rsp::addActiveIds);
}
// Encode and send
return session.encodeMsg(NetMsgId.quest_daily_active_reward_receive_succeed_ack, rsp);
}
}

View File

@@ -0,0 +1,28 @@
package emu.nebula.server.handlers;
import emu.nebula.net.NetHandler;
import emu.nebula.net.NetMsgId;
import emu.nebula.proto.Public.UI32;
import emu.nebula.net.HandlerId;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.quest_daily_reward_receive_req)
public class HandlerQuestDailyRewardReceiveReq extends NetHandler {
@Override
public byte[] handle(GameSession session, byte[] message) throws Exception {
// Parse request
var req = UI32.parseFrom(message);
// Receive rewards
var change = session.getPlayer().getQuestManager().receiveReward(req.getValue());
if (change == null) {
return session.encodeMsg(NetMsgId.quest_daily_reward_receive_failed_ack);
}
// Template
return session.encodeMsg(NetMsgId.quest_daily_reward_receive_succeed_ack, change.toProto());
}
}

View File

@@ -7,6 +7,7 @@ import emu.nebula.proto.RegionBossLevelSettle.RegionBossLevelSettleResp;
import emu.nebula.net.HandlerId;
import emu.nebula.data.GameData;
import emu.nebula.game.instance.InstanceSettleData;
import emu.nebula.game.quest.QuestCondType;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.region_boss_level_settle_req)
@@ -29,6 +30,7 @@ public class HandlerRegionBossLevelSettleReq extends NetHandler {
// Settle instance
var changes = player.getInstanceManager().settleInstance(
data,
QuestCondType.RegionBossClearTotal,
player.getInstanceManager().getRegionBossLog(),
"regionBossLog",
req.getStar()

View File

@@ -7,6 +7,7 @@ import emu.nebula.proto.RegionBossLevelSweep.RegionBossLevelSweepResp;
import emu.nebula.proto.RegionBossLevelSweep.RegionBossLevelSweepRewards;
import emu.nebula.net.HandlerId;
import emu.nebula.data.GameData;
import emu.nebula.game.quest.QuestCondType;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.region_boss_level_sweep_req)
@@ -26,6 +27,7 @@ public class HandlerRegionBossLevelSweepReq extends NetHandler {
// Sweep
var change = session.getPlayer().getInstanceManager().sweepInstance(
data,
QuestCondType.RegionBossClearTotal,
session.getPlayer().getInstanceManager().getRegionBossLog(),
0,
req.getTimes()

View File

@@ -7,6 +7,7 @@ import emu.nebula.proto.SkillInstanceSettle.SkillInstanceSettleResp;
import emu.nebula.net.HandlerId;
import emu.nebula.data.GameData;
import emu.nebula.game.instance.InstanceSettleData;
import emu.nebula.game.quest.QuestCondType;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.skill_instance_settle_req)
@@ -29,6 +30,7 @@ public class HandlerSkillInstanceSettleReq extends NetHandler {
// Settle instance
var changes = player.getInstanceManager().settleInstance(
data,
QuestCondType.SkillInstanceClearTotal,
player.getInstanceManager().getSkillInstanceLog(),
"skillInstanceLog",
req.getStar()
@@ -42,7 +44,7 @@ public class HandlerSkillInstanceSettleReq extends NetHandler {
.setThreeStar(req.getStar() == 7)
.setChange(changes.toProto());
// Add reward items
// Add reward items to proto
if (settleData.isWin()) {
data.getRewards().toItemTemplateStream().forEach(rsp::addAwardItems);

View File

@@ -7,6 +7,7 @@ import emu.nebula.proto.SkillInstanceSweep.SkillInstanceSweepResp;
import emu.nebula.proto.SkillInstanceSweep.SkillInstanceSweepRewards;
import emu.nebula.net.HandlerId;
import emu.nebula.data.GameData;
import emu.nebula.game.quest.QuestCondType;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.skill_instance_sweep_req)
@@ -26,6 +27,7 @@ public class HandlerSkillInstanceSweepReq extends NetHandler {
// Sweep
var change = session.getPlayer().getInstanceManager().sweepInstance(
data,
QuestCondType.SkillInstanceClearTotal,
session.getPlayer().getInstanceManager().getSkillInstanceLog(),
0,
req.getTimes()

View File

@@ -7,6 +7,7 @@ import emu.nebula.proto.WeekBossSettle.WeekBossSettleReq;
import emu.nebula.net.HandlerId;
import emu.nebula.data.GameData;
import emu.nebula.game.instance.InstanceSettleData;
import emu.nebula.game.quest.QuestCondType;
import emu.nebula.net.GameSession;
@HandlerId(NetMsgId.week_boss_settle_req)
@@ -29,6 +30,7 @@ public class HandlerWeekBossSettleReq extends NetHandler {
// Settle instance
var changes = player.getInstanceManager().settleInstance(
data,
QuestCondType.WeekBoosClearSpecificDifficultyAndTotal,
player.getInstanceManager().getWeekBossLog(),
"weekBossLog",
req.getResult() ? 1 : 0