Better target priority + underBullets for pierce
This commit is contained in:
@@ -1888,7 +1888,6 @@ public class Blocks{
|
|||||||
requirements(Category.distribution, with(Items.beryllium, 1));
|
requirements(Category.distribution, with(Items.beryllium, 1));
|
||||||
health = 90;
|
health = 90;
|
||||||
speed = 4f;
|
speed = 4f;
|
||||||
underBullets = true;
|
|
||||||
researchCost = with(Items.beryllium, 5);
|
researchCost = with(Items.beryllium, 5);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -1897,7 +1896,6 @@ public class Blocks{
|
|||||||
health = 140;
|
health = 140;
|
||||||
speed = 4f;
|
speed = 4f;
|
||||||
armored = true;
|
armored = true;
|
||||||
underBullets = true;
|
|
||||||
researchCost = with(Items.beryllium, 300, Items.tungsten, 100);
|
researchCost = with(Items.beryllium, 300, Items.tungsten, 100);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -1907,7 +1905,6 @@ public class Blocks{
|
|||||||
speed = 4f;
|
speed = 4f;
|
||||||
regionRotated1 = 1;
|
regionRotated1 = 1;
|
||||||
solid = false;
|
solid = false;
|
||||||
underBullets = true;
|
|
||||||
researchCost = with(Items.beryllium, 30);
|
researchCost = with(Items.beryllium, 30);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -1916,7 +1913,6 @@ public class Blocks{
|
|||||||
health = 90;
|
health = 90;
|
||||||
speed = 4f;
|
speed = 4f;
|
||||||
solid = false;
|
solid = false;
|
||||||
underBullets = true;
|
|
||||||
researchCostMultiplier = 1.5f;
|
researchCostMultiplier = 1.5f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@@ -1925,7 +1921,6 @@ public class Blocks{
|
|||||||
health = 90;
|
health = 90;
|
||||||
speed = 4f;
|
speed = 4f;
|
||||||
buildCostMultiplier = 2f;
|
buildCostMultiplier = 2f;
|
||||||
underBullets = true;
|
|
||||||
researchCostMultiplier = 0.3f;
|
researchCostMultiplier = 0.3f;
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ package mindustry.entities;
|
|||||||
/** Higher priority blocks will always get targeted over those of lower priority, regardless of distance. */
|
/** Higher priority blocks will always get targeted over those of lower priority, regardless of distance. */
|
||||||
public class TargetPriority{
|
public class TargetPriority{
|
||||||
public static final float
|
public static final float
|
||||||
wall = -1f,
|
wall = -2f,
|
||||||
|
transport = -1f,
|
||||||
base = 0f,
|
base = 0f,
|
||||||
constructing = 1f,
|
constructing = 1f,
|
||||||
turret = 2f,
|
turret = 2f,
|
||||||
|
|||||||
@@ -559,6 +559,8 @@ public class BulletType extends Content implements Cloneable{
|
|||||||
bullet.owner = owner;
|
bullet.owner = owner;
|
||||||
bullet.team = team;
|
bullet.team = team;
|
||||||
bullet.time = 0f;
|
bullet.time = 0f;
|
||||||
|
bullet.originX = x;
|
||||||
|
bullet.originY = y;
|
||||||
bullet.aimTile = world.tileWorld(aimX, aimY);
|
bullet.aimTile = world.tileWorld(aimX, aimY);
|
||||||
bullet.initVel(angle, speed * velocityScl);
|
bullet.initVel(angle, speed * velocityScl);
|
||||||
if(backMove){
|
if(backMove){
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw
|
|||||||
private float rotation;
|
private float rotation;
|
||||||
|
|
||||||
transient @Nullable Tile aimTile;
|
transient @Nullable Tile aimTile;
|
||||||
|
transient float originX, originY;
|
||||||
transient @Nullable Mover mover;
|
transient @Nullable Mover mover;
|
||||||
transient boolean absorbed, hit;
|
transient boolean absorbed, hit;
|
||||||
transient @Nullable Trail trail;
|
transient @Nullable Trail trail;
|
||||||
@@ -177,7 +178,12 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw
|
|||||||
if(build != null && isAdded() &&
|
if(build != null && isAdded() &&
|
||||||
//should underBullet detection be disabled for piercing bullets?
|
//should underBullet detection be disabled for piercing bullets?
|
||||||
//|| type.pierceBuilding
|
//|| type.pierceBuilding
|
||||||
(!build.block.underBullets || (aimTile != null && aimTile.build == build))
|
(!build.block.underBullets ||
|
||||||
|
//direct hit on correct tile
|
||||||
|
(aimTile != null && aimTile.build == build) ||
|
||||||
|
//a piercing bullet overshot the aim tile, it's fine to hit things now
|
||||||
|
(type.pierce && aimTile != null && dst(originX, originY) > aimTile.dst(originX, originY) + 2f))
|
||||||
|
|
||||||
&& build.collide(self()) && type.testCollision(self(), build)
|
&& build.collide(self()) && type.testCollision(self(), build)
|
||||||
&& !build.dead() && (type.collidesTeam || build.team != team) && !(type.pierceBuilding && hasCollided(build.id))){
|
&& !build.dead() && (type.collidesTeam || build.team != team) && !(type.pierceBuilding && hasCollided(build.id))){
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import arc.util.*;
|
|||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
@@ -41,6 +42,7 @@ public class Conveyor extends Block implements Autotiler{
|
|||||||
group = BlockGroup.transportation;
|
group = BlockGroup.transportation;
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
itemCapacity = capacity;
|
itemCapacity = capacity;
|
||||||
|
priority = TargetPriority.transport;
|
||||||
conveyorPlacement = true;
|
conveyorPlacement = true;
|
||||||
|
|
||||||
ambientSound = Sounds.conveyor;
|
ambientSound = Sounds.conveyor;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import arc.struct.*;
|
|||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
import mindustry.core.*;
|
import mindustry.core.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
@@ -36,6 +37,7 @@ public class DirectionBridge extends Block{
|
|||||||
rotate = true;
|
rotate = true;
|
||||||
group = BlockGroup.transportation;
|
group = BlockGroup.transportation;
|
||||||
noUpdateDisabled = true;
|
noUpdateDisabled = true;
|
||||||
|
priority = TargetPriority.transport;
|
||||||
envEnabled = Env.space | Env.terrestrial | Env.underwater;
|
envEnabled = Env.space | Env.terrestrial | Env.underwater;
|
||||||
drawArrow = false;
|
drawArrow = false;
|
||||||
regionRotated1 = 1;
|
regionRotated1 = 1;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import arc.scene.ui.layout.*;
|
|||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
@@ -37,6 +38,7 @@ public class DirectionalUnloader extends Block{
|
|||||||
unloadable = false;
|
unloadable = false;
|
||||||
envDisabled = Env.none;
|
envDisabled = Env.none;
|
||||||
clearOnDoubleTap = true;
|
clearOnDoubleTap = true;
|
||||||
|
priority = TargetPriority.transport;
|
||||||
|
|
||||||
config(Item.class, (DirectionalUnloaderBuild tile, Item item) -> tile.unloadItem = item);
|
config(Item.class, (DirectionalUnloaderBuild tile, Item item) -> tile.unloadItem = item);
|
||||||
configClear((DirectionalUnloaderBuild tile) -> tile.unloadItem = null);
|
configClear((DirectionalUnloaderBuild tile) -> tile.unloadItem = null);
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import arc.util.*;
|
|||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
@@ -38,8 +39,10 @@ public class Duct extends Block implements Autotiler{
|
|||||||
unloadable = false;
|
unloadable = false;
|
||||||
itemCapacity = 1;
|
itemCapacity = 1;
|
||||||
noUpdateDisabled = true;
|
noUpdateDisabled = true;
|
||||||
|
underBullets = true;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
noSideBlend = true;
|
noSideBlend = true;
|
||||||
|
priority = TargetPriority.transport;
|
||||||
envEnabled = Env.space | Env.terrestrial | Env.underwater;
|
envEnabled = Env.space | Env.terrestrial | Env.underwater;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ public class DuctBridge extends DirectionBridge{
|
|||||||
|
|
||||||
itemCapacity = 4;
|
itemCapacity = 4;
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
|
underBullets = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class DuctBridgeBuild extends DirectionBridgeBuild{
|
public class DuctBridgeBuild extends DirectionBridgeBuild{
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import arc.scene.ui.layout.*;
|
|||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
@@ -34,6 +35,8 @@ public class DuctRouter extends Block{
|
|||||||
saveConfig = true;
|
saveConfig = true;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
clearOnDoubleTap = true;
|
clearOnDoubleTap = true;
|
||||||
|
underBullets = true;
|
||||||
|
priority = TargetPriority.transport;
|
||||||
envEnabled = Env.space | Env.terrestrial | Env.underwater;
|
envEnabled = Env.space | Env.terrestrial | Env.underwater;
|
||||||
|
|
||||||
config(Item.class, (DuctRouterBuild tile, Item item) -> tile.sortItem = item);
|
config(Item.class, (DuctRouterBuild tile, Item item) -> tile.sortItem = item);
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import arc.util.*;
|
|||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
import mindustry.core.*;
|
import mindustry.core.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
@@ -53,6 +54,7 @@ public class ItemBridge extends Block{
|
|||||||
copyConfig = false;
|
copyConfig = false;
|
||||||
//disabled as to not be annoying
|
//disabled as to not be annoying
|
||||||
allowConfigInventory = false;
|
allowConfigInventory = false;
|
||||||
|
priority = TargetPriority.transport;
|
||||||
|
|
||||||
//point2 config is relative
|
//point2 config is relative
|
||||||
config(Point2.class, (ItemBridgeBuild tile, Point2 i) -> tile.link = Point2.pack(i.x + tile.tileX(), i.y + tile.tileY()));
|
config(Point2.class, (ItemBridgeBuild tile, Point2 i) -> tile.link = Point2.pack(i.x + tile.tileX(), i.y + tile.tileY()));
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import arc.graphics.g2d.*;
|
|||||||
import arc.math.*;
|
import arc.math.*;
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.type.*;
|
import mindustry.type.*;
|
||||||
@@ -27,6 +28,8 @@ public class OverflowDuct extends Block{
|
|||||||
itemCapacity = 1;
|
itemCapacity = 1;
|
||||||
noUpdateDisabled = true;
|
noUpdateDisabled = true;
|
||||||
rotate = true;
|
rotate = true;
|
||||||
|
underBullets = true;
|
||||||
|
priority = TargetPriority.transport;
|
||||||
envEnabled = Env.space | Env.terrestrial | Env.underwater;
|
envEnabled = Env.space | Env.terrestrial | Env.underwater;
|
||||||
regionRotated1 = 1;
|
regionRotated1 = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ public class StackConveyor extends Block implements Autotiler{
|
|||||||
itemCapacity = 10;
|
itemCapacity = 10;
|
||||||
conveyorPlacement = true;
|
conveyorPlacement = true;
|
||||||
highUnloadPriority = true;
|
highUnloadPriority = true;
|
||||||
|
priority = TargetPriority.transport;
|
||||||
|
|
||||||
ambientSound = Sounds.conveyor;
|
ambientSound = Sounds.conveyor;
|
||||||
ambientSoundVolume = 0.004f;
|
ambientSoundVolume = 0.004f;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import arc.struct.*;
|
|||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.entities.units.*;
|
import mindustry.entities.units.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
@@ -48,6 +49,7 @@ public class Conduit extends LiquidBlock implements Autotiler{
|
|||||||
conveyorPlacement = true;
|
conveyorPlacement = true;
|
||||||
noUpdateDisabled = true;
|
noUpdateDisabled = true;
|
||||||
canOverdrive = false;
|
canOverdrive = false;
|
||||||
|
priority = TargetPriority.transport;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import arc.math.geom.*;
|
|||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
@@ -29,6 +30,7 @@ public class PayloadConveyor extends Block{
|
|||||||
update = true;
|
update = true;
|
||||||
outputsPayload = true;
|
outputsPayload = true;
|
||||||
noUpdateDisabled = true;
|
noUpdateDisabled = true;
|
||||||
|
priority = TargetPriority.transport;
|
||||||
envEnabled |= Env.space | Env.underwater;
|
envEnabled |= Env.space | Env.underwater;
|
||||||
sync = true;
|
sync = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import arc.struct.*;
|
|||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
import mindustry.core.*;
|
import mindustry.core.*;
|
||||||
|
import mindustry.entities.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.graphics.*;
|
import mindustry.graphics.*;
|
||||||
import mindustry.input.*;
|
import mindustry.input.*;
|
||||||
@@ -35,6 +36,8 @@ public class BeamNode extends PowerBlock{
|
|||||||
drawDisabled = false;
|
drawDisabled = false;
|
||||||
envEnabled |= Env.space;
|
envEnabled |= Env.space;
|
||||||
allowDiagonal = false;
|
allowDiagonal = false;
|
||||||
|
underBullets = true;
|
||||||
|
priority = TargetPriority.transport;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user