From aafe7fb74ad77bf2ba5806d339f27e8aedb34d9e Mon Sep 17 00:00:00 2001
From: Anuken <arnukren@gmail.com>
Date: Tue, 5 Dec 2017 12:21:08 -0500
Subject: [PATCH] Many bugfixes and tweaks

---
 android/AndroidManifest.xml                   |   4 +-
 .../io/anuke/mindustry/AndroidLauncher.java   |   2 +-
 build.gradle                                  |   2 +-
 core/assets/maps/maze.png                     | Bin 4298 -> 4315 bytes
 core/assets/shaders/shield.fragment           |   5 +-
 core/src/io/anuke/mindustry/Vars.java         |   2 +-
 core/src/io/anuke/mindustry/core/Control.java |   2 +-
 .../anuke/mindustry/entities/BulletType.java  |   8 +-
 .../anuke/mindustry/entities/WaveCreator.java |   6 +-
 .../anuke/mindustry/entities/effect/EMP.java  |   9 +-
 .../mindustry/entities/effect/Shield.java     |   4 +-
 .../mindustry/entities/enemies/Enemy.java     |  15 ++--
 .../anuke/mindustry/input/AndroidInput.java   |  15 ++++
 .../io/anuke/mindustry/resource/Recipe.java   |   2 +-
 .../ui/fragments/BlocksFragment.java          |   5 +-
 .../mindustry/ui/fragments/HudFragment.java   |  78 +++++++++++++-----
 core/src/io/anuke/mindustry/world/World.java  |   2 +-
 .../world/blocks/DistributionBlocks.java      |  14 ++--
 .../world/blocks/ProductionBlocks.java        |   8 +-
 .../world/blocks/types/LiquidBlock.java       |   1 -
 .../blocks/types/defense/PowerTurret.java     |  11 ++-
 .../blocks/types/defense/RepairTurret.java    |   2 +-
 .../blocks/types/defense/ShieldBlock.java     |  10 ++-
 .../world/blocks/types/defense/Turret.java    |   4 +-
 .../blocks/types/distribution/Junction.java   |   1 +
 .../types/distribution/PowerBooster.java      |   2 +-
 .../blocks/types/production/Generator.java    |  11 +--
 desktop/mindustry-saves/2.mins                | Bin 22400 -> 17024 bytes
 desktop/mindustry-saves/7.mins                | Bin 39986 -> 3906 bytes
 html/webapp/html/logo.png                     | Bin 2416 -> 2472 bytes
 html/webapp/styles.css                        |   7 ++
 31 files changed, 143 insertions(+), 89 deletions(-)

diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml
index c2fca9ee65..97ccaace35 100644
--- a/android/AndroidManifest.xml
+++ b/android/AndroidManifest.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="io.anuke.mindustry"
-    android:versionCode="15"
-    android:versionName="2.4" >
+    android:versionCode="16"
+    android:versionName="3.0b" >
 
     <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="25" />
 
diff --git a/android/src/io/anuke/mindustry/AndroidLauncher.java b/android/src/io/anuke/mindustry/AndroidLauncher.java
index 56d9e94a47..5c457088f3 100644
--- a/android/src/io/anuke/mindustry/AndroidLauncher.java
+++ b/android/src/io/anuke/mindustry/AndroidLauncher.java
@@ -51,7 +51,7 @@ public class AndroidLauncher extends AndroidApplication {
 			Unit.dp.multiplier = 1f;
 		}
 		
-		Mindustry.args.add("-debug");
+		//Mindustry.args.add("-debug");
 		
 		initialize(new Mindustry(), config);
 	}
diff --git a/build.gradle b/build.gradle
index fec2213330..6e977b8ab4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -79,7 +79,7 @@ project(":core") {
     apply plugin: "java"
 
     dependencies {
-       // compile 'com.github.Anuken:ucore:61c43bf'
+        compile 'com.github.Anuken:ucore:92dc170f0e'
         compile "com.badlogicgames.gdx:gdx:$gdxVersion"
         compile "com.badlogicgames.gdx:gdx-ai:1.8.1"
     }
diff --git a/core/assets/maps/maze.png b/core/assets/maps/maze.png
index ffab959f20a902cd7edb4b2ded729d61f572365a..c71f782049573b0d2471fc94976a466f58c753b9 100644
GIT binary patch
delta 80
zcmX@5cw2FT3O`$tx4R3&e-K=-clqRriV8fe0&02>&IIW*FbHI9^i5{s7X0gTi7%}p
i|K9s=oA)sN;uX=ksaAHGcj0RWAn<hcb6Mw<&;$V1Iv%V5

delta 91
zcmcbucuH}CiY8})M`SSr1Gg{;GcwGYBf-GHz+U3%>&pI+hmna_y?(*>)eH;*nH%Gi
tnRp`qSF`b3+}=C;;okR~&oceu70KD4`DOK|r$Frt44$rjF6*2UngGHy9##MV

diff --git a/core/assets/shaders/shield.fragment b/core/assets/shaders/shield.fragment
index eed64e553c..c028303bad 100644
--- a/core/assets/shaders/shield.fragment
+++ b/core/assets/shaders/shield.fragment
@@ -5,6 +5,7 @@ precision mediump int;
 
 #define MAX_HITS 64
 #define HIT_RADIUS 12.0
+#define ALPHA 0.18
 
 uniform sampler2D u_texture;
 
@@ -53,7 +54,7 @@ void main() {
 	            color *= 1.65;
 	        }
 	        
-	        color.a = 0.18;
+	        color.a = ALPHA;
 	        
 	        for(int i = 0; i < u_hitamount; i ++){
 	    		vec3 hit = u_hits[i];
@@ -62,7 +63,7 @@ void main() {
 	    	
 	    		if(abs(distance(vec2(hit.x, hit.y), coords - u_texsize/2.0) - rad) < 1.0){
 	    			color = mix(color, u_color* vec4(si, si, si, 1.0), (1.0 * fract));
-	    			color.a = 0.18 + 0.82 *fract;
+	    			color.a = ALPHA + 0.82 *fract;
 	    		}
 	    	}
 	    }
diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java
index 3403d4d2cc..ad34385288 100644
--- a/core/src/io/anuke/mindustry/Vars.java
+++ b/core/src/io/anuke/mindustry/Vars.java
@@ -43,7 +43,7 @@ public class Vars{
 	//whether to draw chunk borders
 	public static boolean debugChunks = false;
 	//whether turrets have infinite ammo (only with debug)
-	public static boolean infiniteAmmo = true;
+	public static boolean infiniteAmmo = false;
 	//whether to show paths of enemies
 	public static boolean showPaths = true;
 	//number of save slots-- increasing may lead to layout issues
diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java
index c9eaab991a..b452f33964 100644
--- a/core/src/io/anuke/mindustry/core/Control.java
+++ b/core/src/io/anuke/mindustry/core/Control.java
@@ -115,7 +115,7 @@ public class Control extends Module{
 		player = new Player();
 		
 		spawns = WaveCreator.getSpawns();
-		WaveCreator.testWaves(1, 30);
+		//WaveCreator.testWaves(1, 30);
 	}
 	
 	public void reset(){
diff --git a/core/src/io/anuke/mindustry/entities/BulletType.java b/core/src/io/anuke/mindustry/entities/BulletType.java
index 698b8f35d2..9e6f2f46eb 100644
--- a/core/src/io/anuke/mindustry/entities/BulletType.java
+++ b/core/src/io/anuke/mindustry/entities/BulletType.java
@@ -62,7 +62,7 @@ public abstract class BulletType  extends BaseBulletType<Bullet>{
 			}
 		}
 	},
-	emp = new BulletType(1.6f, 6){
+	emp = new BulletType(1.6f, 8){
 		{
 			lifetime = 50f;
 			hitsize = 6f;
@@ -89,7 +89,7 @@ public abstract class BulletType  extends BaseBulletType<Bullet>{
 		
 		public void removed(Bullet b){
 			Timers.run(5f, ()->{
-				new EMP(b.x, b.y, b.damage).add();
+				new EMP(b.x, b.y, b.getDamage()).add();
 			});
 			Effects.effect(Fx.empshockwave, b);
 			Effects.shake(3f, 3f, b);
@@ -132,7 +132,7 @@ public abstract class BulletType  extends BaseBulletType<Bullet>{
 			DamageArea.damage(!(b.owner instanceof Enemy), b.x, b.y, 25f, (int)(damage * 2f/3f));
 		}
 	},
-	titanshell = new BulletType(1.8f, 40){
+	titanshell = new BulletType(1.8f, 38){
 		{
 			lifetime = 70f;
 			hitsize = 15f;
@@ -160,7 +160,7 @@ public abstract class BulletType  extends BaseBulletType<Bullet>{
 			Effects.effect(Fx.shellsmoke, b);
 			Effects.effect(Fx.shockwaveSmall, b);
 			
-			DamageArea.damage(!(b.owner instanceof Enemy), b.x, b.y, 25f, (int)(damage * 2f/3f));
+			DamageArea.damage(!(b.owner instanceof Enemy), b.x, b.y, 50f, (int)(damage * 2f/3f));
 		}
 	},
 	yellowshell = new BulletType(1.2f, 20){
diff --git a/core/src/io/anuke/mindustry/entities/WaveCreator.java b/core/src/io/anuke/mindustry/entities/WaveCreator.java
index 9833ccaf9b..11a1f69390 100644
--- a/core/src/io/anuke/mindustry/entities/WaveCreator.java
+++ b/core/src/io/anuke/mindustry/entities/WaveCreator.java
@@ -91,7 +91,7 @@ public class WaveCreator{
 			//boss wave
 			new EnemySpawn(FortressEnemy.class){{
 				after = 16;
-				amount = 2;
+				amount = 1;
 				spacing = 5;
 				scaling = 1;
 			}},
@@ -149,8 +149,8 @@ public class WaveCreator{
 			}},
 			new EnemySpawn(FortressEnemy.class){{
 				after = 12;
-				spacing = 3;
-				scaling = 5;
+				spacing = 4;
+				scaling = 6;
 			}},
 			new EnemySpawn(HealerEnemy.class){{
 				scaling = 3;
diff --git a/core/src/io/anuke/mindustry/entities/effect/EMP.java b/core/src/io/anuke/mindustry/entities/effect/EMP.java
index a079c7d38d..b4b124e67c 100644
--- a/core/src/io/anuke/mindustry/entities/effect/EMP.java
+++ b/core/src/io/anuke/mindustry/entities/effect/EMP.java
@@ -50,14 +50,15 @@ public class EMP extends TimedEntity{
 			Tile tile = array.get(i);
 			targets.add(tile);
 			
-			if(tile.block() instanceof PowerAcceptor){
+			if(tile != null && tile.block() instanceof PowerAcceptor){
 				PowerAcceptor p = (PowerAcceptor)tile.block();
-				tile.entity.damage(damage*2); //extra damage
 				p.setPower(tile, 0f);
+				tile.entity.damage(damage*2); //extra damage
 			}
 			
-			Effects.effect(Fx.empspark, tile.entity);
-			tile.entity.damage(damage);
+			//entity may be null here, after the block is dead!
+			Effects.effect(Fx.empspark, tile.worldx(), tile.worldy());
+			if(tile.entity != null) tile.entity.damage(damage);
 		}
 	}
 	
diff --git a/core/src/io/anuke/mindustry/entities/effect/Shield.java b/core/src/io/anuke/mindustry/entities/effect/Shield.java
index b62bfbdd41..7a3775d5f1 100644
--- a/core/src/io/anuke/mindustry/entities/effect/Shield.java
+++ b/core/src/io/anuke/mindustry/entities/effect/Shield.java
@@ -18,6 +18,7 @@ import io.anuke.ucore.util.Mathf;
 public class Shield extends Entity{
 	public boolean active;
 	public boolean hitPlayers = false;
+	public float radius = 0f;
 	
 	private float uptime = 0f;
 	private final Tile tile;
@@ -84,8 +85,7 @@ public class Shield extends Entity{
 	}
 	
 	float drawRadius(){
-		ShieldBlock block = (ShieldBlock)tile.block();
-		return (block.shieldRadius*2 + Mathf.sin(Timers.time(), 25f, 2f)) * uptime;
+		return (radius*2 + Mathf.sin(Timers.time(), 25f, 2f));
 	}
 	
 	public void removeDelay(){
diff --git a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java
index 710f9e9152..bb7b703b97 100644
--- a/core/src/io/anuke/mindustry/entities/enemies/Enemy.java
+++ b/core/src/io/anuke/mindustry/entities/enemies/Enemy.java
@@ -5,13 +5,10 @@ import com.badlogic.gdx.math.Vector2;
 import com.badlogic.gdx.utils.reflect.ClassReflection;
 
 import io.anuke.mindustry.Vars;
-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.entities.effect.Fx;
 import io.anuke.mindustry.entities.effect.Shaders;
 import io.anuke.mindustry.world.Tile;
-import io.anuke.ucore.UCore;
 import io.anuke.ucore.core.*;
 import io.anuke.ucore.entities.*;
 import io.anuke.ucore.util.Angles;
@@ -103,6 +100,10 @@ public class Enemy extends DestructibleEntity{
 	}
 	
 	void updateTargeting(boolean nearCore){
+		if(target != null && target instanceof TileEntity && ((TileEntity)target).dead){
+			target = null;
+		}
+		
 		if(Timers.get(this, "target", 15) && !nearCore){
 			target = Vars.world.findTileTarget(x, y, null, range, false);
 
@@ -110,10 +111,8 @@ public class Enemy extends DestructibleEntity{
 			if(target == null){
 				target = Entities.getClosest(Entities.defaultGroup(), x, y, range, e -> e instanceof Player);
 			}
-		}
-		
-		if(target instanceof Enemy){
-			UCore.log(target);
+		}else if(nearCore){
+			target = Vars.control.getCore().entity;
 		}
 
 		if(target != null && bullet != null){
diff --git a/core/src/io/anuke/mindustry/input/AndroidInput.java b/core/src/io/anuke/mindustry/input/AndroidInput.java
index 9659f8e3ab..d11401a025 100644
--- a/core/src/io/anuke/mindustry/input/AndroidInput.java
+++ b/core/src/io/anuke/mindustry/input/AndroidInput.java
@@ -3,6 +3,7 @@ package io.anuke.mindustry.input;
 import static io.anuke.mindustry.Vars.*;
 
 import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input.Buttons;
 import com.badlogic.gdx.Input.Keys;
 import com.badlogic.gdx.InputAdapter;
 import com.badlogic.gdx.math.Vector2;
@@ -10,7 +11,9 @@ import com.badlogic.gdx.math.Vector2;
 import io.anuke.mindustry.Vars;
 import io.anuke.mindustry.resource.ItemStack;
 import io.anuke.mindustry.world.Tile;
+import io.anuke.mindustry.world.blocks.types.Configurable;
 import io.anuke.ucore.core.Graphics;
+import io.anuke.ucore.core.Inputs;
 import io.anuke.ucore.core.Timers;
 import io.anuke.ucore.scene.ui.layout.Unit;
 import io.anuke.ucore.util.Mathf;
@@ -82,6 +85,18 @@ public class AndroidInput extends InputAdapter{
 	}
 	
 	public static void doInput(){
+		Tile cursor = selected();
+		
+		//TODO test
+		if(Inputs.buttonUp(Buttons.LEFT) && cursor != null){
+			Tile linked = cursor.isLinked() ? cursor.getLinked() : cursor;
+			if(linked != null && linked.block() instanceof Configurable){
+				Vars.ui.showConfig(linked);
+			}else if(!Vars.ui.hasConfigMouse()){
+				Vars.ui.hideConfig();
+			}
+		}
+		
 		if(Gdx.input.isTouched(0) 
 				&& Mathf.near2d(lmousex, lmousey, Gdx.input.getX(0), Gdx.input.getY(0), Unit.dp.inPixels(50)) 
 				&& !ui.hasMouse() /*&& (player.recipe == null || mode == PlaceMode.touch)*/){
diff --git a/core/src/io/anuke/mindustry/resource/Recipe.java b/core/src/io/anuke/mindustry/resource/Recipe.java
index 22ccc746a5..6419b26a20 100644
--- a/core/src/io/anuke/mindustry/resource/Recipe.java
+++ b/core/src/io/anuke/mindustry/resource/Recipe.java
@@ -52,7 +52,7 @@ public enum Recipe{
 	titaniumpurifier(crafting, ProductionBlocks.titaniumpurifier, stack(Item.steel, 30), stack(Item.iron, 30)),
 	oilrefinery(crafting, ProductionBlocks.oilrefinery, stack(Item.steel, 15), stack(Item.iron, 15)),
 	stoneformer(crafting, ProductionBlocks.stoneformer, stack(Item.steel, 10), stack(Item.iron, 10)),
-	lavasmelter(crafting, ProductionBlocks.lavasmelter, stack(Item.steel, 20), stack(Item.iron, 20), stack(Item.titanium, 10)),
+	lavasmelter(crafting, ProductionBlocks.lavasmelter, stack(Item.steel, 30), stack(Item.titanium, 15)),
 	
 	stonedrill(production, ProductionBlocks.stonedrill, stack(Item.stone, 12)),
 	irondrill(production, ProductionBlocks.irondrill, stack(Item.stone, 25)),
diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java
index 053ac5bc2f..d27b15fe24 100644
--- a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java
+++ b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java
@@ -14,6 +14,7 @@ import io.anuke.mindustry.resource.Recipe;
 import io.anuke.mindustry.resource.Section;
 import io.anuke.mindustry.ui.FloatingDialog;
 import io.anuke.ucore.core.Draw;
+import io.anuke.ucore.graphics.Hue;
 import io.anuke.ucore.scene.builders.table;
 import io.anuke.ucore.scene.event.Touchable;
 import io.anuke.ucore.scene.ui.*;
@@ -105,7 +106,7 @@ public class BlocksFragment implements Fragment{
 							//image.setDisabled(!has);
 							image.setChecked(player.recipe == r);
 							image.setTouchable(canPlace ? Touchable.enabled : Touchable.disabled);
-							image.getImage().setColor(has ? Color.WHITE : Color.DARK_GRAY);
+							image.getImage().setColor(has ? Color.WHITE : Hue.lightness(0.33f));
 						});
 						
 						if(i % rows == rows-1)
@@ -195,7 +196,7 @@ public class BlocksFragment implements Fragment{
 				}).size(110, 50).pad(10f).units(Unit.dp);
 				
 				d.show();
-			}).expandX().padLeft(4).top().right().size(36f, 40f).units(Unit.dp);
+			}).expandX().padLeft(4).top().right().size(42f, 46f).padTop(-2).units(Unit.dp);
 		}
 		
 		
diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java
index 34cf66d8f5..9b93767d85 100644
--- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java
+++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java
@@ -22,6 +22,7 @@ import io.anuke.ucore.scene.actions.Actions;
 import io.anuke.ucore.scene.builders.imagebutton;
 import io.anuke.ucore.scene.builders.label;
 import io.anuke.ucore.scene.builders.table;
+import io.anuke.ucore.scene.event.Touchable;
 import io.anuke.ucore.scene.ui.Image;
 import io.anuke.ucore.scene.ui.Label;
 import io.anuke.ucore.scene.ui.layout.Cell;
@@ -42,7 +43,7 @@ public class HudFragment implements Fragment{
 			
 			new table(){{
 				left();
-				defaults().size(66).units(Unit.dp).left();
+				defaults().size(68).units(Unit.dp).left();
 				float isize = Unit.dp.inPixels(40);
 				
 				new imagebutton("icon-menu", isize, ()->{
@@ -64,6 +65,12 @@ public class HudFragment implements Fragment{
 			
 			row();
 			
+			new table(){{
+				addWaveTable();
+			}}.fillX().end();
+			
+			row();
+			
 			itemtable = new table("button").end().top().left().fillX().size(-1).get();
 			itemtable.setVisible(()-> control.getMode() != GameMode.sandbox);
 			itemcell = get().getCell(itemtable);
@@ -95,29 +102,16 @@ public class HudFragment implements Fragment{
 
 		//wave table...
 		new table(){{
-			atop();
-			aright();
 			
-			float uheight = 72f;
+			if(!Vars.android){
+				atop();
+				aright();
+			}else{
+				abottom();
+				aleft();
+			}
 			
-			new imagebutton("icon-play", Unit.dp.inPixels(30f), ()->{
-				Vars.control.runWave();
-			}).size(uheight).uniformY().units(Unit.dp)
-				.visible(()-> Vars.control.getMode() == GameMode.sandbox && Vars.control.getEnemiesRemaining() <= 0);
-
-			new table("button"){{
-
-				new label(()->"[orange]Wave " + control.getWave()).scale(fontscale*2f).left();
-
-				row();
-
-				new label(()-> control.getEnemiesRemaining() > 0 ?
-						control.getEnemiesRemaining() + " Enemies remaining" : 
-							(control.getTutorial().active() || Vars.control.getMode() == GameMode.sandbox) ? "waiting..." : "New wave in " + (int) (control.getWaveCountdown() / 60f))
-				.minWidth(150);
-
-				get().pad(Unit.dp.inPixels(12));
-			}}.height(uheight).units(Unit.dp);
+			//addWaveTable();
 
 			visible(()->!GameState.is(State.menu));
 		}}.end();
@@ -166,6 +160,46 @@ public class HudFragment implements Fragment{
 		}
 	}
 	
+	private void addWaveTable(){
+		float uheight = 66f;
+		
+		new table("button"){{
+			aleft();
+			new table(){{
+				aleft();
+
+				new label(()->"[orange]Wave " + control.getWave()).scale(fontscale*1.5f).left();
+
+				row();
+			
+				new label(()-> control.getEnemiesRemaining() > 0 ?
+					control.getEnemiesRemaining() + " enemies" : 
+						(control.getTutorial().active() || Vars.control.getMode() == GameMode.sandbox) ? "waiting..." : "Wave in " + (int) (control.getWaveCountdown() / 60f))
+				.minWidth(140).left();
+
+				get().pad(Unit.dp.inPixels(12));
+			}}.left().padLeft(-6).end();
+			
+			playButton(uheight);
+			//get().padTop(Unit.dp.inPixels(1));
+			//get().padBottom(Unit.dp.inPixels(1));
+		}}.height(uheight).units(Unit.dp).fillX().expandX().end();
+		
+	}
+	
+	private void playButton(float uheight){
+		new imagebutton("icon-play", Unit.dp.inPixels(30f), ()->{
+			Vars.control.runWave();
+		}).height(uheight).fillX().padTop(-8f).padBottom(-12f).padRight(-18f).padLeft(-10f).width(40f).units(Unit.dp).update(l->{
+			boolean vis = Vars.control.getMode() == GameMode.sandbox && Vars.control.getEnemiesRemaining() <= 0;
+			boolean paused = GameState.is(State.paused) || !vis;
+			
+			l.setVisible(vis);
+			l.getStyle().imageUp = Core.skin.getDrawable(vis ? "icon-play" : "clear");
+			l.setTouchable(!paused ? Touchable.enabled : Touchable.disabled);
+		});
+	}
+	
 	public void updateItems(){
 		
 		itemtable.clear();
diff --git a/core/src/io/anuke/mindustry/world/World.java b/core/src/io/anuke/mindustry/world/World.java
index 0c85042c11..ba31bbf780 100644
--- a/core/src/io/anuke/mindustry/world/World.java
+++ b/core/src/io/anuke/mindustry/world/World.java
@@ -278,7 +278,7 @@ public class World extends Module{
 			}
 		}
 		
-		if(Tmp.r2.overlaps(player.hitbox.getRect(player.x, player.y))){
+		if(!Vars.android && Tmp.r2.overlaps(player.hitbox.getRect(player.x, player.y))){
 			return false;
 		}
 		
diff --git a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java
index 29d130b0c1..59818120dc 100644
--- a/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java
+++ b/core/src/io/anuke/mindustry/world/blocks/DistributionBlocks.java
@@ -15,6 +15,7 @@ public class DistributionBlocks{
 	}},
 	
 	pulseconduit = new LiquidBlock("pulseconduit"){{
+		formalName = "pulse conduit";
 		fullDescription = "Advanced liquid transport block. Transports liquids faster and stores more than standard conduits.";
 		liquidCapacity = 16f;
 		flowfactor = 4.9f;
@@ -29,7 +30,6 @@ public class DistributionBlocks{
 	}},
 	
 	conveyor = new Conveyor("conveyor"){{
-		description = "Moves items.";
 		fullDescription = "Basic item transport block. Moves items forward and automatically deposits them into turrets or crafters. "
 				+ "Rotatable. Can be used as a bridge over liquids for enemies and players.";
 	}},
@@ -37,16 +37,13 @@ public class DistributionBlocks{
 	steelconveyor = new Conveyor("steelconveyor"){{
 		health = 55;
 		speed = 0.04f;
-		description = "Moves items faster.";
 		formalName = "steel conveyor";
 		fullDescription = "Advanced item transport block. Moves items faster than standard conveyors.";
 	}},
 	
-	//TODO
 	pulseconveyor = new Conveyor("poweredconveyor"){{
 		health = 75;
 		speed = 0.09f;
-		description = "Moves items even faster.";
 		formalName = "pulse conveyor";
 		fullDescription = "The ultimate item transport block. Moves items faster than steel conveyors.";
 	}},
@@ -71,7 +68,6 @@ public class DistributionBlocks{
 	}},
 	liquidjunction = new LiquidJunction("liquidjunction"){{
 		formalName = "liquid junction";
-		description = "Serves as a liquid junction.";
 		fullDescription = "Acts as a bridge for two crossing conduits. Useful in situations with "
 				+ "two different conduits carrying different liquids to different locations.";
 	}},
@@ -88,7 +84,7 @@ public class DistributionBlocks{
 	}},
 	powerlaser = new PowerLaser("powerlaser"){{
 		formalName = "power laser";
-		description = "Transmits power with a laser.";
+		description = "Transmits power.";
 		fullDescription = "Creates a laser that transmits power to the block in front of it. Does not generate any power itself. "
 				+ "Best used with generators or other lasers.";
 	}},
@@ -103,16 +99,16 @@ public class DistributionBlocks{
 		formalName = "laser corner";
 		description = "Splits input power into 2 lasers.";
 		fullDescription = "Laser that distributes power to two directions at once. "
-				+ "Useful in situations where it is required to power multiple blocks from one generator, and a normal router is imprecise.";
+				+ "Useful in situations where it is required to power multiple blocks from one generator, and a router is imprecise.";
 	}},
 	teleporter = new Teleporter("teleporter"){{
-		description = "[interact]Tap block to config[]\nTeleports items to others of the same color.";
+		description = "[interact]Tap block to config[]";
 		fullDescription = "Advanced item transport block. Teleporters input items to other teleporters of the same color."
 				+ " Does nothing if no teleporters of the same color exist. If multiple teleporters exist of the same color, a random one is selected."
 				+ " Tap and click the arrows to change color.";
 	}},
 	sorter = new Sorter("sorter"){{
-		description = "[interact]Tap block to config[]\nSorts input items by type.";
+		description = "[interact]Tap block to config[]";
 		fullDescription = "Sorts item by material type. Material to accept is indicated by the color in the block. "
 				+ "All items that match the sort material are outputted forward, everything else is outputted to the left and right.";
 	}};
diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java
index 1d120eb1eb..dc13a2b1d4 100644
--- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java
+++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java
@@ -78,7 +78,7 @@ public class ProductionBlocks{
 			liquidAmount = 18.99f;
 			output = Item.coal;
 			health = 50;
-			purifyTime = 60;
+			purifyTime = 50;
 			description = "Converts stone + water to coal.";
 			fullDescription = "A basic extractor block. Outputs coal when supplied with large amounts of water and stone.";
 		}
@@ -92,7 +92,7 @@ public class ProductionBlocks{
 			inputLiquid = Liquid.water;
 			liquidAmount = 40f;
 			liquidCapacity = 41f;
-			purifyTime = 80;
+			purifyTime = 60;
 			output = Item.titanium;
 			health = 70;
 			description = "Converts iron + water to titanium.";
@@ -106,7 +106,7 @@ public class ProductionBlocks{
 			inputLiquid = Liquid.oil;
 			liquidAmount = 45f;
 			liquidCapacity = 46f;
-			purifyTime = 70;
+			purifyTime = 60;
 			output = Item.coal;
 			health = 80;
 			craftEffect = Fx.purifyoil;
@@ -266,7 +266,7 @@ public class ProductionBlocks{
 			height = 3;
 			health = 600;
 			breaktime *= 2.3f;
-			description = "Generates power from uranium + water.";
+			//description = "Advanced generator.";
 			fullDescription = "The ultimate power generator. Highly volatile. Generates power from uranium. Requires constant cooling in the form of water. "
 					+ "Will explode violently if insufficient amounts of coolant are supplied. ";
 		}
diff --git a/core/src/io/anuke/mindustry/world/blocks/types/LiquidBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/LiquidBlock.java
index 75d958b932..346abac2b9 100644
--- a/core/src/io/anuke/mindustry/world/blocks/types/LiquidBlock.java
+++ b/core/src/io/anuke/mindustry/world/blocks/types/LiquidBlock.java
@@ -20,7 +20,6 @@ public class LiquidBlock extends Block implements LiquidAcceptor{
 	
 	public LiquidBlock(String name) {
 		super(name);
-		description = "Transports liquids.";
 		rotate = true;
 		update = true;
 	}
diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java
index 72c578a3ea..bed70e2aba 100644
--- a/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java
+++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java
@@ -26,6 +26,11 @@ public class PowerTurret extends Turret implements PowerAcceptor{
 		ammo = null;
 	}
 	
+	@Override
+	public void postInit(){
+		description = "[turretinfo]Uses power.";
+	}
+	
 	@Override
 	public void getStats(Array<String> list){
 		super.getStats(list);
@@ -33,12 +38,6 @@ public class PowerTurret extends Turret implements PowerAcceptor{
 		list.add("[powerinfo]Power/shot: " + Strings.toFixed(powerUsed, 1));
 	}
 	
-	@Override
-	public void postInit(){
-		super.postInit();
-		description += "\n[powerinfo]Power/shot: " + Strings.toFixed(powerUsed, 1);
-	}
-	
 	@Override
 	public void drawPixelOverlay(Tile tile){
 		Vector2 offset = getPlaceOffset();
diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java
index c696738a36..e6d4102ff7 100644
--- a/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java
+++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/RepairTurret.java
@@ -31,7 +31,7 @@ public class RepairTurret extends PowerTurret{
 	
 	@Override
 	public void postInit(){
-		description = "[turretinfo]Range: " + (int)range + "\nPower/unit: "+powerUsed+"\n[description]Heals nearby tiles.";
+		description = "[powerinfo]Uses power[white]\nRepairs nearby blocks.";
 	}
 	
 	@Override
diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java
index 3a08c576fd..75033ab71e 100644
--- a/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java
+++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/ShieldBlock.java
@@ -11,16 +11,20 @@ import io.anuke.mindustry.world.blocks.types.PowerBlock;
 import io.anuke.ucore.core.Effects;
 import io.anuke.ucore.core.Timers;
 import io.anuke.ucore.entities.BulletEntity;
+import io.anuke.ucore.util.Mathf;
 import io.anuke.ucore.util.Strings;
 
 public class ShieldBlock extends PowerBlock{
 	public float shieldRadius = 40f;
-	public float powerDrain = 0.006f;
+	public float powerDrain = 0.005f;
 	public float powerPerDamage = 0.1f;
+	public float maxRadius = 40f;
+	public float radiusPowerScale = 7.5f;
 	
 	public ShieldBlock(String name) {
 		super(name);
 		voltage = powerDrain;
+		health = 100;
 	}
 	
 	@Override
@@ -42,7 +46,7 @@ public class ShieldBlock extends PowerBlock{
 		}
 
 		if(entity.power > powerPerDamage){
-			if(!entity.shield.active && entity.power > powerPerDamage * 8f){
+			if(!entity.shield.active){
 				entity.shield.add();
 			}
 
@@ -52,6 +56,8 @@ public class ShieldBlock extends PowerBlock{
 				entity.shield.removeDelay();
 			}
 		}
+		
+		entity.shield.radius = Mathf.lerp(entity.shield.radius, Math.min(entity.power * radiusPowerScale, maxRadius), Timers.delta() * 0.05f);
 
 	}
 
diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java
index e63681da52..63fa33a35e 100644
--- a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java
+++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java
@@ -66,8 +66,8 @@ public class Turret extends Block{
 	
 	@Override
 	public void postInit(){
-		description = "[turretinfo]" + (ammo==null ? "" : "Ammo: " + ammo +"\n")
-				+ "Range: " + (int)range;
+		if(ammo != null)
+			description = "[turretinfo]Ammo: " + ammo;
 	}
 	
 	@Override
diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java
index 88edb0f11e..97a2b24ddb 100644
--- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java
+++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java
@@ -33,6 +33,7 @@ public class Junction extends Block{
 	@Override
 	public boolean acceptItem(Item item, Tile dest, Tile source){
 		int dir = source.relativeTo(dest.x, dest.y);
+		if(dir == -1) return false;
 		Tile to = dest.getNearby()[dir];
 		return to != null && to.block().acceptItem(item, to, dest);
 	}
diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java
index 3fe032b493..5e2f665640 100644
--- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java
+++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/PowerBooster.java
@@ -18,6 +18,7 @@ public class PowerBooster extends Generator{
 		super(name);
 		explosive = false;
 		hasLasers = false;
+		powerSpeed = 0.4f;
 	}
 	
 	@Override
@@ -69,7 +70,6 @@ public class PowerBooster extends Generator{
 			int acceptors = 0;
 			float flow = 0f;
 
-			//TODO have two phases, where it checks nearby blocks first, then distributes it evenly
 			for(int i = 0; i < 2; i++){
 				for(int x = -powerRange; x <= powerRange; x++){
 					for(int y = -powerRange; y <= powerRange; y++){
diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java
index 6544cab0f8..94b2cef3d8 100644
--- a/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java
+++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Generator.java
@@ -24,7 +24,7 @@ public class Generator extends PowerBlock{
 
 	public int laserRange = 6;
 	public int laserDirections = 4;
-	public float powerSpeed = 0.06f;
+	public float powerSpeed = 0.1f;
 	public boolean explosive = true;
 	public boolean hasLasers = true;
 	public boolean outputOnly = false;
@@ -196,22 +196,17 @@ public class Generator extends PowerBlock{
 			int relrot = (rotation + 2) % 4;
 			if(other.hasLasers){
 				for(int i = 0; i < other.laserDirections; i ++){
-					if(target.getRotation() + i - other.laserDirections/2 == (target.getRotation() + 2) % 4){
+					if(Mathf.mod(target.getRotation() + i - other.laserDirections/2, 4) == relrot){
 						return true;
 					}
 				}
 			}
-			if(other.hasLasers && Math.abs(target.getRotation() - relrot) <= other.laserDirections / 2){
-				return true;
-			}
 		}
 		return false;
 	}
 
 	protected Tile laserTarget(Tile tile, int rotation){
-		if(rotation < 0)
-			rotation += 4;
-		rotation %= 4;
+		rotation = Mathf.mod(rotation, 4);
 		GridPoint2 point = Geometry.getD4Points()[rotation];
 
 		int i = 0;
diff --git a/desktop/mindustry-saves/2.mins b/desktop/mindustry-saves/2.mins
index 651006157e4c7385685e452009000e02da4565d6..3ee6521fdc2ffa54375e81b8f6086213d9bf3da6 100644
GIT binary patch
literal 17024
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

literal 22400
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
J>%L^}{{R9ZhZX<;

diff --git a/desktop/mindustry-saves/7.mins b/desktop/mindustry-saves/7.mins
index e9cf74f85349e9cec95e2beba2c1333885092cf3..e9bd698ec7002006a7e9d7b78bcaf4b4c943043c 100644
GIT binary patch
literal 3906
zcmZwIYfw~W90u^0MXjbj)Q4&US{qn)7bUfY2`yB}BZNB|SdxN@7mOuP$P_ehiwj)_
z!7@^I*9&shaI6$Zgv3Z(U@;I>%t><6>O<3qX6j4dde1pL54P^ku=9JL|NH*Wdv1#m
z;t3%_)>ulLyTlYBgh4qdgmUbpalw@-@5phkcx19LmZwdUU+WC=%NZ(+uD?U1o)YqF
zaEhAAiIc@7WpD9zWvJ?Mh#V%0P-WZ9TT1_rxAmbxasFdb24gGqp-^_+^C|x31^O^V
zDXFPbdhhKY9~RA)yGj?r5g~gC5hg@2Rq#BrTq9IC6)K@hUqDtE1+6qgyDd<e71}i&
z+8PV(dJ%F`WmNGjRC^MjORqpzsf%-w)h9td>IOARd0)f4Mrw2cvLOZfG8H=cI+V2t
z>ZbPDk=d3&nbdVE^9@w{sXlop<VW6xSs73n<)VDlFI3i2tl01-G)Ap|3z>(SwhY<S
zOy~|(`8KkY<<M>F=M~8AQaiJdRZ-PcST?FLR4VoCN>rbt=1>l56V*>`T7|W4%1<S)
zM%6*(Q+YY4Ze9azp?ayTwX9O5RQNhn?bI@=a6PI;R7ozfc4}Y)vV8RyL3<9`sUd1%
z9;zQwHz~UV)nTe9A6e?V(Ch-}HZ?~13Q--Q=5IvSL48MkwFy;c5wxQiYNAG{XWm1#
zYco{-KIEtFY(X|g-J^b^c5cPIU#a*KWV=hD0cy`SWaZnTYRb0*S=dgfm-16NyHRbV
zu2Hr<sJ=|)IFVIR2dF-3>R!xSMHyYl2C0a0WDV3el(_=c(^SSs$ihE{tW+)4MqQ}H
zyw-hCVijbnh9W+N5~+=p^)pnbQ`@Ol>MZpK^(Pf^09{O!ol2)pQLlcE6)wtHgDi$h
z{{q>!l<Od}$U{Q?znP+rt@1A_U~CE)+YYHS)!*|a)Ojkb7S+gFt?vxAx!PC#L<PxA
z<C$8=yl6d32_4VOLDpG<WL7;}s`j#}2i87+2@%U}ncVue)Cvw~c582sTwrl)Z;zDK
zt-Ui+)7)AYdBW$Y3sfIv@&uf)L3CRe3Dct|goqBTO%h^mvJg+opY;2ag*gAX5N40|
z{HnXqXD7<z8kVd3^n9XjK~@?(D%6YLK^eWsOkRBl1{v_&yxP4{yLz>YAZ7Jxo0gix
zwRS3t3O|g_k%t4$O%|epWTx@#!5u{FS&BTIwkvaxb(SERRnG!$ro2Bh^n!MVxgzQ5
zj(>%S)3XHqiLp7=jmQ5lQxhTl6Q^`UJEe)|K45GL7{?sd8pum;JF2ZrzzL~&+<2y+
zxPJVFTro^V*0D>S-sQnd6&ECn50af@mrg3;I6EKLIxn8si$OkaaY57gpy|blUiDh9
zd3rCyW3tafN&G`eb_4d(*aQtzD_W4XQ`e}Q)F>4rUm^LC*M26IOP!(GsK{2VFrS82
zeGLtsfrhB$v&b^2DypIl)!g$?0cCDSHm?)P>w+9q8Fh?0bqVuUcSHNXhw7-b%gBl-
z7nRzBYAY3c1=&kfIn_y3`Y^ACs;AO=QEi}_sg?=#VO|F{zaLq)AF8I329RY_Emx79
zptk*htckJ>B5S(_d4{1QRLcl5=XEIK2IQq0Df=j@_FK>gR5R5=)&GQf>35*TV^HH=
M$Z;Q9`@63H05DCh0RR91

literal 39986
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

diff --git a/html/webapp/html/logo.png b/html/webapp/html/logo.png
index d8c65984088157e29b1986a1775afda6845caa99..be1282d3c5c6126c657bc0e760c13588bec70521 100644
GIT binary patch
literal 2472
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
C#AdDl

literal 2416
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
P{t!W22_&a7M@IZV054Du

diff --git a/html/webapp/styles.css b/html/webapp/styles.css
index edaf3900b7..3ac665b88a 100644
--- a/html/webapp/styles.css
+++ b/html/webapp/styles.css
@@ -10,3 +10,10 @@ body {
     margin: 0px;
     padding: 0px;
 }
+
+.gdx-meter.red > span {
+	background-color: #e44d3c !important;
+	background-image: -moz-linear-gradient(top, #f4ba6e, #d29d58) !important;
+	background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #f4ba6e),color-stop(1, #d29d58)) !important;
+	background-image: -webkit-linear-gradient(#f4ba6e, #d29d58) !important;
+}