- Added display of the current site number of a minion in play.
- "Forewarned" now discards itself if played decides to discard the top card.
This commit is contained in:
@@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.set6.elven;
|
||||
|
||||
import com.gempukku.lotro.cards.AbstractPermanent;
|
||||
import com.gempukku.lotro.cards.PlayConditions;
|
||||
import com.gempukku.lotro.cards.actions.SubCostToEffectAction;
|
||||
import com.gempukku.lotro.cards.effects.DiscardCardFromDeckEffect;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
@@ -10,6 +11,7 @@ import com.gempukku.lotro.logic.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.decisions.ArbitraryCardsSelectionDecision;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
|
||||
import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect;
|
||||
import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
@@ -37,7 +39,7 @@ public class Card6_017 extends AbstractPermanent {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
|
||||
protected List<? extends Action> getExtraPhaseActions(String playerId, final LotroGame game, final PhysicalCard self) {
|
||||
if (PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.FELLOWSHIP, self)) {
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(
|
||||
@@ -49,9 +51,14 @@ public class Card6_017 extends AbstractPermanent {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
final List<PhysicalCard> selectedCards = getSelectedCardsByResponse(result);
|
||||
for (PhysicalCard selectedCard : selectedCards) {
|
||||
action.insertEffect(
|
||||
if (selectedCards.size() > 0) {
|
||||
PhysicalCard selectedCard = selectedCards.get(0);
|
||||
SubCostToEffectAction subAction = new SubCostToEffectAction(action);
|
||||
subAction.appendCost(
|
||||
new DiscardCardsFromPlayEffect(self, self));
|
||||
subAction.appendEffect(
|
||||
new DiscardCardFromDeckEffect(selectedCard));
|
||||
game.getActionsEnvironment().addActionToStack(subAction);
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
@@ -82,10 +82,14 @@ public class EventSerializer {
|
||||
}
|
||||
|
||||
Map<Integer, Integer> charVitalities = gameStats.getCharVitalities();
|
||||
Map<Integer, Integer> charThirdStats = gameStats.getThirdStats();
|
||||
|
||||
StringBuilder charStr = new StringBuilder();
|
||||
for (Map.Entry<Integer, Integer> characters : gameStats.getCharStrengths().entrySet()) {
|
||||
charStr.append("," + characters.getKey() + "=" + characters.getValue() + "|" + charVitalities.get(characters.getKey()));
|
||||
Integer charCardId = characters.getKey();
|
||||
charStr.append("," + charCardId + "=" + characters.getValue() + "|" + charVitalities.get(charCardId));
|
||||
if (charThirdStats.containsKey(charCardId))
|
||||
charStr.append("|" + charThirdStats.get(charCardId));
|
||||
}
|
||||
if (charStr.length() > 0)
|
||||
charStr.delete(0, 1);
|
||||
|
||||
@@ -30,6 +30,7 @@ public class GameStats {
|
||||
private Map<String, Map<Zone, Integer>> _zoneSizes = new HashMap<String, Map<Zone, Integer>>();
|
||||
private Map<Integer, Integer> _charStrengths = new HashMap<Integer, Integer>();
|
||||
private Map<Integer, Integer> _charVitalities = new HashMap<Integer, Integer>();
|
||||
private Map<Integer, Integer> _thirdStats = new HashMap<Integer, Integer>();
|
||||
|
||||
/**
|
||||
* @return If the stats have changed
|
||||
@@ -120,9 +121,12 @@ public class GameStats {
|
||||
|
||||
Map<Integer, Integer> newCharStrengths = new HashMap<Integer, Integer>();
|
||||
Map<Integer, Integer> newCharVitalities = new HashMap<Integer, Integer>();
|
||||
Map<Integer, Integer> newThirdStats = new HashMap<Integer, Integer>();
|
||||
for (PhysicalCard character : Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), Filters.or(CardType.COMPANION, CardType.ALLY, CardType.MINION))) {
|
||||
newCharStrengths.put(character.getCardId(), game.getModifiersQuerying().getStrength(game.getGameState(), character));
|
||||
newCharVitalities.put(character.getCardId(), game.getModifiersQuerying().getVitality(game.getGameState(), character));
|
||||
if (character.getBlueprint().getCardType() == CardType.MINION)
|
||||
newThirdStats.put(character.getCardId(), game.getModifiersQuerying().getMinionSiteNumber(game.getGameState(), character));
|
||||
}
|
||||
|
||||
if (!newCharStrengths.equals(_charStrengths)) {
|
||||
@@ -135,6 +139,11 @@ public class GameStats {
|
||||
_charVitalities = newCharVitalities;
|
||||
}
|
||||
|
||||
if (!newThirdStats.equals(_thirdStats)) {
|
||||
changed = true;
|
||||
_thirdStats = newThirdStats;
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
@@ -186,6 +195,10 @@ public class GameStats {
|
||||
return _charVitalities;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> getThirdStats() {
|
||||
return _thirdStats;
|
||||
}
|
||||
|
||||
public GameStats makeACopy() {
|
||||
GameStats copy = new GameStats();
|
||||
copy._fellowshipArchery = _fellowshipArchery;
|
||||
@@ -200,6 +213,7 @@ public class GameStats {
|
||||
copy._zoneSizes = _zoneSizes;
|
||||
copy._charStrengths = _charStrengths;
|
||||
copy._charVitalities = _charVitalities;
|
||||
copy._thirdStats = _thirdStats;
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,15 @@ body {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.cardSiteNumber {
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
background-color: #877a4e;
|
||||
opacity: 0.7;
|
||||
font-weight: bolder;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.selectableCard > .borderOverlay {
|
||||
border-color: #00af00;
|
||||
cursor: pointer;
|
||||
|
||||
@@ -6,6 +6,8 @@ against Nazgul.
|
||||
+1 strength to itself for each such card.
|
||||
- User interface now displays damage bonuses in current skirmish (if any).
|
||||
- "Forearmed" can now be used during Skirmish phase.
|
||||
- Added display of the current site number of a minion in play.
|
||||
- "Forewarned" now discards itself if played decides to discard the top card.
|
||||
|
||||
<b>1 Nov. 2011</b>
|
||||
- Fixed "Theoden" (4P365) to not crash game due to testing if you can attach hides (also a possession, right?) to it.
|
||||
|
||||
@@ -691,6 +691,7 @@ var GameAnimations = Class.extend({
|
||||
function(next) {
|
||||
$(".cardStrength").css({display: "none"});
|
||||
$(".cardVitality").css({display: "none"});
|
||||
$(".cardSiteNumber").css({display: "none"});
|
||||
|
||||
var charStats = element.getAttribute("charStats");
|
||||
if (charStats != null) {
|
||||
@@ -701,6 +702,8 @@ var GameAnimations = Class.extend({
|
||||
var cardStatArr = cardStats[1].split("|");
|
||||
$(".cardStrength", cardDiv).html(cardStatArr[0]).css({display: ""});
|
||||
$(".cardVitality", cardDiv).html(cardStatArr[1]).css({display: ""});
|
||||
if (cardStatArr.length > 2)
|
||||
$(".cardSiteNumber", cardDiv).html(cardStatArr[2]).css({display: ""});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -875,20 +875,30 @@ var GempLotrGameUI = Class.extend({
|
||||
cardVitalityDiv.css({display: "none"});
|
||||
tokenOverlay.append(cardVitalityDiv);
|
||||
|
||||
var cardSiteNumberDiv = $("<div class='cardSiteNumber'></div>");
|
||||
cardSiteNumberDiv.css({display: "none"});
|
||||
tokenOverlay.append(cardSiteNumberDiv);
|
||||
|
||||
cardDiv.data("card", card);
|
||||
|
||||
var sizeListeners = new Array();
|
||||
sizeListeners[0] = {
|
||||
sizeChanged: function(cardElem, width, height) {
|
||||
var maxDimension = Math.max(width, height);
|
||||
var borderWidth = Math.floor(maxDimension / 30);
|
||||
|
||||
var size = Math.floor(maxDimension / 10);
|
||||
var size = 0.0865 * maxDimension;
|
||||
|
||||
var x = 0.09255 * maxDimension - size / 2;
|
||||
var strengthY = 0.67203 * maxDimension - size / 2;
|
||||
var vitalityY = 0.79074 * maxDimension - size / 2;
|
||||
var minionSiteNumberY = 0.89135 * maxDimension - size / 2;
|
||||
|
||||
var fontPerc = (size * 7) + "%";
|
||||
var borderRadius = Math.ceil(size / 5) + "px";
|
||||
|
||||
$(".cardStrength", cardElem).css({position: "absolute", "border-radius": borderRadius, "font-size": fontPerc, left: borderWidth * 1.45 + "px", top: maxDimension * 0.64 + "px", width: size, height: size});
|
||||
$(".cardVitality", cardElem).css({position: "absolute", "border-radius": borderRadius, "font-size": fontPerc, left: borderWidth * 1.45 + "px", top: maxDimension * 0.645 + size + "px", width: size, height: size});
|
||||
$(".cardStrength", cardElem).css({position: "absolute", "border-radius": borderRadius, "font-size": fontPerc, left: x + "px", top: strengthY + "px", width: size, height: size});
|
||||
$(".cardVitality", cardElem).css({position: "absolute", "border-radius": borderRadius, "font-size": fontPerc, left: x + "px", top: vitalityY + "px", width: size, height: size});
|
||||
$(".cardSiteNumber", cardElem).css({position: "absolute", "border-radius": borderRadius, "font-size": fontPerc, left: x + "px", top: minionSiteNumberY + "px", width: size, height: size});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -911,6 +921,7 @@ var GempLotrGameUI = Class.extend({
|
||||
};
|
||||
cardDiv.swipe(swipeOptions);
|
||||
|
||||
|
||||
return cardDiv;
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user