From d8747a9d1ccce1f60f79c14c3ef1217b223c9ce3 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 25 十二月 2018 09:56:22 +0800
Subject: [PATCH] 5505 王者法宝初版、聚魂副本设置阵营

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py                   |    2 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py                      |   42 ++++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini                                           |    6 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                                   |    7 ++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py |    1 
 PySysDB/PySysDBPY.h                                                                                                  |    9 ++++
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                                                        |    7 ++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                                      |    9 +++-
 8 files changed, 72 insertions(+), 11 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 315c09c..57996d1 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1472,4 +1472,13 @@
 	dict		AttrInfo3;	//多属性系数
 	dict		AttrInfo4;	//初始属性(品质_属性值|…)
 	dict		AttrInfo5;	//阶段系数
+};
+
+//王者法宝表
+
+struct tagMagicWeaponOfKing
+{
+	DWORD		_MWID;	//法宝ID
+	BYTE		_AwardMark;	//赛季奖励等级
+	dict		AddAttr;	//属性
 };
\ No newline at end of file
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index af51dfc..e32d51e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1366,7 +1366,7 @@
 )=range(5)
 
 # 战斗力模块类型
-Def_MFPType_Max = 26
+Def_MFPType_Max = 27
 ModuleFightPowerTypeList = (
 Def_MFPType_Role, # 角色 0
 Def_MFPType_Equip, # 装备(基本装备位) 1
@@ -1391,6 +1391,7 @@
 Def_MFPType_MagicWeaponSoul, # 法宝之魂 20
 Def_MFPType_Dogz, # 神兽 21
 Def_MFPType_GatherSoul, # 聚魂 22
+Def_MFPType_MagicWeapon4, # 王者法宝 23
 Def_MFPType_Other, # 其他
 
 #以下暂时没用到,改时再处理
@@ -1681,8 +1682,8 @@
 SuccType_DogzBattle, #x神兽出战129
 SuccType_DogzEquipPlus, #出战神兽装备总强化X级130
 SuccType_Collect, #采集X物品X次131
-SuccType_InlayGatherSoul, #镶嵌X枚X品质聚魂(不包含核心)44
-SuccType_GatherSoulLvUp, #累计聚魂总等级XX(不包含核心)45
+SuccType_InlayGatherSoul, #镶嵌X枚X品质聚魂(不包含核心)132
+SuccType_GatherSoulLvUp, #累计聚魂总等级XX(不包含核心)133
 ) = range(1, 134)
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index c9910a8..387a425 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -1109,7 +1109,7 @@
 Writer = xdh
 Releaser = xdh
 RegType = 0
-RegisterPackCount = 6
+RegisterPackCount = 7
 
 PacketCMD_1=0xA5
 PacketSubCMD_1=0x0D
@@ -1135,6 +1135,10 @@
 PacketSubCMD_6=0x12
 PacketCallFunc_6=OnActiveMWSoul
 
+PacketCMD_7=0xA5
+PacketSubCMD_7=0x1D
+PacketCallFunc_7=OnWearMagicWeapon
+
 ;副本
 [FBCommon]
 ScriptName = GameWorldLogic\FBProcess\FBCommon.py
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index c68bebd..d80113d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -1801,7 +1801,7 @@
 # 副本中玩家下线就被踢出
 Def_DisconnectExit_FBID = []
 #会有阵营的地图
-Def_MapID_NeedCamp = [Def_FBMapID_FamilyWar]
+Def_MapID_NeedCamp = [Def_FBMapID_FamilyWar, Def_FBMapID_GatherSoul]
 
 # 进入副本需要根据请求lineID动态分配虚拟分线属性的地图
 Def_MapID_LineIDToPropertyID = [Def_FBMapID_ElderBattlefield]
@@ -3881,6 +3881,7 @@
 Def_PDict_MagicWeaponExp = "MagicWeaponExp_%s" #法宝经验 参数法宝ID
 Def_PDict_MagicWeaponIsActive = "MagicWeaponIsActive_%s_%s" #法宝激活状态 参数(法宝类型, key编号)
 Def_PDict_MagicWeaponIsClick = "MagicWeaponIsClick_%s_%s" #法宝点击状态 参数(法宝类型, key编号)
+Def_PDict_MagicWeaponIsWear = "MagicWeaponIsWear_%s_%s" #法宝佩戴状态 参数(法宝类型, key编号)
 Def_PDict_MagicWeaponRefineLV = "MagicWeaponRefineLV_%s" #法宝精炼等级 参数法宝ID
 Def_PDict_XBXZAwardRecord = "XBXZAwardRecord_%s" #仙宝寻主领奖记录 参数ID
 Def_PDict_MagicWeaponLV = "MagicWeaponLV_%s" #法宝等级 参数法宝ID
