From dc7922d80c1d133b6261b8af1d521567d2c0a35d Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 30 十月 2025 16:51:39 +0800
Subject: [PATCH] Merge branch 'master' of http://mobile.secondworld.net.cn:10010/r/Project_SG_scripts
---
Main/System/Battle/BattleObject/BattleObject.cs | 94 ++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 80 insertions(+), 14 deletions(-)
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index ec4ec52..f868dee 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -87,6 +87,8 @@
buffMgr = new BattleObjectBuffMgr();
buffMgr.Init(this);
+ buffMgr.onIsControlChanged += OnControledChange;
+
layerMgr = new BattleObjectLayerMgr();
layerMgr.Init(this);
@@ -127,6 +129,9 @@
motionBase.Release();
motionBase = null;
+ buffMgr.onIsControlChanged -= OnControledChange;
+ buffMgr.Release();
+ buffMgr = null;
teamHero = null;
ObjID = 0;
@@ -134,6 +139,24 @@
{
GameObject.DestroyImmediate(heroGo);
heroGo = null;
+ }
+ }
+
+ // 鏈夊彉鍖栦簡鎵嶄細璋冪敤杩欎釜鍑芥暟
+ private void OnControledChange(int groupType, bool value)
+ {
+ // 杩欓噷鏄彈鍒扮‖鎺ф椂鍊� 闇�瑕佽〃鐜扮殑鍔ㄧ敾
+ if (groupType == BattleConst.HardControlGroup)
+ {
+ // 浠庢病琚‖鎺у埌琚‖鎺�
+ if (value)
+ {
+ motionBase.SetControledAnimation();
+ }
+ else
+ {
+ motionBase.CancelControledAnimation();
+ }
}
}
@@ -268,14 +291,63 @@
return true;
}
- public virtual void Hurt(List<long> damageValues, long _totalDamage, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig, bool playAnimation = true)
+ public virtual void Hurt(List<long> damageValues, long _totalDamage,
+ HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig, int hitIndex,
+ BattleDrops battleDrops, HB422_tagMCTurnFightObjDead deadPack)
{
- BattleDmgInfo dmgInfo = PopDamage(damageValues, _totalDamage, hurt, skillConfig);
+ bool isLastHit = hitIndex >= skillConfig.DamageDivide.Length - 1;
+ bool firstHit = hitIndex == 0;
+ BattleDmgInfo dmgInfo = PopDamage(damageValues, _totalDamage, hurt, skillConfig, isLastHit);
- if ((dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsRealdamage()) && playAnimation)
+
+ // 杩欓噷
+ if (dmgInfo.IsType(DamageType.Dodge) && !buffMgr.isControled[BattleConst.HardControlGroup])
{
- motionBase.PlayAnimation(MotionName.hit, false);
+ if (isLastHit)
+ {
+ DodgeFinishAction dodgeFinish = new DodgeFinishAction(battleField, this);
+ battleField.recordPlayer.InsertRecord(dodgeFinish);
+ }
+
+ if (firstHit)
+ {
+ OnDodgeBegin();
+ }
}
+
+
+
+ bool isFatalAttack = (null != deadPack) && isLastHit;
+
+ if (isFatalAttack)
+ {
+ if (null != battleDrops)
+ {
+ PushDropItems(battleDrops);
+ }
+ battleField.OnObjsDead(new List<HB422_tagMCTurnFightObjDead>() { deadPack });
+
+ }
+ else
+ {
+ if (dmgInfo.IsType(DamageType.Block))
+ {
+ battleField.battleEffectMgr.PlayEffect(this, 19999, heroRectTrans, Camp);
+ }
+ else
+ {
+ if ((dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsRealdamage()))
+ {
+ if (!buffMgr.isControled[BattleConst.HardControlGroup])
+ {
+ motionBase.PlayAnimation(MotionName.hit, false);
+ }
+ }
+ }
+
+ }
+
+
}
public void SuckHp(uint suckHP, SkillConfig skillConfig)
@@ -289,7 +361,7 @@
}
- const float pingpongTime = 0.2f;
+ const float pingpongTime = 0.4f;
// 闂伩寮�濮�
public virtual void OnDodgeBegin()
{
@@ -350,16 +422,9 @@
}
// 浼ゅ杩樿鐪� 鏄惁闂伩 鏆村嚮 and so on 闇�瑕佹湁涓�涓狣amageType 鏈嶅姟鍣ㄥ簲璇ヤ細缁�
- protected virtual BattleDmgInfo PopDamage(List<long> damageValues, long _totalDamage, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig)
+ protected virtual BattleDmgInfo PopDamage(List<long> damageValues, long _totalDamage, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt, SkillConfig skillConfig, bool isLastHit)
{
- BattleDmgInfo battleDmgInfo = new BattleDmgInfo(battleField.guid, damageValues, this, hurt, skillConfig);
-
- if (battleDmgInfo.IsType(DamageType.Dodge))
- {
- OnDodgeBegin();
- DodgeFinishAction dodgeFinish = new DodgeFinishAction(battleField, this);
- battleField.recordPlayer.InsertRecord(dodgeFinish);
- }
+ BattleDmgInfo battleDmgInfo = new BattleDmgInfo(battleField.guid, damageValues, this, hurt, skillConfig, isLastHit);
int currentHurtHp = 0;
for (int i = 0; i < damageValues.Count; i++)
@@ -439,6 +504,7 @@
public void SetSpeedRatio(float ratio)
{
motionBase.SetSpeedRatio(ratio);
+ heroInfoBar.SetSpeedRatio(ratio);
}
--
Gitblit v1.8.0