public void Upgrade()
        {
            if (RestDice.Count <= 0)
            {
                return;
            }
            model.CopySelf();
            DiceCardXmlInfo xml = model.XmlData;

            xml.DiceBehaviourList.Add(RestDice.Dequeue());
            typeof(BattleDiceCardModel).GetField("_xmlData", AccessTools.all).SetValue(model, xml);
        }
        public override void OnWaveStart()
        {
            base.OnWaveStart();
            RestDice = new Queue <DiceBehaviour>();
            DiceCardXmlInfo xml = ItemXmlDataList.instance.GetCardItem(18000021).Copy(true);

            foreach (DiceBehaviour dice in xml.DiceBehaviourList)
            {
                RestDice.Enqueue(dice);
            }
            xml.DiceBehaviourList.Clear();
            xml.DiceBehaviourList.Add(RestDice.Dequeue());
            model = BattleDiceCardModel.CreatePlayingCard(xml);
            this.owner.allyCardDetail.AddCardToHand(model);
            count = 0;
        }
 public override void OnRoundStart()
 {
     if (this.phase != ApocalypsePhase.Small || this._owner.allyCardDetail.GetAllDeck().Count <= 0)
     {
         return;
     }
     foreach (BattleDiceCardModel card in this._owner.allyCardDetail.GetAllDeck())
     {
         card.CopySelf();
         DiceCardXmlInfo xmlInfo = card.XmlData.Copy(true);
         DiceCardSpec    Spec    = xmlInfo.Spec.Copy();
         Spec.Ranged    = CardRange.FarArea;
         Spec.affection = CardAffection.Team;
         xmlInfo.Spec   = Spec;
         DiceBehaviour dice = new DiceBehaviour()
         {
             Min    = 0,
             Dice   = 0,
             Type   = BehaviourType.Atk,
             Detail = RandomUtil.SelectOne <BehaviourDetail>(new List <BehaviourDetail>()
             {
                 BehaviourDetail.Slash, BehaviourDetail.Hit, BehaviourDetail.Penetrate
             }),
             MotionDetail = MotionDetail.J,
             EffectRes    = "",
             Script       = "",
             ActionScript = "Final_ApcBird_PutDownArea",
             Desc         = ""
         };
         foreach (DiceBehaviour behaviour in xmlInfo.DiceBehaviourList)
         {
             dice.Min  += behaviour.Min;
             dice.Dice += behaviour.Dice;
         }
         xmlInfo.DiceBehaviourList = new List <DiceBehaviour>()
         {
             dice
         };
         typeof(BattleDiceCardModel).GetField("_xmlData", AccessTools.all).SetValue(card, xmlInfo);
         EmotionCardAbility_bossbird4.Summation.Add(card);
     }
 }
 public override void OnDrawCard()
 {
     base.OnDrawCard();
     for (int i = 1; i < this.bless + 1; i++)
     {
         DiceCardXmlInfo bless = ItemXmlDataList.instance.GetCardItem(1108401).Copy(true);
         bless.Script = "BlessingPlague";
         if (SearchEmotion(this._owner, "WhiteNight_Red_Enemy") != null)
         {
             bless.Script = "BlessingPlagueUpGraded";
         }
         int num = EmotionCardAbility_plaguedoctor1.WhiteNightClock[this._owner.UnitData] + i;
         bless.DiceBehaviourList[0].Dice = num;
         bless.DiceBehaviourList[0].Min  = num;
         BattleDiceCardModel card = BattleDiceCardModel.CreatePlayingCard(bless);
         card.temporary = true;
         List <BattleDiceCardModel> hand = typeof(BattleAllyCardDetail).GetField("_cardInHand", AccessTools.all).GetValue(this._owner.allyCardDetail) as List <BattleDiceCardModel>;
         hand.Add(card);
     }
 }
