From 35c596a6ed34680d9af09788274051c1c212d4eb Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 07 七月 2025 15:05:03 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(优化战斗武将跟NPC独立处理;去除程序无技能普攻,增加反击普攻;新增回合主动普攻技能功能类型23;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py |  125 +++++++++++++++++++++++------------------
 1 files changed, 71 insertions(+), 54 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 5f25ed4..27b0449 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -1192,9 +1192,6 @@
 #朋友
 Type_Relation_Friend = 2
 
-Def_NpcDictKey_CampType = 'CampType'
-#阵营 三种 中立 正义 邪恶
-
 CampType_Neutral = ShareDefine.CampType_Neutral  # 中立
 CampType_Justice = ShareDefine.CampType_Justice  # 正义
 CampType_Evil = ShareDefine.CampType_Evil  # 邪恶
@@ -1238,7 +1235,7 @@
 ) = range(Def_UseSkillAim_Type)
 
 #技能施法目标类型, 修改此处应在Def_Dict_UseSkillTag_ObjType 相应更改
-Def_UseSkillTag_Type = 16
+Def_UseSkillTag_Type = 17
 (
     Def_UseSkillTag_None      ,        #无需选择对象 0
     Def_UseSkillTag_Self      ,        #自己 1 
@@ -1256,6 +1253,7 @@
     Def_UseSkillTag_CanAttackBaseNPC,      #可攻击的野外小怪(含精英)怪物 13
     Def_UseSkillTag_FriendNPC,         #友好NPC 14
     Def_UseSkillTag_AppointNPC,         #指定NPC 15 必须和效果值配合 Def_Skill_Effect_AppointNPC
+    Def_UseSkillTag_FriendDeath,        #友方死亡目标16
     
 ) = range( 0, Def_UseSkillTag_Type )
 
@@ -1294,6 +1292,13 @@
 Def_ST_CanNPCUseSkill = [ 
                         Def_UseSkillTag_None,
                         Def_UseSkillTag_Self, 
+                        ]
+
+#NPC技能:可以对友好目标释放的技能
+Def_ST_CanNPCUseSkillFriend = [ 
+                        Def_UseSkillTag_Friend, 
+                        Def_UseSkillTag_SelfAndFriend, 
+                        Def_UseSkillTag_FriendNPC, 
                         ]
 
 #自动攻击技能类型
@@ -1343,7 +1348,7 @@
                        Def_SkillType_PlsBuff    : IPY_GameWorld.bfBuff   ,  #增益BUFF 5
                        Def_SkillType_DepBuff    : IPY_GameWorld.bfDeBuff ,  #减益BUFF 6
                        Def_SkillType_PassiveBuff    : IPY_GameWorld.btPassiveBuf,  # 被动技能 7 (废弃,无此定义分散为其他buff)
-                       Def_SkillType_Revive     : IPY_GameWorld.bfIncBuff,  #复活     8
+                       #Def_SkillType_Revive     : IPY_GameWorld.bfIncBuff,  #复活     8
                        Def_SkillType_Increment  : IPY_GameWorld.bfIncBuff,  #增值技能(不可清除)9
                        Def_SkillType_Aura       : IPY_GameWorld.bfAura   ,  #光环技能  10
                        Def_SkillType_Equip      : IPY_GameWorld.bfEquipBuff,#装备技能  11
@@ -1641,9 +1646,6 @@
 #GM操作字符
 Def_GM_Oper_ForbidAcc = 'GMOperForbidAcc'                  #GM操作符:踢出玩家
 #---------------------------------------------------------------------
-#GM活动ID(10倍)
-Def_GY_GM_GameID_MapGiveExp_Ten = 3000005
-Def_GY_GM_GameID_MapGiveExp_Fifty = 3000006
 
 #------------
 # 非c++定义的账号状态,py用的账号锁定,禁言,按位判断
@@ -1733,6 +1735,11 @@
 Def_NstNull, Def_NstMoving, Def_NstDead, Def_NstAttack = range(4)
 
 #-------------------------------#副本相关#------------------------
+# 主线小怪
+Def_FBMapID_Main = 1
+# 主线Boss
+Def_FBMapID_MainBoss = 2
+
 #创角新手村地图ID列表
 Def_CreatRoleMapIDList = [10000]
 #PK周赛
@@ -1850,9 +1857,6 @@
 TurnFightMapIDList = (
 Def_TFMapID_MineArea, # 福地 1
 ) = range(1, 1 + 1)
-
-#回合战斗自定义地图需要发送GameServer的列表
-Def_TFMapID_SendToGameServer = [Def_TFMapID_MineArea]
 
 #前端自定义场景地图
 ClientCustomSceneList = [Def_FBMapID_PersonalBoss, Def_FBMapID_ArenaBattle, Def_FBMapID_MirrorBattle]
