Add shield destroy check logic

develop
Nathan Steel 1 year ago
parent 10c825a7d8
commit 73a44512ef

@ -743,10 +743,38 @@ class Board{
// Sets the listPosition to the next in line for new boardElement // Sets the listPosition to the next in line for new boardElement
// Changes the listPosition of each item in previous boardElement // Changes the listPosition of each item in previous boardElement
// All for same player, although below playerFrom/playerTo can be set to switch between players // All for same player, although below playerFrom/playerTo can be set to switch between players
// TODO: Removes any cardStatus
// TODO:Check if shield can be destroyed (instantly, i.e. poisontouch, or some mechanic/spell akin)
// Check the shield is not tapped, if not can't be destroyed
if(!this.isTapped(itemKey)){
alert('Shield not tapped, cannot be destroyed');
return false;
}
// Check if all other shields are tapped before destroying the shield
// TODO: Normalise the loop!!!
// Think this can be done by looping what's needed, then returning itemKeys in array for each
// item that hits criteria, then looping that new array and applying logic?
// Loop all items, get the item with boardElement elementFrom and player playerFrom
for(let itemKey = 0; itemKey < item.length; itemKey++){
// Get the item from the element
if(itemKey in boardElement && boardElement[itemKey] == 'shield'){
// Check each shield on the board of the owner of shield being attacked
if(itemKey in player && player[itemKey] == player[itemKey]){
// If ANY of their shields are untapped, you can't destroy target
if(cardStatus[itemKey] != 'tapped'){
alert('There is an untapped shield, cannot destroy target');
return false;
}
}
}
}
// Shield is now destroyed, move it from shield to owners hand (for the catchup mechanic)
//addFromBoardElement(playerFrom, fromPosition, elementFrom, elementTo, toPosition=null, playerTo=null) //addFromBoardElement(playerFrom, fromPosition, elementFrom, elementTo, toPosition=null, playerTo=null)
this.addFromBoardElement(player[itemKey], listPosition[itemKey], boardElement[itemKey], 'hand', null, null); this.addFromBoardElement(player[itemKey], listPosition[itemKey], boardElement[itemKey], 'hand', null, null);
return true;
} }
sendToGrave(itemKey){ sendToGrave(itemKey){
@ -771,6 +799,10 @@ class Board{
// TODO: Remove status of card, and do/don't do effect depending on locationTo/locationFrom? // TODO: Remove status of card, and do/don't do effect depending on locationTo/locationFrom?
cardStatus[itemKey] = null; cardStatus[itemKey] = null;
} }
isTapped(itemKey){
if(cardStatus[itemKey] == 'tapped'){ return true; }
return false;
}
} }
// TODO: TEMP!! Replace soon // TODO: TEMP!! Replace soon

Loading…
Cancel
Save