Java源码示例:com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction

示例1
@Override
public void onUseCard(AbstractCard card, UseCardAction action) {
    if (!card.purgeOnUse && this.amount > 0 && !card.hasTag(LEGENDARY)) {
        this.flash();

        action.exhaustCard = true; // this is what corruption does
        SelfExertField.selfExert.set(card, true);

        AbstractMonster m = (AbstractMonster)action.target;

        for (int i = 0; i < amount; ++i) {
            CardMetaUtils.playCardAdditionalTime(card, m);
        }

        addToBot(new RemoveSpecificPowerAction(this.owner, this.owner, this.ID));
    }

}
 
示例2
@Override
public void onAfterUseCard(AbstractCard card, UseCardAction action) {
    super.onAfterUseCard(card, action);
    if (
            (owner.hasPower("Tranquil_AttunedAttackPower") && card.type == AbstractCard.CardType.ATTACK)
        //|| (owner.hasPower("Tranquil_AttunedSkillPower") && card.type == AbstractCard.CardType.SKILL)
    ) {
        this.amount++;
        AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(owner, owner,
                new StrengthPower(owner, 1), 1));
        AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(owner, owner,
                new DexterityPower(owner, 1), 1));
    } else {
        AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(owner, owner,
                new StrengthPower(owner, -1 * amount), -1 * amount));
        AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(owner, owner,
                new DexterityPower(owner, -1 * amount), -1 * amount));
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(owner, owner, this));
    }
}
 
示例3
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
    AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(p, p, "Weakened"));
    AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(p, p, "Frail"));
    AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(p, p, "Vulnerable"));

    if (m != null) {
        AbstractDungeon.actionManager.addToBottom(new VFXAction(new VerticalImpactEffect(m.hb.cX + m.hb.width / 4.0f, m.hb.cY - m.hb.height / 4.0f)));
    }

    AbstractDungeon.actionManager.addToBottom(
            new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.BLUNT_HEAVY));

    this.rawDescription = (this.isEthereal ? "Ethereal. NL " : "") + DESCRIPTION;
    initializeDescription();
}
 
示例4
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
    int totalPowerCount = 0;

    for (AbstractMonster mo : AbstractDungeon.getCurrRoom().monsters.monsters) {
        int powerCount = GetPowerCount(mo, "Artifact");
        if (powerCount == 0) continue;
        totalPowerCount += powerCount;
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(mo, p, "Artifact"));
    }

    AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ArtifactPower(p, ARTIFACT_AMT), ARTIFACT_AMT));

    if (totalPowerCount > 0) {
        AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new ArtifactPower(p, totalPowerCount), totalPowerCount));
    }
}
 
示例5
@Override
public void update() {
    for (AbstractPower power : target.powers) {
        if (removePowersPredicate.test(power)) {
            AbstractDungeon.actionManager.addToTop(new RemoveSpecificPowerAction(target, target, power.ID));
        }
    }
    this.isDone = true;
}
 
示例6
@Override
public void use(AbstractPlayer p, AbstractMonster abstractMonster) {
    if (p.hasPower(IntangiblePlayerPower.POWER_ID) && p.getPower(IntangiblePlayerPower.POWER_ID).amount > 0) {
        AbstractPower power = p.getPower(IntangiblePlayerPower.POWER_ID);
        if (power.amount == 1) {
            this.addToBot(new RemoveSpecificPowerAction(p, p, power));
        } else {
            this.addToBot(new ReducePowerAction(p, p, power, magicNumber));
        }

        addToBot(new GainEnergyAction(urMagicNumber));
    }
}
 
示例7
@Override
public void useMaterialComponent(AbstractPlayer p, AbstractMonster m) {
    addToBot(new RemoveSpecificPowerAction(p, p, FrailPower.POWER_ID));
    if (upgraded) {
        addToBot(new RemoveSpecificPowerAction(p, p, VulnerablePower.POWER_ID));
    }
    addToBot(new RemoveSpecificPowerAction(p, p, WeakPower.POWER_ID));
}
 
示例8
@Override
public void onInitialApplication() {
    // only 1 target can have this power at a time; subsequent uses of the card will overwrite the old effect
    for(AbstractMonster m : AbstractDungeon.getMonsters().monsters) {
        for (AbstractPower p : m.powers) {
            if (p.ID.equals(this.ID) && p != this) {
                AbstractDungeon.actionManager.addToTop(new RemoveSpecificPowerAction(m, source, p));
            }
        }
    }
}
 