Esempio n. 5
0
        public override void OnStartBattle()
        {
            cnt = 0;
            if (this._owner.faction != Faction.Enemy)
            {
                return;
            }
            DiceCardXmlInfo           cardItem      = ItemXmlDataList.instance.GetCardItem(1106201);
            List <BattleDiceBehavior> behaviourList = new List <BattleDiceBehavior>();
            int num = 0;

            foreach (DiceBehaviour diceBehaviour2 in cardItem.DiceBehaviourList)
            {
                BattleDiceBehavior battleDiceBehavior = new BattleDiceBehavior
                {
                    behaviourInCard = diceBehaviour2
                };
                battleDiceBehavior.SetIndex(num++);
                behaviourList.Add(battleDiceBehavior);
            }
            this._owner.cardSlotDetail.keepCard.AddBehaviours(BattleDiceCardModel.CreatePlayingCard(cardItem), behaviourList);
        }
 public override void OnEndParrying(BattlePlayingCardDataInUnitModel curCard)
 {
     base.OnEndParrying(curCard);
     if (this._owner.faction != Faction.Player)
     {
         return;
     }
     if (this._owner.cardSlotDetail.keepCard.cardBehaviorQueue.Count <= 0)
     {
         DiceCardXmlInfo           cardItem      = ItemXmlDataList.instance.GetCardItem(1107401);
         List <BattleDiceBehavior> behaviourList = new List <BattleDiceBehavior>();
         int num = 0;
         foreach (DiceBehaviour diceBehaviour1 in cardItem.DiceBehaviourList)
         {
             BattleDiceBehavior battleDiceBehavior = new BattleDiceBehavior
             {
                 behaviourInCard = diceBehaviour1
             };
             battleDiceBehavior.SetIndex(num++);
             behaviourList.Add(battleDiceBehavior);
         }
         this._owner.cardSlotDetail.keepCard.AddBehaviours(BattleDiceCardModel.CreatePlayingCard(cardItem), behaviourList);
     }
 }
