@Override public String getRule() { StringBuilder sb = new StringBuilder(super.getRule()); if (ruleTrigger != null && !ruleTrigger.isEmpty()) { return sb.insert(0, ruleTrigger).toString(); } switch (targetController) { case YOU: if (this.optional) { if (sb.substring(0, 6).toLowerCase(Locale.ENGLISH).equals("target")) { sb.insert(0, "you may have "); } else if (!sb.substring(0, 4).toLowerCase(Locale.ENGLISH).equals("you ")) { sb.insert(0, "you may "); } } return sb.insert(0, generateZoneString()).insert(0, "At the beginning of your upkeep, ").toString(); case OPPONENT: return sb.insert(0, generateZoneString()).insert(0, "At the beginning of each opponent's upkeep, ").toString(); case ANY: return sb.insert(0, generateZoneString()).insert(0, "At the beginning of each upkeep, ").toString(); case CONTROLLER_ATTACHED_TO: return sb.insert(0, generateZoneString()).insert(0, "At the beginning of the upkeep of enchanted creature's controller, ").toString(); } return ""; }