活动掉落

back_recharge
wangyuan 2019-08-05 15:07:47 +08:00
parent 54c4f06df1
commit 7f5ccf558b
14 changed files with 147 additions and 68 deletions

View File

@ -0,0 +1,71 @@
package com.ljsd.jieling.config;
import com.ljsd.jieling.logic.STableManager;
import com.ljsd.jieling.logic.Table;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@Table(name ="ActivityDropReward")
public class SActivityDropReward implements BaseConfig {
private int id;
private int[] activityReward;
private int[] rewardGroup;
private int activityId;
private Set<Integer> dropGroupIds;
public static Map<Integer,SActivityDropReward> activityDropRewardByActivityMap;
public static Map<Integer,SActivityDropReward> activityDropRewardByIdMap;
@Override
public void init() throws Exception {
Map<Integer, SActivityDropReward> config = STableManager.getConfig(SActivityDropReward.class);
Map<Integer, SActivityDropReward> configByActivityMap = new HashMap<>();
for(SActivityDropReward sActivityDropReward : config.values()){
int[] rewardGroup = sActivityDropReward.getRewardGroup();
Set<Integer> dropGroupIds = new HashSet<>();
for(int rewardGroupId : rewardGroup){
dropGroupIds.add(rewardGroupId);
}
sActivityDropReward.setDropGroupIds(dropGroupIds);
configByActivityMap.put(sActivityDropReward.getActivityId(),sActivityDropReward);
}
activityDropRewardByActivityMap = configByActivityMap;
activityDropRewardByIdMap = config;
}
public int getId() {
return id;
}
public int[] getActivityReward() {
return activityReward;
}
public int[] getRewardGroup() {
return rewardGroup;
}
public int getActivityId() {
return activityId;
}
public Set<Integer> getDropGroupIds() {
return dropGroupIds;
}
public void setDropGroupIds(Set<Integer> dropGroupIds) {
this.dropGroupIds = dropGroupIds;
}
}

View File

