summaryrefslogtreecommitdiff
path: root/YWD/src/main/java/fyresmodjam/blessings/marks
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2018-05-24 15:53:20 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2018-05-24 15:53:20 -0400
commit3eb8c7a8fca3f22475d53e30f0b90a6737f313fa (patch)
tree1c0afbcb6712408fb791849969f9766dcdeb5868 /YWD/src/main/java/fyresmodjam/blessings/marks
Initial commit
Diffstat (limited to 'YWD/src/main/java/fyresmodjam/blessings/marks')
-rw-r--r--YWD/src/main/java/fyresmodjam/blessings/marks/ArcaneNullityMark.java39
-rw-r--r--YWD/src/main/java/fyresmodjam/blessings/marks/BerserkingMark.java31
-rw-r--r--YWD/src/main/java/fyresmodjam/blessings/marks/FalseLifeMark.java59
-rw-r--r--YWD/src/main/java/fyresmodjam/blessings/marks/GuardingMark.java31
-rw-r--r--YWD/src/main/java/fyresmodjam/blessings/marks/HolyLightMark.java35
-rw-r--r--YWD/src/main/java/fyresmodjam/blessings/marks/HuntingMark.java40
-rw-r--r--YWD/src/main/java/fyresmodjam/blessings/marks/Mark.java28
-rw-r--r--YWD/src/main/java/fyresmodjam/blessings/marks/RetaliationMark.java53
-rw-r--r--YWD/src/main/java/fyresmodjam/blessings/marks/ScoutingMark.java17
-rw-r--r--YWD/src/main/java/fyresmodjam/blessings/marks/VampirismMark.java75
-rw-r--r--YWD/src/main/java/fyresmodjam/blessings/marks/WarMark.java31
11 files changed, 439 insertions, 0 deletions
diff --git a/YWD/src/main/java/fyresmodjam/blessings/marks/ArcaneNullityMark.java b/YWD/src/main/java/fyresmodjam/blessings/marks/ArcaneNullityMark.java
new file mode 100644
index 0000000..594bafd
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/blessings/marks/ArcaneNullityMark.java
@@ -0,0 +1,39 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class ArcaneNullityMark extends Mark {
+ public ArcaneNullityMark() {
+ super("Arcane Nullity");
+ }
+
+ @Override
+ public String benefit() {
+ return "Take no damage from magic";
+ }
+
+ @Override
+ public String drawback() {
+ return "Deal no damage with magic";
+ }
+
+ @Override
+ public float onIncomingDamage(LivingHurtEvent lhev,
+ float damageMultiplier) {
+ if (lhev.source.isMagicDamage()) {
+ lhev.setCanceled(true);
+ }
+
+ return damageMultiplier;
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent lhev,
+ float damageMultiplier) {
+ if (lhev.source.isMagicDamage()) {
+ lhev.setCanceled(true);
+ }
+
+ return damageMultiplier;
+ }
+}
diff --git a/YWD/src/main/java/fyresmodjam/blessings/marks/BerserkingMark.java b/YWD/src/main/java/fyresmodjam/blessings/marks/BerserkingMark.java
new file mode 100644
index 0000000..6ac0ca1
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/blessings/marks/BerserkingMark.java
@@ -0,0 +1,31 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class BerserkingMark extends Mark {
+ public BerserkingMark() {
+ super("Berserking");
+ }
+
+ @Override
+ public String benefit() {
+ return "Deal greatly increased damage";
+ }
+
+ @Override
+ public String drawback() {
+ return "Take greatly increased damage";
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ return damageMultiplier + .5f;
+ }
+
+ @Override
+ public float onIncomingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ return damageMultiplier + .5f;
+ }
+}
diff --git a/YWD/src/main/java/fyresmodjam/blessings/marks/FalseLifeMark.java b/YWD/src/main/java/fyresmodjam/blessings/marks/FalseLifeMark.java
new file mode 100644
index 0000000..74bda57
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/blessings/marks/FalseLifeMark.java
@@ -0,0 +1,59 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraft.entity.SharedMonsterAttributes;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class FalseLifeMark extends Mark {
+ public FalseLifeMark() {
+ super("False Life", false);
+ }
+
+ @Override
+ public String benefit() {
+ return "Rally from a fatal injury";
+ }
+
+ @Override
+ public String drawback() {
+ return "Lose permanent health to do so";
+ }
+
+ @Override
+ public float onIncomingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ float totalAmount = Math.max(0.5f,
+ event.ammount * damageMultiplier);
+
+ if (totalAmount > event.entityLiving.getMaxHealth()) {
+ event.setCanceled(true);
+
+ event.entityLiving.getEntityAttribute(
+ SharedMonsterAttributes.maxHealth)
+ .setBaseValue(event.entityLiving
+ .getMaxHealth()
+ / 0.75f);
+
+ event.entityLiving.setHealth(
+ event.entityLiving.getMaxHealth());
+
+ event.entityLiving
+ .addPotionEffect(new PotionEffect(
+ Potion.moveSpeed.id,
+ 30, 1));
+ event.entityLiving
+ .addPotionEffect(new PotionEffect(
+ Potion.resistance.id,
+ 20, 1));
+ event.entityLiving
+ .addPotionEffect(new PotionEffect(
+ Potion.damageBoost.id,
+ 20, 1));
+
+ return 0;
+ }
+
+ return damageMultiplier;
+ }
+}
diff --git a/YWD/src/main/java/fyresmodjam/blessings/marks/GuardingMark.java b/YWD/src/main/java/fyresmodjam/blessings/marks/GuardingMark.java
new file mode 100644
index 0000000..1914dcc
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/blessings/marks/GuardingMark.java
@@ -0,0 +1,31 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class GuardingMark extends Mark {
+ public GuardingMark() {
+ super("Guarding");
+ }
+
+ @Override
+ public String benefit() {
+ return "Take less damage";
+ }
+
+ @Override
+ public String drawback() {
+ return "Deal less damage";
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ return damageMultiplier - 1f;
+ }
+
+ @Override
+ public float onIncomingDamage(LivingHurtEvent lhev,
+ float damageMultiplier) {
+ return damageMultiplier - 1f;
+ }
+}
diff --git a/YWD/src/main/java/fyresmodjam/blessings/marks/HolyLightMark.java b/YWD/src/main/java/fyresmodjam/blessings/marks/HolyLightMark.java
new file mode 100644
index 0000000..4895b79
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/blessings/marks/HolyLightMark.java
@@ -0,0 +1,35 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class HolyLightMark extends Mark {
+ public HolyLightMark() {
+ super("Holy Light", false);
+ }
+
+ @Override
+ public String benefit() {
+ return "Deal greatly increased damage to undead";
+ }
+
+ @Override
+ public String drawback() {
+ return "Heal non-undead for a small amount of the damage you deal to them";
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ if (event.entityLiving.isEntityUndead()) {
+ return damageMultiplier + .5f;
+ }
+
+ float healed = Math.max(0.5f,
+ (event.ammount * damageMultiplier)
+ * 0.25f);
+
+ event.entityLiving.heal(healed);
+
+ return damageMultiplier;
+ }
+}
diff --git a/YWD/src/main/java/fyresmodjam/blessings/marks/HuntingMark.java b/YWD/src/main/java/fyresmodjam/blessings/marks/HuntingMark.java
new file mode 100644
index 0000000..c3349b8
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/blessings/marks/HuntingMark.java
@@ -0,0 +1,40 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.IRangedAttackMob;
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class HuntingMark extends Mark {
+ public HuntingMark() {
+ super("Hunting");
+ }
+
+ @Override
+ public String benefit() {
+ return "Deal greatly increased damage with projectile weapons";
+ }
+
+ @Override
+ public String drawback() {
+ return "Deal less damage from all other sources";
+ }
+
+ @Override
+ public void correctBlessing(Entity ent) {
+ if (!(ent instanceof IRangedAttackMob)) {
+ ent.getEntityData().setString("Blessing",
+ "MarkWar");
+ }
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ if (event.source.isProjectile()) {
+ return damageMultiplier + 0.4f;
+ }
+
+ return damageMultiplier - 0.2f;
+ }
+
+}
diff --git a/YWD/src/main/java/fyresmodjam/blessings/marks/Mark.java b/YWD/src/main/java/fyresmodjam/blessings/marks/Mark.java
new file mode 100644
index 0000000..b768dfa
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/blessings/marks/Mark.java
@@ -0,0 +1,28 @@
+package fyresmodjam.blessings.marks;
+
+import fyresmodjam.blessings.Blessing;
+import fyresmodjam.blessings.BlessingType;
+
+public abstract class Mark extends Blessing {
+ protected Mark(String name) {
+ this(name, true);
+ }
+
+ protected Mark(String name, boolean mobAppropriate) {
+ super(name, mobAppropriate);
+ }
+
+ public abstract String benefit();
+
+ public abstract String drawback();
+
+ @Override
+ public String description() {
+ return String.format("BENEFIT - %s\nDRAWBACK - %s", benefit(), drawback());
+ }
+
+ @Override
+ public BlessingType type() {
+ return BlessingType.MARK;
+ }
+}
diff --git a/YWD/src/main/java/fyresmodjam/blessings/marks/RetaliationMark.java b/YWD/src/main/java/fyresmodjam/blessings/marks/RetaliationMark.java
new file mode 100644
index 0000000..c138d11
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/blessings/marks/RetaliationMark.java
@@ -0,0 +1,53 @@
+package fyresmodjam.blessings.marks;
+
+import fyresmodjam.ModjamMod;
+import fyresmodjam.misc.ConfigData;
+import fyresmodjam.misc.DamageSources;
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class RetaliationMark extends Mark {
+ public RetaliationMark() {
+ super("Retaliation");
+ }
+
+ @Override
+ public String benefit() {
+ return "Have a chance to reflect attacks";
+ }
+
+ @Override
+ public String drawback() {
+ return "Have a chance for your attacks to be reflected";
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ doRetaliation(event, damageMultiplier);
+
+ return damageMultiplier;
+ }
+
+ @Override
+ public float onIncomingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ doRetaliation(event, damageMultiplier);
+
+ return damageMultiplier;
+ }
+
+ private void doRetaliation(LivingHurtEvent event,
+ float damageMultiplier) {
+ if (!event.source.damageType.equals("retaliation")) {
+ // Don't retaliate for retaliation
+ if (ModjamMod.r.nextDouble() < ConfigData.RETALIATION_CHANCE) {
+ event.entityLiving.attackEntityFrom(
+ DamageSources.retaliation,
+ Math.max(0.5f, event.ammount
+ * damageMultiplier));
+
+ event.setCanceled(true);
+ }
+ }
+ }
+}
diff --git a/YWD/src/main/java/fyresmodjam/blessings/marks/ScoutingMark.java b/YWD/src/main/java/fyresmodjam/blessings/marks/ScoutingMark.java
new file mode 100644
index 0000000..d1afdb0
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/blessings/marks/ScoutingMark.java
@@ -0,0 +1,17 @@
+package fyresmodjam.blessings.marks;
+
+public class ScoutingMark extends Mark {
+ public ScoutingMark() {
+ super("Scouting", false);
+ }
+
+ @Override
+ public String benefit() {
+ return "You can see traps without sneaking";
+ }
+
+ @Override
+ public String drawback() {
+ return "Take increased damage from traps";
+ }
+}
diff --git a/YWD/src/main/java/fyresmodjam/blessings/marks/VampirismMark.java b/YWD/src/main/java/fyresmodjam/blessings/marks/VampirismMark.java
new file mode 100644
index 0000000..63d242f
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/blessings/marks/VampirismMark.java
@@ -0,0 +1,75 @@
+package fyresmodjam.blessings.marks;
+
+import cpw.mods.fml.common.gameevent.TickEvent.ServerTickEvent;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.world.World;
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class VampirismMark extends Mark {
+ public VampirismMark() {
+ super("Vampirism", false);
+ }
+
+ @Override
+ public String benefit() {
+ return "Heal a substantial amount of the damage done to enemies";
+ }
+
+ @Override
+ public String drawback() {
+ return "Greatly weakened during the day and ignited in direct sunlight";
+ }
+
+ @Override
+ public float onIncomingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ Entity targetEntity = event.entity;
+
+ if (targetEntity.getBrightness(1.0F) > 0.5F
+ && canSeeTheWorld(targetEntity.worldObj,
+ targetEntity)) {
+ return damageMultiplier + 0.4F;
+ }
+
+ return damageMultiplier;
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ Entity sourceEntity = event.source.getEntity();
+
+ if (sourceEntity instanceof EntityLivingBase) {
+ ((EntityLivingBase) sourceEntity).heal(
+ (event.ammount * damageMultiplier)
+ * 0.25F);
+
+ boolean seeTheSky = canSeeTheWorld(
+ sourceEntity.worldObj,
+ sourceEntity);
+
+ if (sourceEntity.getBrightness(1.0F) > 0.5F
+ && seeTheSky) {
+ return damageMultiplier - 0.4F;
+ }
+ }
+
+ return damageMultiplier;
+ }
+
+ @Override
+ public void commonTick(ServerTickEvent stev, EntityPlayer play) {
+ if (play.getBrightness(1.0f) > 0.5f
+ && canSeeTheWorld(play.worldObj, play)
+ && play.ticksExisted % 20 == 0) {
+ play.setFire(5);
+ }
+ }
+
+ private boolean canSeeTheWorld(World wld, Entity ent) {
+ return wld.canBlockSeeTheSky((int) (ent.posX),
+ (int) (ent.posY), (int) (ent.posZ));
+ }
+}
diff --git a/YWD/src/main/java/fyresmodjam/blessings/marks/WarMark.java b/YWD/src/main/java/fyresmodjam/blessings/marks/WarMark.java
new file mode 100644
index 0000000..208a1e4
--- /dev/null
+++ b/YWD/src/main/java/fyresmodjam/blessings/marks/WarMark.java
@@ -0,0 +1,31 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class WarMark extends Mark {
+ public WarMark() {
+ super("War");
+ }
+
+ @Override
+ public String benefit() {
+ return "Deal greatly increased damage with melee weapons";
+ }
+
+ @Override
+ public String drawback() {
+ return "Deal less damage from all other sources";
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ if ((event.source.getDamageType().equals("player")
+ || event.source.getDamageType()
+ .equals("mob"))) {
+ return damageMultiplier + 0.4f;
+ }
+
+ return damageMultiplier - 0.2f;
+ }
+}