Commit 8fbad045 authored by J114514's avatar J114514

1.增加盖卡发动的专属语音

2.增加上级召唤语音
3.专属击败特效展示时不再展示通用击败特效
parent c0bd334c
...@@ -83,6 +83,8 @@ namespace MDPro3.Duel ...@@ -83,6 +83,8 @@ namespace MDPro3.Duel
public List<PlaceSelector> places = new(); public List<PlaceSelector> places = new();
private DuelFinalBlow duelFinalBlow; private DuelFinalBlow duelFinalBlow;
private bool playingExFinalBatEffect = false;
#endregion #endregion
#region Public #region Public
...@@ -2107,6 +2109,7 @@ namespace MDPro3.Duel ...@@ -2107,6 +2109,7 @@ namespace MDPro3.Duel
if (returnValue == FinalAttackType.Normal) if (returnValue == FinalAttackType.Normal)
return false; return false;
await AnimationFinalAttackAsync(returnValue, attackCard, attackedPosition); await AnimationFinalAttackAsync(returnValue, attackCard, attackedPosition);
return true; return true;
} }
...@@ -2123,6 +2126,8 @@ namespace MDPro3.Duel ...@@ -2123,6 +2126,8 @@ namespace MDPro3.Duel
DOTween.To(() => Program.instance.TimeScale, x => Program.instance.TimeScale = x, 1f, 0.85f).SetEase(Ease.InQuad); DOTween.To(() => Program.instance.TimeScale, x => Program.instance.TimeScale = x, 1f, 0.85f).SetEase(Ease.InQuad);
#endif #endif
if (!playingExFinalBatEffect)
{
if (life0 <= 0) if (life0 <= 0)
{ {
var hitObj = ABLoader.LoadMasterDuelGameObject("fxp_dithit_fin_near_001"); var hitObj = ABLoader.LoadMasterDuelGameObject("fxp_dithit_fin_near_001");
...@@ -2137,6 +2142,8 @@ namespace MDPro3.Duel ...@@ -2137,6 +2142,8 @@ namespace MDPro3.Duel
} }
} }
}
public void ReleaseTurnObjects() public void ReleaseTurnObjects()
{ {
foreach(var go in turnEndDeleteObjects) foreach(var go in turnEndDeleteObjects)
...@@ -2561,6 +2568,7 @@ namespace MDPro3.Duel ...@@ -2561,6 +2568,7 @@ namespace MDPro3.Duel
{ {
if (type == FinalAttackType.Normal) if (type == FinalAttackType.Normal)
return; return;
playingExFinalBatEffect = true;
Sequence sequence; Sequence sequence;
if (type == FinalAttackType.BlueEyes) if (type == FinalAttackType.BlueEyes)
...@@ -2577,6 +2585,7 @@ namespace MDPro3.Duel ...@@ -2577,6 +2585,7 @@ namespace MDPro3.Duel
sequence = await AnimationFinalAttack_Obelisk(attackCard, attackedPosition); sequence = await AnimationFinalAttack_Obelisk(attackCard, attackedPosition);
await sequence.WaitAsync(); await sequence.WaitAsync();
playingExFinalBatEffect = false;
} }
private async UniTask<Sequence> AnimationFinalAttack_BlueEyes(GameCard attackCard, Vector3 attackedPosition) private async UniTask<Sequence> AnimationFinalAttack_BlueEyes(GameCard attackCard, Vector3 attackedPosition)
......
...@@ -1321,6 +1321,20 @@ namespace MDPro3.Duel ...@@ -1321,6 +1321,20 @@ namespace MDPro3.Duel
var isFinalAttack = duelBGManager.IsFinalBlow(); var isFinalAttack = duelBGManager.IsFinalBlow();
duelBGManager.HideAttackLine(); duelBGManager.HideAttackLine();
duelBGManager.HideDuelFinalBlowText(); duelBGManager.HideDuelFinalBlowText();
if (!isFinalAttack&&attackCard!=null&&attackedCard!=null&&attackedCard.p.InPosition(CardPosition.Attack))
{
var diff = attackCard.GetData().Attack - attackedCard.GetData().Attack;
if (attackCard.p.InMyControl())
{
if (diff >= life1)
isFinalAttack = true;
}
else
{
if (diff >= life0)
isFinalAttack = true;
}
}
if (isFinalAttack && (await duelBGManager.NeedSpecialFinalAttackAsync(attackCard, attackedPosition))) if (isFinalAttack && (await duelBGManager.NeedSpecialFinalAttackAsync(attackCard, attackedPosition)))
return; return;
......
...@@ -277,7 +277,7 @@ namespace MDPro3.Duel ...@@ -277,7 +277,7 @@ namespace MDPro3.Duel
if(aloneVoiceData.Count > 0) if(aloneVoiceData.Count > 0)
{ {
UniTask.Create(async () => _ = UniTask.Create(async () =>
{ {
Core.GetUI<MDPro3.UI.ServantUI.OcgCoreUI>().OnNor(); Core.GetUI<MDPro3.UI.ServantUI.OcgCoreUI>().OnNor();
var voiceTask = PlayAloneVoiceAsync(aloneVoiceData); var voiceTask = PlayAloneVoiceAsync(aloneVoiceData);
...@@ -460,6 +460,19 @@ namespace MDPro3.Duel ...@@ -460,6 +460,19 @@ namespace MDPro3.Duel
if (NeedBeforeCardEffect(gps.InMyControl())) if (NeedBeforeCardEffect(gps.InMyControl()))
voiceData.Add(GetBeforeCardEffectData(target, gps.InMyControl())); voiceData.Add(GetBeforeCardEffectData(target, gps.InMyControl()));
var card = Core.GCS_Get(gps);
if (card != null)
{
var spdata = GetVoiceByCard(target, target.MainMagicTrap, card.GetData().Id, 0, gps.InMyControl());
if (spdata.name != string.Empty)
{
ignoreNextChaining = true;
voiceData.Add(spdata);
return UniTask.CompletedTask;
}
}
var data = new VoiceData(); var data = new VoiceData();
data.name = GetVoiceBySubCategory(target.CardEffect, (int)CardEffectSub.Reverse, (int)CardEffectSub.Reverse, 0); data.name = GetVoiceBySubCategory(target.CardEffect, (int)CardEffectSub.Reverse, (int)CardEffectSub.Reverse, 0);
data.num = GetVoiceNum(target, data.name); data.num = GetVoiceNum(target, data.name);
...@@ -477,6 +490,8 @@ namespace MDPro3.Duel ...@@ -477,6 +490,8 @@ namespace MDPro3.Duel
data2.delay = 0f; data2.delay = 0f;
voiceData.Add(data2); voiceData.Add(data2);
ignoreNextChaining = true; ignoreNextChaining = true;
return UniTask.CompletedTask; return UniTask.CompletedTask;
...@@ -507,6 +522,7 @@ namespace MDPro3.Duel ...@@ -507,6 +522,7 @@ namespace MDPro3.Duel
var patternIndex = 0; var patternIndex = 0;
var fromHand = false; var fromHand = false;
var isMe = to.InMyControl(); var isMe = to.InMyControl();
var advance = lastVoiceIsRelease;
if ((reason & (uint)CardReason.RELEASE) > 0 if ((reason & (uint)CardReason.RELEASE) > 0
&& card.GetData().HasType(CardType.Monster)) && card.GetData().HasType(CardType.Monster))
...@@ -517,6 +533,7 @@ namespace MDPro3.Duel ...@@ -517,6 +533,7 @@ namespace MDPro3.Duel
subCategory = (int)SummonSub.Release; subCategory = (int)SummonSub.Release;
subInCase = subCategory; subInCase = subCategory;
lastVoiceIsRelease = true; lastVoiceIsRelease = true;
} }
else else
lastVoiceIsRelease = false; lastVoiceIsRelease = false;
...@@ -526,6 +543,10 @@ namespace MDPro3.Duel ...@@ -526,6 +543,10 @@ namespace MDPro3.Duel
code = nextPack.Data.reader.ReadInt32(); code = nextPack.Data.reader.ReadInt32();
category = (int)Category.Summon; category = (int)Category.Summon;
subCategory = (int)SummonSub.Normal; subCategory = (int)SummonSub.Normal;
if (advance || OcgCore.materialCards.Count > 0)
{
subCategory = (int)SummonSub.Advance;
}
isMe = from.controller == 0; isMe = from.controller == 0;
var targetDataT = isMe ? heroVoices : rivalVoices; var targetDataT = isMe ? heroVoices : rivalVoices;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment