Skip to content

Commit

Permalink
Big update read commit for all information
Browse files Browse the repository at this point in the history
- Updated for BaseMod and MTS 3.0.0
- Package restructure (Will need to reimport)
- Changed when monsters choose their target.
- Fix intent tips to show what the monster is doing as well as their
  target for their attack.
- Fixed minions being effected by Blights (I hope, hard for me to test)
- Fixed minions triggering relics on death.
  • Loading branch information
MikePAccnt committed Aug 24, 2018
1 parent bfac813 commit 2fb94f0
Show file tree
Hide file tree
Showing 22 changed files with 598 additions and 269 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@
<dependency>
<groupId>com.evacipated.cardcrawl</groupId>
<artifactId>ModTheSpire</artifactId>
<version>2.8.0</version>
<version>3.0.0</version>
<scope>system</scope>
<systemPath>${basedir}/../lib/ModTheSpire.jar</systemPath>
</dependency>
<dependency>
<groupId>com.evacipated.cardcrawl</groupId>
<artifactId>BaseMod</artifactId>
<version>2.14.0</version>
<version>3.0.0</version>
<scope>system</scope>
<systemPath>${basedir}/../lib/BaseMod.jar</systemPath>
</dependency>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
package kobting.friendlyminions;

import basemod.BaseMod;
import basemod.interfaces.*;
import cards.MonsterCard;
import characters.AbstractPlayerWithMinions;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import kobting.friendlyminions.cards.MonsterCard;
import kobting.friendlyminions.characters.AbstractPlayerWithMinions;
import com.evacipated.cardcrawl.modthespire.lib.SpireInitializer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.rooms.AbstractRoom;
import helpers.BasePlayerMinionHelper;
import kobting.friendlyminions.helpers.BasePlayerMinionHelper;

@SpireInitializer
public class Initializer implements EditCardsSubscriber, PostBattleSubscriber, EditKeywordsSubscriber {
public class Initializer implements
EditCardsSubscriber, PostBattleSubscriber,
EditKeywordsSubscriber {

//Used by @SpireInitializer
public static void initialize(){
Expand Down Expand Up @@ -45,4 +46,5 @@ public void receiveEditKeywords() {
BaseMod.addKeyword(minionKeyword, "A friendly monster that fights for you and has a chance to receive #yVulnerable, #yWeak, #yFrail, or #yStrength loss instead of you.");

}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package actions;
package kobting.friendlyminions.actions;

import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.cards.AbstractCard;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package actions;
package kobting.friendlyminions.actions;

public class ChooseActionInfo {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
package cards;
package kobting.friendlyminions.cards;

import basemod.abstracts.CustomCard;

public abstract class CustomSummonCard extends CustomCard {

public CustomSummonCard(String id, String name, String img, int cost, String rawDescription, CardType type, CardColor color, CardRarity rarity, CardTarget target, int cardPool) {
super(id, name, img, cost, rawDescription, type, color, rarity, target, cardPool);
}

public CustomSummonCard(String id, String name, String img, int cost, String rawDescription, CardType type, CardColor color, CardRarity rarity, CardTarget target) {
super(id, name, img, cost, rawDescription, type, color, rarity, target);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cards;
package kobting.friendlyminions.cards;

import basemod.abstracts.CustomCard;
import com.megacrit.cardcrawl.cards.AbstractCard;
Expand All @@ -21,6 +21,7 @@ public void upgrade() {

}


@Override
public AbstractCard makeCopy() {
return new MonsterCard();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,22 @@
package characters;
package kobting.friendlyminions.characters;

import basemod.abstracts.CustomPlayer;
import basemod.animations.AbstractAnimation;
import basemod.animations.G3DJAnimation;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
import com.megacrit.cardcrawl.actions.common.DamageAction;
import com.megacrit.cardcrawl.cards.DamageInfo;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.core.CardCrawlGame;
import com.megacrit.cardcrawl.core.EnergyManager;
import com.megacrit.cardcrawl.core.Settings;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.helpers.Hitbox;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.monsters.MonsterGroup;
import com.megacrit.cardcrawl.powers.*;
import com.megacrit.cardcrawl.screens.CharSelectInfo;
import enums.MonsterIntentEnum;
import monsters.AbstractFriendlyMonster;
import kobting.friendlyminions.enums.MonsterIntentEnum;
import kobting.friendlyminions.helpers.MonsterHelper;
import kobting.friendlyminions.monsters.AbstractFriendlyMonster;

import java.util.ArrayList;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public abstract class AbstractPlayerWithMinions extends CustomPlayer {
public abstract class AbstractPlayerWithMinions extends CustomPlayer{

public MonsterGroup minions;
private AbstractFriendlyMonster[] p_minions;
Expand Down Expand Up @@ -61,6 +50,11 @@ public void preBattlePrep() {
clearMinions();
}

@Override
public void applyStartOfTurnRelics() {
super.applyStartOfTurnRelics();
}

@Override
public void damage(DamageInfo info) {

Expand All @@ -72,7 +66,13 @@ public void damage(DamageInfo info) {
}

if(attackingMonster && minions.monsters.size() > 0) {
damageFriendlyMonster(info);
AbstractDungeon.actionManager.addToBottom(new DamageAction(MonsterHelper.getTarget((AbstractMonster) info.owner), info, AbstractGameAction.AttackEffect.NONE));
//damageFriendlyMonster(info);
}
else if(attackingMonster && minions.monsters.size() <= 0) {
MonsterHelper.switchTarget((AbstractMonster) info.owner, null);
info.applyPowers(info.owner, this);
super.damage(info);
}
else {
super.damage(info);
Expand Down Expand Up @@ -152,7 +152,7 @@ public boolean addMinion(AbstractFriendlyMonster minion){
} else {
minion.init();
minion.usePreBattleAction();
minion.useUniversalPreBattleAction();
//minion.useUniversalPreBattleAction(); //This might be causing blights to effect minions
minion.showHealthBar();
minions.add(minion);
return true;
Expand All @@ -173,10 +173,10 @@ public void clearMinions(){

private boolean checkAttackMonsterIntent(AbstractMonster.Intent intent) {

if(intent == MonsterIntentEnum.ATTACK_MONSTER
|| intent == MonsterIntentEnum.ATTACK_MONSTER_BUFF
|| intent == MonsterIntentEnum.ATTACK_MONSTER_DEBUFF
|| intent == MonsterIntentEnum.ATTACK_MONSTER_DEFEND) {
if(intent == MonsterIntentEnum.ATTACK_MINION
|| intent == MonsterIntentEnum.ATTACK_MINION_BUFF
|| intent == MonsterIntentEnum.ATTACK_MINION_DEBUFF
|| intent == MonsterIntentEnum.ATTACK_MINION_DEFEND) {

return true;
}
Expand All @@ -185,18 +185,6 @@ private boolean checkAttackMonsterIntent(AbstractMonster.Intent intent) {

}

/* This causes a delay when attacking the monster but I can't find another way around it other
* than patching every monsters attacks. Which isn't realistic.
*
* This is needed because if the player is blocking or intangible or has any effects applied it
* would count towards how the minions are damaged.
*/
private void damageFriendlyMonster(DamageInfo info){
int randomMinionIndex = AbstractDungeon.aiRng.random(minions.monsters.size() - 1);
AbstractFriendlyMonster minion = (AbstractFriendlyMonster) minions.monsters.get(randomMinionIndex);
info.applyPowers(info.owner, minion);
AbstractDungeon.actionManager.addToBottom(new DamageAction(minions.monsters.get(randomMinionIndex), info, AbstractGameAction.AttackEffect.NONE));
}

public boolean hasMinions() {
return minions.monsters.size() > 0;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package characters;
package kobting.friendlyminions.characters;

import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.screens.CharSelectInfo;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
package enums;
package kobting.friendlyminions.enums;

import com.evacipated.cardcrawl.modthespire.lib.SpireEnum;
import com.megacrit.cardcrawl.monsters.AbstractMonster;

public class MonsterIntentEnum {

@SpireEnum
public static AbstractMonster.Intent ATTACK_MONSTER;
public static AbstractMonster.Intent ATTACK_MINION;

@SpireEnum
public static AbstractMonster.Intent ATTACK_MONSTER_BUFF;
public static AbstractMonster.Intent ATTACK_MINION_BUFF;

@SpireEnum
public static AbstractMonster.Intent ATTACK_MONSTER_DEBUFF;
public static AbstractMonster.Intent ATTACK_MINION_DEBUFF;

@SpireEnum
public static AbstractMonster.Intent ATTACK_MONSTER_DEFEND;
public static AbstractMonster.Intent ATTACK_MINION_DEFEND;

@SpireEnum
public static AbstractMonster.Intent DEBUFF_MONSTER;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
package helpers;
package kobting.friendlyminions.helpers;

import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.monsters.MonsterGroup;
import monsters.AbstractFriendlyMonster;
import patches.PlayerAddFieldsPatch;
import kobting.friendlyminions.monsters.AbstractFriendlyMonster;
import kobting.friendlyminions.patches.PlayerAddFieldsPatch;

import java.util.ArrayList;
import java.util.Objects;
import java.util.Optional;

public class BasePlayerMinionHelper {

Expand All @@ -30,7 +26,7 @@ public static boolean addMinion(AbstractPlayer player, AbstractFriendlyMonster m
} else {
minionToAdd.init();
minionToAdd.usePreBattleAction();
minionToAdd.useUniversalPreBattleAction();
//minionToAdd.useUniversalPreBattleAction();
minionToAdd.showHealthBar();
minions.add(minionToAdd);
return true;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package helpers;
package kobting.friendlyminions.helpers;

public class MinionConfigHelper {

Expand Down
48 changes: 48 additions & 0 deletions src/main/java/kobting/friendlyminions/helpers/MonsterHelper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package kobting.friendlyminions.helpers;

import com.megacrit.cardcrawl.monsters.AbstractMonster;
import kobting.friendlyminions.enums.MonsterIntentEnum;
import kobting.friendlyminions.monsters.AbstractFriendlyMonster;
import kobting.friendlyminions.patches.MonsterAddFieldsPatch;

public class MonsterHelper {

public static void setTarget(AbstractMonster monster, AbstractFriendlyMonster target) {
MonsterAddFieldsPatch.f_target.set(monster, target);
}

public static AbstractFriendlyMonster getTarget(AbstractMonster monster) {
return MonsterAddFieldsPatch.f_target.get(monster);
}


/**
* Use to switch a monsters current target to someone else. Passing in null will cause
* the target to be the player.
* @param monster
* @param newTarget
*/
public static void switchTarget(AbstractMonster monster, AbstractFriendlyMonster newTarget) {

AbstractMonster.Intent intent = monster.intent;

if(newTarget == null) {
if(intent == MonsterIntentEnum.ATTACK_MINION) {
monster.intent = AbstractMonster.Intent.ATTACK;
}
else if(intent == MonsterIntentEnum.ATTACK_MINION_BUFF) {
monster.intent = AbstractMonster.Intent.ATTACK_BUFF;
}
else if(intent == MonsterIntentEnum.ATTACK_MINION_DEBUFF) {
monster.intent = AbstractMonster.Intent.ATTACK_DEBUFF;
}
else if(intent == MonsterIntentEnum.ATTACK_MINION_DEFEND) {
monster.intent = AbstractMonster.Intent.ATTACK_DEFEND;
}

}

setTarget(monster, newTarget);
monster.applyPowers();
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
package monsters;
package kobting.friendlyminions.monsters;

import actions.ChooseAction;
import actions.ChooseActionInfo;
import cards.MonsterCard;
import characters.AbstractPlayerWithMinions;
import com.badlogic.gdx.graphics.Color;
import kobting.friendlyminions.actions.ChooseAction;
import kobting.friendlyminions.actions.ChooseActionInfo;
import kobting.friendlyminions.cards.MonsterCard;
import kobting.friendlyminions.characters.AbstractPlayerWithMinions;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.vfx.TintEffect;
import helpers.BasePlayerMinionHelper;
import kobting.friendlyminions.helpers.BasePlayerMinionHelper;

import java.util.ArrayList;

Expand Down Expand Up @@ -63,9 +62,10 @@ public void die() {
if(!(AbstractDungeon.player instanceof AbstractPlayerWithMinions)){
BasePlayerMinionHelper.removeMinion(AbstractDungeon.player, this);
} else {
this.isDead = true;
((AbstractPlayerWithMinions)AbstractDungeon.player).removeMinion(this);
}
super.die();
super.die(false);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package patches;
package kobting.friendlyminions.patches;

import characters.AbstractPlayerWithMinions;
import kobting.friendlyminions.characters.AbstractPlayerWithMinions;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.evacipated.cardcrawl.modthespire.lib.SpireReturn;
import com.megacrit.cardcrawl.actions.AbstractGameAction;
Expand All @@ -10,10 +10,9 @@
import com.megacrit.cardcrawl.monsters.AbstractMonster;
import com.megacrit.cardcrawl.monsters.MonsterGroup;
import com.megacrit.cardcrawl.powers.*;
import enums.MonsterIntentEnum;
import helpers.BasePlayerMinionHelper;
import helpers.MinionConfigHelper;
import monsters.AbstractFriendlyMonster;
import kobting.friendlyminions.helpers.BasePlayerMinionHelper;
import kobting.friendlyminions.helpers.MinionConfigHelper;
import kobting.friendlyminions.monsters.AbstractFriendlyMonster;

import java.lang.reflect.Field;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package patches;
package kobting.friendlyminions.patches;

import cards.CustomSummonCard;
import characters.AbstractPlayerWithMinions;
import kobting.friendlyminions.cards.CustomSummonCard;
import kobting.friendlyminions.characters.AbstractPlayerWithMinions;
import com.evacipated.cardcrawl.modthespire.lib.SpirePatch;
import com.evacipated.cardcrawl.modthespire.lib.SpireReturn;
import com.megacrit.cardcrawl.cards.AbstractCard;
import com.megacrit.cardcrawl.characters.AbstractPlayer;
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
import helpers.BasePlayerMinionHelper;
import kobting.friendlyminions.helpers.BasePlayerMinionHelper;

@SpirePatch(
cls = "com.megacrit.cardcrawl.cards.AbstractCard",
Expand Down
Loading

0 comments on commit 2fb94f0

Please sign in to comment.