1
0
mirror of https://github.com/Anuken/Mindustry.git synced 2024-09-22 13:57:46 +03:00

Added TeslaOrb entity and implemented tesla turrets

This commit is contained in:
Anuken 2017-09-21 14:07:58 -04:00
parent d3b613feb2
commit ec0b4b5dc4
38 changed files with 557 additions and 315 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 B

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

View File

@ -13,539 +13,553 @@ blank
index: -1
blocks/block
rotate: false
xy: 199, 23
xy: 271, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/coal1
rotate: false
xy: 219, 23
xy: 291, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/coal2
rotate: false
xy: 229, 23
xy: 301, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/coal3
rotate: false
xy: 239, 23
xy: 311, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/coaldrill
rotate: false
xy: 249, 23
xy: 321, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/conduit
rotate: false
xy: 259, 23
xy: 331, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/conduitbottom
rotate: false
xy: 269, 23
xy: 341, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/conduitliquid
rotate: false
xy: 279, 23
xy: 351, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/conduittop
rotate: false
xy: 289, 23
xy: 361, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/conveyor
rotate: false
xy: 299, 23
xy: 371, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/conveyormove
rotate: false
xy: 309, 23
xy: 381, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/core
rotate: false
xy: 319, 23
xy: 391, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/cross
rotate: false
xy: 329, 23
xy: 401, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/crucible
rotate: false
xy: 339, 23
xy: 411, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/deepwater
rotate: false
xy: 349, 23
xy: 421, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/dirt1
rotate: false
xy: 359, 23
xy: 431, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/dirt2
rotate: false
xy: 369, 23
xy: 441, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/dirt3
rotate: false
xy: 379, 23
xy: 451, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/dirtblock
rotate: false
xy: 389, 23
xy: 461, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/dirtedge
rotate: false
xy: 37, 19
xy: 85, 19
size: 12, 12
orig: 12, 12
offset: 0, 0
index: -1
blocks/doubleturret
rotate: false
xy: 65, 7
xy: 113, 7
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/drill
rotate: false
xy: 399, 23
xy: 471, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/flameturret
rotate: false
xy: 79, 21
xy: 127, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/grass1
rotate: false
xy: 419, 23
xy: 491, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/grass2
rotate: false
xy: 429, 23
xy: 501, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/grass3
rotate: false
xy: 439, 23
xy: 128, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/grassblock
rotate: false
xy: 449, 23
xy: 128, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/grassblock2
rotate: false
xy: 459, 23
xy: 138, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/grassedge
rotate: false
xy: 37, 5
xy: 85, 5
size: 12, 12
orig: 12, 12
offset: 0, 0
index: -1
blocks/iron1
rotate: false
xy: 90, 11
xy: 168, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/iron2
rotate: false
xy: 90, 1
xy: 178, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/iron3
rotate: false
xy: 100, 11
xy: 178, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/irondrill
rotate: false
xy: 100, 1
xy: 188, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/ironwall
rotate: false
xy: 110, 11
xy: 188, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/junction
rotate: false
xy: 110, 1
xy: 198, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/laserturret
rotate: false
xy: 91, 21
xy: 139, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/machineturret
rotate: false
xy: 103, 21
xy: 151, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/megarepairturret
rotate: false
xy: 115, 21
xy: 163, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/mortarturret
rotate: false
xy: 127, 21
xy: 175, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/mossblock
rotate: false
xy: 120, 1
xy: 208, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/mossstone
rotate: false
xy: 120, 1
xy: 208, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/omnidrill
rotate: false
xy: 130, 11
xy: 208, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/pump
rotate: false
xy: 140, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/repairturret
rotate: false
xy: 139, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/rock
rotate: false
xy: 140, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/rock2
rotate: false
xy: 150, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/rock2shadow
rotate: false
xy: 150, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/rockshadow
rotate: false
xy: 160, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/router
rotate: false
xy: 160, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/shadow
rotate: false
xy: 151, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/shotgunturret
rotate: false
xy: 163, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/shrub
rotate: false
xy: 170, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/shrubshadow
rotate: false
xy: 170, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/smelter
rotate: false
xy: 180, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/sniperturret
rotate: false
xy: 175, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/steelconveyor
rotate: false
xy: 180, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/steelconveyormove
rotate: false
xy: 190, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/steelwall
rotate: false
xy: 190, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stone
rotate: false
xy: 51, 19
size: 12, 12
orig: 12, 12
offset: 0, 0
index: -1
blocks/stone1
rotate: false
xy: 200, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stone2
rotate: false
xy: 200, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stone3
rotate: false
xy: 210, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stoneblock
rotate: false
xy: 210, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stoneblock2
rotate: false
xy: 220, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stoneblock3
rotate: false
xy: 220, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stonedrill
rotate: false
xy: 230, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stoneedge
rotate: false
xy: 51, 5
size: 12, 12
orig: 12, 12
offset: 0, 0
index: -1
blocks/stonewall
rotate: false
xy: 230, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/titanium1
rotate: false
xy: 240, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/titanium2
rotate: false
xy: 240, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/titanium3
rotate: false
xy: 250, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/titaniumdrill
rotate: false
xy: 250, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/titaniumwall
rotate: false
xy: 260, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/turret
blocks/plasmaturret
rotate: false
xy: 187, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/pump
rotate: false
xy: 218, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/repairturret
rotate: false
xy: 199, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/rock
rotate: false
xy: 228, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/rock2
rotate: false
xy: 228, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/rock2shadow
rotate: false
xy: 238, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/rockshadow
rotate: false
xy: 238, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/router
rotate: false
xy: 248, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/shadow
rotate: false
xy: 211, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/shotgunturret
rotate: false
xy: 223, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/shrub
rotate: false
xy: 248, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/shrubshadow
rotate: false
xy: 258, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/smelter
rotate: false
xy: 258, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/sniperturret
rotate: false
xy: 235, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/steelconveyor
rotate: false
xy: 268, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/steelconveyormove
rotate: false
xy: 268, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/steelwall
rotate: false
xy: 278, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stone
rotate: false
xy: 99, 19
size: 12, 12
orig: 12, 12
offset: 0, 0
index: -1
blocks/stone1
rotate: false
xy: 278, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stone2
rotate: false
xy: 288, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stone3
rotate: false
xy: 288, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stoneblock
rotate: false
xy: 298, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stoneblock2
rotate: false
xy: 298, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stoneblock3
rotate: false
xy: 308, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stonedrill
rotate: false
xy: 308, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/stoneedge
rotate: false
xy: 99, 5
size: 12, 12
orig: 12, 12
offset: 0, 0
index: -1
blocks/stonewall
rotate: false
xy: 318, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/titanium1
rotate: false
xy: 318, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/titanium2
rotate: false
xy: 328, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/titanium3
rotate: false
xy: 328, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/titaniumdrill
rotate: false
xy: 338, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/titaniumwall
rotate: false
xy: 338, 3
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/turret
rotate: false
xy: 247, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
blocks/water
rotate: false
xy: 260, 3
xy: 348, 13
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/wateredge
rotate: false
xy: 65, 19
xy: 113, 19
size: 12, 12
orig: 12, 12
offset: 0, 0
index: -1
blocks/waveturret
rotate: false
xy: 259, 21
size: 10, 10
orig: 10, 10
offset: 0, 0
index: -1
bullet
rotate: false
xy: 209, 23
xy: 281, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
@ -559,77 +573,77 @@ circle
index: -1
enemies/bossmech
rotate: false
xy: 21, 17
xy: 21, 1
size: 14, 14
orig: 14, 14
offset: 0, 0
index: -1
enemies/fastmech
rotate: false
xy: 409, 23
xy: 481, 23
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
enemies/firemech
rotate: false
xy: 21, 1
xy: 37, 17
size: 14, 14
orig: 14, 14
offset: 0, 0
index: -1
enemies/mech1
rotate: false
xy: 120, 11
xy: 198, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
icon-coal
rotate: false
xy: 469, 23
xy: 138, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
icon-dirium
rotate: false
xy: 479, 23
xy: 148, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
icon-iron
rotate: false
xy: 489, 23
xy: 148, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
icon-steel
rotate: false
xy: 499, 23
xy: 158, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
icon-stone
rotate: false
xy: 80, 11
xy: 158, 1
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
icon-titanium
rotate: false
xy: 80, 1
xy: 168, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
laser
rotate: false
xy: 77, 5
xy: 125, 5
size: 1, 12
orig: 1, 12
offset: 0, 0
@ -643,36 +657,50 @@ laserend
index: -1
player
rotate: false
xy: 130, 1
xy: 218, 11
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
weapon-blaster
weapons/blaster
rotate: false
xy: 270, 13
size: 8, 8
orig: 8, 8
xy: 21, 17
size: 14, 14
orig: 14, 14
offset: 0, 0
index: -1
weapon-flamethrower
weapons/flamethrower
rotate: false
xy: 270, 3
size: 8, 8
orig: 8, 8
xy: 37, 1
size: 14, 14
orig: 14, 14
offset: 0, 0
index: -1
weapon-multigun
weapons/mortar
rotate: false
xy: 280, 13
size: 8, 8
orig: 8, 8
xy: 53, 17
size: 14, 14
orig: 14, 14
offset: 0, 0
index: -1
weapon-trishot
weapons/multigun
rotate: false
xy: 280, 3
size: 8, 8
orig: 8, 8
xy: 53, 1
size: 14, 14
orig: 14, 14
offset: 0, 0
index: -1
weapons/railgun
rotate: false
xy: 69, 17
size: 14, 14
orig: 14, 14
offset: 0, 0
index: -1
weapons/triblaster
rotate: false
xy: 69, 1
size: 14, 14
orig: 14, 14
offset: 0, 0
index: -1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@ -11,12 +11,12 @@ import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.GameState.State;
import io.anuke.mindustry.ai.Pathfind;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.Weapon;
import io.anuke.mindustry.entities.enemies.*;
import io.anuke.mindustry.input.AndroidInput;
import io.anuke.mindustry.input.GestureHandler;
import io.anuke.mindustry.input.Input;
import io.anuke.mindustry.io.SaveIO;
import io.anuke.mindustry.resource.Weapon;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.World;
import io.anuke.mindustry.world.blocks.ProductionBlocks;

