Commit 8fbad045 authored by J114514's avatar J114514

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

2.增加上级召唤语音
3.专属击败特效展示时不再展示通用击败特效
parent c0bd334c
......@@ -83,6 +83,8 @@ namespace MDPro3.Duel
public List<PlaceSelector> places = new();
private DuelFinalBlow duelFinalBlow;
private bool playingExFinalBatEffect = false;
#endregion
#region Public
......@@ -2107,6 +2109,7 @@ namespace MDPro3.Duel
if (returnValue == FinalAttackType.Normal)
return false;
await AnimationFinalAttackAsync(returnValue, attackCard, attackedPosition);
return true;
}
......@@ -2123,18 +2126,22 @@ namespace MDPro3.Duel
DOTween.To(() => Program.instance.TimeScale, x => Program.instance.TimeScale = x, 1f, 0.85f).SetEase(Ease.InQuad);
#endif
if (life0 <= 0)
if (!playingExFinalBatEffect)
{
var hitObj = ABLoader.LoadMasterDuelGameObject("fxp_dithit_fin_near_001");
hitObj.transform.position = new Vector3(0, 15, -25);
UnityEngine.Object.Destroy(hitObj, 10);
}
if (life1 <= 0)
{
var hitObj = ABLoader.LoadMasterDuelGameObject("fxp_dithit_fin_far_001");
hitObj.transform.position = new Vector3(0, 15, 25);
UnityEngine.Object.Destroy(hitObj, 10);
if (life0 <= 0)
{
var hitObj = ABLoader.LoadMasterDuelGameObject("fxp_dithit_fin_near_001");
hitObj.transform.position = new Vector3(0, 15, -25);
UnityEngine.Object.Destroy(hitObj, 10);
}
if (life1 <= 0)
{
var hitObj = ABLoader.LoadMasterDuelGameObject("fxp_dithit_fin_far_001");
hitObj.transform.position = new Vector3(0, 15, 25);
UnityEngine.Object.Destroy(hitObj, 10);
}
}
}
public void ReleaseTurnObjects()
......@@ -2561,6 +2568,7 @@ namespace MDPro3.Duel
{
if (type == FinalAttackType.Normal)
return;
playingExFinalBatEffect = true;
Sequence sequence;
if (type == FinalAttackType.BlueEyes)
......@@ -2577,6 +2585,7 @@ namespace MDPro3.Duel
sequence = await AnimationFinalAttack_Obelisk(attackCard, attackedPosition);
await sequence.WaitAsync();
playingExFinalBatEffect = false;
}
private async UniTask<Sequence> AnimationFinalAttack_BlueEyes(GameCard attackCard, Vector3 attackedPosition)
......
......@@ -1321,6 +1321,20 @@ namespace MDPro3.Duel
var isFinalAttack = duelBGManager.IsFinalBlow();
duelBGManager.HideAttackLine();
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)))
return;
......
......@@ -277,7 +277,7 @@ namespace MDPro3.Duel
if(aloneVoiceData.Count > 0)
{
UniTask.Create(async () =>
_ = UniTask.Create(async () =>
{
Core.GetUI<MDPro3.UI.ServantUI.OcgCoreUI>().OnNor();
var voiceTask = PlayAloneVoiceAsync(aloneVoiceData);
......@@ -460,6 +460,19 @@ namespace MDPro3.Duel
if (NeedBeforeCardEffect(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();
data.name = GetVoiceBySubCategory(target.CardEffect, (int)CardEffectSub.Reverse, (int)CardEffectSub.Reverse, 0);
data.num = GetVoiceNum(target, data.name);
......@@ -477,6 +490,8 @@ namespace MDPro3.Duel
data2.delay = 0f;
voiceData.Add(data2);
ignoreNextChaining = true;
return UniTask.CompletedTask;
......@@ -507,6 +522,7 @@ namespace MDPro3.Duel
var patternIndex = 0;
var fromHand = false;
var isMe = to.InMyControl();
var advance = lastVoiceIsRelease;
if ((reason & (uint)CardReason.RELEASE) > 0
&& card.GetData().HasType(CardType.Monster))
......@@ -517,6 +533,7 @@ namespace MDPro3.Duel
subCategory = (int)SummonSub.Release;
subInCase = subCategory;
lastVoiceIsRelease = true;
}
else
lastVoiceIsRelease = false;
......@@ -526,6 +543,10 @@ namespace MDPro3.Duel
code = nextPack.Data.reader.ReadInt32();
category = (int)Category.Summon;
subCategory = (int)SummonSub.Normal;
if (advance || OcgCore.materialCards.Count > 0)
{
subCategory = (int)SummonSub.Advance;
}
isMe = from.controller == 0;
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