From 8fb37c1c0a66bc332c22a69180e98fea4f73459e Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 7 Feb 2022 16:46:30 -0500 Subject: [PATCH] WIP 3rd core unit --- .../assets-raw/sprites/units/emanate-cell.png | Bin 0 -> 517 bytes core/assets-raw/sprites/units/emanate.png | Bin 1187 -> 1527 bytes core/src/mindustry/content/UnitTypes.java | 85 ++++++++---------- .../world/blocks/defense/BaseShield.java | 3 +- .../world/blocks/units/UnitAssembler.java | 2 +- 5 files changed, 39 insertions(+), 51 deletions(-) create mode 100644 core/assets-raw/sprites/units/emanate-cell.png diff --git a/core/assets-raw/sprites/units/emanate-cell.png b/core/assets-raw/sprites/units/emanate-cell.png new file mode 100644 index 0000000000000000000000000000000000000000..101a01b9ece24d3beadc5827f0a1c73671f2e64f GIT binary patch literal 517 zcmeAS@N?(olHy`uVBq!ia0y~yU;yC|4mJh`2Eo#VHUBzHZaj$>Qt9db_poL|l5Ca0} zznOID6IXG?=9osG2A?7vge5oLF3gsOZg=&lhO>2uT#txj+u5;H!t_i zJwsn}Y0qC4b5(vGIg|X%GGbQM{)fLN>&YH4@x6OoN3*uzdgZ>o|7_;BpLy)Br>Xlr zqQ5>rXSL~_H^Dc#(@N8-db6vluJdWdC+*c=U$gD%HJ8(=M@u$q`qu3Ai`48*+-o-b z{jJx`5`r5|u66L9vsv<`RzX=g?RuqL*>nSyB~OZX8y1~ORQzx4ROWQT?~YT{n)rF~ zzhj)X$rQZ4?zMi#VdrgbI(y$)y6Gp*Z@6-(cb9(7(_J@hJ}FdOX}%TqZud8{0~5U~ zew*JDT*{!hbiRP@>x6%|IRuv~C@wwT>3BTK)uuX=k~<^BDHJI-Ej z4HvskX=<6$cf3a;kV_=!R==d_B9WTSk?o%=4&8fnx0PBPkCk%9NiLcN9xuz!tPq@kNL6)neGL;L2CU;fPHG4GnlZY9#5`U7T-G@y GGywp~$l(kC literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/units/emanate.png b/core/assets-raw/sprites/units/emanate.png index 649baa42f3aed3396734b4e8c8cfbd156823791f..73dc16d4ff6df7a3ec412f361263d73bc4cdf0f8 100644 GIT binary patch literal 1527 zcmeAS@N?(olHy`uVBq!ia0y~yU;yC|4mJh`2Eo#VHU zCHkqbA@80}-_ks7^ig)h5JM-rGx9$6H+V5wUFwMHMB5<)(cBaR3 z_2uc|KfYdWc3)SK_1Znl;JAp>BvH5AzZrKW53OWjWO#71+xerhx8&I}?^5=arX^;( z4Q^jN#mBf=`-DcvG^@RdWz3Si7lXE|pK(0qp~Lm)(e?fu*{EgDx;ri{P*CmQ-zMK> zt694(!+@Q6=Ic%wpI`Ts4$81Bd0KSu=3V2x+cgZ{e=B>@c;acd_3r8qPd_i0HdD)< zU2M1PvZu$Muu|sCx0*5QAD;@CvGm^}lNV>7CHyRUx0Q8K$h2Fp*5)ZJzkKqm{DJ>% z^7(6-8u*ifR!z=PnSCXkzm(Ba`0=cH9#db>+&k&hGlfj&cmMxgyY-Y;-ZsIEHM4QY zzWqUO+c#g7PBWgcS0QU#)u9}wP3A6V)AVONRA_Hnaq}JH=4v@j$DWw}oS&|qSzMFO z*(oVLdleMFb7sKWS&dtqYW_9eU;U_!MYD8L&X<;(EGgU_JI}YZN%Bo%`}OI!{I)y4 z^RwUlp4JkprF?UV;g$wTuAr!!_v*eDzboZE5)+v<`P60Do0RKz>dP1TcRFD5s4>oTQ@ zdT2J>e3O*-GJXiLDF6c zyBvbpEd=uFS+nxRHOSlV9?tEk}*hW;rA^ zpIo@b*?g|wnU@}~MT`8{PfyQ!^TWR3FWVH>laiOVS!VjLXl&gcn!PP7ljl~*l+VeH zE1SM7V-|AZOY5F2FvnMu?R{QaUn_?Zm(urLPYZ=|qPrOt#MHQhytnBJEID0STfg-5 z%sDsTIQ1S3x<7l%?Dw~BY+!Td4vDIHdPLVMgIiE8KC0(hSE>MU+6IOoL9OuPt)?q-b>7a-1>Wh8Z08W|m9b~Tmd5+LxKI4_*_ip;a!0RN2gAAL$-370@#pR1Zu{8YygixW z$;VTdRx|#X*SoOd_N2+bC&uV9oHLw$VA>&_#u-QM=I+hC_$2PeRGA3Hs+NP1ie8VB zK5kK6{;2)P$L%j0Z~QU{p0s81%-1tj1sJ9NHZho+F@0&C;gVRCoI2$Y@1+pUgKu~Z zH4iR{bTBy+kbKE!MOn@2sZ$tT4)GX2ndw(GMd8Y|=_0JgM>}zFy!p_%e-&jvz0R?0-Qb(N z?&VC^`wmz1mu1+lPFWYrEVz0}`mXAfCz|1FAIfad=&+o+#qbMH=bFo_y1#DZU0ZWb-hAG* zWsXNHFQ0sQb1G}nB(tlFy~8bMO#8HREsHoLExPk) tk44ofy`glX=O&z!K}} z;uumf=k08JZy86C1MyD#8WJ3S?|$|r%5jIkfaAq2FIhZO*Eo53Z|qw6L}6~Oo=SpU zqrwu?xW`}FY(6N*bbUBe);{`k%#|iZGLyI`u+1a@BZ9m5aDWdS{R@Kq8@gB z)G24udw#fk=94|!+4G|&muCx2Jmq{#X``rT$kg^Nj!EBGUY&9-@;)QAXQhqG@*_Eo zTc0TIR7vA}HQ9W}el~`N)mP8fA3ye(lY!w&)!YY_9(3?XcxFbSLD3mqor1LF}K;H#zd$hK=F6ug<#(8z(^1`*#jvQkuK6yFA**R%jv?4gd%_2yg`B^*777J&%x#s?u|06`(&0OXHtk+t{w8MR;DOf+!nT68I!-ZNVc5s)8kLwQFmWy zZ#C>xTwyb3*~MrRHI0^KHVlhncUlQqR(7x}G#!^C@FWM8MbH&#yeb#0pD0MCg!3lG@Ea>Mi!Id#(<`cOsdUy zZdfjqm?X1$kgo2pyB8Xpx7_gMTHpDdc9~M%f6~r7m_M9h!<#WX&*$y! zYe&E6zS%uj=gH38-L{5DyN|A6|8;NLv`OUkJ|jfBrDa{j9n-XWm^S1_lNOPgg&ebxsLQ09C6uI{*Lx diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index bdfa246088..02462592d1 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -3189,7 +3189,7 @@ public class UnitTypes{ mineFloor = false; mineHardnessScaling = false; flying = true; - mineSpeed = 4f; + mineSpeed = 5f; mineTier = 4; buildSpeed = 1.1f; drag = 0.08f; @@ -3241,67 +3241,54 @@ public class UnitTypes{ envDisabled = 0; lowAltitude = false; - flying = true; - targetAir = false; mineWalls = true; mineFloor = false; mineHardnessScaling = false; + flying = true; mineSpeed = 6f; mineTier = 4; - buildSpeed = 2f; - drag = 0.06f; - speed = 2.6f; - rotateSpeed = 3f; - accel = 0.11f; - itemCapacity = 140; - health = 1300f; + buildSpeed = 1.4f; + drag = 0.08f; + speed = 7.1f; + rotateSpeed = 8f; + accel = 0.08f; + itemCapacity = 110; + health = 700f; armor = 3f; - hitSize = 36f; - buildBeamOffset = 72f / 4f; - engineSize = 0; - payloadCapacity = Mathf.sqr(3f) * tilePayload; + hitSize = 12f; - drawBuildBeam = false; - rotateToBuilding = false; - - float es = 3.8f; + engineOffset = 7.4f; + engineSize = 3.3f; setEnginesMirror( - new UnitEngine(49 / 4f, 51 / 4f, es, 45f), - new UnitEngine(67 / 4f, -30 / 4f, es, 315f), - new UnitEngine(49 / 4f, -62 / 4f, es, 315f) + new UnitEngine(34 / 4f, -12 / 4f, 2.7f, 315f), + new UnitEngine(27 / 4f, -34 / 4f, 2.7f, 315f) ); - //TODO repair weapon - Vec2[] positions = {/*new Vec2(30f, 50f), */new Vec2(60f, -15f)}; - int i = 0; + weapons.add(new RepairBeamWeapon(){{ + reload = 25f; + x = 19f/4f; + y = 19f/4f; + rotate = false; + shootY = 0f; + beamWidth = 0.7f; + repairSpeed = 0.2f; + aimDst = 0f; + shootCone = 16f; + fractionRepair = true; + mirror = true; - for(var pos : positions){ - int fi = i; - //TODO change to BuildWeapon properly, remove standard build beam and rotation - weapons.add(new BuildWeapon("incite-weapon"){{ - rotate = true; - reload = fi == 0 ? 25f : 35f; - rotateSpeed = 7f; - x = pos.x/4f; - y = pos.y/4f; - shootY = 5.75f; - recoil = 2f; + targetUnits = false; + targetBuildings = true; + autoTarget = false; + controllable = true; + laserColor = Pal.accent; + healColor = Pal.accent; - bullet = new BasicBulletType(5f, 17){{ - width = 7f; - height = 12f; - shootEffect = Fx.sparkShoot; - smokeEffect = Fx.shootBigSmoke; - hitColor = backColor = trailColor = Pal.bulletYellowBack; - frontColor = Color.white; - trailWidth = 1.5f; - trailLength = 7; - hitEffect = despawnEffect = Fx.hitBulletColor; - }}; - }}); - i ++; - } + bullet = new BulletType(){{ + maxRange = 65f; + }}; + }}); }}; //endregion diff --git a/core/src/mindustry/world/blocks/defense/BaseShield.java b/core/src/mindustry/world/blocks/defense/BaseShield.java index 7c9305efbe..7e69e659f0 100644 --- a/core/src/mindustry/world/blocks/defense/BaseShield.java +++ b/core/src/mindustry/world/blocks/defense/BaseShield.java @@ -16,6 +16,7 @@ import static mindustry.Vars.*; public class BaseShield extends Block{ //TODO game rule? or field? should vary by base. public float radius = 200f; + public int sides = 24; protected static BaseShieldBuild paramBuild; //protected static Effect paramEffect; @@ -119,7 +120,7 @@ public class BaseShield extends Block{ Draw.color(team.color, Color.white, Mathf.clamp(hit)); if(renderer.animateShields){ - Fill.circle(x, y, radius); + Fill.poly(x, y, sides, radius); }else{ Lines.stroke(1.5f); Draw.alpha(0.09f + Mathf.clamp(0.08f * hit)); diff --git a/core/src/mindustry/world/blocks/units/UnitAssembler.java b/core/src/mindustry/world/blocks/units/UnitAssembler.java index 882c4f93c6..f22cd0de96 100644 --- a/core/src/mindustry/world/blocks/units/UnitAssembler.java +++ b/core/src/mindustry/world/blocks/units/UnitAssembler.java @@ -284,7 +284,7 @@ public class UnitAssembler extends PayloadBlock{ units.removeAll(u -> !u.isAdded() || u.dead || !(u.controller() instanceof AssemblerAI)); - powerWarmup = Mathf.lerpDelta(powerWarmup, efficiency(), 0.1f); + powerWarmup = Mathf.lerpDelta(powerWarmup, efficiency() > 0.0001f ? 1f : 0f, 0.1f); droneWarmup = Mathf.lerpDelta(droneWarmup, units.size < dronesCreated ? efficiency() : 0f, 0.1f); totalDroneProgress += droneWarmup * Time.delta;