From f47e3587c7a92e487300986380826cbba2683b19 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 24 十二月 2018 17:56:08 +0800
Subject: [PATCH] 5368 【后端】【1.4】聚魂功能开发(报错修复)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py |   53 +++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 39 insertions(+), 14 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 91ae3d5..7599b01 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -24,7 +24,7 @@
 import SkillShell
 import BuffSkill
 import BaseAttack
-import PlayerTruck
+import ChNetSendPack
 import SkillCommon
 import AttackCommon
 import ItemControler
@@ -47,7 +47,7 @@
 import BossHurtMng
 import PlayerSuperMarket
 import GameLogic_FamilyInvade
-#import GameLogic_MunekadoTrial
+import GameLogic_GatherSoul
 import FormulaControl
 import PlayerMagicWeapon
 import PlayerBossReborn
@@ -285,7 +285,7 @@
     
     attrDict = {}
     paramDict = attrStrengthenInfo[NPCAttr_ParamDict] # 过程参数公式字典
-    attrStrengthenList = attrStrengthenInfo[NPCAttr_AttrStrengthenList] # 属性成长公式字典
+    attrStrengthenDict = attrStrengthenInfo[NPCAttr_AttrStrengthenList] # 属性成长公式字典
     playerCntCoefficient = attrStrengthenInfo[NPCAttr_PlayerCntCoefficient] # 人数系数
     npcIDPlayerCntCoefficient = attrStrengthenInfo[NPCAttr_NPCPlayerCntCoefficient] # 特殊NPC人数系数
     baseMaxHP = npcData.GetHPEx() * ShareDefine.Def_PerPointValue + npcData.GetHP()
@@ -348,9 +348,10 @@
                                                                     paramDict["AtkReplyCoefficient"])) # 怪物攻击回复调整值
         MonterHurt = eval(FormulaControl.GetCompileFormula("NPCParam_MonterHurt", paramDict["MonterHurt"])) # 怪物固定伤害
         LostHPPerSecond = eval(FormulaControl.GetCompileFormula("NPCParam_LostHPPerSecond", paramDict["LostHPPerSecond"])) # 玩家每秒掉血量
-        
+        LVStrengthenMark = strengthenIpyData.GetLVStrengthenMark()
+        attrStrengthenList = attrStrengthenDict.get(LVStrengthenMark, [])
         for attrKey, strengthenFormat in attrStrengthenList:
-            strengthenValue = int(eval(FormulaControl.GetCompileFormula("NPCStrengthen_%s" % attrKey, strengthenFormat)))
+            strengthenValue = int(eval(FormulaControl.GetCompileFormula("NPCStrengthen_%s_%s" % (attrKey,LVStrengthenMark), strengthenFormat)))
             #GameWorld.DebugLog("    %s=%s" % (attrKey, strengthenValue))
             locals()[attrKey] = strengthenValue # 创建该属性局部变量作为参数提供给后面属性计算时用
             attrDict[attrKey] = strengthenValue
@@ -3790,9 +3791,11 @@
                 curNPC.SetDict(ChConfig.Def_NPC_Dict_SpeedPer, 0)
             return
         speed = int(curNPC.GetSpeed() * (ShareDefine.Def_MaxRateValue) / max(100.0, float(ShareDefine.Def_MaxRateValue + speedPer)))
-        
         curNPC.SetSpeed(speed)
         curNPC.SetDict(ChConfig.Def_NPC_Dict_SpeedPer, speedPer)
+        if GameWorld.GetMap().GetMapID() == ChConfig.Def_FBMapID_GatherSoul:
+            #目前只在聚魂副本里通知
+            NPCSpeedChangeNotify(curNPC, speed)
         return
     
     
@@ -4184,9 +4187,16 @@
                 ownerType, ownerID = hurtType, hurtID
                 itemCnt = moneyValue if itemID == moneyID else 1
                 isBind = dropIDBindDict.get(itemID, 1)
-                
+            
             curItem = self.__CreateDropItem(curNPC, itemID, itemCnt, isBind)
             if not curItem:
+                continue
+            
+            if mapID == ChConfig.Def_FBMapID_GatherSoul:#聚魂副本特殊处理
+                GameLogic_GatherSoul.KillGatherSoulNPCDropAward(itemID, itemCnt, isBind)
+                dropItemDataStr = ChItem.GetMapDropItemDataStr(curItem)
+                self.SendVirtualItemDrop(ownerPlayer, itemID, resultX, resultY, dropItemDataStr)
+                curItem.Clear()
                 continue
             
             if isDropInItemPack:
@@ -4196,17 +4206,22 @@
                 if ItemControler.DoLogic_PutItemInPack(ownerPlayer, curItem, True, True,
                                                        event=["NPCDrop", False, {"npcID":npcID}]):
                     #通知客户端
-                    vItemDrop = ChPyNetSendPack.tagMCVirtualItemDrop()
-                    vItemDrop.ItemTypeID = itemID
-                    vItemDrop.PosX = resultX
-                    vItemDrop.PosY = resultY
-                    vItemDrop.UserData = dropItemDataStr
-                    vItemDrop.UserDataLen = len(vItemDrop.UserData)
-                    NetPackCommon.SendFakePack(ownerPlayer, vItemDrop)
+                    self.SendVirtualItemDrop(ownerPlayer, itemID, resultX, resultY, dropItemDataStr)
+                    
             else:
                 self.__MapCreateItem(curItem, resultX, resultY, ownerType, ownerID)
         return
     
+    def SendVirtualItemDrop(self, player, itemID, posX, posY, userDataStr):
+        #通知客户端
+        vItemDrop = ChPyNetSendPack.tagMCVirtualItemDrop()
+        vItemDrop.ItemTypeID = itemID
+        vItemDrop.PosX = posX
+        vItemDrop.PosY = posY
+        vItemDrop.UserData = userDataStr
+        vItemDrop.UserDataLen = len(vItemDrop.UserData)
+        NetPackCommon.SendFakePack(player, vItemDrop)
+        return
     #---------------------------------------------------------------------
     ## NPC被杀死逻辑处理
     #  @param self 类实例
@@ -6067,3 +6082,13 @@
     GameWorld.DebugLog("通知GameServer地图Boss分流信息: mapID=%s,lineID=%s,shuntPlayerDict=%s" % (mapID, lineID, shuntPlayerDict), lineID)
     return
 
+def NPCSpeedChangeNotify(curNPC, speed):
+    ##通知NPC速度
+    sendPack = ChNetSendPack.tagObjInfoRefresh()
+    sendPack.Clear()
+    sendPack.ObjID = curNPC.GetID()
+    sendPack.ObjType = curNPC.GetGameObjType()
+    sendPack.RefreshType = IPY_GameWorld.CDBPlayerRefresh_Speed
+    sendPack.Value = speed
+    curNPC.NotifyAll(sendPack.GetBuffer(), sendPack.GetLength())
+    return

--
Gitblit v1.8.0