From 7d249be8ea05b26827e39a2409e06931aefb4949 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 03 四月 2019 16:55:10 +0800
Subject: [PATCH] 6430 【后端】【2.0】属性级战力算法优化 6426 【后端】【2.0】装备战力划分
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_514.py | 32 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py | 130 ++++++----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 26 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_515.py | 32 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4511.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py | 12
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_520.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_807.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_550.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/PrintFightPower.py | 28 +
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 27 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 261 +++++++++++----------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/CalcNoLineEffect.py | 11
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 137 +++-------
14 files changed, 329 insertions(+), 375 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index ab51ac3..5ffca38 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -531,6 +531,7 @@
Def_Effect_JXWeaponAttrPer = 119 # 诛仙剑4属性加成百分比
Def_Effect_Luck = 120 # 气运
+Def_Effect_LuckPer = 133 # 气运百分率
#增加%d物理伤害值,其中a值为伤害值
Def_Effect_AddAtk = 1005
@@ -1301,10 +1302,10 @@
)=range(5)
# 战斗力模块类型
-Def_MFPType_Max = 44
+Def_MFPType_Max = 26
ModuleFightPowerTypeList = (
Def_MFPType_Role, # 角色 0
-Def_MFPType_Equip, # 装备(基本装备位) 1 - 废弃
+Def_MFPType_Equip, # 装备(装备本身) 1
Def_MFPType_Plus, # 强化 2
Def_MFPType_Stone, # 宝石 3
Def_MFPType_LingGen, # 灵根 4
@@ -1316,7 +1317,7 @@
Def_MFPType_GodWeapon, # 神兵 10
Def_MFPType_Dienstgrad, #称号 11
Def_MFPType_Rune, # 符印 12
-Def_MFPType_13, #
+Def_MFPType_Star, # 升星 13
Def_MFPType_MagicWeapon1, # 人族法宝 14
Def_MFPType_StoveYao, # 炼丹炉丹药 15
Def_MFPType_MagicWeapon2, # 魔族法宝 16
@@ -1328,27 +1329,7 @@
Def_MFPType_GatherSoul, # 聚魂 22
Def_MFPType_MagicWeapon4, # 王者法宝 23
Def_MFPType_Coat, # 时装 24
-Def_MFPType_ZhuXian, # 诛仙 25 - 废弃
-Def_MFPType_Equip1, # 境界装备1阶 26
-Def_MFPType_Equip2, # 境界装备2阶 27
-Def_MFPType_Equip3, # 境界装备3阶 28
-Def_MFPType_Equip4, # 境界装备4阶 29
-Def_MFPType_Equip5, # 境界装备5阶 30
-Def_MFPType_Equip6, # 境界装备6阶 31
-Def_MFPType_Equip7, # 境界装备7阶 32
-Def_MFPType_Equip8, # 境界装备8阶 33
-Def_MFPType_Equip9, # 境界装备9阶 34
-Def_MFPType_Equip10, # 境界装备10阶 35
-Def_MFPType_Equip11, # 境界装备11阶 36
-Def_MFPType_Equip12, # 境界装备12阶 37
-Def_MFPType_Equip13, # 境界装备13阶 38
-Def_MFPType_Equip14, # 境界装备14阶 39
-Def_MFPType_Equip15, # 境界装备15阶 40
Def_MFPType_Other, # 其他
-
-#以下暂时没用到,改时再处理
-Def_MFPType_Passive, #被动技能
-Def_MFPType_ClothesCoat, #衣服时装
) = range(Def_MFPType_Max)
#事件汇报用户行为-----------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 1fb7fb3..3661e71 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4222,90 +4222,62 @@
#刷属性功能分类索引
CalcAttrFuncList = (
Def_CalcAttrFunc_RoleBase, # 角色基础 0
-Def_CalcAttrFunc_1,
-Def_CalcAttrFunc_2,
-Def_CalcAttrFunc_LingGenQuailty, # 灵根品质附加属性 3
-Def_CalcAttrFunc_LingGen, # 灵根 4
+Def_CalcAttrFunc_LingGen, # 灵根 1
+Def_CalcAttrFunc_LingGenQuailty, # 灵根品质附加属性 2
+Def_CalcAttrFunc_Equip, # 装备 3
+Def_CalcAttrFunc_Star, # 升星 4
Def_CalcAttrFunc_Plus, # 装备位强化 5
-Def_CalcAttrFunc_6,
-Def_CalcAttrFunc_Stone, # 装备宝石 7
-Def_CalcAttrFunc_8,
-Def_CalcAttrFunc_Wing, # 翅膀 9
-Def_CalcAttrFunc_Wash, # 洗练 10
-Def_CalcAttrFunc_Pet, # 灵宠 11
-Def_CalcAttrFunc_Horse, # 坐骑 12
-Def_CalcAttrFunc_Prestige, # 境界 13
-Def_CalcAttrFunc_GodWeapon, # 神兵 14
-Def_CalcAttrFunc_Dienstgrad, # 称号 15
-Def_CalcAttrFunc_Rune, # 符印 16
-Def_CalcAttrFunc_17,
-Def_CalcAttrFunc_MagicWeapon1, # 人族法宝属性 18
-Def_CalcAttrFunc_EquipOutOfPrint, # 绝版属性随等级变化 19
-Def_CalcAttrFunc_20,
-Def_CalcAttrFunc_Success, # 成就属性 21
-Def_CalcAttrFunc_VIP, # VIP属性 22
-Def_CalcAttrFunc_Stove, # 炼丹炉 23
-Def_CalcAttrFunc_FamilyTech, # 仙盟心法 24
-Def_CalcAttrFunc_MagicWeapon2, # 魔族法宝属性 25
-Def_CalcAttrFunc_EquipDecompose, # 装备分解属性 26
-Def_CalcAttrFunc_MagicWeapon3, # 仙族法宝属性 27
-Def_CalcAttrFunc_PetSoul, # 宠物魂石 28
-Def_CalcAttrFunc_HorseSoul, # 坐骑魂石 29
-Def_CalcAttrFunc_HorseSkill, # 坐骑技能属性 30
-Def_CalcAttrFunc_PetSkill, # 宠物技能属性 31
-Def_CalcAttrFunc_StoveYao, # 炼丹炉丹药 32
-Def_CalcAttrFunc_PetSign, # 宠物签到 33
-Def_CalcAttrFunc_34,
-Def_CalcAttrFunc_Dogz, # 神兽35
-Def_CalcAttrFunc_DogzBattleSkill, # 助战神兽技能36
-Def_CalcAttrFunc_DogzEquip, # 神兽装备37
-Def_CalcAttrFunc_DogzEquipPlus, # 神兽装备强化38
-Def_CalcAttrFunc_GatherSoul, # 聚魂39
-Def_CalcAttrFunc_MagicWeapon4, # 王者法宝40
-Def_CalcAttrFunc_Coat, # 时装41
-Def_CalcAttrFunc_ZXEquip, # 诛仙装备42
-Def_CalcAttrFunc_ZXEquipSuit, # 诛仙装备套装43 - 废弃
-Def_CalcAttrFunc_ZXEquipStone, # 诛仙宝石属性44 - 废弃
-Def_CalcAttrFunc_45,
-Def_CalcAttrFunc_Equip1, # 境界装备1阶 46
-Def_CalcAttrFunc_Equip2, # 境界装备2阶 47
-Def_CalcAttrFunc_Equip3, # 境界装备3阶 48
-Def_CalcAttrFunc_Equip4, # 境界装备4阶 49
-Def_CalcAttrFunc_Equip5, # 境界装备5阶 50
-Def_CalcAttrFunc_Equip6, # 境界装备6阶 51
-Def_CalcAttrFunc_Equip7, # 境界装备7阶 52
-Def_CalcAttrFunc_Equip8, # 境界装备8阶 53
-Def_CalcAttrFunc_Equip9, # 境界装备9阶 54
-Def_CalcAttrFunc_Equip10, # 境界装备10阶 55
-Def_CalcAttrFunc_Equip11, # 境界装备11阶 56
-Def_CalcAttrFunc_Equip12, # 境界装备12阶 57
-Def_CalcAttrFunc_Equip13, # 境界装备13阶 58
-Def_CalcAttrFunc_Equip14, # 境界装备14阶 59
-Def_CalcAttrFunc_Equip15, # 境界装备15阶 60
-) = range(61)
+Def_CalcAttrFunc_Stone, # 装备宝石 6
+Def_CalcAttrFunc_Wash, # 洗练 7
+Def_CalcAttrFunc_Wing, # 翅膀 8
+Def_CalcAttrFunc_Pet, # 灵宠 9
+Def_CalcAttrFunc_Horse, # 坐骑 10
+Def_CalcAttrFunc_Prestige, # 境界 11
+Def_CalcAttrFunc_GodWeapon, # 神兵 12
+Def_CalcAttrFunc_Dienstgrad, # 称号 13
+Def_CalcAttrFunc_Rune, # 符印 14
+Def_CalcAttrFunc_EquipOutOfPrint, # 绝版属性随等级变化 15
+Def_CalcAttrFunc_Success, # 成就属性 16
+Def_CalcAttrFunc_VIP, # VIP属性 17
+Def_CalcAttrFunc_Stove, # 炼丹炉 18
+Def_CalcAttrFunc_FamilyTech, # 仙盟心法 19
+Def_CalcAttrFunc_EquipDecompose, # 装备分解属性 20
+Def_CalcAttrFunc_PetSoul, # 宠物魂石 21
+Def_CalcAttrFunc_HorseSoul, # 坐骑魂石 22
+Def_CalcAttrFunc_HorseSkill, # 坐骑技能属性 23
+Def_CalcAttrFunc_PetSkill, # 宠物技能属性 24
+Def_CalcAttrFunc_StoveYao, # 炼丹炉丹药 25
+Def_CalcAttrFunc_PetSign, # 宠物签到 26
+Def_CalcAttrFunc_Dogz, # 神兽 27
+Def_CalcAttrFunc_DogzBattleSkill, # 助战神兽技能 28
+Def_CalcAttrFunc_DogzEquip, # 神兽装备 29
+Def_CalcAttrFunc_DogzEquipPlus, # 神兽装备强化 30
+Def_CalcAttrFunc_GatherSoul, # 聚魂 31
+Def_CalcAttrFunc_MagicWeapon1, # 人族法宝属性 32
+Def_CalcAttrFunc_MagicWeapon2, # 魔族法宝属性 33
+Def_CalcAttrFunc_MagicWeapon3, # 仙族法宝属性 34
+Def_CalcAttrFunc_MagicWeapon4, # 王者法宝 35
+Def_CalcAttrFunc_Coat, # 时装 36
+) = range(37)
-# 在此列表中的功能属性,不享受百分比加成,--属性参与战力计算
-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
- ]
-
-# 在此列表中的功能属性,不享受百分比加成,--属性不参与战力计算,战力由技能配置决定
-CalcAttrExFuncListNoFightPower = [Def_CalcAttrFunc_HorseSkill, Def_CalcAttrFunc_PetSkill, Def_CalcAttrFunc_DogzBattleSkill]
-
+# 技能功能点列表 - 默认不算战力,不享受百分比加成,技能功能点暂时配置,之后优化技能属性逻辑后可去掉
+CalcAttrFuncSkillList = [Def_CalcAttrFunc_HorseSkill, Def_CalcAttrFunc_PetSkill, Def_CalcAttrFunc_DogzBattleSkill]
+# 不计算战力的功能点列表 - 由其他方式计算的战力的功能点,如装备用评分计算
+CalcAttrFuncNoFightPowerList = [Def_CalcAttrFunc_Equip, Def_CalcAttrFunc_DogzEquip]
#战斗力分组类型对应功能点属性分类索引列表,并不是一一对应的,有些战斗力类型可由多个功能点组成
+#***注意***: 以下功能点需包含上面定义的所有功能点,不然会导致有些属性无法加上
MFPTypeAttrFuncIndexDict = {ShareDefine.Def_MFPType_Role:[Def_CalcAttrFunc_RoleBase],
-# 因为装备评分和实际战力一直出现不匹配的情况,所以装备战力修改为直接由装备评分做为参数计算战力,所以装备评分计算的所有属性不列入战力计算,祥见评分计算函数 ItemCommom.CalcEquipGS
-# ShareDefine.Def_MFPType_Equip:[Def_CalcAttrFunc_EquipOutOfPrint],
+ ShareDefine.Def_MFPType_Equip:[Def_CalcAttrFunc_Equip, Def_CalcAttrFunc_EquipOutOfPrint],
ShareDefine.Def_MFPType_LingGen:[Def_CalcAttrFunc_LingGenQuailty, Def_CalcAttrFunc_LingGen],
+ ShareDefine.Def_MFPType_Star:[Def_CalcAttrFunc_Star],
ShareDefine.Def_MFPType_Plus:[Def_CalcAttrFunc_Plus],
ShareDefine.Def_MFPType_Stone:[Def_CalcAttrFunc_Stone],
ShareDefine.Def_MFPType_Wing:[Def_CalcAttrFunc_Wing],
ShareDefine.Def_MFPType_Wash:[Def_CalcAttrFunc_Wash],
- ShareDefine.Def_MFPType_Pet:[Def_CalcAttrFunc_Pet, Def_CalcAttrFunc_PetSign],
+ ShareDefine.Def_MFPType_Pet:[Def_CalcAttrFunc_Pet, Def_CalcAttrFunc_PetSign, Def_CalcAttrFunc_PetSkill],
ShareDefine.Def_MFPType_PetSoul:[Def_CalcAttrFunc_PetSoul],
- ShareDefine.Def_MFPType_Horse:[Def_CalcAttrFunc_Horse],
+ ShareDefine.Def_MFPType_Horse:[Def_CalcAttrFunc_Horse, Def_CalcAttrFunc_HorseSkill],
ShareDefine.Def_MFPType_HorseSoul:[Def_CalcAttrFunc_HorseSoul],
ShareDefine.Def_MFPType_Prestige:[Def_CalcAttrFunc_Prestige],
ShareDefine.Def_MFPType_GodWeapon:[Def_CalcAttrFunc_GodWeapon],
@@ -4318,24 +4290,7 @@
ShareDefine.Def_MFPType_StoveYao:[Def_CalcAttrFunc_StoveYao],
ShareDefine.Def_MFPType_GatherSoul:[Def_CalcAttrFunc_GatherSoul],
ShareDefine.Def_MFPType_Coat:[Def_CalcAttrFunc_Coat],
- # 诛仙装备战力、神兽战力同装备模块战力一致,受评分影响,装备评分相关的战力另外算
- ShareDefine.Def_MFPType_Dogz:[Def_CalcAttrFunc_Dogz, Def_CalcAttrFunc_DogzEquipPlus],
- #ShareDefine.Def_MFPType_ZhuXian:[Def_CalcAttrFunc_ZXEquipSuit, Def_CalcAttrFunc_ZXEquipStone],
- ShareDefine.Def_MFPType_Equip1:[Def_CalcAttrFunc_Equip1],
- ShareDefine.Def_MFPType_Equip2:[Def_CalcAttrFunc_Equip2],
- ShareDefine.Def_MFPType_Equip3:[Def_CalcAttrFunc_Equip3],
- ShareDefine.Def_MFPType_Equip4:[Def_CalcAttrFunc_Equip4],
- ShareDefine.Def_MFPType_Equip5:[Def_CalcAttrFunc_Equip5],
- ShareDefine.Def_MFPType_Equip6:[Def_CalcAttrFunc_Equip6],
- ShareDefine.Def_MFPType_Equip7:[Def_CalcAttrFunc_Equip7],
- ShareDefine.Def_MFPType_Equip8:[Def_CalcAttrFunc_Equip8],
- ShareDefine.Def_MFPType_Equip9:[Def_CalcAttrFunc_Equip9],
- ShareDefine.Def_MFPType_Equip10:[Def_CalcAttrFunc_Equip10],
- ShareDefine.Def_MFPType_Equip11:[Def_CalcAttrFunc_Equip11],
- ShareDefine.Def_MFPType_Equip12:[Def_CalcAttrFunc_Equip12],
- ShareDefine.Def_MFPType_Equip13:[Def_CalcAttrFunc_Equip13],
- ShareDefine.Def_MFPType_Equip14:[Def_CalcAttrFunc_Equip14],
- ShareDefine.Def_MFPType_Equip15:[Def_CalcAttrFunc_Equip15],
+ ShareDefine.Def_MFPType_Dogz:[Def_CalcAttrFunc_Dogz, Def_CalcAttrFunc_DogzEquip, Def_CalcAttrFunc_DogzEquipPlus, Def_CalcAttrFunc_DogzBattleSkill],
ShareDefine.Def_MFPType_Other:[Def_CalcAttrFunc_Success, Def_CalcAttrFunc_FamilyTech, Def_CalcAttrFunc_EquipDecompose],
}
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 861f642..07f97a7 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
@@ -28,12 +28,14 @@
# @return None
# @remarks 函数详细说明.
def OnExec(curPlayer, msgList):
-
mfpTypeName = {ShareDefine.Def_MFPType_Role:"角色",
+ ShareDefine.Def_MFPType_LingGen:"灵根",
+ ShareDefine.Def_MFPType_Equip:"装备",
+ ShareDefine.Def_MFPType_Star:"升星",
ShareDefine.Def_MFPType_Plus:"强化",
ShareDefine.Def_MFPType_Stone:"宝石",
- ShareDefine.Def_MFPType_Wing:"翅膀",
ShareDefine.Def_MFPType_Wash:"洗练",
+ ShareDefine.Def_MFPType_Wing:"翅膀",
ShareDefine.Def_MFPType_Pet:"灵宠",
ShareDefine.Def_MFPType_Horse:"坐骑",
ShareDefine.Def_MFPType_Prestige:"境界",
@@ -41,11 +43,11 @@
ShareDefine.Def_MFPType_Dienstgrad:"称号",
ShareDefine.Def_MFPType_Rune:"符印",
ShareDefine.Def_MFPType_GatherSoul:"聚魂",
- ShareDefine.Def_MFPType_MagicWeapon1:"人族",
ShareDefine.Def_MFPType_StoveYao:"丹药",
+ ShareDefine.Def_MFPType_MagicWeapon1:"人族",
ShareDefine.Def_MFPType_MagicWeapon2:"魔族",
ShareDefine.Def_MFPType_MagicWeapon3:"仙族",
- ShareDefine.Def_MFPType_MagicWeapon4:"王者法宝",
+ ShareDefine.Def_MFPType_MagicWeapon4:"王者",
ShareDefine.Def_MFPType_PetSoul:"宠魂",
ShareDefine.Def_MFPType_HorseSoul:"骑魂",
ShareDefine.Def_MFPType_Dogz:"神兽",
@@ -55,6 +57,10 @@
funcIndexName = {
ChConfig.Def_CalcAttrFunc_RoleBase:"角色基础",
+ ChConfig.Def_CalcAttrFunc_LingGen:"灵根",
+ ChConfig.Def_CalcAttrFunc_LingGenQuailty:"灵根品质",
+ ChConfig.Def_CalcAttrFunc_Equip:"装备",
+ ChConfig.Def_CalcAttrFunc_Star:"升星",
ChConfig.Def_CalcAttrFunc_Plus:"强化",
ChConfig.Def_CalcAttrFunc_Stone:"宝石",
ChConfig.Def_CalcAttrFunc_Wash:"洗练",
@@ -65,12 +71,8 @@
ChConfig.Def_CalcAttrFunc_GodWeapon:"神兵",
ChConfig.Def_CalcAttrFunc_Dienstgrad:"称号",
ChConfig.Def_CalcAttrFunc_Rune:"符印",
+ ChConfig.Def_CalcAttrFunc_EquipOutOfPrint:"绝版属性",
ChConfig.Def_CalcAttrFunc_GatherSoul:"聚魂",
- ChConfig.Def_CalcAttrFunc_MagicWeapon1:"人族法宝属性",
- ChConfig.Def_CalcAttrFunc_MagicWeapon2:"魔族法宝属性",
- ChConfig.Def_CalcAttrFunc_MagicWeapon3:"仙族法宝属性",
- ChConfig.Def_CalcAttrFunc_MagicWeapon4:"王者法宝属性",
- ChConfig.Def_CalcAttrFunc_EquipOutOfPrint:"绝版属性随等级变化",
ChConfig.Def_CalcAttrFunc_Success:"成就",
ChConfig.Def_CalcAttrFunc_VIP:"VIP",
ChConfig.Def_CalcAttrFunc_Stove:"炼丹炉",
@@ -84,6 +86,10 @@
ChConfig.Def_CalcAttrFunc_PetSign:"宠物签到",
ChConfig.Def_CalcAttrFunc_Dogz:"神兽",
ChConfig.Def_CalcAttrFunc_Coat:"时装",
+ ChConfig.Def_CalcAttrFunc_MagicWeapon1:"人族法宝属性",
+ ChConfig.Def_CalcAttrFunc_MagicWeapon2:"魔族法宝属性",
+ ChConfig.Def_CalcAttrFunc_MagicWeapon3:"仙族法宝属性",
+ ChConfig.Def_CalcAttrFunc_MagicWeapon4:"王者法宝属性",
}
GameWorld.DebugAnswer(curPlayer, "PrintFightPower 模块类型(可选)")
@@ -96,8 +102,10 @@
GameWorld.DebugAnswer(curPlayer, "--- %s战力(%s): %s" % (mfpTypeName[mfpType], mfpType, fightPower))
for funcIndex in ChConfig.MFPTypeAttrFuncIndexDict[mfpType]:
funcName = funcIndexName.get(funcIndex, "属性(%s)" % funcIndex)
- attrInfo = PlayerControl.GetCalcAttrListValue(curPlayer, funcIndex)
+ attrInfo, insidePerAttrDict = PlayerControl.GetCalcAttrListValue(curPlayer, funcIndex)
GameWorld.DebugAnswer(curPlayer, "%s:%s" % (funcName, attrInfo))
+ if insidePerAttrDict:
+ GameWorld.DebugAnswer(curPlayer, "%s内部加成:%s" % (funcName, insidePerAttrDict))
return
GameWorld.DebugAnswer(curPlayer, "===== 总战力: %s" % curPlayer.GetFightPower())
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
index 083c2fa..cb5b84d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -415,43 +415,37 @@
def __CalcEquips_Effect(curPlayer, classLV):
''' 境界装备系统属性
- 1. 装备模块(装备本身属性+装备位升星属性+装备位套装属性),每个境界阶独立,每个境界战力独立模块计算
- 装备基础属性 = 装备物品表配置属性 + 星级基础属性加成
+ 1. 装备模块,每个境界阶独立,每个境界战力独立模块计算
1.1 装备本身属性: 不能有影响其他境界装备的属性
基础属性: 物品表中的配置
传奇属性:
绝版属性:
-
- 1.2 装备位升星属性:不能有影响其他境界装备的属性
+
+ 2.装备位星级模块
+ 2.1 装备位升星属性:不能有影响其他境界装备的属性
升星基础属性,属性属于装备基础
升星等级属性,会影响本阶装备基础
星级套装属性,详见套装属性
- 1.3 装备位套装属性:不能有影响其他境界装备的属性
+ 2.2 装备位套装属性:不能有影响其他境界装备的属性
由装备位是否套装及星级数决定套装属性
- 2.装备位强化模块:战力为所有境界装备位强化属性总和战力
+ 3.装备位强化模块:战力为所有境界装备位强化属性总和战力
强化等级属性
进化等级属性,影响本部位本境界装备基础
- 3.装备位宝石属性:战力为所有境界装备位宝石属性总和战力
+ 4.装备位宝石属性:战力为所有境界装备位宝石属性总和战力
宝石等级属性
宝石觉醒属性,会影响本阶装备基础
- 4.装备位洗练属性:战力为所有境界装备位洗练属性总和战力
+ 5.装备位洗练属性:战力为所有境界装备位洗练属性总和战力
洗练等级属性
洗练套装属性,会影响本阶装备基础
'''
- equipMFPTypeList = range(ShareDefine.Def_MFPType_Equip1, ShareDefine.Def_MFPType_Equip15 + 1)
- if classLV < 1 or classLV > len(equipMFPTypeList):
+ if classLV < 1:
GameWorld.ErrLog("刷境界装备属性阶错误!当前不支持该阶模块: classLV=%s" % classLV)
return
- Def_MFPType_EquipClassLV = equipMFPTypeList[classLV - 1]
- if Def_MFPType_EquipClassLV not in ChConfig.MFPTypeAttrFuncIndexDict:
- GameWorld.ErrLog("刷境界装备属性阶错误!当前不支持该阶属性: classLV=%s" % classLV)
- return
- Def_CalcAttrFunc_EquipClassLV = ChConfig.MFPTypeAttrFuncIndexDict[Def_MFPType_EquipClassLV][0]
#GameWorld.DebugLog("----- 刷境界装备战力: classLV=%s" % (classLV))
allEquipBaseAttrDict = {} # 所有装备基础属性 {attrID:value, ...}
@@ -459,13 +453,15 @@
equipBaseAttrDict = {} # 装备基础属性 {装备位:{attrID:value, ...}, ...}
allAttrListEquip = [{} for _ in range(4)] # 装备属性
- equip_addEquipBaseAttrPerList = [{}, {}, {}] # 装备功能点对装备基础的加成信息
+ equip_addEquipBaseAttrPerList = [{}, {}, {}] # 装备功能点对装备基础的加成信息 [所有部位, 基础部位, 指定部位]
+ allAttrListStar = [{} for _ in range(4)] # 升星属性
+ star_addEquipBaseAttrPerList = [{}, {}, {}] # 升星功能点对装备基础的加成信息 [所有部位, 基础部位, 指定部位]
allAttrListPlus = [{} for _ in range(4)] # 强化属性
- plus_addEquipBaseAttrPerList = [{}, {}, {}] # 强化功能点对装备基础的加成信息
+ plus_addEquipBaseAttrPerList = [{}, {}, {}] # 强化功能点对装备基础的加成信息 [所有部位, 基础部位, 指定部位]
allAttrListStone = [{} for _ in range(4)] # 宝石属性
- #stone_addEquipBaseAttrPerList = [{}, {}, {}] # 宝石功能点对装备基础的加成信息
+ #stone_addEquipBaseAttrPerList = [{}, {}, {}] # 宝石功能点对装备基础的加成信息 [所有部位, 基础部位, 指定部位]
allAttrListWash = [{} for _ in range(4)] # 洗练属性
- #wash_addEquipBaseAttrPerList = [{}, {}, {}] # 洗练功能点对装备基础的加成信息
+ #wash_addEquipBaseAttrPerList = [{}, {}, {}] # 洗练功能点对装备基础的加成信息 [所有部位, 基础部位, 指定部位]
#allAttrListOutOfPrintEquip = [{} for _ in range(4)] # 绝版装备属性 需在等级变化独立计算
packType = IPY_GameWorld.rptEquip
@@ -525,7 +521,7 @@
ipyData = IpyGameDataPY.GetIpyGameData('EquipStarUp', classLV, equipPlace, equipPartStar)
starBaseAttrDict = {} if not ipyData else ipyData.GetBaseAttrInfo() # 星级基础
for starBaseAttrID, starBaseAttrValue in starBaseAttrDict.items():
- PlayerControl.CalcAttrDict_Type(starBaseAttrID, starBaseAttrValue, allAttrListEquip)
+ PlayerControl.CalcAttrDict_Type(starBaseAttrID, starBaseAttrValue, allAttrListStar)
baseAttrDict[starBaseAttrID] = baseAttrDict.get(starBaseAttrID, 0) + starBaseAttrValue
allEquipBaseAttrDict[starBaseAttrID] = allEquipBaseAttrDict.get(starBaseAttrID, 0) + starBaseAttrValue
if isBaseEquip:
@@ -534,9 +530,9 @@
starAttrDict = {} if not ipyData else ipyData.GetStarAttrInfo() # 星级附加
for starAttrID, starAttrValue in starAttrDict.items():
- PlayerControl.CalcAttrDict_Type(starAttrID, starAttrValue, allAttrListEquip)
+ PlayerControl.CalcAttrDict_Type(starAttrID, starAttrValue, allAttrListStar)
#GameWorld.DebugLog(" 星级附加属性: ID=%s +%s" % (starAttrID, starAttrValue))
- __CalcFuncAddEquipAttrPer(equipPlace, starAttrID, starAttrValue, equip_addEquipBaseAttrPerList)
+ __CalcFuncAddEquipAttrPer(equipPlace, starAttrID, starAttrValue, star_addEquipBaseAttrPerList)
equipBaseAttrDict[equipPlace] = baseAttrDict
@@ -571,67 +567,87 @@
Operate_EquipWash.CalcAttr_EquipWash(curPlayer, equipIndex, equipPlace, allAttrListWash)
# GameWorld.DebugLog(" 装备循环属性: %s" % (allAttrListEquip))
+# GameWorld.DebugLog(" 升星循环属性: %s" % (allAttrListStar))
# GameWorld.DebugLog(" 强化循环属性: %s" % (allAttrListPlus))
# GameWorld.DebugLog(" 宝石循环属性: %s" % (allAttrListStone))
# GameWorld.DebugLog(" 洗练循环属性: %s" % (allAttrListWash))
# GameWorld.DebugLog(" -----" )
# 2. 计算遍历后的附加属性
- #套装属性
- CalcEquipSuiteAttr(curPlayer, suitCntDict, allAttrListEquip)
+ #套装属性,暂归为星级套装属性
+ CalcEquipSuiteAttr(curPlayer, suitCntDict, allAttrListStar)
- #GameWorld.DebugLog(" 装备属性套装: %s" % (allAttrListEquip))
+# GameWorld.DebugLog(" 升星属性套装: %s" % (allAttrListEquip))
# 3. 计算对装备基础的附加加成
# GameWorld.DebugLog(" -----" )
# GameWorld.DebugLog(" 所有装备基础属性: %s" % (allEquipBaseAttrDict))
# GameWorld.DebugLog(" 基础装备基础属性: %s" % (baseEquipBaseAttrDict))
# GameWorld.DebugLog(" 单件装备基础属性: %s" % (equipBaseAttrDict))
+# GameWorld.DebugLog(" -----" )
#计算功能点对装备基础的加成
- __CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, equip_addEquipBaseAttrPerList, allAttrListEquip, "Equip")
- __CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, plus_addEquipBaseAttrPerList, allAttrListPlus, "Plus")
- #__CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, stone_addEquipBaseAttrPerList, allAttrListStone, "Stone")
- #__CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, wash_addEquipBaseAttrPerList, allAttrListWash, "Wash")
-
- #GameWorld.DebugLog(" 本阶装备属性: %s" % (allAttrListEquip))
+ insideAttrDictEquip, insideAttrDictStar, insideAttrDictPlus, insideAttrDictStone, insideAttrDictWash = {}, {}, {}, {}, {}
+ __CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, equip_addEquipBaseAttrPerList, insideAttrDictEquip, "Equip")
+ __CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, star_addEquipBaseAttrPerList, insideAttrDictStar, "Star")
+ __CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, plus_addEquipBaseAttrPerList, insideAttrDictPlus, "Plus")
+ #__CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, stone_addEquipBaseAttrPerList, insideAttrDictStone, "Stone")
+ #__CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, wash_addEquipBaseAttrPerList, insideAttrDictWash, "Wash")
#保存计算值
- PlayerControl.SetCalcAttrListValue(curPlayer, Def_CalcAttrFunc_EquipClassLV, allAttrListEquip)
#PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
#计算装备基础属性附加战力 (目前组成: 评分战力 + ...)
equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
- #GameWorld.DebugLog(" 装备评分战力: equipScoreTotal=%s,equipFightPowerEx=%s" % (equipScoreTotal, equipFightPowerEx))
- curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % Def_MFPType_EquipClassLV, equipFightPowerEx)
# 4. 累加所有阶装备位属性
playerID = curPlayer.GetPlayerID()
if playerID not in PyGameData.g_playerEquipPartAttrDict:
PyGameData.g_playerEquipPartAttrDict[playerID] = {}
equipPartAttrDict = PyGameData.g_playerEquipPartAttrDict[playerID]
- equipPartAttrDict[classLV] = [allAttrListPlus, allAttrListStone, allAttrListWash]
-
- allPartAttrListPlus = [{} for _ in range(4)]
- allPartAttrListStone = [{} for _ in range(4)]
- allPartAttrListWash = [{} for _ in range(4)]
+ equipPartAttrDict[classLV] = [equipFightPowerEx, allAttrListEquip, insideAttrDictEquip, allAttrListStar, insideAttrDictStar,
+ allAttrListPlus, insideAttrDictPlus, allAttrListStone, insideAttrDictStone, allAttrListWash, insideAttrDictWash]
# GameWorld.DebugLog(" ----- 累加所有阶装备位养成属性")
-# GameWorld.DebugLog(" 本阶强化属性: %s" % (allAttrListPlus))
-# GameWorld.DebugLog(" 本阶宝石属性: %s" % (allAttrListStone))
-# GameWorld.DebugLog(" 本阶洗练属性: %s" % (allAttrListWash))
+# GameWorld.DebugLog(" 本阶装备战力: equipScoreTotal=%s,equipFightPowerEx=%s" % (equipScoreTotal, equipFightPowerEx))
+# GameWorld.DebugLog(" 本阶装备属性: %s, 内部加成=%s" % (allAttrListEquip, insideAttrDictEquip))
+# GameWorld.DebugLog(" 本阶升星属性: %s, 内部加成=%s" % (allAttrListStar, insideAttrDictStar))
+# GameWorld.DebugLog(" 本阶强化属性: %s, 内部加成=%s" % (allAttrListPlus, insideAttrDictPlus))
+# GameWorld.DebugLog(" 本阶宝石属性: %s, 内部加成=%s" % (allAttrListStone, insideAttrDictStone))
+# GameWorld.DebugLog(" 本阶洗练属性: %s, 内部加成=%s" % (allAttrListWash, insideAttrDictWash))
+ allClassEquipFightPowerEx = 0
+ allClassAttrListEquip, allClassInsideAttrDictEquip = [{} for _ in range(4)], {}
+ allClassAttrListStar, allClassInsideAttrDictStar = [{} for _ in range(4)], {}
+ allClassAttrListPlus, allClassInsideAttrDictPlus = [{} for _ in range(4)], {}
+ allClassAttrListStone, allClassInsideAttrDictStone = [{} for _ in range(4)], {}
+ allClassAttrListWash, allClassInsideAttrDictWash = [{} for _ in range(4)], {}
for classLV, attrList in equipPartAttrDict.items():
- allAttrListPlus, allAttrListStone, allAttrListWash = attrList
+ equipFightPowerEx, allAttrListEquip, insideAttrDictEquip, allAttrListStar, insideAttrDictStar, \
+ allAttrListPlus, insideAttrDictPlus, allAttrListStone, insideAttrDictStone, allAttrListWash, insideAttrDictWash = attrList
#GameWorld.DebugLog(" classLV=%s, %s" % (classLV, attrList))
+ allClassEquipFightPowerEx += equipFightPowerEx
for i in xrange(4):
- PlayerControl.AddAttrDictValue(allPartAttrListPlus[i], allAttrListPlus[i])
- PlayerControl.AddAttrDictValue(allPartAttrListStone[i], allAttrListStone[i])
- PlayerControl.AddAttrDictValue(allPartAttrListWash[i], allAttrListWash[i])
-
-# GameWorld.DebugLog(" 所有阶强化属性: %s" % (allPartAttrListPlus))
-# GameWorld.DebugLog(" 所有阶宝石属性: %s" % (allPartAttrListStone))
-# GameWorld.DebugLog(" 所有阶洗练属性: %s" % (allPartAttrListWash))
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Plus, allPartAttrListPlus)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Stone, allPartAttrListStone)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wash, allPartAttrListWash)
+ PlayerControl.AddAttrDictValue(allClassAttrListEquip[i], allAttrListEquip[i])
+ PlayerControl.AddAttrDictValue(allClassAttrListStar[i], allAttrListStar[i])
+ PlayerControl.AddAttrDictValue(allClassAttrListPlus[i], allAttrListPlus[i])
+ PlayerControl.AddAttrDictValue(allClassAttrListStone[i], allAttrListStone[i])
+ PlayerControl.AddAttrDictValue(allClassAttrListWash[i], allAttrListWash[i])
+ PlayerControl.AddAttrDictValue(allClassInsideAttrDictEquip, insideAttrDictEquip)
+ PlayerControl.AddAttrDictValue(allClassInsideAttrDictStar, insideAttrDictStar)
+ PlayerControl.AddAttrDictValue(allClassInsideAttrDictPlus, insideAttrDictPlus)
+ PlayerControl.AddAttrDictValue(allClassInsideAttrDictStone, insideAttrDictStone)
+ PlayerControl.AddAttrDictValue(allClassInsideAttrDictWash, insideAttrDictWash)
+
+# GameWorld.DebugLog(" 所有阶装备战力: %s" % (allClassEquipFightPowerEx))
+# GameWorld.DebugLog(" 所有阶装备属性: %s, 内部加成=%s" % (allClassAttrListEquip, allClassInsideAttrDictEquip))
+# GameWorld.DebugLog(" 所有阶升星属性: %s, 内部加成=%s" % (allClassAttrListStar, allClassInsideAttrDictStar))
+# GameWorld.DebugLog(" 所有阶强化属性: %s, 内部加成=%s" % (allClassAttrListPlus, allClassInsideAttrDictPlus))
+# GameWorld.DebugLog(" 所有阶宝石属性: %s, 内部加成=%s" % (allClassAttrListStone, allClassInsideAttrDictStone))
+# GameWorld.DebugLog(" 所有阶洗练属性: %s, 内部加成=%s" % (allClassAttrListWash, allClassInsideAttrDictWash))
+ curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Equip, allClassEquipFightPowerEx)
+ PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Equip, allClassAttrListEquip, allClassInsideAttrDictEquip)
+ PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Star, allClassAttrListStar, allClassInsideAttrDictStar)
+ PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Plus, allClassAttrListPlus, allClassInsideAttrDictPlus)
+ PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Stone, allClassAttrListStone, allClassInsideAttrDictStone)
+ PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wash, allClassAttrListWash, allClassInsideAttrDictWash)
return
def __CalcFuncAddEquipAttrPer(equipPlace, attrID, attrValue, addPerInfoList):
@@ -670,7 +686,7 @@
return
-def __CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, addEquipBaseAttrPerList, allAttrList, sign=""):
+def __CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, addEquipBaseAttrPerList, allAttrDict, sign=""):
## 计算其他功能属性对装备基础属性加成的属性具体值
allPlaceAddPerDict, basePlaceAddPerDict, assignPlaceAddPerDict = addEquipBaseAttrPerList
#GameWorld.DebugLog(" 计算功能点对装备基础属性加成: %s" % sign)
@@ -680,7 +696,7 @@
continue
baseValue = allEquipBaseAttrDict[attrID]
addValue = int(baseValue * addPer / 10000.0)
- PlayerControl.CalcAttrDict_Type(attrID, addValue, allAttrList)
+ PlayerControl.CalcAttrDict_TypeEx(attrID, addValue, allAttrDict)
#GameWorld.DebugLog(" 加成: ID=%s +%s %s" % (attrID, addValue, addPer))
#GameWorld.DebugLog(" 基础装备属性: %s, 加成%s" % (baseEquipBaseAttrDict, basePlaceAddPerDict))
@@ -689,7 +705,7 @@
continue
baseValue = baseEquipBaseAttrDict[attrID]
addValue = int(baseValue * addPer / 10000.0)
- PlayerControl.CalcAttrDict_Type(attrID, addValue, allAttrList)
+ PlayerControl.CalcAttrDict_TypeEx(attrID, addValue, allAttrDict)
#GameWorld.DebugLog(" 加成: ID=%s +%s %s" % (attrID, addValue, addPer))
#GameWorld.DebugLog(" 指定装备属性: %s, 加成%s" % (equipBaseAttrDict, assignPlaceAddPerDict))
@@ -702,7 +718,7 @@
continue
baseValue = baseAttrDict[attrID]
addValue = int(baseValue * addPer / 10000.0)
- PlayerControl.CalcAttrDict_Type(attrID, addValue, allAttrList)
+ PlayerControl.CalcAttrDict_TypeEx(attrID, addValue, allAttrDict)
#GameWorld.DebugLog(" 加成: ID=%s +%s %s" % (attrID, addValue, addPer))
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
index ddf0f1d..41696ec 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/EquipZhuXian.py
@@ -184,8 +184,8 @@
def RefreshZhuXianAttr(curPlayer):
- CalcZhuXianAttr(curPlayer)
- PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
+ #CalcZhuXianAttr(curPlayer)
+ #PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
return
@@ -362,14 +362,14 @@
PlayerControl.CalcAttrDict_Type(effID, effValue, allAttrListZXStone)
# 保存计算值
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ZXEquip, allAttrList)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ZXEquipSuit, allAttrListZXSuit)
- PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ZXEquipStone, allAttrListZXStone)
+ #PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ZXEquip, allAttrList)
+ #PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ZXEquipSuit, allAttrListZXSuit)
+ #PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ZXEquipStone, allAttrListZXStone)
#计算装备基础属性附加战力 (目前组成: 评分战力 + ...)
equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
GameWorld.DebugLog("诛仙装备评分战力: equipScoreTotal=%s,equipFightPowerEx=%s" % (equipScoreTotal, equipFightPowerEx))
- curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_ZhuXian, equipFightPowerEx)
+ #curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_ZhuXian, equipFightPowerEx)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index e043a34..faa901d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4214,40 +4214,34 @@
def RefreshPlayerAttrStateEx(self):
''' 本项目刷属性规则
- 功能属性层级一(线性层级、非线性层级)
- 功能属性层级二(线性层级、非线性层级)
- ...
- 固定属性层级
- buff层级
-
- 1. 初始化
+ 属性:
+ 1.固定属性:如攻击+100
+ 2.百分比属性: 如攻击+5%,百分比加成基值仅为固定属性,百分比加成属性值不被除buff百分比外的任何百分比属性二次加成
- 功能属性层级一、
- 2.基础属性计算
- 3.战斗属性计算
- 线性层级属性: 基础层级属性 + 功能层级属性
- 基础层级属性:角色基础属性(等级提升 + 属性点提升) + 装备物品表基础属性 + 部位强化基础属性
- 功能层级属性:神兵 + 坐骑 + 全身部位强化星级累加 + 珍品 + 时装 + 套装 + 宝石 + 战盟科技 + 符文 + 守护 等
+ 层级:
+ 1.属性层级:所有功能同一层级
+ 2.buff层级:百分比可对功能百分比加成的属性进行二次加成
+
+ 功能模块:定义一个功能,比如灵根模块,一个模块可能包含多个功能点
+ 功能点:某个模块下的各个属性功能点,如灵根模块可能包含 灵根基础、灵根品质 两个功能点属性
+
+ 百分比加成值:百分比加成属性值不被除buff百分比外的任何百分比属性2次加成
+ 1.功能内部属性百分比加成:功能百分比属性对自己功能固定值加成
+ 2.功能交叉属性百分比加成:功能百分比属性对其他功能固定值加成
+ 3.功能固定属性百分比加成:功能百分比属性对所有功能固定值加成
+ 4.buff层级百分比:对所有属性进行二次加成
+
+ 技能属性:固定值不享受固定百分比加成
- 注意:该层中还包含针对基础属性或功能属性的数值百分比提升,此提升值也是累加到线性层级属性
- 如: 【基础攻击百分比】即对 基础属性 中攻击属性百分比提升
- 【神兵生命属性百分比】即对 神兵功能属性 中生命属性百分比提升
- 类似此类属性并不是真正意义上的非线性属性,仅是对某个功能或功能组的对应属性进行百分比提升,最终的提升值还是算如线性属性层
-
- 非线性层级属性: 即整体层级百分比增加属性
- 直接以当前属性为基值进行属性百分比提升
- 功能属性层级二、
- ...
-
- 4.固定属性:
- 附加的固定值属性,该属性在非线性计算之后,直接累加,不算入非线性属性的基值
+ buff层级:
+ 1.不算战力
+ 2.先算百分比加成再加固定值
- 5.计算以上所有属性的战斗力
-
- 6.buff层级:
- 固定值buff, 直接累加数值
- 百分比buff: 真正的最最最外层,直接按百分比提升对应的属性值
- 注:该层提升的属性不算战斗力
+ 属性算法:
+ 模块固定属性 = 功能点A固定值 + 功能点B固定值 + ...
+ 固定总属性 = 模块A固定值 + 模块B固定值 + ...
+ 无buff总属性 = 固定总属性 + 内部百分比加成值 + 交叉百分比加成 + 固定总属性百分比加成 + 技能百分比对固定属性加成 + 技能固定值
+ 含buff总属性 = 无buff总属性 * buff百分比加成 + buff固定值
'''
curPlayer = self.__Player
@@ -4273,7 +4267,7 @@
notAttrList = [{} for _ in range(4)]
# 1.初始化人物各项状态及属性
- self.InitPlayerState()
+ self.InitPlayerState()
#self.PrintAttr(curPlayer, "初始化")
# 功能属性层级一...
@@ -4281,21 +4275,19 @@
# 2.1 获取所有功能计算点计算的属性值, 统计基础属性累加
baseAttrDict = {}
baseAttrNolineDict = {}
- funcAttrInfoList = []
+ funcAttrLen = len(ChConfig.CalcAttrFuncList)
+ funcAttrInfoList = [[{} for _ in range(4)]] * funcAttrLen
+ funcInsidePerAttrList = [{}] * funcAttrLen # 功能内部百分比附加属性
for funcIndex in ChConfig.CalcAttrFuncList:
- if funcIndex in ChConfig.CalcAttrExFuncListNoFightPower:
- # 此类功能不算战斗力
- funcAttrInfoList.append([{} for _ in range(4)]) # 只为防止后面访问列表元素时不越界, 功能点分类可无视编号顺序
- continue
-
# 基础属性等功能汇总完后统一刷新,因为各功能可能会加属性点数
if funcIndex in [ChConfig.Def_CalcAttrFunc_RoleBase, ChConfig.Def_CalcAttrFunc_LingGenQuailty]:
- funcAttrInfoList.append([{} for _ in range(4)])
continue
- attrInfo = GetCalcAttrListValue(curPlayer, funcIndex)
- if attrInfo != notAttrList:
- GameWorld.DebugLog("功能点属性: %s, %s" % (funcIndex, attrInfo))
- funcAttrInfoList.append(attrInfo)
+ attrInfo, insidePerAttrDict = GetCalcAttrListValue(curPlayer, funcIndex)
+ if attrInfo == notAttrList and not insidePerAttrDict:
+ continue
+ GameWorld.DebugLog("功能点属性: %s, %s, 内层百分比附加: %s" % (funcIndex, attrInfo, insidePerAttrDict))
+ funcAttrInfoList[funcIndex] = attrInfo
+ funcInsidePerAttrList[funcIndex] = insidePerAttrDict
# 不同功能点间的数值累加,需使用支持衰减递增的计算方式
AddAttrDictValue(baseAttrDict, attrInfo[ChConfig.CalcAttr_Base])
AddAttrDictValue(baseAttrNolineDict, attrInfo[ChConfig.CalcAttr_BaseNoline])
@@ -4309,12 +4301,14 @@
# 功能有加基础属性值,这里再重新刷新一下基础属性, 基础属性会影响战斗属性, 每次都刷新角色基础属性
self.CalcRoleBaseAttr(curPlayer)
- roleBaseAttrInfo = GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_RoleBase)
- lingGenQualityAttrList = GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingGenQuailty)
+ roleBaseAttrInfo, roleInsidePerAttrDict = GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_RoleBase)
+ lingGenQualityAttrList, lingGenQualityInsidePerAttrDict = GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingGenQuailty)
funcAttrInfoList[ChConfig.Def_CalcAttrFunc_RoleBase] = roleBaseAttrInfo
+ funcInsidePerAttrList[ChConfig.Def_CalcAttrFunc_RoleBase] = roleInsidePerAttrDict
funcAttrInfoList[ChConfig.Def_CalcAttrFunc_LingGenQuailty] = lingGenQualityAttrList
- GameWorld.DebugLog("功能点属性: %s, %s" % (ChConfig.Def_CalcAttrFunc_RoleBase, roleBaseAttrInfo))
- GameWorld.DebugLog("功能点属性: %s, %s" % (ChConfig.Def_CalcAttrFunc_LingGenQuailty, lingGenQualityAttrList))
+ funcInsidePerAttrList[ChConfig.Def_CalcAttrFunc_LingGenQuailty] = lingGenQualityInsidePerAttrDict
+ GameWorld.DebugLog("功能点属性: %s, %s, 内层百分比附加: %s" % (ChConfig.Def_CalcAttrFunc_RoleBase, roleBaseAttrInfo, roleInsidePerAttrDict))
+ GameWorld.DebugLog("功能点属性: %s, %s, 内层百分比附加: %s" % (ChConfig.Def_CalcAttrFunc_LingGenQuailty, lingGenQualityAttrList, lingGenQualityInsidePerAttrDict))
#self.PrintAttr(curPlayer, "基础后")
@@ -4341,7 +4335,7 @@
ChConfig.TYPE_Calc_WingHPPer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Wing],
}
# 3.2 统计各功能之间非线性属性交叉影响累加
- funcAddAttrPerInfoDict = {} # 百分比交叉影响所提升的属性值 {功能属性编号:{提升的属性类型:数值, ...}, ...}
+ funcCrossAttrPerInfoDict = {} # 百分比交叉影响所提升的属性值 {功能属性编号:{提升的属性类型:数值, ...}, ...}
for i, funcAttrList in enumerate(funcAttrInfoList):
battleNoLineAttrDict = funcAttrList[ChConfig.CalcAttr_BattleNoline] # 暂写死只取战斗非线性的
if not battleNoLineAttrDict:
@@ -4367,80 +4361,90 @@
if addAttrDict:
# 增加的数值统计到百分比属性所属功能点
# 如符文有个武器攻击百分比增加属性,增加的数值属于符文功能,不属于武器功能点的,只是基值使用了武器攻击
- funcAddAttrPerInfoDict[i] = addAttrDict # 先都统计完后再累加到对应功能属性里,不然可能会导致功能基值变更
+ funcCrossAttrPerInfoDict[i] = addAttrDict # 先都统计完后再累加到对应功能属性里,不然可能会导致功能基值变更
- GameWorld.DebugLog("交叉影响属性: %s" % funcAddAttrPerInfoDict)
- # 交叉提升的属性值累加到对应功能上
- for i, addAttrDict in funcAddAttrPerInfoDict.items():
- # 这里累加的是到相同的功能点,直接累加,不做衰减处理
- GameWorld.AddDictValue(funcAttrInfoList[i][ChConfig.CalcAttr_Battle], addAttrDict)
+ GameWorld.DebugLog("交叉影响属性: %s" % funcCrossAttrPerInfoDict)
+
+ # 3.3 统计所有功能固定属性影响累加
+ allFixAttrDict = {} # 固定属性层级总属性基值
+ for funcIndex, funcAttrList in enumerate(funcAttrInfoList):
+ # 技能模块不算计入功能固定属性、不计战力
+ if funcIndex in ChConfig.CalcAttrFuncSkillList:
+ continue
+ AddAttrDictValue(allFixAttrDict, funcAttrList[ChConfig.CalcAttr_Battle])
- # 3.3 累加以上已统计的所有属性(视为整体层级,即非线性属性所需要的基值)
- allFuncAttrIndexList = []
- allFuncAttrInfoList, attrInfoExList = [], [] # 整理功能层级属性信息列表, 额外附加固定值属性信息列表
- for funcIndex, attrInfo in enumerate(funcAttrInfoList):
- if funcIndex not in ChConfig.CalcAttrExFuncList:
- allFuncAttrIndexList.append(funcIndex)
- allFuncAttrInfoList.append(attrInfo)
- else:
- attrInfoExList.append(attrInfo)
- allAttrList = AddAttrListValue(allFuncAttrInfoList) # 不同功能点间的数值累加,需使用支持衰减递增的计算方式
- GameWorld.DebugLog("整体层级功能点: %s" % allFuncAttrIndexList)
- GameWorld.DebugLog("整体层级线性属性: %s" % allAttrList)
-
- # 第二层级属性
- allAttrExList = AddAttrListValue(attrInfoExList)
- GameWorld.DebugLog("附加层级功能点: %s" % ChConfig.CalcAttrExFuncList)
- GameWorld.DebugLog("附加层级线性属性: %s" % allAttrExList)
-
- # 初始化各功能点战斗力计算模块
- mfpObjAttrDict = {}
- for mfpType, attrFuncIndexList in ChConfig.MFPTypeAttrFuncIndexDict.items():
- if len(attrFuncIndexList) == 1:
- mfpAttrList = funcAttrInfoList[attrFuncIndexList[0]]
- else:
- mfpAttrList = AddAttrListValue([funcAttrInfoList[i] for i in attrFuncIndexList])
+ fixAttrPerAddExDict = {} # 固定总属性百分比影响所提升的属性值 {功能属性编号:{提升的属性类型:数值, ...}, ...}
+ for funcIndex, funcAttrList in enumerate(funcAttrInfoList):
+ fixAddPerDict = funcAttrList[ChConfig.CalcAttr_BattleNoline]
+ if not fixAddPerDict:
+ continue
+ addValueExDict = {}
+ for fixAttrType, addPer in fixAddPerDict.items():
+ if fixAttrType not in allFixAttrDict:
+ continue
+ curFixValue = allFixAttrDict[fixAttrType]
+ addValueEx = int(curFixValue * addPer / 10000.0)
+ addValueExDict[fixAttrType] = addValueEx
+ fixAttrPerAddExDict[funcIndex] = addValueExDict
- #GameWorld.DebugLog("模块线性属性: mfpType=%s,%s" % (mfpType, mfpAttrList))
- mfpObj = self.GetModuleFightPowerObj(mfpType)
- mfpObj.SetCalcMFPBattleAttr(mfpAttrList)
- mfpObjAttrDict[mfpObj] = mfpAttrList[ChConfig.CalcAttr_BattleNoline]
-
- # 不加战力,但是有算属性的功能属性,如一些被动技能(战力在技能表里配置)
- skillNoFightPowerAttrList = [{} for _ in range(4)]
- SkillShell.CalcPassiveAttr_Effect(curPlayer, skillNoFightPowerAttrList) # 属性类技能与buff同层
- for funcIndex in ChConfig.CalcAttrExFuncListNoFightPower:
- skillNoFightPowerAttrList = AddAttrListValue([skillNoFightPowerAttrList, GetCalcAttrListValue(curPlayer, funcIndex)])
- GameWorld.DebugLog("无战力被动属性: %s" % skillNoFightPowerAttrList)
+ GameWorld.DebugLog("固定属性总和: %s" % allFixAttrDict)
+ GameWorld.DebugLog("固定百分比附加属性: %s" % fixAttrPerAddExDict)
- # 总属性 = 整体功能层级固定值*(1+功能层级百分比+特殊固定层级百分比+永久技能层级百分比)+特殊固定层级固定值+永久技能层级固定值
- allNoLineAttrDict = {}
- AddAttrDictValue(allNoLineAttrDict, allAttrList[ChConfig.CalcAttr_BattleNoline])
- AddAttrDictValue(allNoLineAttrDict, allAttrExList[ChConfig.CalcAttr_BattleNoline])
- AddAttrDictValue(allNoLineAttrDict, skillNoFightPowerAttrList[ChConfig.CalcAttr_BattleNoline])
- GameWorld.DebugLog("最终非线性属性: %s" % allNoLineAttrDict)
-
- # 整体层级属性增加到玩家身上
- CalcLineEffect.ChangePlayerAttrInLineEffectList(curPlayer, allAttrList[ChConfig.CalcAttr_Battle])
- #self.PrintAttr(curPlayer, "整体线")
- CalcNoLineEffect.ChangePlayerAttrInNoLineEffectList(curPlayer, allNoLineAttrDict, mfpObjAttrDict)
- #self.PrintAttr(curPlayer, "整非线")
-
-
- # 4.计算战力, 需在计算buff层之前计算
+ # 4. 计算属性及战力, 需在计算buff层之前计算
curLV = curPlayer.GetLV()
fpParam = IpyGameDataPY.GetIpyGameData("FightPowerParam", curLV)
mfpDict = {} # 模块战斗力
- for mfpObj in mfpObjAttrDict.keys():
- mfp = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam)
- mfp += curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpObj.mfpType)
- mfp += curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPEx % mfpObj.mfpType)
- mfpDict[mfpObj.mfpType] = mfp
+ for mfpType, attrFuncIndexList in ChConfig.MFPTypeAttrFuncIndexDict.items():
+ mfpAttrList = [{} for _ in range(4)]
+ mfpAttrExDict = {}
+ for funcIndex in attrFuncIndexList:
+ funcAttrList = funcAttrInfoList[funcIndex]
+ funcInsidePerAttrDict = funcInsidePerAttrList[funcIndex] # 功能点内部百分比加成属性
+ funcCrossPerAttrDict = funcCrossAttrPerInfoDict.get(funcIndex, {}) # 功能点交叉百分比加成属性
+ fixPerAttrDict = fixAttrPerAddExDict.get(funcIndex, {}) # 功能总固定属性百分比加成属性
+
+ CalcLineEffect.ChangePlayerAttrInLineEffectList(curPlayer, funcAttrList[ChConfig.CalcAttr_Battle])
+ CalcLineEffect.ChangePlayerAttrInLineEffectList(curPlayer, funcInsidePerAttrDict)
+ CalcLineEffect.ChangePlayerAttrInLineEffectList(curPlayer, funcCrossPerAttrDict)
+ CalcLineEffect.ChangePlayerAttrInLineEffectList(curPlayer, fixPerAttrDict)
+ # 不算战力的
+ if funcIndex in ChConfig.CalcAttrFuncNoFightPowerList or funcIndex in ChConfig.CalcAttrFuncSkillList:
+ continue
+ mfpAttrList = AddAttrListValue([mfpAttrList, funcAttrList])
+ AddAttrDictValue(mfpAttrExDict, funcInsidePerAttrDict)
+ AddAttrDictValue(mfpAttrExDict, funcCrossPerAttrDict)
+ AddAttrDictValue(mfpAttrExDict, fixPerAttrDict)
+
+ mfpObj = self.GetModuleFightPowerObj(mfpType)
+ mfpObj.SetCalcMFPBattleAttr(mfpAttrList)
+ for attrIndex, value in mfpAttrExDict.items():
+ mfpObj.AddCalcMFPAttr(attrIndex, value)
+
+ mfpValue = 0 if not fpParam else mfpObj.GetModuleFightPower(fpParam)
+ mfpSkill = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpObj.mfpType)
+ mfpEx = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPEx % mfpObj.mfpType)
+ mfpTotal = mfpValue + mfpSkill + mfpEx
+ mfpDict[mfpObj.mfpType] = mfpTotal
- # 最后在附加上特殊附加层级线性属性、永久技能层级固定值
- CalcLineEffect.ChangePlayerAttrInLineEffectList(curPlayer, allAttrExList[ChConfig.CalcAttr_Battle])
- CalcLineEffect.ChangePlayerAttrInLineEffectList(curPlayer, skillNoFightPowerAttrList[ChConfig.CalcAttr_Battle])
- #self.PrintAttr(curPlayer, "固定层级")
+ #GameWorld.DebugLog("整体层级线性属性: %s" % allAttrList)
+
+ # 5.被动技能附加属性,不算战力
+ passiveSkillAttrList = [{} for _ in range(4)]
+ SkillShell.CalcPassiveAttr_Effect(curPlayer, passiveSkillAttrList) # 属性类技能与buff同层
+ for funcIndex in ChConfig.CalcAttrFuncSkillList:
+ passiveSkillAttrList = AddAttrListValue([passiveSkillAttrList, funcAttrInfoList[funcIndex]])
+ GameWorld.DebugLog("无战力被动属性: %s" % passiveSkillAttrList)
+
+ skillFixAttrExDict = {}
+ skillFixAddPerDict = passiveSkillAttrList[ChConfig.CalcAttr_BattleNoline]
+ for fixAttrType, addPer in skillFixAddPerDict.items():
+ if fixAttrType not in allFixAttrDict:
+ continue
+ curFixValue = allFixAttrDict[fixAttrType]
+ addValueEx = int(curFixValue * addPer / 10000.0)
+ skillFixAttrExDict[fixAttrType] = addValueEx
+ CalcLineEffect.ChangePlayerAttrInLineEffectList(curPlayer, passiveSkillAttrList[ChConfig.CalcAttr_Battle])
+ CalcLineEffect.ChangePlayerAttrInLineEffectList(curPlayer, skillFixAttrExDict)
#护盾值刷新
self.__RefreshMaxProDef(beforeMaxProDef)
@@ -6083,6 +6087,19 @@
GameWorld.AddDictValue(attrDict, {i:value})
return
+def CalcAttrDict_TypeEx(attrType, value, allAttrDict):
+ ## 统计玩家属性,累加
+ if value == 0:
+ return
+
+ #[属性索引, 是否基础属性,(非)线性]
+ attrInfo = ChConfig.ItemEffect_AttrDict.get(attrType, [])
+ if attrInfo == []:
+ return
+ for i in attrInfo[0]:
+ GameWorld.AddDictValue(allAttrDict, {i:value})
+ return
+
#===============================================================================
# CalcAttr_Base,
# CalcAttr_BaseNoline,
@@ -6574,7 +6591,7 @@
#-------------------------------------------------------------------------------
## 设置保存功能事先计算好的属性值
-def SetCalcAttrListValue(curPlayer, funcIndex, allAttrList):
+def SetCalcAttrListValue(curPlayer, funcIndex, allAttrList, insidePerAttrDict={}):
# 设置值之前先清空重置
ClearCalcAttrListValue(curPlayer, funcIndex)
@@ -6594,32 +6611,34 @@
if playerID not in PyGameData.g_playerFuncAttrDict:
PyGameData.g_playerFuncAttrDict[playerID] = {}
funcAttrDict = PyGameData.g_playerFuncAttrDict[playerID]
- funcAttrDict[funcIndex] = allAttrList
- #GameWorld.DebugLog("保存功能点属性: funcIndex=%s, %s" % (funcIndex, allAttrList))
+ funcAttrDict[funcIndex] = [allAttrList, insidePerAttrDict]
+ #GameWorld.DebugLog("保存功能点属性: funcIndex=%s, %s, %s" % (funcIndex, allAttrList, insidePerAttrDict))
return
def GetCalcAttrListValue(curPlayer, funcIndex):
## 获取功能点预先计算的所加属性值
attrList = [{} for _ in range(4)]
+ insidePerAttrDict = {}
if isinstance(funcIndex, int):
funcIndexList = [funcIndex]
elif isinstance(funcIndex, list):
funcIndexList = funcIndex
else:
- return attrList
+ return attrList, insidePerAttrDict
playerID = curPlayer.GetPlayerID()
if playerID not in PyGameData.g_playerFuncAttrDict:
- return attrList
+ return attrList, insidePerAttrDict
funcAttrDict = PyGameData.g_playerFuncAttrDict[playerID]
for funcIndex in funcIndexList:
if funcIndex not in funcAttrDict:
continue
- funcAttrList = funcAttrDict[funcIndex]
+ funcAttrList, funcInsidePerAttrDict = funcAttrDict[funcIndex]
for i, attrDict in enumerate(attrList):
curAttrDict = funcAttrList[i]
AddAttrDictValue(attrDict, curAttrDict)
- return attrList
+ AddAttrDictValue(insidePerAttrDict, funcInsidePerAttrDict)
+ return attrList, insidePerAttrDict
## 重置缓存
def ClearCalcAttrListValue(curPlayer, funcIndex):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 438b8fc..5ffca38 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1302,10 +1302,10 @@
)=range(5)
# 战斗力模块类型
-Def_MFPType_Max = 44
+Def_MFPType_Max = 26
ModuleFightPowerTypeList = (
Def_MFPType_Role, # 角色 0
-Def_MFPType_Equip, # 装备(基本装备位) 1 - 废弃
+Def_MFPType_Equip, # 装备(装备本身) 1
Def_MFPType_Plus, # 强化 2
Def_MFPType_Stone, # 宝石 3
Def_MFPType_LingGen, # 灵根 4
@@ -1317,7 +1317,7 @@
Def_MFPType_GodWeapon, # 神兵 10
Def_MFPType_Dienstgrad, #称号 11
Def_MFPType_Rune, # 符印 12
-Def_MFPType_13, #
+Def_MFPType_Star, # 升星 13
Def_MFPType_MagicWeapon1, # 人族法宝 14
Def_MFPType_StoveYao, # 炼丹炉丹药 15
Def_MFPType_MagicWeapon2, # 魔族法宝 16
@@ -1329,27 +1329,7 @@
Def_MFPType_GatherSoul, # 聚魂 22
Def_MFPType_MagicWeapon4, # 王者法宝 23
Def_MFPType_Coat, # 时装 24
-Def_MFPType_ZhuXian, # 诛仙 25 - 废弃
-Def_MFPType_Equip1, # 境界装备1阶 26
-Def_MFPType_Equip2, # 境界装备2阶 27
-Def_MFPType_Equip3, # 境界装备3阶 28
-Def_MFPType_Equip4, # 境界装备4阶 29
-Def_MFPType_Equip5, # 境界装备5阶 30
-Def_MFPType_Equip6, # 境界装备6阶 31
-Def_MFPType_Equip7, # 境界装备7阶 32
-Def_MFPType_Equip8, # 境界装备8阶 33
-Def_MFPType_Equip9, # 境界装备9阶 34
-Def_MFPType_Equip10, # 境界装备10阶 35
-Def_MFPType_Equip11, # 境界装备11阶 36
-Def_MFPType_Equip12, # 境界装备12阶 37
-Def_MFPType_Equip13, # 境界装备13阶 38
-Def_MFPType_Equip14, # 境界装备14阶 39
-Def_MFPType_Equip15, # 境界装备15阶 40
Def_MFPType_Other, # 其他
-
-#以下暂时没用到,改时再处理
-Def_MFPType_Passive, #被动技能
-Def_MFPType_ClothesCoat, #衣服时装
) = range(Def_MFPType_Max)
#事件汇报用户行为-----------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/CalcNoLineEffect.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/CalcNoLineEffect.py
index ca8511d..08ba180 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/CalcNoLineEffect.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/CalcNoLineEffect.py
@@ -27,7 +27,7 @@
# @param curPlayer 当前玩家
# @param effectDict 效果列表
# @return None
-def ChangePlayerAttrInNoLineEffectList(curPlayer, effectDict, mfpObjAttrDict=None, isBuffAttr=False):
+def ChangePlayerAttrInNoLineEffectList(curPlayer, effectDict, isBuffAttr=False):
for key, value in effectDict.items():
if value == 0:
continue
@@ -64,15 +64,6 @@
## # 衰减算法
## EffGetSet.SetValueByEffIndex(curPlayer, key, tmpValue)
# else:
- if mfpObjAttrDict:
- for mfpObj, attrDict in mfpObjAttrDict.items():
- #if not attrDict.has_key(key): # 如果该模块没有增加该属性,则跳过
- if key not in attrDict: # 如果该模块没有增加该属性,则跳过
- continue
- curMValue = attrDict[key]
- curMAddValue = curValue * curMValue / ChConfig.Def_MaxRateValue # 相对增加值
- mfpObj.AddCalcMFPAttr(key, curMAddValue) # 给对应模块累加上非线性增加的战斗属性值
-
EffGetSet.SetValueByEffIndex(curPlayer, key, curValue * (ChConfig.Def_MaxRateValue + value) / ChConfig.Def_MaxRateValue)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_514.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_514.py
index c9ddba4..9c9c749 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_514.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_514.py
@@ -21,22 +21,24 @@
def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
- if defender.GetGameObjType() != IPY_GameWorld.gotPlayer:
- return
- suitsLV = ChEquip.GetEquipSuitsLVByType(defender, ChConfig.EquipSuitType_Normal, ChConfig.EquipGroupType_Armor)
- if not suitsLV:
- return
- attrList = PlayerControl.GetCalcAttrListValue(defender, curEffect.GetEffectValue(2))
- attrType = curEffect.GetEffectValue(1)
- attrTypeList = [attrType]
- # 攻击力有最大最小 特殊处理
- if attrType in [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]:
- attrTypeList = [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]
- for tmpType in attrTypeList:
- value = int(attrList[2].get(tmpType, 0)*curEffect.GetEffectValue(0)*suitsLV*1.0/ChConfig.Def_MaxRateValue)
- calcDict[tmpType] = calcDict.get(tmpType, 0) + value
-
+ # 境界装备改版,暂取消
return
+# if defender.GetGameObjType() != IPY_GameWorld.gotPlayer:
+# return
+# suitsLV = ChEquip.GetEquipSuitsLVByType(defender, ChConfig.EquipSuitType_Normal, ChConfig.EquipGroupType_Armor)
+# if not suitsLV:
+# return
+# attrList = PlayerControl.GetCalcAttrListValue(defender, curEffect.GetEffectValue(2))
+# attrType = curEffect.GetEffectValue(1)
+# attrTypeList = [attrType]
+# # 攻击力有最大最小 特殊处理
+# if attrType in [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]:
+# attrTypeList = [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]
+# for tmpType in attrTypeList:
+# value = int(attrList[2].get(tmpType, 0)*curEffect.GetEffectValue(0)*suitsLV*1.0/ChConfig.Def_MaxRateValue)
+# calcDict[tmpType] = calcDict.get(tmpType, 0) + value
+#
+# return
## 返回buff类型,线性与否
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_515.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_515.py
index f3af3eb..7c1e664 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_515.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_515.py
@@ -21,22 +21,24 @@
def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
- if defender.GetGameObjType() != IPY_GameWorld.gotPlayer:
- return
- suitsLV = ChEquip.GetEquipSuitsLVByType(defender, ChConfig.EquipSuitType_Plus, ChConfig.EquipGroupType_Armor)
- if not suitsLV:
- return
- attrList = PlayerControl.GetCalcAttrListValue(defender, curEffect.GetEffectValue(2))
- attrType = curEffect.GetEffectValue(1)
- attrTypeList = [attrType]
- # 攻击力有最大最小 特殊处理
- if attrType in [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]:
- attrTypeList = [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]
- for tmpType in attrTypeList:
- value = int(attrList[2].get(tmpType, 0)*curEffect.GetEffectValue(0)*suitsLV*1.0/ChConfig.Def_MaxRateValue)
- calcDict[tmpType] = calcDict.get(tmpType, 0) + value
-
+ # 境界装备改版,暂取消
return
+# if defender.GetGameObjType() != IPY_GameWorld.gotPlayer:
+# return
+# suitsLV = ChEquip.GetEquipSuitsLVByType(defender, ChConfig.EquipSuitType_Plus, ChConfig.EquipGroupType_Armor)
+# if not suitsLV:
+# return
+# attrList = PlayerControl.GetCalcAttrListValue(defender, curEffect.GetEffectValue(2))
+# attrType = curEffect.GetEffectValue(1)
+# attrTypeList = [attrType]
+# # 攻击力有最大最小 特殊处理
+# if attrType in [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]:
+# attrTypeList = [ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax]
+# for tmpType in attrTypeList:
+# value = int(attrList[2].get(tmpType, 0)*curEffect.GetEffectValue(0)*suitsLV*1.0/ChConfig.Def_MaxRateValue)
+# calcDict[tmpType] = calcDict.get(tmpType, 0) + value
+#
+# return
## 返回buff类型,线性与否
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_520.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_520.py
index 234c943..a113497 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_520.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_520.py
@@ -24,7 +24,7 @@
if defender.GetGameObjType() != IPY_GameWorld.gotPlayer:
return
- attrList = PlayerControl.GetCalcAttrListValue(defender, ChConfig.Def_CalcAttrFunc_GodWeapon)
+ attrList = PlayerControl.GetCalcAttrListValue(defender, ChConfig.Def_CalcAttrFunc_GodWeapon)[0]
value = attrList[2].get(curEffect.GetEffectValue(0), 0)*curEffect.GetEffectValue(1)/ChConfig.Def_MaxRateValue
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_550.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_550.py
index e9b5042..d1ac624 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_550.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_550.py
@@ -22,7 +22,7 @@
# @return None
def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
attrType = curEffect.GetEffectValue(1)
- attrList = PlayerControl.GetCalcAttrListValue(defender, [ChConfig.Def_CalcAttrFunc_Dogz, ChConfig.Def_CalcAttrFunc_DogzEquip, ChConfig.Def_CalcAttrFunc_DogzEquipPlus])
+ attrList = PlayerControl.GetCalcAttrListValue(defender, [ChConfig.Def_CalcAttrFunc_Dogz, ChConfig.Def_CalcAttrFunc_DogzEquip, ChConfig.Def_CalcAttrFunc_DogzEquipPlus])[0]
value = int(attrList[2].get(attrType, 0)*curEffect.GetEffectValue(0)*1.0/ChConfig.Def_MaxRateValue)
calcDict[attrType] = calcDict.get(attrType, 0) + value
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_807.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_807.py
index 5a26f5d..122cc24 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_807.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_807.py
@@ -20,7 +20,7 @@
def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
- attrList = PlayerControl.GetCalcAttrListValue(attacker, ChConfig.Def_CalcAttrFunc_GodWeapon)
+ attrList = PlayerControl.GetCalcAttrListValue(attacker, ChConfig.Def_CalcAttrFunc_GodWeapon)[0]
hp = attrList[2].get(ChConfig.TYPE_Calc_AttrMaxHP, 0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4511.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4511.py
index b53c6c5..f46ccd0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4511.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4511.py
@@ -21,5 +21,5 @@
def GetValue(attacker, defender, passiveEffect):
- attrList = PlayerControl.GetCalcAttrListValue(attacker, ChConfig.Def_CalcAttrFunc_Horse)
+ attrList = PlayerControl.GetCalcAttrListValue(attacker, ChConfig.Def_CalcAttrFunc_Horse)[0]
return int(attrList[2].get(ChConfig.TYPE_Calc_AttrATKMax, 0)*passiveEffect.GetEffectValue(0)*1.0/ChConfig.Def_MaxRateValue)
--
Gitblit v1.8.0