@ -96,6 +96,8 @@ public class SGameSetting implements BaseConfig {
private int[][] itemAdd;
private int showRank;
private Map<Integer,int[]> itemRecoveryMap;

View File

@ -64,6 +64,8 @@ public class SMonsterConfig implements BaseConfig {
private int[] passiveSkillList;
private int[] monsterAi;
public static Map<Integer, SMonsterConfig> getsMonsterConfigMap() {
return sMonsterConfigMap;
}

View File

@ -176,13 +176,6 @@ public class ActivityLogic {
}
public void initServenHappy(User user, SGlobalActivity sGlobalActivity) throws Exception {
user.getUserMissionManager().onGameEvent(user,GameEvent.SERVENHAPPY_REFRESH,sGlobalActivity.getId());
ActivityMission activityMission = new ActivityMission();
activityMission.initOtherMission(new ArrayList<>());
user.getActivityManager().addActivity(sGlobalActivity.getId(),activityMission);
}
public static ActivityLogic getInstance() {
return ActivityLogic.Instance.instance;

View File

@ -29,4 +29,6 @@ public interface ActivityType {
int FORCERANK = 11; //战力排行
int FORCESTANDARD = 12;//战力达标
// int EXCHANGEANDDROP = 15;//限时兑换活动
}

View File

@ -16,6 +16,7 @@ public enum ActivityTypeEnum {
BLESSACTIVITY(ActivityType.BLESSACTIVITY, BlessActivity::new),
TREASUREACTIVITY(ActivityType.TREASURE, TreasureActivity::new),
LUCKYCAT(ActivityType.LUCKYCAT, LuckyCatActivity::new),
SERVERHAPPY(ActivityType.SERVERHAPPY, DefaultEmptyActivity::new),
FORCERANK(ActivityType.FORCERANK, ForceRankActivity::new),
FORCESTANDARD(ActivityType.FORCESTANDARD, ForceStandardActivity::new);
private int type;
@ -62,6 +63,8 @@ public enum ActivityTypeEnum {
return FORCERANK.toActivity(id);
case ActivityType.FORCESTANDARD:
return FORCESTANDARD.toActivity(id);
case ActivityType.SERVERHAPPY:
return SERVERHAPPY.toActivity(id);
default:
return null;
}

View File

@ -0,0 +1,25 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SGlobalActivity;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
import java.util.ArrayList;
public class DefaultEmptyActivity extends AbstractActivity{
public DefaultEmptyActivity(int id) {
super(id);
}
@Override
public void initActivity(User user) throws Exception {
ActivityMission mission = new ActivityMission();
mission.initOtherMission(new ArrayList<>(0));
user.getActivityManager().addActivity(id, mission);
if(SGlobalActivity.getsGlobalActivityMap().get(id).getType() == ActivityType.SERVERHAPPY){
user.getUserMissionManager().onGameEvent(user, GameEvent.SERVENHAPPY_REFRESH,id);
}
}
}

View File

@ -1,24 +1,8 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.config.SGlobalActivity;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.GameEvent;
import java.util.ArrayList;
class SevenLoginActivity extends AbstractActivity {
@Override
public void initActivity(User user) throws Exception {
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
user.getUserMissionManager().onGameEvent(user, GameEvent.SERVENHAPPY_REFRESH, sGlobalActivity.getId());
ActivityMission activityMission = new ActivityMission();
activityMission.initOtherMission(new ArrayList<>());
user.getActivityManager().addActivity(sGlobalActivity.getId(), activityMission);
}
public SevenLoginActivity(int id) {
super(id);
}

View File

@ -53,10 +53,6 @@ public class ActivityMission extends MongoBase {
return activityProgressInfoMap;
}
public void updateMissionStatus(int missionId, int missionState) {
activityProgressInfoMap.put(missionId, new ActivityProgressInfo(missionId,missionState));
updateString("activityProgressInfoMap." + missionId,missionState);
}
public void updateActivityState(int state){

View File

@ -521,7 +521,7 @@ public class GuildLogic {
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
int uidType = getMemberType(uid, guildInfo.getMembers());
if(uidType>1){
if(uidType>2){
MessageUtil.sendErrorResponse(session,0,msgId,"无权操作");
return;
}
@ -561,7 +561,7 @@ public class GuildLogic {
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
int uidType = getMemberType(uid, guildInfo.getMembers());
if(uidType>1){
if(uidType>2){
MessageUtil.sendErrorResponse(session,0,msgId,"无权操作");
return;
}

View File

@ -412,10 +412,10 @@ public class CombatLogic {
SAdventureConfig sAdventureConfig = SAdventureConfig.getConfig().get(positionTmp);
int baseRewardGroup[] = sAdventureConfig.getBaseRewardGroup();
int[][] randomRewardGroup = sAdventureConfig.getRandomRewardGroup();
ItemUtil.combineReward(new int[]{baseRewardGroup[adventureStateInfoTmp.getLevel()-1]}, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.combineReward(user,new int[]{baseRewardGroup[adventureStateInfoTmp.getLevel()-1]}, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
int timesTemp =times;
while (timesTemp-->0){
ItemUtil.combineReward(randomRewardGroup[adventureStateInfoTmp.getLevel()-1], 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
ItemUtil.combineReward(user,randomRewardGroup[adventureStateInfoTmp.getLevel()-1], 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
}
takeTimes++;
}
@ -479,10 +479,10 @@ public class CombatLogic {
SAdventureConfig sAdventureConfig = SAdventureConfig.getConfig().get(positionTmp);
int baseRewardGroup[] = sAdventureConfig.getBaseRewardGroup();
int[][] randomRewardGroup = sAdventureConfig.getRandomRewardGroup();
ItemUtil.combineReward(new int[]{baseRewardGroup[adventureStateInfoTmp.getLevel()-1]}, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.combineReward(user,new int[]{baseRewardGroup[adventureStateInfoTmp.getLevel()-1]}, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
int timesTemp =times;
while (timesTemp-->0){
ItemUtil.combineReward(randomRewardGroup[adventureStateInfoTmp.getLevel()-1], 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
ItemUtil.combineReward(user,randomRewardGroup[adventureStateInfoTmp.getLevel()-1], 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
}
}
}
@ -783,12 +783,14 @@ public class CombatLogic {
}
}
int nowTime = (int)(TimeUtils.now()/1000);
String findRewardMail = ItemUtil.getMailReward(findRewardgroup, 1.0f);
User findUser = UserManager.getUser(findUserId);
String findRewardMail = ItemUtil.getMailReward(findUser,findRewardgroup, 1.0f);
String title = SErrorCodeEerverConfig.getI18NMessage("adventuren_boss_find_reward_title");
String content = SErrorCodeEerverConfig.getI18NMessage("adventuren_boss_find_reward__txt");
MailLogic.getInstance().sendMail(findUserId,title,content,findRewardMail,nowTime, Global.MAIL_EFFECTIVE_TIME);
String killRewardMail = ItemUtil.getMailReward(killReward, 1.0f);
User killUser = UserManager.getUser(killUid);
String killRewardMail = ItemUtil.getMailReward(killUser,killReward, 1.0f);
title = SErrorCodeEerverConfig.getI18NMessage("adventuren_boss_kill_reward_title");
content = SErrorCodeEerverConfig.getI18NMessage("adventuren_boss_kill_reward__txt");
MailLogic.getInstance().sendMail(killUid,title,content,killRewardMail,nowTime, Global.MAIL_EFFECTIVE_TIME);

View File

@ -248,7 +248,7 @@ public class ItemLogic {
reward.append("#").append(sItem.getResolveReward());
}
}
ItemUtil.combineReward(StringUtil.parseFiledInt(reward.toString()),1,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.combineReward(user,StringUtil.parseFiledInt(reward.toString()),1,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder();
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap, BIReason.DECOMPOS_HERO_REWARD);
sendUseAndPriceItemMessage(iSession, msgId, baseBuilder);

View File

@ -116,9 +116,12 @@ public class TreasureMissionType extends AbstractMissionType{
if(sTreasureTaskConfig.getTaskType() == MissionType.SENVER_HAPPY.getMissionTypeValue()){
sendProgress = doingProgress;
}
if(sendProgress>0){
if(sendProgress>=finishParm){
MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(id, MissionState.FINISH,sendProgress,takeTimes);
missionStateChangeInfos.add(missionStateChangeInfo);
}else{
MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(id, MissionState.DOING,sendProgress,takeTimes);
missionStateChangeInfos.add(missionStateChangeInfo);
}
}
}

View File

@ -118,26 +118,28 @@ public class ItemUtil {
Map<Integer, Integer> cardMap = new HashMap<>();
Map<Integer, Integer> equipMap = new HashMap<>();
Map<Integer, Integer> randomMap = new HashMap<>();
for (int dropGroupId : dropGroupIds) {
SRewardGroup sRewardGroup = SRewardGroup.getsRewardItemMap().get(dropGroupId);
if (sRewardGroup == null) {
continue;
}
selectDrop(sRewardGroup, itemMap, cardMap, equipMap, randomMap, dropRatio);
}
combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap);
useRandomItem(user, randomMap,reason);
addItem(user, itemMap, dropBuilder,reason);
addCard(user, cardMap, dropBuilder,reason);
addEquip(user, equipMap, dropBuilder,reason);
}
public static void getactivityDropInfo(int[] dropGroupIds, float dropRatio, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap ,Map<Integer, Integer> randomMap) throws Exception {
private static void combineRewardDropGroup(User user, int[] dropGroupIds, float dropRatio, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap) {
for (int dropGroupId : dropGroupIds) {
SRewardGroup sRewardGroup = SRewardGroup.getsRewardItemMap().get(dropGroupId);
if (sRewardGroup == null) {
continue;
}
selectDrop(sRewardGroup, itemMap, cardMap, equipMap, randomMap, dropRatio);
int[] extraDropGroupIds = activityExtraDropGroupId(user, dropGroupId);
for (int dropExtraGroupId : extraDropGroupIds) {
SRewardGroup sRewardGroupExtra = SRewardGroup.getsRewardItemMap().get(dropExtraGroupId);
if (sRewardGroupExtra == null) {
continue;
}
selectDrop(sRewardGroup, itemMap, cardMap, equipMap, randomMap, dropRatio);
}
}
}
@ -167,13 +169,7 @@ public class ItemUtil {
Map<Integer, Integer> cardMap = new HashMap<>();
Map<Integer, Integer> equipMap = new HashMap<>();
Map<Integer,Integer> randomMap = new HashMap<>();
for (int dropGroupId :dropGroupIds){
SRewardGroup sRewardGroup = SRewardGroup.getsRewardItemMap().get(dropGroupId);
if (sRewardGroup == null){
continue;
}
selectDrop(sRewardGroup,itemMap,cardMap,equipMap,randomMap,dropRatio);
}
combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap);
useRandomItem(user,randomMap,reason);
if (isMapping == 1) {
addItemToTemporaryBag(user, itemMap, equipMap, dropBuilder);
@ -186,23 +182,18 @@ public class ItemUtil {
}
/**
* @param user
* @param dropGroupIds
* @param dropRatio
* @return
* @throws Exception
*/
public static String getMailReward (int[] dropGroupIds,float dropRatio) throws Exception {
public static String getMailReward (User user,int[] dropGroupIds,float dropRatio) throws Exception {
Map<Integer, Integer> itemMap = new HashMap<>();
Map<Integer, Integer> cardMap = new HashMap<>();
Map<Integer, Integer> equipMap = new HashMap<>();
Map<Integer,Integer> randomMap = new HashMap<>();
for (int dropGroupId :dropGroupIds){
SRewardGroup sRewardGroup = SRewardGroup.getsRewardItemMap().get(dropGroupId);
if (sRewardGroup == null){
continue;
}
selectDrop(sRewardGroup,itemMap,cardMap,equipMap,randomMap,dropRatio);
}
combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap);
return getReward(itemMap,cardMap,equipMap,randomMap);
}
@ -215,14 +206,8 @@ public class ItemUtil {
return getReward(itemMap,cardMap,equipMap,randomMap);
}
public static void combineReward(int[] dropGroupIds,float dropRatio, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap){
for (int dropGroupId :dropGroupIds){
SRewardGroup sRewardGroup = SRewardGroup.getsRewardItemMap().get(dropGroupId);
if (sRewardGroup == null){
continue;
}
selectDrop(sRewardGroup,itemMap,cardMap,equipMap,randomMap,dropRatio);
}
public static void combineReward(User user,int[] dropGroupIds,float dropRatio, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap){
combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap);
}
public static void combineReward(int[][] itemArr, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap){
@ -1130,4 +1115,15 @@ public class ItemUtil {
}
return sourceNum;
}
private static int[] activityExtraDropGroupId(User user,int groupId){
Map<Integer, ActivityMission> activityMissionMap = user.getActivityManager().getActivityMissionMap();
Map<Integer, SActivityDropReward> activityDropRewardByIdMap = SActivityDropReward.activityDropRewardByIdMap;
for(SActivityDropReward sActivityDropReward : activityDropRewardByIdMap.values()){
if(sActivityDropReward.getDropGroupIds().contains(groupId) && activityMissionMap.containsKey(sActivityDropReward.getActivityId())){
return sActivityDropReward.getActivityReward();
}
}
return new int[0];
}
}