From 675043eaa8d7f02469edd7f1699055796b3d203a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 07 十二月 2023 14:27:24 +0800 Subject: [PATCH] 10019 【砍树】回合战斗(与玩家基础回合战斗) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 63 ++++++++++++++++++++++++++++++- 1 files changed, 60 insertions(+), 3 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py index 8542c3c..42d8693 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py @@ -55,6 +55,7 @@ import PlayerNewFairyCeremony import GameLogic_CrossGrassland import PlayerActGarbageSorting +import PlayerViewCacheTube import PlayerActBossTrial import PlayerTongTianLing import CrossPlayerData @@ -2267,7 +2268,7 @@ # @param aiType: AI类型 # @return 如果召唤失败返回None 否则返回召唤的NPC的实例 # @remarks 在地图里召唤NPC 根据NPCID 出生点 AI类型 和TICK -def SummonMapNpc(npcId, rebornX, rebornY, aiType=0, lastTime=0, playerID=0, sightLevel=0, refreshID=0): +def SummonMapNpc(npcId, rebornX, rebornY, aiType=0, lastTime=0, playerID=0, sightLevel=0, refreshID=0, pvpPlayerID=0): curSummon = GameWorld.GetNPCManager().AddPlayerSummonNPC() if not curSummon: return @@ -2294,6 +2295,9 @@ if curSummon.GetType() == ChConfig.ntRobot: __OnFBRobotReborn(curSummon, curSummon.GetLV()) + + if curSummon.GetType() == ChConfig.ntPVP and pvpPlayerID: + curSummon.SetDict(ChConfig.Def_NPC_Dict_PVPPlayerID, pvpPlayerID) curSummon.Reborn(rebornX, rebornY, False) NPCControl(curSummon).DoNPCRebornCommLogic(tick) @@ -2453,6 +2457,9 @@ summonPlayerID = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_SummonMapNPCPlayerID) if summonPlayerID > 0: curNPC.SetDict(ChConfig.Def_NPC_Dict_SummonMapNPCPlayerID, 0) + + if curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_PVPPlayerID): + curNPC.SetDict(ChConfig.Def_NPC_Dict_PVPPlayerID, 0) refreshObj = NPCRealmRefresh.GetTagNPCRefresh(curNPC) if refreshObj: @@ -4054,8 +4061,12 @@ PetControl.RefurbishPetAttr(curNPC, canSyncClient) return - DoNPCAttrStrengthen(curNPC, isReborn) - + pvpPlayerID = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_PVPPlayerID) + if pvpPlayerID: + self.SetPVPNPCPlayerAttr(pvpPlayerID) + else: + DoNPCAttrStrengthen(curNPC, isReborn) + #计算buf对战斗属性的改变 allAttrList = SkillShell.CalcBuffer_NPCBattleEffect(curNPC) @@ -4067,6 +4078,52 @@ return + def SetPVPNPCPlayerAttr(self, pvpPlayerID): + PropDict = PlayerViewCacheTube.GetPlayerPropData(pvpPlayerID) + if not PropDict: + return + curNPC = self.__Instance + curNPC.SetCurLV(PropDict["LV"], False) + curNPC.SetMinAtk(PropDict["MinAtk"]) + curNPC.SetMaxAtk(PropDict["MaxAtk"]) + curNPC.SetDef(PropDict["Def"]) + GameObj.SetMaxHP(curNPC, PropDict["MaxHP"]) + curNPC.SetHit(PropDict["Hit"]) + curNPC.SetMiss(PropDict["Miss"]) + +# curPlayerPropDict["SkillAtkRate"] = curPlayer.GetSkillAtkRate() # 技能攻击比例加成 +# curPlayerPropDict["SkillAtkRateReduce"] = PlayerControl.GetSkillAtkRateReduce(curPlayer) # 技能攻击比例减少 +# curPlayerPropDict["LuckyHitRate"] = curPlayer.GetLuckyHitRate() # 会心一击几率 +# curPlayerPropDict["LuckyHitVal"] = curPlayer.GetLuckyHitVal() # 会心一击伤害固定值 +# curPlayerPropDict["LuckyHitRateReduce"] = PlayerControl.GetLuckyHitRateReduce(curPlayer) # 会心一击概率抗性 +# curPlayerPropDict["LuckyHitReduce"] = PlayerControl.GetLuckyHitReduce(curPlayer) # 会心一击伤害减免固定值 +# curPlayerPropDict["SuperHitRate"] = curPlayer.GetSuperHitRate() # 暴击概率 +# curPlayerPropDict["SuperHit"] = curPlayer.GetSuperHit() # 暴击伤害固定值 +# curPlayerPropDict["SuperHitRateReduce"] = PlayerControl.GetSuperHitRateReduce(curPlayer) # 暴击概率抗性 +# curPlayerPropDict["SuperHitReduce"] = PlayerControl.GetSuperHitReduce(curPlayer) # 暴击伤害抗性固定值 +# curPlayerPropDict["IceAtk"] = curPlayer.GetIceAtk() # 真实伤害 固定值 +# curPlayerPropDict["IceDef"] = curPlayer.GetIceDef() # 真实伤害防御 固定值 +# curPlayerPropDict["IgnoreDefRate"] = curPlayer.GetIgnoreDefRate() # 无视防御几率 +# curPlayerPropDict["IgnoreDefRateReduce"] = PlayerControl.GetIgnoreDefRateReduce(curPlayer) # 无视防御概率抗性 +# curPlayerPropDict["IgnoreDefReducePer"] = PlayerControl.GetIgnoreDefReducePer(curPlayer) # 无视防御伤害减免 +# curPlayerPropDict["DamagePVE"] = PlayerControl.GetDamagePVE(curPlayer) # 伤害输出计算固定值PVE +# curPlayerPropDict["DamagePerPVP"] = PlayerControl.GetDamagePerPVP(curPlayer) # 伤害输出计算百分比PVP +# curPlayerPropDict["DamagePerPVPReduce"] = PlayerControl.GetDamagePerPVPReduce(curPlayer) # 伤害输出计算百分比PVP减少 +# curPlayerPropDict["DamagePVP"] = PlayerControl.GetDamagePVP(curPlayer) # PVP固定伤害 +# curPlayerPropDict["DamagePVPReduce"] = PlayerControl.GetDamagePVPReduce(curPlayer) # PVP固定减伤 +# curPlayerPropDict["FinalHurt"] = PlayerControl.GetFinalHurt(curPlayer) # 最终固定伤害增加 +# curPlayerPropDict["FinalHurtReduce"] = PlayerControl.GetFinalHurtReduce(curPlayer) # 最终固定伤害减少 +# curPlayerPropDict["FinalHurtPer"] = PlayerControl.GetFinalHurtPer(curPlayer) # 最终伤害百分比 +# curPlayerPropDict["FinalHurtReducePer"] = PlayerControl.GetFinalHurtReducePer(curPlayer) # 最终伤害减少百分比 +# curPlayerPropDict["OnlyFinalHurt"] = PlayerControl.GetOnlyFinalHurt(curPlayer) # 额外输出伤害 +# curPlayerPropDict["DamChanceDef"] = PlayerControl.GetDamChanceDef(curPlayer) # 20%的概率抵御伤害比率 +# curPlayerPropDict["NPCHurtAddPer"] = PlayerControl.GetNPCHurtAddPer(curPlayer) # 对怪物伤害加成 +# curPlayerPropDict["AtkBackHPPer"] = PlayerControl.GetAtkBackHPPer(curPlayer) # 攻击回复血量固定值 +# curPlayerPropDict["PVPAtkBackHP"] = PlayerControl.GetPVPAtkBackHP(curPlayer) # PVP攻击回血 +# curPlayerPropDict["FaintRate"] = PlayerControl.GetFaintRate(curPlayer) # 触发击晕 +# curPlayerPropDict["FaintDefRate"] = PlayerControl.GetFaintDefRate(curPlayer) # 击晕抵抗 + return + def SetHelpBattleRobotRebornAttr(self, fightPower): '''助战机器人只设置血量属性 血量算法,(助战玩家=助战机器人):每个副本配置伤害*(助战玩家战力/副本规定战力)*系数值 系数值暂定为50 -- Gitblit v1.8.0