From 5f0ef9b27ef059d88ea6eac85f8927fe3e8f075f Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 2 May 2022 14:29:32 -0400 Subject: [PATCH 1/2] WIP T3 tank --- .../assets-raw/sprites/units/precept-cell.png | Bin 0 -> 319 bytes .../sprites/units/precept-treads.png | Bin 0 -> 483 bytes .../sprites/units/precept-weapon-cell.png | Bin 0 -> 696 bytes .../sprites/units/precept-weapon.png | Bin 0 -> 1960 bytes core/assets-raw/sprites/units/precept.png | Bin 0 -> 2904 bytes core/assets/icons/icons.properties | 1 + core/assets/logicids.dat | Bin 4358 -> 4367 bytes core/src/mindustry/content/UnitTypes.java | 48 +++++++++++++++++- .../src/mindustry/graphics/BlockRenderer.java | 2 +- core/src/mindustry/type/UnitType.java | 26 ++++++---- gradle.properties | 2 +- 11 files changed, 67 insertions(+), 12 deletions(-) create mode 100644 core/assets-raw/sprites/units/precept-cell.png create mode 100644 core/assets-raw/sprites/units/precept-treads.png create mode 100644 core/assets-raw/sprites/units/precept-weapon-cell.png create mode 100644 core/assets-raw/sprites/units/precept-weapon.png create mode 100644 core/assets-raw/sprites/units/precept.png diff --git a/core/assets-raw/sprites/units/precept-cell.png b/core/assets-raw/sprites/units/precept-cell.png new file mode 100644 index 0000000000000000000000000000000000000000..8f4a9ecdafc31ab1a2fd62dac4982be20137194e GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0y~yV5k6L4mJh`2Fnz)OAHJQjKx9jP7LeL$-HD>VEF0j z;uumf=k3*Kz9s_!)(Z#MzECUqf6(_u)CYGV#ixnUHS<2-Pb|uJR%Rd!rj?ezzxVid z&eZ7O;u{qQmu0Rx_dhiHSy=9cD{q58?O9vA+9>7a^+iv%gg*(hNqD<^;gf~oPs2)n zT-p}va^zpdoc|p~lc#y@n|EGNu+U=erq8GCZcM*DTPt$s=Ve~+PQQIRZO>`TDMoP` zPCK)g7K@7eIo&qh-4gms?-V4Ume z;uumf=k48%zJ~)u94W`GNOB7Jd&b8XvRt30wF**wGDA^Y!iB z3m_#6ug9NeInF7gUNGlCArp*o+4e<6eYI>Ycd+3>geXM%P6@wNPRW|&CYX6=*E`*_ zx8bXuyZPPIpP9kR!Vtq|%a`2P@Z+`*ioqZww*PcI{(`rA*IH>6HDrf@UAXz8U^>iX zu)yqhy#Mu=|7&~jB46#_6wbccWs4tQ`9Ib0wWTkH$?1!e7e=1XM9~lOvW2uP_t`2x zsKY>RfO_}li-?SC#j_BB1GZAw;+)%Yr_J*&qXvut0|UeVlj`fMt={afo1MtOz`)?? L>gTe~DWM4fp?rMgCx$D3Sy+ zhXFUZqH}ta#+HWqWf!L31_Fp1OFTFXQlJANMG4hx`QhEf3%7 z?q*Iie7*M6EIq-B(ySsJ@d&AoYi`nLe zh9CM{7HzaGHL{eE;Xu#1l8!n1_&hjaKHA-{8 z9dSRH=~r`a{q+@>{^w-xzthWloQ#@GT2~LQ5 zVbs{qviZ-ajN7wa9xP6rzRzw`n|kMg>Zwd&KSef#S3IbmZxDU(9k1=1T6>(aOEYrnF)b#LPLx__U_*}iX?Tev;oQDVYs6L0y}xF|gl{cOL_4=zW&Hump# z^A+9^X?bJjAv59Fpfk7r|GD;bspz&xMM-KhJ8u4CX1u!L>=9;jY5rKtoXwm}=CAo< zZF4qzGMQhl5`HTg{5B|#v5|fDqw@tzKdpOeyzJ$RS6ALgr9F)G#z-lC&)5%5?A*2Y R!^xE(IZszVmvv4FO#l|qIWhnM literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/units/precept-weapon.png b/core/assets-raw/sprites/units/precept-weapon.png new file mode 100644 index 0000000000000000000000000000000000000000..a90cf9ad7385b931aa5266dc22cd3ae2a966447e GIT binary patch literal 1960 zcmeAS@N?(olHy`uVBq!ia0y~yV2EL0V3@|i#=yW3Jm-BE0|NtNage(c!@6@aFBurv zlRRA~HV^d`MlCgs`wtidalT_& z(#tA4M}%!j{{_aZlBJC`P2NjSN{HmASv=wU-gaoutD4<+WbHogkkKpW6<~1`U}@}f z-_5t6?Q(zpy}1Tlc|3`KD>La_x?4X$sj$7GDo+Zn)YpK-(Kz*mWiML9Gz|5@NJ_>nfm`ff2Z&M zwKL-JN39dS+-uJh9%zquZQ18&mh4-#!@37jfH!W6AJnQDAZL??hdOf;&(^RJJZr|$b zt(RjgL|;5Qz5M-r)t7S=dUs6Ql&O>1W zMVZRGL(+D}960&(Z*lOKX?aR>xHG;!SsB5{8sM?1UoQX1nm{e>xxx+oH@$v6ku*BH z+H6I4P}Ig*)8=&l`>}rC8dsm-bW!!K1#hc;KZQ;Hw>xcx$JVT~e>h6@G}RdDGAy?) zo!uX_!(pS-v`wbBi!@%wm|s%;h-f59DxX&{m<$5COEj)kDrH}&$UrO=$ZI4dW41F#n-=mwaV7p{C*K?*Pb-Pq= zdT42g&aJz)>{ZO8!$&i8@A_2aCM?x4dH(9ntemUt%U{1*xBT0kX_wSFkFQxRa^cy{ z*VX^mtu-RiR2T>cW(XvZ}raP@)eeb)1n)ku5HTxcJg3^!M00>l)H~Q zsl{?_Kcu;y;cC~Xk9qt2S3bQuW$CeNKkep}tbX3=GrjzwkST-R2b0)!o_bz)!_IE9 z@a1{=Q%C-sQM~_mP*Tpm$zjcv716w6YTjR!IX^A-On>v`#{B;84?ln0SFukhljn{~ zXg~Yrw4K@ecUiQbeJf?QJ^NeR`m!`W*XQ$9cRbdg-u=Gt?AC_;yFctv`nf+l%zo>c zcJJf*N3S)nJG7JQ!FSVcYJ<2{q}j*O#7_(cZYhO>wNvccS*UVnAh!v2?5I&m|#R7SnZo6Q*8UUtlP=uO@ZZr&CMnPceJxTV%SfsEdetbxgKh zX{v7O?vU$~{ykjsIO2?0S#;&rT^8!9OE2y0R-JbK;gVoo>*+^hZC2*J`n%ozjr`fC zr?eUNO)dOx6s&md{H^E7pDryrH|@F2);|_Y3p&qkzW(ZWm&Ni#Pp#UG<^K;=6mb@K zOj$XzK7Zlw4FSc~zRFb_xBE|vwXNKxI=QFW!u@To8F!jwyZ83%TQ*JnBJuM1%1h5D z@ERmPx~w(ZI_&h`z;|=j9?v=$QgJrxveeC4wQKv^Bi1i4-JOw?aOHBc*y6skZ)d$V zi>lMCoO$-`ELpFt`5l)NE*<(DmSB6tS!3fgW$8?f%&V8w)$J}N-`*RxFvx0)|)r~f&}sCxI2sb5<0-j!c2rYf&2SzVqs({J5=+sg9q0V&GeduuO?PdQt6 zJl$l?`yVBhlV`eFg{8c+4>(&{y{CT9?bVN$a6J`0`F*Yx*TYlO&uPEScD-KyHBj`C zR@3iii<_ff#{9fgX=)gC;qTLq%vLYahsVA|y}a{dXUWCYorPL@as0C`Y3&XDc4tS$ z_nfY!3i+EDWwsS8QJwf|;);mJMjA_0CvNf!SyL!25oGQ6{YU-xB|G@|E_!{}lTHwL z$dLL{`2?GUhXsRvt;kJ=W={4S)9fa_QQ&AI4#|o9XJq`eVqwQ@h1(1a3=E#GelF{r G5}E+LE!~^| literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/units/precept.png b/core/assets-raw/sprites/units/precept.png new file mode 100644 index 0000000000000000000000000000000000000000..683a19aceea80743bc1e57ad23517c5251307076 GIT binary patch literal 2904 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 literal 0 HcmV?d00001 diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 60451df04d..0cdaf71573 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -557,3 +557,4 @@ 63135=unit-repair-tower|block-unit-repair-tower-ui 63134=merui|unit-merui-ui 63133=osc|unit-osc-ui +63132=precept|unit-precept-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index c18ca7932c8f05c68701f9d9e3c6a1849a65735b..d2ecc3dbe50b9ba87b376b76cae36d59892ba738 100644 GIT binary patch delta 28 jcmZou>Q~yp!pCT}nU!xJBL{myQEGB(LCNMr{4R_Dcj^eI delta 19 acmeBIYE#<4!pCU2nU!xJ lightview.add(tile)); diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index b89af108dd..4650430b7a 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -362,17 +362,26 @@ public class UnitType extends UnlockableContent{ /** how much of a top part of a tread sprite is "cut off" relative to the pattern; this is corrected for */ public int treadPullOffset = 0; - //SEGMENTED / CRAWL UNITS + //SEGMENTED / CRAWL UNITS (this is WIP content!) - //for crawlers + /** number of independent segments */ public int segments = 0; - public float segmentSpacing = 2f, segmentScl = 4f, segmentPhase = 5f, segmentRotSpeed = 1f, segmentMaxRot = 30f; + /** magnitude of sine offset between segments */ + public float segmentMag = 2f, + /** scale of sine offset between segments */ + segmentScl = 4f, + /** index multiplier of sine offset between segments */ + segmentPhase = 5f, + /** how fast each segment moves towards the next one */ + segmentRotSpeed = 1f, + /** maximum difference between segment angles */ + segmentMaxRot = 30f, /** speed multiplier this unit will have when crawlSlowdownFrac is met. */ - public float crawlSlowdown = 0.5f; + crawlSlowdown = 0.5f, /** damage dealt to blocks under this tank/crawler every frame. */ - public float crushDamage = 0f; + crushDamage = 0f, /** the fraction of solids under this block necessary for it to reach crawlSlowdown. */ - public float crawlSlowdownFrac = 0.55f; + crawlSlowdownFrac = 0.55f; //MISSILE UNITS @@ -1377,6 +1386,7 @@ public class UnitType extends UnlockableContent{ Draw.reset(); } + //TODO public void drawCrawl(Crawlc crawl){ Unit unit = (Unit)crawl; applyColor(unit); @@ -1386,20 +1396,18 @@ public class UnitType extends UnlockableContent{ TextureRegion[] regions = p == 0 ? segmentOutlineRegions : segmentRegions; for(int i = 0; i < segments; i++){ - float trns = Mathf.sin(crawl.crawlTime() + i * segmentPhase, segmentScl, segmentSpacing); + float trns = Mathf.sin(crawl.crawlTime() + i * segmentPhase, segmentScl, segmentMag); //at segment 0, rotation = segmentRot, but at the last segment it is rotation float rot = Mathf.slerp(crawl.segmentRot(), unit.rotation, i / (float)(segments - 1)); float tx = Angles.trnsx(rot, trns), ty = Angles.trnsy(rot, trns); - //shadow Draw.color(0f, 0f, 0f, 0.2f); //Draw.rect(regions[i], unit.x + tx + 2f, unit.y + ty - 2f, rot - 90); applyColor(unit); - //TODO merge outlines? Draw.rect(regions[i], unit.x + tx, unit.y + ty, rot - 90); } diff --git a/gradle.properties b/gradle.properties index 675f91763b..7b642a60b2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,4 +25,4 @@ org.gradle.caching=true #used for slow jitpack builds; TODO see if this actually works org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 -archash=7f36a32bec +archash=9ae34c37ed From 3542bd9e9018273971a6548216703e3e4c0ce6c6 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 2 May 2022 15:37:43 -0400 Subject: [PATCH 2/2] T3 tank done --- .../sprites/units/precept-weapon-heat.png | Bin 0 -> 1301 bytes core/assets/bundles/bundle.properties | 19 +++++-- core/src/mindustry/content/Fx.java | 6 -- core/src/mindustry/content/UnitTypes.java | 52 ++++++++++++------ .../mindustry/entities/bullet/BulletType.java | 1 + core/src/mindustry/world/Block.java | 4 +- 6 files changed, 54 insertions(+), 28 deletions(-) create mode 100644 core/assets-raw/sprites/units/precept-weapon-heat.png diff --git a/core/assets-raw/sprites/units/precept-weapon-heat.png b/core/assets-raw/sprites/units/precept-weapon-heat.png new file mode 100644 index 0000000000000000000000000000000000000000..07c80972dbebb755cbc2d346a158a3b780b5f505 GIT binary patch literal 1301 zcmeAS@N?(olHy`uVBq!ia0y~yV2EL0V3@|i#=yW3Jm-BE0|NtNage(c!@6@aFBuqE z&U?BzhE&XXd;6`Qw7bZ$kN-DTYAB$%0oH@tl;^OjTbHsh|4-)U{IBb~BPA#-f$Vs#RULM-N z*{pH*Z|em98%%9aKk&?8n4b16IR5%KiEP0N;csSwWqb3~o%W~tI{C~0U{1U*p4jW; zFZ(0Cr8a(wDW`4j1MNe3yG3UG{j!k%*S?0-QyD3tH%@!Jxkh_)i>h3R(B=2UV zM9%-KY5HYtkh@hR^Zh4}H|+hn=J&NJnfC2V`${&k**$o?L3W1l-!FSK&6m8Ex_u$I zY)ebI^~?)Up!hyF9(Gr#{<$oWK+UTS#ITIUBBe6!SC zwD)Tq-+p?dWasXQ*LJb+#l9$aIWgt$R!-?_+8?s~%ys72hZroLl6-ajOs4uIu0Nfr zynpsf+*&Flm&W(Uo9XwZ&;QL|GL?Vlo~Cc0^ZVyQqp(+As-X|w*(oi1(S7}C&5t7+ z?%sMI#hkGD%1pOe2k!pWf0THo;G_1g_VD1OOPBL5e~RVZZ^}~Ubysr<$DOkHtjokR3xDb3H?TLzVI#rKk^VcY~sD zPfbXRUiwbl|I2e54c7+@Y2T7RC)a+fW!t0dROi}K=U^ked`crnMKi}vz3q4V4~xHg z7dq>J_?4@31!G^=IhUxbKeg`oclYHz_nWG5{WnxS=kL|Xeh{p5C3sP*{Iv6e8-E1+ zek^%$()P}+XWuuYDnYm-xBs zhDMgEQEyfqI9{@N7W0D@S4uBlxxX6}y!j5+(lxQ$oEL44+idmWbutnZ%BDZFIuZ>|}$ zZmQpRG~B#%_w|4EE|0{mHnaVkw(kAB88>sTa;BMS`?Kl4bklpeBs!z?dwl1GtkZQN z1@Geie?P3ZAw5mAtvPhnfxCaLlO)VjUClQwn)j=sO!$V$=I`2ml}4FN<==H@xjsrY zKjD5Ye111SgYo8*UBUBQx(;|-9Qa#OtNTh!kQ!j(`cwNat$%W;@w`wp0|Nttr>mdK II;Vst0GM%cvH$=8 literal 0 HcmV?d00001 diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 9cae7ab7dc..ca2ff96520 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1942,12 +1942,12 @@ block.cyanogen-synthesizer.name = Cyanogen Synthesizer block.phase-synthesizer.name = Phase Synthesizer block.heat-reactor.name = Heat Reactor block.beryllium-wall.name = Beryllium Wall -block.beryllium-wall-large.name = Beryllium Wall Large +block.beryllium-wall-large.name = Large Beryllium Wall block.tungsten-wall.name = Tungsten Wall -block.tungsten-wall-large.name = Tungsten Wall Large +block.tungsten-wall-large.name = Large Tungsten Wall block.blast-door.name = Blast Door block.carbide-wall.name = Carbide Wall -block.carbide-wall-large.name = Carbide Wall Large +block.carbide-wall-large.name = Large Carbide Wall block.radar.name = Radar block.build-tower.name = Build Tower block.regen-projector.name = Regen Projector @@ -2002,6 +2002,12 @@ block.small-deconstructor.name = Small Deconstructor block.canvas.name = Canvas block.world-processor.name = World Processor block.world-cell.name = World Cell +block.shield-breaker.name = Shield Breaker +block.tank-fabricator.name = Tank Fabricator +block.mech-fabricator.name = Mech Fabricator +block.ship-fabricator.name = Ship Fabricator +block.basic-reconstructor.name = Basic Reconstructor +block.unit-repair-tower.name = Unit Repair Tower status.slow.name = Slow status.shielded.name = Shielded status.corroded.name = Corroded @@ -2015,15 +2021,18 @@ unit.bulwark.name = Bulwark unit.krepost.name = Krepost unit.avert.name = Avert unit.quell.name = Quell -unit.quell-missile.name = Quell Missile unit.disrupt.name = Disrupt -unit.disrupt-missile.name = Disrupt Missile unit.evoke.name = Evoke unit.incite.name = Incite unit.emanate.name = Emanate unit.manifold.name = Manifold unit.assembly-drone.name = Assembly Drone unit.effect-drone.name = Effect Drone +unit.precept.name = Precept +unit.merui.name = Merui +unit.anthicus.name = Anthicus +unit.osc.name = Osc +unit.obviate.name = Obviate sector.two.name = Two sector.three.name = Three sector.four.name = Four diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index 6f918c4c95..628157fad8 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -824,12 +824,6 @@ public class Fx{ Drawf.light(e.x, e.y, 23f, e.color, e.fout() * 0.7f); }), - hitYellowLaser = new Effect(8, e -> { - color(Color.white, Pal.lightTrail, e.fin()); - stroke(0.5f + e.fout()); - Lines.circle(e.x, e.y, e.fin() * 5f); - }), - despawn = new Effect(12, e -> { color(Pal.lighterOrange, Color.gray, e.fin()); stroke(e.fout()); diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 35fb04c44c..420fa33d28 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -2589,18 +2589,18 @@ public class UnitTypes{ hitSize = 26f; treadPullOffset = 5; speed = 0.64f; - rotateSpeed = 2f; - health = 2100; - armor = 8f; + rotateSpeed = 1.5f; + health = 4500; + armor = 10f; itemCapacity = 0; treadRects = new Rect[]{new Rect(16, 38, 30, 75), new Rect(44, 7, 17, 60)}; researchCostMultiplier = 0f; weapons.add(new Weapon("precept-weapon"){{ layerOffset = 0.0001f; - reload = 30f; - shootY = 18f; - recoil = 1f; + reload = 85f; + shootY = 16f; + recoil = 3f; rotate = true; rotateSpeed = 1.3f; mirror = false; @@ -2609,24 +2609,44 @@ public class UnitTypes{ y = -1f; heatColor = Color.valueOf("f9350f"); cooldownTime = 30f; - bullet = new BasicBulletType(8f, 130){{ + bullet = new BasicBulletType(7f, 90){{ sprite = "missile-large"; - width = 9.5f; - height = 15f; - lifetime = 30f; + width = 7.5f; + height = 13f; + lifetime = 28f; hitSize = 6f; - shootEffect = Fx.shootTitan; - smokeEffect = Fx.shootSmokeTitan; pierceCap = 2; pierce = true; pierceBuilding = true; hitColor = backColor = trailColor = Color.valueOf("feb380"); frontColor = Color.white; - trailWidth = 3.1f; + trailWidth = 2.8f; trailLength = 8; hitEffect = despawnEffect = Fx.blastExplosion; + shootEffect = Fx.shootTitan; + smokeEffect = Fx.shootSmokeTitan; splashDamageRadius = 20f; splashDamage = 50f; + + trailEffect = Fx.hitSquaresColor; + trailRotation = true; + trailInterval = 3f; + + fragBullets = 4; + + fragBullet = new BasicBulletType(5f, 25){{ + sprite = "missile-large"; + width = 5f; + height = 7f; + lifetime = 15f; + hitSize = 4f; + hitColor = backColor = trailColor = Color.valueOf("feb380"); + frontColor = Color.white; + trailWidth = 1.7f; + trailLength = 3; + drag = 0.01f; + despawnEffect = hitEffect = Fx.hitBulletColor; + }}; }}; }}); }}; @@ -2643,7 +2663,7 @@ public class UnitTypes{ weapons.add(new Weapon("vanquish-weapon"){{ layerOffset = 0.0001f; - reload = 120f; + reload = 110f; shootY = 71f / 4f; shake = 5f; recoil = 4f; @@ -2656,7 +2676,7 @@ public class UnitTypes{ heatColor = Color.valueOf("f9350f"); cooldownTime = 80f; - bullet = new BasicBulletType(8f, 130){{ + bullet = new BasicBulletType(8f, 140){{ sprite = "missile-large"; width = 9.5f; height = 15f; @@ -2664,7 +2684,7 @@ public class UnitTypes{ hitSize = 6f; shootEffect = Fx.shootTitan; smokeEffect = Fx.shootSmokeTitan; - pierceCap = 2; + pierceCap = 3; pierce = true; pierceBuilding = true; hitColor = backColor = trailColor = Color.valueOf("feb380"); diff --git a/core/src/mindustry/entities/bullet/BulletType.java b/core/src/mindustry/entities/bullet/BulletType.java index 9b99917b3a..179bfe4f04 100644 --- a/core/src/mindustry/entities/bullet/BulletType.java +++ b/core/src/mindustry/entities/bullet/BulletType.java @@ -25,6 +25,7 @@ import mindustry.world.blocks.defense.Wall.*; import static mindustry.Vars.*; +//TODO document public class BulletType extends Content implements Cloneable{ /** Lifetime in ticks. */ public float lifetime = 40f; diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index 5a3e588001..77436ec6bf 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -55,10 +55,12 @@ public class Block extends UnlockableContent implements Senseable{ public boolean acceptsItems = false; public boolean separateItemCapacity = false; + /** maximum items this block can carry (usually, this is per-type of item) */ public int itemCapacity = 10; + /** maximum total liquids this block can carry if hasLiquids = true */ public float liquidCapacity = 10f; + /** higher numbers increase liquid output speed; TODO remove and replace with better liquids system */ public float liquidPressure = 1f; - /** If true, this block outputs to its facing direction, when applicable. * Used for blending calculations. */ public boolean outputFacing = true;