示例9
@Override
public void atStartOfTurn() {
    if (this.amount == 1) {
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, this.ID));
    } else {
        AbstractDungeon.actionManager.addToBottom(new ReducePowerAction(this.owner, this.owner, this.ID, 1));
    }
}
 
示例10
@Override
public void atEndOfRound() {
    if (this.justApplied) {
        this.justApplied = false;
    } else {
        if (this.amount <= 0) {
            AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, POWER_ID));
        }
    }
}
 
示例11
public void onUseCard(AbstractCard card, UseCardAction action) {
    if (!card.purgeOnUse && card.type == AbstractCard.CardType.ATTACK && this.amount > 0) {
        this.flash();

        AbstractMonster m = (AbstractMonster)action.target;

        for (int i = 0; i < amount; ++i) {
            CardMetaUtils.playCardAdditionalTime(card, m);
        }

        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, this.ID));
    }
}
 
示例12
@Override
public void atEndOfTurn(boolean isPlayer) {
    this.flash();
    if (this.amount == 0) {
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, this.ID));
    } else {
        AbstractDungeon.actionManager.addToBottom(new ReducePowerAction(this.owner, this.owner, this.ID, 1));
    }
}
 
示例13
@Override
public void atEndOfTurn(boolean isPlayer) {
    if (this.amount == 0) {
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, this.ID));
    } else {
        AbstractDungeon.actionManager.addToBottom(new ReducePowerAction(this.owner, this.owner, this.ID, 1));
    }
}
 
示例14
@Override
public void onGainClarity(String id) {
    if (id.equals(memoryIDThatMustBeClarified)) {
        // addToTop is required for cards that gain clarity and then remember something else, like EyeOfTheStorm
        AbstractDungeon.actionManager.addToTop(new RemoveSpecificPowerAction(owner, owner, POWER_ID));
    }
}
 
示例15
@Override
public void onUseCard(AbstractCard card, UseCardAction action) {
    if (!card.purgeOnUse && card.exhaust == true && this.amount > 0) {
        this.flash();

        CardMetaUtils.playCardAdditionalTime(card, (AbstractMonster) action.target);

        --this.amount;
        if (this.amount == 0) {
            AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, this.ID));
        } else {
            updateDescription();
        }
    }
}
 
示例16
@Override
public void atEndOfTurn(boolean isPlayer) {
    if (isPlayer) {
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, this.ID));
    }

}
 
示例17
@Override
public void onUseCard(AbstractCard card, UseCardAction action) {
    if (amount <= 1) {
        this.flash();
        AbstractDungeon.actionManager.addToBottom(new ExhumeCardsAction(cardToExhume));
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(owner, owner, this));
    } else {
        AbstractDungeon.actionManager.addToBottom(new ReducePowerAction(owner, owner, this, 1));
    }
}
 
示例18
@Override
public void atStartOfTurn() {
    if (this.amount == 1) {
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, this.ID));
    } else {
        AbstractDungeon.actionManager.addToBottom(new ReducePowerAction(this.owner, this.owner, this.ID, 1));
    }
}
 
示例19
public void onUseCard(AbstractCard card, UseCardAction action) {
    if (!card.purgeOnUse && this.amount > 0) {
        this.flash();

        AbstractMonster m = (AbstractMonster)action.target;

        for (int i = 0; i < amount; ++i) {
            CardMetaUtils.playCardAdditionalTime(card, m);
        }

        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, this.ID));
    }
}
 
示例20
@Override
public void onGainClarity(String id) {
    AbstractDungeon.actionManager.addToBottom(
            new DamageAllEnemiesAction(
                    null,
                    DamageInfo.createDamageMatrix(damage, true),
                    DamageInfo.DamageType.NORMAL,
                    // TODO: More impactful and relevant FX. See FlashAtkImgEffect.loadImage() and
                    //  FlashAtkImgEffect.playSound() for usage of AttackEffect in base game.
                    AbstractGameAction.AttackEffect.BLUNT_HEAVY));
    AbstractDungeon.actionManager.addToBottom(
            new RemoveSpecificPowerAction(this.owner, this.owner, MindGlassPower.POWER_ID));
}
 
