Skip to content

Commit

Permalink
Merge pull request #62 from GraysonnG/develop
Browse files Browse the repository at this point in the history
Merge Develop into Master 11/16/18
  • Loading branch information
GraysonnG authored Nov 17, 2018
2 parents c7e368d + bef525c commit 39d693d
Show file tree
Hide file tree
Showing 23 changed files with 681 additions and 138 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>InfiniteSpire</groupId>
<artifactId>InfiniteSpire</artifactId>
<version>0.5.2</version>
<version>0.6.0</version>
<dependencies>
<dependency>
<groupId>com.megacrit.cardcrawl</groupId>
Expand Down
15 changes: 12 additions & 3 deletions src/main/java/infinitespire/InfiniteSpire.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import infinitespire.interfaces.OnQuestRemovedSubscriber;
import infinitespire.monsters.LordOfAnnihilation;
import infinitespire.monsters.MassOfShapes;
import infinitespire.monsters.Nightmare;
import infinitespire.patches.CardColorEnumPatch;
import infinitespire.potions.BlackPotion;
import infinitespire.quests.DieQuest;
Expand All @@ -49,6 +50,7 @@
import infinitespire.relics.crystals.FocusingShard;
import infinitespire.relics.crystals.HealingShard;
import infinitespire.relics.crystals.WardingShard;
import infinitespire.rewards.QuestReward;
import infinitespire.screens.LordBackgroundEffect;
import infinitespire.screens.QuestLogScreen;
import infinitespire.ui.buttons.QuestLogButton;
Expand All @@ -63,7 +65,7 @@
@SpireInitializer
public class InfiniteSpire implements PostInitializeSubscriber, PostBattleSubscriber, EditRelicsSubscriber,
EditCardsSubscriber, EditKeywordsSubscriber, EditStringsSubscriber, PreDungeonUpdateSubscriber {
public static final String VERSION = "0.5.2";
public static final String VERSION = "0.6.0";
public static final Logger logger = LogManager.getLogger(InfiniteSpire.class.getName());

private static ArrayList<OnQuestRemovedSubscriber> onQuestRemovedSubscribers = new ArrayList<>();
Expand Down Expand Up @@ -111,6 +113,7 @@ public static void initialize() {

Colors.put(GDX_INFINITE_PURPLE_NAME, Color.valueOf("#3D00D6").cpy());
Colors.put(GDX_INFINITE_RED_NAME, Color.valueOf("#FF4A4A").cpy());

}

@Override
Expand Down Expand Up @@ -180,7 +183,7 @@ public void receiveEditKeywords() {
String[] shattered = { "shredded" };
String[] mitigation = { "mitigation" };

BaseMod.addKeyword(golemsMight, "Each turn your attacks deal 10% more damage than the last turn.");
BaseMod.addKeyword(golemsMight, "Each turn your attacks deal 5% more damage than the last turn.");
BaseMod.addKeyword(crit, "The next attack you play will deal 2x damage.");
BaseMod.addKeyword(shattered,
"For each card played for the rest of combat, the enemy takes #b10% more damage from #yAttacks.");
Expand All @@ -207,6 +210,7 @@ public static void saveData() {
SpireConfig config = new SpireConfig("InfiniteSpire", "infiniteSpireConfig");

BottledSoul.save(config);
Nightmare.save(config);
config.setBool("isGuardianDead", hasDefeatedGuardian);
config.setBool("isEndless", isEndless);
config.setBool("startWithEndlessQuest", startWithEndlessQuest);
Expand All @@ -223,6 +227,7 @@ public static void clearData() {
isEndless = false;
QuestHelper.clearQuestLog();
BottledSoul.clear();
Nightmare.clear();
saveData();
}

Expand All @@ -237,6 +242,8 @@ public static void loadData() {
if (AbstractDungeon.player != null)
BottledSoul.load(config);

Nightmare.load(config);

} catch (IOException | NumberFormatException e) {
logger.error("Failed to load InfiniteSpire data!");
e.printStackTrace();
Expand Down Expand Up @@ -327,6 +334,7 @@ private static void initializeCards() {
CardHelper.addCard(new TheBestDefense());
CardHelper.addCard(new Fortify());
CardHelper.addCard(new Pacifist());
CardHelper.addCard(new Menacing());
//CardHelper.addCard(new UNNAMED_1());
}

Expand Down Expand Up @@ -380,7 +388,8 @@ public void receivePostBattle(AbstractRoom room) {
amount -= (InfiniteSpire.questLog.size() + amount) - 21;
}
if (amount > 0) {
AbstractDungeon.actionManager.addToBottom(new AddQuestAction(QuestHelper.getRandomQuests(amount)));
//AbstractDungeon.actionManager.addToBottom(new AddQuestAction(QuestHelper.getRandomQuests(amount)));
room.rewards.add(new QuestReward(amount));
}
}
}
Expand Down
66 changes: 66 additions & 0 deletions src/main/java/infinitespire/actions/DeathsTouchAction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package infinitespire.actions;

import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.PoisonPower;
import com.megacrit.cardcrawl.relics.ChemicalX;
import com.megacrit.cardcrawl.ui.panels.EnergyPanel;

public class DeathsTouchAction extends AbstractGameAction {

private AbstractPlayer p;
private AbstractMonster m;
private int damage;
private int magicNumber;
private DamageInfo.DamageType damageType;
private boolean isFree;
private int energyAmount;

public DeathsTouchAction(AbstractPlayer player, AbstractMonster monster, int damage, int magicNumber, DamageInfo.DamageType damageType, boolean freeToPlayOnce, int energyOnUse) {
this.p = player;
this.m = monster;
this.damage = damage;
this.target = monster;
this.magicNumber = magicNumber;
this.damageType = damageType;
this.isFree = freeToPlayOnce;
this.energyAmount = energyOnUse;
this.duration = Settings.ACTION_DUR_XFAST;
this.actionType = ActionType.SPECIAL;
}

@Override
public void update() {
int effect = EnergyPanel.totalCount;
if(this.energyAmount != -1) {
effect = this.energyAmount;
}

effect += 1; //this is the + 1 part of the X + 1

if(this.p.hasRelic(ChemicalX.ID)) {
this.p.getRelic(ChemicalX.ID).flash();
effect += 2;
}

AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage, this.damageType), AttackEffect.SLASH_DIAGONAL));

if(effect > 0) {
for(int i = 0; i < effect; i++) {
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p, new PoisonPower(m, p, this.magicNumber), this.magicNumber));
}

