diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java index 1e39d987a..1176d2cf9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapManager.java @@ -41,7 +41,10 @@ public class MapManager extends MongoBase { private Map> heroAllAttributeMap = new HashMap<>(5); private MapMission mapMissionProgres; - private int energy; + + private int monsterId; + + private int monsterNum; private int lastUpdateEnergyTime; @@ -208,9 +211,22 @@ public class MapManager extends MongoBase { this.lastUpdateEnergyTime = lastUpdateEnergyTime; } - public void setEnergy(int energy) { - updateString("energy", energy); - this.energy = energy; + public void setMonsterId(int monsterId) { + updateString("monsterId", monsterId); + this.monsterId = monsterId; + } + + public int getMonsterId() { + return monsterId; + } + + public int getMonsterNum() { + return monsterNum; + } + + public void setMonsterNum(int monsterNum) { + updateString("monsterNum", monsterNum); + this.monsterNum = monsterNum; } public int getLastUpdateEnergyTime() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionBehavior.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionBehavior.java index 9949a8ec2..99f3ffbdb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionBehavior.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/MonitorMissionBehavior.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.handler.map.behavior; import com.ljsd.jieling.handler.map.EventType; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.protocols.FightInfoProto; import com.ljsd.jieling.protocols.MapInfoProto; import org.springframework.stereotype.Component; @@ -15,6 +16,25 @@ public class MonitorMissionBehavior extends BaseBehavior { @Override public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { boolean b = BehaviorUtil.updateMission(user, eventUpdateResponse); + user.getMapManager().setMonsterId(behaviorTypeValues[0][0]); + for (int i = 1; i < behaviorTypeValues.length; i++) { + BehaviorUtil.addBehaviorInfo(behaviorTypeValues[i][3], user.getMapManager(), behaviorTypeValues[i][0], behaviorTypeValues[i][1], behaviorTypeValues[i][2]); + } return b; } + + @Override + public boolean isFightBehavior() { + return true; + } + + @Override + public boolean afterFight(User user, int[][] behaviorTypeValues, FightInfoProto.FightEndResponse.Builder fightEndResponse) throws Exception { + int monsterNum = user.getMapManager().getMonsterNum(); + if (behaviorTypeValues[0][0] == user.getMapManager().getMonsterId() && monsterNum < behaviorTypeValues[0][1]) { + user.getMapManager().setMonsterNum(monsterNum + 1); + BehaviorUtil.updateMissionEndFight(user, fightEndResponse); + } + return true; + } }