Implemented ammo types for cyclone
This commit is contained in:
@@ -131,6 +131,7 @@ public class AmmoTypes implements ContentList{
|
|||||||
flakSurge = new AmmoType(Items.surgealloy, FlakBullets.surge, 5){{
|
flakSurge = new AmmoType(Items.surgealloy, FlakBullets.surge, 5){{
|
||||||
shootEffect = ShootFx.shootBig;
|
shootEffect = ShootFx.shootBig;
|
||||||
smokeEffect = ShootFx.shootBigSmoke;
|
smokeEffect = ShootFx.shootBigSmoke;
|
||||||
|
reloadMultiplier = 2f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
//missiles
|
//missiles
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import io.anuke.mindustry.world.blocks.defense.turrets.*;
|
|||||||
import io.anuke.ucore.graphics.Draw;
|
import io.anuke.ucore.graphics.Draw;
|
||||||
import io.anuke.ucore.util.Angles;
|
import io.anuke.ucore.util.Angles;
|
||||||
import io.anuke.ucore.util.Mathf;
|
import io.anuke.ucore.util.Mathf;
|
||||||
import io.anuke.ucore.util.Strings;
|
|
||||||
|
|
||||||
public class TurretBlocks extends BlockList implements ContentList{
|
public class TurretBlocks extends BlockList implements ContentList{
|
||||||
public static Block duo, /*scatter,*/
|
public static Block duo, /*scatter,*/
|
||||||
@@ -142,35 +141,46 @@ public class TurretBlocks extends BlockList implements ContentList{
|
|||||||
health = 380;
|
health = 380;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
salvo = new BurstTurret("salvo"){{
|
salvo = new BurstTurret("salvo"){
|
||||||
size = 2;
|
TextureRegion[] panels = new TextureRegion[2];
|
||||||
range = 120f;
|
|
||||||
ammoTypes = new AmmoType[]{AmmoTypes.bulletCopper, AmmoTypes.bulletDense, AmmoTypes.bulletPyratite, AmmoTypes.bulletThorium, AmmoTypes.bulletSilicon};
|
|
||||||
reload = 40f;
|
|
||||||
restitution = 0.03f;
|
|
||||||
ammoEjectBack = 3f;
|
|
||||||
cooldown = 0.03f;
|
|
||||||
recoil = 3f;
|
|
||||||
shootShake = 2f;
|
|
||||||
burstSpacing = 4;
|
|
||||||
shots = 3;
|
|
||||||
ammoUseEffect = ShootFx.shellEjectBig;
|
|
||||||
|
|
||||||
drawer = (tile, entity) -> {
|
@Override
|
||||||
Draw.rect(region, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
|
public void load() {
|
||||||
float offsetx = (int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 3f);
|
super.load();
|
||||||
float offsety = -(int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 2f);
|
panels[0] = Draw.region(name + "-panel-left");
|
||||||
|
panels[1] = Draw.region(name + "-panel-right");
|
||||||
|
}
|
||||||
|
|
||||||
for(int i : Mathf.signs){
|
{
|
||||||
float rot = entity.rotation + 90 * i;
|
size = 2;
|
||||||
Draw.rect(name + "-panel-" + Strings.dir(i),
|
range = 120f;
|
||||||
tile.drawx() + tr2.x + Angles.trnsx(rot, offsetx, offsety),
|
ammoTypes = new AmmoType[]{AmmoTypes.bulletCopper, AmmoTypes.bulletDense, AmmoTypes.bulletPyratite, AmmoTypes.bulletThorium, AmmoTypes.bulletSilicon};
|
||||||
tile.drawy() + tr2.y + Angles.trnsy(rot, -offsetx, offsety), entity.rotation - 90);
|
reload = 40f;
|
||||||
}
|
restitution = 0.03f;
|
||||||
};
|
ammoEjectBack = 3f;
|
||||||
|
cooldown = 0.03f;
|
||||||
|
recoil = 3f;
|
||||||
|
shootShake = 2f;
|
||||||
|
burstSpacing = 4;
|
||||||
|
shots = 3;
|
||||||
|
ammoUseEffect = ShootFx.shellEjectBig;
|
||||||
|
|
||||||
health = 360;
|
drawer = (tile, entity) -> {
|
||||||
}};
|
Draw.rect(region, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
|
||||||
|
float offsetx = (int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 3f);
|
||||||
|
float offsety = -(int) (Mathf.abscurve(Mathf.curve(entity.reload / reload, 0.3f, 0.2f)) * 2f);
|
||||||
|
|
||||||
|
for(int i : Mathf.signs){
|
||||||
|
float rot = entity.rotation + 90 * i;
|
||||||
|
Draw.rect(panels[i == -1 ? 0 : 1],
|
||||||
|
tile.drawx() + tr2.x + Angles.trnsx(rot, offsetx, offsety),
|
||||||
|
tile.drawy() + tr2.y + Angles.trnsy(rot, -offsetx, offsety), entity.rotation - 90);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
health = 360;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
ripple = new ArtilleryTurret("ripple"){{
|
ripple = new ArtilleryTurret("ripple"){{
|
||||||
ammoTypes = new AmmoType[]{AmmoTypes.artilleryDense, AmmoTypes.artilleryHoming, AmmoTypes.artilleryIncindiary, AmmoTypes.artilleryExplosive, AmmoTypes.artilleryPlastic};
|
ammoTypes = new AmmoType[]{AmmoTypes.artilleryDense, AmmoTypes.artilleryHoming, AmmoTypes.artilleryIncindiary, AmmoTypes.artilleryExplosive, AmmoTypes.artilleryPlastic};
|
||||||
@@ -193,7 +203,7 @@ public class TurretBlocks extends BlockList implements ContentList{
|
|||||||
cyclone = new ItemTurret("cyclone"){{
|
cyclone = new ItemTurret("cyclone"){{
|
||||||
ammoTypes = new AmmoType[]{AmmoTypes.flakExplosive, AmmoTypes.flakPlastic, AmmoTypes.flakSurge};
|
ammoTypes = new AmmoType[]{AmmoTypes.flakExplosive, AmmoTypes.flakPlastic, AmmoTypes.flakSurge};
|
||||||
xRand = 4f;
|
xRand = 4f;
|
||||||
reload = 8f;
|
reload = 10f;
|
||||||
range = 140f;
|
range = 140f;
|
||||||
size = 3;
|
size = 3;
|
||||||
recoil = 3f;
|
recoil = 3f;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package io.anuke.mindustry.content.bullets;
|
package io.anuke.mindustry.content.bullets;
|
||||||
|
|
||||||
import io.anuke.mindustry.content.fx.BulletFx;
|
import io.anuke.mindustry.content.fx.BulletFx;
|
||||||
|
import io.anuke.mindustry.content.fx.Fx;
|
||||||
import io.anuke.mindustry.entities.bullet.ArtilleryBulletType;
|
import io.anuke.mindustry.entities.bullet.ArtilleryBulletType;
|
||||||
import io.anuke.mindustry.entities.bullet.BasicBulletType;
|
import io.anuke.mindustry.entities.bullet.BasicBulletType;
|
||||||
import io.anuke.mindustry.entities.bullet.BulletType;
|
import io.anuke.mindustry.entities.bullet.BulletType;
|
||||||
@@ -33,6 +34,7 @@ public class ArtilleryBullets extends BulletList implements ContentList{
|
|||||||
lifetime = 15f;
|
lifetime = 15f;
|
||||||
backColor = Palette.plastaniumBack;
|
backColor = Palette.plastaniumBack;
|
||||||
frontColor = Palette.plastaniumFront;
|
frontColor = Palette.plastaniumFront;
|
||||||
|
despawneffect = Fx.none;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
package io.anuke.mindustry.content.bullets;
|
package io.anuke.mindustry.content.bullets;
|
||||||
|
|
||||||
|
import io.anuke.mindustry.content.fx.BulletFx;
|
||||||
|
import io.anuke.mindustry.entities.bullet.Bullet;
|
||||||
import io.anuke.mindustry.entities.bullet.BulletType;
|
import io.anuke.mindustry.entities.bullet.BulletType;
|
||||||
import io.anuke.mindustry.entities.bullet.FlakBulletType;
|
import io.anuke.mindustry.entities.bullet.FlakBulletType;
|
||||||
|
import io.anuke.mindustry.entities.effect.Lightning;
|
||||||
|
import io.anuke.mindustry.graphics.Palette;
|
||||||
import io.anuke.mindustry.type.ContentList;
|
import io.anuke.mindustry.type.ContentList;
|
||||||
|
import io.anuke.ucore.util.Mathf;
|
||||||
|
|
||||||
public class FlakBullets extends BulletList implements ContentList{
|
public class FlakBullets extends BulletList implements ContentList{
|
||||||
public static BulletType plastic, explosive, surge;
|
public static BulletType plastic, explosive, surge;
|
||||||
@@ -13,19 +18,33 @@ public class FlakBullets extends BulletList implements ContentList{
|
|||||||
|
|
||||||
plastic = new FlakBulletType(4f, 5){
|
plastic = new FlakBulletType(4f, 5){
|
||||||
{
|
{
|
||||||
|
splashDamageRadius = 40f;
|
||||||
|
fragBullet = ArtilleryBullets.plasticFrag;
|
||||||
|
fragBullets = 4;
|
||||||
|
hiteffect = BulletFx.plasticExplosion;
|
||||||
|
frontColor = Palette.plastaniumFront;
|
||||||
|
backColor = Palette.plastaniumBack;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
explosive = new FlakBulletType(4f, 5){
|
explosive = new FlakBulletType(4f, 5){
|
||||||
{
|
{
|
||||||
|
//default bullet type, no changes
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
surge = new FlakBulletType(4f, 5){
|
surge = new FlakBulletType(4f, 7){
|
||||||
{
|
{
|
||||||
|
splashDamage = 33f;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void despawned(Bullet b) {
|
||||||
|
super.despawned(b);
|
||||||
|
|
||||||
|
for (int i = 0; i < 2; i++) {
|
||||||
|
Lightning.create(b.getTeam(), BulletFx.hitLancer, Palette.surge, damage, b.x, b.y, Mathf.random(360f), 12);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import io.anuke.ucore.util.Mathf;
|
|||||||
|
|
||||||
public class BulletFx extends FxList implements ContentList{
|
public class BulletFx extends FxList implements ContentList{
|
||||||
public static Effect hitBulletSmall, hitBulletBig, hitFlameSmall, hitLiquid, hitLaser, hitLancer, despawn, flakExplosion, blastExplosion, plasticExplosion,
|
public static Effect hitBulletSmall, hitBulletBig, hitFlameSmall, hitLiquid, hitLaser, hitLancer, despawn, flakExplosion, blastExplosion, plasticExplosion,
|
||||||
artilleryTrail, incendTrail, missileTrail, absorb, flakExplosionBig;
|
artilleryTrail, incendTrail, missileTrail, absorb, flakExplosionBig, plasticExplosionFlak;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void load(){
|
public void load(){
|
||||||
@@ -149,6 +149,30 @@ public class BulletFx extends FxList implements ContentList{
|
|||||||
Draw.reset();
|
Draw.reset();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
plasticExplosionFlak = new Effect(28, e -> {
|
||||||
|
|
||||||
|
Draw.color(Palette.plastaniumFront);
|
||||||
|
e.scaled(7, i -> {
|
||||||
|
Lines.stroke(3f * i.fout());
|
||||||
|
Lines.circle(e.x, e.y, 3f + i.fin() * 34f);
|
||||||
|
});
|
||||||
|
|
||||||
|
Draw.color(Color.GRAY);
|
||||||
|
|
||||||
|
Angles.randLenVectors(e.id, 7, 2f + 30f * e.finpow(), (x, y) -> {
|
||||||
|
Fill.circle(e.x + x, e.y + y, e.fout() * 4f + 0.5f);
|
||||||
|
});
|
||||||
|
|
||||||
|
Draw.color(Palette.plastaniumBack);
|
||||||
|
Lines.stroke(1f * e.fout());
|
||||||
|
|
||||||
|
Angles.randLenVectors(e.id + 1, 4, 1f + 30f * e.finpow(), (x, y) -> {
|
||||||
|
Lines.lineAngle(e.x + x, e.y + y, Mathf.atan2(x, y), 1f + e.fout() * 3f);
|
||||||
|
});
|
||||||
|
|
||||||
|
Draw.reset();
|
||||||
|
});
|
||||||
|
|
||||||
blastExplosion = new Effect(22, e -> {
|
blastExplosion = new Effect(22, e -> {
|
||||||
|
|
||||||
Draw.color(Palette.missileYellow);
|
Draw.color(Palette.missileYellow);
|
||||||
|
|||||||
Reference in New Issue
Block a user