@@ -2498,45 +2502,6 @@
 TYPE_Time_Format_YmdHMS = "%Y%m%d%H%M%S"
 #---------------------------------------------------------------------
 
-#无限封存时间(10年)
-Def_GMPower_MaxTime = 60*24*365*10
-#GM权限表
-
-#                            GM命令                超级GM(1级)   A级GM(2级)  B级GM(3级)  C级GM(4级)  D级GM(5级)
-Def_GMPower_Disc = {       
-                    'GY_GM_PlayerDetailByID' : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #角色查询 
-                    'GY_GM_MoveToPlayerByID' : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #传送到玩家身边
-                    'GY_GM_PullPlayerByID'   : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #把玩家拉到身边
-                    'GY_GM_ViewBroadcast'    : { 1 : True ,  2 : True , 3 : True , 4 : False,  5 : False} , #查询公告
-                    'GY_GM_ForbidFight'      : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : False} , #禁止战斗
-                    'GY_GM_KickPlayer'       : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #踢玩家下线
-                    'GY_GM_CloseAccID'       : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : False} , #帐号封存
-                    'GY_GM_SetNoSight'       : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #设置隐身
-                    'GY_GM_CancelNoSight'    : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #取消隐身
-                    'GY_GM_ForbidTalk'       : { 1 : True ,  2 : True , 3 : True , 4 : False,  5 : False} , #禁止说话
-                    'GY_GM_ChangeGMLV'       : { 1 : True ,  2 : False, 3 : False, 4 : False,  5 : False} , #更改权限
-                    'GY_GM_SetExpRate'       : { 1 : True ,  2 : True , 3 : True , 4 : False,  5 : False} , #经验倍率
-                    'GY_GM_StartGame'        : { 1 : True ,  2 : True , 3 : True , 4 : False,  5 : False} , #开启活动
-                    'GY_GM_ViewGame'         : { 1 : True ,  2 : True , 3 : True , 4 : False,  5 : False} , #查询活动
-                    'GY_GM_FindPlayerByID'   : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #查询玩家
-                    'GY_GM_FindPlayerByName' : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #查询玩家
-                    'GY_GM_GivePlayerExp'    : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #给经验
-                    'GY_GM_Broadcast'        : { 1 : True ,  2 : True , 3 : True , 4 : False,  5 : False} , #发布公告
-                    'GY_GM_ViewWordExpRate'  : { 1 : True ,  2 : True , 3 : True , 4 : False,  5 : False} , #查看服务器经验倍率
-                    'GY_GM_MapGiveExp'       : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #设置指定地图经验倍率
-                   'GY_GM_Offline_FindPlayer': { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #脱机工具-查找玩家
-                    'GY_GM_Offline_ViewItem' : { 1 : True ,  2 : True , 3 : True , 4 : False,  5 : False} , #脱机工具-查看物品
-               'GY_GM_Offline_ViewAttribute' : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #脱机工具-查看玩家属性
-                    'GY_GM_Offline_ViewSkill': { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #脱机工具-查看玩家技能
-                    'GY_GM_Offline_ViewTitle': { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #脱机工具-查看玩家称号
-                    'GY_GM_Offline_ViewMoney': { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #脱机工具-查看玩家货币
-                   'GY_GM_Offline_ViewGMOper': { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #脱机工具-查看玩家GM操作
-                    'GY_GM_CloseBroadcast'   : { 1 : True ,  2 : True , 3 : True , 4 : False,  5 : False} , #脱机工具-消除公告
-                    'GY_GM_Offline_UnBind'   : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #脱机工具-解封玩家
-                'GY_GM_Offline_ViewUnBind'   : { 1 : True ,  2 : True , 3 : True , 4 : True ,  5 : True } , #脱机工具-查询玩家
-                    }
-
-#---------------------------------------------------------------------
 #请求类型(需要和GameServer中的一致)
 Def_QueryType_Count = 56
 (
@@ -2966,7 +2931,7 @@
 
 # 回合攻击战斗类型
 (
-TurnBattleType_Normal, # 普通
+TurnBattleType_Normal, # 常规攻击
 TurnBattleType_Combo, # 连击
 TurnBattleType_AtkBack, # 反击
 ) = range(3)
@@ -2974,9 +2939,22 @@
 Def_PerTurnTick = 1000 # 每回合等同于常规tick时长
 
 # 回合战斗目标类型
-TurnBattle_TagType_NPC = 0
+TurnBattle_TagType_NPCLineup = 0 # NPC阵容
 TurnBattle_TagType_Player = 1
 TurnBattle_TagType_Team = 2
+
+#---Obj字典-------
+Def_Obj_Dict_Faction = 'Faction' # 所属阵营
+Def_Obj_Dict_LineupPlayerID = 'LineupPlayerID' # 阵容所属玩家ID,可用于判断是否玩家阵容,PVP或PVE
+Def_Obj_Dict_HeroID = 'HeroID' # 该战斗NPC所绑定的武将ID,一般仅玩家阵容有
+Def_Obj_Dict_SkinID = 'SkinID' # 该战斗NPC所绑定的武将皮肤ID,一般仅玩家阵容有
+Def_Obj_Dict_TurnFightPosInfo = 'TurnFightPosInfo' # 回合制站位: 阵营编号*100+阵型站位,阵型站位为0时代表非主战单位
+Def_Obj_Dict_TurnFightTimeline = 'TurnFightTimeline' # 回合制战斗时间线: 回合数*100+行动编号节点
+Def_Obj_Dict_TurnComboNum = 'TurnComboNum' # 单次累计连击次数
+Def_Obj_Dict_TurnAtkBackNum = 'TurnAtkBackNum' # 单次累计反击次数
+Def_Obj_Dict_TurnParryNum = 'TurnParryNum' # 单次累计格挡次数
+Def_Obj_Dict_TurnMissNum = 'TurnMissNum' # 单次累计闪避次数
+Def_Obj_Dict_TurnBattleType = 'TurnBattleType' # 本次攻击战斗类型:TurnBattleType_xxx
 
 #---NPC字典-------
 #每道龙卷风最终坐标
@@ -3203,6 +3181,7 @@
 Def_PlayerKey_AttrPerLVAtk = "PerLVAtk"    #每1级+%s攻击, 数值取万分率,支持小数算法
 Def_PlayerKey_AttrPerLVMaxHP = "PerLVMaxHP"    #每1级+%s生命, 数值为固定值
 Def_PlayerKey_AttrShieldMPCostRate = "AttrShieldMPCostRate"    #魔法盾伤害吸收蓝耗比率
+Def_PlayerKey_AttrXP = "AttrXP"    #当前XP
 Def_PlayerKey_AttrXPRestorePer = "AttrXPRestorePer"    #自动恢复XP值比率
 Def_PlayerKey_MarkLoadMapTick = "LoadMapTickVIP"        #记录切换地图后的tick,VIP
 Def_PlayerKey_MTFreeOnlineRefreshTick = "MTFreeOnlineRTick"        # 寻宝在线计算时间
@@ -4420,8 +4399,11 @@
 Def_PDict_TiandaoAward = "TiandaoAward_%s" # 天道树领奖记录,按奖励索引记录是否已领取,参数(key编号)
 
 #武将
-Def_PDict_HeroActState = "HeroActState_%s" # 武将解锁状态,按记录索引二进制存储,参数(key编号)
 Def_PDict_HeroSkin = "HeroSkin_%s" # 武将皮肤解锁状态,按皮肤索引二进制存储,参数(武将ID)
+Def_PDict_HeroBook = "HeroBook_%s" # 武将图鉴激活等级,参数(武将ID) cccbbba a-初始激活状态1-英雄激活,2-初始图鉴激活; bbb-存星级图鉴激活等级;ccc-存突破图鉴激活等级
+
+#主线
+Def_PDict_UnXiantaoCnt = "UnXiantaoCnt" # 累计未结算的战锤数
 
 #-------------------------------------------------------------------------------
 #可以从07 41封包购买的背包类型,和对应字典{背包类型:[字典key, 默认格子数]}
@@ -4516,6 +4498,7 @@
 AttrName_FightExpRate = "FightExpRate"  # 杀怪经验倍率
 AttrName_GameExpRate = "GameExpRate"  # 游戏事件经验倍率
 AttrName_SkillAtkRate = "SkillAtkRate"  # 技能伤害加成 (用作伤害加成)
+AttrName_AtkBackHP = "AtkBackHP"    # 攻击回复血量固定值
 AttrName_AtkBackHPPer = "AtkBackHPPer"    # 攻击回复血量比率
 AttrName_SuperHit = "SuperHit"  # 暴击伤害固定值
 AttrName_SuperHitRate = "SuperHitRate"  # 暴击概率
@@ -4546,6 +4529,17 @@
 AttrName_PetAtk = "PetAtk"  # 灵宠攻击
 AttrName_PetSkillAtkRate = "PetSkillAtkRate"  # 灵宠技能
 AttrName_PetDamPer = "PetDamPer"  # 灵宠伤害增加
+AttrName_ComboDefRate = "ComboDefRate"  # 抗连击概率
+AttrName_AtkBackRate = "AtkBackRate"  # 反击概率
+AttrName_AtkBackDefRate = "AtkBackDefRate"  # 抗反击概率
+AttrName_SuckHPPer = "SuckHPPer"  # 吸血比率
+AttrName_SuckHPDefPer = "SuckHPDefPer"  # 抗吸血比率
+AttrName_CurePer = "CurePer"  # 强化治疗
+AttrName_CureDefPer = "CureDefPer"  # 弱化治疗
+AttrName_PetStrengthenPer = "PetStrengthenPer"  # 强化灵兽
+AttrName_PetWeakenPer = "PetWeakenPer"  # 弱化灵兽
+AttrName_SuperHitHurtPer = "SuperHitHurtPer"  # 强化暴伤
+AttrName_SuperHitHurtDefPer = "SuperHitHurtDefPer"  # 弱化暴伤
 
 #物品效果(ID或指定类型)对应的属性计算信息 {效果(ID/指定类型):[[属性索引, ...], 是否基础属性,(非)线性]}
 #对应 Def_Calc_AllAttrType_MAX
@@ -4736,6 +4730,22 @@
     ShareDefine.Def_Effect_FamilyWarHPPer:[[TYPE_Calc_FamilyWarHPPer], False, TYPE_Linear],
     ShareDefine.Def_Effect_FamilyWarAtkPer:[[TYPE_Calc_FamilyWarAtkPer], False, TYPE_Linear],
     ShareDefine.Def_Effect_FamilySitExpPer:[[TYPE_Calc_FamilySitExpPer], False, TYPE_Linear],
+    ShareDefine.Def_Effect_ComboDefRate:[[TYPE_Calc_ComboDefRate], False, TYPE_Linear],
+    AttrName_ComboDefRate:[[TYPE_Calc_ComboDefRate], False, TYPE_Linear],
+    ShareDefine.Def_Effect_AtkBackRate:[[TYPE_Calc_AtkBackRate], False, TYPE_Linear],
+    AttrName_AtkBackRate:[[TYPE_Calc_AtkBackRate], False, TYPE_Linear],
+    ShareDefine.Def_Effect_AtkBackDefRate:[[TYPE_Calc_AtkBackDefRate], False, TYPE_Linear],
+    AttrName_AtkBackDefRate:[[TYPE_Calc_AtkBackDefRate], False, TYPE_Linear],
+    ShareDefine.Def_Effect_SuckHPPer:[[TYPE_Calc_SuckHPPer], False, TYPE_Linear],
+    AttrName_SuckHPPer:[[TYPE_Calc_SuckHPPer], False, TYPE_Linear],
+    ShareDefine.Def_Effect_SuckHPDefPer:[[TYPE_Calc_SuckHPDefPer], False, TYPE_Linear],
+    AttrName_SuckHPDefPer:[[TYPE_Calc_SuckHPDefPer], False, TYPE_Linear],
+    ShareDefine.Def_Effect_CurePer:[[TYPE_Calc_CurePer], False, TYPE_Linear],
+    ShareDefine.Def_Effect_CureDefPer:[[TYPE_Calc_CureDefPer], False, TYPE_Linear],
+    ShareDefine.Def_Effect_PetStrengthenPer:[[TYPE_Calc_PetStrengthenPer], False, TYPE_Linear],
+    ShareDefine.Def_Effect_PetWeakenPer:[[TYPE_Calc_PetWeakenPer], False, TYPE_Linear],
+    ShareDefine.Def_Effect_SuperHitHurtPer:[[TYPE_Calc_SuperHitHurtPer], False, TYPE_Linear],
+    ShareDefine.Def_Effect_SuperHitHurtDefPer:[[TYPE_Calc_SuperHitHurtDefPer], False, TYPE_Linear],
     
     #战斗非线性
     ShareDefine.Def_Effect_SuperHitPer:[[TYPE_Calc_SuperHit], False, TYPE_NoLinear],
@@ -5774,7 +5784,8 @@
 Def_SkillFuncType_ShentongSkill,     #20 神通技能
 Def_SkillFuncType_ElfSkill,     #21 精怪技能
 Def_SkillFuncType_GatherTheSoul,     #22 聚魂技能
-) = range(23)
+Def_SkillFuncType_TurnNormaAttack,  #23 回合普攻技能
+) = range(24)
 
 # 受技能效果完全影响的怪, 对应 Def_BattleRelationType_CommNoBoss
 Def_SkillAttack_NPCIsBoss = [ Def_NPCType_Ogre_Normal     ,  #平凡小怪 0    # c++ 定义为普通NPC视野刷新
@@ -5790,6 +5801,12 @@
 Def_BattleRelationType_CommNoBoss,   # 除了(指定)BOSS,可对其释放技能,但是无实际效果
 ) = range(0, 4)
 
+# 近战远程
+AtkDistTypeList = (
+AtkDistType_Short, # 近战
+AtkDistType_Long, # 远程
+) = range(1, 1 + 2)
+
 # 经验倍率限制类型
 (
 ExpRateLimitType_Recover, # 资源找回

--
Gitblit v1.8.0