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));
}