Esempio n. 7
0
        public override void OnSelectEmotion()
        {
            base.OnSelectEmotion();
            BattleEmotionCardModel Long  = SearchEmotion(this._owner, "ApocalypseBird_LongArm_Enemy");
            BattleEmotionCardModel Big   = SearchEmotion(this._owner, "ApocalypseBird_BigEye_Enemy");
            BattleEmotionCardModel Small = SearchEmotion(this._owner, "ApocalypseBird_SmallPeak_Enemy");

            if (Long != null)
            {
                foreach (EmotionCardAbilityBase ability in Long.GetAbilityList())
                {
                    MethodInfo destroy = ability.GetType().GetMethod("Destroy");
                    if (destroy != null)
                    {
                        try
                        {
                            destroy.Invoke(ability, new object[] { });
                        }
                        catch (Exception ex)
                        {
                            Debug.Error(ability.GetType().Name + "Destroy", ex);
                        }
                    }
                }
                this._owner.emotionDetail.PassiveList.Remove(Long);
                string             name    = RandomUtil.SelectOne <EmotionCardXmlInfo>(Harmony_Patch.emotion1).Name + "_Enemy";
                EmotionCardXmlInfo emotion = Harmony_Patch.enermy.Find((Predicate <EmotionCardXmlInfo>)(x => x.Name == name));
                this._owner.emotionDetail.ApplyEmotionCard(emotion);
            }
            if (Big != null)
            {
                foreach (EmotionCardAbilityBase ability in Big.GetAbilityList())
                {
                    MethodInfo destroy = ability.GetType().GetMethod("Destroy");
                    if (destroy != null)
                    {
                        try
                        {
                            destroy.Invoke(ability, new object[] { });
                        }
                        catch (Exception ex)
                        {
                            Debug.Error(ability.GetType().Name + "Destroy", ex);
                        }
                    }
                }
                this._owner.emotionDetail.PassiveList.Remove(Big);
                string             name    = RandomUtil.SelectOne <EmotionCardXmlInfo>(Harmony_Patch.emotion2).Name + "_Enemy";
                EmotionCardXmlInfo emotion = Harmony_Patch.enermy.Find((Predicate <EmotionCardXmlInfo>)(x => x.Name == name));
                this._owner.emotionDetail.ApplyEmotionCard(emotion);
            }
            if (Small != null)
            {
                foreach (EmotionCardAbilityBase ability in Small.GetAbilityList())
                {
                    MethodInfo destroy = ability.GetType().GetMethod("Destroy");
                    if (destroy != null)
                    {
                        try
                        {
                            destroy.Invoke(ability, new object[] { });
                        }
                        catch (Exception ex)
                        {
                            Debug.Error(ability.GetType().Name + "Destroy", ex);
                        }
                    }
                }
                this._owner.emotionDetail.PassiveList.Remove(Small);
                string             name    = RandomUtil.SelectOne <EmotionCardXmlInfo>(Harmony_Patch.emotion2).Name + "_Enemy";
                EmotionCardXmlInfo emotion = Harmony_Patch.enermy.Find((Predicate <EmotionCardXmlInfo>)(x => x.Name == name));
                this._owner.emotionDetail.ApplyEmotionCard(emotion);
            }
            SingletonBehavior <SoundEffectManager> .Instance.PlayClip("Creature/BossBird_Birth", false, 4f);

            this._aura = SingletonBehavior <DiceEffectManager> .Instance.CreateNewFXCreatureEffect("8_B/FX_IllusionCard_8_B_MonsterAura", 1f, _owner.view, _owner.view);

            this._owner.bufListDetail.AddBuf(new EmotionCardAbility_bossbird1.Longbird_Enemy());
            this._owner.bufListDetail.AddBuf(new EmotionCardAbility_bossbird2.Bigbird_Enemy());
            this._owner.bufListDetail.AddBuf(new EmotionCardAbility_bossbird3.Smallbird_Enemy());
            DiceCardXmlInfo bigbirdxml = ItemXmlDataList.instance.GetCardItem(910041).Copy(true);

            bigbirdxml.optionList.Clear();
            DiceCardSpec bigbirdspec = bigbirdxml.Spec.Copy();

            bigbirdspec.Cost    = 0;
            bigbirdxml.Spec     = bigbirdspec;
            bigbirdxml.Priority = 100;
            bigbirdxml.Keywords.Clear();
            BattleDiceCardModel BigBirdEgo = BattleDiceCardModel.CreatePlayingCard(bigbirdxml);

            Ego.Add(BigBirdEgo);
            DiceCardXmlInfo smallbirdxml = ItemXmlDataList.instance.GetCardItem(910043).Copy(true);

            smallbirdxml.optionList.Clear();
            DiceCardSpec smallbirdspec = smallbirdxml.Spec.Copy();

            smallbirdspec.Cost    = 0;
            smallbirdxml.Spec     = smallbirdspec;
            smallbirdxml.Priority = 100;
            smallbirdxml.Keywords.Clear();
            BattleDiceCardModel SmallBirdEgo = BattleDiceCardModel.CreatePlayingCard(smallbirdxml);

            Ego.Add(SmallBirdEgo);
            DiceCardXmlInfo longbirdxml = ItemXmlDataList.instance.GetCardItem(910042).Copy(true);

            longbirdxml.optionList.Clear();
            DiceCardSpec longbirdspec = longbirdxml.Spec.Copy();

            longbirdspec.Cost    = 0;
            longbirdxml.Spec     = longbirdspec;
            longbirdxml.Priority = 100;
            longbirdxml.Keywords.Clear();
            BattleDiceCardModel LongBirdEgo = BattleDiceCardModel.CreatePlayingCard(bigbirdxml);

            Ego.Add(LongBirdEgo);
            this._owner.allyCardDetail.AddCardToDeck(Ego);
            this._owner.allyCardDetail.Shuffle();
        }
        public override void OnStartBattle()
        {
            base.OnStartBattle();
            if (phase != ApocalypsePhase.Big || this._owner.allyCardDetail.GetAllDeck().Count <= 0)
            {
                return;
            }
            DiceCardXmlInfo xmldata = RandomUtil.SelectOne <BattleDiceCardModel>(this._owner.allyCardDetail.GetAllDeck()).XmlData.Copy(true);

            foreach (DiceBehaviour dice in xmldata.DiceBehaviourList)
            {
                dice.ActionScript = "Final_ApcBird_LaserArea";
                if (dice.Detail == BehaviourDetail.Evasion || dice.Detail == BehaviourDetail.Guard)
                {
                    dice.Detail = RandomUtil.SelectOne <BehaviourDetail>(new List <BehaviourDetail>()
                    {
                        BehaviourDetail.Slash, BehaviourDetail.Hit, BehaviourDetail.Penetrate
                    });
                }
            }
            BattleDiceCardModel EyeAtk  = BattleDiceCardModel.CreatePlayingCard(ItemXmlDataList.instance.GetCardItem(1107501));
            DiceCardXmlInfo     xmlinfo = typeof(BattleDiceCardModel).GetField("_xmlData", AccessTools.all).GetValue(EyeAtk) as DiceCardXmlInfo;

            xmlinfo.DiceBehaviourList = xmldata.DiceBehaviourList;
            typeof(BattleDiceCardModel).GetField("_xmlData", AccessTools.all).SetValue(EyeAtk, xmlinfo);
            BattleUnitModel target = RandomUtil.SelectOne <BattleUnitModel>(BattleObjectManager.instance.GetAliveList(Faction.Enemy));
            BattlePlayingCardDataInUnitModel EyeAoe = new BattlePlayingCardDataInUnitModel()
            {
                owner           = this._owner,
                card            = EyeAtk,
                cardAbility     = EyeAtk.CreateDiceCardSelfAbilityScript(),
                target          = target,
                targetSlotOrder = RandomUtil.Range(0, target.cardSlotDetail.cardAry.Count - 1),
                slotOrder       = RandomUtil.Range(0, this._owner.cardSlotDetail.cardAry.Count - 1)
            };
            List <BattleUnitModel> battleUnitModelList = BattleObjectManager.instance.GetAliveList(Faction.Enemy);

            battleUnitModelList.Remove(target);
            EyeAoe.subTargets = new List <BattlePlayingCardDataInUnitModel.SubTarget>();
            foreach (BattleUnitModel battleUnitModel in battleUnitModelList)
            {
                if (battleUnitModel != target && battleUnitModel.IsTargetable(this._owner))
                {
                    BattlePlayingCardSlotDetail cardSlotDetail = battleUnitModel.cardSlotDetail;
                    int num1;
                    if (cardSlotDetail == null)
                    {
                        num1 = 0;
                    }
                    else
                    {
                        int?count = cardSlotDetail.cardAry?.Count;
                        int num2  = 0;
                        num1 = count.GetValueOrDefault() > num2 & count.HasValue ? 1 : 0;
                    }
                    if (num1 != 0)
                    {
                        EyeAoe.subTargets.Add(new BattlePlayingCardDataInUnitModel.SubTarget()
                        {
                            target          = battleUnitModel,
                            targetSlotOrder = UnityEngine.Random.Range(0, battleUnitModel.speedDiceResult.Count)
                        });
                    }
                }
            }
            EyeAoe.ResetExcludedDices();
            EyeAoe.ResetCardQueueWithoutStandby();
            List <BattlePlayingCardDataInUnitModel> cardlist = typeof(StageController).GetField("_allCardList", AccessTools.all).GetValue(Singleton <StageController> .Instance) as List <BattlePlayingCardDataInUnitModel>;

            cardlist.Add(EyeAoe);
        }