From 5166f067076a20bf4923e179b23f982714deebc7 Mon Sep 17 00:00:00 2001 From: RouterXdd <91018607+RouterXdd@users.noreply.github.com> Date: Sat, 28 Oct 2023 13:35:49 +0300 Subject: [PATCH] Revive --- assets/icon.png | Bin 0 -> 1568 bytes .../sprites/blocks/power/wind-generator.png | Bin 2286 -> 1875 bytes .../blocks/turrets/destruction-heat.png | Bin 0 -> 314 bytes assets/sprites/blocks/turrets/destruction.png | Bin 0 -> 1406 bytes assets/sprites/blocks/turrets/pulse.png | Bin 1388 -> 1143 bytes assets/sprites/units/frontis.png | Bin 1874 -> 1422 bytes assets/sprites/units/weapon/w1.png | Bin 250 -> 249 bytes build.gradle | 3 +- icon.png | Bin 619 -> 1568 bytes src/stus/content/StuasutBlocks.java | 147 ++++++++++++++---- src/stus/content/StuasutTechTree.java | 5 + src/stus/content/StuasutUnits.java | 55 ++++++- src/stus/world/blocks/storage/RegenCore.java | 130 +++++++++------- 13 files changed, 248 insertions(+), 92 deletions(-) create mode 100644 assets/icon.png create mode 100644 assets/sprites/blocks/turrets/destruction-heat.png create mode 100644 assets/sprites/blocks/turrets/destruction.png diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fd461eb41500cef46c534c8d6c3890989b9783d0 GIT binary patch literal 1568 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 delta 2275 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 diff --git a/assets/sprites/units/frontis.png b/assets/sprites/units/frontis.png index cccca098a5eae97ced1e33e6b997de7571f0f2cb..12886a6a69ce23d0bbfdbd789111a7ca5e5e54a0 100644 GIT binary patch delta 1404 zcmV-?1%vw14vq_uBYyw^b5ch_0Itp)=>Px)NJ&INRCt{2n>|t$K@i9LS;7UdilPV& zh)4*50}v9Bl7P7o$RQ+94xowY3kW#?5Rz=P0ii`%g&sfy46vU=)88|@Xchm6^3C+e zZ)av_wnu$;4IM}1415k+%w18MX*Ah`gI z1&8~a)0mJ^tE;OI+G-%^Z?tbMq^|2= ze|JxXBmycsMj+L|Sy^0wmBj_MO)E%cP8uW@5Z56(k}Nn>B^U~cN`vGPmx~1H5unZW z4Uwh?($4lyIA9Kl1&QkX@?zrI8)-Rkxw9jvzwSd0=zq|TEbJPH2qfy0n{FB$DQ9sF z@-33*o%v)21$d1(jZ0QpfpI*Ayk6ofdgQi=CwDP zW)$H5wSURI+Ou#_9Hg%6;M14S?uSjK<)N-YT1N{G_wN>*ljV7HDoHl9&0aPS0LNL3 zGmwE}ovlhR79`156q0AZ*1TSYL6+02Oo)4JOF+2M(trCt`}=HdY4$h1skEt(p>@y^!S~w_AZt7f&!tp?;-OLT)LtB%~L#Nl77C5z$`Q#ye=J5KI zWS!y6vXAG9O;4xdr^{B`e-5f-yT9&TH8M|a%vJW$AeDj8r@$p(efH4A^`$<_7&J&+ zPE}0xP*qHq9`Wgj#u!O{BSiTptup*YCFpN_5_5AZ6fi=P=yk(6`heWgnVo^kq$vXj^=SQb!U1rc=6@wf zp8ZWLNHuU!2q^*wV1#?pwUAoCLH)D$q%BBZ)xbdwdQWI(dJP$jwYpN+&@T9Q5prb zy>|7)E6s*C4%*%-RjWT*n=2_ePk-=HNFEzj98xDdQRI@w9HBaeZ_S-c0>{I$*{XXkiwtfTSZCks6$k0Xr0000< KMNUMnLSTYXQ>UW< delta 1860 zcmV-K2fO%=3(^jdBYy`ONkl1(5FmJlWzP)f+r#;)s;m3n?_0#&WTv{is!p9c_pk4F zadCUxDzHU?=e8t!?sq?4J@z%sKX~_Y*E+0mj(WQh&&aZwy?;eISG`>X8j;;wq;uBW zEKry1ULu{l-X?)&$wnfLF!a_O#S-7GVz_TKUlwSUED3>h7h@)t_-kaq;lM)oi(=cwhi)5Ey2@2>SI>*_>!Lv)BpMQO>)2c8!reCdNu@-A|JEUKTEy*j5R;a;;GoYW@}%Ew)gxlV{fXa;+`VStBt*ZH=DOPVfA~qK z!}0g;y)%sQ6U077{0Z!RU_BHF4uWHh!;4V)2o&*^NVDPq4@V`Ei*u9lw2zEG7#rGRRUDLY)>%~2hB$U+(>it zKf}msBCFzB`H))*lz~^E8ByO616vOjM#mb%afX%EMqb1@T4N2`^s;2YtR+dky|kg| zwVeqPT`j-<_4k3&FCX1IjB%UcsBX1G@Wfzv1x;WbLRFl@;=coJ5KCXZ^@@ia=I-;{ zLx13tK~+=ZX2-h=)FH}7U4V!@W0(`gaII6Dv0b~nKv7}673gQWRo}8e z*yr$1i~A=BecI5~-M6{iwwj|@3gETLuiBGoel%VZ$P4=1iLx*n%bH_MWvhIz>70CC z)luKHKv^MQcfwk9v85hW;aBo6X$7Dl;=!ErKB5XAqQU2{E37H5{IM`S9l(hy0IzWrRBtN5AS3 zLoOKW5pi=ao~t>;3I&4G8+LHs@6ldK&nU1ww_c;ER>WBmGseeFljzr?a z5wU)(h~yYLA6+?-IL!B3t1AxjOMwuOiByS$JREz8v_+g7CQtWsGvXk3C=d&%jczOT z>v*e3dx%3myxlnO*lB@g#36x^NQ@gMh#AK_26r2QlgAoHi3_>VGXpu*iatlgh|w zTqX``s84gWzSoF&X#DIr6(}MUtz`wBIO7yU1)$%p#%Qj_WwkVh;|L>KV|*$Q0yI&_ zOwMdZSTVHm42SC)s~GgdW;Hd2W5v)h{c1~r5D0(~hyrFr6(fsL93N|rVriVl=z28n z_B9kJ0^hR6CVcNyVSh4~xmE1mz8Cfe#F^SnPWPA!2z+KVW-`@Bhwb>EixOg&wX?Q&`hG-|{NFuqHK y@w4{Sb$1g8jXBv%tB!2;OQb$4nuFf3k00029Nklc%8X&e+!>u6sS7BHF5aH~NegmL-u1Eu5p>>g%w0fB#Rd X!$V3|`=p^500000NkvXXu0mjfZrNiS delta 222 zcmV<403rYR0r~-uB!9t4L_t(I5o2JWH(8f{othaEp+m1g;UACYTOvnlYRTvk9gNL}L>}(O0N3ZyUqSmv52vfY~51 zkQ_3AYeaTGvSws9vKqJ_VW!=PC__o$Fma6)T_|c%I50)%n$b1E)M2GTn$Zows*rAi Y0IS1DU!RISA^-pY07*qoM6N<$f-93*6aWAK diff --git a/build.gradle b/build.gradle index 36b440c..2e7322a 100644 --- a/build.gradle +++ b/build.gradle @@ -9,12 +9,13 @@ sourceSets.main.java.srcDirs = ["src"] repositories{ mavenCentral() + maven{ url "https://raw.githubusercontent.com/Zelaux/MindustryRepo/master/repository" } maven{ url 'https://www.jitpack.io' } } ext{ //the build number that this mod is made for - mindustryVersion = 'v140.3' + mindustryVersion = 'v146' jabelVersion = "93fde537c7" sdkRoot = System.getenv("ANDROID_HOME") ?: System.getenv("ANDROID_SDK_ROOT") } diff --git a/icon.png b/icon.png index b10292875db51450f9dfdc1d0e39d45b430a4091..fd461eb41500cef46c534c8d6c3890989b9783d0 100644 GIT binary patch literal 1568 zcmV+*2H*LKP)Px)+DSw~RCt{2o6l=pHxS2X(^3klV;VLDuj@dP7IqDV9(yYE2R-!AL;r^!de5n+ z{sBGoQu?3tV6Z9u7Yf}469T*VnUck2v(33ZxN`KglHN!&deSKG3kL6ddU~VzXl5j> zJ^JnEpZqQn7Fj=q0ze0|~IWoKJS5(UKRU=xb=SsD~kKy>|e`DgpW!OK@aw);XP z5(w7W5}}9#66$1WP(%S~Irs9mb;*1G;P_R+7bsCcZe#%g04)$wp@;%_Gqk=D&ZH*cyI`0|M|rlnP-02n7NFJE=%7_)=j22tVyLpN{Plbe7~SOCkVWxoYR((a~xm8rk(p8g_LsVphyv`bc6s7@4VH$uG zrU6J{Dt47sx)$@r&F|CMl&xQu2wBV*Edy(pIabcG2SrF6Q1)c zTxxVIn8*vu`gdXP3yB7I2Me0{=sD8ZAY0b zJ{amgB~o-BbdAF%wv=VU(B%WuX<^J8XJN>Nj{E8=XM z%js-N+o^}Zz^FDDN++jhsL8mPFYG|3vuS6jal@dla4@L>n;uV2&yprm|IOFV|DaOEJH?7arLWw%K2)v+4VMjGAbp5>e$^+8 zK9v3MvZ&u5)S~AvuG4H$f4LYs+iQsq1p~knA$lWS_wL||TWZw+!{%cv5El&nUMeul zrb%8nP3hx}8CT5Ybv-ls_KQ!+MLh)^6ABfEZ6f(5p00a$_RwvqeXtaD>I^fb!{CmJ z7{^j!g!I9_%6k4{ONLTIeTY?2tE@qZ_8}or;>+!vwJEd?{L%c~`uySKT{c^MO13fV zg5q+Hew_;p7K91Gb}u!U-goL45MB2|0CB)D+ogn(6bQ%a1k%x*f}k*>{{nWOlw*KUi?Hi7SM z@=ZaBm=3gAOY!}RU?7m5E4)gJ;42m183ixEgnOcq*Ju8t-6WGYsr_Jb; z^!0&^#X1&_&ac8ekAolV5K>SH<3HE<*sEbe#Qy(niV16%Kc32-$Lo~zGd^l&&W4uc z?GTe>V|1jPl5(Z~)a$ml6)d+Zf(ACHJeeJeWU3-PzO%jWAQR~I>&ileU{q ztZxtuJ*nIJgIy|c@|~cL`UQffnA{nke{`!^EK-w@nDp!H-R5#uX6K-$x7DA^q|-p6 zlAByN{Po{fUGZdELW&1}--m*O*B<`Op5eIUi1Kz8X6H#w`iITu@uw*Cg-lxpOdt%N Lu6{1-oD!M { + node(StuasutBlocks.forgeT2, () -> { + }); //TODO more factories }); node(StuasutBlocks.bariumWall, () -> { @@ -101,6 +103,9 @@ public static void load() { node(StuasutBlocks.pulse, () -> { node(StuasutBlocks.collapse, () -> { + }); + node(StuasutBlocks.destruction, () -> { + }); }); }); diff --git a/src/stus/content/StuasutUnits.java b/src/stus/content/StuasutUnits.java index 06a0e68..dbb257a 100644 --- a/src/stus/content/StuasutUnits.java +++ b/src/stus/content/StuasutUnits.java @@ -13,7 +13,7 @@ public class StuasutUnits { public static UnitType //units - navicula, + navicula, frontis, //core units sunrise; @@ -101,6 +101,37 @@ public static Weapon getNaviculaWeapon(float x, float y){ weapon.y = y; return weapon; } + public static Weapon getFrontisWeapon(float x, float y){ + Weapon weapon = new Weapon("stus-w1"){{ + reload = 50f; + rotate = false; + shootCone = 20f; + mirror = false; + bullet = new LaserBoltBulletType(4f, 30){{ + width = 4f; + height = 9f; + + lifetime = 40f; + pierceArmor = true; + pierce = true; + pierceCap = 2; + pierceBuilding = true; + + trailLength = 14; + trailWidth = 2f; + trailSinScl = 2f; + trailSinMag = 0.5f; + trailEffect = Fx.none; + trailColor = Color.valueOf("FF6F89FF"); + + frontColor = Color.valueOf("FFFFFF"); + backColor = Color.valueOf("D85876FF"); + }}; + }}; + weapon.x = x; + weapon.y = y; + return weapon; + } public static void load(){ navicula = new UnitType("navicula"){{ @@ -126,6 +157,28 @@ public static void load(){ weapons.add(getNaviculaWeapon(0, -2)); }}; + frontis = new UnitType("frontis"){{ + health = 230; + hitSize = 17; + outlineColor = RapuPal.rapuOutline; + constructor = UnitEntity::create; + + speed = 2.1f; + rotateSpeed = 5.4f; + drag = 0.05f; + accel = 0.05f; + + targetFlags = new BlockFlag[]{BlockFlag.factory, null}; + faceTarget = true; + flying = true; + + engineOffset = 7f; + engineSize = 2; + lowAltitude = true; + itemCapacity = 20; + + weapons.add(getNaviculaWeapon(3.5f, -4.75f), getNaviculaWeapon(-3.5f, -4.75f), getFrontisWeapon(3.5f, 5.5f), getFrontisWeapon(-3.5f, 5.5f)); + }}; sunrise = new UnitType("sunrise"){{ aiController = BuilderAI::new; isEnemy = false; diff --git a/src/stus/world/blocks/storage/RegenCore.java b/src/stus/world/blocks/storage/RegenCore.java index f3ea9bc..15b5b81 100644 --- a/src/stus/world/blocks/storage/RegenCore.java +++ b/src/stus/world/blocks/storage/RegenCore.java @@ -4,24 +4,29 @@ import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; +import arc.struct.*; import arc.util.*; import arc.util.io.*; import mindustry.content.*; +import mindustry.entities.*; +import mindustry.gen.*; import mindustry.graphics.*; import mindustry.logic.*; import mindustry.world.meta.*; import mindustry.world.blocks.storage.*; +import stus.graphics.*; import static mindustry.Vars.*; public class RegenCore extends CoreBlock { - public final int timerUse = timers++; - public Color baseColor = Color.valueOf("84f491"); - public TextureRegion topRegion; - public float reload = 250f; - public float range = 60f; - public float healPercent = 12f; - public float useTime = 400f; + static final float refreshInterval = 6f; + + public float range = 80f; + public Color circleColor = RapuPal.rushCol, glowColor = RapuPal.rushCol.cpy().a(0.5f); + public float circleSpeed = 120f, circleStroke = 3f, polyRad = 5f, polySpinScl = 0.8f, glowMag = 0.5f, glowScl = 8f; + public int polySides = 6; + public float damage = 1; + public TextureRegion glow; public RegenCore(String name){ super(name); @@ -33,97 +38,102 @@ public RegenCore(String name){ lightRadius = 50f; suppressable = true; envEnabled |= Env.space; + buildType = RegenCoreBuild::new; } - @Override - public boolean outputsItems(){ - return false; - } @Override public void setStats(){ - stats.timePeriod = useTime; super.setStats(); - stats.add(Stat.repairTime, (int)(100f / healPercent * reload / 60f), StatUnit.seconds); stats.add(Stat.range, range / tilesize, StatUnit.blocks); } - @Override - public void load() { - super.load(); - topRegion = Core.atlas.find(this.name + "-top"); - } @Override public void drawPlace(int x, int y, int rotation, boolean valid){ super.drawPlace(x, y, rotation, valid); - Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, baseColor); - - indexer.eachBlock(player.team(), x * tilesize + offset, y * tilesize + offset, range, other -> true, other -> Drawf.selected(other, Tmp.c1.set(baseColor).a(Mathf.absin(4f, 1f)))); + Drawf.dashCircle(x * tilesize + offset, y * tilesize + offset, range, Pal.placing); + } + @Override + public void load() { + super.load(); + glow = Core.atlas.find(this.name + "-glow"); } public class RegenCoreBuild extends CoreBuild implements Ranged { - public float heat, charge = Mathf.random(reload), smoothEfficiency; + public float refresh = Mathf.random(refreshInterval); + public float warmup = 0f; + public float totalProgress = 0f; + public Seq targets = new Seq<>(); + public Seq targetsAlly = new Seq<>(); @Override - public float range() { - return range; - } - - @Override - public void updateTile() { - boolean canHeal = !checkSuppression(); - - smoothEfficiency = Mathf.lerpDelta(smoothEfficiency, efficiency, 0.08f); - heat = Mathf.lerpDelta(heat, efficiency > 0 && canHeal ? 1f : 0f, 0.08f); - charge += heat * delta(); - - if (optionalEfficiency > 0 && timer(timerUse, useTime) && canHeal) { - consume(); + public void updateTile(){ + + if(potentialEfficiency > 0 && (refresh += Time.delta) >= refreshInterval){ + targets.clear(); + targetsAlly.clear(); + refresh = 0f; + Units.nearbyEnemies(team, x, y, range, u -> { + targets.add(u); + }); + Units.nearby(team, x, y, range, u -> { + targetsAlly.add(u); + }); } - if (charge >= reload && canHeal) { - float realRange = range; - charge = 0f; - - indexer.eachBlock(this, realRange, b -> b.damaged() && !b.isHealSuppressed(), other -> { - other.heal(other.maxHealth() * healPercent / 100f * efficiency); - other.recentlyHealed(); - Fx.healBlockFull.at(other.x, other.y, other.block.size, baseColor, other.block); - }); + boolean any = false; + if(efficiency > 0){ + for(var target : targets){ + target.damage(damage); + any = true; + } + for(var targetA : targetsAlly){ + targetA.heal(damage); + any = true; + } } + + warmup = Mathf.lerpDelta(warmup, any ? efficiency : 0f, 0.08f); + totalProgress += Time.delta / circleSpeed; } @Override - public double sense(LAccess sensor) { - if (sensor == LAccess.progress) return Mathf.clamp(charge / reload); - return super.sense(sensor); + public boolean shouldConsume(){ + return targets.size > 0; } @Override - public void drawSelect() { - float realRange = range; + public void draw(){ + super.draw(); + + if(warmup <= 0.001f) return; - indexer.eachBlock(this, realRange, other -> true, other -> Drawf.selected(other, Tmp.c1.set(baseColor).a(Mathf.absin(4f, 1f)))); + Draw.z(Layer.effect); + float mod = totalProgress % 1f; + Draw.color(circleColor); + Lines.stroke(circleStroke * (1f - mod) * warmup); + Lines.circle(x, y, range * mod); + Draw.color(circleColor); + Fill.poly(x, y, polySides, polyRad * warmup, Time.time / polySpinScl); + Draw.reset(); - Drawf.dashCircle(x, y, realRange, baseColor); + Drawf.additive(glow, glowColor, warmup * (1f - glowMag + Mathf.absin(Time.time, glowScl, glowMag)), x, y, 0f, Layer.blockAdditive); } @Override - public void drawLight() { - Drawf.light(x, y, lightRadius * smoothEfficiency, baseColor, 0.7f * smoothEfficiency); + public float range(){ + return range; } @Override - public void write(Writes write) { - super.write(write); - write.f(heat); + public float warmup(){ + return warmup; } @Override - public void read(Reads read, byte revision) { - super.read(read, revision); - heat = read.f(); + public void drawSelect(){ + Drawf.dashCircle(x, y, range, Pal.placing); } } }