diff --git a/core/assets-raw/sprites/blocks/liquid/thermal-pump-liquid.png b/core/assets-raw/sprites/blocks/liquid/impulse-pump-liquid.png similarity index 100% rename from core/assets-raw/sprites/blocks/liquid/thermal-pump-liquid.png rename to core/assets-raw/sprites/blocks/liquid/impulse-pump-liquid.png diff --git a/core/assets-raw/sprites/blocks/liquid/thermal-pump.png b/core/assets-raw/sprites/blocks/liquid/impulse-pump.png similarity index 100% rename from core/assets-raw/sprites/blocks/liquid/thermal-pump.png rename to core/assets-raw/sprites/blocks/liquid/impulse-pump.png diff --git a/core/assets-raw/sprites/blocks/liquid/reinforced-pump-liquid.png b/core/assets-raw/sprites/blocks/liquid/reinforced-pump-liquid.png new file mode 100644 index 0000000000..63d230191d Binary files /dev/null and b/core/assets-raw/sprites/blocks/liquid/reinforced-pump-liquid.png differ diff --git a/core/assets-raw/sprites/blocks/liquid/reinforced-pump.png b/core/assets-raw/sprites/blocks/liquid/reinforced-pump.png new file mode 100644 index 0000000000..1f1884f6bb Binary files /dev/null and b/core/assets-raw/sprites/blocks/liquid/reinforced-pump.png differ diff --git a/core/assets-raw/sprites/items/item-oxide.png b/core/assets-raw/sprites/items/item-oxide.png new file mode 100644 index 0000000000..fa3dab9a96 Binary files /dev/null and b/core/assets-raw/sprites/items/item-oxide.png differ diff --git a/core/assets-raw/sprites/items/liquid-hydrogen.png b/core/assets-raw/sprites/items/liquid-hydrogen.png new file mode 100644 index 0000000000..1cdc08913b Binary files /dev/null and b/core/assets-raw/sprites/items/liquid-hydrogen.png differ diff --git a/core/assets-raw/sprites/items/liquid-ozone.png b/core/assets-raw/sprites/items/liquid-ozone.png new file mode 100644 index 0000000000..f28f3bf493 Binary files /dev/null and b/core/assets-raw/sprites/items/liquid-ozone.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index ee3e371cca..b41820defc 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1312,7 +1312,7 @@ block.rotary-pump.name = Rotary Pump block.thorium-reactor.name = Thorium Reactor block.mass-driver.name = Mass Driver block.blast-drill.name = Airblast Drill -block.thermal-pump.name = Thermal Pump +block.impulse-pump.name = Impulse Pump block.thermal-generator.name = Thermal Generator block.alloy-smelter.name = Alloy Smelter block.mender.name = Mender @@ -1512,7 +1512,7 @@ block.underflow-gate.description = Opposite of an overflow gate. Outputs to the block.mass-driver.description = Long-range item transport structure. Collects batches of items and shoots them to other mass drivers. block.mechanical-pump.description = Pumps and outputs liquids. Does not require power. block.rotary-pump.description = Pumps and outputs liquids. Requires power. -block.thermal-pump.description = Pumps and outputs liquids. +block.impulse-pump.description = Pumps and outputs liquids. block.conduit.description = Moves liquids forward. Used in conjunction with pumps and other conduits. block.pulse-conduit.description = Moves liquids forward. Transports faster and stores more than standard conduits. block.plated-conduit.description = Moves liquids forward. Does not accept input from the sides. Does not leak. diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index 5124f7c3c7..f6412f4d75 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = Ротарны насос block.thorium-reactor.name = Торыявы рэактар block.mass-driver.name = Электрамагнітная катапульта block.blast-drill.name = Паветраная буравая ўстаноўка -block.thermal-pump.name = Тэрмальны насос +block.impulse-pump.name = Тэрмальны насос block.thermal-generator.name = Тэрмальны генератар block.alloy-smelter.name = Плавільня кінэтычнага сплаву block.mender.name = Рэгенератар @@ -1278,7 +1278,7 @@ block.underflow-gate.description = Супрацьлегласць залішня block.mass-driver.description = Самы прасунуты транспартны блок. Збірае некалькі прадметаў і затым страляе імі ў іншую катапульту на вялікай адлегласці. Патрабуецца энергія для працы. block.mechanical-pump.description = Танны насос з нізкай прадукцыйнасцю, але без энергаспажывання. block.rotary-pump.description = Прасунутая помпа. Пампуе больш вадкасці, але патрабуе энергію. -block.thermal-pump.description = Найлепшая помпа. +block.impulse-pump.description = Найлепшая помпа. block.conduit.description = Асноўны блок транспарціроўкі вадкасці. Перамяшчае вадкасці наперад. Выкарыстоўваецца сумесна з помпамі і іншымі трубаправодамі. block.pulse-conduit.description = Палепшаны блок транспарціроўкі вадкасці. Транспартуе вадкасці хутчэй і захоўвае больш, чым стандартныя трубаправоды. block.plated-conduit.description = Перамяшчае вадкасці з той жа хуткасцю, што і імпульсныя трубаправоды, але валодае большай трываласцю. Не бярэ вадкасці са бакоў, акрамя як ад іншых трубаправодаў. \nПротекает менш. diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index 9a49d9eb92..dc5c9ba02f 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -1238,7 +1238,7 @@ block.rotary-pump.name = Ротационна помпа block.thorium-reactor.name = Ториев реактор block.mass-driver.name = Масов Преносител block.blast-drill.name = Въздушно свредло -block.thermal-pump.name = Термична Помпа +block.impulse-pump.name = Термична Помпа block.thermal-generator.name = Термичен Генератор block.alloy-smelter.name = Претопител за Импулсна сплав block.mender.name = Възстановител @@ -1423,7 +1423,7 @@ block.underflow-gate.description = Насочва предмети напред block.mass-driver.description = Структура за пренасяне на предмети на далечни растояния. Събира партиди от предмети и ги изстрелва до други Масови Преносители. block.mechanical-pump.description = Изпомпва течности. Не изисква електричество. block.rotary-pump.description = Изпомпва течности. Изисква електричество. -block.thermal-pump.description = Изпомпва течности. +block.impulse-pump.description = Изпомпва течности. block.conduit.description = Пренася течности еднопосочно. Използва се в комбинация с помпи и други тръбопроводи. block.pulse-conduit.description = Пренася течности еднопосочно. Пренася по - бързо и съхранява повече от стандартния тръбопровод. block.plated-conduit.description = Пренася течности еднопосочно. Не приема вход от страни. Не позволява течове. diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index e79b28b90f..0558661919 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -1188,7 +1188,7 @@ block.rotary-pump.name = Rotační čerpadlo block.thorium-reactor.name = Thoriový reaktor block.mass-driver.name = Hromadný přenašeč block.blast-drill.name = Tlakovzdušný vrt -block.thermal-pump.name = Tepelné čerpadlo +block.impulse-pump.name = Tepelné čerpadlo block.thermal-generator.name = Tepelný generátor block.alloy-smelter.name = Slitinová huť block.mender.name = Opravář @@ -1373,7 +1373,7 @@ block.underflow-gate.description = Pokud je směr do stran ucpán, posílá vstu block.mass-driver.description = Konstrukce pro přepravu položek na velkou vzdálenost. Sesere dávku položek a vystřelí ji k dalšímu hromadnému přenašeči. block.mechanical-pump.description = Pumpuje kapalinu a předává ji dál. Nevyžaduje energii. block.rotary-pump.description = Pumpuje kapalinu a předává ji dál. Vyžaduje energii. -block.thermal-pump.description = Pumpuje kapalinu a předává ji dál. +block.impulse-pump.description = Pumpuje kapalinu a předává ji dál. block.conduit.description = Přepravuje kapaliny vpřed. Používá se spolu s pumpami a dalším potrubím. block.pulse-conduit.description = Přepravuje kapaliny vpřed. Přepravuje kapaliny rychleji a ukládá jich více, než standadní potrubí. block.plated-conduit.description = Přepravuje kapaliny vpřed. Nepřijímá kapaliny ze stran. Nemá úniky. diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index e18a09d242..742098b15c 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = Drejepumpe block.thorium-reactor.name = Atomreaktor block.mass-driver.name = Kvante-katapult block.blast-drill.name = Trykluftbor -block.thermal-pump.name = Termisk Pumpe +block.impulse-pump.name = Termisk Pumpe block.thermal-generator.name = Termisk Generator block.alloy-smelter.name = Bronze-digel block.mender.name = Reparatør @@ -1276,7 +1276,7 @@ block.underflow-gate.description = Det modsatte af en overflods-låge. Outputter block.mass-driver.description = Den ultimative transport-blok. Samler en masse genstande og slynger dem hovedkulds gennem luften til den kvante-katapult. block.mechanical-pump.description = En hverdags-pumpe, der ikke engang kræver strøm. block.rotary-pump.description = En drønhurtig pumpe. Pumper mere væske, kræver mere strøm. -block.thermal-pump.description = Den allerbedste pumpe. +block.impulse-pump.description = Den allerbedste pumpe. block.conduit.description = Simpel væske-transport-blok. Transporterer væske fremad. Bruges sammen med pumper, eller i forlængelse af andre rør. block.pulse-conduit.description = En avanceret væske-transport-blok. Transporterer væske hurtigere og opbevarer mere end normale rør. block.plated-conduit.description = Transporterer væske lige så hurtigt som højhastigheds-rør. Kan ikke tage væske ind fra siderne.\nLækker mindre. diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index b294fe0a97..c8880c7f18 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -1301,7 +1301,7 @@ block.rotary-pump.name = Rotierende Pumpe block.thorium-reactor.name = Thorium-Reaktor block.mass-driver.name = Massenbeschleuniger block.blast-drill.name = Sprengluftbohrer -block.thermal-pump.name = Thermische Pumpe +block.impulse-pump.name = Thermische Pumpe block.thermal-generator.name = Thermischer Generator block.alloy-smelter.name = Legierungsschmelze block.mender.name = Reparateur @@ -1495,7 +1495,7 @@ block.underflow-gate.description = Das Gegenteil eines Überlauftors. Gibt Mater block.mass-driver.description = Ein Transportblock mit sehr hoher Reichweite. Sammelt mehrere Materialien und schießt sie zu einem verbundenen Massenbeschleuniger. block.mechanical-pump.description = Eine Pumpe, die keinen Strom benötigt. block.rotary-pump.description = Eine Pumpe, die Strom verbraucht. -block.thermal-pump.description = Eine Pumpe. +block.impulse-pump.description = Eine Pumpe. block.conduit.description = Transportiert Flüssigkeiten. Wird mit Extraktoren, Pumpen oder anderen Kanälen benutzt. block.pulse-conduit.description = Transportiert Flüssigkeiten. Transportiert Flüssigkeiten schneller und speichert mehr als ein Leitungsrohr. block.plated-conduit.description = Transportiert Flüssigkeiten. Nimmt keine Flüssigkeiten von der Seite an.\nHat keine Lecks. diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index e5a1ecbe65..6b3fcbe009 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -1306,7 +1306,7 @@ block.rotary-pump.name = Bomba Rotatoria block.thorium-reactor.name = Reactor de Torio block.mass-driver.name = Teletransportador de Masa block.blast-drill.name = Taladro de explosión -block.thermal-pump.name = Bomba Térmica +block.impulse-pump.name = Bomba Térmica block.thermal-generator.name = Generador Térmico block.alloy-smelter.name = Fundidor de Materia block.mender.name = Reparador @@ -1506,7 +1506,7 @@ block.underflow-gate.description = El opuesto de la compuerta de desborde. Sólo block.mass-driver.description = Estructura de transporte de largo alcance. Acumula varios objetos y los dispara a otro del mismo tipo. block.mechanical-pump.description = Extrae y bombea líquidos. Funciona sin energía. block.rotary-pump.description = Extrae y bombea líquidos. Requiere energía. -block.thermal-pump.description = Extrae y bombea líquidos. +block.impulse-pump.description = Extrae y bombea líquidos. block.conduit.description = Mueve líquidos hacia delante. Se usa junto con bombas y otros conductos. block.pulse-conduit.description = Transporta líquidos rápidamente y almacena más que los conductos estándar. block.plated-conduit.description = Transporta líquidos rápidamente pero no acepta líquidos por los lados. Resiste más ante fugas, por lo que no gotea. diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index 1cc5726bac..f43ed73cba 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = Labapump block.thorium-reactor.name = Tooriumreaktor block.mass-driver.name = EM-katapult block.blast-drill.name = Plahvatuspuur -block.thermal-pump.name = Termopump +block.impulse-pump.name = Termopump block.thermal-generator.name = Termogeneraator block.alloy-smelter.name = Voogsulatusahi block.mender.name = Parandaja @@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to block.mass-driver.description = Ülim ressursside transportimise vahend. Tulistab ressursse pika vahemaa taga asuva vastuvõtva katapuldini. Vajab töötamiseks energiat. block.mechanical-pump.description = Odav ja aeglane pump, mis ei vaja töötamiseks energiat. block.rotary-pump.description = Täiustatud pump, mis pumpab paremini kui harilik pump, kuid vajab töötamiseks energiat. -block.thermal-pump.description = Ülim pump, mis vajab töötamiseks palju energiat. +block.impulse-pump.description = Ülim pump, mis vajab töötamiseks palju energiat. block.conduit.description = Vedelike transportimise vahend, mis liigutab vedelikke edasi. Kasutatakse koos pumpade ja teiste torudega. block.pulse-conduit.description = Täiustatud toru, mis transpordib ja hoiustab vedelikke kiiremini kui algeline toru. block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index dbc1825e7c..9902539eb8 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = Ponpa birakaria block.thorium-reactor.name = Toriozko erreaktorea block.mass-driver.name = Mukulu igorlea block.blast-drill.name = Zurrusta zulagailua -block.thermal-pump.name = Ponpa termikoa +block.impulse-pump.name = Ponpa termikoa block.thermal-generator.name = Sorgailu termikoa block.alloy-smelter.name = Aleazio urtzailea block.mender.name = Bedezi @@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to block.mass-driver.description = Elementuen garraiorako bloke gorena. Hainbat elementu jaso eta beste mukulu-igorle bati jaurtitzen dizkio irismen handiarekin. Energia behar du jarduteko. block.mechanical-pump.description = Ponpa merke bat, emari motelekoa baina ez du energiarik kontsumitzen. block.rotary-pump.description = Ponpa aurreratu bat. Likido gehiago barreiatzen du, baina energia behar du. -block.thermal-pump.description = Ponpa gorena. +block.impulse-pump.description = Ponpa gorena. block.conduit.description = Likidoen garraiorako oinarrizko blokea. Likidoak daramatza. Ponpa eta bestelako hodiekin batera erabilia. block.pulse-conduit.description = Likidoen garraiorako bloke aurreratua. Hodi arruntek baino azkarrago garraiatzen ditu likidoak eta edukiera handiagoa du. block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index 71a42b0512..deed66f9e3 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotary Pump block.thorium-reactor.name = Thorium Reactor block.mass-driver.name = Massalinko block.blast-drill.name = Airblast Drill -block.thermal-pump.name = Thermal Pump +block.impulse-pump.name = Thermal Pump block.thermal-generator.name = Lämpögeneraattori block.alloy-smelter.name = Alloy Smelter block.mender.name = Mender @@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to block.mass-driver.description = The ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. Requires power to operate. block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. block.rotary-pump.description = An advanced pump. Pumps more liquid, but requires power. -block.thermal-pump.description = The ultimate pump. +block.impulse-pump.description = The ultimate pump. block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits. block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits. block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index b630a97df7..159dd0ba44 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotary Pump block.thorium-reactor.name = Thorium Reactor block.mass-driver.name = Mass Driver block.blast-drill.name = Airblast Drill -block.thermal-pump.name = Thermal Pump +block.impulse-pump.name = Thermal Pump block.thermal-generator.name = Thermal Generator block.alloy-smelter.name = Alloy Smelter block.mender.name = Mender @@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to block.mass-driver.description = The ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. Requires power to operate. block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. block.rotary-pump.description = An advanced pump. Pumps more liquid, but requires power. -block.thermal-pump.description = The ultimate pump. +block.impulse-pump.description = The ultimate pump. block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits. block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits. block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index f0484316b3..892fd04231 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -1314,7 +1314,7 @@ block.rotary-pump.name = Pompe Rotative block.thorium-reactor.name = Réacteur à Thorium block.mass-driver.name = Transporteur de masse block.blast-drill.name = Foreuse à explosion -block.thermal-pump.name = Pompe thermique +block.impulse-pump.name = Pompe thermique block.thermal-generator.name = Générateur thermique block.alloy-smelter.name = Fonderie d'Alliage Superchargé block.mender.name = Gardien @@ -1515,7 +1515,7 @@ block.underflow-gate.description = Le contraire d'une barrière de débordement. block.mass-driver.description = Le moyen de transport de ressources ultime! Cette structure collecte des lots de ressources et les envoie à un autre transporteur de masse, sur une longue distance. Nécessite de l'énergie pour fonctionner. block.mechanical-pump.description = Une pompe basique et bon marché qui pompe lentement des liquides. Elle ne consomme pas d'énergie. block.rotary-pump.description = Une pompe avancée, plus rapide, mais utilisant de l'énergie. -block.thermal-pump.description = La pompe ultime. +block.impulse-pump.description = La pompe ultime. block.conduit.description = Bloc de transport de liquide de base, faisant avancer les liquides. Utilisé avec des pompes et autres conduits. block.pulse-conduit.description = Conduit avancé permettant le transport de liquide. Transporte les liquides plus rapidement et en stocke plus que les conduits standards. block.plated-conduit.description = Déplace les liquides au même rythme que les conduits à impulsion, mais est renforcé et empêche les fuites en cas de rupture. N'accepte pas les liquides provenant des côtés, seuls les autres conduits peuvent le faire. diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index e2fe343582..a34db9a91c 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -1208,7 +1208,7 @@ block.rotary-pump.name = Rotary Pump block.thorium-reactor.name = Thorium Reactor block.mass-driver.name = Mass Driver block.blast-drill.name = Airblast Drill -block.thermal-pump.name = Thermal Pump +block.impulse-pump.name = Thermal Pump block.thermal-generator.name = Thermal Generator block.alloy-smelter.name = Alloy Smelter block.mender.name = Mender @@ -1393,7 +1393,7 @@ block.underflow-gate.description = Csak akkor enged tovább nyersanyagokat előr block.mass-driver.description = Nagy hatótávolságú nyeranyagszállító. Csomagokban lő át nyersanyagokat egy másik mass drivernek. block.mechanical-pump.description = Folyadékot szivattyúz. Nem igényel áramot. block.rotary-pump.description = Folyadékot szivattyúz. Árammal működik. -block.thermal-pump.description = Folyadékot szivattyúz. Sokat termel, sok áramot fogyaszt. +block.impulse-pump.description = Folyadékot szivattyúz. Sokat termel, sok áramot fogyaszt. block.conduit.description = Folyadékot továbbít. block.pulse-conduit.description = Folyadékot továbbít. Gyorsabb és nagyobb tárolókapacitású, mint a sima conduit. block.plated-conduit.description = Folyadékot továbbít. Nem fogad el folyadékot oldalról. Nem önti ki a folyadékot, ha nincs a végén semmi. diff --git a/core/assets/bundles/bundle_in_ID.properties b/core/assets/bundles/bundle_in_ID.properties index 797f5f48f3..99b398176d 100644 --- a/core/assets/bundles/bundle_in_ID.properties +++ b/core/assets/bundles/bundle_in_ID.properties @@ -1308,7 +1308,7 @@ block.rotary-pump.name = Pompa Putaran block.thorium-reactor.name = Reaktor Thorium block.mass-driver.name = Penggerak Massal block.blast-drill.name = Bor Ledakan Udara -block.thermal-pump.name = Pompa Suhu Panas +block.impulse-pump.name = Pompa Suhu Panas block.thermal-generator.name = Generator Panas block.alloy-smelter.name = Pelebur Paduan Logam block.mender.name = Mender @@ -1508,7 +1508,7 @@ block.underflow-gate.description = Kebalikan dari gerbang luap. Mengeluarkan bar block.mass-driver.description = Blok transportasi barang jarak jauh. Membawa beberapa barang dan menembaknya ke penggerak massal lainnya. block.mechanical-pump.description = Memompa dan mengeluarkan cairan. Tidak memerlukan tenaga. block.rotary-pump.description = Memompa dan mengeluarkan cairan. Menggunakan tenaga. -block.thermal-pump.description = Memeompa dan mengluarkan cairan. +block.impulse-pump.description = Memeompa dan mengluarkan cairan. block.conduit.description = Memindahkan cairan ke depan. Digunakan dengan pompa dan saluran lainnya. block.pulse-conduit.description = Memindahkan cairan ke depan. Mengantarkan lebih cepat dan banyak daripada saluran biasa. block.plated-conduit.description = Memindahkan cairan ke depan. Tidak menerima cairan dari samping. Tidak bocor. diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index f9ba38c603..5de867b5ee 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -1188,7 +1188,7 @@ block.rotary-pump.name = Pompa a Turbina block.thorium-reactor.name = Reattore al Torio block.mass-driver.name = Lancia Materiali block.blast-drill.name = Trivella ad Impulsi -block.thermal-pump.name = Pompa Termica +block.impulse-pump.name = Pompa Termica block.thermal-generator.name = Generatore Termico block.alloy-smelter.name = Altoforno block.mender.name = Riparatore @@ -1371,7 +1371,7 @@ block.underflow-gate.description = L'esatto opposto del separatore per eccesso. block.mass-driver.description = Struttura per il trasporto di oggetti a lungo raggio. Immagazzina lotti di oggetti e li spara ad un altro trasportatore di massa. block.mechanical-pump.description = Pompa liquidi. Non richiede energia. block.rotary-pump.description = Pompa liquidi. Richiede energia. -block.thermal-pump.description = Pompa liquidi. +block.impulse-pump.description = Pompa liquidi. block.conduit.description = Trasporta i liquidi. Spesso usato insieme a pompe e altri condotti. block.pulse-conduit.description = Trasporta i liquidi più velocemente. Ha una capacità maggiore rispetto ai condotti tradizionali. block.plated-conduit.description = Trasporta i liquidi. Non accetta liquidi dai lati. Non spande. diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 09bb0c0fe2..367901a27e 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -1312,7 +1312,7 @@ block.rotary-pump.name = ロータリーポンプ block.thorium-reactor.name = トリウムリアクター block.mass-driver.name = マスドライバー block.blast-drill.name = エアブラストドリル -block.thermal-pump.name = サーマルポンプ +block.impulse-pump.name = サーマルポンプ block.thermal-generator.name = サーマル発電機 block.alloy-smelter.name = 合金溶鉱炉 block.mender.name = 修復機 @@ -1513,7 +1513,7 @@ block.underflow-gate.description = オーバーフローゲートの反対の機 block.mass-driver.description = 長距離の輸送が可能な上位アイテム輸送ブロックです。離れた別のマスドライバーにアイテムを発射します。 block.mechanical-pump.description = 安価なポンプです。搬出速度は遅いですが、電力を使わず使用できます。 block.rotary-pump.description = 高度なポンプです。電力が必要ですが、より多く搬出することができます。 -block.thermal-pump.description = 最高性能のポンプです。 +block.impulse-pump.description = 最高性能のポンプです。 block.conduit.description = 一般的な液体輸送ブロックです。液体版のコンベアーです。ポンプや他のパイプに使うことができます。 block.pulse-conduit.description = 高度な液体輸送ブロックです。通常のパイプより速くたくさんの液体を輸送することができます。 block.plated-conduit.description = パルスパイプと同じ速度で液体を輸送することができ、耐久性に優れています。\nまた、パイプ以外による側面への入力を受け入れません。 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index 9725656d4e..8b5f258f5e 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -1308,7 +1308,7 @@ block.rotary-pump.name = 동력 펌프 block.thorium-reactor.name = 토륨 원자로 block.mass-driver.name = 매스 드라이버 block.blast-drill.name = 압축 공기분사 드릴 -block.thermal-pump.name = 화력 펌프 +block.impulse-pump.name = 화력 펌프 block.thermal-generator.name = 지열 발전기 block.alloy-smelter.name = 설금 제련소 block.mender.name = 멘더 @@ -1508,7 +1508,7 @@ block.underflow-gate.description = 오버플로 게이트의 반대. 왼쪽 및 block.mass-driver.description = 최고의 자원 운송 블록. 여러 자원을 모아서 장거리에 걸쳐 다른 매스 드라이버에게 발사합니다. 작동하려면 전원이 필요합니다. block.mechanical-pump.description = 느린 속도로 액체를 퍼 올리지만, 전력을 사용하지 않는 펌프입니다. block.rotary-pump.description = 고급 펌프. 더 많은 액체를 퍼 올리지만, 전력이 필요합니다. -block.thermal-pump.description = 가장 강력한 펌프. +block.impulse-pump.description = 가장 강력한 펌프. block.conduit.description = 기본 액체 운송 블록. 액체를 앞으로 이동시킵니다. 펌프 및 기타 파이프와 함께 사용됩니다. block.pulse-conduit.description = 고급 액체 운송 블록. 액체를 더 빠르게 운반하고 표준 파이프보다 더 많이 저장합니다. block.plated-conduit.description = 펄스 파이프와 같은 속도로 이동하지만 더 높은 방어력을 가지고 있습니다. 측면에서 액체들을 받아들이지 않습니다.\n액체가 누설하지 않습니다. @@ -1877,7 +1877,7 @@ block.underflow-gate.details = block.mass-driver.details = [lightgray][비공식][]발사하려면 최소 아이템 10개가 필요하다. block.mechanical-pump.details = block.rotary-pump.details = -block.thermal-pump.details = +block.impulse-pump.details = block.conduit.details = block.pulse-conduit.details = block.plated-conduit.details = diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 4add695c67..0f1949dd66 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotacinis Siurblys block.thorium-reactor.name = Torio Reaktorius block.mass-driver.name = Elektromagnetinė Katapulta block.blast-drill.name = Oro Srovės Grąžtas -block.thermal-pump.name = Šiluminė Pompa +block.impulse-pump.name = Šiluminė Pompa block.thermal-generator.name = Terminis Generatorius block.alloy-smelter.name = Lydinio Lydykla block.mender.name = Taisytojas @@ -1278,7 +1278,7 @@ block.underflow-gate.description = Veikia priešingai nei perpildymo užtvara. I block.mass-driver.description = Tobuliausias daiktų gabenimo blokas. Surenka daiktus ir šauna juos į kitą elektromagnetinę katapultą didelias atstumais. Veikimui reikalauja energijos. block.mechanical-pump.description = pigi pompa su lėta išeiga, bet nenaudoja energijos. block.rotary-pump.description = Pažangesnė pompa. Pumpuoja daugiau skysčių, bet reikalauja energijos. -block.thermal-pump.description = Tobuliausia pompa. +block.impulse-pump.description = Tobuliausia pompa. block.conduit.description = Paprastas vandens gabenimo blokas. Gabena skysčius į priekį. Naudojamas kartu su siurbliais ir kitais vamzdžiais. block.pulse-conduit.description = Pažangus vandens gabenimo blokas. Gabena skysčius greičiau ir talpina daugiau skysčių negu standartinis vamzdis. block.plated-conduit.description = Gabena skysčius tokiuo pačiu greičiu kaip pulsinis vamzdis, tačiau turi daugiau šarvų. Nepriima skysčių iš šonų, išskyrus kitus vamzdžius.\nMažiau nutekina skysčių. diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index b9de625fe1..16d0f59767 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotary Pump block.thorium-reactor.name = Thoriumreactor block.mass-driver.name = Mass Driver block.blast-drill.name = Airblast Drill -block.thermal-pump.name = Thermische Pomp +block.impulse-pump.name = Thermische Pomp block.thermal-generator.name = Thermische Generator block.alloy-smelter.name = Legering Smelterij block.mender.name = Mender @@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to block.mass-driver.description = Ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. block.rotary-pump.description = An advanced pump which doubles up speed by using power. -block.thermal-pump.description = The ultimate pump. Three times as fast as a mechanical pump and the only pump which is able to retrieve lava. +block.impulse-pump.description = The ultimate pump. Three times as fast as a mechanical pump and the only pump which is able to retrieve lava. block.conduit.description = Basic liquid transport block. Works like a conveyor, but with liquids. Best used with extractors, pumps or other conduits. block.pulse-conduit.description = Advanced liquid transport block. Transports liquids faster and stores more than standard conduits. block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index ce3afc9610..8587205b83 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotary Pump block.thorium-reactor.name = Thorium Reactor block.mass-driver.name = Mass Driver block.blast-drill.name = Airblast Drill -block.thermal-pump.name = Thermal Pump +block.impulse-pump.name = Thermal Pump block.thermal-generator.name = Thermal Generator block.alloy-smelter.name = Alloy Smelter block.mender.name = Mender @@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to block.mass-driver.description = Ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. block.rotary-pump.description = An advanced pump which doubles up speed by using power. -block.thermal-pump.description = The ultimate pump. +block.impulse-pump.description = The ultimate pump. block.conduit.description = Basic liquid transport block. Works like a conveyor, but with liquids. Best used with extractors, pumps or other conduits. block.pulse-conduit.description = Advanced liquid transport block. Transports liquids faster and stores more than standard conduits. block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index cb9fca5dcd..e0582e3fbf 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -1254,7 +1254,7 @@ block.rotary-pump.name = Wirowa Pompa block.thorium-reactor.name = Reaktor Torowy block.mass-driver.name = Katapulta Masy block.blast-drill.name = Wiertło Wybuchowe -block.thermal-pump.name = Pompa Termalna +block.impulse-pump.name = Pompa Termalna block.thermal-generator.name = Generator Termalny block.alloy-smelter.name = Piec Mieszający block.mender.name = Naprawiacz @@ -1439,7 +1439,7 @@ block.underflow-gate.description = Odwrotność bramy przepełnieniowej, który block.mass-driver.description = Najlepszy blok do transportu przedmiotów. Zbiera wiele przedmiotów naraz a potem wystrzeliwuje je do kolejnej katapulty masy na bardzo duże odległości. block.mechanical-pump.description = Tania pompa o niskiej wydajności. Nie wymaga prądu. block.rotary-pump.description = Zaawansowana pompa. Pompuje więcej cieczy, ale wymaga zasilania. -block.thermal-pump.description = Najlepsza pompa. Pompuje ogromne ilości cieczy, ale wymaga zasilania. +block.impulse-pump.description = Najlepsza pompa. Pompuje ogromne ilości cieczy, ale wymaga zasilania. block.conduit.description = Podstawowy blok do transportowania cieczy. Używany w połączeniu z pompami i innymi rurami. block.pulse-conduit.description = Zaawansowany blok do transportowania cieczy. Transportuje je szybciej i magazynuje więcej niż standardowe rury. block.plated-conduit.description = Przesyła ciecze z taką samą szybkością co rura tytanowa, ale jest bardziej odporna. Wejściami bocznymi mogą być tylko inne rury.\nWycieka z niej mniej cieczy. diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index eed7d1fdb2..5442089823 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -1292,7 +1292,7 @@ block.rotary-pump.name = Bomba rotatória block.thorium-reactor.name = Reator nuclear block.mass-driver.name = Catapulta eletromagnética block.blast-drill.name = Broca de impacto -block.thermal-pump.name = Bomba térmica +block.impulse-pump.name = Bomba térmica block.thermal-generator.name = Gerador térmico block.alloy-smelter.name = Fundidora de liga block.mender.name = Reparador @@ -1459,7 +1459,7 @@ block.underflow-gate.description = O oposto de um portão de sobrecarga. Apenas block.mass-driver.description = Estrutura de transporte de itens de longo alcance. Coleta grupos de itens e os atira em outras catapultas electromagnéticas. block.mechanical-pump.description = Uma bomba barata com baixa saída de líquidos que não consome energia. block.rotary-pump.description = Uma bomba avançada. Bombeia mais líquido, mas requer energia. -block.thermal-pump.description = A bomba final. Bombeia líquidos com o máximo de eficiência, mas requer uma quantidade maior de energia. +block.impulse-pump.description = A bomba final. Bombeia líquidos com o máximo de eficiência, mas requer uma quantidade maior de energia. block.conduit.description = Bloco básico de transporte de líquidos. Move líquidos para a frente. Usado em conjunto com bombas e outros canos. block.pulse-conduit.description = Bloco avancado de transporte de líquido. Transporta líquidos mais rápido e armazena mais que os canos padrões. block.plated-conduit.description = Move líquidos na mesma velocidade que canos de pulso, mas possui mais blindagem. Não aceita fluidos dos lados de nada além de outros canos.\nVaza menos. diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index a9894b0d6b..14661f7e11 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = Bomba Rotatória block.thorium-reactor.name = Reator a Tório block.mass-driver.name = Drive de Massa block.blast-drill.name = Broca de Explosão -block.thermal-pump.name = Bomba térmica +block.impulse-pump.name = Bomba térmica block.thermal-generator.name = Gerador Térmico block.alloy-smelter.name = Fundidora de Liga block.mender.name = Reparador @@ -1278,7 +1278,7 @@ block.underflow-gate.description = O oposto de um portão de transbordamento. Sa block.mass-driver.description = Bloco de transporte de itens supremo. Coleta itens severos e atira eles em outro mass driver de uma longa distancia. block.mechanical-pump.description = Uma bomba barata com baixa saída de líquidos, mas sem consumo de energia. block.rotary-pump.description = Uma bomba avançada. Bombeia mais líquido, mas requer energia. -block.thermal-pump.description = A bomba final. +block.impulse-pump.description = A bomba final. block.conduit.description = Bloco básico de transporte de líquidos. Move líquidos para a frente. Usado em conjunto com bombas e outros canos. block.pulse-conduit.description = Bloco avancado de transporte de liquido. Transporta liquidos mais rápido e armazena mais que os canos padrões. block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 7d5fdf84cb..dfea556c62 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -1297,7 +1297,7 @@ block.rotary-pump.name = Pompă Rotativă block.thorium-reactor.name = Reactor de Toriu block.mass-driver.name = Distributor în Masă block.blast-drill.name = Burghiu Tornadă -block.thermal-pump.name = Pompă Termală +block.impulse-pump.name = Pompă Termală block.thermal-generator.name = Generator Termal block.alloy-smelter.name = Topitorie Aliaj block.mender.name = Reparator @@ -1491,7 +1491,7 @@ block.underflow-gate.description = Opusul porții de revărsare. Transportă mat block.mass-driver.description = Structură de transport al materialelor pe distanțe mari. Adună mai multe materiale și apoi le lansează către un alt distributor în masă. block.mechanical-pump.description = Pompează lichide din mediul înconjurător. Nu necesită electricitate. block.rotary-pump.description = Pompează lichide din mediul înconjurător. Necesită electricitate. -block.thermal-pump.description = Pompează lichide din mediul înconjurător. +block.impulse-pump.description = Pompează lichide din mediul înconjurător. block.conduit.description = Împinge lichidele în față. Folosit cu pompe și alte conducte. block.pulse-conduit.description = Împinge lichidele în față. Transportă lichidele mai rapid și stochează mai mult decât conductele standard. block.plated-conduit.description = Împinge lichidele în față. Nu acceptă lichide din lateral de la altceva în afară de conducte. Lichidul nu se varsă la exterior. diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 3c3797e52b..b03d8e554d 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -1309,7 +1309,7 @@ block.rotary-pump.name = Роторный насос block.thorium-reactor.name = Ториевый реактор block.mass-driver.name = Электромагнитная катапульта block.blast-drill.name = Воздушная буровая установка -block.thermal-pump.name = Термальный насос +block.impulse-pump.name = Термальный насос block.thermal-generator.name = Термальный генератор block.alloy-smelter.name = Плавильня кинетического сплава block.mender.name = Регенератор @@ -1511,7 +1511,7 @@ block.underflow-gate.description = Противоположность избыт block.mass-driver.description = Постройка для дальней транспортировки предметов. Собирает несколько предметов и затем стреляет ими в другие катапульты. block.mechanical-pump.description = Перекачивает и выводит жидкости. Не требует энергию. block.rotary-pump.description = Перекачивает и выводит жидкости. Требует энергию. -block.thermal-pump.description = Перекачивает и выводит жидкости. +block.impulse-pump.description = Перекачивает и выводит жидкости. block.conduit.description = Перемещает жидкости вперёд. Используется вместе с насосами и другими трубопроводами. block.pulse-conduit.description = Перемещает жидкости вперёд. Работает быстрее и вмещает в себе больше, чем стандартный трубопровод. block.plated-conduit.description = Перемещает жидкости вперёд. Не принимает ввод по бокам. Не протекает. diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index f4a885ec4f..ddd6a877eb 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -1301,7 +1301,7 @@ block.rotary-pump.name = Obrtna pumpa block.thorium-reactor.name = Nuklearni reaktor block.mass-driver.name = Akcelerator block.blast-drill.name = Vazdušna bušilica -block.thermal-pump.name = Termalna pumpa +block.impulse-pump.name = Termalna pumpa block.thermal-generator.name = Termalni generator block.alloy-smelter.name = Topionica impulsne legure block.mender.name = Popravljač @@ -1495,7 +1495,7 @@ block.underflow-gate.description = Opposite of an overflow gate. Outputs to the block.mass-driver.description = Long-range item transport structure. Collects batches of items and shoots them to other mass drivers. block.mechanical-pump.description = Pumps and outputs liquids. Does not require power. block.rotary-pump.description = Pumps and outputs liquids. Requires power. -block.thermal-pump.description = Pumps and outputs liquids. +block.impulse-pump.description = Pumps and outputs liquids. block.conduit.description = Moves liquids forward. Used in conjunction with pumps and other conduits. block.pulse-conduit.description = Moves liquids forward. Transports faster and stores more than standard conduits. block.plated-conduit.description = Moves liquids forward. Does not accept input from the sides. Does not leak. diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 4a0ab8db0f..18cdf5fe70 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = Rotary Pump block.thorium-reactor.name = Thorium Reactor block.mass-driver.name = Mass Driver block.blast-drill.name = Airblast Drill -block.thermal-pump.name = Thermal Pump +block.impulse-pump.name = Thermal Pump block.thermal-generator.name = Thermal Generator block.alloy-smelter.name = Alloy Smelter block.mender.name = Mender @@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to block.mass-driver.description = The ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. Requires power to operate. block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. block.rotary-pump.description = An advanced pump. Pumps more liquid, but requires power. -block.thermal-pump.description = The ultimate pump. +block.impulse-pump.description = The ultimate pump. block.conduit.description = Basic liquid transport block. Moves liquids forward. Used in conjunction with pumps and other conduits. block.pulse-conduit.description = An advanced liquid transport block. Transports liquids faster and stores more than standard conduits. block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index 76454a71a8..0d4d7bbf7b 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -1308,7 +1308,7 @@ block.rotary-pump.name = ปั๊มโรตารี่ block.thorium-reactor.name = เตาปฏิกรณ์ทอเรี่ยม block.mass-driver.name = เครื่องโอนถ่ายมวล block.blast-drill.name = เครื่องขุดแอร์บลาสต์ -block.thermal-pump.name = ปั๊มความร้อน +block.impulse-pump.name = ปั๊มความร้อน block.thermal-generator.name = เครื่องกำเนิดไฟฟ้าพลังอัคคี block.alloy-smelter.name = เครื่องหลอมอัลลอย block.mender.name = เครื่องซ่อมแซม @@ -1518,7 +1518,7 @@ block.underflow-gate.description = ตรงข้ามกับประตู block.mass-driver.description = บล็อกขนส่งไอเท็มทางไกล รวบรวมไอเท็มจำนวนหนึ่งแล้ว\nยิงไปหาเครื่องโอนถ่ายมวลอีกเครื่องที่อยู่ไกลออกไป block.mechanical-pump.description = ปั้มของเหลวขึ้นมา ไม่ใช้พลังงาน block.rotary-pump.description = ปั๊มของเหลวได้มากขึ้น แต่ต้องใช้พลังงาน -block.thermal-pump.description = ปั๊มขั้นสุดยอด ปั้มของเหลวขึ้นมาได้เป็นจำนวนมาก +block.impulse-pump.description = ปั๊มขั้นสุดยอด ปั้มของเหลวขึ้นมาได้เป็นจำนวนมาก block.conduit.description = เคลื่อนย้ายของเหลวไปข้างหน้า ใช้ร่วมกับปั๊มและท่อน้ำอื่นๆ block.pulse-conduit.description = เคลื่อนย้ายของเหลวไปข้างหน้า เคลื่อนย้ายได้เร็วขึ้นและเก็บของเหลวได้เยอะกว่าท่อน้ำธรรมดา block.plated-conduit.description = เคลื่อนย้ายของเหลวไปข้างหน้า ไม่รับของเหลวจากด้านข้างนอกจากท่อน้ำด้วยกันเอง\nไม่รั่ว และมีเกราะที่หนากว่า diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index 6c573d95d1..ce152841a9 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -1126,7 +1126,7 @@ block.rotary-pump.name = donen boru block.thorium-reactor.name = Thorium Reaktoru block.mass-driver.name = kütle surucusu block.blast-drill.name = Patlatici kazici -block.thermal-pump.name = Termal pompa +block.impulse-pump.name = Termal pompa block.thermal-generator.name = Magma jeneratoru block.alloy-smelter.name = Alloy eritici block.mender.name = Mender @@ -1278,7 +1278,7 @@ block.underflow-gate.description = The opposite of an overflow gate. Outputs to block.mass-driver.description = Ultimate item transport block. Collects several items and then shoots them to another mass driver over a long range. block.mechanical-pump.description = A cheap pump with slow output, but no power consumption. block.rotary-pump.description = An advanced pump which doubles up speed by using power. -block.thermal-pump.description = The ultimate pump. Three times as fast as a mechanical pump and the only pump which is able to retrieve lava. +block.impulse-pump.description = The ultimate pump. Three times as fast as a mechanical pump and the only pump which is able to retrieve lava. block.conduit.description = Basic liquid transport block. Works like a conveyor, but with liquids. Best used with extractors, pumps or other conduits. block.pulse-conduit.description = Advanced liquid transport block. Transports liquids faster and stores more than standard conduits. block.plated-conduit.description = Moves liquids at the same rate as pulse conduits, but possesses more armor. Does not accept fluids from the sides by anything other than conduits.\nLeaks less. diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 663bb22a6e..341ec7f52a 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -1307,7 +1307,7 @@ block.rotary-pump.name = Döner Pompa block.thorium-reactor.name = Toryum Reaktörü block.mass-driver.name = Kütle Sürücüsü block.blast-drill.name = Hava Patlamalı Matkap -block.thermal-pump.name = Termal Pompa +block.impulse-pump.name = Termal Pompa block.thermal-generator.name = Termal Jeneratör block.alloy-smelter.name = Alaşım Fırını block.mender.name = Tamirci @@ -1508,7 +1508,7 @@ block.underflow-gate.description = Taşma geçidinin zıttıdır. Sol ve sağ ta block.mass-driver.description = En gelişmiş materyal taşıma bloğu. bir miktar materyalı alır ve onları uzak mesafedeki bir başka kütle sürücüsüne ateşler. Çalışması için enerji gerekir. block.mechanical-pump.description = Hiç enerji harcamayan, düşük çıktılı, ucuz bir pompa. block.rotary-pump.description = Daha gelişmiş bir pompa. Daha fazla sıvı depolar ama çalışması için enerji gerekir. -block.thermal-pump.description = En iyi pompa. Çalışması için enerji gerekir. +block.impulse-pump.description = En iyi pompa. Çalışması için enerji gerekir. block.conduit.description = Temel sıvı taşıma bloğu. Sıvıları ileri taşır. Pompalar ve diğer borularla birlikte kullanılır. block.pulse-conduit.description = Gelişmiş bir sıvı taşıma bloğu. Sıvıları normal borulardan daha hızlı taşır ve onlardan daha fazla sıvı alır. block.plated-conduit.description = Sıvıları dalga borusuyla aynı güçte taşır ancak daha fazla zırha sahiptir. Borular dışında başka bir şekilde yandan sıvı kabul etmez.\nDaha az sızıntı yapar. diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index 496c819417..a4de8b74b4 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -1265,7 +1265,7 @@ block.rotary-pump.name = Роторний насос block.thorium-reactor.name = Торієвий реактор block.mass-driver.name = Електромагнітна катапульта block.blast-drill.name = Бурова установка -block.thermal-pump.name = Тепловий насос +block.impulse-pump.name = Тепловий насос block.thermal-generator.name = Теплогенератор block.alloy-smelter.name = Сплавовий завод block.mender.name = Ремонтник @@ -1461,7 +1461,7 @@ block.underflow-gate.description = Повна протилежність над block.mass-driver.description = Найкращий блок для транспортування предметів. Збирає кілька предметів, а потім вистрілює їх до іншої електромагнітної катапульти на велику відстань. Для роботи потребує енергію. block.mechanical-pump.description = Дешевий насос із повільним виходом, але не потребує енергоспоживання. block.rotary-pump.description = Удосконалений насос. Насоси більше викачують, але потребують енергію. -block.thermal-pump.description = Найкращий насос. +block.impulse-pump.description = Найкращий насос. block.conduit.description = Пересуває рідини вперед. Застосовується спільно з насосами та іншими трубопроводами. block.pulse-conduit.description = Пересуває рідини вперед. Швидше транспортує і зберігає більше рідини, ніж стандартні трубопроводи. block.plated-conduit.description = Пересуває рідини вперед. Не приймає рідин із боків окрім інших трубопроводів. Не протікає. diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index 24f859c862..7f55a47e38 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -1308,7 +1308,7 @@ block.rotary-pump.name = Bơm điện block.thorium-reactor.name = Lò phản ứng Thorium block.mass-driver.name = Máy phóng điện từ block.blast-drill.name = Máy khoan thủy lực -block.thermal-pump.name = Bơm nhiệt +block.impulse-pump.name = Bơm nhiệt block.thermal-generator.name = Máy phát nhiệt điện block.alloy-smelter.name = Lò luyện hợp kim block.mender.name = Máy sửa chữa @@ -1508,7 +1508,7 @@ block.underflow-gate.description = Ngược với cổng tràn, chỉ đưa vậ block.mass-driver.description = Cấu trúc vận chuyển vật phẩm tầm xa. Thu thập các lô vật phẩm và bắn chúng cho các máy phóng điện từ khác. block.mechanical-pump.description = Bơm chất lỏng, không yêu cầu năng lượng. block.rotary-pump.description = Bơm chất lỏng, yêu cầu năng lượng. -block.thermal-pump.description = Bơm chất lỏng. +block.impulse-pump.description = Bơm chất lỏng. block.conduit.description = Đẩy chất lỏng đến trước, dùng với bơm và các ống dẫn khác. block.pulse-conduit.description = Đẩy chất lỏng đến trước, vận chuyển nhanh và trữ nhiều hơn so với ống tiêu chuẩn. block.plated-conduit.description = Đẩy chất lỏng đến trước, không nhận đầu vào ở bên, không bị rò rỉ. diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 00f6469e21..bfe8863ab6 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -1309,7 +1309,7 @@ block.rotary-pump.name = 回转泵 block.thorium-reactor.name = 钍反应堆 block.mass-driver.name = 质量驱动器 block.blast-drill.name = 爆破钻头 -block.thermal-pump.name = 热能泵 +block.impulse-pump.name = 热能泵 block.thermal-generator.name = 热能发电机 block.alloy-smelter.name = 合金冶炼厂 block.mender.name = 修理器 @@ -1509,7 +1509,7 @@ block.underflow-gate.description = 与溢流门相反,当两侧均堵塞时才 block.mass-driver.description = 远距离物品传输建筑,收集若干物品后将其发射到远处的另一个质量驱动器。 block.mechanical-pump.description = 泵送液体,不需要电力。 block.rotary-pump.description = 泵送液体,需要电力。 -block.thermal-pump.description = 泵送液体,需要大量电力。 +block.impulse-pump.description = 泵送液体,需要大量电力。 block.conduit.description = 向前方传输液体。 与泵或者其他导管联合使用。 block.pulse-conduit.description = 向前方传输液体。 比普通导管传输液体更快,且能储存更多液体。 block.plated-conduit.description = 向前方传输液体,不接受侧面输入。 不会发生泄露。 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 87cfdc91f2..4c3a1018d7 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -1301,7 +1301,7 @@ block.rotary-pump.name = 迴旋泵 block.thorium-reactor.name = 釷反應堆 block.mass-driver.name = 質量驅動器 block.blast-drill.name = 氣爆鑽頭 -block.thermal-pump.name = 熱能泵 +block.impulse-pump.name = 熱能泵 block.thermal-generator.name = 地熱發電機 block.alloy-smelter.name = 合金冶煉廠 block.mender.name = 修理方塊 @@ -1495,7 +1495,7 @@ block.underflow-gate.description = 反向的溢流器。如果側面被阻擋, block.mass-driver.description = 終極物品運輸方塊。收集大量物品,然後將它們射向另一個質量驅動器。需要能源以運作。 block.mechanical-pump.description = 一種便宜的泵,輸出速度慢,但不使用能量。 block.rotary-pump.description = 高級的泵。抽更多液體,但需要能量。 -block.thermal-pump.description = 終極的泵。 +block.impulse-pump.description = 終極的泵。 block.conduit.description = 基本液體運輸方塊。將液體往前輸送。用於提取器、泵或其他管線。 block.pulse-conduit.description = 高級的液體運輸方塊。比標準管線更快地輸送並儲存更多液體。 block.plated-conduit.description = 用和脈衝管線相同的速率運送液體,但有更強的裝甲。除了其他管線以外,不會接受來自側面的其他液體\n比較不會漏液。 diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index 6a5aa83cc5..650210e171 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -108,7 +108,7 @@ 63627=mass-driver|block-mass-driver-ui 63626=mechanical-pump|block-mechanical-pump-ui 63625=rotary-pump|block-rotary-pump-ui -63624=thermal-pump|block-thermal-pump-ui +63624=impulse-pump|block-impulse-pump-ui 63623=conduit|block-conduit-ui 63622=pulse-conduit|block-pulse-conduit-ui 63621=plated-conduit|block-plated-conduit-ui @@ -436,3 +436,8 @@ 63270=heat-reactor|block-heat-reactor-ui 63269=core-bastion|block-core-bastion-ui 63268=incite|unit-incite-ui +63267=oxidizer|block-oxidizer-ui +63266=reinforced-pump|block-reinforced-pump-ui +63265=oxide|item-oxide-ui +63264=oxygen|liquid-oxygen-ui +63263=hydrogen|liquid-hydrogen-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index 2b25fe8faa..f345a790b6 100644 Binary files a/core/assets/logicids.dat and b/core/assets/logicids.dat differ diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index 834476ca8b..6c0fc1209e 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -60,7 +60,7 @@ public class Blocks implements ContentList{ //crafting siliconSmelter, siliconCrucible, siliconArcFurnace, kiln, graphitePress, plastaniumCompressor, multiPress, phaseWeaver, surgeSmelter, pyratiteMixer, blastMixer, cryofluidMixer, melter, separator, disassembler, sporePress, pulverizer, incinerator, coalCentrifuge, - heatReactor, carbideCrucible, + oxidizer, heatReactor, carbideCrucible, cellSynthesisChamber, //sandbox @@ -75,13 +75,16 @@ public class Blocks implements ContentList{ //transport conveyor, titaniumConveyor, plastaniumConveyor, armoredConveyor, distributor, junction, itemBridge, phaseConveyor, sorter, invertedSorter, router, overflowGate, underflowGate, massDriver, + + //transport - alternate duct, ductRouter, ductBridge, ductUnloader, surgeConveyor, surgeRouter, //liquid - mechanicalPump, rotaryPump, thermalPump, conduit, pulseConduit, platedConduit, liquidRouter, liquidContainer, liquidTank, liquidJunction, bridgeConduit, phaseConduit, + mechanicalPump, rotaryPump, impulsePump, conduit, pulseConduit, platedConduit, liquidRouter, liquidContainer, liquidTank, liquidJunction, bridgeConduit, phaseConduit, - reinforcedConduit, reinforcedBridgeConduit, reinforcedLiquidRouter, reinforcedLiquidContainer, reinforcedLiquidTank, + //liquid - reinforced + reinforcedPump, reinforcedConduit, reinforcedBridgeConduit, reinforcedLiquidRouter, reinforcedLiquidContainer, reinforcedLiquidTank, //power combustionGenerator, thermalGenerator, steamGenerator, differentialGenerator, rtgGenerator, solarPanel, largeSolarPanel, thoriumReactor, @@ -943,11 +946,21 @@ public class Blocks implements ContentList{ consumes.power(0.50f); }}; + oxidizer = new HeatProducer("oxidizer"){{ + requirements(Category.crafting, with(Items.tungsten, 60, Items.graphite, 30)); + //TODO bigger? + size = 2; + + //TODO multi liquid output + //converts oxygen (?) + beryllium into heat + oxide + }}; + heatReactor = new HeatProducer("heat-reactor"){{ //TODO quadvent + //TODO coolant? requirements(Category.crafting, with(Items.tungsten, 60, Items.graphite, 30)); size = 3; - consumeTime = 60f * 10f; + craftTime = 60f * 10f; consumes.item(Items.fissileMatter, 1); }}; @@ -1370,7 +1383,7 @@ public class Blocks implements ContentList{ size = 2; }}; - thermalPump = new Pump("thermal-pump"){{ + impulsePump = new Pump("impulse-pump"){{ requirements(Category.liquid, with(Items.copper, 80, Items.metaglass, 90, Items.silicon, 30, Items.titanium, 40, Items.thorium, 35)); pumpAmount = 0.22f; consumes.power(1.3f); @@ -1439,6 +1452,21 @@ public class Blocks implements ContentList{ consumes.power(0.30f); }}; + //reinforced stuff + + //TODO different name + reinforcedPump = new Pump("reinforced-pump"){{ + requirements(Category.liquid, with(Items.beryllium, 70, Items.tungsten, 20, Items.silicon, 20)); + //TODO perhaps something else? + consumes.item(Items.beryllium); + + pumpAmount = 0.4f; + consumes.power(0.5f); + liquidCapacity = 40f; + hasPower = true; + size = 2; + }}; + reinforcedConduit = new ArmoredConduit("reinforced-conduit"){{ requirements(Category.liquid, with(Items.beryllium, 2, Items.graphite, 1)); botColor = Pal.darkestMetal; diff --git a/core/src/mindustry/content/Items.java b/core/src/mindustry/content/Items.java index c450e38bb9..38f0c8708c 100644 --- a/core/src/mindustry/content/Items.java +++ b/core/src/mindustry/content/Items.java @@ -8,7 +8,7 @@ public class Items implements ContentList{ public static Item scrap, copper, lead, graphite, coal, titanium, thorium, silicon, plastanium, phaseFabric, surgeAlloy, sporePod, sand, blastCompound, pyratite, metaglass, - beryllium, fissileMatter, dormantCyst, tungsten, carbide; + beryllium, tungsten, oxide, carbide, fissileMatter, dormantCyst; @Override public void load(){ @@ -98,6 +98,19 @@ public class Items implements ContentList{ cost = 1.3f; }}; + tungsten = new Item("tungsten", Color.valueOf("768a9a")){{ + hardness = 5; + cost = 1.5f; + }}; + + oxide = new Item("oxide", Color.valueOf("e4ffd6")){{ + cost = 1.1f; + }}; + + carbide = new Item("carbide", Color.valueOf("89769a")){{ + cost = 1.3f; + }}; + fissileMatter = new Item("fissile-matter", Color.valueOf("5e988d")){{ radioactivity = 1.5f; }}; @@ -105,14 +118,5 @@ public class Items implements ContentList{ dormantCyst = new Item("dormant-cyst", Color.valueOf("df824d")){{ flammability = 0.1f; }}; - - tungsten = new Item("tungsten", Color.valueOf("768a9a")){{ - hardness = 5; - cost = 1.5f; - }}; - - carbide = new Item("carbide", Color.valueOf("89769a")){{ - cost = 1.3f; - }}; } } diff --git a/core/src/mindustry/content/Liquids.java b/core/src/mindustry/content/Liquids.java index e063e82419..5f40b987cc 100644 --- a/core/src/mindustry/content/Liquids.java +++ b/core/src/mindustry/content/Liquids.java @@ -5,7 +5,8 @@ import mindustry.ctype.*; import mindustry.type.*; public class Liquids implements ContentList{ - public static Liquid water, slag, oil, cryofluid, neoplasm; + public static Liquid water, slag, oil, cryofluid, neoplasm, + ozone, hydrogen; @Override public void load(){ @@ -55,5 +56,21 @@ public class Liquids implements ContentList{ colorFrom = Color.valueOf("f98f4a"); colorTo = Color.valueOf("9e172c"); }}; + + //TODO reactivity, etc + ozone = new Liquid("ozone", Color.valueOf("bdd7ff")){{ + gas = true; + barColor = Color.valueOf("97bdf7"); + explosiveness = 1f; + flammability = 1f; + }}; + + //TODO combustion + hydrogen = new Liquid("hydrogen", Color.valueOf("e8d1ff")){{ + gas = true; + barColor = Color.valueOf("c599f0"); + }}; + + //TODO dicyanoacetylene } } diff --git a/core/src/mindustry/content/TechTree.java b/core/src/mindustry/content/TechTree.java index e182a0ce4c..235d3eb749 100644 --- a/core/src/mindustry/content/TechTree.java +++ b/core/src/mindustry/content/TechTree.java @@ -104,7 +104,7 @@ public class TechTree implements ContentList{ }); node(rotaryPump, () -> { - node(thermalPump, () -> { + node(impulsePump, () -> { }); }); diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 962a9666f2..75fb1fe866 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -572,6 +572,11 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, } public void dumpLiquid(Liquid liquid, float scaling){ + dumpLiquid(liquid, scaling, -1); + } + + /** @param outputDir output liquid direction relative to rotation, or -1 to use any direction. */ + public void dumpLiquid(Liquid liquid, float scaling, int outputDir){ int dump = this.cdump; if(liquids.get(liquid) <= 0.0001f) return; @@ -581,6 +586,9 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, for(int i = 0; i < proximity.size; i++){ incrementDump(proximity.size); Building other = proximity.get((i + dump) % proximity.size); + + if(outputDir != -1 && (relativeTo(other) + rotation) % 4 != outputDir) return; + other = other.getLiquidDestination(self(), liquid); if(other != null && other.team == team && other.block.hasLiquids && canDumpLiquid(other, liquid) && other.liquids != null){ @@ -1211,13 +1219,8 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, public void displayBars(Table table){ for(Func bar : block.bars.list()){ - //TODO fix conclusively - try{ - table.add(bar.get(self())).growX(); - table.row(); - }catch(ClassCastException e){ - break; - } + table.add(bar.get(self())).growX(); + table.row(); } } diff --git a/core/src/mindustry/graphics/Drawf.java b/core/src/mindustry/graphics/Drawf.java index e0dd6f27b2..efa7eb10fc 100644 --- a/core/src/mindustry/graphics/Drawf.java +++ b/core/src/mindustry/graphics/Drawf.java @@ -128,13 +128,13 @@ public class Drawf{ } public static void liquid(TextureRegion region, float x, float y, float alpha, Color color, float rotation){ - Draw.color(color, alpha); + Draw.color(color, alpha * color.a); Draw.rect(region, x, y, rotation); Draw.color(); } public static void liquid(TextureRegion region, float x, float y, float alpha, Color color){ - Draw.color(color, alpha); + Draw.color(color, alpha * color.a); Draw.rect(region, x, y); Draw.color(); } diff --git a/core/src/mindustry/io/SaveFileReader.java b/core/src/mindustry/io/SaveFileReader.java index 37f07b3e86..02a5b15756 100644 --- a/core/src/mindustry/io/SaveFileReader.java +++ b/core/src/mindustry/io/SaveFileReader.java @@ -59,7 +59,8 @@ public abstract class SaveFileReader{ "cryofluidmixer", "cryofluid-mixer", "block-forge", "constructor", "block-unloader", "payload-unloader", - "block-loader", "payload-loader" + "block-loader", "payload-loader", + "thermal-pump", "impulse-pump" ); public static final ObjectMap modContentNameMap = ObjectMap.of( diff --git a/core/src/mindustry/type/Liquid.java b/core/src/mindustry/type/Liquid.java index f170cccd92..ce5972c36e 100644 --- a/core/src/mindustry/type/Liquid.java +++ b/core/src/mindustry/type/Liquid.java @@ -14,9 +14,12 @@ import mindustry.world.meta.*; import static mindustry.entities.Puddles.*; +/** A better name for this class would be "fluid", but it's too late for that. */ public class Liquid extends UnlockableContent{ protected static final Rand rand = new Rand(); + /** TODO If true, this fluid is treated as a gas (and does not create puddles) */ + public boolean gas = false; /** Color used in pipes and on the ground. */ public Color color; /** Color of this liquid in gas form. */ @@ -58,6 +61,22 @@ public class Liquid extends UnlockableContent{ this(name, new Color(Color.black)); } + @Override + public void init(){ + super.init(); + + if(gas){ + //always "boils", it's a gas + boilPoint = -1; + //ensure no accidental global mutation + color = color.cpy(); + //all gases are transparent + color.a = 0.5f; + //for gases, gas color is implicitly their color + gasColor = color; + } + } + /** @return true if this liquid will boil in this global environment. */ public boolean willBoil(){ return Attribute.heat.env() >= boilPoint; diff --git a/core/src/mindustry/ui/Bar.java b/core/src/mindustry/ui/Bar.java index 1d566435e4..2e6896cca1 100644 --- a/core/src/mindustry/ui/Bar.java +++ b/core/src/mindustry/ui/Bar.java @@ -30,19 +30,11 @@ public class Bar extends Element{ public Bar(Prov name, Prov color, Floatp fraction){ this.fraction = fraction; - try{ - lastValue = value = Mathf.clamp(fraction.get()); - }catch(Exception e){ //getting the fraction may involve referring to invalid data - lastValue = value = 0f; - } + lastValue = value = Mathf.clamp(fraction.get()); update(() -> { - try{ - this.name = name.get(); - this.blinkColor.set(color.get()); - setColor(color.get()); - }catch(Exception e){ //getting the fraction may involve referring to invalid data - this.name = ""; - } + this.name = name.get(); + this.blinkColor.set(color.get()); + setColor(color.get()); }); } @@ -85,12 +77,8 @@ public class Bar extends Element{ public void draw(){ if(fraction == null) return; - float computed; - try{ - computed = Mathf.clamp(fraction.get()); - }catch(Exception e){ //getting the fraction may involve referring to invalid data - computed = 0f; - } + float computed = Mathf.clamp(fraction.get()); + if(lastValue > computed){ blink = 1f; diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index 30b775d1bf..76f20d8090 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -454,10 +454,14 @@ public class Block extends UnlockableContent{ Liquid liquid = consumes.get(ConsumeType.liquid).liquid; current = entity -> liquid; }else{ - current = entity -> entity.liquids == null ? Liquids.water : entity.liquids.current(); + current = entity -> entity.liquids.current(); } - bars.add("liquid", entity -> new Bar(() -> entity.liquids.get(current.get(entity)) <= 0.001f ? Core.bundle.get("bar.liquid") : current.get(entity).localizedName, - () -> current.get(entity).barColor(), () -> entity == null || entity.liquids == null ? 0f : entity.liquids.get(current.get(entity)) / liquidCapacity)); + + bars.add("liquid", entity -> new Bar( + () -> entity.liquids.get(current.get(entity)) <= 0.001f ? Core.bundle.get("bar.liquid") : current.get(entity).localizedName, + () -> current.get(entity).barColor(), + () -> entity.liquids.get(current.get(entity)) / liquidCapacity) + ); } if(hasPower && consumes.hasPower()){ @@ -465,12 +469,20 @@ public class Block extends UnlockableContent{ boolean buffered = cons.buffered; float capacity = cons.capacity; - bars.add("power", entity -> new Bar(() -> buffered ? Core.bundle.format("bar.poweramount", Float.isNaN(entity.power.status * capacity) ? "" : UI.formatAmount((int)(entity.power.status * capacity))) : - Core.bundle.get("bar.power"), () -> Pal.powerBar, () -> Mathf.zero(cons.requestedPower(entity)) && entity.power.graph.getPowerProduced() + entity.power.graph.getBatteryStored() > 0f ? 1f : entity.power.status)); + bars.add("power", entity -> new Bar( + () -> buffered ? Core.bundle.format("bar.poweramount", Float.isNaN(entity.power.status * capacity) ? "" : UI.formatAmount((int)(entity.power.status * capacity))) : + Core.bundle.get("bar.power"), + () -> Pal.powerBar, + () -> Mathf.zero(cons.requestedPower(entity)) && entity.power.graph.getPowerProduced() + entity.power.graph.getBatteryStored() > 0f ? 1f : entity.power.status) + ); } if(hasItems && configurable){ - bars.add("items", entity -> new Bar(() -> Core.bundle.format("bar.items", entity.items.total()), () -> Pal.items, () -> (float)entity.items.total() / itemCapacity)); + bars.add("items", entity -> new Bar( + () -> Core.bundle.format("bar.items", entity.items.total()), + () -> Pal.items, + () -> (float)entity.items.total() / itemCapacity) + ); } if(unitCapModifier != 0){ @@ -515,46 +527,46 @@ public class Block extends UnlockableContent{ } - public void drawPlan(BuildPlan req, Eachable list, boolean valid){ - drawPlan(req, list, valid, 1f); + public void drawPlan(BuildPlan plan, Eachable list, boolean valid){ + drawPlan(plan, list, valid, 1f); } - public void drawPlan(BuildPlan req, Eachable list, boolean valid, float alpha){ + public void drawPlan(BuildPlan plan, Eachable list, boolean valid, float alpha){ Draw.reset(); Draw.mixcol(!valid ? Pal.breakInvalid : Color.white, (!valid ? 0.4f : 0.24f) + Mathf.absin(Time.globalTime, 6f, 0.28f)); Draw.alpha(alpha); float prevScale = Draw.scl; - Draw.scl *= req.animScale; - drawRequestRegion(req, list); + Draw.scl *= plan.animScale; + drawRequestRegion(plan, list); Draw.scl = prevScale; Draw.reset(); } - public void drawRequestRegion(BuildPlan req, Eachable list){ - TextureRegion reg = getRequestRegion(req, list); - Draw.rect(reg, req.drawx(), req.drawy(), !rotate ? 0 : req.rotation * 90); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + TextureRegion reg = getRequestRegion(plan, list); + Draw.rect(reg, plan.drawx(), plan.drawy(), !rotate ? 0 : plan.rotation * 90); - if(req.worldContext && player != null && teamRegion != null && teamRegion.found()){ + if(plan.worldContext && player != null && teamRegion != null && teamRegion.found()){ if(teamRegions[player.team().id] == teamRegion) Draw.color(player.team().color); - Draw.rect(teamRegions[player.team().id], req.drawx(), req.drawy()); + Draw.rect(teamRegions[player.team().id], plan.drawx(), plan.drawy()); Draw.color(); } - drawRequestConfig(req, list); + drawRequestConfig(plan, list); } - public TextureRegion getRequestRegion(BuildPlan req, Eachable list){ + public TextureRegion getRequestRegion(BuildPlan plan, Eachable list){ return fullIcon; } - public void drawRequestConfig(BuildPlan req, Eachable list){ + public void drawRequestConfig(BuildPlan plan, Eachable list){ } - public void drawRequestConfigCenter(BuildPlan req, Object content, String region, boolean cross){ + public void drawRequestConfigCenter(BuildPlan plan, Object content, String region, boolean cross){ if(content == null){ if(cross){ - Draw.rect("cross", req.drawx(), req.drawy()); + Draw.rect("cross", plan.drawx(), plan.drawy()); } return; } @@ -562,15 +574,15 @@ public class Block extends UnlockableContent{ if(color == null) return; Draw.color(color); - Draw.rect(region, req.drawx(), req.drawy()); + Draw.rect(region, plan.drawx(), plan.drawy()); Draw.color(); } - public void drawRequestConfigCenter(BuildPlan req, Object content, String region){ - drawRequestConfigCenter(req, content, region, false); + public void drawRequestConfigCenter(BuildPlan plan, Object content, String region){ + drawRequestConfigCenter(plan, content, region, false); } - public void drawRequestConfigTop(BuildPlan req, Eachable list){ + public void drawRequestConfigTop(BuildPlan plan, Eachable list){ } diff --git a/core/src/mindustry/world/blocks/defense/Door.java b/core/src/mindustry/world/blocks/defense/Door.java index 8de012a979..6703029b20 100644 --- a/core/src/mindustry/world/blocks/defense/Door.java +++ b/core/src/mindustry/world/blocks/defense/Door.java @@ -51,8 +51,8 @@ public class Door extends Wall{ } @Override - public TextureRegion getRequestRegion(BuildPlan req, Eachable list){ - return req.config == Boolean.TRUE ? openRegion : region; + public TextureRegion getRequestRegion(BuildPlan plan, Eachable list){ + return plan.config == Boolean.TRUE ? openRegion : region; } public class DoorBuild extends Building{ diff --git a/core/src/mindustry/world/blocks/defense/Thruster.java b/core/src/mindustry/world/blocks/defense/Thruster.java index f015b02b38..934ccc5036 100644 --- a/core/src/mindustry/world/blocks/defense/Thruster.java +++ b/core/src/mindustry/world/blocks/defense/Thruster.java @@ -15,9 +15,9 @@ public class Thruster extends Wall{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(topRegion, req.drawx(), req.drawy(), req.rotation * 90); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); } @Override diff --git a/core/src/mindustry/world/blocks/distribution/Conveyor.java b/core/src/mindustry/world/blocks/distribution/Conveyor.java index d91df61d7a..f2acfd661b 100644 --- a/core/src/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/mindustry/world/blocks/distribution/Conveyor.java @@ -66,13 +66,13 @@ public class Conveyor extends Block implements Autotiler{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - int[] bits = getTiling(req, list); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + int[] bits = getTiling(plan, list); if(bits == null) return; TextureRegion region = regions[bits[0]][0]; - Draw.rect(region, req.drawx(), req.drawy(), region.width * bits[1] * Draw.scl, region.height * bits[2] * Draw.scl, req.rotation * 90); + Draw.rect(region, plan.drawx(), plan.drawy(), region.width * bits[1] * Draw.scl, region.height * bits[2] * Draw.scl, plan.rotation * 90); } @Override diff --git a/core/src/mindustry/world/blocks/distribution/DirectionBridge.java b/core/src/mindustry/world/blocks/distribution/DirectionBridge.java index d1b26f2072..7addb04d30 100644 --- a/core/src/mindustry/world/blocks/distribution/DirectionBridge.java +++ b/core/src/mindustry/world/blocks/distribution/DirectionBridge.java @@ -47,19 +47,19 @@ public class DirectionBridge extends Block{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(dirRegion, req.drawx(), req.drawy(), req.rotation * 90); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(dirRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); } @Override - public void drawRequestConfigTop(BuildPlan req, Eachable list){ + public void drawRequestConfigTop(BuildPlan plan, Eachable list){ otherReq = null; otherDst = range; - Point2 d = Geometry.d4(req.rotation); + Point2 d = Geometry.d4(plan.rotation); list.each(other -> { - if(other.block == this && req != other && Mathf.clamp(other.x - req.x, -1, 1) == d.x && Mathf.clamp(other.y - req.y, -1, 1) == d.y){ - int dst = Math.max(Math.abs(other.x - req.x), Math.abs(other.y - req.y)); + if(other.block == this && plan != other && Mathf.clamp(other.x - plan.x, -1, 1) == d.x && Mathf.clamp(other.y - plan.y, -1, 1) == d.y){ + int dst = Math.max(Math.abs(other.x - plan.x), Math.abs(other.y - plan.y)); if(dst <= otherDst){ otherReq = other; otherDst = dst; @@ -68,7 +68,7 @@ public class DirectionBridge extends Block{ }); if(otherReq != null){ - drawBridge(req.rotation, req.drawx(), req.drawy(), otherReq.drawx(), otherReq.drawy(), null); + drawBridge(plan.rotation, plan.drawx(), plan.drawy(), otherReq.drawx(), otherReq.drawy(), null); } } diff --git a/core/src/mindustry/world/blocks/distribution/DirectionalUnloader.java b/core/src/mindustry/world/blocks/distribution/DirectionalUnloader.java index 29cc41a4cd..7a780dd8df 100644 --- a/core/src/mindustry/world/blocks/distribution/DirectionalUnloader.java +++ b/core/src/mindustry/world/blocks/distribution/DirectionalUnloader.java @@ -46,15 +46,15 @@ public class DirectionalUnloader extends Block{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(topRegion, req.drawx(), req.drawy(), req.rotation * 90); - drawRequestConfig(req, list); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); + drawRequestConfig(plan, list); } @Override - public void drawRequestConfig(BuildPlan req, Eachable list){ - drawRequestConfigCenter(req, req.config, "duct-unloader-center"); + public void drawRequestConfig(BuildPlan plan, Eachable list){ + drawRequestConfigCenter(plan, plan.config, "duct-unloader-center"); } @Override diff --git a/core/src/mindustry/world/blocks/distribution/Duct.java b/core/src/mindustry/world/blocks/distribution/Duct.java index 8061b2e0dd..215468e316 100644 --- a/core/src/mindustry/world/blocks/distribution/Duct.java +++ b/core/src/mindustry/world/blocks/distribution/Duct.java @@ -50,16 +50,16 @@ public class Duct extends Block implements Autotiler{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - int[] bits = getTiling(req, list); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + int[] bits = getTiling(plan, list); if(bits == null) return; Draw.scl(bits[1], bits[2]); Draw.alpha(0.5f); - Draw.rect(botRegions[bits[0]], req.drawx(), req.drawy(), req.rotation * 90); + Draw.rect(botRegions[bits[0]], plan.drawx(), plan.drawy(), plan.rotation * 90); Draw.color(); - Draw.rect(topRegions[bits[0]], req.drawx(), req.drawy(), req.rotation * 90); + Draw.rect(topRegions[bits[0]], plan.drawx(), plan.drawy(), plan.rotation * 90); Draw.scl(); } diff --git a/core/src/mindustry/world/blocks/distribution/DuctRouter.java b/core/src/mindustry/world/blocks/distribution/DuctRouter.java index d8492bc07e..b04f75afbe 100644 --- a/core/src/mindustry/world/blocks/distribution/DuctRouter.java +++ b/core/src/mindustry/world/blocks/distribution/DuctRouter.java @@ -53,9 +53,9 @@ public class DuctRouter extends Block{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(topRegion, req.drawx(), req.drawy(), req.rotation * 90); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); } public class DuctRouterBuild extends Building{ diff --git a/core/src/mindustry/world/blocks/distribution/ItemBridge.java b/core/src/mindustry/world/blocks/distribution/ItemBridge.java index 9be6bb6428..5857438bb7 100644 --- a/core/src/mindustry/world/blocks/distribution/ItemBridge.java +++ b/core/src/mindustry/world/blocks/distribution/ItemBridge.java @@ -61,16 +61,16 @@ public class ItemBridge extends Block{ } @Override - public void drawRequestConfigTop(BuildPlan req, Eachable list){ + public void drawRequestConfigTop(BuildPlan plan, Eachable list){ otherReq = null; list.each(other -> { - if(other.block == this && req != other && req.config instanceof Point2 p && p.equals(other.x - req.x, other.y - req.y)){ + if(other.block == this && plan != other && plan.config instanceof Point2 p && p.equals(other.x - plan.x, other.y - plan.y)){ otherReq = other; } }); if(otherReq != null){ - drawBridge(req, otherReq.drawx(), otherReq.drawy(), 0); + drawBridge(plan, otherReq.drawx(), otherReq.drawy(), 0); } } diff --git a/core/src/mindustry/world/blocks/distribution/PayloadRouter.java b/core/src/mindustry/world/blocks/distribution/PayloadRouter.java index 186e67b6d0..2a42ba8ac0 100644 --- a/core/src/mindustry/world/blocks/distribution/PayloadRouter.java +++ b/core/src/mindustry/world/blocks/distribution/PayloadRouter.java @@ -21,10 +21,10 @@ public class PayloadRouter extends PayloadConveyor{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - super.drawRequestRegion(req, list); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + super.drawRequestRegion(plan, list); - Draw.rect(overRegion, req.drawx(), req.drawy()); + Draw.rect(overRegion, plan.drawx(), plan.drawy()); } public class PayloadRouterBuild extends PayloadConveyorBuild{ diff --git a/core/src/mindustry/world/blocks/distribution/Sorter.java b/core/src/mindustry/world/blocks/distribution/Sorter.java index afe3ce6e7f..e14131dc27 100644 --- a/core/src/mindustry/world/blocks/distribution/Sorter.java +++ b/core/src/mindustry/world/blocks/distribution/Sorter.java @@ -32,8 +32,8 @@ public class Sorter extends Block{ } @Override - public void drawRequestConfig(BuildPlan req, Eachable list){ - drawRequestConfigCenter(req, req.config, "center", true); + public void drawRequestConfig(BuildPlan plan, Eachable list){ + drawRequestConfigCenter(plan, plan.config, "center", true); } @Override diff --git a/core/src/mindustry/world/blocks/distribution/StackConveyor.java b/core/src/mindustry/world/blocks/distribution/StackConveyor.java index 0f7c276553..6f376c7329 100644 --- a/core/src/mindustry/world/blocks/distribution/StackConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/StackConveyor.java @@ -82,17 +82,17 @@ public class StackConveyor extends Block implements Autotiler{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - int[] bits = getTiling(req, list); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + int[] bits = getTiling(plan, list); if(bits == null) return; TextureRegion region = regions[0]; - Draw.rect(region, req.drawx(), req.drawy(), req.rotation * 90); + Draw.rect(region, plan.drawx(), plan.drawy(), plan.rotation * 90); for(int i = 0; i < 4; i++){ if((bits[3] & (1 << i)) == 0){ - Draw.rect(edgeRegion, req.drawx(), req.drawy(), (req.rotation - i) * 90); + Draw.rect(edgeRegion, plan.drawx(), plan.drawy(), (plan.rotation - i) * 90); } } } diff --git a/core/src/mindustry/world/blocks/heat/HeatBlock.java b/core/src/mindustry/world/blocks/heat/HeatBlock.java index 797435e323..665df310de 100644 --- a/core/src/mindustry/world/blocks/heat/HeatBlock.java +++ b/core/src/mindustry/world/blocks/heat/HeatBlock.java @@ -3,4 +3,6 @@ package mindustry.world.blocks.heat; /** Basic interface for any block that produces heat.*/ public interface HeatBlock{ float heat(); + /** @return heat as a fraction of max heat */ + float heatFrac(); } diff --git a/core/src/mindustry/world/blocks/heat/HeatProducer.java b/core/src/mindustry/world/blocks/heat/HeatProducer.java index 7e0cdb6188..6fd1020ee9 100644 --- a/core/src/mindustry/world/blocks/heat/HeatProducer.java +++ b/core/src/mindustry/world/blocks/heat/HeatProducer.java @@ -1,47 +1,28 @@ package mindustry.world.blocks.heat; -import arc.graphics.*; -import arc.graphics.g2d.*; import arc.math.*; -import arc.util.*; import arc.util.io.*; -import mindustry.annotations.Annotations.*; -import mindustry.content.*; -import mindustry.entities.*; -import mindustry.entities.units.*; -import mindustry.gen.*; import mindustry.graphics.*; -import mindustry.logic.*; import mindustry.ui.*; -import mindustry.world.*; import mindustry.world.blocks.power.NuclearReactor.*; -import mindustry.world.meta.*; +import mindustry.world.blocks.production.*; +import mindustry.world.draw.*; -public class HeatProducer extends Block{ +public class HeatProducer extends GenericCrafter{ public float heatOutput = 10f; public float warmupRate = 0.15f; - public float consumeTime = 100; - - public @Load("@-heat") TextureRegion heatRegion; - public @Load("@-glow") TextureRegion glowRegion; - public @Load("@-top1") TextureRegion topRegion1; - public @Load("@-top2") TextureRegion topRegion2; - public Color heatColor = new Color(1f, 0.22f, 0.22f, 0.8f); - public float heatPulse = 0.3f, heatPulseScl = 10f, glowMult = 1.2f; - public Effect consumeEffect = Fx.none; public HeatProducer(String name){ super(name); + drawer = new DrawHeatOutput(); update = solid = rotate = true; canOverdrive = false; } @Override public void setStats(){ - stats.timePeriod = consumeTime; super.setStats(); - stats.add(Stat.productionTime, consumeTime / 60f, StatUnit.seconds); //TODO heat prod stats } @@ -52,64 +33,20 @@ public class HeatProducer extends Block{ bars.add("heat", (NuclearReactorBuild entity) -> new Bar("bar.heat", Pal.lightOrange, () -> entity.heat)); } - @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(req.rotation > 1 ? topRegion2 : topRegion1, req.drawx(), req.drawy(), req.rotation * 90); - } - - @Override - public TextureRegion[] icons(){ - return new TextureRegion[]{region, topRegion1}; - } - - public class HeatProducerBuild extends Building implements HeatBlock{ + public class HeatProducerBuild extends GenericCrafterBuild implements HeatBlock{ public float heat; - public float progress; @Override public void updateTile(){ - if(consValid()){ - progress += getProgressIncrease(consumeTime); - - if(progress >= 1f){ - consume(); - consumeEffect.at(this); - progress -= 1f; - } - } + super.updateTile(); //heat approaches target at the same speed regardless of efficiency heat = Mathf.approachDelta(heat, heatOutput * efficiency() * Mathf.num(consValid()), warmupRate * delta()); } @Override - public void draw(){ - Draw.rect(region, x, y); - - Draw.rect(rotation > 1 ? topRegion2 : topRegion1, x, y, rotdeg()); - - if(heat > 0){ - Draw.z(Layer.blockAdditive); - Draw.blend(Blending.additive); - Draw.color(heatColor, heat / heatOutput * (heatColor.a * (1f - heatPulse + Mathf.absin(heatPulseScl, heatPulse)))); - Draw.rect(heatRegion, x, y, rotdeg()); - Draw.color(Draw.getColor().mul(glowMult)); - Draw.rect(glowRegion, x, y); - Draw.blend(); - Draw.color(); - } - } - - @Override - public double sense(LAccess sensor){ - if(sensor == LAccess.progress) return Mathf.clamp(progress); - return super.sense(sensor); - } - - @Override - public boolean shouldAmbientSound(){ - return cons.valid(); + public float heatFrac(){ + return heat / heatOutput; } @Override @@ -120,14 +57,12 @@ public class HeatProducer extends Block{ @Override public void write(Writes write){ super.write(write); - write.f(progress); write.f(heat); } @Override public void read(Reads read, byte revision){ super.read(read, revision); - progress = read.f(); heat = read.f(); } } diff --git a/core/src/mindustry/world/blocks/liquid/Conduit.java b/core/src/mindustry/world/blocks/liquid/Conduit.java index 7fc599fca7..2944196b37 100644 --- a/core/src/mindustry/world/blocks/liquid/Conduit.java +++ b/core/src/mindustry/world/blocks/liquid/Conduit.java @@ -52,17 +52,17 @@ public class Conduit extends LiquidBlock implements Autotiler{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - int[] bits = getTiling(req, list); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + int[] bits = getTiling(plan, list); if(bits == null) return; Draw.scl(bits[1], bits[2]); Draw.color(botColor); Draw.alpha(0.5f); - Draw.rect(botRegions[bits[0]], req.drawx(), req.drawy(), req.rotation * 90); + Draw.rect(botRegions[bits[0]], plan.drawx(), plan.drawy(), plan.rotation * 90); Draw.color(); - Draw.rect(topRegions[bits[0]], req.drawx(), req.drawy(), req.rotation * 90); + Draw.rect(topRegions[bits[0]], plan.drawx(), plan.drawy(), plan.rotation * 90); Draw.scl(); } diff --git a/core/src/mindustry/world/blocks/payloads/BlockProducer.java b/core/src/mindustry/world/blocks/payloads/BlockProducer.java index 43da658451..53f21612c4 100644 --- a/core/src/mindustry/world/blocks/payloads/BlockProducer.java +++ b/core/src/mindustry/world/blocks/payloads/BlockProducer.java @@ -39,10 +39,10 @@ public abstract class BlockProducer extends PayloadBlock{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90); - Draw.rect(topRegion, req.drawx(), req.drawy()); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); + Draw.rect(topRegion, plan.drawx(), plan.drawy()); } @Override diff --git a/core/src/mindustry/world/blocks/payloads/PayloadLoader.java b/core/src/mindustry/world/blocks/payloads/PayloadLoader.java index 6f34af5b61..4a97cce600 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadLoader.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadLoader.java @@ -51,11 +51,11 @@ public class PayloadLoader extends PayloadBlock{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(inRegion, req.drawx(), req.drawy(), req.rotation * 90); - Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90); - Draw.rect(topRegion, req.drawx(), req.drawy()); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(inRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); + Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); + Draw.rect(topRegion, plan.drawx(), plan.drawy()); } public class PayloadLoaderBuild extends PayloadBlockBuild{ diff --git a/core/src/mindustry/world/blocks/payloads/PayloadMassDriver.java b/core/src/mindustry/world/blocks/payloads/PayloadMassDriver.java index 41dffd0279..091a813a44 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadMassDriver.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadMassDriver.java @@ -87,11 +87,11 @@ public class PayloadMassDriver extends PayloadBlock{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(baseRegion, req.drawx(), req.drawy()); - Draw.rect(topRegion, req.drawx(), req.drawy()); - Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90); - Draw.rect(region, req.drawx(), req.drawy()); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(baseRegion, plan.drawx(), plan.drawy()); + Draw.rect(topRegion, plan.drawx(), plan.drawy()); + Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); + Draw.rect(region, plan.drawx(), plan.drawy()); } @Override diff --git a/core/src/mindustry/world/blocks/payloads/PayloadSource.java b/core/src/mindustry/world/blocks/payloads/PayloadSource.java index 03fc0eb320..bacd26f287 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadSource.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadSource.java @@ -64,10 +64,10 @@ public class PayloadSource extends PayloadBlock{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90); - Draw.rect(topRegion, req.drawx(), req.drawy()); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); + Draw.rect(topRegion, plan.drawx(), plan.drawy()); } public boolean canProduce(Block b){ diff --git a/core/src/mindustry/world/blocks/power/PowerDiode.java b/core/src/mindustry/world/blocks/power/PowerDiode.java index 20db770b82..558850c1ae 100644 --- a/core/src/mindustry/world/blocks/power/PowerDiode.java +++ b/core/src/mindustry/world/blocks/power/PowerDiode.java @@ -35,9 +35,9 @@ public class PowerDiode extends Block{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(fullIcon, req.drawx(), req.drawy()); - Draw.rect(arrow, req.drawx(), req.drawy(), !rotate ? 0 : req.rotation * 90); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(fullIcon, plan.drawx(), plan.drawy()); + Draw.rect(arrow, plan.drawx(), plan.drawy(), !rotate ? 0 : plan.rotation * 90); } // battery % of the graph on either side, defaults to zero diff --git a/core/src/mindustry/world/blocks/power/PowerNode.java b/core/src/mindustry/world/blocks/power/PowerNode.java index 4e5a5c1598..fd310c4b49 100644 --- a/core/src/mindustry/world/blocks/power/PowerNode.java +++ b/core/src/mindustry/world/blocks/power/PowerNode.java @@ -302,23 +302,23 @@ public class PowerNode extends PowerBlock{ } @Override - public void drawRequestConfigTop(BuildPlan req, Eachable list){ - if(req.config instanceof Point2[] ps){ + public void drawRequestConfigTop(BuildPlan plan, Eachable list){ + if(plan.config instanceof Point2[] ps){ setupColor(1f); for(Point2 point : ps){ - int px = req.x + point.x, py = req.y + point.y; + int px = plan.x + point.x, py = plan.y + point.y; otherReq = null; list.each(other -> { if(other.block != null && (px >= other.x - ((other.block.size-1)/2) && py >= other.y - ((other.block.size-1)/2) && px <= other.x + other.block.size/2 && py <= other.y + other.block.size/2) - && other != req && other.block.hasPower){ + && other != plan && other.block.hasPower){ otherReq = other; } }); if(otherReq == null || otherReq.block == null) continue; - drawLaser(player == null ? Team.sharded : player.team(), req.drawx(), req.drawy(), otherReq.drawx(), otherReq.drawy(), size, otherReq.block.size); + drawLaser(player == null ? Team.sharded : player.team(), plan.drawx(), plan.drawy(), otherReq.drawx(), otherReq.drawy(), size, otherReq.block.size); } Draw.color(); } diff --git a/core/src/mindustry/world/blocks/production/BeamDrill.java b/core/src/mindustry/world/blocks/production/BeamDrill.java index 226b776137..33759c1de0 100644 --- a/core/src/mindustry/world/blocks/production/BeamDrill.java +++ b/core/src/mindustry/world/blocks/production/BeamDrill.java @@ -71,9 +71,9 @@ public class BeamDrill extends Block{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(topRegion, req.drawx(), req.drawy(), req.rotation * 90); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); } @Override diff --git a/core/src/mindustry/world/blocks/production/Drill.java b/core/src/mindustry/world/blocks/production/Drill.java index 6db1bee899..c7795a853e 100644 --- a/core/src/mindustry/world/blocks/production/Drill.java +++ b/core/src/mindustry/world/blocks/production/Drill.java @@ -82,16 +82,16 @@ public class Drill extends Block{ } @Override - public void drawRequestConfigTop(BuildPlan req, Eachable list){ - if(!req.worldContext) return; - Tile tile = req.tile(); + public void drawRequestConfigTop(BuildPlan plan, Eachable list){ + if(!plan.worldContext) return; + Tile tile = plan.tile(); if(tile == null) return; countOre(tile); if(returnItem == null || !drawMineItem) return; Draw.color(returnItem.color); - Draw.rect(itemRegion, req.drawx(), req.drawy()); + Draw.rect(itemRegion, plan.drawx(), plan.drawy()); Draw.color(); } diff --git a/core/src/mindustry/world/blocks/production/GenericCrafter.java b/core/src/mindustry/world/blocks/production/GenericCrafter.java index aea5700c02..aae3c984b9 100644 --- a/core/src/mindustry/world/blocks/production/GenericCrafter.java +++ b/core/src/mindustry/world/blocks/production/GenericCrafter.java @@ -7,9 +7,11 @@ import arc.util.*; import arc.util.io.*; import mindustry.content.*; import mindustry.entities.*; +import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.logic.*; import mindustry.type.*; +import mindustry.ui.*; import mindustry.world.*; import mindustry.world.draw.*; import mindustry.world.meta.*; @@ -19,7 +21,13 @@ public class GenericCrafter extends Block{ public @Nullable ItemStack outputItem; /** Overwrites outputItem if not null. */ public @Nullable ItemStack[] outputItems; + + /** Written to outputLiquids as a single-element array if outputLiquids is null. */ public @Nullable LiquidStack outputLiquid; + /** Overwrites outputLiquid if not null. */ + public @Nullable LiquidStack[] outputLiquids; + /** Liquid output directions, specified in the same order as outputLiquids. Use -1 to dump in every direction. Rotations are relative to block. */ + public int[] liquidOutputDirections = {-1}; public float craftTime = 80; public Effect craftEffect = Fx.none; @@ -52,8 +60,27 @@ public class GenericCrafter extends Block{ stats.add(Stat.output, StatValues.items(craftTime, outputItems)); } - if(outputLiquid != null){ - stats.add(Stat.output, outputLiquid.liquid, outputLiquid.amount * (60f / craftTime), true); + if(outputLiquids != null){ + stats.add(Stat.output, StatValues.liquids(craftTime, outputLiquids)); + } + } + + @Override + public void setBars(){ + super.setBars(); + + //set up liquid bars for multiple liquid outputs; TODO multiple inputs not yet supported due to inherent complexity + //TODO this will currently screw up input display if input liquids are available + if(outputLiquids != null && outputLiquids.length > 1){ + bars.remove("liquid"); + + for(var stack : outputLiquids){ + bars.add("liquid-" + stack.liquid.name, entity -> new Bar( + () -> stack.liquid.localizedName, + () -> stack.liquid.barColor(), + () -> entity.liquids.get(stack.liquid) / liquidCapacity) + ); + } } } @@ -70,9 +97,21 @@ public class GenericCrafter extends Block{ if(outputItems == null && outputItem != null){ outputItems = new ItemStack[]{outputItem}; } + if(outputLiquids == null && outputLiquid != null){ + outputLiquids = new LiquidStack[]{outputLiquid}; + } super.init(); } + public void drawPlanBase(BuildPlan req, Eachable list){ + super.drawRequestRegion(req, list); + } + + @Override + public void drawRequestRegion(BuildPlan plan, Eachable list){ + drawer.drawPlan(this, plan, list); + } + @Override public TextureRegion[] icons(){ return drawer.icons(this); @@ -102,13 +141,21 @@ public class GenericCrafter extends Block{ @Override public boolean shouldConsume(){ if(outputItems != null){ - for(ItemStack output : outputItems){ + for(var output : outputItems){ if(items.get(output.item) + output.amount > itemCapacity){ return false; } } } - return (outputLiquid == null || !(liquids.get(outputLiquid.liquid) >= liquidCapacity - 0.001f)) && enabled; + if(outputLiquids != null){ + for(var output : outputLiquids){ + if(liquids.get(output.liquid) >= liquidCapacity - 0.001f){ + return false; + } + } + } + + return enabled; } @Override @@ -141,15 +188,17 @@ public class GenericCrafter extends Block{ consume(); if(outputItems != null){ - for(ItemStack output : outputItems){ + for(var output : outputItems){ for(int i = 0; i < output.amount; i++){ offload(output.item); } } } - if(outputLiquid != null){ - handleLiquid(this, outputLiquid.liquid, outputLiquid.amount); + if(outputLiquids != null){ + for(var output : outputLiquids){ + handleLiquid(this, output.liquid, output.amount); + } } craftEffect.at(x, y); @@ -163,8 +212,12 @@ public class GenericCrafter extends Block{ } } - if(outputLiquid != null){ - dumpLiquid(outputLiquid.liquid); + if(outputLiquids != null){ + for(int i = 0; i < outputLiquids.length; i++){ + int dir = liquidOutputDirections.length > i ? liquidOutputDirections[i] : -1; + + dumpLiquid(outputLiquids[i].liquid, 2f, dir); + } } } diff --git a/core/src/mindustry/world/blocks/production/Pump.java b/core/src/mindustry/world/blocks/production/Pump.java index f18b0c7640..7d759448c2 100644 --- a/core/src/mindustry/world/blocks/production/Pump.java +++ b/core/src/mindustry/world/blocks/production/Pump.java @@ -15,6 +15,8 @@ import static mindustry.Vars.*; public class Pump extends LiquidBlock{ /** Pump amount per tile. */ public float pumpAmount = 0.2f; + /** Interval in-between item consumptions, if applicable. */ + public float consumeTime = 60f * 5f; public Pump(String name){ super(name); @@ -41,6 +43,10 @@ public class Pump extends LiquidBlock{ for(Tile other : tile.getLinkedTilesAs(this, tempTiles)){ if(canPump(other)){ + if(liquidDrop != null && other.floor().liquidDrop != liquidDrop){ + liquidDrop = null; + break; + } liquidDrop = other.floor().liquidDrop; amount += other.floor().liquidMultiplier; } @@ -81,6 +87,7 @@ public class Pump extends LiquidBlock{ } public class PumpBuild extends LiquidBuild{ + public float consTimer; public float amount = 0f; public Liquid liquidDrop = null; @@ -121,6 +128,12 @@ public class Pump extends LiquidBlock{ if(consValid() && liquidDrop != null){ float maxPump = Math.min(liquidCapacity - liquids.total(), amount * pumpAmount * edelta()); liquids.add(liquidDrop, maxPump); + + //does nothing for most pumps, as those do not require items. + if((consTimer += delta()) >= consumeTime){ + consume(); + consumeTime = 0f; + } } dumpLiquid(liquids.current()); diff --git a/core/src/mindustry/world/blocks/production/WallCrafter.java b/core/src/mindustry/world/blocks/production/WallCrafter.java index c93ea43c31..da13ed5419 100644 --- a/core/src/mindustry/world/blocks/production/WallCrafter.java +++ b/core/src/mindustry/world/blocks/production/WallCrafter.java @@ -81,9 +81,9 @@ public class WallCrafter extends Block{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(topRegion, req.drawx(), req.drawy(), req.rotation * 90); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(topRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); } @Override diff --git a/core/src/mindustry/world/blocks/sandbox/ItemSource.java b/core/src/mindustry/world/blocks/sandbox/ItemSource.java index 3a86cf01f5..c203b359b6 100644 --- a/core/src/mindustry/world/blocks/sandbox/ItemSource.java +++ b/core/src/mindustry/world/blocks/sandbox/ItemSource.java @@ -45,8 +45,8 @@ public class ItemSource extends Block{ } @Override - public void drawRequestConfig(BuildPlan req, Eachable list){ - drawRequestConfigCenter(req, req.config, "center", true); + public void drawRequestConfig(BuildPlan plan, Eachable list){ + drawRequestConfigCenter(plan, plan.config, "center", true); } @Override diff --git a/core/src/mindustry/world/blocks/sandbox/LiquidSource.java b/core/src/mindustry/world/blocks/sandbox/LiquidSource.java index ff42509efb..4a10160a4b 100644 --- a/core/src/mindustry/world/blocks/sandbox/LiquidSource.java +++ b/core/src/mindustry/world/blocks/sandbox/LiquidSource.java @@ -41,8 +41,8 @@ public class LiquidSource extends Block{ } @Override - public void drawRequestConfig(BuildPlan req, Eachable list){ - drawRequestConfigCenter(req, req.config, "center", true); + public void drawRequestConfig(BuildPlan plan, Eachable list){ + drawRequestConfigCenter(plan, plan.config, "center", true); } public class LiquidSourceBuild extends Building{ diff --git a/core/src/mindustry/world/blocks/storage/Unloader.java b/core/src/mindustry/world/blocks/storage/Unloader.java index eae61826d3..7eb76243af 100644 --- a/core/src/mindustry/world/blocks/storage/Unloader.java +++ b/core/src/mindustry/world/blocks/storage/Unloader.java @@ -44,8 +44,8 @@ public class Unloader extends Block{ } @Override - public void drawRequestConfig(BuildPlan req, Eachable list){ - drawRequestConfigCenter(req, req.config, "unloader-center"); + public void drawRequestConfig(BuildPlan plan, Eachable list){ + drawRequestConfigCenter(plan, plan.config, "unloader-center"); } @Override diff --git a/core/src/mindustry/world/blocks/units/Reconstructor.java b/core/src/mindustry/world/blocks/units/Reconstructor.java index 22a6155998..c6e03236a8 100644 --- a/core/src/mindustry/world/blocks/units/Reconstructor.java +++ b/core/src/mindustry/world/blocks/units/Reconstructor.java @@ -32,11 +32,11 @@ public class Reconstructor extends UnitBlock{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(inRegion, req.drawx(), req.drawy(), req.rotation * 90); - Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90); - Draw.rect(topRegion, req.drawx(), req.drawy()); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(inRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); + Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); + Draw.rect(topRegion, plan.drawx(), plan.drawy()); } @Override diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index d0295fc36b..de257a693b 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -116,10 +116,10 @@ public class UnitFactory extends UnitBlock{ } @Override - public void drawRequestRegion(BuildPlan req, Eachable list){ - Draw.rect(region, req.drawx(), req.drawy()); - Draw.rect(outRegion, req.drawx(), req.drawy(), req.rotation * 90); - Draw.rect(topRegion, req.drawx(), req.drawy()); + public void drawRequestRegion(BuildPlan plan, Eachable list){ + Draw.rect(region, plan.drawx(), plan.drawy()); + Draw.rect(outRegion, plan.drawx(), plan.drawy(), plan.rotation * 90); + Draw.rect(topRegion, plan.drawx(), plan.drawy()); } public static class UnitPlan{ diff --git a/core/src/mindustry/world/draw/DrawBlock.java b/core/src/mindustry/world/draw/DrawBlock.java index 2961cab669..e769c1585f 100644 --- a/core/src/mindustry/world/draw/DrawBlock.java +++ b/core/src/mindustry/world/draw/DrawBlock.java @@ -2,7 +2,10 @@ package mindustry.world.draw; import arc.graphics.g2d.*; import arc.math.*; +import arc.util.*; +import mindustry.entities.units.*; import mindustry.world.*; +import mindustry.world.blocks.production.*; import mindustry.world.blocks.production.GenericCrafter.*; /** An implementation of custom rendering behavior for a crafter block. @@ -20,6 +23,11 @@ public class DrawBlock{ } + /** Draws the planned version of this block. */ + public void drawPlan(GenericCrafter crafter, BuildPlan plan, Eachable list){ + crafter.drawPlanBase(plan, list); + } + /** Load any relevant texture regions. */ public void load(Block block){ diff --git a/core/src/mindustry/world/draw/DrawHeatOutput.java b/core/src/mindustry/world/draw/DrawHeatOutput.java new file mode 100644 index 0000000000..1a8bf20e6d --- /dev/null +++ b/core/src/mindustry/world/draw/DrawHeatOutput.java @@ -0,0 +1,58 @@ +package mindustry.world.draw; + +import arc.*; +import arc.graphics.*; +import arc.graphics.g2d.*; +import arc.math.*; +import arc.util.*; +import mindustry.entities.units.*; +import mindustry.graphics.*; +import mindustry.world.*; +import mindustry.world.blocks.heat.*; +import mindustry.world.blocks.production.*; +import mindustry.world.blocks.production.GenericCrafter.*; + +public class DrawHeatOutput extends DrawBlock{ + public TextureRegion heat, glow, top1, top2; + + public Color heatColor = new Color(1f, 0.22f, 0.22f, 0.8f); + public float heatPulse = 0.3f, heatPulseScl = 10f, glowMult = 1.2f; + + @Override + public void draw(GenericCrafterBuild build){ + Draw.rect(build.block.region, build.x, build.y); + + Draw.rect(build.rotation > 1 ? top2 : top1, build.x, build.y, build.rotdeg()); + + if(build instanceof HeatBlock heater && heater.heat() > 0){ + Draw.z(Layer.blockAdditive); + Draw.blend(Blending.additive); + Draw.color(heatColor, heater.heatFrac() * (heatColor.a * (1f - heatPulse + Mathf.absin(heatPulseScl, heatPulse)))); + Draw.rect(heat, build.x, build.y, build.rotdeg()); + Draw.color(Draw.getColor().mul(glowMult)); + Draw.rect(glow, build.x, build.y); + Draw.blend(); + Draw.color(); + } + } + + @Override + public void drawPlan(GenericCrafter block, BuildPlan plan, Eachable list){ + Draw.rect(block.region, plan.drawx(), plan.drawy()); + Draw.rect(plan.rotation > 1 ? top2 : top1, plan.drawx(), plan.drawy(), plan.rotation * 90); + } + + @Override + public void load(Block block){ + heat = Core.atlas.find(block.name + "-heat"); + glow = Core.atlas.find(block.name + "-glow"); + top1 = Core.atlas.find(block.name + "-top1"); + top2 = Core.atlas.find(block.name + "-top2"); + } + + @Override + public TextureRegion[] icons(Block block){ + return new TextureRegion[]{block.region, top1}; + } + +} diff --git a/core/src/mindustry/world/meta/StatValues.java b/core/src/mindustry/world/meta/StatValues.java index ba07d8e19d..af071b3f06 100644 --- a/core/src/mindustry/world/meta/StatValues.java +++ b/core/src/mindustry/world/meta/StatValues.java @@ -61,6 +61,14 @@ public class StatValues{ }; } + public static StatValue liquids(float timePeriod, LiquidStack... stacks){ + return table -> { + for(var stack : stacks){ + table.add(new LiquidDisplay(stack.liquid, stack.amount * (60f / timePeriod), true)).padRight(5); + } + }; + } + public static StatValue items(ItemStack... stacks){ return items(true, stacks); }