@@ -4333,11 +4334,12 @@
 Def_CalcAttrFunc_DogzEquip, # 神兽装备37
 Def_CalcAttrFunc_DogzEquipPlus, # 神兽装备强化38
 Def_CalcAttrFunc_GatherSoul, # 聚魂39
-) = range(40)
+Def_CalcAttrFunc_MagicWeapon4 # 王者法宝40
+) = range(41)
 
 
 # 在此列表中的功能属性,不享受百分比加成,--属性参与战力计算
-CalcAttrExFuncList = [Def_CalcAttrFunc_MagicWeapon1, Def_CalcAttrFunc_MagicWeapon2, Def_CalcAttrFunc_MagicWeapon3, 
+CalcAttrExFuncList = [Def_CalcAttrFunc_MagicWeapon1, Def_CalcAttrFunc_MagicWeapon2, Def_CalcAttrFunc_MagicWeapon3, Def_CalcAttrFunc_MagicWeapon4,
                       Def_CalcAttrFunc_Stove, Def_CalcAttrFunc_VIP, Def_CalcAttrFunc_PetSoul, Def_CalcAttrFunc_HorseSoul,
                       Def_CalcAttrFunc_StoveYao, Def_CalcAttrFunc_PetSign, Def_CalcAttrFunc_MagicWeaponSoul
                       ]
@@ -4370,6 +4372,7 @@
                             ShareDefine.Def_MFPType_MagicWeapon1:[Def_CalcAttrFunc_MagicWeapon1],
                             ShareDefine.Def_MFPType_MagicWeapon2:[Def_CalcAttrFunc_MagicWeapon2],
                             ShareDefine.Def_MFPType_MagicWeapon3:[Def_CalcAttrFunc_MagicWeapon3, Def_CalcAttrFunc_Stove, Def_CalcAttrFunc_VIP],
+                            ShareDefine.Def_MFPType_MagicWeapon4:[Def_CalcAttrFunc_MagicWeapon4],
                             ShareDefine.Def_MFPType_StoveYao:[Def_CalcAttrFunc_StoveYao],
                             ShareDefine.Def_MFPType_MagicWeaponSoul:[Def_CalcAttrFunc_MagicWeaponSoul],
                             ShareDefine.Def_MFPType_GatherSoul:[Def_CalcAttrFunc_GatherSoul],
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
index 59f1f0e..f717c6a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py
@@ -48,6 +48,7 @@
                    ShareDefine.Def_MFPType_StoveYao:"丹药",
                    ShareDefine.Def_MFPType_MagicWeapon2:"魔族",
                    ShareDefine.Def_MFPType_MagicWeapon3:"仙族",
+                   ShareDefine.Def_MFPType_MagicWeapon4:"王者法宝",
                    ShareDefine.Def_MFPType_PetSoul:"宠魂",
                    ShareDefine.Def_MFPType_HorseSoul:"骑魂",
                    ShareDefine.Def_MFPType_MagicWeaponSoul:"法宝之魂",
@@ -78,6 +79,7 @@
                      ChConfig.Def_CalcAttrFunc_MagicWeapon1:"人族法宝属性",
                      ChConfig.Def_CalcAttrFunc_MagicWeapon2:"魔族法宝属性", 
                      ChConfig.Def_CalcAttrFunc_MagicWeapon3:"仙族法宝属性", 
+                     ChConfig.Def_CalcAttrFunc_MagicWeapon4:"王者法宝属性", 
                      ChConfig.Def_CalcAttrFunc_EquipOutOfPrint:"绝版属性随等级变化",
                      ChConfig.Def_CalcAttrFunc_EquipAllStars:"装备全身星级属性",
                      ChConfig.Def_CalcAttrFunc_Success:"成就",
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py
index c94c618..4d1f7c9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_GatherSoul.py
@@ -153,6 +153,7 @@
     else:
         return
     DoFBHelp(curPlayer, tick)
+    curPlayer.SetFaction(ShareDefine.CampType_Justice)
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
index 672f459..78b0270 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
@@ -500,7 +500,11 @@
     allAttrList1 = [{} for _ in range(4)] #人族法宝
     allAttrList2 = [{} for _ in range(4)] #魔族法宝
     allAttrList3 = [{} for _ in range(4)] #仙族法宝
-    mwTypeMfpTypeDict = {1:ShareDefine.Def_MFPType_MagicWeapon1,2:ShareDefine.Def_MFPType_MagicWeapon2,3:ShareDefine.Def_MFPType_MagicWeapon3}
+    allAttrList4 = [{} for _ in range(4)] #王者法宝
+    mwTypeMfpTypeDict = {1:ShareDefine.Def_MFPType_MagicWeapon1,
+                         2:ShareDefine.Def_MFPType_MagicWeapon2,
+                         3:ShareDefine.Def_MFPType_MagicWeapon3,
+                         4:ShareDefine.Def_MFPType_MagicWeapon4}
     addPowerDict = {} #额外战力
     signDayMWID = IpyGameDataPY.GetFuncCfg('MWSignDayAttr', 2)
     ipyDataMgr = IpyGameDataPY.IPY_Data()
@@ -538,6 +542,12 @@
                 for attid, attnum in IpyGameDataPY.GetFuncEvalCfg('MWSignDayAttr', 1, {}).items():
                     addAttr[int(attid)] = attnum * totalSignNum
                 GameWorld.AddDictValue(allAttrDict, addAttr)
+            #王者法宝属性
+            kingAwardMark = 1
+            kingMWIpyData = IpyGameDataPY.GetIpyGameDataNotLog('MagicWeaponOfKing', magicWeaponID, kingAwardMark)
+            if kingMWIpyData and GetIsWearMagicWeapon(curPlayer, magicWeaponID):
+                attrDict = kingMWIpyData.GetAddAttr()
+                GameWorld.AddDictValue(allAttrDict, attrDict)
         
         fbpasslv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MWFBPassLevel % magicWeaponID)
         #老号已激活的魔族法宝没有关卡属性,直接设置满关卡
