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()); }
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); } }
/// <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); } } }
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 })); }
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); } }
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); } }
/// <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)); } } }