Add enrage spell

This commit is contained in:
Electroblob77
2020-10-10 19:15:15 +01:00
parent f5cd740497
commit 0db343c959
7 changed files with 81 additions and 0 deletions
@@ -0,0 +1,52 @@
package electroblob.wizardry.spell;
import electroblob.wizardry.item.SpellActions;
import electroblob.wizardry.util.ParticleBuilder;
import electroblob.wizardry.util.ParticleBuilder.Type;
import electroblob.wizardry.util.SpellModifiers;
import net.minecraft.entity.EntityCreature;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.tileentity.TileEntityDispenser;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.Mod;
import javax.annotation.Nullable;
@Mod.EventBusSubscriber
public class Enrage extends SpellAreaEffect {
public Enrage(){
super("enrage", SpellActions.SUMMON, false);
this.alwaysSucceed(true);
}
@Override
public boolean canBeCastBy(TileEntityDispenser dispenser){
return false;
}
@Override
protected boolean affectEntity(World world, Vec3d origin, @Nullable EntityLivingBase caster, EntityLivingBase target, int targetCount, int ticksInUse, SpellModifiers modifiers){
if(caster != null && target instanceof EntityCreature){
target.setRevengeTarget(caster); // Yours truly, angry mobs
}
return true;
}
@Override
protected void spawnParticleEffect(World world, Vec3d origin, double radius, @Nullable EntityLivingBase caster, SpellModifiers modifiers){
if(caster != null) origin = caster.getPositionEyes(1);
for(int i = 0; i < 30; i++){
double x = origin.x - 1 + world.rand.nextDouble() * 2;
double y = origin.y - 0.25 + world.rand.nextDouble() * 0.5;
double z = origin.z - 1 + world.rand.nextDouble() * 2;
ParticleBuilder.create(Type.DARK_MAGIC).pos(x, y, z).clr(0.9f, 0.1f, 0).spawn(world);
}
}
}