| | |
| | | SyncTaofaInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def GMAddMemTaofaAtk(curPlayer, curFamily, playerID, hurtValue, isAnger):
|
| | | ## GM添加假的讨伐数据
|
| | | |
| | | familyID = curFamily.GetID()
|
| | | familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ActionType)
|
| | | actionData = familyAction.GetActionDataByValue1(playerID, True)
|
| | | |
| | | faAtkCnt = GetFAAtkCount(actionData)
|
| | | faContribBoxCnt = GetFAContribBoxCnt(actionData)
|
| | | faHurtTotal = GetFAHurtTotal(actionData) + GetFAHurtTotalEx(actionData) * ChConfig.Def_PerPointValue
|
| | | |
| | | atkType = AtkType_Normal
|
| | | calcHurtCnt = 1 # 计算伤害次数
|
| | | if isAnger:
|
| | | atkType = AtkType_Anger # 怒气攻击
|
| | | calcHurtCnt = IpyGameDataPY.GetFuncCfg("FamilyTaofaAtk", 5)
|
| | | |
| | | hurtTotal = 0 # 本次总伤害
|
| | | for _ in range(calcHurtCnt):
|
| | | hurtTotal += hurtValue
|
| | | |
| | | atkTime = int(time.time())
|
| | | faAtkCnt += calcHurtCnt
|
| | | |
| | | # 计算贡献盒子数
|
| | | boxAwardHurtList = IpyGameDataPY.GetFuncEvalCfg("FamilyTaofaBox", 1)
|
| | | contribBoxMax = min(IpyGameDataPY.GetFuncCfg("FamilyTaofaBox", 2), 1000) # 可贡献的最大箱子数
|
| | | finalAwardHurt = boxAwardHurtList[-1] # 最后一档最大伤害值
|
| | | loopNeedHurt = (finalAwardHurt - boxAwardHurtList[-2]) if len(boxAwardHurtList) > 1 else finalAwardHurt # 最后一档所需伤害值
|
| | | |
| | | # 原总贡献盒子数
|
| | | boxContribCnt = 0
|
| | | for needHurt in boxAwardHurtList:
|
| | | if faHurtTotal < needHurt:
|
| | | break
|
| | | boxContribCnt += 1
|
| | | if faHurtTotal > finalAwardHurt:
|
| | | loopHurtTotal = faHurtTotal - finalAwardHurt
|
| | | loopContribBoxCnt = loopHurtTotal / loopNeedHurt
|
| | | boxContribCnt = min(boxContribCnt + loopContribBoxCnt, contribBoxMax)
|
| | | |
| | | # 新总宝箱盒子数
|
| | | faHurtTotal += hurtTotal
|
| | | updContribBoxCnt = 0
|
| | | for needHurt in boxAwardHurtList:
|
| | | if faHurtTotal < needHurt:
|
| | | break
|
| | | updContribBoxCnt += 1
|
| | | if faHurtTotal > finalAwardHurt:
|
| | | loopHurtTotal = faHurtTotal - finalAwardHurt
|
| | | loopContribBoxCnt = loopHurtTotal / loopNeedHurt
|
| | | updContribBoxCnt = min(updContribBoxCnt + loopContribBoxCnt, contribBoxMax)
|
| | | |
| | | addContribCnt = 0
|
| | | if updContribBoxCnt > boxContribCnt:
|
| | | addContribCnt = updContribBoxCnt - boxContribCnt
|
| | | faContribBoxCnt += addContribCnt
|
| | | |
| | | GameWorld.DebugAnswer(curPlayer, "讨伐ID:%s,伤:%s,箱:%s/%s,怒:%s" % (playerID, hurtValue, addContribCnt, updContribBoxCnt, int(isAnger)))
|
| | | |
| | | # 更新Action记录
|
| | | SetFAAtkTime(actionData, atkTime)
|
| | | SetFAAtkCount(actionData, faAtkCnt)
|
| | | SetFAHurtTotal(actionData, faHurtTotal % ChConfig.Def_PerPointValue)
|
| | | SetFAHurtTotalEx(actionData, faHurtTotal / ChConfig.Def_PerPointValue)
|
| | | SetFAContribBoxCnt(actionData, faContribBoxCnt)
|
| | | atkList = actionData.GetUserDict().get("atkList", [])
|
| | | atkList.append([atkTime, addContribCnt, hurtTotal, atkType])
|
| | | actionData.GetUserDict().update({"atkList":atkList})
|
| | | |
| | | return actionData
|
| | |
|
| | | def GetTaofaBoxAward(curPlayer):
|
| | | boxUnGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FamilyTaofaBoxUnGetCnt)
|
| | | if not boxUnGetCnt:
|