public void Process(GameState state, AttackItemPipelineArgs args) { // assuming targets and weapons are already prioritized // just find the first compatible combination foreach (var target in args.EligibleTargets) { foreach (var item in args.EligibleItems) { if (!target.Effects.Contains(item.Name)) { args.Select(item, target.PlayerName); return; } } } }
public void Process(GameState state, AttackItemPipelineArgs args) { if (state.OnLeaderboard && args.EligibleItems.Any(i => i.Name == "Banana Peel")) { var behindMe = state.OpponentAtDelta(1); var target = behindMe == null ? null : args.EligibleTargets.FirstOrDefault(t => t.PlayerName == behindMe.PlayerName); if (target != null) { var banana = args.EligibleItems.First(i => i.Name == "Banana Peel"); args.Select(banana, target.PlayerName); } } }