ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -622,7 +622,7 @@ Def_Skill_Effect_StoreBlood = 809 # 将期间受到的伤害总值,用于最后回血,不影响伤害 Def_Skill_Effect_AttackReplace = 1009 #攻击计算,野外小怪伤害替换1010 (2018-03-07增加精英怪) Def_Skill_Effect_Attack = 1010 #攻击计算 Def_Skill_Effect_LayerCnt = 1011 # BUFF层级数量 A值层数,B值层数处理方式0递增1递减 Def_Skill_Effect_LayerCnt = 1011 # BUFF层级数量 A值层数;B值:10位-是否非叠加属性,个位-层数处理方式0递增1递减;C值: 是否攻击减层 Def_Skill_Effect_MasterBuff = 1012 # 主从技能(同步buff持续时间) Def_Skill_Effect_SummonAttr = 1013 # 召唤兽属性 Def_Skill_Effect_BoomSeedID = 1014 # 引爆BUFF种子 @@ -775,6 +775,7 @@ Def_SkillID_LFZ = 47100 # 龙凤镯技能(打怪概率经验加成) Def_SkillID_HorsePetRobBossKillCntBuff = 21020 # 骑宠的怨念buff Def_SkillID_RealmBuff = 6100 # 境界经验buff Def_SkillID_BZZDBuff = 21220 # 百战之地经验buff Def_SkillID_FamilyWar_CWinBuff = 22101 # 仙盟联赛 - 连胜buff, 由连胜次数决定等级 Def_SkillID_FamilyWar_JoinBuff = 22131 # 仙盟联赛 - 参与buff, 由人数决定等级 @@ -3766,6 +3767,7 @@ Def_PDict_BZZD_TotalFightExp = "BZZD_TExp" # 最后一次进入副本挑战获得总经验, 领取多倍奖励时用 Def_PDict_BZZD_TotalFightExpPoint = "BZZD_TExpPoint" # 最后一次进入副本挑战获得总经验点, 领取多倍奖励时用 Def_PDict_BZZD_HistoryEnterCnt = "BZZD_HistoryEnterCnt" # 历史进入总次数 Def_PDict_BZZD_NeedReduceExpBuff = "BZZD_NeedReduceExpBuff" # 是否需要扣除层级经验加成buff # 公共CD副本扫荡 Def_PDict_PubCDFBS_Time = "PCDFBS_%s_Time" # 开始扫荡时间, 参数(公共组编号) ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py
@@ -38,6 +38,7 @@ import BuffSkill import EventShell import PyGameData import SkillCommon #---副本配置对应key值--- @@ -65,6 +66,10 @@ FBPlayerDict_TotalExp = 'FBPlayerDict_TotalExp' # 获得的总经验 FBPlayerDict_TotalExpPoint = 'FBPlayerDict_TotalExpPoint' # 获得的总经验点 FBPlayerDict_EncourageLV = 'FBPlayerDict_EncourageLV' # 鼓舞等级 def OnFBPlayerOnLogin(curPlayer): ReduceExpBuffOnLogin(curPlayer) return ## 是否能够通过活动查询进入 def OnEnterFBEvent(curPlayer, mapID, lineID, tick): @@ -116,6 +121,7 @@ EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_BZZD, 0, ChConfig.CME_Log_Start, logType) historyEnterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_HistoryEnterCnt) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BZZD_HistoryEnterCnt, min(historyEnterCnt + 1, 999)) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BZZD_NeedReduceExpBuff, 1) # 进入的时候标记需要扣除 __GiveFirstEnterPrize(curPlayer, historyEnterCnt + 1) # 初始化所需击杀NPC @@ -228,6 +234,9 @@ ## 玩家主动离开副本 def DoPlayerLeaveFB(curPlayer, tick): if GameWorld.GetGameFB().GetFBStep() <= FB_Step_Fighting: GameWorld.DebugLog("经验副本进行中,玩家主动退出,直接扣除经验层级buff!", curPlayer.GetPlayerID()) DoReduceExpBuff(curPlayer) return ## 玩家升级 @@ -452,6 +461,8 @@ continue playerID = curPlayer.GetPlayerID() DoReduceExpBuff(curPlayer) # 记录最高总经验 exp = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_TotalExp) expPoint = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_TotalExpPoint) @@ -513,7 +524,15 @@ playerID = curPlayer.GetPlayerID() enterLV = curPlayer.GetLV() GameWorld.DebugLog("仙界秘境扫荡: mapID=%s,lineID=%s,sweepCnt=%s" % (mapID, lineID, sweepCnt), playerID) expRateEx = 0 expRateLayerBuff = SkillCommon.FindBuffByID(curPlayer, ChConfig.Def_SkillID_BZZDBuff)[0] if expRateLayerBuff: hasEffect = SkillCommon.GetSkillEffectByEffectID(expRateLayerBuff.GetSkill(), ChConfig.TYPE_Calc_AttrFightExpRate) if hasEffect: expRateEx = hasEffect.GetEffectValue(0) # 能叠加的最大上限 DoReduceExpBuff(curPlayer, expRateLayerBuff) GameWorld.DebugLog("仙界秘境扫荡: mapID=%s,lineID=%s,sweepCnt=%s,expRateEx=%s" % (mapID, lineID, sweepCnt, expRateEx), playerID) totalExp = 0 fairylandNPCList = IpyGameDataPY.GetFuncEvalCfg('FairylandNPC', 1) @@ -527,7 +546,7 @@ addExp = eval(IpyGameDataPY.GetFuncCompileCfg("XjmjMonsterExp", 1)) addExpT = addExp * npcCount playerControl = PlayerControl.PlayerControl(curPlayer) finalAddExp = playerControl.AddExp(addExpT, ShareDefine.Def_ViewExpType_KillNPC) finalAddExp = playerControl.AddExp(addExpT, ShareDefine.Def_ViewExpType_KillNPC, expRateEx=expRateEx) totalExp += finalAddExp GameWorld.DebugLog(" reExp=%s,npcID=%s,baseExp=%s,expMulti=%s,addExp=%s,npcCount=%s,addExpT=%s,finalAddExp=%s,totalExp=%s" % (reExp, npcID, baseExp, expMulti, addExp, npcCount, addExpT, finalAddExp, totalExp), playerID) @@ -569,6 +588,23 @@ __SendBZZDOverInfo(curPlayer, overDict) return def DoReduceExpBuff(curPlayer, buff=None): BuffSkill.ReduceBuffLayer(curPlayer, buff, ChConfig.Def_SkillID_BZZDBuff, 1) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_BZZD_NeedReduceExpBuff, 0) return def ReduceExpBuffOnLogin(curPlayer): if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BZZD_NeedReduceExpBuff): return mapID = GameWorld.GetMap().GetMapID() if mapID == ChConfig.Def_FBMapID_BZZD and GameWorld.GetGameFB().GetFBStep() <= FB_Step_Fighting: GameWorld.DebugLog("经验副本进行中,还不需要扣除经验层级buff!", curPlayer.GetPlayerID()) return DoReduceExpBuff(curPlayer) return ## 副本行为 def DoFBAction(curPlayer, actionType, actionInfo, tick): if actionType == 0: ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4151,10 +4151,10 @@ elif expViewType in [ShareDefine.Def_ViewExpType_GameEvent, ShareDefine.Def_ViewExpType_Sit]: exp_rate = curPlayer.GetGameEventExpRate() exp_rate += GetFamilySitExpPer(curPlayer) exp_rate += expRateEx else: exp_rate = max(GameWorld.GetGameWorld().GetExpRate(), ChConfig.Def_MaxRateValue) exp_rate += expRateEx #输入的经验有可能为long型 addExp = int(addExp * exp_rate / float(ChConfig.Def_MaxRateValue)) ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -89,11 +89,11 @@ # buff替换逻辑,十位数 def GetBuffReplaceType(curSkill): return curSkill.GetCanRepeatTime()/10 return curSkill.GetCanRepeatTime()/10%10 # buff根据释放者不同判断是否共存buff,百位数 Def_Buff_NoCoexist def GetBuffCoexistType(curSkill): return curSkill.GetCanRepeatTime()/10%10 return curSkill.GetCanRepeatTime()/100 def GetBuffMaxLayer(curSkill): layerMaxCnt = 0 @@ -102,6 +102,16 @@ layerMaxCnt = hasEffect.GetEffectValue(0) # 能叠加的最大上限 return layerMaxCnt def IsLayerPlusAttr(curBuff): ## 是否叠加属性层级buff,可叠加时,属性=单层属性*层级,默认叠加 hasEffect = SkillCommon.GetSkillEffectByEffectID(curBuff.GetSkill(), ChConfig.Def_Skill_Effect_LayerCnt) if not hasEffect: return False if hasEffect.GetEffectValue(1)/10 == 1: # 配置不叠加,直接返回False return False return True # 改变BUFF持续时间 def ChangeLastTime(attacker, curSkill): @@ -175,7 +185,7 @@ hasEffect = SkillCommon.GetSkillEffectByEffectID(curSkill, ChConfig.Def_Skill_Effect_LayerCnt) if hasEffect: layerMaxCnt = hasEffect.GetEffectValue(0) # 能叠加的最大上限 layerCalc = hasEffect.GetEffectValue(1) # 增加层级还是减少层级 Def_BuffLayer_Add layerCalc = hasEffect.GetEffectValue(1)%10 # 增加层级还是减少层级 Def_BuffLayer_Add #1 检查是否有相同的BUFF,如果有相同的就刷新时间 @@ -949,6 +959,20 @@ PYSync_RefreshBuff(gameObj, buff, buffType) return def ReduceBuffLayer(gameObj, buff, skillTypeID, delLayerCnt=1): ## 减少buff的Value值 #GameWorld.DebugLog("ReduceBuffLayer: skillTypeID=%s,delLayerCnt=%s %s" % (skillTypeID, delLayerCnt, buff)) if not buff and not skillTypeID: return if not buff: buff = SkillCommon.FindBuffByID(gameObj, skillTypeID)[0] if not buff or buff.GetLayer() <= 0: return SetBuffLayer(gameObj, buff, max(0, buff.GetLayer() - delLayerCnt), skillTypeID=skillTypeID, isSync=True) return ## 属性buff效果id对应计算模块字典{效果id:(计算模块名后缀, [属性类型])} # 带属性的buff 默认以属性类型为效果ID ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_LinePlus.py
@@ -32,7 +32,7 @@ return effect = curEffect.GetEffectValue(0) if curBuff and curBuff.GetLayer(): if curBuff and curBuff.GetLayer() and BuffSkill.IsLayerPlusAttr(curBuff): # 层级叠加效果 effect = effect*curBuff.GetLayer() ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_LineReduce.py
@@ -33,7 +33,7 @@ return effect = curEffect.GetEffectValue(0) if curBuff and curBuff.GetLayer(): if curBuff and curBuff.GetLayer() and BuffSkill.IsLayerPlusAttr(curBuff): # 层级叠加效果 effect = effect*curBuff.GetLayer() ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_NoLinePlus.py
@@ -32,7 +32,7 @@ return effect = curEffect.GetEffectValue(0) if curBuff and curBuff.GetLayer(): if curBuff and curBuff.GetLayer() and BuffSkill.IsLayerPlusAttr(curBuff): # 层级叠加效果 effect = effect*curBuff.GetLayer() ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_NoLineReduce.py
@@ -33,7 +33,7 @@ return effect = curEffect.GetEffectValue(0) if curBuff and curBuff.GetLayer(): if curBuff and curBuff.GetLayer() and BuffSkill.IsLayerPlusAttr(curBuff): # 层级叠加效果 effect = effect*curBuff.GetLayer()