示例21
@Override
public void onUseCard(AbstractCard card, UseCardAction action) {
    if (!card.purgeOnUse && StSLib.getMasterDeckEquivalent(card) != null) {
        CardMetaUtils.destroyCardPermanently(card);
        AbstractDungeon.transformCard(card, isAutoUpgrade, AbstractDungeon.miscRng);
        AbstractDungeon.topLevelEffectsQueue.add(new ShowCardAndObtainEffect(AbstractDungeon.getTransformedCard(), Settings.WIDTH / 2.0F, Settings.HEIGHT / 2.0F, false));
    }
    addToTop(new RemoveSpecificPowerAction(owner, owner, this.ID));
}
 
示例22
@Override
public void atStartOfTurn() {
    MemoryManager mm = MemoryManager.forPlayer(owner);
    if (mm != null && mm.isRemembering(DiligenceMemory.STATIC.ID)) {
        this.flash();
        AbstractDungeon.actionManager.addToBottom(new GainClarityOfCurrentMemoryAction(owner));
    }

    AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, this));
}
 
示例23
private void consumeCoilForDamage() {
    this.flash();

    if (!AbstractDungeon.getMonsters().areMonstersBasicallyDead()) {
        AbstractDungeon.actionManager.addToBottom(
                new DamageAllEnemiesAction(owner, DamageInfo.createDamageMatrix(calculateDamage(), true), DamageInfo.DamageType.THORNS, AttackEffect.SLASH_HORIZONTAL));
        AbstractDungeon.actionManager.addToBottom(
                new RemoveSpecificPowerAction(owner, owner, CoilPower.POWER_ID));
    }
}
 
示例24
@Override
public void atStartOfTurn() {
    // Note, the turn counter appears off by one because it isn't incremented til after start-of-turn powers are applied.
    // However, on the first turn, turn is set to 1.
    amount = turnToExhume - GameActionManager.turn - (isFirstTurn ? 0 : 1);
    updateDescription();
    isFirstTurn = false;
    if (amount <= 0) {
        flash();
        addToBot(new ExhumeCardsAction(cardToExhume));
        addToBot(new RemoveSpecificPowerAction(AbstractDungeon.player, AbstractDungeon.player, this));
    }
}
 
示例25
public void onSpecificTrigger()
{
    flash();
    if (amount <= 0) {
        AbstractDungeon.actionManager.addToTop(new RemoveSpecificPowerAction(owner, owner, ID));
    } else {
        AbstractDungeon.actionManager.addToTop(new ReducePowerAction(owner, owner, ID, 1));
    }
}
 
示例26
@Override
public void atEndOfRound()
{
    if (amount <= 0) {
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(owner, owner, this));
    } else {
        AbstractDungeon.actionManager.addToBottom(new ReducePowerAction(owner, owner, this, 1));
    }
}
 
示例27
@Override
public void onAfterUseCard(AbstractCard card, UseCardAction action) {
    super.onAfterUseCard(card, action);
    if (card.type != AbstractCard.CardType.ATTACK) {
        // remove all FlowPower and this power
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(this.owner, this.owner, this));
    }
}
 
示例28
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
    int powerCount = GetPowerCount(p, "Weakened");
    if (powerCount > 0) {
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(p, p, "Weakened"));
        AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p, new WeakPower(m, powerCount, false), powerCount));
    }
    powerCount = GetPowerCount(p, "Vulnerable");
    if (powerCount > 0) {
        AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(p, p, "Vulnerable"));
        AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p, new VulnerablePower(m, powerCount, false), powerCount));
    }
    AbstractDungeon.actionManager.addToBottom(new DrawCardAction(p, this.magicNumber));
}
 
示例29
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
    int debuffCount = GetPowerCount(m, "Weakened") + GetPowerCount(m, "Vulnerable");
    AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(m, p, "Weakened"));
    AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(m, p, "Vulnerable"));
    this.baseDamage = this.magicNumber * debuffCount;
    AbstractDungeon.actionManager.addToTop(new LoseHPAction(m, m, this.baseDamage));
}
 
示例30
@Override
public void use(AbstractPlayer p, AbstractMonster m) {
    int frailCount = GetPowerCount(p, "Frail");
    int weakCount = GetPowerCount(p, "Weakened");
    int vulnCount = GetPowerCount(p, "Vulnerable");
    AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(p, p, "Frail"));
    AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(p, p, "Weakened"));
    AbstractDungeon.actionManager.addToBottom(new RemoveSpecificPowerAction(p, p, "Vulnerable"));
    AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, ((frailCount + weakCount + vulnCount) * this.magicNumber) + BLOCK_AMT));
}