View File

@ -21,6 +21,7 @@ public class Inventory{
items.put(Item.steel, 2000000);
items.put(Item.coal, 2000000);
items.put(Item.titanium, 2000000);
items.put(Item.dirium, 2000000);
}
}

View File

@ -16,7 +16,6 @@ import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.GameState.State;
import io.anuke.mindustry.entities.Weapon;
import io.anuke.mindustry.input.AndroidInput;
import io.anuke.mindustry.resource.*;
import io.anuke.mindustry.ui.*;
@ -551,8 +550,8 @@ public class UI extends SceneModule{
weapontable.clearChildren();
for(Weapon weapon : control.getWeapons()){
ImageButton button = new ImageButton(Draw.region("weapon-"+weapon.name()), "static");
button.getImageCell().size(40);
ImageButton button = new ImageButton(Draw.region(weapon.name()), "static");
button.getImageCell().size(14*3);
button.setDisabled(true);
if(weapon != player.weapon)

View File

@ -108,6 +108,17 @@ public abstract class BulletType extends BaseBulletType<Bullet>{
Draw.reset();
}
},
plasmaflame = new BulletType(0.8f, 15){
{
lifetime = 65f;
}
public void draw(Bullet b){
Draw.color(Color.valueOf("c2efd7"), Color.valueOf("72deaf"), b.time/lifetime);
float size = 7f-b.time/lifetime*6f;
Draw.rect("circle", b.x, b.y, size, size);
Draw.reset();
}
},
flameshot = new BulletType(0.5f, 3){
public void draw(Bullet b){
Draw.color(Color.ORANGE, Color.SCARLET, b.time/lifetime);

View File

@ -8,6 +8,7 @@ import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.resource.Recipe;
import io.anuke.mindustry.resource.Weapon;
import io.anuke.ucore.core.*;
import io.anuke.ucore.entities.DestructibleEntity;
import io.anuke.ucore.util.Angles;

View File

@ -0,0 +1,5 @@
package io.anuke.mindustry.entities;
public enum StatusEffect{
none;
}

View File

@ -0,0 +1,127 @@
package io.anuke.mindustry.entities.effect;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.ObjectSet;
import io.anuke.mindustry.entities.enemies.Enemy;
import io.anuke.ucore.core.Draw;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.entities.Entities;
import io.anuke.ucore.entities.Entity;
import io.anuke.ucore.entities.SolidEntity;
import io.anuke.ucore.util.Mathf;
import io.anuke.ucore.util.Tmp;
public class TeslaOrb extends Entity{
private Array<Vector2> points = new Array<>();
private ObjectSet<Enemy> hit = new ObjectSet<>();
private int damage = 0;
private float range = 0;
private float lifetime = 30f;
private float life = 0f;
public TeslaOrb(float x, float y, float range, int damage){
set(x, y);
this.damage = damage;
this.range = range;
}
void shock(){
float stopchance = 0.1f;
float curx = x, cury = y;
float shake = 3f;
outer:
while(true){
if(Mathf.chance(stopchance)){
break;
}
Array<SolidEntity> enemies = Entities.getNearby(curx, cury, range);
for(SolidEntity entity : enemies){
if(entity instanceof Enemy && entity.distanceTo(curx, cury) < range
&& !hit.contains((Enemy)entity)){
hit.add((Enemy)entity);
points.add(new Vector2(entity.x + Mathf.range(shake), entity.y + Mathf.range(shake)));
damageEnemy((Enemy)entity);
curx = entity.x;
cury = entity.y;
continue outer;
}
}
break;
}
if(points.size == 0){
remove();
}
}
void damageEnemy(Enemy enemy){
//TODO
enemy.damage(damage);
Effects.effect("laserhit", enemy.x + Mathf.range(2f), enemy.y + Mathf.range(2f));
}
@Override
public void update(){
life += Timers.delta();
if(life >= lifetime){
remove();
}
}
@Override
public void drawOver(){
if(points.size == 0) return;
float range = 1f;
Vector2 previous = Tmp.v1.set(x, y);
for(Vector2 enemy : points){
float x1 = previous.x + Mathf.range(range),
y1 = previous.y + Mathf.range(range),
x2 = enemy.x + Mathf.range(range),
y2 = enemy.y + Mathf.range(range);
Draw.color(Color.WHITE);
Draw.alpha(1f-life/lifetime);
Draw.thick(3f - life/lifetime*2f);
Draw.line(x1, y1, x2, y2);
float rad = 7f - life/lifetime*5f;
Draw.rect("circle", x2, y2, rad, rad);
if(previous.epsilonEquals(x, y, 0.001f)){
Draw.rect("circle", x, y, rad, rad);
}
//Draw.color(Color.WHITE);
//Draw.thick(2f - life/lifetime*2f);
//Draw.line(x1, y1, x2, y2);
Draw.reset();
previous = enemy;
}
}
@Override
public void added(){
Timers.run(1f, ()->{
shock();
});
}
}

View File

@ -4,9 +4,7 @@ import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.ai.Pathfind;
import io.anuke.mindustry.entities.Bullet;
import io.anuke.mindustry.entities.BulletType;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.World;
import io.anuke.ucore.core.Draw;
@ -30,6 +28,7 @@ public class Enemy extends DestructibleEntity{
public Vector2 direction = new Vector2();
public float xvelocity, yvelocity;
public Entity target;
public StatusEffect effect = StatusEffect.none;
public Enemy(int spawn){

View File

@ -6,8 +6,8 @@ import com.badlogic.gdx.Input.Buttons;
import com.badlogic.gdx.Input.Keys;
import io.anuke.mindustry.Inventory;
import io.anuke.mindustry.entities.Weapon;
import io.anuke.mindustry.resource.ItemStack;
import io.anuke.mindustry.resource.Weapon;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.World;
import io.anuke.mindustry.world.blocks.Blocks;

View File

@ -15,9 +15,9 @@ import com.badlogic.gdx.utils.TimeUtils;
import com.badlogic.gdx.utils.reflect.ClassReflection;
import io.anuke.mindustry.*;
import io.anuke.mindustry.entities.Weapon;
import io.anuke.mindustry.entities.enemies.*;
import io.anuke.mindustry.resource.Item;
import io.anuke.mindustry.resource.Weapon;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.World;

View File

@ -3,7 +3,8 @@ package io.anuke.mindustry.resource;
import com.badlogic.gdx.graphics.Color;
public enum Liquid{
water(Color.ROYAL);
water(Color.ROYAL),
plasma(Color.CORAL);
public final Color color;

View File

@ -27,9 +27,11 @@ public enum Recipe{
sniperturret(defense, WeaponBlocks.sniperturret, stack(Item.iron, 30), stack(Item.steel, 20)),
laserturret(defense, WeaponBlocks.laserturret, stack(Item.steel, 20), stack(Item.titanium, 20)),
mortarturret(defense, WeaponBlocks.mortarturret, stack(Item.steel, 40), stack(Item.titanium, 30)),
waveturret(defense, WeaponBlocks.teslaturret, stack(Item.steel, 20), stack(Item.titanium, 20), stack(Item.dirium, 20)),
plasmaturret(defense, WeaponBlocks.plasmaturret, stack(Item.steel, 40), stack(Item.titanium, 30), stack(Item.dirium, 25)),
healturret(defense, WeaponBlocks.repairturret, stack(Item.iron, 45)),
megahealturret(defense, WeaponBlocks.megarepairturret, stack(Item.iron, 30), stack(Item.steel, 40)),
healturret(defense, WeaponBlocks.repairturret, stack(Item.iron, 50)),
megahealturret(defense, WeaponBlocks.megarepairturret, stack(Item.iron, 30), stack(Item.steel, 50)),
drill(production, ProductionBlocks.stonedrill, stack(Item.stone, 6)),
irondrill(production, ProductionBlocks.irondrill, stack(Item.stone, 40)),

View File

@ -1,11 +1,12 @@
package io.anuke.mindustry.entities;
package io.anuke.mindustry.resource;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.resource.Item;
import io.anuke.mindustry.resource.ItemStack;
import io.anuke.mindustry.entities.Bullet;
import io.anuke.mindustry.entities.BulletType;
import io.anuke.mindustry.entities.Player;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.entities.Entity;
import io.anuke.ucore.util.Angles;
@ -23,7 +24,7 @@ public enum Weapon{
Effects.effect("shoot3", p.x + vector.x, p.y+vector.y);
}
},
trishot(13, BulletType.shot, "Shoots 3 bullets in a spread.", stack(Item.iron, 40)){
triblaster(13, BulletType.shot, "Shoots 3 bullets in a spread.", stack(Item.iron, 40)){
@Override
public void shoot(Player p){
@ -63,9 +64,36 @@ public enum Weapon{
bullet(p, p.x, p.y, ang + Mathf.range(12));
}
},
//TODO
railgun(40, BulletType.sniper, "Shoots a stream of fire.", stack(Item.steel, 60), stack(Item.coal, 60)){
{
shootsound = "flame2";
}
@Override
public void shoot(Player p){
float ang = mouseAngle(p);
bullet(p, p.x, p.y, ang);
}
},
//TODO
mortar(20, BulletType.shell, "Shoots a stream of fire.", stack(Item.steel, 60), stack(Item.coal, 60)){
{
shootsound = "flame2";
}
@Override
public void shoot(Player p){
float ang = mouseAngle(p);
bullet(p, p.x, p.y, ang);
}
};
float reload;
BulletType type;
public float reload;
public BulletType type;
public String shootsound = "shoot";
public boolean unlocked;
public ItemStack[] requirements;

View File

@ -7,8 +7,8 @@ import com.badlogic.gdx.graphics.Color;
import io.anuke.mindustry.GameState;
import io.anuke.mindustry.GameState.State;
import io.anuke.mindustry.Inventory;
import io.anuke.mindustry.entities.Weapon;
import io.anuke.mindustry.resource.ItemStack;
import io.anuke.mindustry.resource.Weapon;
import io.anuke.ucore.core.Draw;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.function.Listenable;
@ -45,8 +45,8 @@ public class UpgradeDialog extends Dialog{
for(Weapon weapon : Weapon.values()){
TextButton button = new TextButton(weapon.name());
Image img = new Image(Draw.region("weapon-"+weapon.name()));
button.add(img).size(8*5);
Image img = new Image(Draw.region(weapon.name()));
button.add(img).size(14*4);
button.getCells().reverse();
button.row();
button.pack();

View File

@ -58,7 +58,7 @@ public class Generator{
floor = Blocks.iron;
}
if(Noise.nnoise(x, y, 6, 1) > 0.242){
if(Noise.nnoise(x, y, 6, 1) > 0.24){
floor = Blocks.coal;
}

View File

@ -2,7 +2,9 @@ package io.anuke.mindustry.world.blocks;
import com.badlogic.gdx.graphics.Color;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.entities.BulletType;
import io.anuke.mindustry.entities.effect.TeslaOrb;
import io.anuke.mindustry.resource.Item;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
@ -10,6 +12,7 @@ import io.anuke.mindustry.world.blocks.types.LaserTurret;
import io.anuke.mindustry.world.blocks.types.RepairTurret;
import io.anuke.mindustry.world.blocks.types.Turret;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.util.Angles;
import io.anuke.ucore.util.Mathf;
public class WeaponBlocks{
@ -130,6 +133,40 @@ public class WeaponBlocks{
}
},
//TODO
teslaturret = new Turret("waveturret"){
{
formalName = "tesla turret";
range = 70;
reload = 20f;
bullet = BulletType.shell;
ammo = Item.stone;
health = 1100;
}
@Override
public void shoot(Tile tile){
TurretEntity entity = tile.entity();
Angles.translation(entity.rotation, 4);
new TeslaOrb(tile.worldx() + Angles.x(), tile.worldy() + Angles.y(),
70, (int)(10*Vars.multiplier)).add();
}
},
//TODO
plasmaturret = new Turret("plasmaturret"){
{
inaccuracy = 7f;
formalName = "plasma turret";
range = 60f;
reload = 3f;
bullet = BulletType.plasmaflame;
ammo = Item.stone;
health = 180;
}
},
repairturret = new RepairTurret("repairturret"){
{
formalName = "heal turret";

View File

@ -27,6 +27,7 @@ public class Turret extends Block{
protected float range = 50f;
protected float reload = 10f;
protected float inaccuracy = 0f;
protected String shootsound = "shoot";
protected BulletType bullet = BulletType.iron;
protected Item ammo;
@ -131,8 +132,10 @@ public class Turret extends Block{
protected void shoot(Tile tile){
TurretEntity entity = tile.entity();
vector.set(0, 4).setAngle(entity.rotation);
Bullet out = new Bullet(bullet, tile.entity, tile.worldx()+vector.x, tile.worldy()+vector.y, entity.rotation).add();
float inac = Mathf.range(inaccuracy);
vector.set(0, 4).setAngle(entity.rotation + inac);
Bullet out = new Bullet(bullet, tile.entity, tile.worldx()+vector.x, tile.worldy()+vector.y, entity.rotation + inac).add();
out.damage = (int)(bullet.damage*Vars.multiplier);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB