Skip to content

Commit

Permalink
Capital Offense - fixed wrong card text, improved performance
Browse files Browse the repository at this point in the history
  • Loading branch information
JayDi85 committed Sep 17, 2023
1 parent 5f15e96 commit 66d1327
Showing 1 changed file with 32 additions and 15 deletions.
47 changes: 32 additions & 15 deletions Mage.Sets/src/mage/cards/c/CapitalOffense.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
import mage.target.common.TargetCreaturePermanent;

import java.util.List;
import java.util.Locale;
import java.util.UUID;
import java.util.stream.Collectors;

/**
* @author spjspj
Expand All @@ -43,6 +45,22 @@ private CapitalOffense(final CapitalOffense card) {
public CapitalOffense copy() {
return new CapitalOffense(this);
}

@Override
public List<String> getRules() {
return prepareLowerCaseRules(super.getRules());
}

@Override
public List<String> getRules(Game game) {
return prepareLowerCaseRules(super.getRules(game));
}

private List<String> prepareLowerCaseRules(List<String> rules) {
return rules.stream()
.map(s -> s.toLowerCase(Locale.ENGLISH))
.collect(Collectors.toList());
}
}

enum capitaloffensecount implements DynamicValue {
Expand All @@ -59,25 +77,24 @@ public int calculate(Game game, Ability sourceAbility, Effect effect) {
if (permanent == null) {
return 0;
}
int capitals = 0;
List<CardInfo> cards = CardRepository.instance.findCards(permanent.getName());

if (cards == null) {
List<CardInfo> cardsInfo = CardRepository.instance.findCards(permanent.getName(), 1);
if (cardsInfo.isEmpty()) {
return 0;
}
for (CardInfo cardInfo : cards) {
Card dummy = cardInfo != null ? cardInfo.getCard() : null;
if (dummy == null) {
return -1 * capitals;
}
for (String line : dummy.getRules()) {
line = line.replaceAll("(?i)<i.*?</i>", ""); // Ignoring reminder text in italic
line = line.replaceAll("\\{this\\}", permanent.getName());
capitals += line.length() - line.replaceAll("[A-Z]", "").length();
}
return -1 * capitals;

Card card = cardsInfo.get(0).getCard();
if (card == null) {
return 0;
}
return 0;

String originalRules = card.getRules(game)
.stream()
.map(r -> r.replaceAll("(?i)<i.*?</i>", ""))
.map(r -> r.replaceAll("\\{this\\}", permanent.getName()))
.collect(Collectors.joining("; "));
String nonCapitalRules = originalRules.replaceAll("[A-Z]", "");
return -1 * (originalRules.length() - nonCapitalRules.length());
}

@Override
Expand Down

0 comments on commit 66d1327

Please sign in to comment.