diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2018-05-24 15:53:20 -0400 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2018-05-24 15:53:20 -0400 |
| commit | 3eb8c7a8fca3f22475d53e30f0b90a6737f313fa (patch) | |
| tree | 1c0afbcb6712408fb791849969f9766dcdeb5868 /YWD/src/main/java/fyresmodjam/blessings/marks | |
Initial commit
Diffstat (limited to 'YWD/src/main/java/fyresmodjam/blessings/marks')
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; + } +} |
