Core/GameEngine/Model/Player/Character/PlayerExtersionData.cs
@@ -73,4 +73,6 @@ public uint soulSplinters;//聚魂-碎片 197 public uint soulCore;//聚魂-核心环 198 public int honorValue; //荣誉值 199 public int zhuxianRate;// 诛仙一击概率 public int zhuxianHurtPer;// 诛仙一击伤害值 } Core/GameEngine/Model/Player/PlayerDatas.cs
@@ -926,6 +926,10 @@ case PlayerDataRefresh.CDBPlayerRefresh_Honor: extersion.honorValue = (int)value; break; case PlayerDataRefresh.CDBPlayerRefresh_ZhuxianRate: break; case PlayerDataRefresh.CDBPlayerRefresh_ZhuxianHurtPer: break; } } Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0614_tagUseSkillPos.cs
@@ -179,6 +179,19 @@ continue; } if (_sTarget.AttackType == (int)HurtAttackType.FinalKill) { var _funcConfig = Config.Instance.Get<FuncConfigConfig>("KillEffects"); if (_funcConfig != null) { int _effectID = 0; if (int.TryParse(_funcConfig.Numerical1, out _effectID)) { SFXPlayUtility.Instance.PlayBattleEffect(_effectID, _cTarget.Root); } } } if (_cTarget.ServerInstID == PlayerDatas.Instance.PlayerId) { if (GAMgr.Instance.otherPlayerAtkHeroDict.ContainsKey(_cTarget.ServerInstID)) @@ -472,7 +485,7 @@ #endif // 跨服竞技场不检测反击逻辑 if(CrossServerUtility.IsCrossServerOneVsOne()) if (CrossServerUtility.IsCrossServerOneVsOne()) { return; } @@ -597,10 +610,24 @@ { continue; } CheckFanJi(_attacker, _sTarget, _cTarget); _cTarget.ActorInfo.SyncServerHp = _sTarget.CurHP; _cTarget.ActorInfo.SyncServerHpEx = _sTarget.CurHPEx; if (_sTarget.AttackType == (int)HurtAttackType.FinalKill) { var _funcConfig = Config.Instance.Get<FuncConfigConfig>("KillEffects"); if (_funcConfig != null) { int _effectID = 0; if (int.TryParse(_funcConfig.Numerical1, out _effectID)) { SFXPlayUtility.Instance.PlayBattleEffect(_effectID, _cTarget.Root); } } } if (_cTarget.ServerInstID == PlayerDatas.Instance.PlayerId) { if (GAMgr.Instance.otherPlayerAtkHeroDict.ContainsKey(_cTarget.ServerInstID)) Fight/Actor/Skill/AttackHandler.cs
@@ -269,16 +269,19 @@ int _missRate = 0; int _aSuperHitRate = 0; int _aLuckyHitRage = 0; int _aLuckyHitRate = 0; int _aZhuXianHitRate = 0; bool _isMiss = false; bool _isCrit = false; bool _isLucky = false; bool _isZhuxianHit = false; SkillHelper.EffectValue _effectValue; float _aAtkSkillPer = 0; int _atkSkillValue = 0; int _aZhuxianHurtPer = 0; int _aLuckyHit = 0;// 会心一击伤害加成 万分率, 默认0, 会心一击时有值 float _aSuperHit = 0;// 暴击伤害 固定值, 默认0, 暴击时有值 int _aMinAtk = 1;// 最小攻击 固定值 @@ -364,7 +367,6 @@ _missRate = _npcBase.NpcConfig.MissRate; _dDef = _npcBase.NpcConfig.Def; } else if (target.ActorType == GameObjType.gotPlayer) { @@ -376,7 +378,9 @@ { _hitRate = PlayerDatas.Instance.extersion.HIT; _aSuperHitRate = PlayerDatas.Instance.extersion.SuperHitRate; _aLuckyHitRage = PlayerDatas.Instance.extersion.luckHitRate; _aLuckyHitRate = PlayerDatas.Instance.extersion.luckHitRate; _aZhuxianHurtPer = PlayerDatas.Instance.extersion.zhuxianHurtPer; _aZhuXianHitRate = PlayerDatas.Instance.extersion.zhuxianRate; _aMaxAtk = PlayerDatas.Instance.extersion.MAXATK; _aMinAtk = PlayerDatas.Instance.extersion.MINATK; _aIgnoreDefRate = PlayerDatas.Instance.extersion.IgnoreDefRate; @@ -408,7 +412,8 @@ _isMiss = IsMiss(_hitRate, _missRate); _isCrit = IsCrit(_aSuperHitRate); _isLucky = IsLucky(_aLuckyHitRage); _isLucky = IsLucky(_aLuckyHitRate); _isZhuxianHit = IsZhuXianHit(_aZhuXianHitRate); // 4014 必定触发 按位配置 1为必命中,2为必暴击,4为必会心一击 if (skill.skillInfo.effectValue.TryGetValue(4014, out _effectValue)) @@ -458,6 +463,7 @@ _aLuckyHit = _isLucky ? _luckyHit : 0; _aSuperHit = _isCrit ? _superHit : 0; // 4051 当发生会心伤害时, 增加会心一击伤害 if (_isLucky && skill.skillInfo.effectValue.TryGetValue(4051, out _effectValue)) @@ -495,7 +501,13 @@ if (attacker.ActorType == GameObjType.gotPlayer && target.ActorType == GameObjType.gotNPC) { //"PVE_1" :"int(max((((max((aMaxAtk if isLuckyHit else (aMinAtk + (aMaxAtk - aMinAtk)*rand))-dDef*max(1-aIgnoreDefRate/10000.0,0),1))*(1+(aLuckyHit/10000.0 if isLuckyHit else 0))+(aSuperHit if isSuperHit else 0)+ max(aIceAtkSuperHit*aIceAtk - dIceDef, 0))*(atkSkillPer+aSkillAtkRate/10000.0)*(1+aDamagePer/10000.0)+max(aFinalHurt+aOnlyFinalHurt-dFinalHurtReduce, 0)+atkSkillValue)*max(1+aFinalHurtPer/10000.0,1)+aNPCHurtAddPer/10000.0*(aMinAtk+aMaxAtk)/2.0,(aMinAtk+aMaxAtk)/2*0.05 + (aMinAtk+aMaxAtk)/2*0.1*rand))" //"PVE_1" :"int(max((((max((aMaxAtk if isLuckyHit else (aMinAtk + (aMaxAtk - aMinAtk)*rand)) // -dDef*max(1-aIgnoreDefRate/10000.0,0),1))*(1+(aLuckyHit/10000.0 if isLuckyHit else 0)) // +(aSuperHit if isSuperHit else 0)+ max(aIceAtkSuperHit*aIceAtk - dIceDef, 0)) // *(atkSkillPer+(aZhuxianHurtPer/10000.0 if isZhuxianHit else 0)+aSkillAtkRate/10000.0) // *(1+aDamagePer/10000.0)+max(aFinalHurt+aOnlyFinalHurt-dFinalHurtReduce, 0) // +atkSkillValue)*(1+dBeHurtPer/10000.0)*max(1+aFinalHurtPer/10000.0,1) // +aNPCHurtAddPer/10000.0*(aMinAtk+aMaxAtk)/2.0,(aMinAtk+aMaxAtk)/2*0.05 + (aMinAtk+aMaxAtk)/2*0.1*rand))" float _random = Random.Range(0f, 1f); _value1 = _aMinAtk + (_aMaxAtk - _aMinAtk) * _random; @@ -576,7 +588,7 @@ } #endif _value1 = (_aAtkSkillPer + _aSkillAtkRate * Constants.F_DELTA) * (1 + _aDamagePer * Constants.F_DELTA); _value1 = (_aAtkSkillPer + (_isZhuxianHit ? _aZhuxianHurtPer * Constants.F_DELTA : 0) + _aSkillAtkRate * Constants.F_DELTA) * (1 + _aDamagePer * Constants.F_DELTA); #if UNITY_EDITOR if (RuntimeLogUtility.s_HurtValueLog) @@ -649,7 +661,11 @@ hurtValue = (uint)Mathf.Max(_value1, _value3); } if (_isLucky) if (_isZhuxianHit) { attackType = (byte)HurtAttackType.ZhuXianAtk; } else if (_isLucky) { attackType = (byte)HurtAttackType.LuckyHit; } @@ -678,6 +694,11 @@ return Random.Range(0, 10000) < luckHitRate; } private static bool IsZhuXianHit(int zxHitRate) { return Random.Range(0, 10000) < zxHitRate; } private static float HpPer(GActor actor) { return actor.ActorInfo.RealHp * 1f / actor.ActorInfo.RealMaxHp; Fight/GameActor/GA_Hero.cs
@@ -107,7 +107,12 @@ { return; } #if UNITY_EDITOR if (base.SelectTarget is GActorPlayerBase && value is GActorPlayerBase) { Debug.LogFormat("<color=yellow>在当前选择目标是玩家的时候切换到了另一个玩家: {0} => {1}</color>", base.SelectTarget.ServerInstID, value.ServerInstID); } #endif IOtherSelectable _selectable = base.SelectTarget as IOtherSelectable; if (_selectable != null) { System/CrossServerOneVsOne/RankingWin.cs
@@ -204,13 +204,21 @@ if (CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].ZoneID == crossServerRewardModel.ZoneID) { var list = CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].SeasonList; for (int j = 0; j < list.Count; j++) int _Index = list.FindIndex(s => s.SeasonID == crossServerRewardModel.SeasonID); if (_Index == -1) { if (list[j].SeasonID > _SeasonID) for (int j = 0; j < list.Count; j++) { _SeasonID = list[j].SeasonID; if (list[j].SeasonID > _SeasonID) { _SeasonID = list[j].SeasonID; } } } else { _SeasonID = crossServerRewardModel.SeasonID; } } } crossServerRewardModel.SeasonID = _SeasonID; System/Dungeon/DungeonData.cs
@@ -103,6 +103,8 @@ public int winCnt; public int KillBOSS; public DungeonHurt[] hurtInfo; public int myHurt; public int myHurtEx; public string topName; public int topScore; public int isFullExp; @@ -127,6 +129,14 @@ return exp + (long)expPoint * Constants.ExpPointValue; } } public long myHurtTotal { get { return myHurt + (long)myHurtEx * Constants.ExpPointValue; } } } public struct DungeonNPCInfo System/Dungeon/DungeonRankBehaviour.cs
@@ -19,6 +19,7 @@ private object RegexPlayerDatas; DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } JadeDynastyBossModel jadeDynastyBossModel { get { return ModelCenter.Instance.GetModel<JadeDynastyBossModel>(); } } public void Init(int mapID) { @@ -35,7 +36,10 @@ private void UpdateMissionEvent() { if (currentDugeonId == 0) return; if (currentDugeonId == 0) { return; } switch (currentDugeonId) { case 31170: @@ -72,21 +76,46 @@ } break; } if (currentDugeonId == JadeDynastyBossModel.JADEDYNASTY_MAP) { DisplayAssistHurt(); } } private void SetMineInfo(int rank, long hurt) { if (mineRankText != null) switch (currentDugeonId) { mineRankText.text = rank == 0 ?Language.Get("FamilyMatchUnBeOnList") : StringUtility.Contact(rank, ":"); } if (mineNameText != null) { mineNameText.text = PlayerDatas.Instance.baseData.PlayerName; case JadeDynastyBossModel.JADEDYNASTY_MAP: break; default: if (mineRankText != null) { mineRankText.text = rank == 0 ? Language.Get("FamilyMatchUnBeOnList") : StringUtility.Contact(rank, ":"); } if (mineNameText != null) { mineNameText.text = PlayerDatas.Instance.baseData.PlayerName; } break; } mineValueText.text = UIHelper.ReplaceLargeNum((ulong)hurt); } private void DisplayAssistHurt() { if (jadeDynastyBossModel.IsAssistState()) { mineRankText.text = Language.Get("JadeDynastyBossDungeon9"); mineValueText.text = UIHelper.ReplaceLargeNum((ulong)model.mission.myHurtTotal); } else { mineRankText.text = Language.Get("DemonJar16"); } } private void SetDefault() { for (int i = 0; i < playerNameTexts.Count; i++) System/FairyAu/FairyFeastTransmitShow.cs
@@ -1,8 +1,8 @@ using System; using System.Collections; using System.Collections.Generic; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine; namespace Snxxz.UI { [XLua.Hotfix] @@ -410,7 +410,10 @@ } } PutOnExtraSecondary(job, extraSecondaryId); if (secondaryResId == 0 || (data.fashionClothesId != 0 && data.fashionSecondaryId > 0)) { PutOnExtraSecondary(job, extraSecondaryId); } } var wingsResId = 0; @@ -623,5 +626,5 @@ } } } } } System/GMCommand/GMInputWin.cs
@@ -91,6 +91,10 @@ { OnClickSendBtn(); } if (Input.GetKeyDown(KeyCode.P)) { WindowCenter.Instance.Open<JadeDynastyKnapSackWin>(); } } private void CreateCmdCell() System/JadeDynastyBoss/JadeDynastyBossKillRecord.cs
@@ -14,7 +14,7 @@ public void Display(DateTime time, string playerName) { m_KillTime.text = time.ToString("hh:mm:ss"); m_KillTime.text = time.ToString("HH:mm:ss"); m_PlayerName.text = UIHelper.ServerStringTrim(playerName); } } System/JadeDynastyBoss/JadeDynastyBossModel.cs
@@ -188,6 +188,17 @@ return true; } public bool IsAssistState() { var totalTimes = dungeonModel.GetTotalTimes(JADEDYNASTY_MAP); var enterTimes = dungeonModel.GetEnterTimes(JADEDYNASTY_MAP); if (enterTimes >= totalTimes && assistTimes > 0) { return true; } return false; } public List<int> GetJadeDynastyBosses() { List<int> list = new List<int>(); System/JadeDynastyBoss/JadeDynastyBossWin.cs
@@ -224,6 +224,10 @@ if (!alive) { var killRecords = findPreciousModel.GetBossKillRecords(model.selectBossId); if (killRecords != null) { killRecords.Sort(KillRecordSort); } m_ContainerExistRecord.gameObject.SetActive(killRecords != null && killRecords.Count > 0); m_ContainerNoneRecord.gameObject.SetActive(killRecords == null || killRecords.Count == 0); if (killRecords != null && killRecords.Count > 0) @@ -377,6 +381,11 @@ model.DisplayErrorTip(error); } } private int KillRecordSort(FindPreciousModel.BossKillRecord lhs, FindPreciousModel.BossKillRecord rhs) { return -lhs.killTime.CompareTo(rhs.killTime); } } } System/OpenServerActivity/LoginRewardModel.cs
@@ -108,23 +108,29 @@ { var dit = LoginAwardInfoDic[dayindex]; dit.DayIndex = dayindex; for (int j = 0; j < dit.ActionType.Length; j++) for (int j = 0; j < Dayinfo.ACount; j++) { if (dit.ActionType[j].TemplateID == Dayinfo.TaskList[0].TemplateID) var taskList = Dayinfo.TaskList[j]; int Index = dit.ActionType.FindIndex(s => s.TemplateID == taskList.TemplateID); if (Index != -1) { dit.ActionType[Index].CurTimes = taskList.CurTimes; dit.ActionType[Index].GotTimes = taskList.GotTimes; } else { ActionTypeClass ActionType = new ActionTypeClass(); ActionType.TemplateID = Dayinfo.TaskList[0].TemplateID; ActionType.CurTimes = Dayinfo.TaskList[0].CurTimes; ActionType.GotTimes = Dayinfo.TaskList[0].GotTimes; dit.ActionType[j] = ActionType; ActionType.TemplateID = taskList.TemplateID; ActionType.CurTimes = taskList.CurTimes; ActionType.GotTimes = taskList.GotTimes; dit.ActionType.Add(ActionType); } } LoginAwardInfoDic[dayindex] = dit; } else { loginAwardPlayerClass.ActionType = new ActionTypeClass[Dayinfo.ACount]; loginAwardPlayerClass.ActionType = new List<ActionTypeClass>(); for (int k = 0; k < Dayinfo.ACount; k++) { var Task = Dayinfo.TaskList[k]; @@ -132,8 +138,9 @@ ActionType.TemplateID = Task.TemplateID; ActionType.CurTimes = Task.CurTimes; ActionType.GotTimes = Task.GotTimes; LoginAwardInfoDic.Add(dayindex, loginAwardPlayerClass); loginAwardPlayerClass.ActionType.Add(ActionType); } LoginAwardInfoDic.Add(dayindex, loginAwardPlayerClass); } } SetRedPoint(); @@ -149,7 +156,7 @@ if (LoginAwardInfoDic.ContainsKey(Day)) { var loginAward = LoginAwardInfoDic[Day]; for (int i = 0; i < loginAward.ActionType.Length; i++) for (int i = 0; i < loginAward.ActionType.Count; i++) { var ActionType = loginAward.ActionType[i]; if (ID == ActionType.TemplateID) @@ -167,7 +174,7 @@ if (LoginAwardInfoDic.ContainsKey(Day)) { var loginAward = LoginAwardInfoDic[Day]; for (int i = 0; i < loginAward.ActionType.Length; i++) for (int i = 0; i < loginAward.ActionType.Count; i++) { var ActionType = loginAward.ActionType[i]; if (ID == ActionType.TemplateID) System/Realm/RealmBossShow.cs
@@ -272,7 +272,10 @@ } } PutOnExtraSecondary(job, extraSecondaryId); if (secondaryResId == 0 || (fashionClothesId != 0 && fashionSecondaryId > 0)) { PutOnExtraSecondary(job, extraSecondaryId); } } return clothesModel; System/Tip/PlayerDetailWin.cs
@@ -171,10 +171,6 @@ } break; case PlayerDetails.OpenType.Fairy: if (IsCrossServerPlayer) { return; } break; } UI/Common/UI3DShowHero.cs
@@ -90,12 +90,10 @@ } } if (secondaryResId == 0) if (secondaryResId != 0) { secondaryResId = jobConfig.BaseEquip[2]; PutOnSecondary(job, secondaryResId); } PutOnSecondary(job, secondaryResId); var extraSecondaryId = 0; if (data.job == 1) @@ -118,7 +116,10 @@ } } PutOnExtraSecondary(job, extraSecondaryId); if (secondaryResId == 0 || (data.fashionClothesId != 0 && data.fashionSecondaryId > 0)) { PutOnExtraSecondary(job, extraSecondaryId); } } var wingsResId = 0; Utility/EnumHelper.cs
@@ -599,6 +599,10 @@ CDBPlayerRefresh_SoulSplinters = 197,//聚魂-碎片 CDBPlayerRefresh_SoulCore = 198,//聚魂-核心环 CDBPlayerRefresh_Honor = 199, //# 荣誉值 CDBPlayerRefresh_ZhuxianRate = 200, //# 荣誉值 CDBPlayerRefresh_ZhuxianHurtPer = 201, //# 荣誉值 }; /** 物品加成类型 */ @@ -927,7 +931,7 @@ Dogz = 138, //神兽 AddPoint = 145,//加点 CrossServer = 157, //跨服天梯赛 CrossServerBoss=162, CrossServerBoss = 162, } //属性类型 public enum AttrEnum @@ -1227,9 +1231,9 @@ Def_RewardType_WishingWell = 16,// 许愿池奖励16 Def_RewardType_OpenFunc = 17,//功能预告奖励 Def_RewardType_TotalRecharge = 18,//累计充值奖励 Def_RewardType_IceLodeStar=19, //冰晶矿脉星级奖励19 Def_RewardType_WeekPartyAct=20, //领取周狂欢活动奖励20 Def_RewardType_WeekPartyPoint=21,// 领取周狂欢积分奖励21 Def_RewardType_IceLodeStar = 19, //冰晶矿脉星级奖励19 Def_RewardType_WeekPartyAct = 20, //领取周狂欢活动奖励20 Def_RewardType_WeekPartyPoint = 21,// 领取周狂欢积分奖励21 Def_RewardType_ActLoginAwardAct=22,// 领取登录奖励活动奖励22 @@ -1392,6 +1396,10 @@ Suppress, /**斩杀**/ ZhanSha, /** 诛仙一击 */ ZhuXianAtk, /** 终极斩杀 */ FinalKill, } public enum E_PlayerState