if(!this.isFree) {
this.p.energy.use(EnergyPanel.totalCount);
}
}

this.isDone = true;
}
}
24 changes: 2 additions & 22 deletions src/main/java/infinitespire/cards/black/DeathsTouch.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,12 @@
package infinitespire.cards.black;

import com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.powers.PoisonPower;
import com.megacrit.cardcrawl.relics.ChemicalX;
import com.megacrit.cardcrawl.ui.panels.EnergyPanel;

import infinitespire.abstracts.BlackCard;
import infinitespire.actions.DeathsTouchAction;

public class DeathsTouch extends BlackCard {

Expand Down Expand Up @@ -54,21 +48,7 @@ public void useWithEffect(AbstractPlayer p, AbstractMonster m) {
if(this.energyOnUse < EnergyPanel.totalCount) {
this.energyOnUse = EnergyPanel.totalCount;
}

int poisonTicks = this.energyOnUse + 1;

if(p.hasRelic(ChemicalX.ID)) {
p.getRelic(ChemicalX.ID).flash();
poisonTicks += 2;
}

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

for(int i = 0; i < poisonTicks; i++) {
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p, new PoisonPower(m, p, this.magicNumber), this.magicNumber));
}

p.energy.use(EnergyPanel.totalCount);
AbstractDungeon.actionManager.addToBottom(new DeathsTouchAction(p, m, damage, magicNumber, damageTypeForTurn, freeToPlayOnce, energyOnUse));
}

}
45 changes: 45 additions & 0 deletions src/main/java/infinitespire/cards/black/Menacing.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package infinitespire.cards.black;

import com.megacrit.cardcrawl.actions.animations.VFXAction;
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import infinitespire.abstracts.BlackCard;
import infinitespire.effects.uniqueVFX.MenacingEffect;
import infinitespire.powers.MenacingPower;

public class Menacing extends BlackCard {
private static final String ID = "Menacing";
private static final String NAME = "Menacing";
private static final String TEXTURE = "img/infinitespire/cards/menacing.png";
private static final int COST = 1;
private static final String DESCRIPTION = "The next attack you play stuns any enemy it hits for 1 turn. NL Exhaust.";
private static final String UPG_DESCRIPTION = "The next !M! attacks you play stun any enemy they hit for 1 turn. NL Exhaust.";
private static final CardType TYPE = CardType.SKILL;
private static final CardTarget TARGET = CardTarget.SELF;
private static final int MAGIC = 1;

public Menacing() {
super(ID, NAME, TEXTURE, COST, DESCRIPTION, TYPE, TARGET);
this.baseMagicNumber = MAGIC;
this.magicNumber = MAGIC;
this.exhaust = true;
}

@Override
public void upgrade() {
if(!upgraded) {
this.upgradeName();
this.upgradeMagicNumber(1);
this.rawDescription = UPG_DESCRIPTION;
this.initializeDescription();
}
}

@Override
public void useWithEffect(AbstractPlayer p, AbstractMonster m) {
AbstractDungeon.actionManager.addToBottom(new VFXAction(new MenacingEffect(), 0.5f));
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new MenacingPower(p, magicNumber)));
}
}
92 changes: 92 additions & 0 deletions src/main/java/infinitespire/effects/uniqueVFX/MenacingEffect.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
package infinitespire.effects.uniqueVFX;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.random.Random;
import com.megacrit.cardcrawl.vfx.AbstractGameEffect;
import infinitespire.InfiniteSpire;

