Start of basic effect functionality
parent
96b45239ab
commit
ccb86df970
@ -0,0 +1,112 @@
|
||||
// Passive effects (just does stuff)
|
||||
let flight = {};
|
||||
let reach = {};
|
||||
let equipped = {}; // Entity x has [a,b,c] equipped to it
|
||||
|
||||
|
||||
// Actives to add passives
|
||||
function giveFlight(card){
|
||||
flight[card] = true;
|
||||
}
|
||||
function removeFlight(card){
|
||||
// If the card has flight delete entity component
|
||||
if(card in flight){
|
||||
delete flight[card];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Active
|
||||
function equip(){
|
||||
// Equip card to another unit
|
||||
|
||||
}
|
||||
function unequip(){
|
||||
// Remove card from its equipped to unit
|
||||
|
||||
}
|
||||
|
||||
function heal(healAmount, healPlayer){
|
||||
// For each heal 1..4
|
||||
for(let i = 0; i < healAmount; i++){
|
||||
// Loop shield
|
||||
let items = this.getItems('shield', healPlayer, null, null);
|
||||
for(let item = 0; item < items.length; item++){
|
||||
|
||||
let itemKey = items[item];
|
||||
// If a shield is tapped, untap it to 'heal'
|
||||
if(board.isTapped(itemKey)){
|
||||
board.untapCard(itemKey);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function hurt(hurtDamage, hurtTarget = null, hurtPlayer = null){
|
||||
// Deal X000 damage to unit this turn, or deal Y to opponent's shield
|
||||
|
||||
// Set player/element
|
||||
if(hurtPlayer == null && hurtTarget != null){
|
||||
hurtPlayer = player[hurtTarget];
|
||||
hurtElement = boardElement[hurtTarget];
|
||||
}else{
|
||||
hurtElement = 'shield'
|
||||
}
|
||||
|
||||
switch(hurtElement){
|
||||
case 'board':
|
||||
// TODO: Make temp damage this turn as well
|
||||
if(hurtDamage >= cardAttack[hurtTarget][0]){
|
||||
board.sendToGrave(hurtTarget);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'shield':
|
||||
let destroyCount = cardAttackToShieldDamage(hurtDamage);
|
||||
console.log(destroyCount);
|
||||
// TODO: loop player's shield, tap if they can be tapped, destroy
|
||||
// if all already tapped
|
||||
|
||||
// While there's still damage to deal
|
||||
while(destroyCount > 0){
|
||||
|
||||
// Keep looping through the shield belonging to target user
|
||||
let items = board.getItems('shield', hurtPlayer, null, null);
|
||||
let tappedItems = board.getItems('shield', hurtPlayer, 'tapped', null);
|
||||
|
||||
for(let item = 0; item < items.length; item++){
|
||||
|
||||
// If nothing more to destroy, exit loop
|
||||
if(destroyCount <= 0){ break; }
|
||||
|
||||
let itemKey = items[item];
|
||||
console.log(itemKey);
|
||||
console.log(cardStatus[itemKey]);
|
||||
|
||||
// If there's anything to tap, tap it
|
||||
if(cardStatus[itemKey] == null){
|
||||
console.log('been tapped');
|
||||
board.tapCard(itemKey);
|
||||
destroyCount--;
|
||||
continue;
|
||||
}
|
||||
|
||||
// If there's nothing to tap, destroy it
|
||||
if(items.length == tappedItems.length){
|
||||
console.log('been destroyed');
|
||||
board.destroyShield(itemKey);
|
||||
destroyCount--;
|
||||
continue;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
board.drawBoard();
|
||||
break; // end case 'shield'
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
function cardAttackToShieldDamage(attack){
|
||||
if (attack >= 10000){ return 3; }
|
||||
if (attack >= 5001){ return 2; }
|
||||
if (attack >= 1){ return 1; }
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue