公会副本提交
parent
ec758ee011
commit
95375eab26
|
@ -17,7 +17,7 @@ public enum FightType {
|
||||||
CarPersonFight(12), // 车迟斗法抢夺
|
CarPersonFight(12), // 车迟斗法抢夺
|
||||||
|
|
||||||
EXPEDITION(13), // 远征
|
EXPEDITION(13), // 远征
|
||||||
|
GuildChallenge(14), //公会副本
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ public class GuildInfo extends MongoBase {
|
||||||
|
|
||||||
private int currBossId;
|
private int currBossId;
|
||||||
|
|
||||||
private long bossHpRemain;
|
private int bossHpRemain;
|
||||||
|
|
||||||
public GuildInfo() {
|
public GuildInfo() {
|
||||||
setRootCollection(_COLLECTION_NAME);
|
setRootCollection(_COLLECTION_NAME);
|
||||||
|
@ -82,7 +82,6 @@ public class GuildInfo extends MongoBase {
|
||||||
icon = MathUtils.randomInt(SGuildSetting.sGuildSetting.getTotemItem().length)+1;
|
icon = MathUtils.randomInt(SGuildSetting.sGuildSetting.getTotemItem().length)+1;
|
||||||
defendInfo = new ConcurrentHashMap<>();
|
defendInfo = new ConcurrentHashMap<>();
|
||||||
currBossId = 1;
|
currBossId = 1;
|
||||||
bossHpRemain = 10000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addMembers(int type,int uid){
|
public void addMembers(int type,int uid){
|
||||||
|
@ -281,11 +280,11 @@ public class GuildInfo extends MongoBase {
|
||||||
updateString("currBossId",currBossId);
|
updateString("currBossId",currBossId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getBossHpRemain() {
|
public int getBossHpRemain() {
|
||||||
return bossHpRemain;
|
return bossHpRemain;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBossHpRemain(long bossHpRemain) {
|
public void setBossHpRemain(int bossHpRemain) {
|
||||||
this.bossHpRemain = bossHpRemain;
|
this.bossHpRemain = bossHpRemain;
|
||||||
updateString("bossHpRemain",bossHpRemain);
|
updateString("bossHpRemain",bossHpRemain);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,9 @@ import com.ljsd.jieling.util.MessageUtil;
|
||||||
import config.SGuildCheckpointConfig;
|
import config.SGuildCheckpointConfig;
|
||||||
import manager.STableManager;
|
import manager.STableManager;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
@ -60,17 +62,21 @@ public class GuildChallengeLogic {
|
||||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
|
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
|
||||||
|
|
||||||
int currBossId = guildInfo.getCurrBossId();
|
int currBossId = guildInfo.getCurrBossId();
|
||||||
|
|
||||||
SGuildCheckpointConfig config = STableManager.getConfig(SGuildCheckpointConfig.class).get(currBossId);
|
SGuildCheckpointConfig config = STableManager.getConfig(SGuildCheckpointConfig.class).get(currBossId);
|
||||||
|
|
||||||
|
double bossHpRemain = guildInfo.getBossHpRemain();
|
||||||
|
|
||||||
Family.GetGuildChallengeInfoResponse response = Family.GetGuildChallengeInfoResponse.newBuilder()
|
Family.GetGuildChallengeInfoResponse response = Family.GetGuildChallengeInfoResponse.newBuilder()
|
||||||
.setCurBoss(currBossId)
|
.setCurBoss(currBossId)
|
||||||
.setBlood((int)(guildInfo.getBossHpRemain()*10000/config.getOpenRules())).build();
|
.setBlood(bossHpRemain==0?10000:(int)(bossHpRemain*10000/999999)).build();
|
||||||
|
|
||||||
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);
|
MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 挑战
|
* 挑战、扫荡
|
||||||
* @param session
|
* @param session
|
||||||
*/
|
*/
|
||||||
public void doGuildChallenge(ISession session,int bossId,int type,MessageTypeProto.MessageType messageType) throws Exception {
|
public void doGuildChallenge(ISession session,int bossId,int type,MessageTypeProto.MessageType messageType) throws Exception {
|
||||||
|
@ -81,7 +87,7 @@ public class GuildChallengeLogic {
|
||||||
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(lockMap.containsKey(guildId)){
|
if(!lockMap.containsKey(guildId)){
|
||||||
lockMap.put(guildId,new Object());
|
lockMap.put(guildId,new Object());
|
||||||
}
|
}
|
||||||
String error = "";
|
String error = "";
|
||||||
|
@ -94,26 +100,35 @@ public class GuildChallengeLogic {
|
||||||
long damage = 0;
|
long damage = 0;
|
||||||
synchronized (lockMap.get(guildId)){
|
synchronized (lockMap.get(guildId)){
|
||||||
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
|
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
|
||||||
if(guildInfo.getCurrBossId()!=bossId||guildInfo.getBossHpRemain()<=0){
|
if(guildInfo.getCurrBossId()!=bossId){
|
||||||
error = "已被击杀";
|
error = "已被击杀";
|
||||||
}else{
|
}else{
|
||||||
SGuildCheckpointConfig config = STableManager.getConfig(SGuildCheckpointConfig.class).get(bossId);
|
SGuildCheckpointConfig config = STableManager.getConfig(SGuildCheckpointConfig.class).get(bossId);
|
||||||
|
|
||||||
if(type==0){
|
if(type==0){
|
||||||
PVEFightEvent pveFightEvent = new PVEFightEvent(uid, 1, 10, "", GameFightType.DailyChallenge, config.getMonsterId(), 3);
|
PVEFightEvent pveFightEvent = new PVEFightEvent(uid, 1, 10, "", GameFightType.GuildChallenge, config.getMonsterId(), 3);
|
||||||
|
if(guildInfo.getBossHpRemain()!=0){
|
||||||
|
List<Integer> hp = new ArrayList<>();
|
||||||
|
hp.add(guildInfo.getBossHpRemain());
|
||||||
|
pveFightEvent.setMonsterRemainHp(hp);
|
||||||
|
}
|
||||||
FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent);
|
FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent);
|
||||||
fightData = fightResult.getFightData();
|
fightData = fightResult.getFightData();
|
||||||
int[] checkResult = fightResult.getCheckResult();
|
int[] checkResult = fightResult.getCheckResult();
|
||||||
int damageInt = checkResult[1];
|
int damageInt = checkResult[1];
|
||||||
|
|
||||||
if(checkResult[0]==1){
|
if(checkResult[0]==1) {
|
||||||
kill = 1;
|
kill = 1;
|
||||||
guildInfo.setCurrBossId(guildInfo.getCurrBossId()+1);
|
//重置boss血量
|
||||||
|
guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1);
|
||||||
|
guildInfo.setBossHpRemain(0);
|
||||||
|
}else if(checkResult[0]==0){
|
||||||
|
guildInfo.setBossHpRemain(guildInfo.getBossHpRemain()==0?999999-damageInt:guildInfo.getBossHpRemain()-damageInt);
|
||||||
|
}else{
|
||||||
|
error = "战斗异常!";
|
||||||
}
|
}
|
||||||
user.getGuildMyInfo().setGuildChallengeDamage(damageInt);
|
user.getGuildMyInfo().setGuildChallengeDamage(damageInt);
|
||||||
//记录血量
|
//记录血量
|
||||||
guildInfo.setBossHpRemain(guildInfo.getBossHpRemain()-damageInt);
|
|
||||||
damage = damageInt;
|
damage = damageInt;
|
||||||
}else{
|
}else{
|
||||||
//扫荡
|
//扫荡
|
||||||
|
|
|
@ -47,6 +47,7 @@ public enum GameFightType {
|
||||||
|
|
||||||
CarBossChallenge(FightType.CarBossFight,new DefaultWithoutHandFightHandler(),null),
|
CarBossChallenge(FightType.CarBossFight,new DefaultWithoutHandFightHandler(),null),
|
||||||
CarPersonChallenge(FightType.CarBossFight,new PVPFightHandler(),null),
|
CarPersonChallenge(FightType.CarBossFight,new PVPFightHandler(),null),
|
||||||
|
GuildChallenge(FightType.GuildChallenge,new DefaultWithoutHandFightHandler(),null),
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue