mirror of
https://github.com/Melledy/Nebula.git
synced 2025-12-14 13:24:43 +01:00
Implement daily activity missions
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user