summaryrefslogtreecommitdiff
path: root/src/main/java/fyresmodjam/blessings/marks
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/fyresmodjam/blessings/marks')
-rw-r--r--src/main/java/fyresmodjam/blessings/marks/ArcaneNullityMark.java36
-rw-r--r--src/main/java/fyresmodjam/blessings/marks/BerserkingMark.java28
-rw-r--r--src/main/java/fyresmodjam/blessings/marks/FalseLifeMark.java58
-rw-r--r--src/main/java/fyresmodjam/blessings/marks/GuardingMark.java27
-rw-r--r--src/main/java/fyresmodjam/blessings/marks/HolyLightMark.java32
-rw-r--r--src/main/java/fyresmodjam/blessings/marks/HuntingMark.java37
-rw-r--r--src/main/java/fyresmodjam/blessings/marks/Mark.java15
-rw-r--r--src/main/java/fyresmodjam/blessings/marks/RetaliationMark.java57
-rw-r--r--src/main/java/fyresmodjam/blessings/marks/ScoutingMark.java13
-rw-r--r--src/main/java/fyresmodjam/blessings/marks/VampirismMark.java67
-rw-r--r--src/main/java/fyresmodjam/blessings/marks/WarMark.java28
11 files changed, 398 insertions, 0 deletions
diff --git a/src/main/java/fyresmodjam/blessings/marks/ArcaneNullityMark.java b/src/main/java/fyresmodjam/blessings/marks/ArcaneNullityMark.java
new file mode 100644
index 0000000..3c127df
--- /dev/null
+++ b/src/main/java/fyresmodjam/blessings/marks/ArcaneNullityMark.java
@@ -0,0 +1,36 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class ArcaneNullityMark extends Mark {
+
+ @Override
+ public String name() {
+ return "Arcane Nullity";
+ }
+
+ @Override
+ public String description() {
+ return "BENEFIT - Take no damage from magic\nDRAWBACK - Deal no damage with magic";
+ }
+
+ @Override
+ public float onIncomingDamage(LivingHurtEvent lhev,
+ float damageMultiplier) {
+ if (lhev.getSource().isMagicDamage()) {
+ lhev.setCanceled(true);
+ }
+
+ return damageMultiplier;
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent lhev,
+ float damageMultiplier) {
+ if (lhev.getSource().isMagicDamage()) {
+ lhev.setCanceled(true);
+ }
+
+ return damageMultiplier;
+ }
+}
diff --git a/src/main/java/fyresmodjam/blessings/marks/BerserkingMark.java b/src/main/java/fyresmodjam/blessings/marks/BerserkingMark.java
new file mode 100644
index 0000000..a592175
--- /dev/null
+++ b/src/main/java/fyresmodjam/blessings/marks/BerserkingMark.java
@@ -0,0 +1,28 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class BerserkingMark extends Mark {
+
+ @Override
+ public String name() {
+ return "Berserking";
+ }
+
+ @Override
+ public String description() {
+ return "BENEFIT - Deal greatly increased damage\nDRAWBACK - 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/src/main/java/fyresmodjam/blessings/marks/FalseLifeMark.java b/src/main/java/fyresmodjam/blessings/marks/FalseLifeMark.java
new file mode 100644
index 0000000..88f467a
--- /dev/null
+++ b/src/main/java/fyresmodjam/blessings/marks/FalseLifeMark.java
@@ -0,0 +1,58 @@
+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 {
+
+ @Override
+ public String name() {
+ return "False Life";
+ }
+
+ @Override
+ public String description() {
+ return "BENEFIT - Rally from a fatal injury\nDRAWBACK - Lose permanent health to do so";
+ }
+
+ @Override
+ public float onIncomingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ float totalAmount = Math.max(0.5f,
+ event.getAmount() * damageMultiplier);
+
+ if (totalAmount > event.getEntityLiving().getMaxHealth()) {
+ event.setCanceled(true);
+
+ event.getEntityLiving().getEntityAttribute(
+ SharedMonsterAttributes.MAX_HEALTH)
+ .setBaseValue(event.getEntityLiving()
+ .getMaxHealth()
+ / 0.75f);
+
+ event.getEntityLiving().setHealth(
+ event.getEntityLiving().getMaxHealth());
+
+ // TODO figure out potions
+ /*
+ event.getEntityLiving()
+ .addPotionEffect(new PotionEffect(
+ Potion.moveSpeed.id,
+ 30, 1));
+ event.getEntityLiving()
+ .addPotionEffect(new PotionEffect(
+ Potion.resistance.id,
+ 20, 1));
+ event.getEntityLiving()
+ .addPotionEffect(new PotionEffect(
+ Potion.damageBoost.id,
+ 20, 1));
+ */
+ return 0;
+ }
+
+ return damageMultiplier;
+ }
+}
diff --git a/src/main/java/fyresmodjam/blessings/marks/GuardingMark.java b/src/main/java/fyresmodjam/blessings/marks/GuardingMark.java
new file mode 100644
index 0000000..db4fc97
--- /dev/null
+++ b/src/main/java/fyresmodjam/blessings/marks/GuardingMark.java
@@ -0,0 +1,27 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class GuardingMark extends Mark {
+ @Override
+ public String name() {
+ return "Guarding";
+ }
+
+ @Override
+ public String description() {
+ return "BENEFIT - Take less damage\nDRAWBACK - 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/src/main/java/fyresmodjam/blessings/marks/HolyLightMark.java b/src/main/java/fyresmodjam/blessings/marks/HolyLightMark.java
new file mode 100644
index 0000000..96d5bab
--- /dev/null
+++ b/src/main/java/fyresmodjam/blessings/marks/HolyLightMark.java
@@ -0,0 +1,32 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class HolyLightMark extends Mark {
+
+ @Override
+ public String name() {
+ return "Holy Light";
+ }
+
+ @Override
+ public String description() {
+ return "BENEFIT - Deal greatly increased damage to undead\nDRAWBACK - Heal non-undead for a small amount";
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ if (event.getEntityLiving().isEntityUndead()) {
+ return damageMultiplier + .5f;
+ }
+
+ float healed = Math.max(0.5f,
+ (event.getAmount() * damageMultiplier)
+ * 0.25f);
+
+ event.getEntityLiving().heal(healed);
+
+ return damageMultiplier;
+ }
+}
diff --git a/src/main/java/fyresmodjam/blessings/marks/HuntingMark.java b/src/main/java/fyresmodjam/blessings/marks/HuntingMark.java
new file mode 100644
index 0000000..b92ee7b
--- /dev/null
+++ b/src/main/java/fyresmodjam/blessings/marks/HuntingMark.java
@@ -0,0 +1,37 @@
+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 {
+
+ @Override
+ public String name() {
+ return "Hunting";
+ }
+
+ @Override
+ public String description() {
+ return "BENEFIT - Deal greatly increased damage with projectile weapons\nDRAWBACK - Deal less damage with all other weapons";
+ }
+
+ @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.getSource().isProjectile()) {
+ return damageMultiplier + 0.4f;
+ }
+
+ return damageMultiplier - 0.2f;
+ }
+
+}
diff --git a/src/main/java/fyresmodjam/blessings/marks/Mark.java b/src/main/java/fyresmodjam/blessings/marks/Mark.java
new file mode 100644
index 0000000..0181fd8
--- /dev/null
+++ b/src/main/java/fyresmodjam/blessings/marks/Mark.java
@@ -0,0 +1,15 @@
+package fyresmodjam.blessings.marks;
+
+import fyresmodjam.blessings.Blessing;
+
+public abstract class Mark extends Blessing {
+ @Override
+ public boolean hasCustomName() {
+ return true;
+ }
+
+ @Override
+ public String customName() {
+ return "Mark of " + name();
+ }
+}
diff --git a/src/main/java/fyresmodjam/blessings/marks/RetaliationMark.java b/src/main/java/fyresmodjam/blessings/marks/RetaliationMark.java
new file mode 100644
index 0000000..a0537b2
--- /dev/null
+++ b/src/main/java/fyresmodjam/blessings/marks/RetaliationMark.java
@@ -0,0 +1,57 @@
+package fyresmodjam.blessings.marks;
+
+import fyresmodjam.ModjamMod;
+import fyresmodjam.misc.DamageSources;
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class RetaliationMark extends Mark {
+
+ private static final double RETALIATION_CHANCE = 0.05;
+
+ @Override
+ public String name() {
+ return "Retaliation";
+ }
+
+ @Override
+ public String description() {
+ return "BENEFIT - Have a chance to reflect attacks\nDRAWBACK - Have a chance for your attacks to be reflected";
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ if (!event.getSource().damageType.equals("retaliation")) {
+ // Don't retaliate for retaliation
+ if (ModjamMod.r.nextDouble() < RETALIATION_CHANCE) {
+ event.getEntityLiving().attackEntityFrom(
+ DamageSources.retaliation,
+ Math.max(0.5f, event
+ .getAmount()
+ * damageMultiplier));
+
+ event.setCanceled(true);
+ }
+ }
+
+ return damageMultiplier;
+ }
+
+ @Override
+ public float onIncomingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ if (!event.getSource().damageType.equals("retaliation")) {
+ // Don't retaliate for retaliation
+ if (ModjamMod.r.nextDouble() < RETALIATION_CHANCE) {
+ event.getEntityLiving().attackEntityFrom(
+ DamageSources.retaliation,
+ Math.max(0.5f, event.getAmount()
+ * damageMultiplier));
+
+ event.setCanceled(true);
+ }
+ }
+
+ return damageMultiplier;
+ }
+}
diff --git a/src/main/java/fyresmodjam/blessings/marks/ScoutingMark.java b/src/main/java/fyresmodjam/blessings/marks/ScoutingMark.java
new file mode 100644
index 0000000..1995c14
--- /dev/null
+++ b/src/main/java/fyresmodjam/blessings/marks/ScoutingMark.java
@@ -0,0 +1,13 @@
+package fyresmodjam.blessings.marks;
+
+public class ScoutingMark extends Mark {
+ @Override
+ public String name() {
+ return "Scouting";
+ }
+
+ @Override
+ public String description() {
+ return "BENEFIT - You can see traps without sneaking\nDRAWBACK - Take increased damage from traps";
+ }
+}
diff --git a/src/main/java/fyresmodjam/blessings/marks/VampirismMark.java b/src/main/java/fyresmodjam/blessings/marks/VampirismMark.java
new file mode 100644
index 0000000..5aa1da4
--- /dev/null
+++ b/src/main/java/fyresmodjam/blessings/marks/VampirismMark.java
@@ -0,0 +1,67 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent.ServerTickEvent;
+
+public class VampirismMark extends Mark {
+
+ @Override
+ public String name() {
+ return "Vampirism";
+ }
+
+ @Override
+ public String description() {
+ return "BENEFIT - Heal a substantial amount of the damage done to enemies\nDRAWBACK - Greatly weakened during the day and ignited in direct sunlight";
+ }
+
+ @Override
+ public float onIncomingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ if (event.getEntity().getBrightness() > 0.5F && event
+ .getEntity().world.canBlockSeeSky(event
+ .getEntity()
+ .getPosition())) {
+ return damageMultiplier + 0.4F;
+ }
+
+ return damageMultiplier;
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ Entity trueSource = event.getSource().getTrueSource();
+
+ if (trueSource instanceof EntityLivingBase) {
+ ((EntityLivingBase) trueSource)
+ .heal((event.getAmount()
+ * damageMultiplier)
+ * 0.25F);
+
+ boolean seeTheSky = trueSource.world
+ .canBlockSeeSky(trueSource
+ .getPosition());
+ if (trueSource.getBrightness() > 0.5F
+ && seeTheSky) {
+ return damageMultiplier - 0.4F;
+ }
+ }
+
+ return damageMultiplier;
+ }
+
+ @Override
+ public void commonTick(ServerTickEvent stev, EntityPlayer play) {
+ boolean seeTheSky = play.world
+ .canBlockSeeSky(play.getPosition());
+
+ if (play.getBrightness() > 0.5f && seeTheSky
+ && play.ticksExisted % 20 == 0) {
+ play.setFire(5);
+ }
+ }
+}
diff --git a/src/main/java/fyresmodjam/blessings/marks/WarMark.java b/src/main/java/fyresmodjam/blessings/marks/WarMark.java
new file mode 100644
index 0000000..e4276c7
--- /dev/null
+++ b/src/main/java/fyresmodjam/blessings/marks/WarMark.java
@@ -0,0 +1,28 @@
+package fyresmodjam.blessings.marks;
+
+import net.minecraftforge.event.entity.living.LivingHurtEvent;
+
+public class WarMark extends Mark {
+
+ @Override
+ public String name() {
+ return "War";
+ }
+
+ @Override
+ public String description() {
+ return "BENEFIT - Deal greatly increased damage with melee weapons\nDRAWBACK - Deal less damage with all other weapons";
+ }
+
+ @Override
+ public float onOutgoingDamage(LivingHurtEvent event,
+ float damageMultiplier) {
+ if ((event.getSource().getDamageType().equals("player")
+ || event.getSource().getDamageType()
+ .equals("mob"))) {
+ return damageMultiplier + 0.4f;
+ }
+
+ return damageMultiplier - 0.2f;
+ }
+}