public override bool OnSkillInvoke(TrustedAI ai, Player player, object data) { Room room = ai.Room; int count = 0; List <WrappedCard> analeptics = ai.GetCards(Analeptic.ClassName, player, true); analeptics.AddRange(ai.GetCards(Peach.ClassName, player, true)); foreach (WrappedCard card in analeptics) { if (!RoomLogic.IsCardLimited(room, player, card, HandlingMethod.MethodUse) && RoomLogic.IsProhibited(room, player, player, card) == null) { count++; } } if (count >= 1 - player.Hp) { return(false); } return(true); }
public override CardUseStruct OnResponding(TrustedAI ai, Player player, string pattern, string prompt, object data) { Room room = ai.Room; Player caocao = room.FindPlayer(prompt.Split(':')[1]); CardUseStruct use = new CardUseStruct(null, player, new List <Player>()); if (caocao != null && ai.IsFriend(caocao)) { object reason = room.GetTag("current_Jink"); DamageStruct damage = new DamageStruct(); if (reason is SlashEffectStruct slash) { damage.From = slash.From; damage.To = slash.To; damage.Card = slash.Slash; damage.Damage = slash.Drank + 1; damage.Nature = DamageStruct.DamageNature.Normal; if (damage.Card.Name == FireSlash.ClassName) { damage.Nature = DamageStruct.DamageNature.Fire; } else if (damage.Card.Name == ThunderSlash.ClassName) { damage.Nature = DamageStruct.DamageNature.Thunder; } } else if (reason is CardEffectStruct effect) { damage.From = effect.From; damage.To = effect.To; damage.Card = effect.Card; damage.Damage = 1; damage.Nature = DamageStruct.DamageNature.Normal; } List <WrappedCard> jinks = ai.GetCards("Jink", player); ScoreStruct score = ai.GetDamageScore(damage); if (score.Score < -5 && jinks.Count > 0) { use.Card = jinks[0]; } else if (score.Score < 0 && jinks.Count > 1) { use.Card = jinks[0]; } } return(use); }