コード例 #1
0
ファイル: THHCard.cs プロジェクト: minsuika/TouhouHeartstone
        public static Card[] getAvaliableTargets(this Card card, THHGame game)
        {
            IActiveEffect effect = card.define.getEffectOn <THHPlayer.ActiveEventArg>(game.triggers) as IActiveEffect;

            if (effect == null)
            {
                return(null);
            }
            List <Card> targetList = new List <Card>();

            foreach (THHPlayer player in game.players)
            {
                if (effect.checkTarget(game, null, card, new object[] { player.master }))
                {
                    targetList.Add(player.master);
                }
                foreach (Card servant in player.field)
                {
                    if (effect.checkTarget(game, null, card, new object[] { servant }))
                    {
                        targetList.Add(servant);
                    }
                }
            }
            return(targetList.ToArray());
        }
コード例 #2
0
ファイル: Magic.cs プロジェクト: savaatti/smapi-mod-dump
        private static void onNetworkCast(IncomingMessage msg)
        {
            IActiveEffect effect = Game1.getFarmer(msg.FarmerID).castSpell(msg.Reader.ReadString(), msg.Reader.ReadInt32(), msg.Reader.ReadInt32(), msg.Reader.ReadInt32());

            if (effect != null)
            {
                activeEffects.Add(effect);
            }
        }
コード例 #3
0
ファイル: Magic.cs プロジェクト: savaatti/smapi-mod-dump
 /// <summary>Raised after the game state is updated (≈60 times per second).</summary>
 /// <param name="sender">The event sender.</param>
 /// <param name="e">The event arguments.</param>
 private static void onUpdateTicked(object sender, UpdateTickedEventArgs e)
 {
     // update active effects
     for (int i = activeEffects.Count - 1; i >= 0; i--)
     {
         IActiveEffect effect = activeEffects[i];
         if (!effect.Update(e))
         {
             activeEffects.RemoveAt(i);
         }
     }
 }
コード例 #4
0
ファイル: THHCard.cs プロジェクト: minsuika/TouhouHeartstone
        public static bool isValidTarget(this Card card, THHGame game, Card target)
        {
            IActiveEffect effect = card.define.getEffectOn <THHPlayer.ActiveEventArg>(game.triggers) as IActiveEffect;

            if (effect == null)
            {
                return(false);
            }
            if (target.isStealth())
            {
                return(false);
            }
            return(effect.checkTarget(game, null, card, new object[] { target }));
        }
コード例 #5
0
ファイル: THHCard.cs プロジェクト: hbn2020/TouhouHeartstone
        public static async Task activeEffect(this Card card, THHGame game, THHPlayer player, Card[] targets)
        {
            ITriggerEffect triggerEffect = card.define.getEffectOn <THHPlayer.ActiveEventArg>(game.triggers);

            if (triggerEffect != null)
            {
                await triggerEffect.execute(game, card, new object[] { new THHPlayer.ActiveEventArg(player, card, targets) }, targets);
            }
            IActiveEffect activeEffect = card.define.getActiveEffect();

            if (activeEffect != null)
            {
                await activeEffect.execute(game, card, new object[] { new THHPlayer.ActiveEventArg(player, card, targets) }, targets);
            }
        }
コード例 #6
0
ファイル: Magic.cs プロジェクト: Pathoschild/smapi-mod-dump
        private static void OnNetworkCast(IncomingMessage msg)
        {
            Farmer player = Game1.getFarmer(msg.FarmerID);

            if (player == null)
            {
                return;
            }

            IActiveEffect effect = player.GetSpellBook().CastSpell(msg.Reader.ReadString(), msg.Reader.ReadInt32(), msg.Reader.ReadInt32(), msg.Reader.ReadInt32());

            if (effect != null)
            {
                Magic.ActiveEffects.Add(effect);
            }
        }
コード例 #7
0
ファイル: Magic.cs プロジェクト: savaatti/smapi-mod-dump
        /// <summary>Raised after the player presses a button on the keyboard, controller, or mouse.</summary>
        /// <param name="sender">The event sender.</param>
        /// <param name="e">The event arguments.</param>
        private static void onButtonPressed(object sender, ButtonPressedEventArgs e)
        {
            bool hasFifthSpellSlot = Game1.player.HasCustomProfession(Skill.ProfessionFifthSpellSlot);

            if (e.Button == Config.Key_Cast)
            {
                castPressed = true;
            }

            if (Data == null || Game1.activeClickableMenu != null)
            {
                return;
            }
            if (e.Button == Config.Key_SwapSpells)
            {
                Game1.player.getSpellBook().swapPreparedSet();
            }
            else if (castPressed &&
                     (e.Button == Config.Key_Spell1 || e.Button == Config.Key_Spell2 ||
                      e.Button == Config.Key_Spell3 || e.Button == Config.Key_Spell4 ||
                      (e.Button == Config.Key_Spell5 && hasFifthSpellSlot)))
            {
                int slot = 0;
                if (e.Button == Config.Key_Spell1)
                {
                    slot = 0;
                }
                else if (e.Button == Config.Key_Spell2)
                {
                    slot = 1;
                }
                else if (e.Button == Config.Key_Spell3)
                {
                    slot = 2;
                }
                else if (e.Button == Config.Key_Spell4)
                {
                    slot = 3;
                }
                else if (e.Button == Config.Key_Spell5)
                {
                    slot = 4;
                }

                Magic.inputHelper.Suppress(e.Button);

                SpellBook       book     = Game1.player.getSpellBook();
                PreparedSpell[] prepared = book.getPreparedSpells();
                if (prepared[slot] == null)
                {
                    return;
                }
                PreparedSpell prep = prepared[slot];

                Spell toCast = SpellBook.get(prep.SpellId);
                if (toCast == null)
                {
                    return;
                }

                //Log.trace("MEOW " + prep.SpellId + " " + prep.Level + " " + Game1.player.canCastSpell(toCast, prep.Level));
                if (Game1.player.canCastSpell(toCast, prep.Level))
                {
                    Log.trace("Casting " + prep.SpellId);

                    IActiveEffect effect = Game1.player.castSpell(toCast, prep.Level);
                    if (effect != null)
                    {
                        activeEffects.Add(effect);
                    }
                    Game1.player.addMana(-toCast.getManaCost(Game1.player, prep.Level));
                }
            }
        }