@@ -564,6 +574,8 @@
                 PlayerControl.CalcAttrDict_Type(effID, value, allAttrList2)
             elif treasureType == 3:
                 PlayerControl.CalcAttrDict_Type(effID, value, allAttrList3)
+            elif treasureType == 4:
+                PlayerControl.CalcAttrDict_Type(effID, value, allAttrList4)
             else:
                 GameWorld.ErrLog("未知法宝属性, magicWeaponID=%s,treasureType=%s,effID=%s,value=%s" 
                                  % (magicWeaponID, treasureType, effID, value), curPlayer.GetPlayerID())
@@ -571,6 +583,7 @@
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_MagicWeapon1, allAttrList1)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_MagicWeapon2, allAttrList2)
     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_MagicWeapon3, allAttrList3)
+    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_MagicWeapon4, allAttrList4)
     #技能解锁战力
     nextSkillDict = GetPotentialsSkillInfo(curPlayer)
     for skillID, info in nextSkillDict.items():
@@ -1089,6 +1102,33 @@
     GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsClick, mwID % 100, state, True, [mwID / 100])
     return
 
+#// A5 1D 法宝佩戴 #tagCMWearMagicWeapon
+#
+#struct    tagCMWearMagicWeapon
+#
+#{
+#    tagHead        Head;
+#    DWORD        MWID;    //法宝ID
+#    BYTE        State;        //0-卸下 1-佩戴
+#};
+def OnWearMagicWeapon(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    mwID = clientData.MWID
+    if not GetIsActiveMagicWeapon(curPlayer, mwID):
+        return
+    
+    SetMagicWeaponWearState(curPlayer, mwID, clientData.State)
+    Sycn_MagicWeaponLV(curPlayer, mwID)
+    return
+
+def GetIsWearMagicWeapon(curPlayer, mwID):
+    #获取法宝是否佩戴
+    return GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsClick, mwID % 100, True, [mwID / 100])
+
+def SetMagicWeaponWearState(curPlayer, mwID, state):
+    #设置法宝是否佩戴
+    GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_MagicWeaponIsClick, mwID % 100, state, True, [mwID / 100])
+    return
 
 #// A5 12 激活法宝之魂 #tagCMActiveMWSoul
 #
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index af51dfc..e32d51e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1366,7 +1366,7 @@
 )=range(5)
 
 # 战斗力模块类型
-Def_MFPType_Max = 26
+Def_MFPType_Max = 27
 ModuleFightPowerTypeList = (
 Def_MFPType_Role, # 角色 0
 Def_MFPType_Equip, # 装备(基本装备位) 1
@@ -1391,6 +1391,7 @@
 Def_MFPType_MagicWeaponSoul, # 法宝之魂 20
 Def_MFPType_Dogz, # 神兽 21
 Def_MFPType_GatherSoul, # 聚魂 22
+Def_MFPType_MagicWeapon4, # 王者法宝 23
 Def_MFPType_Other, # 其他
 
 #以下暂时没用到,改时再处理
@@ -1681,8 +1682,8 @@
 SuccType_DogzBattle, #x神兽出战129
 SuccType_DogzEquipPlus, #出战神兽装备总强化X级130
 SuccType_Collect, #采集X物品X次131
-SuccType_InlayGatherSoul, #镶嵌X枚X品质聚魂(不包含核心)44
-SuccType_GatherSoulLvUp, #累计聚魂总等级XX(不包含核心)45
+SuccType_InlayGatherSoul, #镶嵌X枚X品质聚魂(不包含核心)132
+SuccType_GatherSoulLvUp, #累计聚魂总等级XX(不包含核心)133
 ) = range(1, 134)
 
 

--
Gitblit v1.8.0