/// <summary> /// 当所有信息齐后进行 /// </summary> void RealFunction() { //如果当前怪兽的状态是里侧表示,则进行反转召唤 if (calledMonster.GetCardGameState() == CardGameState.Back) { callMonsterType = CallMonsterType.Flip; calledMonster.SetCardGameState(cardGameState); calledMonster.SetChangeAttackOrDefenseNumber(0); calledMonster.GetDuelCardScript().SetOwner(ownerPlayer); CheckCardCanChainLaunch(); return; } int monsterLevel = calledMonster.GetLevel(); //先判断是否可以直接进行召唤 if (monsterLevel <= DuelRuleManager.GetCallMonsterWithoutSacrificeLevelUpperLimit()) { int index = CallMonster(); calledMonster.GetDuelCardScript().SetOwner(ownerPlayer); ownerPlayer.GetOpponentPlayer().CallMonsterNotify(calledMonster.GetID(), CallType.Normal, CardGameState.Hand, cardGameState, index); CheckCardCanChainLaunch(); } else//使用祭品召唤 { if (ownerPlayer.GetCanBeSacrificeMonsterNumber() >= calledMonster.NeedSacrificeMonsterNumer()) { callMonsterType = CallMonsterType.Sacrifice; TrySacrificeCall(); } } }
/// <summary> /// 召唤怪兽 /// </summary> int CallMonster() { int index = 0; for (; index < DuelRuleManager.GetMonsterAreaNumber(); index++) { if (ownerPlayer.GetMonsterCardArea()[index] == null) { ownerPlayer.GetMonsterCardArea()[index] = calledMonster; break; } } callMonsterType = CallMonsterType.Normal; calledMonster.AddContent("monsterCardAreaIndex", index); if (calledMonster.GetCardGameState() == CardGameState.Tomb) { calledMonster.GetDuelCardScript().GetOwner().GetTombCards().Remove(calledMonster); } else if (calledMonster.GetCardGameState() == CardGameState.Hand) { calledMonster.GetDuelCardScript().GetOwner().GetHandCards().Remove(calledMonster); } calledMonster.SetCardGameState(cardGameState, index); ownerPlayer.SetNormalCallNumber(ownerPlayer.GetNormalCallNumber() - 1); return(index); }