import java.util.ArrayList;


public class MenacingEffect extends AbstractGameEffect {
private static final float PARTICLE_SIZE = 0.3f;
private static final float PARTICLE_SIZE_SUB = 0.1f;
private static final float PARTICLE_MAX_SIZE = 0.45f;
private static final float PARTICLE_MIN_SIZE = 0.1f;
private static final float PARTICLE_JITTER_SIZE = 0.025f;


private int amountOfMenace;
private ArrayList<MenaceParticle> particles = new ArrayList<>();

public MenacingEffect() {
this.amountOfMenace = 3;

for(int i = 0; i < amountOfMenace; i++){
Vector2 pos = getPositionOnCircle(i);
MenaceParticle particle = new MenaceParticle(pos.x, pos.y, PARTICLE_SIZE * Settings.scale - (PARTICLE_SIZE_SUB * Settings.scale * (i)), 0.5f);
particles.add(particle);
}
}

private Vector2 getPositionOnCircle(int pos){
Vector2 result = new Vector2();
result.x = AbstractDungeon.player.hb.cX + (AbstractDungeon.player.hb.width / 4f) * (float) Math.cos(15.0 * pos);
result.y = AbstractDungeon.player.hb.cY + (AbstractDungeon.player.hb.height / 4f) * (float) Math.sin(15.0 * pos);
return result;
}

@Override
public void update() {
for(MenaceParticle particle : particles){
particle.update();
}
particles.removeIf(MenaceParticle::isDead);
if(particles.size() <= 0) {
this.isDone = true;
}
}

@Override
public void render(SpriteBatch sb) {
for(MenaceParticle particle : particles){
particle.render(sb);
}
}

private static class MenaceParticle {
public float x, y, size, lifeSpan;

public MenaceParticle(float x, float y, float size, float lifeSpan) {
this.x = x;
this.y = y;
this.size = size;
this.lifeSpan = lifeSpan;
}

public void update() {
this.lifeSpan -= Gdx.graphics.getDeltaTime();
size = (new Random()).randomBoolean() ? size - PARTICLE_JITTER_SIZE * Settings.scale : size + PARTICLE_JITTER_SIZE * Settings.scale;
if(size < PARTICLE_MIN_SIZE * Settings.scale){
size = PARTICLE_MIN_SIZE * Settings.scale;
}else if(size > PARTICLE_MAX_SIZE * Settings.scale){
size = PARTICLE_MAX_SIZE * Settings.scale;
}
}

public boolean isDead(){
return lifeSpan <= 0.0f;
}

public void render(SpriteBatch sb) {
sb.setColor(Color.WHITE.cpy());

sb.draw(InfiniteSpire.getTexture("img/infinitespire/vfx/menacing.png"), this.x, this.y, 128f, 128f, 256f, 256f, size, size, 1f, 0, 0, 256, 256, false, false);
}
}
}
11 changes: 10 additions & 1 deletion src/main/java/infinitespire/helpers/CardHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@
import basemod.BaseMod;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.CardLibrary;
import infinitespire.InfiniteSpire;
import infinitespire.abstracts.BlackCard;
import infinitespire.patches.CardColorEnumPatch;

import java.util.ArrayList;
import java.util.Map;

public class CardHelper {
private static ArrayList<BlackCard> blackCards = new ArrayList<BlackCard>();
Expand Down Expand Up @@ -35,7 +38,13 @@ public static ArrayList<AbstractCard> getBlackRewardCards() {
}

public static BlackCard getRandomBlackCard() {
return blackCards.get(AbstractDungeon.cardRng.random(blackCards.size() - 1));
ArrayList<String> keys = new ArrayList<>();
for(Map.Entry<String, AbstractCard> c : CardLibrary.cards.entrySet()) {
if(c.getValue().color == CardColorEnumPatch.CardColorPatch.INFINITE_BLACK){
keys.add(c.getKey());
}
}
return (BlackCard) CardLibrary.cards.get(keys.get(AbstractDungeon.cardRng.random(0, keys.size() - 1)));
}

public static void addCard(AbstractCard card) {
Expand Down
Loading

0 comments on commit 39d693d

Please sign in to comment.