Core/NetworkPackage/DTCFile/ServerPack/H06_PlayerVsNPC/DTC0608_tagNPCDie.cs
@@ -17,7 +17,19 @@ string _content = string.Format("DTC0608_tagNPCDie => S:{0} 死亡. 死亡原因: {1}, 杀死它的是: {2}", vNetData.ObjID, vNetData.Reason, vNetData.KillerID); RuntimeLogUtility.AddLog_Blue(_content, (uint)vNetData.ObjID); #endif GActor _actor = GAMgr.Instance.GetBySID(vNetData.ObjID); GActor _actor = null; if (PersonalEnemy.m_SBindCDict.ContainsKey(vNetData.ObjID)) { _actor = GAMgr.Instance.GetBySID(PersonalEnemy.m_SBindCDict[vNetData.ObjID]); GAMgr.Instance.ServerDie(_actor.ServerInstID); _actor.Die(); GAMgr.Instance.DoDelayDie(_actor as GActorFight); return; } else { _actor = GAMgr.Instance.GetBySID(vNetData.ObjID); } if (_actor == null) { Core/ResModule/VideoLoader.cs
@@ -8,7 +8,18 @@ public static VideoClip Load(string name) { return Resources.Load<VideoClip>(name); #if UNITY_EDITOR if (Application.isEditor) { return UnityEditor.AssetDatabase.LoadAssetAtPath<VideoClip>(string.Format("Assets/Editor/Video/{0}.mp4", name)); } #endif #if UNITY_STANDALONE && !UNITY_EDITOR return Resources.Load<VideoClip>(name); #endif return null; } } Fight/Actor/Skill/AttackHandler.cs
@@ -187,6 +187,11 @@ { _dungeon.AddHeroHurt(hurtValue); } var _cnpc = target as GA_NpcClientFightNorm; if (_cnpc != null) { _cnpc.StartCantAtkedRotate(); } } else { @@ -202,6 +207,7 @@ else if (target is GA_NpcClientFightNorm) { var _cnpc = target as GA_NpcClientFightNorm; _cnpc.StartCantAtkedRotate(); if (_cnpc.NpcConfig.AIType == 198) { _doReduceHp = false; @@ -374,6 +380,7 @@ int _suppressValueRealmRate = 1; float _suppressFightPower = 0; float _suppressValueFP_0 = 0; float _superHitAdd = 0; #region 伤害替换 @@ -536,6 +543,51 @@ } } #region 4094,4507 增加暴击概率 if (skill.skillInfo.effectValue.TryGetValue(4094, out _effectValue)) { bool _vaild = true; if (_effectValue.value2 != 0) { if (!target.ActorInfo.status4012.ContainsKey((byte)_effectValue.value2)) { _vaild = false; } } if (_vaild) { _aSuperHitRate += _effectValue.value1; } } if (skill.skillInfo.effectValue.TryGetValue(4507, out _effectValue)) { bool _vaild = true; if (_effectValue.value2 == 1) { if (attacker.SelectTarget == null || attacker.SelectTarget.ServerInstID != target.ServerInstID) { _vaild = false; } } if (_effectValue.value3 == 0) { if (skill.skillInfo.config.FuncType != (int)E_SkillFuncType.NormalAttack) { _vaild = false; } } if (_vaild) { if (_vaild) { _aSuperHitRate += _effectValue.value1; } } } #endregion _isMiss = IsMiss(_hitRate, _missRate); _isCrit = IsCrit(_aSuperHitRate); _isLucky = IsLucky(_aLuckyHitRate); @@ -597,7 +649,55 @@ #if UNITY_EDITOR Debug.LogFormat("技能: {0} 计算伤害的时候发生重击, 暴击伤害翻倍: {1}", skill.id, _aSuperHit); #endif #region 4528,4083 增加重击伤害 if (skill.skillInfo.effectValue.TryGetValue(4528, out _effectValue)) { bool _vaild = true; if (_effectValue.value2 == 1) { if (attacker.SelectTarget == null || attacker.SelectTarget.ServerInstID != target.ServerInstID) { _vaild = false; } } if (_effectValue.value3 == 1) { if (skill.skillInfo.config.FuncType != (int)E_SkillFuncType.NormalAttack && skill.skillInfo.config.FuncType != (int)E_SkillFuncType.FaBaoActiveSkill) { _vaild = false; } } if (_vaild) { if (_vaild) { _superHitAdd += _effectValue.value1; } } } if (attacker.SkillMgr.TryGetPassiveEffectValue(4083, out _effectValue)) { bool _vaild = true; if (_effectValue.value2 == 1) { if (attacker.SelectTarget == null || attacker.SelectTarget.ServerInstID != target.ServerInstID) { _vaild = false; } } if (_vaild) { _superHitAdd += _effectValue.value1; } } #endregion } // 4051 当发生会心伤害时, 增加会心一击伤害 if (_isLucky @@ -611,7 +711,7 @@ || skill.skillInfo.config.HurtType == 0) { // 处理本身的技能 CalculateSkillEffect(attacker, target, skill.skillInfo, ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _aSuperHit, _isCrit); CalculateSkillEffect(attacker, target, skill.skillInfo, ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _superHitAdd, _isCrit); // 处理sp技能 List<SkillHelper.SkillInfo> _spSkillList = SkillHelper.Instance.GetSpSkill(skill.id); @@ -620,7 +720,7 @@ { for (int i = 0; i < _spSkillList.Count; ++i) { CalculateSkillEffect(attacker, target, _spSkillList[i], ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _aSuperHit, _isCrit); CalculateSkillEffect(attacker, target, _spSkillList[i], ref _aDamagePer, ref _aAtkSkillPer, ref _atkSkillValue, ref _aIceAtk, ref _aFinalHurt, ref _superHitAdd, _isCrit); } } } @@ -634,6 +734,8 @@ _aAtkSkillPer += (_per * Constants.F_DELTA); } } _aSuperHit *= (1 + _superHitAdd * Constants.F_DELTA); // -------------- 公式计算 -------------- // PVE @@ -743,6 +845,22 @@ } } SkillHelper.EffectValue _effectValue; if (_hero.SkillMgr.TryGetPassiveEffectValue(4081, out _effectValue)) { if (_effectValue.value2 == 1) { if (_hero.SelectTarget.ServerInstID == target.ServerInstID) { _rate += _effectValue.value1; } } else { _rate += _effectValue.value1; } } #if UNITY_EDITOR var _random = Random.Range(0, 10000); var _result = _random < _rate; @@ -779,25 +897,11 @@ ref int _atkSkillValue, ref int _aIceAtk, ref int _aFinalHurt, ref float _aSuperHit, ref float _aSuperHitAdd, bool _isCrit) { SkillHelper.EffectValue _effectValue; #region 伤害增加 // 4002 目标血量低于XX百分比提高伤害xx if (skillInfo.effectValue.TryGetValue(4002, out _effectValue)) { if (HpPer(target) < _effectValue.value2 * Constants.F_DELTA) { _aDamagePer += _effectValue.value1; #if UNITY_EDITOR if (RuntimeLogUtility.s_SkillEffectLog) { Debug.LogFormat("技能 {0} 触发了效果 {1} , aDamagePer 增加了 {2}", skillInfo.config.SkillID, 4002, _effectValue.value1); } #endif } } if (skillInfo.effectValue.TryGetValue(1062, out _effectValue)) { @@ -819,22 +923,119 @@ } } // 4003 目标处于XX状态提高伤害 _aDamagePer ??? if (skillInfo.effectValue.TryGetValue(4003, out _effectValue)) if (attacker is GA_Hero) { if (target.ActorInfo.status4012.ContainsKey((byte)_effectValue.value2) && target.ActorInfo.status4012[(byte)_effectValue.value2] > 0) if (attacker.SkillMgr.TryGetPassiveEffectValue(4086, out _effectValue)) { _aDamagePer += _effectValue.value1; #if UNITY_EDITOR if (RuntimeLogUtility.s_SkillEffectLog) bool _vaild = true; if (_effectValue.value3 == 1) { Debug.LogFormat("技能 {0} 触发了效果 {1} , aDamagePer 增加了 {2}", skillInfo.config.SkillID, 4003, _effectValue.value1); if (attacker.SelectTarget == null || attacker.SelectTarget.ServerInstID != target.ServerInstID) { _vaild = false; } } #endif if (_vaild) { int _limit = PlayerDatas.Instance.baseData.yinjiCount > _effectValue.value2 ? _effectValue.value2 : PlayerDatas.Instance.baseData.yinjiCount; _aAtkSkillPer += _limit * _effectValue.value1; } } if (attacker.SkillMgr.TryGetPassiveEffectValue(4087, out _effectValue)) { if (PlayerDatas.Instance.baseData.yinjiCount > _effectValue.value2) { _aAtkSkillPer += _effectValue.value1; } } if (attacker.SkillMgr.TryGetPassiveEffectValue(4088, out _effectValue)) { int _per = _effectValue.value1; int _needCount = _effectValue.value2; bool _valid = true; if (attacker.SkillMgr.TryGetPassiveEffectValue(4092, out _effectValue)) { if (_effectValue.value2 == 0) { if (PlayerDatas.Instance.baseData.yinjiCount != _needCount) { _valid = false; } } else if (_effectValue.value2 == 1) { if (PlayerDatas.Instance.baseData.yinjiCount == 0 || PlayerDatas.Instance.baseData.yinjiCount < _effectValue.value1) { _valid = false; } } } if (_valid) { _needCount = PlayerDatas.Instance.baseData.yinjiCount > _needCount ? _needCount : PlayerDatas.Instance.baseData.yinjiCount; _aAtkSkillPer += _per * _needCount; } } if (attacker.SkillMgr.TryGetPassiveEffectValue(4015, out _effectValue)) { if (target.ActorInfo.status4012.ContainsKey((byte)_effectValue.value2)) { uint _selfSID = _effectValue.value3 == 1 ? attacker.ServerInstID : 0; if (StatusMgr.Instance.IsBurning(target.ServerInstID, _selfSID)) { _aAtkSkillPer += _effectValue.value1; } } } if (StatusMgr.Instance.TryGetSkillEffectValue(attacker.ServerInstID, 4505, out _effectValue)) { if (target.ActorInfo.status4012.ContainsKey((byte)_effectValue.value2)) { uint _selfSID = _effectValue.value3 == 1 ? attacker.ServerInstID : 0; if (StatusMgr.Instance.IsBurning(target.ServerInstID, _selfSID)) { _aAtkSkillPer += _effectValue.value1; } } } if (attacker.SkillMgr.TryGetPassiveEffectValue(4098, out _effectValue)) { var _skillInfo = SkillHelper.Instance.Get(_effectValue.value2); if (_skillInfo != null) { SkillHelper.EffectValue _tmpEffectValue; if (_skillInfo.effectValue.TryGetValue(4012, out _tmpEffectValue)) { if (target.ActorInfo.status4012.ContainsKey((byte)_tmpEffectValue.value1)) { if (target.ActorInfo.GetStatusCount((byte)_tmpEffectValue.value1, attacker.ServerInstID) >= _effectValue.value3) { _aAtkSkillPer += _effectValue.value1; } } } } } if (attacker.SkillMgr.TryGetPassiveEffectValue(4096, out _effectValue)) { if (StatusMgr.Instance.IsExist(target.ServerInstID, _effectValue.value3)) { int _count = target.ActorInfo.GetStatusCount((byte)_effectValue.value2, attacker.ServerInstID); _aAtkSkillPer += _effectValue.value1 * _count; } } } // 4005 概率增加攻击(技能)伤害万分率 if (skillInfo.effectValue.TryGetValue(4005, out _effectValue)) @@ -896,8 +1097,7 @@ // 4015 目标处于XX状态提高技能伤害 if (skillInfo.effectValue.TryGetValue(4015, out _effectValue)) { if (target.ActorInfo.status4012.ContainsKey((byte)_effectValue.value2) && target.ActorInfo.status4012[(byte)_effectValue.value2] > 0) if (target.ActorInfo.GetStatusCount((byte)_effectValue.value2, attacker.ServerInstID) > 0) { _aAtkSkillPer += _effectValue.value1; @@ -908,19 +1108,6 @@ } #endif } } // 4024 攻击附加真实伤害百分比 if (skillInfo.effectValue.TryGetValue(4024, out _effectValue)) { _aIceAtk *= (int)((10000 + _effectValue.value1) * Constants.F_DELTA); #if UNITY_EDITOR if (RuntimeLogUtility.s_SkillEffectLog) { Debug.LogFormat("技能 {0} 触发了效果 {1} , _aIceAtk 增加了 {2}", skillInfo.config.SkillID, 4024, _aIceAtk * _effectValue.value1 * Constants.F_DELTA); } #endif } // 4025 攻击附加真实伤害 @@ -940,17 +1127,14 @@ if (StatusMgr.Instance.TryGetSkillEffectValue(attacker.ServerInstID, 4501, out _effectValue)) { int _rate = _effectValue.value2; SkillHelper.EffectValue _rateEffectValue; // 判断是否存在4030 有的话提高概率 if (StatusMgr.Instance.TryGetSkillEffectValue(attacker.ServerInstID, 4030, out _rateEffectValue)) // 基于目标状态 if (_effectValue.value3 != 0) { _rate += _rateEffectValue.value1; #if UNITY_EDITOR if (RuntimeLogUtility.s_SkillEffectLog) if (!target.ActorInfo.status4012.ContainsKey((byte)_effectValue.value3)) { Debug.LogFormat("技能 {0} 触发了效果 {1} , 增加了 4501 的概率", skillInfo.config.SkillID, 4030, _rateEffectValue.value1); _rate = 0; } #endif } if (Random.Range(0, 10000) < _rate) @@ -969,8 +1153,7 @@ // 4503 buff中攻击提高增加伤害,可附加目标处于XX状态 if (StatusMgr.Instance.TryGetSkillEffectValue(attacker.ServerInstID, 4503, out _effectValue)) { if (target.ActorInfo.status4012.ContainsKey((byte)_effectValue.value2) && target.ActorInfo.status4012[(byte)_effectValue.value2] > 0) if (target.ActorInfo.GetStatusCount((byte)_effectValue.value2, attacker.ServerInstID) > 0) { _aDamagePer += _effectValue.value1; @@ -1019,12 +1202,12 @@ // 是否可以执行 if (_condition && _isCrit) { _aSuperHit += (_aSuperHit * _effectValue.value1 * Constants.F_DELTA); _aSuperHitAdd += _effectValue.value1; #if UNITY_EDITOR if (RuntimeLogUtility.s_SkillEffectLog) { Debug.LogFormat("技能 {0} 触发了效果 {1} , _aSuperHit 增加了 {2}", skillInfo.config.SkillID, 4007, (_aSuperHit * _effectValue.value1 * Constants.F_DELTA)); Debug.LogFormat("技能 {0} 触发了效果 {1} , _aSuperHitAdd 增加了 {2}", skillInfo.config.SkillID, 4007, _effectValue.value1 * Constants.F_DELTA); } #endif } Fight/Actor/Skill/SkillManager.cs
@@ -5,6 +5,7 @@ { private Dictionary<int, Skill> m_SkillDict; private List<int> m_SkillList; private List<int> m_PassiveSkill; private uint m_OwnerID; @@ -39,6 +40,22 @@ m_OwnerID = sid; m_SkillDict = new Dictionary<int, Skill>(); m_SkillList = new List<int>(); m_PassiveSkill = new List<int>(); } public bool TryGetPassiveEffectValue(int id, out SkillHelper.EffectValue effectValue) { SkillHelper.SkillInfo _skill; foreach (var _id in m_PassiveSkill) { _skill = SkillHelper.Instance.Get(_id); if (_skill.effectValue.TryGetValue(id, out effectValue)) { return true; } } effectValue = default(SkillHelper.EffectValue); return false; } public void ResetAllCD() @@ -49,10 +66,10 @@ && _skill.skillInfo != null && _skill.skillInfo.config != null) { if ( Skill.RefreshCD != null) if (Skill.RefreshCD != null) { _skill.cd = 0; Skill.RefreshCD( _skill.id,0, _skill.skillInfo.config.CoolDownTime * Constants.F_GAMMA); Skill.RefreshCD(_skill.id, 0, _skill.skillInfo.config.CoolDownTime * Constants.F_GAMMA); } } } @@ -71,6 +88,13 @@ Skill _skill = new Skill(m_OwnerID, id); m_SkillDict[id] = _skill; m_SkillList.Add(id); if (_skill.skillInfo.config.FuncType == (int)E_SkillFuncType.FaBaoPassiveSkills) { if (!m_PassiveSkill.Contains(id)) { m_PassiveSkill.Add(id); } } } return m_SkillDict[id]; Fight/Actor/Status/StatusMgr.cs
@@ -82,7 +82,7 @@ private void OnServerPrepareOk() { if (!DTC0403_tagPlayerLoginLoadOK.neverLoginOk) if (DTC0403_tagPlayerLoginLoadOK.neverLoginOk) { ReleaseActor(PlayerDatas.Instance.baseData.PlayerID); ZhongJiDict.Clear(); @@ -98,13 +98,9 @@ SkillHelper.EffectValue _effectValue; if (SkillHelper.Instance.Get(h0605.SkillID).effectValue.TryGetValue(4012, out _effectValue)) { byte _count = 0; if (_actor.ActorInfo.status4012.ContainsKey((byte)_effectValue.value1)) { _count = _actor.ActorInfo.status4012[(byte)_effectValue.value1]; } int _count = _actor.ActorInfo.GetStatusCount((byte)_effectValue.value1, h0605.OwnerID); _count += 1; _actor.ActorInfo.status4012[(byte)_effectValue.value1] = _count; _actor.ActorInfo.status4012[(byte)_effectValue.value1][h0605.OwnerID] = _count; } } @@ -193,6 +189,10 @@ { onReceiveStatus(h0605.SkillID); } #if UNITY_EDITOR Debug.LogFormat("增加 {0} Buff: {1}", h0605.ObjID, h0605.SkillID); #endif } public bool CanCastSkill(uint sid) @@ -231,19 +231,19 @@ SkillHelper.EffectValue _effectValue; if (SkillHelper.Instance.Get(_list[i].h0605.SkillID).effectValue.TryGetValue(4012, out _effectValue)) { byte _count = 0; if (_actor.ActorInfo.status4012.TryGetValue((byte)_effectValue.value1, out _count)) { _count -= 1; } int _count = _actor.ActorInfo.GetStatusCount((byte)_effectValue.value1, objID); _count -= 1; if (_count < 0) { _count = 0; _actor.ActorInfo.status4012.Remove((byte)_effectValue.value1); if (_actor.ActorInfo.status4012[(byte)_effectValue.value1].ContainsKey(objID)) { _actor.ActorInfo.status4012[(byte)_effectValue.value1].Remove(objID); } } else { _actor.ActorInfo.status4012[(byte)_effectValue.value1] = _count; _actor.ActorInfo.status4012[(byte)_effectValue.value1][objID] = _count; } } } @@ -269,16 +269,20 @@ SkillHelper.EffectValue _effectValue; if (SkillHelper.Instance.Get(h0606.SkillID).effectValue.TryGetValue(4012, out _effectValue)) { byte _count = 0; if (_actor.ActorInfo.status4012.TryGetValue((byte)_effectValue.value1, out _count)) { _count -= 1; } int _count = _actor.ActorInfo.GetStatusCount((byte)_effectValue.value1, h0606.ObjID); _count -= 1; if (_count < 0) { _count = 0; if (_actor.ActorInfo.status4012[(byte)_effectValue.value1].ContainsKey(h0606.ObjID)) { _actor.ActorInfo.status4012[(byte)_effectValue.value1].Remove(h0606.ObjID); } } _actor.ActorInfo.status4012[(byte)_effectValue.value1] = _count; else { _actor.ActorInfo.status4012[(byte)_effectValue.value1][h0606.ObjID] = _count; } } } @@ -333,6 +337,9 @@ // PlayerDatas.Instance.ReCheckAttackTarget(); // } // } #if UNITY_EDITOR Debug.LogFormat("删除 {0} 的Buff: {1}", h0606.ObjID, h0606.SkillID); #endif } public void ReleaseActor(uint sid) @@ -353,6 +360,7 @@ m_StatusDict[sid].Clear(); m_StatusDict.Remove(sid); Debug.LogFormat("删除:{0} 所有Buff", sid); } if (m_OwnerList.Contains(sid)) @@ -708,4 +716,29 @@ return false; } public bool IsBurning(uint targetSID, uint attackSID = 0) { List<Status_Base> _list = null; if (m_StatusDict.TryGetValue(targetSID, out _list)) { for (int i = 0; i < _list.Count; ++i) { if (SkillHelper.Instance.Get(_list[i].h0605.SkillID).effectValue.ContainsKey(1043)) { if (attackSID > 0) { if (_list[i].h0605.ObjID == attackSID) { return true; } } else { return true; } } } } return false; } } Fight/ClientCollectUtility.cs
@@ -160,6 +160,8 @@ if (_model.CanCollectClientNpc(_npc.NpcConfig.NPCID)) { StartCollect(_npc); var _dir = MathUtility.ForwardXZ(_npc.Pos, _hero.Pos); _hero.Forward = _dir; } else { Fight/ClientDropItemUtility.cs
@@ -67,6 +67,8 @@ Release(_item); } } CheckAndRemoveOutdatedFakeDropInfo(); } public void ReleaseAll() @@ -132,6 +134,8 @@ { _time = 3f; } RecordFakeDrop(itemID, Time.time); DropItem.DropFake(itemID, m_DropPos, CameraController.Instance.CameraObject, _time); } @@ -214,4 +218,48 @@ DropNext(itemIds); } } List<FakeDropInfo> fakeDropInfos = new List<FakeDropInfo>(); void RecordFakeDrop(int itemId, float time) { fakeDropInfos.Add(new FakeDropInfo() { itemId = itemId, dropTime = time }); } public float GetFakeDropItemShowDelay(float itemId) { if (fakeDropInfos.IsNullOrEmpty()) { return 0f; } var info = fakeDropInfos.Find(x => { return x.itemId == itemId; }); if (info.itemId != 0 && info.dropTime + 2.5f > Time.time) { return info.dropTime + 2.5f - Time.time; } else { return 0f; } } void CheckAndRemoveOutdatedFakeDropInfo() { for (var i = fakeDropInfos.Count - 1; i >= 0; i--) { var info = fakeDropInfos[i]; if (Time.time - info.dropTime > 5f) { fakeDropInfos.RemoveAt(i); } } } public struct FakeDropInfo { public int itemId; public float dropTime; } } Fight/GameActor/GA_Hero.cs
@@ -97,14 +97,14 @@ #if UNITY_EDITOR // if (m_LockTarget is GA_Player && value != null && !(value is GA_Player)) // { if (value != null) { Debug.LogFormat("更换了锁定目标: {0} ", value.ServerInstID); } else { Debug.LogFormat("清空了锁定目标: null"); } // if (value != null) // { // Debug.LogFormat("更换了锁定目标: {0} ", value.ServerInstID); // } // else // { // Debug.LogFormat("清空了锁定目标: null"); // } // } #endif m_LockTarget = value; Fight/GameActor/GA_NpcClientFightBoss.cs
@@ -15,20 +15,13 @@ protected sealed override void InitAI() { if (NpcConfig.NPCID == 30902001) if (NpcConfig.AIType == 186)// 封魔坛boss { m_AIHandler = new AI_Boss_HYQ(this, BornPos); m_AIHandler = new AI_BossFMT(this, BornPos); } else { if (NpcConfig.AIType == 186)// 封魔坛boss { m_AIHandler = new AI_BossFMT(this, BornPos); } else { m_AIHandler = new AI_Npc_200(this, BornPos); } m_AIHandler = new AI_Npc_200(this, BornPos); } } Fight/GameActor/GActorInfo.cs
@@ -43,7 +43,29 @@ public int faction;// 阵营, 用来和主角判断是否在同个阵营 public uint horseItemID;// 坐骑ID public Vector2 serverBornPos;// 服务端坐标, 目前至对NPC有赋值, 玩家的没有赋值 public Dictionary<byte, byte> status4012 = new Dictionary<byte, byte>(); // buff给角色增加的状态 public Dictionary<byte, Dictionary<uint, int>> status4012 = new Dictionary<byte, Dictionary<uint, int>>(); // buff给角色增加的状态 public int GetStatusCount(byte status, uint sid = 0) { int _count = 0; if (status4012.ContainsKey(status)) { if (sid != 0) { if (status4012[status].ContainsKey(sid)) { _count = status4012[status][sid]; } } else { foreach (var _c in status4012[status].Values) { _count += _c; } } } return _count; } #endregion #region 血量 Fight/Stage/Dungeon/DungeonStage.cs
@@ -55,20 +55,20 @@ CameraController.Instance.ResetOriginal(); } WindowCenter.Instance.Open<MainInterfaceWin>(true); if (PlayerDatas.Instance.baseData.LV == 1 && !CreateRolePostProcessor.HasPlayMovie((int)PlayerDatas.Instance.baseData.PlayerID)) { WindowCenter.Instance.Close<MainInterfaceWin>(); CameraController.Instance.CameraObject.enabled = false; CreateRolePostProcessor.Begin(() => { CreateRolePostProcessor.RecordPlayMovie((int)PlayerDatas.Instance.baseData.PlayerID); WindowCenter.Instance.Open<MainInterfaceWin>(true); WindowCenter.Instance.Open<MainInterfaceWin>(false); var taskModel = ModelCenter.Instance.GetModel<TaskModel>(); taskModel.AutomaticTripToTask(taskModel.currentMission); }); } else { WindowCenter.Instance.Open<MainInterfaceWin>(true); } GA_Hero.forceAutoFight = false; System/CreateRolePostProcess/CreateRolePostProcessor.cs
@@ -42,12 +42,25 @@ { isSkiped = true; MoviePlayer.Instance.Stop(); PlayCameraAnimation(); } static void PlayMovie() { MoviePlayer.Instance.Play("CreateRoleMovie", PlayCameraAnimation); switch (Application.platform) { case RuntimePlatform.Android: case RuntimePlatform.IPhonePlayer: Handheld.PlayFullScreenMovie("CreateRoleMovie.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput, FullScreenMovieScalingMode.AspectFit); Clock.AlarmAfter(0.1f, () => { PlayCameraAnimation(); }); break; case RuntimePlatform.WindowsPlayer: MoviePlayer.Instance.Play("CreateRoleMovie", PlayCameraAnimation); break; case RuntimePlatform.WindowsEditor: case RuntimePlatform.OSXEditor: MoviePlayer.Instance.Play("CreateRoleMovie", PlayCameraAnimation); break; } } static void PlayCameraAnimation() System/FakeDungeon/FakeDemonJarDungeonStage.cs
@@ -259,7 +259,7 @@ private void CreateBoss() { boss = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightBoss>((uint)bossNpcId, E_ActorGroup.Enemy); boss.Pos = SCENE_CENTER; boss.Pos = boss.BornPos = SCENE_CENTER; boss.LockTargetSID = PlayerDatas.Instance.baseData.PlayerID; } System/ItemDrop/DropItem.cs
@@ -1,13 +1,13 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Snxxz.UI; using System; public class DropItem : HUDBehaviour { public static event Action<Vector3> onDropItemDisappear; public static DropItem Drop(int _id, Vector3 _position, Camera _camera) @@ -277,4 +277,11 @@ } } } public struct FakeDropInfo { public int itemId; public float dropTime; } } System/KnapSack/BetterItemGetBehaviour.cs
@@ -26,6 +26,7 @@ [SerializeField] Button m_Puton; [SerializeField] Button m_BetterEquipDetail; Clock clock; PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } } BetterEquipGetModel model { get { return ModelCenter.Instance.GetModel<BetterEquipGetModel>(); } } EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } } @@ -40,6 +41,11 @@ private void OnDisable() { if (clock != null) { Clock.Stop(clock); clock = null; } m_Close.RemoveAllListeners(); m_Puton.RemoveAllListeners(); m_BetterEquipDetail.RemoveAllListeners(); @@ -77,10 +83,33 @@ DrawBetterEquip(betterEquip); m_ContainerBetterEquip.gameObject.SetActive(true); var coolData = KnapsackTimeCDMgr.Instance.GetItemCoolById(model.currentEquipGuid); if (model.CheckIsAutoEquip(betterEquip) && coolData == null) var delayTime = ClientDropItemUtility.Instance.GetFakeDropItemShowDelay(betterEquip.itemId); if (delayTime > 0f) { KnapsackTimeCDMgr.Instance.Register(betterEquip.guid, betterEquip.itemId, model.autoEquipCoolTime); if (clock != null) { Clock.Stop(clock); clock = null; } m_ContainerBetterEquip.localScale = Vector3.zero; clock = Clock.AlarmAfter(delayTime, () => { m_ContainerBetterEquip.localScale = Vector3.one; var coolData = KnapsackTimeCDMgr.Instance.GetItemCoolById(model.currentEquipGuid); if (model.CheckIsAutoEquip(betterEquip) && coolData == null) { KnapsackTimeCDMgr.Instance.Register(betterEquip.guid, betterEquip.itemId, model.autoEquipCoolTime); } }); } else { var coolData = KnapsackTimeCDMgr.Instance.GetItemCoolById(model.currentEquipGuid); if (model.CheckIsAutoEquip(betterEquip) && coolData == null) { KnapsackTimeCDMgr.Instance.Register(betterEquip.guid, betterEquip.itemId, model.autoEquipCoolTime); } } } } @@ -110,7 +139,7 @@ WindowCenter.Instance.Close<MainInterfaceWin>(); equipModel.SelectSet(betterEquip.config.LV); WindowCenter.Instance.Open<RealmEquipWin>(); StartCoroutine(Co_Delay(model.currentEquipGuid)); StartCoroutine(Co_OpenRealmEquipDelay(model.currentEquipGuid)); } else { @@ -121,7 +150,7 @@ WindowCenter.Instance.Close<MainInterfaceWin>(); equipModel.SelectSet(betterEquip.config.LV); WindowCenter.Instance.Open<RealmEquipWin>(); StartCoroutine(Co_Delay(model.currentEquipGuid)); StartCoroutine(Co_OpenRealmEquipDelay(model.currentEquipGuid)); } else { @@ -157,7 +186,7 @@ UpdateCoolTime(betterModel.guid); } IEnumerator Co_Delay(string _guid) IEnumerator Co_OpenRealmEquipDelay(string _guid) { yield return null; yield return null; @@ -166,6 +195,7 @@ ItemTipUtility.Show(_guid); model.ReportConfirmBetterEquip(model.currentEquipGuid); } } } System/KnapSack/NewItemGetWin.cs
@@ -83,7 +83,7 @@ } while (model == null && newItemQueue.Count > 0); if (model != null) if (model != null && ClientDropItemUtility.Instance.GetFakeDropItemShowDelay(model.itemId) == 0f) { int itemId = model.itemId; var itemBehaviour = RequireBehaviour(); Utility/RuntimeLogUtility.cs
@@ -257,9 +257,11 @@ RuntimeLogUtility.s_ForceLuckHit = EditorGUILayout.Toggle("强制会心一击", RuntimeLogUtility.s_ForceLuckHit); RuntimeLogUtility.s_LogProcessInfo = EditorGUILayout.Toggle("输出AI流程控制", RuntimeLogUtility.s_LogProcessInfo); _triggerID = EditorGUILayout.IntField("NPCID", _triggerID); if (GUILayout.Button("创建PVP敌方")) { var _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightBoss>(20000, E_ActorGroup.Enemy); var _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightBoss>((uint)_triggerID, E_ActorGroup.Enemy); _npc.BornPos = _npc.Pos = PlayerDatas.Instance.hero.Pos; PersonalEnemy.Bind(_npc);