Added more augmentations for the Lava Ritual.
This commit is contained in:
parent
731ba99fa3
commit
6b27896859
4 changed files with 116 additions and 3 deletions
|
@ -2,6 +2,7 @@
|
||||||
Version 2.1.0-67
|
Version 2.1.0-67
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
- Added the Destructive Will effect to the Ritual of the Green Grove. This ritual now is done~
|
- Added the Destructive Will effect to the Ritual of the Green Grove. This ritual now is done~
|
||||||
|
- Added more augmentations for the Lava Ritual.
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
Version 2.1.0-66
|
Version 2.1.0-66
|
||||||
|
|
|
@ -7,10 +7,14 @@ import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
|
import net.minecraft.init.MobEffects;
|
||||||
import net.minecraft.potion.PotionEffect;
|
import net.minecraft.potion.PotionEffect;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.text.ITextComponent;
|
||||||
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import WayofTime.bloodmagic.api.BloodMagicAPI;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.ritual.AreaDescriptor;
|
import WayofTime.bloodmagic.api.ritual.AreaDescriptor;
|
||||||
import WayofTime.bloodmagic.api.ritual.EnumRuneType;
|
import WayofTime.bloodmagic.api.ritual.EnumRuneType;
|
||||||
|
@ -29,20 +33,32 @@ public class RitualLava extends Ritual
|
||||||
{
|
{
|
||||||
public static final String LAVA_RANGE = "lavaRange";
|
public static final String LAVA_RANGE = "lavaRange";
|
||||||
public static final String FIRE_FUSE_RANGE = "fireFuse";
|
public static final String FIRE_FUSE_RANGE = "fireFuse";
|
||||||
|
public static final String FIRE_RESIST_RANGE = "fireResist";
|
||||||
|
public static final String FIRE_DAMAGE_RANGE = "fireDamage";
|
||||||
public static final double vengefulWillDrain = 1;
|
public static final double vengefulWillDrain = 1;
|
||||||
|
public static final double steadfastWillDrain = 0.5;
|
||||||
|
public static final double corrosiveWillDrain = 0.2;
|
||||||
|
|
||||||
|
public int timer = 0;
|
||||||
|
public static final int corrosiveRefreshTime = 20;
|
||||||
|
|
||||||
public RitualLava()
|
public RitualLava()
|
||||||
{
|
{
|
||||||
super("ritualLava", 0, 10000, "ritual." + Constants.Mod.MODID + ".lavaRitual");
|
super("ritualLava", 0, 10000, "ritual." + Constants.Mod.MODID + ".lavaRitual");
|
||||||
addBlockRange(LAVA_RANGE, new AreaDescriptor.Rectangle(new BlockPos(0, 1, 0), 1));
|
addBlockRange(LAVA_RANGE, new AreaDescriptor.Rectangle(new BlockPos(0, 1, 0), 1));
|
||||||
addBlockRange(FIRE_FUSE_RANGE, new AreaDescriptor.Rectangle(new BlockPos(-2, -2, -2), 5));
|
addBlockRange(FIRE_FUSE_RANGE, new AreaDescriptor.Rectangle(new BlockPos(-2, -2, -2), 5));
|
||||||
|
addBlockRange(FIRE_RESIST_RANGE, new AreaDescriptor.Rectangle(new BlockPos(0, 0, 0), 1));
|
||||||
|
addBlockRange(FIRE_DAMAGE_RANGE, new AreaDescriptor.Rectangle(new BlockPos(0, 0, 0), 1));
|
||||||
setMaximumVolumeAndDistanceOfRange(LAVA_RANGE, 9, 3, 3);
|
setMaximumVolumeAndDistanceOfRange(LAVA_RANGE, 9, 3, 3);
|
||||||
setMaximumVolumeAndDistanceOfRange(FIRE_FUSE_RANGE, 0, 10, 10);
|
setMaximumVolumeAndDistanceOfRange(FIRE_FUSE_RANGE, 0, 10, 10);
|
||||||
|
setMaximumVolumeAndDistanceOfRange(FIRE_RESIST_RANGE, 0, 10, 10);
|
||||||
|
setMaximumVolumeAndDistanceOfRange(FIRE_DAMAGE_RANGE, 0, 10, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void performRitual(IMasterRitualStone masterRitualStone)
|
public void performRitual(IMasterRitualStone masterRitualStone)
|
||||||
{
|
{
|
||||||
|
timer++;
|
||||||
World world = masterRitualStone.getWorldObj();
|
World world = masterRitualStone.getWorldObj();
|
||||||
SoulNetwork network = NetworkHelper.getSoulNetwork(masterRitualStone.getOwner());
|
SoulNetwork network = NetworkHelper.getSoulNetwork(masterRitualStone.getOwner());
|
||||||
int currentEssence = network.getCurrentEssence();
|
int currentEssence = network.getCurrentEssence();
|
||||||
|
@ -82,9 +98,10 @@ public class RitualLava extends Ritual
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
network.syphon(getRefreshCost() * totalEffects);
|
|
||||||
|
|
||||||
double vengefulWill = this.getWillRespectingConfig(world, pos, EnumDemonWillType.VENGEFUL, willConfig);
|
double vengefulWill = this.getWillRespectingConfig(world, pos, EnumDemonWillType.VENGEFUL, willConfig);
|
||||||
|
double steadfastWill = this.getWillRespectingConfig(world, pos, EnumDemonWillType.STEADFAST, willConfig);
|
||||||
|
double corrosiveWill = this.getWillRespectingConfig(world, pos, EnumDemonWillType.CORROSIVE, willConfig);
|
||||||
|
|
||||||
if (vengefulWill >= vengefulWillDrain)
|
if (vengefulWill >= vengefulWillDrain)
|
||||||
{
|
{
|
||||||
double vengefulDrained = 0;
|
double vengefulDrained = 0;
|
||||||
|
@ -102,7 +119,7 @@ public class RitualLava extends Ritual
|
||||||
|
|
||||||
if (entity instanceof EntityPlayer)
|
if (entity instanceof EntityPlayer)
|
||||||
{
|
{
|
||||||
// continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!entity.isPotionActive(ModPotions.fireFuse))
|
if (!entity.isPotionActive(ModPotions.fireFuse))
|
||||||
|
@ -119,6 +136,72 @@ public class RitualLava extends Ritual
|
||||||
WorldDemonWillHandler.drainWill(world, pos, EnumDemonWillType.VENGEFUL, vengefulDrained, true);
|
WorldDemonWillHandler.drainWill(world, pos, EnumDemonWillType.VENGEFUL, vengefulDrained, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (steadfastWill >= steadfastWillDrain)
|
||||||
|
{
|
||||||
|
double steadfastDrained = 0;
|
||||||
|
AreaDescriptor resistRange = getBlockRange(FIRE_RESIST_RANGE);
|
||||||
|
|
||||||
|
int duration = getFireResistForWill(steadfastWill);
|
||||||
|
|
||||||
|
AxisAlignedBB resistArea = resistRange.getAABB(pos);
|
||||||
|
List<EntityPlayer> entities = world.getEntitiesWithinAABB(EntityPlayer.class, resistArea);
|
||||||
|
|
||||||
|
for (EntityPlayer entity : entities)
|
||||||
|
{
|
||||||
|
if (steadfastWill < steadfastWillDrain)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!entity.isPotionActive(MobEffects.FIRE_RESISTANCE) || (entity.getActivePotionEffect(MobEffects.FIRE_RESISTANCE).getDuration() < 2))
|
||||||
|
{
|
||||||
|
entity.addPotionEffect(new PotionEffect(MobEffects.FIRE_RESISTANCE, 100, 0));
|
||||||
|
|
||||||
|
steadfastDrained += steadfastWillDrain;
|
||||||
|
steadfastWill -= steadfastWillDrain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (steadfastDrained > 0)
|
||||||
|
{
|
||||||
|
WorldDemonWillHandler.drainWill(world, pos, EnumDemonWillType.STEADFAST, steadfastDrained, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timer % corrosiveRefreshTime == 0 && corrosiveWill >= corrosiveWillDrain)
|
||||||
|
{
|
||||||
|
double corrosiveDrained = 0;
|
||||||
|
AreaDescriptor resistRange = getBlockRange(FIRE_DAMAGE_RANGE);
|
||||||
|
|
||||||
|
float damage = getCorrosiveDamageForWill(corrosiveWill);
|
||||||
|
|
||||||
|
AxisAlignedBB damageArea = resistRange.getAABB(pos);
|
||||||
|
List<EntityLivingBase> entities = world.getEntitiesWithinAABB(EntityLivingBase.class, damageArea);
|
||||||
|
|
||||||
|
for (EntityLivingBase entity : entities)
|
||||||
|
{
|
||||||
|
if (corrosiveWill < corrosiveWillDrain)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!entity.isDead && entity.hurtTime <= 0 && Utils.isImmuneToFireDamage(entity))
|
||||||
|
{
|
||||||
|
if (entity.attackEntityFrom(BloodMagicAPI.getDamageSource(), damage))
|
||||||
|
{
|
||||||
|
corrosiveDrained += corrosiveWillDrain;
|
||||||
|
corrosiveWill -= corrosiveWillDrain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (corrosiveDrained > 0)
|
||||||
|
{
|
||||||
|
WorldDemonWillHandler.drainWill(world, pos, EnumDemonWillType.CORROSIVE, corrosiveDrained, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
network.syphon(getRefreshCost() * totalEffects);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -133,6 +216,12 @@ public class RitualLava extends Ritual
|
||||||
return 500;
|
return 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITextComponent[] provideInformationOfRitualToPlayer(EntityPlayer player)
|
||||||
|
{
|
||||||
|
return new ITextComponent[] { new TextComponentTranslation(this.getUnlocalizedName() + ".info"), new TextComponentTranslation(this.getUnlocalizedName() + ".default.info"), new TextComponentTranslation(this.getUnlocalizedName() + ".corrosive.info"), new TextComponentTranslation(this.getUnlocalizedName() + ".steadfast.info"), new TextComponentTranslation(this.getUnlocalizedName() + ".destructive.info"), new TextComponentTranslation(this.getUnlocalizedName() + ".vengeful.info") };
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<RitualComponent> getComponents()
|
public ArrayList<RitualComponent> getComponents()
|
||||||
{
|
{
|
||||||
|
@ -193,4 +282,14 @@ public class RitualLava extends Ritual
|
||||||
|
|
||||||
return horizontalRangeMap.get(range);
|
return horizontalRangeMap.get(range);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getFireResistForWill(double steadfastWill)
|
||||||
|
{
|
||||||
|
return (int) (200 + steadfastWill * 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getCorrosiveDamageForWill(double corrosiveWill)
|
||||||
|
{
|
||||||
|
return (float) (1 + corrosiveWill * 0.05);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,6 +93,11 @@ public class Utils
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isImmuneToFireDamage(EntityLivingBase entity)
|
||||||
|
{
|
||||||
|
return entity.isImmuneToFire() || entity.isPotionActive(MobEffects.FIRE_RESISTANCE);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isPlayerBesideSolidBlockFace(EntityPlayer player)
|
public static boolean isPlayerBesideSolidBlockFace(EntityPlayer player)
|
||||||
{
|
{
|
||||||
World world = player.worldObj;
|
World world = player.worldObj;
|
||||||
|
|
|
@ -605,6 +605,12 @@ ritual.BloodMagic.downgradeRitual=Downgrade Ritual
|
||||||
|
|
||||||
ritual.BloodMagic.waterRitual.info=Generates a source of water from the master ritual stone.
|
ritual.BloodMagic.waterRitual.info=Generates a source of water from the master ritual stone.
|
||||||
ritual.BloodMagic.lavaRitual.info=Generates a source of lava from the master ritual stone.
|
ritual.BloodMagic.lavaRitual.info=Generates a source of lava from the master ritual stone.
|
||||||
|
ritual.BloodMagic.lavaRitual.default.info=(Raw) Decreases the LP cost of placing lava and allows lava to be placed insided of a linked container.
|
||||||
|
ritual.BloodMagic.lavaRitual.corrosive.info=(Corrosive) Entities within range that are immune to fire are damaged severely.
|
||||||
|
ritual.BloodMagic.lavaRitual.destructive.info=(Destructive) Lava placement range is increased based on total Will.
|
||||||
|
ritual.BloodMagic.lavaRitual.vengeful.info=(Vengeful) Entities within range have Fire Fuse applied to them.
|
||||||
|
ritual.BloodMagic.lavaRitual.steadfast.info=(Steadfast) Players within a designated range have Fire Resistance applied to them.
|
||||||
|
|
||||||
ritual.BloodMagic.greenGroveRitual.info=Grows crops within its area.
|
ritual.BloodMagic.greenGroveRitual.info=Grows crops within its area.
|
||||||
ritual.BloodMagic.jumpRitual.info=Causes entities to leap up into the air.
|
ritual.BloodMagic.jumpRitual.info=Causes entities to leap up into the air.
|
||||||
ritual.BloodMagic.wellOfSufferingRitual.info=Attacks mobs within its damage zone and puts the LP into a nearby blood altar.
|
ritual.BloodMagic.wellOfSufferingRitual.info=Attacks mobs within its damage zone and puts the LP into a nearby blood altar.
|
||||||
|
@ -644,6 +650,8 @@ ritual.BloodMagic.meteorRitual.info=Consumes an item inside of its item range to
|
||||||
ritual.BloodMagic.waterRitual.waterRange.info=(Water) The area that the ritual will place water source blocks.
|
ritual.BloodMagic.waterRitual.waterRange.info=(Water) The area that the ritual will place water source blocks.
|
||||||
ritual.BloodMagic.lavaRitual.lavaRange.info=(Lava) The area that the ritual will place lava source blocks.
|
ritual.BloodMagic.lavaRitual.lavaRange.info=(Lava) The area that the ritual will place lava source blocks.
|
||||||
ritual.BloodMagic.lavaRitual.fireFuse.info=(Vengeful) Entities in this range are afflicted by Fire Fuse.
|
ritual.BloodMagic.lavaRitual.fireFuse.info=(Vengeful) Entities in this range are afflicted by Fire Fuse.
|
||||||
|
ritual.BloodMagic.lavaRitual.fireResist.info=(Steadfast) Players in this range have Fire Resist applied.
|
||||||
|
ritual.BloodMagic.lavaRitual.fireDamage.info=(Corrosive) Entities within this range that are immune to fire damage are hurt proportional to the Will.
|
||||||
ritual.BloodMagic.greenGroveRitual.growing.info=(Growth) The area that the ritual will grow plants in.
|
ritual.BloodMagic.greenGroveRitual.growing.info=(Growth) The area that the ritual will grow plants in.
|
||||||
ritual.BloodMagic.greenGroveRitual.leech.info=(Corrosive) Entities in this area have their life drained to grow nearby crops.
|
ritual.BloodMagic.greenGroveRitual.leech.info=(Corrosive) Entities in this area have their life drained to grow nearby crops.
|
||||||
ritual.BloodMagic.greenGroveRitual.hydrate.info=(Steadfast) Blocks within this range are rehydrated into farmland, and seeds within the area are planted nearby.
|
ritual.BloodMagic.greenGroveRitual.hydrate.info=(Steadfast) Blocks within this range are rehydrated into farmland, and seeds within the area are planted nearby.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue