diff options
Diffstat (limited to 'src/main/java/fyresmodjam/blessings/marks')
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; + } +} |
