From ad42861dafc52c7ea6065c1d584a601a86c18607 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 28 Dec 2021 11:29:31 -0500 Subject: [PATCH] Better block health scaling system --- .../sprites/blocks/turrets/fuse-heat.png | Bin 833 -> 940 bytes .../turrets/sublimate/sublimate-back1.png | Bin 417 -> 414 bytes .../turrets/sublimate/sublimate-back2.png | Bin 423 -> 420 bytes .../turrets/sublimate/sublimate-front1.png | Bin 330 -> 327 bytes .../turrets/sublimate/sublimate-front2.png | Bin 340 -> 338 bytes .../turrets/sublimate/sublimate-heat.png | Bin 16729 -> 2508 bytes .../turrets/sublimate/sublimate-nozzle1.png | Bin 542 -> 540 bytes .../turrets/sublimate/sublimate-nozzle2.png | Bin 550 -> 544 bytes .../turrets/sublimate/sublimate-preview.png | Bin 1771 -> 2593 bytes .../blocks/turrets/sublimate/sublimate.png | Bin 1058 -> 1088 bytes core/src/mindustry/content/Blocks.java | 68 +++++++++--------- core/src/mindustry/content/Items.java | 14 +++- core/src/mindustry/content/UnitTypes.java | 3 +- .../abilities/SuppressionFieldAbility.java | 13 ++-- core/src/mindustry/type/Item.java | 4 +- core/src/mindustry/world/Block.java | 24 ++++++- .../blocks/defense/turrets/ItemTurret.java | 4 +- 17 files changed, 84 insertions(+), 46 deletions(-) diff --git a/core/assets-raw/sprites/blocks/turrets/fuse-heat.png b/core/assets-raw/sprites/blocks/turrets/fuse-heat.png index a8b34b43815a02d6d713b80704d5e95e45b0d1f2..b8c070840be19bfcc9dfc931d44ccc8fd4ee9eac 100644 GIT binary patch delta 866 zcmV-o1D*WA2CN5=FnPo67(@FQd>b8Cd!Zh7I(|5j8Rkw#U2qA>{UkRlPXu`~% zkJ}$Ycs!5ymEuC_0>;r4qPNeS1?~jQGboP|TnSi2K;9&{5r44AU_421A)rJcUL+J3 zP%;P)5{e4&5J2e~iU}zF#dAv5Qbd56Jq314T)TnYs-}fgx(9fWP_%}nk{7Q?0o*Kf z-J+D90Xd5d#6|evO8~S8=B$Re zKYj55utvApkV|M2{%G)@f&FUxfImF4O*Rku z0N4Y5gb<#cSMxk5`e2rsJp#6XtH3qtA_lDiEYSiQCtk%E6Y=2#l_pMYTq;dT3JXHRhf0A_ZN*aNnzUE@Tg zK5_q?kAHhZeSJ@)-~o1k&mn}jlh!;dTnGR#vpd9)SBbL$nnjE*O-)M;)Pw&7di2;okKu!30dOn<;*zw&Nz=_mKs|VfP5A&g1n?R@ zI2Qn5W&=+CZ?R151slL6;BvM9C-93H{CDE$hdA;_?}}XEUH}|RfGA>#*cUEQ?*YGv z>pJ}*a0K8zeCUaQL?&X1C?lT%N1QA+k^GGsx0mQpb?!Pn5>^yPs@z-BrO4i5JLQ~RJk7@MccMN+-2j(tEzfG z(C&K>x^eB^uJ?57@hbNN#PGxioPaa=+cwBa1Dyd0q2`!y)qjT31S$hu`Dg}joKF)e zQCXoeV1zJJWP@J70C!&eBc|_&njp93v_8y;tT4=gP<+2eTWn6Lur>!TRtK>oGQ%(f?i2AE zml3-I@Xp2FjC`Yc0`TnGS}p|F6pJy#4Cuo|dYIAH+J8_8or1}Lz59fifR7mWTA@L= zz{bQ+^^*k#142P!;_T2Jr20%~&>iGA69vKzr*K#WkBTU-{*GcE$hwx%cd+u7ZF zJCKtChDCS`2V4a0+crLF#wouLJ8sn1sPxr8BvPxMsWrJX%k8lA1KrS t;M#-|#TS!-0~3>g0~C{h0|*zv%^$EI2fzB?O_Kls002ovPDHLkV1m??VPyaS diff --git a/core/assets-raw/sprites/blocks/turrets/sublimate/sublimate-back1.png b/core/assets-raw/sprites/blocks/turrets/sublimate/sublimate-back1.png index 1c75c4270f2c51637844e20b50b94ab3cdbc71a5..3649e6b388ac5b45d0604e34bba6cc12f2f09f46 100644 GIT binary patch delta 374 zcmV-+0g3*h1D*qrF@IP|L_t(&f$fJUqe5`|UF!Azp?TdRmb#~=LXRKs&3l$C#kB0#njw~0N}cL0Ie;S;-cig6 zRjgw4M8T*t*5r}WrH{-OuzbeS&QqRZDJS2GmzaC;oqMC3@-!4HUDB!um*>?8kW2_gO|zjRNf UNu#qmf&c&j07*qoM6N<$f*7=~W&i*H delta 377 zcmV-<0fzpb1EB+uF@IZ0L_t(&f$f<=PQx$|ML*o6thfwaS3+E&bdQiCA@;x(5EtMy ztl%hRWi_I9>Sq4TMB=|?6piy@duE&fLI@#*5JCtcL^Rvou#Xz+B4UuS(A&%4KBoHs zwHfjja}7SV!>9)yYYMWsu<-riNOTf|cL)L7{L*#hRzSlW5YQ!M4=TksNdFTPW6bp7g;Qd!<<}zQ6WN%X^`^PUJ|CZtt}QZA)aVskWJ;gnl$fQfNRtBE zVymm`>ixalN~#oaEM^q~79a&2#27-rLZpCp=aG6yWbjuk;txp(+ug8_{Ffz!_^12= XG8LtOR*Y-C00000NkvXXu0mjffgiIr diff --git a/core/assets-raw/sprites/blocks/turrets/sublimate/sublimate-back2.png b/core/assets-raw/sprites/blocks/turrets/sublimate/sublimate-back2.png index 198fcfd6c950e67959fe02bd4fc65f51066fa8ab..6310ed5bef4b16e18ed3f3772eeb3414db48b298 100644 GIT binary patch delta 380 zcmV-?0fYXh1Ed3xF@Ii3L_t(&f$fK5DFsh(U%zySEqj zG2I8K&5*a4Yw)op=PBkExMvS}iMa$lCn$hW{S}QG3pRYj1q)d zSQ%pG03Mx!RqT@WAWW<;DqZSvv8i6Sh^6kSq0rO!bM>AnOEE3`)ne8=AC>(zT#j9&RdNJmi< zyS}*v&@XllVRdcNP^<_QPKmXaUyG1WWJ4Y{+vXm-|G7K5Hp@g&qgQN}DSeDnVwSEV zO$um>eSLmZ@9*taQl)@nF{=!=eh3rmi%OT;EFX&3En=yAYAE#l`BHpl%2G_rex(^=iKW!3+L8k} zV&NUdm{5;ZjGibMb;g=JQo8h(*#f4|SlW5YQ!M4=+v6qXUVO*i==OTo6r)wXC#0h& ziQU}Z{oHF5yLg1KHfbo<3mxyB5vwh~8X=W7F@FI`L_t(&f$i794T3-r1<=vhhBrOhh#ox}TTtwP4nSKl9yw}5 z6r!g|fb8rb+1<>N|Be#WzaN%?2mk;8006SKNcBVe!|^-iywAG{@*kHWz9gop3p8Xt zC{dWOSp*Hi{5{Gx+nx9Lqb|K!X4B}UD7_15rqSEFaDHC3HGdK5jWVfO^NmUiAd#9i zAC&0-ur8|r|09X}=`0?*zMks&Sv0EgEdrZGP$E67nV`J8#$qNYQQWY}HY49#NcS0A zwRMnPb|~4vpz#e9JS=GUA@9Dfp~1|hD>dGoh{ildBxV|A-Dby*eM7EB%?%9wW*c=_ lAIr?8E74xR02lzkq9155Kv4hXnlu0a002ovPDHLkV1m#rhA995 delta 290 zcmV+-0p0$`0?GoAF@FR}L_t(&f$f(~3c@fHgh%ld?sVm4bS;P{5UNM$5wy?~h~Qf9 z)NAM}QbJx{Eopcy^DUdC&AiFa6d;5ULI@#*jG9@l4{dk*PoHt`*E7i+=P6z?Bz+6y zV_qnbM(ikrroj9jb*$E#XnS=nqgp28XmKf{g*4-6u{;HzSAR_nKzH=lUvSpEqf!CH z{(`gSg#!PJ4Y5ctk1X5{N3revxU1tw;iyKe2#!ez1$41ygu2spD9i{2h83IbFpB+! zwC~uesgs07*qoM6N<$g7zqfUH||9 diff --git a/core/assets-raw/sprites/blocks/turrets/sublimate/sublimate-front2.png b/core/assets-raw/sprites/blocks/turrets/sublimate/sublimate-front2.png index 296ac010f592561196e0b2de643d5925a9c883ae..9dc19c54d02991f616117274a6f50c7edfbe5bce 100644 GIT binary patch delta 298 zcmV+_0oDH00@4DIF@Fq6L_t(&f$i794T3Nf2H=Nr4JX1QH{%Kd6Q~m)GZ1ci6BqHQ zHwUSwCItFgXs|xW{~a|I{{B!~A^-pY005Y^DAa`x*-80~D~sdkdyJy~kd@EHLrU|r z*93Km4@xvm*jWUf!usDgFjTxvtgSZptMy%8Orx%e5YuS6+kYEBPwQ&%Z^YX~am|Wv zl$!t!*R1%UMB~Gnhmm_PlZX){8<+zSt001D-7ya%}|IMHzIsgCw07*qoM6N<$g1AABr2qf` delta 300 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 WT9h2l+&3iv0000w5MSb{4t z)V*L}J!;hX2d8_w&lh18!Ptj^d2c`h0001x&BFQs&gJ^%_E7zMxmq6|zdmo>{+}1t z2QY<)$L*o}SvFDxko-nS6F~AAAyoj$Uxai4BwrCy29W$jNK+d?@)03yfX|QjUeB|R z5H^4`j|gs8h-3U-4Hwl_aT|*jbEp8){33)4Ak8a6$Na?vn)pBL}BkZf^Fwvy(3YE&=V6UIA1BSC^Bt0VM(7liC3< Z6&LP!nvoX3M4SKs002ovPDHLkV1iTpb;|$% delta 277 zcmV+w0qXvo1fB$tF@M-eL_t(|obB7qO#)FAhT#u80XH;Y8M-zxwjefO!p6PY0-*t` zaiyi;!dx@z{DX7Oobx^_OjwNPWnk_dkN^Mx0A#bUK7doXyt+PA|6Z=v-;ZCOwr>B= zGwTDG!rlG$(EThMDFR4-Bcur+`HYY%faEVix&V@|2q^Z-Vn#fmvp0BL>^!Ud4#6(M8*X+9Cc29V|vA#?!Ae}wP> zB;OH2uLI^Fe1N7`|Len}o^NiG0|6rk$6Ri1_PdjlEdee8?vq>rR00?0ld=IN0bi5Y b0WTFNE|r>aO~C`$00000NkvXXu0mjfPSAKR diff --git a/core/assets-raw/sprites/blocks/turrets/sublimate/sublimate-nozzle2.png b/core/assets-raw/sprites/blocks/turrets/sublimate/sublimate-nozzle2.png index 87052d3082103bf099c8d7616c239f38c793f5aa..ff0d1859b12197c0708c35160a3e1b0a05b7e3c3 100644 GIT binary patch delta 442 zcmV;r0Y(0%1fT?vF=pCHL_t(|obB7aQNvIWMd1s5kU>ZZL<|WG5q&VG13IunnjnNm z9NL+iAT!Zpgwel^cC~xH$jmqpdo0h>lO+KF007A5%=!RM<$3YCul~K=tbbmAe!RQ= zKhLcXU<&sSPy6n7k(ncZF0Zb8z0W#A*Z|TzBDlRm9OLk6xTszgx3Rcl4i!L}UxaW0 zqsBupi>VLikI(_yhF@4m z2pgc!@C(ZbAp;BmpeEEG1lk>bAp>2v$$ggbGl% z=hG*G)}xV1&Nd%H1Rh|GQ!G~{=khu{0w!xUgptggB=UR45&!@IfNU^7pju19LpW#=>8b$~iV94;R-!Y01F2I=KTM8B6 zl*`TKZguwa=_6EtexZbxnh|9KMt+fb?_V*29+)1ZcXtS?*RYhA$-u zAf0xJ`QMvyVFDbx0;+yKBEl5g(IEnK4Zk{WKm=~c^wc)|V~ek@&;KcJNrrd_G#R_? zF!fFOkO8)vb?2+RDT2knrGyJm-*y-h!RjfRPyw3ueELMNGkk<8On|lxx3&lmuXm;w zBE<*TZq}oBJFSN=1qd)iJ%WefOUVLA-x0hFUrHFj+cU$dlji{>6$?!V$db{HhBg2I N002ovPDHLkV1gs>*)0G7 diff --git a/core/assets-raw/sprites/blocks/turrets/sublimate/sublimate-preview.png b/core/assets-raw/sprites/blocks/turrets/sublimate/sublimate-preview.png index 11b2d43d75fcc81d5ed5d573ee254ede48940a2b..b91e9ba13b4af99c0000f3467ea0d6796fc51088 100644 GIT binary patch delta 2585 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 diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 386482a2ca..614c44d236 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -134,7 +134,6 @@ public class Blocks{ basicAssemblerModule, //payloads - //TODO small deconstructor payloadConveyor, payloadRouter, payloadPropulsionTower, smallDeconstructor, deconstructor, constructor, largeConstructor, payloadLoader, payloadUnloader, //logic @@ -1492,7 +1491,7 @@ public class Blocks{ range = 85f; healPercent = 11f; phaseBoost = 15f; - health = 80 * size * size; + scaledHealth = 80; consumes.item(Items.phaseFabric).boost(); }}; @@ -2406,14 +2405,14 @@ public class Blocks{ requirements(Category.effect, with(Items.titanium, 100)); size = 2; itemCapacity = 300; - health = size * size * 55; + scaledHealth = 55; }}; vault = new StorageBlock("vault"){{ requirements(Category.effect, with(Items.titanium, 250, Items.thorium, 125)); size = 3; itemCapacity = 1000; - health = size * size * 55; + scaledHealth = 55; }}; //TODO move tabs? @@ -2428,14 +2427,14 @@ public class Blocks{ size = 3; //TODO should it really be kept the same, at 1000? itemCapacity = 1200; - health = size * size * 120; + scaledHealth = 120; }}; reinforcedVault = new StorageBlock("reinforced-vault"){{ requirements(Category.effect, with(Items.tungsten, 250, Items.carbide, 125)); size = 4; itemCapacity = 2500; - health = size * size * 120; + scaledHealth = 120; }}; //endregion @@ -2484,7 +2483,7 @@ public class Blocks{ inaccuracy = 17f; shootCone = 35f; - health = 200 * size * size; + scaledHealth = 200; shootSound = Sounds.shootSnap; limitRange(2); @@ -2541,7 +2540,7 @@ public class Blocks{ liquidCapacity = 10f; shootEffect = Fx.shootLiquid; range = 110f; - health = 250 * size * size; + scaledHealth = 250; flags = EnumSet.of(BlockFlag.turret, BlockFlag.extinguisher); }}; @@ -2562,7 +2561,7 @@ public class Blocks{ chargeBeginEffect = Fx.lancerLaserChargeBegin; heatColor = Color.red; size = 2; - health = 280 * size * size; + scaledHealth = 280; targetAir = false; shootSound = Sounds.laser; @@ -2609,7 +2608,7 @@ public class Blocks{ scaledForce = 6f; range = 240f; damage = 0.3f; - health = 160 * size * size; + scaledHealth = 160; rotateSpeed = 10; consumes.powerCond(3f, (TractorBeamBuild e) -> e.target != null); @@ -2629,7 +2628,7 @@ public class Blocks{ range = 240f; xRand = 6f; size = 2; - health = 300 * size * size; + scaledHealth = 300; shootSound = Sounds.missile; limitRange(5f); @@ -2657,7 +2656,7 @@ public class Blocks{ spread = 0f; shots = 4; ammoUseEffect = Fx.casing2; - health = 240 * size * size; + scaledHealth = 240; shootSound = Sounds.shootBig; limitRange(); @@ -2666,7 +2665,7 @@ public class Blocks{ segment = new PointDefenseTurret("segment"){{ requirements(Category.turret, with(Items.silicon, 130, Items.thorium, 80, Items.phaseFabric, 40, Items.titanium, 40)); - health = 250 * size * size; + scaledHealth = 250; range = 180f; hasPower = true; consumes.powerCond(8f, (PointDefenseBuild b) -> b.target != null); @@ -2695,7 +2694,7 @@ public class Blocks{ liquidCapacity = 40f; shootEffect = Fx.shootLiquid; range = 190f; - health = 250 * size * size; + scaledHealth = 250; flags = EnumSet.of(BlockFlag.turret, BlockFlag.extinguisher); }}; @@ -2712,7 +2711,7 @@ public class Blocks{ shootCone = 30; size = 3; - health = 220 * size * size; + scaledHealth = 220; shootSound = Sounds.shotgun; float brange = range + 10f; @@ -2761,7 +2760,7 @@ public class Blocks{ range = 290f; minRange = 50f; - health = 130 * size * size; + scaledHealth = 130; shootSound = Sounds.artillery; }}; @@ -2783,7 +2782,7 @@ public class Blocks{ shootCone = 30f; shootSound = Sounds.shootSnap; - health = 145 * size * size; + scaledHealth = 145; limitRange(); }}; @@ -2824,7 +2823,7 @@ public class Blocks{ coolantMultiplier = 0.4f; - health = 150 * size * size; + scaledHealth = 150; coolantUsage = 1f; consumes.powerCond(10f, TurretBuild::isActive); @@ -2852,7 +2851,7 @@ public class Blocks{ shootCone = 24f; shootSound = Sounds.shootBig; - health = 160 * size * size; + scaledHealth = 160; coolantUsage = 1f; limitRange(); @@ -2887,7 +2886,7 @@ public class Blocks{ ammoMultiplier = 1f; }}; - health = 200 * size * size; + scaledHealth = 200; consumes.add(new ConsumeCoolant(0.5f)).update(false); }}; @@ -2943,7 +2942,7 @@ public class Blocks{ restitution = 0.03f; range = 190; shootCone = 3f; - health = 360 * size * size; + scaledHealth = 280; rotateSpeed = 1.6f; limitRange(); @@ -2952,7 +2951,7 @@ public class Blocks{ //TODO bad name sublimate = new ContinuousTurret("sublimate"){{ //TODO requirements - requirements(Category.turret, with(Items.tungsten, 50, Items.silicon, 60, Items.oxide, 30, Items.carbide, 40)); + requirements(Category.turret, with(Items.tungsten, 120, Items.silicon, 160, Items.oxide, 50)); draw = new DrawTurret("reinforced-"){{ liquidDraw = Liquids.ozone; @@ -2988,15 +2987,17 @@ public class Blocks{ }}; outlineColor = Pal.darkOutline; + //TODO also consume hydrogen as a different ammo consumes.liquids(LiquidStack.with(Liquids.cyanogen, 3f / 60f, Liquids.ozone, 2f / 60f)); range = 170f; - //TODO multi ammo shootType = new ContinuousFlameBulletType(){{ - damage = 4f; + damage = 5f; length = range; }}; + + scaledHealth = 320; shootLength = 7f; size = 3; }}; @@ -3006,15 +3007,15 @@ public class Blocks{ ammo( //TODO 1 more ammo type, decide on base type - Items.fissileMatter, new ArtilleryBulletType(2.5f, 60, "shell"){{ + Items.fissileMatter, new ArtilleryBulletType(2.5f, 100, "shell"){{ hitEffect = new MultiEffect(Fx.titanExplosion, Fx.titanSmoke); despawnEffect = Fx.none; knockback = 2f; lifetime = 140f; - height = 17f; - width = 16f; + height = 19f; + width = 17f; splashDamageRadius = 65f; - splashDamage = 150f; + splashDamage = 250f; backColor = hitColor = trailColor = Color.valueOf("ea8878").lerp(Color.valueOf("feb380"), 0.5f); frontColor = Color.white; ammoMultiplier = 1f; @@ -3022,9 +3023,9 @@ public class Blocks{ status = StatusEffects.blasted; trailLength = 32; - trailWidth = 2.85f; + trailWidth = 3.35f; trailSinScl = 2.5f; - trailSinMag = 1f; + trailSinMag = 0.5f; trailEffect = Fx.none; despawnShake = 7f; @@ -3040,7 +3041,7 @@ public class Blocks{ targetAir = false; shootShake = 4f; recoilAmount = 1f; - reloadTime = 60f * 2f; + reloadTime = 60f * 3f; shootLength = 7f; rotateSpeed = 2.5f; @@ -3073,6 +3074,7 @@ public class Blocks{ consumes.liquids(LiquidStack.with(Liquids.hydrogen, 2f / 60f)); + scaledHealth = 300; range = 390f; size = 4; }}; @@ -3083,7 +3085,7 @@ public class Blocks{ commandCenter = new CommandCenter("command-center"){{ requirements(Category.units, ItemStack.with(Items.copper, 200, Items.lead, 250, Items.silicon, 250, Items.graphite, 100)); size = 2; - health = size * size * 55; + scaledHealth = 55; }}; groundFactory = new UnitFactory("ground-factory"){{ @@ -3411,7 +3413,7 @@ public class Blocks{ hasPower = true; consumes.power(10f); buildCostMultiplier = 0.5f; - health = size * size * 80; + scaledHealth = 80; }}; //endregion campaign diff --git a/core/src/mindustry/content/Items.java b/core/src/mindustry/content/Items.java index 1076c51f04..34dd7bb293 100644 --- a/core/src/mindustry/content/Items.java +++ b/core/src/mindustry/content/Items.java @@ -51,6 +51,7 @@ public class Items{ hardness = 4; radioactivity = 1f; cost = 1.1f; + healthScaling = 0.2f; }}; scrap = new Item("scrap", Color.valueOf("777777")){{ @@ -65,16 +66,19 @@ public class Items{ flammability = 0.1f; explosiveness = 0.2f; cost = 1.3f; + healthScaling = 0.1f; }}; phaseFabric = new Item("phase-fabric", Color.valueOf("f4ba6e")){{ cost = 1.3f; radioactivity = 0.6f; + healthScaling = 0.25f; }}; surgeAlloy = new Item("surge-alloy", Color.valueOf("f3e979")){{ cost = 1.2f; charge = 0.75f; + healthScaling = 0.25f; }}; sporePod = new Item("spore-pod", Color.valueOf("7457ce")){{ @@ -88,25 +92,29 @@ public class Items{ pyratite = new Item("pyratite", Color.valueOf("ffaa5f")){{ flammability = 1.4f; - explosiveness = 0.4f; + explosiveness = 0.5f; }}; beryllium = new Item("beryllium", Color.valueOf("3a8f64")){{ hardness = 4; cost = 1.3f; + healthScaling = 0.6f; }}; tungsten = new Item("tungsten", Color.valueOf("768a9a")){{ hardness = 5; cost = 1.5f; + healthScaling = 0.8f; }}; oxide = new Item("oxide", Color.valueOf("e4ffd6")){{ - cost = 1.1f; + cost = 1.2f; + healthScaling = 0.5f; }}; carbide = new Item("carbide", Color.valueOf("89769a")){{ - cost = 1.3f; + cost = 1.6f; + healthScaling = 1.1f; }}; fissileMatter = new Item("fissile-matter", Color.valueOf("5e988d")){{ diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index af2c06f553..a07477ed3c 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -2513,7 +2513,7 @@ public class UnitTypes{ rotateSpeed = 3.5f; accel = 0.1f; health = 3000f; - armor = 4f; + armor = 5f; hitSize = 36f; payloadCapacity = Mathf.sqr(3f) * tilePayload; @@ -2522,6 +2522,7 @@ public class UnitTypes{ abilities.add(new SuppressionFieldAbility(){{ orbRadius = 5.3f; + y = 1f; }}); float es = 3.9f; diff --git a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java index b7755f33bf..c97de62c22 100644 --- a/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java +++ b/core/src/mindustry/entities/abilities/SuppressionFieldAbility.java @@ -23,6 +23,7 @@ public class SuppressionFieldAbility extends Ability{ public Color color1 = Pal.sap.cpy().mul(1.6f), color2 = Pal.sap; public float layer = Layer.effect; + public float x = 0f, y = 0f; public int particles = 15; public float particleSize = 4f; public float particleLen = 7f; @@ -78,12 +79,14 @@ public class SuppressionFieldAbility extends Ability{ Draw.z(layer); float rad = orbRadius + Mathf.absin(orbSinScl, orbSinMag); + Tmp.v1.set(x, y).rotate(unit.rotation - 90f); + float rx = unit.x + Tmp.v1.x, ry = unit.y + Tmp.v1.y; Draw.color(color2); - Fill.circle(unit.x, unit.y, rad); + Fill.circle(rx, ry, rad); Draw.color(color1); - Fill.circle(unit.x, unit.y, rad * orbMidScl); + Fill.circle(rx, ry, rad * orbMidScl); float base = (Time.time / particleLife); rand.setSeed(unit.id); @@ -93,8 +96,8 @@ public class SuppressionFieldAbility extends Ability{ float angle = rand.random(360f) + (Time.time / rotateScl + unit.rotation) % 360f; float len = particleLen * particleInterp.apply(fout); Fill.circle( - unit.x + Angles.trnsx(angle, len), - unit.y + Angles.trnsy(angle, len), + rx + Angles.trnsx(angle, len), + ry + Angles.trnsy(angle, len), particleSize * Mathf.slope(fin) ); } @@ -103,7 +106,7 @@ public class SuppressionFieldAbility extends Ability{ if(heat > 0.001f){ Draw.color(Pal.sapBullet); Lines.stroke(1.2f * heat * Mathf.absin(10f, 1f)); - Lines.circle(unit.x, unit.y, range); + Lines.circle(rx, ry, range); } Draw.reset(); diff --git a/core/src/mindustry/type/Item.java b/core/src/mindustry/type/Item.java index 5cf5220213..fde04f9363 100644 --- a/core/src/mindustry/type/Item.java +++ b/core/src/mindustry/type/Item.java @@ -32,7 +32,9 @@ public class Item extends UnlockableContent{ * 1 cost = 1 tick added to build time */ public float cost = 1f; - /** if true, this item is of lowest priority to drills. */ + /** When this item is present in the build cost, a block's default health is multiplied by 1 + scaling, where 'scaling' is summed together for all item requirement types. */ + public float healthScaling = 0f; + /** if true, this item is of the lowest priority to drills. */ public boolean lowPriority; /** If >0, this item is animated. */ diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index ed29bb73b5..a379818b10 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -134,7 +134,9 @@ public class Block extends UnlockableContent{ public @Nullable Item itemDrop = null; /** Array of affinities to certain things. */ public Attributes attributes = new Attributes(); - /** tile entity health */ + /** Health per square tile that this block occupies; essentially, this is multiplied by size * size. Overridden if health is > 0. If <0, the default is 40. */ + public float scaledHealth = -1; + /** building health; -1 to use scaledHealth */ public int health = -1; /** damage absorption, similar to unit armor */ public float armor = 0f; @@ -914,7 +916,25 @@ public class Block extends UnlockableContent{ public void init(){ //initialize default health based on size if(health == -1){ - health = size * size * 40; + boolean round = false; + if(scaledHealth < 0){ + scaledHealth = 40; + + float scaling = 1f; + for(var stack : requirements){ + scaling += stack.item.healthScaling; + } + + if(scaling > 1){ + Log.info("@: @ -> @", name, scaledHealth * size * size, (Mathf.round(scaledHealth * scaling, 5) * size * size)); + } + scaledHealth *= scaling; + round = true; + } + + health = round ? + Mathf.round(size * size * scaledHealth, 5) : + (int)(size * size * scaledHealth); } clipSize = Math.max(clipSize, size * tilesize); diff --git a/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java index 05a4017aaf..b1688d1596 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/ItemTurret.java @@ -40,6 +40,7 @@ public class ItemTurret extends Turret{ for(var entry : ammoTypes.copy().entries()){ var copy = entry.value.copy(); float realRange = copy.rangeChange + range; + //doesn't handle drag copy.lifetime = (realRange + margin) / copy.speed; ammoTypes.put(entry.key, copy); } @@ -59,7 +60,8 @@ public class ItemTurret extends Turret{ @Override public void build(Building build, Table table){ MultiReqImage image = new MultiReqImage(); - content.items().each(i -> filter.get(i) && i.unlockedNow(), item -> image.add(new ReqImage(new ItemImage(item.uiIcon), + content.items().each(i -> filter.get(i) && i.unlockedNow(), + item -> image.add(new ReqImage(new ItemImage(item.uiIcon), () -> build instanceof ItemTurretBuild it && !it.ammo.isEmpty() && ((ItemEntry)it.ammo.peek()).item == item))); table.add(image).size(8 * 4);