diff --git a/assets/bundles/bundle-template b/assets/bundles/bundle-template deleted file mode 100644 index 03a1a4f..0000000 --- a/assets/bundles/bundle-template +++ /dev/null @@ -1,376 +0,0 @@ -# MAIN -mod.epsilon.name = -mod.epsilon.author = -mod.epsilon.description = -mod.epsilon.subtitle = - -# UI / MENU -epsilon-solar-system-database-title = -about.epsilon = - -settings.epsilon-title = - -settings.testing-mode = -settings.testing-mode.description = - -settings.hide-warn-dialog = -settings.hide-warn-dialog.description = - -settings.detailed-solar-system = -settings.detailed-solar-system.description = - -h = I'm going to h!! - -configureUI = Configure -passive = Passive -active = Active -select = Select - -objective.var = Location: {0} - -# World Processors Stuff -lcategory.epsilon-category = - -# These are testing dialoges for fun -warn-text1 = - -test1 = -test2 = -test3 = - -fun1 = -fun2 = -fun3 = - -preview1 = -preview2 = -preview3 = - -# Stats -stat.infection = -stat.efficiency-1 = -stat.efficiency-2 = -stat.efficiency-3 = - -# Star - Planets - Moons -planet.epsilon-epsilon.name = - -planet.epsilon-kallistea.name = -planet.epsilon-eryphos.name = -planet.epsilon-keraunos.name = - -planet.epsilon-faniera.name = -planet.epsilon-hyrokat.name = -planet.epsilon-losphyros.name = -planet.epsilon-enviros.name = - -# Custom Teams -team.ganieris.name = -team.incers.name = -team.fenspor.name = - -# Sectors -sector.epsilon-first-riddles.name = -sector.epsilon-first-riddles.description = - -sector.epsilon-abandoned-outpost.name = -sector.epsilon-abandoned-outpost.description = - -sector.epsilon-transmission.name = -sector.epsilon-transmission.description = - -# Objectives -void = -riddles-objective1 = -first-riddles-tut1 = - -# Sector Dialogues Region -riddles-1 = -riddles-2 = -riddles-3 = -riddles-4 = -riddles-5 = -riddles-6 = -riddles-7 = -riddles-8 = -riddles-9 = - -riddles-10 = -riddles-11 = -riddles-12 = - -riddles-13 = -riddles-14 = - -riddles-15 = - -riddles-16 = - -riddles-17 = -riddles-18 = - -riddles-19 = -riddles-20 = -riddles-21 = - -riddles-22 = -riddles-23 = - -riddles-extra1 = -riddles-extra2 = - -aband-outp-1 = -aband-outp-2 = -aband-outp-3 = -aband-outp-4 = - -aband-outp-objective-1 = - -aband-outp-5 = -aband-outp-6 = -aband-outp-7 = -aband-outp-8 = -aband-outp-9 = -aband-outp-10 = - -aband-outp-objective-2 = - -aband-outp-11 = -aband-outp-12 = -aband-outp-13 = -aband-outp-14 = - -aband-outp-objective-3 = - -aband-outp-15 = -aband-outp-16 = -aband-outp-17 = -aband-outp-18 = -aband-outp-19 = -aband-outp-20 = -aband-outp-21 = -aband-outp-22 = -aband-outp-23 = -aband-outp-24 = - -aband-outp-objective-4 = - -aband-outp-25 = - -aband-outp-objective-5 = - -aband-outp-26 = -newspaper-1 = - -aband-outp-27 = -aband-outp-28 = -aband-outp-29 = -aband-outp-30 = - -aband-outp-31 = -aband-outp-32 = -aband-outp-33 = -aband-outp-34 = - -aband-outp-objective-6 = - -aband-outp-35 = -aband-outp-36 = -aband-outp-37 = -aband-outp-38 = - -# Items -item.epsilon-item-gelionyte.name = -item.epsilon-item-gelionyte.description = - -item.epsilon-item-calcite.name = -item.epsilon-item-calcite.description = - -item.epsilon-item-quartz.name = -item.epsilon-item-quartz.description = - -item.epsilon-item-fylion.name = -item.epsilon-item-fylion.description = - -item.epsilon-item-red-sand.name = -item.epsilon-item-red-sand.description = - -item.epsilon-item-magnetite.name = -item.epsilon-item-magnetite.description = - -item.epsilon-item-tantalum.name = -item.epsilon-item-tantalum.description = - -item.epsilon-item-anveiur.name = -item.epsilon-item-anveiur.description = - -# Environment -# Purystal Biome -block.epsilon-purystal-floor.name = -block.epsilon-purystal-eroded-floor.name = -block.epsilon-purystal-light-floor.name = -block.epsilon-purystal-wall.name = -block.epsilon-purystal-wall-alt.name = -block.epsilon-purystal-boulder.name = - -block.epsilon-gelionytic-wall.name = -block.epsilon-gelionyte-chunk.name = -block.epsilon-gelionyte-cluster.name = - -# Eadstal Biome -block.epsilon-eadston-floor.name = -block.epsilon-eadston-light-floor.name = -block.epsilon-eadston-rough-floor.name = -block.epsilon-eadston-wall.name = -block.epsilon-eadston-wall-alt.name = -block.epsilon-eadston-boulder.name = -block.epsilon-eadstal-magnetite-wall.name = -block.epsilon-eadston-deanytic-wall.name = -block.epsilon-eadstal-deanyte-cluster.name = -block.epsilon-eadston-fenspor-wall.name = -block.epsilon-eadston-fenspor-boulder.name = - -block.epsilon-fenspor-reinforced-floor.name = -block.epsilon-fenspor-strands-floor.name = -block.epsilon-fenspor-vent.name = - -block.epsilon-buahan-bush.name = -block.epsilon-buahan-dead-bush.name = -block.epsilon-buahan-fenspor-dead-bush.name = -block.epsilon-buahan-tree.name = -block.epsilon-buahan-dead-tree.name = - -# Merapora Biome -block.epsilon-merapora-floor.name = -block.epsilon-merapora-fenspor-floor.name = -block.epsilon-merapora-wall.name = -block.epsilon-merapora-wall-alt.name = -block.epsilon-merapora-fenspor-wall.name = -block.epsilon-merapora-fenspor-wall-alt.name = -block.epsilon-merapora-vent.name = -block.epsilon-merapora-fenspor-vent.name = -block.epsilon-merapora-boulder.name = -block.epsilon-merapora-fenspor-boulder.name = -block.epsilon-merapora-bunker.name = -block.epsilon-merapora-menhir.name = - -# Thermalitic Biome -block.epsilon-thermalitic-floor.name = -block.epsilon-thermalitic-dark-floor.name = -block.epsilon-thermalitic-brown-floor.name = -block.epsilon-thermalitic-vulcan-floor.name = -block.epsilon-thermalitic-wall.name = -block.epsilon-thermalitic-wall-alt.name = -block.epsilon-thermalitic-dark-wall.name = -block.epsilon-thermalitic-brown-wall.name = -block.epsilon-thermalitic-brown-alt-wall.name = -block.epsilon-thermalitic-boulder.name = -block.epsilon-thermalitic-dark-boulder.name = -block.epsilon-thermalitic-brown-boulder.name = -block.epsilon-thermalitic-vulcan.name = -block.epsilon-thermalitic-vulcan-mini.name = - -#Facility Biome -block.epsilon-facility-tile-1.name = -block.epsilon-facility-tile-2.name = -block.epsilon-facility-tile-3.name = -block.epsilon-facility-tile-4.name = -block.epsilon-facility-walls.name = - -# Distribution - Blocks -block.epsilon-transmitting-bridge.name = -block.epsilon-transmitting-bridge.descritpion = - -block.epsilon-transmitting-junction.name = -block.epsilon-transmitting-junction.description = - -block.epsilon-transmitting-router.name = -block.epsilon-transmitting-router.description = - -block.epsilon-transmitting-sorter.name = -block.epsilon-transmitting-sorter.description = - -block.epsilon-transmitting-overflow-gate.name = -block.epsilon-transmitting-overflow-gate.description = - -block.epsilon-transmitting-underflow-gate.name = -block.epsilon-transmitting-underflow-gate.description = - -# Production - -# Drills -block.epsilon-pit-mining-rig.name = -block.epsilon-pit-mining-rig.description = - -block.epsilon-breaker-drill.name = -block.epsilon-breaker-drill.description = - -block.epsilon-thermal-dilatation-drill.name = -block.epsilon-thermal-dilatation-drill.description = - -block.epsilon-material-biter.name = -block.epsilon-material-biter.description = - -# Power -block.epsilon-quartz-generator.name = -block.epsilon-quartz-generator.description = - -block.epsilon-thermal-generator.name = -block.epsilon-thermal-generator.description = - -block.epsilon-quartz-node.name = -block.epsilon-quartz-node.description = - -block.epsilon-quartz-diode.name = -block.epsilon-quartz-diode.description = - -# Crafting -block.epsilon-fylion-smelter.name = -block.epsilon-fylion-smelter.description = - -block.epsilon-tantalum-synthesizer.name = -block.epsilon-tantalum-synthesizer.description = - -block.epsilon-anveiur-forge.name = -block.epsilon-anveiur-forge.description = - -block.epsilon-sand-filter.name = -block.epsilon-sand-filter.description = - -block.epsilon-ozone-chamber.name = -block.epsilon-ozone-chamber.description = - -# Turrets - WIP -block.epsilon-dispersive.name = -block.epsilon-dispersive.description = - -block.epsilon-distruptor.name = -block.epsilon-distruptor.description = - -block.epsilon-lancefield.name = -block.epsilon-lancefield.description = - -# Defense -block.epsilon-gelionyte-wall.name = -block.epsilon-gelionyte-wall.description = - -block.epsilon-quartz-wall.name = -block.epsilon-quartz-wall.description = - -block.epsilon-quartz-wall-large.name = -block.epsilon-quartz-wall-large.description = - -# Effect -block.epsilon-core-obscurity-broken.name = -block.epsilon-core-obscurity.name = -block.epsilon-core-obscurity.description = - -# Core Unit -unit.epsilon-penumbra-starter.name = - -# Units -unit.epsilon-sporacrawler.name = -unit.epsilon-sporacrawler.description = - -unit.epsilon-mycelist.name = -unit.epsilon-mycelist.description = \ No newline at end of file diff --git a/assets/bundles/bundle.properties b/assets/bundles/bundle.properties index 21f701d..f5b26ba 100644 --- a/assets/bundles/bundle.properties +++ b/assets/bundles/bundle.properties @@ -1,8 +1,8 @@ # MAIN mod.epsilon.name = Epsilon [alpha] -mod.epsilon.author = ItzJustaTeam\n\n[gray]Coders:[] ItzCraft, AnDashik, alnyle, Weersix\n\n[gray]Sprites:[] Nahan\n\n[gray]Music Composer:[] Ace\n\n[gray]Translators:[] Kevin Vilyan, ItzCraft +mod.epsilon.author = ItzJustaTeam\n\n[gray]Coders:[] ItzCraft, AnDashik, alnyle, Weersix\n\n[gray]Sprites:[] Nahan, ItzCraft\n\n[gray]Music Composer:[] Ace\n\n[gray]Translators:[] Kevin Vilyan, ItzCraft mod.epsilon.description = A mod which introduces actually unique [accent]Story Based Campaign[].\nMain goal of this mod is to show that lore based mods can be good too.\n\nWith story gameplay it introduces to you some new mechanics. -mod.epsilon.subtitle = V0.22 +mod.epsilon.subtitle = V0.284 # UI / MENU epsilon-solar-system-database-title = Epsilon Archive @@ -19,7 +19,7 @@ settings.hide-warn-dialog.description = Hides warning when game starts settings.detailed-solar-system = Detailed Solar System settings.detailed-solar-system.description = Makes Epsilon campaign solar system more detailed as adding asteroids, other planets. -h = I'm going to h!! +h = I'm going to h!! configureUI = Configure passive = Passive @@ -74,39 +74,47 @@ sector.epsilon-first-riddles.name = First Riddles sector.epsilon-first-riddles.description = A new journey. Remember, this mod is about story. So use your imagination at full!\nGoodluck! sector.epsilon-abandoned-outpost.name = Abandoned Outpost -sector.epsilon-abandoned-outpost.description = [gray]null +sector.epsilon-abandoned-outpost.description = You were exploring environment of this wonderful planet. But suddenly you found abandoded outpost or something of that. sector.epsilon-transmission.name = Transmission sector.epsilon-transmission.description = [gray]null +sector.epsilon-forbidden-friend.name = Forbidden friend +sector.epsilon-forbidden-friend.description = [gray]null + +sector.epsilon-deadly-peaks.name = Deadly peaks +sector.epsilon-deadly-peaks.description = [gray]null + # Objectives void = riddles-objective1 = [accent]Expand your production first-riddles-tut1 = You earn [accent]Gelionyte[] by breaking those [accent]Gelionyte chunks[]. # Sector Dialogues Region -riddles-1 = Ouch... -riddles-2 = This crash damaged the core badly... -riddles-3 = Where am I? I should analyze my modules... +riddles-1 = Ouch +riddles-2 = This crash damaged the core badly +riddles-3 = Where am I? I should analyze my modules riddles-4 = My memory module is critically damaged. -riddles-5 = That's why I don't remember most things... -riddles-6 = No panic. First, I need to repair my core. +riddles-5 = That's why I don't remember most things +riddles-6 = No panic. Firstly, I need to repair my core. riddles-7 = Otherwise, my existence will end here. riddles-8 = Wow, these crystals are shiny. riddles-9 = I should try to break them. -riddles-10 = The Survived parts of my module remembers... this is Gelionyte. +# deprecated line +# riddles-10 = The Survived parts of my module remembers... this is Gelionyte. + riddles-11 = Interesting. I think that's enough Gelionyte for now. riddles-12 = I need to explore the area around the core. -riddles-13 = Are those... plants? -riddles-14 = Wonderful... +riddles-13 = Are those. plants? +riddles-14 = Wonderful -riddles-15 = Ore? Cal... Calc... Calcite! +riddles-15 = Ore? Cal.. Calc.. Calcite! riddles-16 = Well, let's systematize everything. -riddles-17 = First of all, is there life?.. +riddles-17 = First of all, is there life? riddles-18 = Or at least an echo of life. riddles-19 = Next, most of my memory module is broken. @@ -117,7 +125,8 @@ riddles-22 = Okay, it's repaired now. riddles-23 = Time to continue exploring. riddles-extra1 = No, I need to fix my core first. -riddles-extra2 = I don't feel good near those plants... +riddles-extra2 = I don't feel good near those plants + aband-outp-1 = It's been several days since I saw those plants. aband-outp-2 = Does this planet have intelligent life? @@ -127,7 +136,7 @@ aband-outp-4 = I should find those plants again. aband-outp-objective-1 = [accent]Explore the area around core[] aband-outp-5 = Well here are they. -aband-outp-6 = Time to try to analyze them. +aband-outp-6 = Time to analyze them. aband-outp-7 = But I don't have enough of equipment to analyze them properly.. aband-outp-8 = So I can't tell if there's any intelligent life. aband-outp-9 = Wait, is that ore? @@ -137,46 +146,48 @@ aband-outp-objective-2 = [accent]Get 250 quartz into the core[] aband-outp-11 = Okay that's enough quartz for now I think. aband-outp-12 = Later I'll think what I can do with it. -aband-outp-13 = For now, I should explore the area more. +aband-outp-13 = For now I should explore the area more. aband-outp-14 = What is THAT!? aband-outp-objective-3 = [accent]Destroy unforeseen creature[] -aband-outp-15 = I.. I can't believe what have I did right now.. -aband-outp-16 = Did I just.. killed another lifeform? +aband-outp-15 = I can't believe what I have done. +aband-outp-16 = Did I just have killed another lifeform? aband-outp-17 = But it tried to kill me too. -aband-outp-18 = I need to move farther. I don't have time to stay here and regret -aband-outp-19 = What is that? Structures? -aband-outp-20 = It's looks like an abandoned outpost or something like that.. -aband-outp-21 = But.. What happened here? Why it looks like that? +aband-outp-18 = I need to move farther. I've got no time to stay here +aband-outp-19 = What is that? Buildings? +aband-outp-20 = It's looks like an abandoned outpost or something like that +aband-outp-21 = But what happened here? Why it looks like that? aband-outp-22 = Is some kind of catastrophe happened here? -aband-outp-23 = Everything looks ruined.. -aband-outp-24 = I need to try find anything here +aband-outp-23 = Everything looks ruined +aband-outp-24 = I should try to find anything useful here aband-outp-objective-4 = [accent]Find anything useful[] -aband-outp-25 = Is that a turret? Looks like that.. +aband-outp-25 = Is that a turret? aband-outp-objective-5 = [accent]Look what's written on it[] +aband-outp-objective-51 = To view it, click on it and then click the [accent]"eye" button.[] -aband-outp-26 = Newspaper? let me look what is written here.. -newspaper-1 = Last news: New Incers organization made an experiments with a newly invented life form, which resulted positive results. But some information was classified. If you want to participate in those experiments, notify us. +aband-outp-26 = Newspaper? let me look what is written here +newspaper-1 = Last news: New Incers organization made an experiment with a newly invented life form, \nwhich resulted positive results. But some information was classified. \nIf you want to participate in those experiments, notify us. +incers-newspaper = Newspaper +block.epsilon-newspaper1 = Newspaper aband-outp-27 = New Incers organization? New lifeform? -aband-outp-28 = So there is intelligent life! -aband-outp-29 = Or there was.. Still don't know.. +aband-outp-28 = So intelligent life does exist here. +aband-outp-29 = Or there was.. aband-outp-30 = I don't think I can find anything more useful here. I should go back to my core. aband-outp-31 = I still can't imagine what should happen to destroy an entire outpost. aband-outp-32 = something like a war? Not sure. -aband-outp-33 = No, not they again.. -aband-outp-34 = NO! oh no, that's so bad.. +aband-outp-33 = No not this again aband-outp-objective-6 = [accent]Save yourself (tip: run)[] -aband-outp-35 = that was so close.. +aband-outp-35 = that was so close aband-outp-36 = But I'm alive. with broken weapon. nice -aband-outp-37 = And the worst thing, is that I don't know how I should repair it.. +aband-outp-37 = And the worst thing, is that I don't know how I should repair it aband-outp-38 = I need to rest # Items @@ -204,6 +215,9 @@ item.epsilon-item-tantalum.description = Mineral, made by hard mixture. Have a l item.epsilon-item-anveiur.name = Anveiur item.epsilon-item-anveiur.description = Another mixture, made out of Ozone and Fylion. Flammable and explosable. Hard to use. +liquid.epsilon-liquid-spoiled-water.name = Spoiled Water +liquid.epsilon-liquid-spoiled-water.description = bad water LMAO LLLLL WATER + # Environment # Purystal Biome block.epsilon-purystal-floor.name = Purystal Floor @@ -277,6 +291,10 @@ block.epsilon-facility-tile-3.name = Facility Tile 3 block.epsilon-facility-tile-4.name = Facility Tile 4 block.epsilon-facility-walls.name = Facility Wall +# Lore +block.epsilon-radio-tower.name = Radio Tower +block.epsilon-radio-tower.description = Transmits electric-magnetic wave (aka radio signal) between long distances. + # Distribution Blocks block.epsilon-transmitting-bridge.name = Transmitting Bridge block.epsilon-transmitting-bridge.description = Moves items forward over of buildings. @@ -342,7 +360,7 @@ block.epsilon-ozone-chamber.description = null # Turrets - WIP block.epsilon-dispersive.name = Dispersive -block.epsilon-dispersive.description = null +block.epsilon-dispersive.description = A quartz-charged turret that fires a layer of bullets that disintegrate in adjacent directions along their flight path. block.epsilon-distruptor.name = Distruptor block.epsilon-distruptor.description = null @@ -363,7 +381,8 @@ block.epsilon-quartz-wall-large.description = Quartz charged large wall with swi # Effect block.epsilon-core-obscurity-broken.name = Core Obscurity Broken block.epsilon-core-obscurity.name = Core: Obscurity -block.epsilon-core-obscurity.description = First core - First adventures. +block.epsilon-core-obscurity.description = First core - First adventures. +block.epsilon-core-obscurityb.name = Core: Obscurity # Core Unit unit.epsilon-penumbra-starter.name = Penumbra @@ -373,4 +392,4 @@ unit.epsilon-sporacrawler.name = Sporacrawler unit.epsilon-sporacrawler.description = Creature made from Fenspor. Have strong teeth which can damage your infrastructure. unit.epsilon-mycelist.name = Mycelist -unit.epsilon-mycelist.description = Another type of Fenspor creatures. Slower than sporacrawler, but along with strong teeth it has a long-range weapon. \ No newline at end of file +unit.epsilon-mycelist.description = Another type of Fenspor creatures. Slower than sporacrawler, but along with strong teeth it has a long-range weapon. diff --git a/assets/bundles/bundle_ru.properties b/assets/bundles/bundle_ru.properties index b1e323d..7d8823e 100644 --- a/assets/bundles/bundle_ru.properties +++ b/assets/bundles/bundle_ru.properties @@ -1,8 +1,8 @@ # MAIN mod.epsilon.name = Эпсилон -mod.epsilon.author = ItzJustaTeam\n\n[gray]Кодеры:[] ItzCraft, AnDashik, alnyle\n\n[gray]Спрайтеры:[] Nahan\n\n[gray]Музыкальный Композитор:[] Ace\n\n[gray]Переводчики:[] Kevin Vilyan, ItzCraft +mod.epsilon.author = ItzJustaTeam\n\n[gray]Кодеры:[] ItzCraft, AnDashik, alnyle\n\n[gray]Спрайтеры:[] Nahan, ItzCraft\n\n[gray]Музыкальный Композитор:[] Ace\n\n[gray]Переводчики:[] Kevin Vilyan, ItzCraft mod.epsilon.description = Мод, который представляет действительно уникальную [accent]Сюжетную кампанию[].\nГлавная цель этого мода — показать, что моды, основанные на лоре, тоже могут быть хорошими.\n\nБлагодаря сюжетному игровому процессу он знакомит вас с некоторыми новыми механиками. -mod.epsilon.subtitle = V0.22 +mod.epsilon.subtitle = V0.27 # UI / MENU epsilon-solar-system-database-title = Архив Эпсилона @@ -74,7 +74,7 @@ sector.epsilon-first-riddles.name = Первые Загадки sector.epsilon-first-riddles.description = Новое путешествие. Помните, этот мод — о сюжете. Так что дайте волю своему воображению! \nУдачи! sector.epsilon-abandoned-outpost.name = Заброшенный Форпост -sector.epsilon-abandoned-outpost.description = null +sector.epsilon-abandoned-outpost.description = Вы исследовали местность этой прекрасной планеты. Но внезапно вы наткнулись на заброшенный фортпост или что-то на подобии. sector.epsilon-transmission.name = Передача sector.epsilon-transmission.description = null @@ -84,24 +84,24 @@ void = riddles-objective1 = Расширьте свое производство # Objectives Dialogues Region -riddles-1 = Ой... -riddles-2 = Авария сильно повредила ядро... -riddles-3 = Где я? Мне нужно проанализировать свои модули... +riddles-1 = Ой. +riddles-2 = Авария сильно повредила ядро. +riddles-3 = Где я? Мне нужно проанализировать свои модули. riddles-4 = Мой модуль памяти серьезно поврежден. -riddles-5 = Вот почему я не помню большую часть вещей... +riddles-5 = Вот почему я не помню большую часть вещей. riddles-6 = Без паники. Сперва мне нужно починить ядро. riddles-7 = В противном случае моя "жизнь" закончится здесь. riddles-8 = Ухты, эти кристалы блестят. riddles-9 = Я должен попробовать сломать их. -riddles-10 = Уцелевшая часть моего модуля помнит... это Гелионит. +riddles-10 = Уцелевшая часть моего модуля помнит это Гелионит. riddles-11 = Интересно. Думаю, пока что этого Гелионита хватит. riddles-12 = Мне нужно исследовать территорию вокруг ядра. -riddles-13 = Это... растения? -riddles-14 = Чудесно... +riddles-13 = Это растения? +riddles-14 = Чудесно. -riddles-15 = Руда? Ка-... Кальц-... Кальцит! +riddles-15 = Руда? Ка-.. Кальц-.. Кальцит! riddles-16 = Что ж, давайте систематизируем всё. @@ -109,14 +109,14 @@ riddles-17 = Для начала, есть ли здесь жизнь? riddles-18 = Или хотябы её отголосок. riddles-19 = Далее, большая часть моего модуля память повреждена. -riddles-20 = И конечно же, ядро также повреждено... +riddles-20 = И конечно же, ядро также повреждено. riddles-21 = Время починить его. riddles-22 = Хорошо, теперь ядро в порядке. riddles-23 = Время продолжать изучение. riddles-extra1 = Нет, сперва мне нужно починить ядро. -riddles-extra2 = Мне не нравится возле этих растений... +riddles-extra2 = Мне не нравится возле этих растений. aband-outp-1 = Прошло несколько дней с тех пор, как я видел эти растения. aband-outp-2 = Есть ли на этой планете разумная жизнь? @@ -127,9 +127,9 @@ aband-outp-objective-1 = [accent]Исследуйте окрестности в aband-outp-5 = Ну вот и они. aband-outp-6 = Время, чтобы попробовать проанализировать их. -aband-outp-7 = Но у меня недостаточно оборудования, чтобы проанализировать их должным образом... +aband-outp-7 = Но у меня недостаточно оборудования, чтобы проанализировать их должным образом. aband-outp-8 = Так что я не могу сказать, есть ли здесь разумная жизнь. -aband-outp-9 = Подождите, это руда? +aband-outp-9 = Стоп, это руда? aband-outp-10 = Определённо руда. Выглядит похоже на Гелионит. aband-outp-objective-2 = [accent]Доставьте 250 Кварца в ядро[] @@ -141,42 +141,44 @@ aband-outp-14 = Что ЭТО ТАКОЕ!? aband-outp-objective-3 = [accent]Уничтожить непредвиденное существо[] -aband-outp-15 = I.. I can't believe what have i did right now.. -aband-outp-16 = I meet an intelligent creature. And then i have killed it.. -aband-outp-17 = but it tried to kill me too. -aband-outp-18 = I need to move farther. I don't have time to stay here and regret -aband-outp-19 = What is that? Structures? -aband-outp-20 = It's looks like an abandoned outpost or something like that.. -aband-outp-21 = But.. What happened here? Why it looks like that? -aband-outp-22 = Is some kind of catastrophe happened here? -aband-outp-23 = Everything looks ruined.. -aband-outp-24 = I need to try find anything here +aband-outp-15 = Я не могу поверить в то, что я сделал.. +aband-outp-16 = Я только что уничтожил другое существо? +aband-outp-17 = Но оно попыталось навредить мне тоже. +aband-outp-18 = Мне нужно двигаться дальше, у меня нет времени находиться здесь. +aband-outp-19 = Что это? Здания? +aband-outp-20 = Это выглядит как заброшенный фортпост или типа того. +aband-outp-21 = Но, что здесь произошло? Почему все в разрухе? +aband-outp-22 = Здесь произошла какая-то катастрофа? +aband-outp-23 = Все в руинах +aband-outp-24 = Нужно попробывать найти здесь что-либо. -aband-outp-objective-4 = [accent]Find anything useful[] +aband-outp-objective-4 = [accent]Найдите что-нибудь полезное[] -aband-outp-25 = Is that a turret? Looks like that.. +aband-outp-25 = Это что, турель? -aband-outp-objective-5 = [accent]Look what's written on it[] +aband-outp-objective-5 = [accent]Взгляните что там написано[] +aband-outp-objective-51 = Чтобы просмотреть записку, нажмите на нее и на кнопку [accent]"ока".[] -aband-outp-26 = Newspaper? lemme look what is written here.. -newspaper-1 = Last news: New Incers organization made an experiments with a newly invented life form, which resulted positive results. But some information was classified. If you want to participate in those experiments, notify us. +aband-outp-26 = Новости? Надо взглянуть что здесь написано. +newspaper-1 = Последние события: Новая организация Инцеров провела эксперемент с ново-созданной формой жизни, \nчто выдали позитивные результаты. Но некоторая часть информации была засекречна. \nЕсли вы хотите принять участие в данных эксперементах, поставьте нас в известность. +incers-newspaper = Новости +block.epsilon-newspaper1 = Новостная статья -aband-outp-27 = New Incers organization? New lifeform? -aband-outp-28 = So there is intelligent life! -aband-outp-29 = Or there was.. Still can't know.. -aband-outp-30 = I don't think I can find anything more useful here. I should go back to my core. +aband-outp-27 = Новая организация Инцеров? Новая форма жизни? +aband-outp-28 = Тут есть разумная жизнь! +aband-outp-29 = Или, по крайней мере, была. +aband-outp-30 = Я не думаю, что смогу найти здесь еще что-либо. Стоит вернутся к ядру. -aband-outp-31 = I still can't imagine what should happen to destroy an entire outpost. -aband-outp-32 = something like a war? Not sure. -aband-outp-33 = No, not they again.. -aband-outp-34 = NO! oh no, that's so bad.. +aband-outp-31 = Все еще не могу представить что могло уничтожить целый фортпост. +aband-outp-32 = Что-то вроде войны? Не думаю. +aband-outp-33 = О нет, только не они вновь -aband-outp-objective-6 = [accent]Save yourself (tip: run)[] +aband-outp-objective-6 = [accent]Спаситесь (подсказка: бежите)[] -aband-outp-35 = that was so close.. -aband-outp-36 = But I'm alive. with broken weapon. nice -aband-outp-37 = And the worst thing, is that I don't know how I should repair it.. -aband-outp-38 = I need to rest +aband-outp-35 = Это было близко.. +aband-outp-36 = Но я жив, с поврежденным оружием. Круто. +aband-outp-37 = И худшая часть, я не имею понятия как его починить. +aband-outp-38 = Мне нужно передохнуть. # Items item.epsilon-item-gelionyte.name = Гелионит @@ -343,7 +345,7 @@ block.epsilon-ozone-chamber.description = # Turrets - WIP block.epsilon-dispersive.name = Dispersive -block.epsilon-dispersive.description = +block.epsilon-dispersive.description = Кварцово-заряженная турель, которая стреляет слоем пуль которые распадаються в соседние стороны по пути полёта. block.epsilon-distruptor.name = Distruptor block.epsilon-distruptor.description = @@ -374,4 +376,4 @@ unit.epsilon-sporacrawler.name = Споровый ползун unit.epsilon-sporacrawler.description = Существо, сделанное из Фенспора. Имеет крепкие зубы, которые могут повредить инфраструктуру. unit.epsilon-mycelist.name = Мицелист -unit.epsilon-mycelist.description = Другой вид фенспорских существ. Медленнее спорового ползуна, но вместе с крепкими зубами обладает дальнобойным оружием. \ No newline at end of file +unit.epsilon-mycelist.description = Другой вид фенспорских существ. Медленнее спорового ползуна, но вместе с крепкими зубами обладает дальнобойным оружием. diff --git a/assets/maps/abandoned-outpost.msav b/assets/maps/abandoned-outpost.msav new file mode 100644 index 0000000..8236e33 Binary files /dev/null and b/assets/maps/abandoned-outpost.msav differ diff --git a/assets/maps/first-riddles.msav b/assets/maps/first-riddles.msav index 0208fea..0843f66 100644 Binary files a/assets/maps/first-riddles.msav and b/assets/maps/first-riddles.msav differ diff --git a/assets/schematics/core-obscurity.msch b/assets/schematics/core-obscurity.msch new file mode 100644 index 0000000..7dc0d11 --- /dev/null +++ b/assets/schematics/core-obscurity.msch @@ -0,0 +1,2 @@ +mschxA + FߒD Y6cjDDw4tv'Ep!.hF%RhEa}6NY;/wԯz \ No newline at end of file diff --git a/assets/shaders/circle-mesh.frag b/assets/shaders/circle-mesh.frag new file mode 100644 index 0000000..452e73c --- /dev/null +++ b/assets/shaders/circle-mesh.frag @@ -0,0 +1,58 @@ +varying vec2 v_texCoords; +varying vec4 v_col; +varying vec3 v_position; + +uniform sampler2D u_texture; +uniform vec4 u_color; + +uniform vec4 u_sun_info; +uniform vec4 u_planet_info; + +void main(){ + + vec4 color = texture2D(u_texture, v_texCoords); + + vec3 sunPos = u_sun_info.xyz; + vec3 planetPos = u_planet_info.xyz; + float planetRadius = u_planet_info.w; + + vec3 point = v_position; + + vec3 rayDir = normalize(sunPos - point); + float sunDistance = length(sunPos - point); + + vec3 oc = point - planetPos; + + float b = dot(oc, rayDir); + float c = dot(oc, oc) - planetRadius * planetRadius; + + float discriminant = b * b - c; + + float shadow = 1.0; + + if(discriminant > 0.0){ + + float root = sqrt(discriminant); + + float t1 = -b - root; + float t2 = -b + root; + + if( + (t1 > 0.0 && t1 < sunDistance) || + (t2 > 0.0 && t2 < sunDistance) + ){ + shadow = 0.05; + } + + float penumbra = + smoothstep( + planetRadius * 0.9, + planetRadius * 1.1, + length(cross(rayDir, planetPos - point)) + ); + + shadow = mix(shadow, 1.0, penumbra); + } + + gl_FragColor = color * u_color * v_col * vec4(vec3(shadow), 1.0); +} \ No newline at end of file diff --git a/assets/shaders/circle-mesh.vert b/assets/shaders/circle-mesh.vert new file mode 100644 index 0000000..2c50662 --- /dev/null +++ b/assets/shaders/circle-mesh.vert @@ -0,0 +1,43 @@ +attribute vec4 a_position; +attribute vec3 a_normal; +attribute vec4 a_color; +attribute vec2 a_texCoord0; + +uniform mat4 u_proj; +uniform mat4 u_trans; +uniform vec3 u_lightdir; +uniform vec3 u_camdir; +uniform vec3 u_campos; +uniform vec3 u_ambientColor; + +uniform vec4 u_sun_info; +uniform vec4 u_planet_info; + +uniform float u_alpha; + +varying vec4 v_col; +varying vec3 v_position; +varying vec2 v_texCoords; + +const vec3 diffuse = vec3(0.01); + +void main(){ + v_texCoords = a_texCoord0; + vec3 specular = vec3(0.0, 0.0, 0.0); + + //TODO this calculation is probably wrong + vec3 lightReflect = normalize(reflect(a_normal, u_lightdir)); + vec3 my_position=(u_trans * a_position).xyz; + v_position=my_position; + + vec3 vertexEye = normalize(u_campos - my_position); + float specularFactor = dot(vertexEye, lightReflect); + if (specularFactor > 0.0){ + specular = vec3(1.0 * pow(specularFactor, 40.0)) * (1.0-a_color.a); + } + + vec3 norc = (u_ambientColor + specular) * (diffuse + vec3(clamp((dot(a_normal, u_lightdir) + 1.0) / 2.0, 0.0, 1.0))); + + v_col=vec4(u_alpha); + gl_Position = u_proj * u_trans * vec4(a_position.xyzw); +} \ No newline at end of file diff --git a/assets/shaders/planet.frag b/assets/shaders/planet.frag new file mode 100644 index 0000000..373c22b --- /dev/null +++ b/assets/shaders/planet.frag @@ -0,0 +1,5 @@ +varying vec4 v_col; + +void main(){ + gl_FragColor = v_col; +} \ No newline at end of file diff --git a/assets/shaders/planet.vert b/assets/shaders/planet.vert new file mode 100644 index 0000000..13e5328 --- /dev/null +++ b/assets/shaders/planet.vert @@ -0,0 +1,40 @@ +attribute vec4 a_position; +attribute vec3 a_normal; +attribute vec4 a_color; +attribute vec4 a_emissive; + +uniform mat4 u_proj; +uniform mat4 u_trans; +uniform mat4 u_normalMat; +uniform vec3 u_lightdir; +uniform vec3 u_camdir; +uniform vec3 u_campos; +uniform vec3 u_ambientColor; +uniform float u_emissive; + +varying vec4 v_col; + +const vec3 diffuse = vec3(0.01); + +void main(){ + vec3 specular = vec3(0.0, 0.0, 0.0); + vec3 normal = normalize((u_normalMat * vec4(a_normal, 0.0)).xyz); + vec3 lightDir = normalize(u_lightdir); + + vec3 lightReflect = normalize(reflect(-lightDir, normal)); + vec3 vertexEye = normalize(u_campos - (u_trans * a_position).xyz); + + float albedo = 1.0 - a_color.a; + + float specularFactor = dot(vertexEye, lightReflect); + if(specularFactor > 0.0){ + specular = vec3(1.0 * pow(specularFactor, 40.0)) * albedo; + } + + vec3 norc = (u_ambientColor + specular) * (diffuse + vec3(clamp((dot(normal, lightDir) + 1.0) / 2.0, 0.0, 1.0))); + + float emissive = a_emissive.a * u_emissive * min(pow(max(0.0, (1.0 - norc.r) * 1.2), 3.0), 1.1); + + v_col = vec4(mix(a_color.rgb, a_emissive.rgb, emissive), 1.0) * vec4(mix(norc, vec3(1.0), emissive), 1.0); + gl_Position = u_proj * u_trans * a_position; +} \ No newline at end of file diff --git a/assets/sounds/purystal-walk.ogg b/assets/sounds/purystal-walk.ogg new file mode 100644 index 0000000..a866567 Binary files /dev/null and b/assets/sounds/purystal-walk.ogg differ diff --git a/assets/sprites/blocks/defense/quartz-wall-large.png b/assets/sprites/blocks/defense/quartz-wall-large.png index 7b914dc..7612bbc 100644 Binary files a/assets/sprites/blocks/defense/quartz-wall-large.png and b/assets/sprites/blocks/defense/quartz-wall-large.png differ diff --git a/assets/sprites/blocks/defense/quartz-wall.png b/assets/sprites/blocks/defense/quartz-wall.png index 12343ee..484e940 100644 Binary files a/assets/sprites/blocks/defense/quartz-wall.png and b/assets/sprites/blocks/defense/quartz-wall.png differ diff --git a/assets/sprites/blocks/distribution/transmitting-bridge-arrow.png b/assets/sprites/blocks/distribution/transmitting-bridge-arrow.png index ab98945..cb8fa99 100644 Binary files a/assets/sprites/blocks/distribution/transmitting-bridge-arrow.png and b/assets/sprites/blocks/distribution/transmitting-bridge-arrow.png differ diff --git a/assets/sprites/blocks/distribution/transmitting-bridge-bridge.png b/assets/sprites/blocks/distribution/transmitting-bridge-bridge.png index 31fdc5e..aeebd98 100644 Binary files a/assets/sprites/blocks/distribution/transmitting-bridge-bridge.png and b/assets/sprites/blocks/distribution/transmitting-bridge-bridge.png differ diff --git a/assets/sprites/blocks/distribution/transmitting-bridge-dir.png b/assets/sprites/blocks/distribution/transmitting-bridge-dir.png index 8fd9de3..13b2781 100644 Binary files a/assets/sprites/blocks/distribution/transmitting-bridge-dir.png and b/assets/sprites/blocks/distribution/transmitting-bridge-dir.png differ diff --git a/assets/sprites/blocks/distribution/transmitting-bridge.png b/assets/sprites/blocks/distribution/transmitting-bridge.png index 7374040..5a935aa 100644 Binary files a/assets/sprites/blocks/distribution/transmitting-bridge.png and b/assets/sprites/blocks/distribution/transmitting-bridge.png differ diff --git a/assets/sprites/blocks/distribution/transmitting-junction.png b/assets/sprites/blocks/distribution/transmitting-junction.png index 1ae1aae..56372b6 100644 Binary files a/assets/sprites/blocks/distribution/transmitting-junction.png and b/assets/sprites/blocks/distribution/transmitting-junction.png differ diff --git a/assets/sprites/blocks/distribution/transmitting-overflow-gate.png b/assets/sprites/blocks/distribution/transmitting-overflow-gate.png index 46e3ebc..77f9984 100644 Binary files a/assets/sprites/blocks/distribution/transmitting-overflow-gate.png and b/assets/sprites/blocks/distribution/transmitting-overflow-gate.png differ diff --git a/assets/sprites/blocks/distribution/transmitting-router.png b/assets/sprites/blocks/distribution/transmitting-router.png index a080a51..a217cf9 100644 Binary files a/assets/sprites/blocks/distribution/transmitting-router.png and b/assets/sprites/blocks/distribution/transmitting-router.png differ diff --git a/assets/sprites/blocks/distribution/transmitting-sorter.png b/assets/sprites/blocks/distribution/transmitting-sorter.png index 205567a..8811049 100644 Binary files a/assets/sprites/blocks/distribution/transmitting-sorter.png and b/assets/sprites/blocks/distribution/transmitting-sorter.png differ diff --git a/assets/sprites/blocks/distribution/transmitting-underflow-gate.png b/assets/sprites/blocks/distribution/transmitting-underflow-gate.png index c8afd36..d983594 100644 Binary files a/assets/sprites/blocks/distribution/transmitting-underflow-gate.png and b/assets/sprites/blocks/distribution/transmitting-underflow-gate.png differ diff --git a/assets/sprites/blocks/drills/breaker-drill-bottom.png b/assets/sprites/blocks/drills/breaker-drill-bottom.png new file mode 100644 index 0000000..2fa2f44 Binary files /dev/null and b/assets/sprites/blocks/drills/breaker-drill-bottom.png differ diff --git a/assets/sprites/blocks/drills/breaker-drill-item.png b/assets/sprites/blocks/drills/breaker-drill-item.png index f7b9401..fc49b70 100644 Binary files a/assets/sprites/blocks/drills/breaker-drill-item.png and b/assets/sprites/blocks/drills/breaker-drill-item.png differ diff --git a/assets/sprites/blocks/drills/breaker-drill-preview.png b/assets/sprites/blocks/drills/breaker-drill-preview.png new file mode 100644 index 0000000..1ef689b Binary files /dev/null and b/assets/sprites/blocks/drills/breaker-drill-preview.png differ diff --git a/assets/sprites/blocks/drills/breaker-drill-rotator.png b/assets/sprites/blocks/drills/breaker-drill-rotator.png index 9ae0fc4..51e16cb 100644 Binary files a/assets/sprites/blocks/drills/breaker-drill-rotator.png and b/assets/sprites/blocks/drills/breaker-drill-rotator.png differ diff --git a/assets/sprites/blocks/drills/breaker-drill-top.png b/assets/sprites/blocks/drills/breaker-drill-top.png index ecb6786..b4c9c6a 100644 Binary files a/assets/sprites/blocks/drills/breaker-drill-top.png and b/assets/sprites/blocks/drills/breaker-drill-top.png differ diff --git a/assets/sprites/blocks/drills/breaker-drill.png b/assets/sprites/blocks/drills/breaker-drill.png index 7e6ec51..de2259d 100644 Binary files a/assets/sprites/blocks/drills/breaker-drill.png and b/assets/sprites/blocks/drills/breaker-drill.png differ diff --git a/assets/sprites/blocks/drills/pit-mining-rig-full.png b/assets/sprites/blocks/drills/pit-mining-rig-full.png new file mode 100644 index 0000000..294d832 Binary files /dev/null and b/assets/sprites/blocks/drills/pit-mining-rig-full.png differ diff --git a/assets/sprites/blocks/drills/pit-mining-rig-item.png b/assets/sprites/blocks/drills/pit-mining-rig-item.png index c32934c..24bb7a8 100644 Binary files a/assets/sprites/blocks/drills/pit-mining-rig-item.png and b/assets/sprites/blocks/drills/pit-mining-rig-item.png differ diff --git a/assets/sprites/blocks/drills/pit-mining-rig-rotator.png b/assets/sprites/blocks/drills/pit-mining-rig-rotator.png index fe9d54f..6271e4b 100644 Binary files a/assets/sprites/blocks/drills/pit-mining-rig-rotator.png and b/assets/sprites/blocks/drills/pit-mining-rig-rotator.png differ diff --git a/assets/sprites/blocks/drills/pit-mining-rig-top.png b/assets/sprites/blocks/drills/pit-mining-rig-top.png index c09fbd1..d4d263e 100644 Binary files a/assets/sprites/blocks/drills/pit-mining-rig-top.png and b/assets/sprites/blocks/drills/pit-mining-rig-top.png differ diff --git a/assets/sprites/blocks/drills/pit-mining-rig.png b/assets/sprites/blocks/drills/pit-mining-rig.png index 67b2901..f59de7b 100644 Binary files a/assets/sprites/blocks/drills/pit-mining-rig.png and b/assets/sprites/blocks/drills/pit-mining-rig.png differ diff --git a/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-1-atlas.png b/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-1-atlas.png deleted file mode 100644 index 962fb01..0000000 Binary files a/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-1-atlas.png and /dev/null differ diff --git a/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-2-atlas.png b/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-2-atlas.png deleted file mode 100644 index cffa902..0000000 Binary files a/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-2-atlas.png and /dev/null differ diff --git a/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-2.png b/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-2.png deleted file mode 100644 index bab0011..0000000 Binary files a/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-2.png and /dev/null differ diff --git a/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-3-atlas.png b/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-3-atlas.png deleted file mode 100644 index beead7b..0000000 Binary files a/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-3-atlas.png and /dev/null differ diff --git a/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-3.png b/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-3.png deleted file mode 100644 index f8faa08..0000000 Binary files a/assets/sprites/blocks/environment/Kallistea/broken-facility/facility-tile-3.png and /dev/null differ diff --git a/assets/sprites/blocks/environment/Kallistea/misc/core-obscurity-broken-bits1.png b/assets/sprites/blocks/environment/Kallistea/misc/core-obscurity-broken-bits1.png index deb5e3a..220101b 100644 Binary files a/assets/sprites/blocks/environment/Kallistea/misc/core-obscurity-broken-bits1.png and b/assets/sprites/blocks/environment/Kallistea/misc/core-obscurity-broken-bits1.png differ diff --git a/assets/sprites/blocks/environment/Kallistea/misc/core-obscurity-broken-bits2.png b/assets/sprites/blocks/environment/Kallistea/misc/core-obscurity-broken-bits2.png index 507f17a..2e82c49 100644 Binary files a/assets/sprites/blocks/environment/Kallistea/misc/core-obscurity-broken-bits2.png and b/assets/sprites/blocks/environment/Kallistea/misc/core-obscurity-broken-bits2.png differ diff --git a/assets/sprites/blocks/lore/radio-tower.png b/assets/sprites/blocks/lore/radio-tower.png new file mode 100644 index 0000000..7ab7f65 Binary files /dev/null and b/assets/sprites/blocks/lore/radio-tower.png differ diff --git a/assets/sprites/blocks/power/quartz-generator-bottom.png b/assets/sprites/blocks/power/quartz-generator-bottom.png index 32843ee..a00a7b4 100644 Binary files a/assets/sprites/blocks/power/quartz-generator-bottom.png and b/assets/sprites/blocks/power/quartz-generator-bottom.png differ diff --git a/assets/sprites/blocks/power/quartz-generator-full.png b/assets/sprites/blocks/power/quartz-generator-full.png index cd22bf0..6eb0533 100644 Binary files a/assets/sprites/blocks/power/quartz-generator-full.png and b/assets/sprites/blocks/power/quartz-generator-full.png differ diff --git a/assets/sprites/blocks/power/quartz-generator-glow.png b/assets/sprites/blocks/power/quartz-generator-glow.png new file mode 100644 index 0000000..224b1f5 Binary files /dev/null and b/assets/sprites/blocks/power/quartz-generator-glow.png differ diff --git a/assets/sprites/blocks/power/quartz-generator-rotator.png b/assets/sprites/blocks/power/quartz-generator-rotator.png index 7022705..846ed2c 100644 Binary files a/assets/sprites/blocks/power/quartz-generator-rotator.png and b/assets/sprites/blocks/power/quartz-generator-rotator.png differ diff --git a/assets/sprites/blocks/power/quartz-generator.png b/assets/sprites/blocks/power/quartz-generator.png index 5e20276..ab4efed 100644 Binary files a/assets/sprites/blocks/power/quartz-generator.png and b/assets/sprites/blocks/power/quartz-generator.png differ diff --git a/assets/sprites/blocks/production/fylion-smelter-bottom.png b/assets/sprites/blocks/production/fylion-smelter-bottom.png index 4d851fa..4a157bd 100644 Binary files a/assets/sprites/blocks/production/fylion-smelter-bottom.png and b/assets/sprites/blocks/production/fylion-smelter-bottom.png differ diff --git a/assets/sprites/blocks/production/fylion-smelter-glow.png b/assets/sprites/blocks/production/fylion-smelter-glow.png new file mode 100644 index 0000000..182300c Binary files /dev/null and b/assets/sprites/blocks/production/fylion-smelter-glow.png differ diff --git a/assets/sprites/blocks/production/fylion-smelter-top.png b/assets/sprites/blocks/production/fylion-smelter-top.png index 86bb9e4..f4b7b5b 100644 Binary files a/assets/sprites/blocks/production/fylion-smelter-top.png and b/assets/sprites/blocks/production/fylion-smelter-top.png differ diff --git a/assets/sprites/blocks/production/fylion-smelter.png b/assets/sprites/blocks/production/fylion-smelter.png index 0a05df0..0749e44 100644 Binary files a/assets/sprites/blocks/production/fylion-smelter.png and b/assets/sprites/blocks/production/fylion-smelter.png differ diff --git a/assets/sprites/blocks/production/tantalum-synthesizer-bottom.png b/assets/sprites/blocks/production/tantalum-synthesizer-bottom.png index 78ddf44..5211a77 100644 Binary files a/assets/sprites/blocks/production/tantalum-synthesizer-bottom.png and b/assets/sprites/blocks/production/tantalum-synthesizer-bottom.png differ diff --git a/assets/sprites/blocks/production/tantalum-synthesizer-full.png b/assets/sprites/blocks/production/tantalum-synthesizer-full.png new file mode 100644 index 0000000..939ba8b Binary files /dev/null and b/assets/sprites/blocks/production/tantalum-synthesizer-full.png differ diff --git a/assets/sprites/blocks/production/tantalum-synthesizer.png b/assets/sprites/blocks/production/tantalum-synthesizer.png index b71a0da..6f2691a 100644 Binary files a/assets/sprites/blocks/production/tantalum-synthesizer.png and b/assets/sprites/blocks/production/tantalum-synthesizer.png differ diff --git a/assets/sprites/blocks/storage/core-obscurity-broken-team.png b/assets/sprites/blocks/storage/core-obscurity-broken-team.png index 055fbf4..bf498a8 100644 Binary files a/assets/sprites/blocks/storage/core-obscurity-broken-team.png and b/assets/sprites/blocks/storage/core-obscurity-broken-team.png differ diff --git a/assets/sprites/blocks/storage/core-obscurity-broken-thruster1.png b/assets/sprites/blocks/storage/core-obscurity-broken-thruster1.png index 9bc7d33..7f3ea7d 100644 Binary files a/assets/sprites/blocks/storage/core-obscurity-broken-thruster1.png and b/assets/sprites/blocks/storage/core-obscurity-broken-thruster1.png differ diff --git a/assets/sprites/blocks/storage/core-obscurity-broken-thruster2.png b/assets/sprites/blocks/storage/core-obscurity-broken-thruster2.png index a87bdfc..b1b1803 100644 Binary files a/assets/sprites/blocks/storage/core-obscurity-broken-thruster2.png and b/assets/sprites/blocks/storage/core-obscurity-broken-thruster2.png differ diff --git a/assets/sprites/blocks/storage/core-obscurity-broken.png b/assets/sprites/blocks/storage/core-obscurity-broken.png index 0221ee4..bf0f3f8 100644 Binary files a/assets/sprites/blocks/storage/core-obscurity-broken.png and b/assets/sprites/blocks/storage/core-obscurity-broken.png differ diff --git a/assets/sprites/blocks/storage/core-obscurity-full.png b/assets/sprites/blocks/storage/core-obscurity-full.png index 2cd5cd6..d53eabc 100644 Binary files a/assets/sprites/blocks/storage/core-obscurity-full.png and b/assets/sprites/blocks/storage/core-obscurity-full.png differ diff --git a/assets/sprites/blocks/storage/core-obscurity-team.png b/assets/sprites/blocks/storage/core-obscurity-team.png index 33d6a3c..400db45 100644 Binary files a/assets/sprites/blocks/storage/core-obscurity-team.png and b/assets/sprites/blocks/storage/core-obscurity-team.png differ diff --git a/assets/sprites/blocks/storage/core-obscurity-thruster1.png b/assets/sprites/blocks/storage/core-obscurity-thruster1.png index aee1930..4e09f23 100644 Binary files a/assets/sprites/blocks/storage/core-obscurity-thruster1.png and b/assets/sprites/blocks/storage/core-obscurity-thruster1.png differ diff --git a/assets/sprites/blocks/storage/core-obscurity-thruster2.png b/assets/sprites/blocks/storage/core-obscurity-thruster2.png index afb4be6..13eb9c8 100644 Binary files a/assets/sprites/blocks/storage/core-obscurity-thruster2.png and b/assets/sprites/blocks/storage/core-obscurity-thruster2.png differ diff --git a/assets/sprites/blocks/storage/core-obscurity.png b/assets/sprites/blocks/storage/core-obscurity.png index bef0a9d..1b8d3b4 100644 Binary files a/assets/sprites/blocks/storage/core-obscurity.png and b/assets/sprites/blocks/storage/core-obscurity.png differ diff --git a/assets/sprites/blocks/storage/core-obscurityb-full.png b/assets/sprites/blocks/storage/core-obscurityb-full.png new file mode 100644 index 0000000..d53eabc Binary files /dev/null and b/assets/sprites/blocks/storage/core-obscurityb-full.png differ diff --git a/assets/sprites/blocks/storage/core-obscurityb-glow.png b/assets/sprites/blocks/storage/core-obscurityb-glow.png new file mode 100644 index 0000000..9b106d4 Binary files /dev/null and b/assets/sprites/blocks/storage/core-obscurityb-glow.png differ diff --git a/assets/sprites/blocks/storage/core-obscurityb-team.png b/assets/sprites/blocks/storage/core-obscurityb-team.png new file mode 100644 index 0000000..400db45 Binary files /dev/null and b/assets/sprites/blocks/storage/core-obscurityb-team.png differ diff --git a/assets/sprites/blocks/storage/core-obscurityb-thruster1.png b/assets/sprites/blocks/storage/core-obscurityb-thruster1.png new file mode 100644 index 0000000..4e09f23 Binary files /dev/null and b/assets/sprites/blocks/storage/core-obscurityb-thruster1.png differ diff --git a/assets/sprites/blocks/storage/core-obscurityb-thruster2.png b/assets/sprites/blocks/storage/core-obscurityb-thruster2.png new file mode 100644 index 0000000..13eb9c8 Binary files /dev/null and b/assets/sprites/blocks/storage/core-obscurityb-thruster2.png differ diff --git a/assets/sprites/blocks/storage/core-obscurityb.png b/assets/sprites/blocks/storage/core-obscurityb.png new file mode 100644 index 0000000..1b8d3b4 Binary files /dev/null and b/assets/sprites/blocks/storage/core-obscurityb.png differ diff --git a/assets/sprites/blocks/turrets/bases/disbase-block-3.png b/assets/sprites/blocks/turrets/bases/disbase-block-3.png index 12ec2fd..4e0c29d 100644 Binary files a/assets/sprites/blocks/turrets/bases/disbase-block-3.png and b/assets/sprites/blocks/turrets/bases/disbase-block-3.png differ diff --git a/assets/sprites/blocks/turrets/dispersive.png b/assets/sprites/blocks/turrets/dispersive.png index 18348e4..bfc7052 100644 Binary files a/assets/sprites/blocks/turrets/dispersive.png and b/assets/sprites/blocks/turrets/dispersive.png differ diff --git a/assets/sprites/cutscenes/newspaper1.png b/assets/sprites/cutscenes/newspaper1.png new file mode 100644 index 0000000..ca99b98 Binary files /dev/null and b/assets/sprites/cutscenes/newspaper1.png differ diff --git a/assets/sprites/items/item-gelionyte1.png b/assets/sprites/items/items/gelionyte/item-gelionyte1.png similarity index 100% rename from assets/sprites/items/item-gelionyte1.png rename to assets/sprites/items/items/gelionyte/item-gelionyte1.png diff --git a/assets/sprites/items/item-gelionyte10.png b/assets/sprites/items/items/gelionyte/item-gelionyte10.png similarity index 100% rename from assets/sprites/items/item-gelionyte10.png rename to assets/sprites/items/items/gelionyte/item-gelionyte10.png diff --git a/assets/sprites/items/item-gelionyte11.png b/assets/sprites/items/items/gelionyte/item-gelionyte11.png similarity index 100% rename from assets/sprites/items/item-gelionyte11.png rename to assets/sprites/items/items/gelionyte/item-gelionyte11.png diff --git a/assets/sprites/items/item-gelionyte12.png b/assets/sprites/items/items/gelionyte/item-gelionyte12.png similarity index 100% rename from assets/sprites/items/item-gelionyte12.png rename to assets/sprites/items/items/gelionyte/item-gelionyte12.png diff --git a/assets/sprites/items/item-gelionyte13.png b/assets/sprites/items/items/gelionyte/item-gelionyte13.png similarity index 100% rename from assets/sprites/items/item-gelionyte13.png rename to assets/sprites/items/items/gelionyte/item-gelionyte13.png diff --git a/assets/sprites/items/item-gelionyte14.png b/assets/sprites/items/items/gelionyte/item-gelionyte14.png similarity index 100% rename from assets/sprites/items/item-gelionyte14.png rename to assets/sprites/items/items/gelionyte/item-gelionyte14.png diff --git a/assets/sprites/items/item-gelionyte15.png b/assets/sprites/items/items/gelionyte/item-gelionyte15.png similarity index 100% rename from assets/sprites/items/item-gelionyte15.png rename to assets/sprites/items/items/gelionyte/item-gelionyte15.png diff --git a/assets/sprites/items/item-gelionyte16.png b/assets/sprites/items/items/gelionyte/item-gelionyte16.png similarity index 100% rename from assets/sprites/items/item-gelionyte16.png rename to assets/sprites/items/items/gelionyte/item-gelionyte16.png diff --git a/assets/sprites/items/item-gelionyte17.png b/assets/sprites/items/items/gelionyte/item-gelionyte17.png similarity index 100% rename from assets/sprites/items/item-gelionyte17.png rename to assets/sprites/items/items/gelionyte/item-gelionyte17.png diff --git a/assets/sprites/items/item-gelionyte18.png b/assets/sprites/items/items/gelionyte/item-gelionyte18.png similarity index 100% rename from assets/sprites/items/item-gelionyte18.png rename to assets/sprites/items/items/gelionyte/item-gelionyte18.png diff --git a/assets/sprites/items/item-gelionyte2.png b/assets/sprites/items/items/gelionyte/item-gelionyte2.png similarity index 100% rename from assets/sprites/items/item-gelionyte2.png rename to assets/sprites/items/items/gelionyte/item-gelionyte2.png diff --git a/assets/sprites/items/item-gelionyte3.png b/assets/sprites/items/items/gelionyte/item-gelionyte3.png similarity index 100% rename from assets/sprites/items/item-gelionyte3.png rename to assets/sprites/items/items/gelionyte/item-gelionyte3.png diff --git a/assets/sprites/items/item-gelionyte4.png b/assets/sprites/items/items/gelionyte/item-gelionyte4.png similarity index 100% rename from assets/sprites/items/item-gelionyte4.png rename to assets/sprites/items/items/gelionyte/item-gelionyte4.png diff --git a/assets/sprites/items/item-gelionyte5.png b/assets/sprites/items/items/gelionyte/item-gelionyte5.png similarity index 100% rename from assets/sprites/items/item-gelionyte5.png rename to assets/sprites/items/items/gelionyte/item-gelionyte5.png diff --git a/assets/sprites/items/item-gelionyte6.png b/assets/sprites/items/items/gelionyte/item-gelionyte6.png similarity index 100% rename from assets/sprites/items/item-gelionyte6.png rename to assets/sprites/items/items/gelionyte/item-gelionyte6.png diff --git a/assets/sprites/items/item-gelionyte7.png b/assets/sprites/items/items/gelionyte/item-gelionyte7.png similarity index 100% rename from assets/sprites/items/item-gelionyte7.png rename to assets/sprites/items/items/gelionyte/item-gelionyte7.png diff --git a/assets/sprites/items/item-gelionyte8.png b/assets/sprites/items/items/gelionyte/item-gelionyte8.png similarity index 100% rename from assets/sprites/items/item-gelionyte8.png rename to assets/sprites/items/items/gelionyte/item-gelionyte8.png diff --git a/assets/sprites/items/item-gelionyte9.png b/assets/sprites/items/items/gelionyte/item-gelionyte9.png similarity index 100% rename from assets/sprites/items/item-gelionyte9.png rename to assets/sprites/items/items/gelionyte/item-gelionyte9.png diff --git a/assets/sprites/items/item-anveiur.png b/assets/sprites/items/items/item-anveiur.png similarity index 100% rename from assets/sprites/items/item-anveiur.png rename to assets/sprites/items/items/item-anveiur.png diff --git a/assets/sprites/items/item-calcite.png b/assets/sprites/items/items/item-calcite.png similarity index 100% rename from assets/sprites/items/item-calcite.png rename to assets/sprites/items/items/item-calcite.png diff --git a/assets/sprites/items/item-fylion.png b/assets/sprites/items/items/item-fylion.png similarity index 100% rename from assets/sprites/items/item-fylion.png rename to assets/sprites/items/items/item-fylion.png diff --git a/assets/sprites/items/item-magnetite.png b/assets/sprites/items/items/item-magnetite.png similarity index 100% rename from assets/sprites/items/item-magnetite.png rename to assets/sprites/items/items/item-magnetite.png diff --git a/assets/sprites/items/item-quartz.png b/assets/sprites/items/items/item-quartz.png similarity index 100% rename from assets/sprites/items/item-quartz.png rename to assets/sprites/items/items/item-quartz.png diff --git a/assets/sprites/items/item-red-sand.png b/assets/sprites/items/items/item-red-sand.png similarity index 100% rename from assets/sprites/items/item-red-sand.png rename to assets/sprites/items/items/item-red-sand.png diff --git a/assets/sprites/items/item-tantalum.png b/assets/sprites/items/items/item-tantalum.png similarity index 100% rename from assets/sprites/items/item-tantalum.png rename to assets/sprites/items/items/item-tantalum.png diff --git a/assets/sprites/items/liquids/liquid-spoiled-water.png b/assets/sprites/items/liquids/liquid-spoiled-water.png new file mode 100644 index 0000000..cee7668 Binary files /dev/null and b/assets/sprites/items/liquids/liquid-spoiled-water.png differ diff --git a/assets/sprites/planets/inner-ring-1.png b/assets/sprites/planets/inner-ring-1.png new file mode 100644 index 0000000..6a9bbff Binary files /dev/null and b/assets/sprites/planets/inner-ring-1.png differ diff --git a/assets/sprites/planets/inner-ring-2.png b/assets/sprites/planets/inner-ring-2.png new file mode 100644 index 0000000..4162fe5 Binary files /dev/null and b/assets/sprites/planets/inner-ring-2.png differ diff --git a/assets/sprites/planets/outer-ring-1.png b/assets/sprites/planets/outer-ring-1.png new file mode 100644 index 0000000..b6645df Binary files /dev/null and b/assets/sprites/planets/outer-ring-1.png differ diff --git a/assets/sprites/planets/outer-ring-2.png b/assets/sprites/planets/outer-ring-2.png new file mode 100644 index 0000000..5693f49 Binary files /dev/null and b/assets/sprites/planets/outer-ring-2.png differ diff --git a/assets/sprites/units/core/player/penumbra-broken-base.png b/assets/sprites/units/core/player/penumbra-broken-base.png new file mode 100644 index 0000000..cf9c01a Binary files /dev/null and b/assets/sprites/units/core/player/penumbra-broken-base.png differ diff --git a/assets/sprites/units/core/player/penumbra-broken-cell.png b/assets/sprites/units/core/player/penumbra-broken-cell.png new file mode 100644 index 0000000..530224f Binary files /dev/null and b/assets/sprites/units/core/player/penumbra-broken-cell.png differ diff --git a/assets/sprites/units/core/player/penumbra-broken-full.png b/assets/sprites/units/core/player/penumbra-broken-full.png new file mode 100644 index 0000000..4572ccd Binary files /dev/null and b/assets/sprites/units/core/player/penumbra-broken-full.png differ diff --git a/assets/sprites/units/core/player/penumbra-broken-gun.png b/assets/sprites/units/core/player/penumbra-broken-gun.png new file mode 100644 index 0000000..fccffa2 Binary files /dev/null and b/assets/sprites/units/core/player/penumbra-broken-gun.png differ diff --git a/assets/sprites/units/core/player/penumbra-broken-gun2.png b/assets/sprites/units/core/player/penumbra-broken-gun2.png new file mode 100644 index 0000000..431c358 Binary files /dev/null and b/assets/sprites/units/core/player/penumbra-broken-gun2.png differ diff --git a/assets/sprites/units/core/player/penumbra-broken-leg.png b/assets/sprites/units/core/player/penumbra-broken-leg.png new file mode 100644 index 0000000..7d61524 Binary files /dev/null and b/assets/sprites/units/core/player/penumbra-broken-leg.png differ diff --git a/assets/sprites/units/core/player/penumbra-broken.png b/assets/sprites/units/core/player/penumbra-broken.png new file mode 100644 index 0000000..ea49c46 Binary files /dev/null and b/assets/sprites/units/core/player/penumbra-broken.png differ diff --git a/assets/sprites/units/core/player/penumbra-starter-base.png b/assets/sprites/units/core/player/penumbra-starter-base.png index 775b492..2c2011c 100644 Binary files a/assets/sprites/units/core/player/penumbra-starter-base.png and b/assets/sprites/units/core/player/penumbra-starter-base.png differ diff --git a/assets/sprites/units/core/player/penumbra-starter-cell.png b/assets/sprites/units/core/player/penumbra-starter-cell.png index 728abb1..530224f 100644 Binary files a/assets/sprites/units/core/player/penumbra-starter-cell.png and b/assets/sprites/units/core/player/penumbra-starter-cell.png differ diff --git a/assets/sprites/units/core/player/penumbra-starter-full.png b/assets/sprites/units/core/player/penumbra-starter-full.png index 4e4ae4f..4d70f98 100644 Binary files a/assets/sprites/units/core/player/penumbra-starter-full.png and b/assets/sprites/units/core/player/penumbra-starter-full.png differ diff --git a/assets/sprites/units/core/player/penumbra-starter-gun.png b/assets/sprites/units/core/player/penumbra-starter-gun.png index 2b576c5..431c358 100644 Binary files a/assets/sprites/units/core/player/penumbra-starter-gun.png and b/assets/sprites/units/core/player/penumbra-starter-gun.png differ diff --git a/assets/sprites/units/core/player/penumbra-starter-leg.png b/assets/sprites/units/core/player/penumbra-starter-leg.png index 0a3569e..7d61524 100644 Binary files a/assets/sprites/units/core/player/penumbra-starter-leg.png and b/assets/sprites/units/core/player/penumbra-starter-leg.png differ diff --git a/assets/sprites/units/core/player/penumbra-starter.png b/assets/sprites/units/core/player/penumbra-starter.png index 06df837..ea49c46 100644 Binary files a/assets/sprites/units/core/player/penumbra-starter.png and b/assets/sprites/units/core/player/penumbra-starter.png differ diff --git a/assets/sprites/units/core/fenspor/mycelist-barrel-l.png b/assets/sprites/units/fenspor/mycelist-barrel-l.png similarity index 100% rename from assets/sprites/units/core/fenspor/mycelist-barrel-l.png rename to assets/sprites/units/fenspor/mycelist-barrel-l.png diff --git a/assets/sprites/units/core/fenspor/mycelist-barrel-r.png b/assets/sprites/units/fenspor/mycelist-barrel-r.png similarity index 100% rename from assets/sprites/units/core/fenspor/mycelist-barrel-r.png rename to assets/sprites/units/fenspor/mycelist-barrel-r.png diff --git a/assets/sprites/units/core/fenspor/mycelist-barrel.png b/assets/sprites/units/fenspor/mycelist-barrel.png similarity index 100% rename from assets/sprites/units/core/fenspor/mycelist-barrel.png rename to assets/sprites/units/fenspor/mycelist-barrel.png diff --git a/assets/sprites/units/core/fenspor/mycelist-full.png b/assets/sprites/units/fenspor/mycelist-full.png similarity index 100% rename from assets/sprites/units/core/fenspor/mycelist-full.png rename to assets/sprites/units/fenspor/mycelist-full.png diff --git a/assets/sprites/units/core/fenspor/mycelist-leg-base.png b/assets/sprites/units/fenspor/mycelist-leg-base.png similarity index 100% rename from assets/sprites/units/core/fenspor/mycelist-leg-base.png rename to assets/sprites/units/fenspor/mycelist-leg-base.png diff --git a/assets/sprites/units/core/fenspor/mycelist-leg.png b/assets/sprites/units/fenspor/mycelist-leg.png similarity index 100% rename from assets/sprites/units/core/fenspor/mycelist-leg.png rename to assets/sprites/units/fenspor/mycelist-leg.png diff --git a/assets/sprites/units/core/fenspor/mycelist-mouth-l.png b/assets/sprites/units/fenspor/mycelist-mouth-l.png similarity index 100% rename from assets/sprites/units/core/fenspor/mycelist-mouth-l.png rename to assets/sprites/units/fenspor/mycelist-mouth-l.png diff --git a/assets/sprites/units/core/fenspor/mycelist-mouth-r.png b/assets/sprites/units/fenspor/mycelist-mouth-r.png similarity index 100% rename from assets/sprites/units/core/fenspor/mycelist-mouth-r.png rename to assets/sprites/units/fenspor/mycelist-mouth-r.png diff --git a/assets/sprites/units/core/fenspor/mycelist.png b/assets/sprites/units/fenspor/mycelist.png similarity index 100% rename from assets/sprites/units/core/fenspor/mycelist.png rename to assets/sprites/units/fenspor/mycelist.png diff --git a/assets/sprites/units/core/fenspor/spiders/sporacrawler-full.png b/assets/sprites/units/fenspor/spiders/sporacrawler-full.png similarity index 100% rename from assets/sprites/units/core/fenspor/spiders/sporacrawler-full.png rename to assets/sprites/units/fenspor/spiders/sporacrawler-full.png diff --git a/assets/sprites/units/core/fenspor/spiders/sporacrawler-leg-base.png b/assets/sprites/units/fenspor/spiders/sporacrawler-leg-base.png similarity index 100% rename from assets/sprites/units/core/fenspor/spiders/sporacrawler-leg-base.png rename to assets/sprites/units/fenspor/spiders/sporacrawler-leg-base.png diff --git a/assets/sprites/units/core/fenspor/spiders/sporacrawler-leg.png b/assets/sprites/units/fenspor/spiders/sporacrawler-leg.png similarity index 100% rename from assets/sprites/units/core/fenspor/spiders/sporacrawler-leg.png rename to assets/sprites/units/fenspor/spiders/sporacrawler-leg.png diff --git a/assets/sprites/units/core/fenspor/spiders/sporacrawler-mouth-l.png b/assets/sprites/units/fenspor/spiders/sporacrawler-mouth-l.png similarity index 100% rename from assets/sprites/units/core/fenspor/spiders/sporacrawler-mouth-l.png rename to assets/sprites/units/fenspor/spiders/sporacrawler-mouth-l.png diff --git a/assets/sprites/units/core/fenspor/spiders/sporacrawler-mouth-r.png b/assets/sprites/units/fenspor/spiders/sporacrawler-mouth-r.png similarity index 100% rename from assets/sprites/units/core/fenspor/spiders/sporacrawler-mouth-r.png rename to assets/sprites/units/fenspor/spiders/sporacrawler-mouth-r.png diff --git a/assets/sprites/units/core/fenspor/spiders/sporacrawler.png b/assets/sprites/units/fenspor/spiders/sporacrawler.png similarity index 100% rename from assets/sprites/units/core/fenspor/spiders/sporacrawler.png rename to assets/sprites/units/fenspor/spiders/sporacrawler.png diff --git a/build.gradle b/build.gradle index 7222ac5..2137564 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ java{ ext{ //the build number that this mod is made for - mindustryVersion = 'v154' + mindustryVersion = 'v158' jabelVersion = "93fde537c7" //windows sucks isWindows = System.getProperty("os.name").toLowerCase().contains("windows") diff --git a/mod.hjson b/mod.hjson index f95e103..cb5221e 100644 --- a/mod.hjson +++ b/mod.hjson @@ -12,7 +12,7 @@ ItzJustaTeam • Weersix [accent[]]Sprites:[gray[]] -• Nahan +• Nahan, ItzCraft [accent[]]Music Composer:[gray[]] • Ace @@ -23,8 +23,8 @@ ItzJustaTeam ''' main: "epsilon.EpsilonMod" description: "A mod which introduces actually unique [accent[]]Story Based Campaign[[]].\nMain goal of this mod is to show that lore based mods can be good too.\n\nWith story gameplay it introduces to you some new mechanics." -subtitle: "V0.22" -version: 0.22 -minGameVersion: 154 +subtitle: "V0.284" +version: 0.284 +minGameVersion: 158 java: true hideBrowser: false diff --git a/src/epsilon/EpsilonMod.java b/src/epsilon/EpsilonMod.java index d9af87e..6274ed6 100644 --- a/src/epsilon/EpsilonMod.java +++ b/src/epsilon/EpsilonMod.java @@ -4,16 +4,24 @@ import arc.util.*; import epsilon.content.Kallistea.blocks.*; import epsilon.content.Kallistea.*; +import epsilon.graphics.EpsShaders; import epsilon.ui.*; import epsilon.ui.dialogs.AboutEpsilonDialog; import epsilon.world.EpsAttribute; import epsilon.logic.EpsilonLogic; +import mindustry.content.Blocks; import mindustry.content.TechTree; +import mindustry.game.EventType; import mindustry.game.EventType.*; import mindustry.gen.*; import mindustry.mod.*; +import mindustry.type.Category; +import mindustry.type.ItemStack; import mindustry.ui.dialogs.*; +import mindustry.world.blocks.logic.SwitchBlock; +import mindustry.world.meta.BuildVisibility; +import static arc.Core.app; import static arc.Core.bundle; import static epsilon.EpsilonVars.*; import static epsilon.content.Kallistea.EpsilonPlanets.kallistea; @@ -36,6 +44,10 @@ public EpsilonMod(){ }); } }); + + Events.on(EventType.FileTreeInitEvent.class, e -> + app.post(EpsShaders::load) + ); } @Override @@ -54,10 +66,19 @@ public void loadContent(){ modahh.meta.author = Core.bundle.get("mod.epsilon.author"); modahh.meta.description = Core.bundle.get("mod.epsilon.description"); modahh.meta.subtitle = Core.bundle.get("mod.epsilon.subtitle"); + + Blocks.worldSwitch = new SwitchBlock("world-switch"){{ + requirements(Category.logic, BuildVisibility.worldProcessorOnly, ItemStack.with(new Object[0])); + targetable = false; + privileged = true; + ignoreBuildDarkness = true; + }}; EpsMusic.load(); EpsTeams.load(); EpsAttribute.load(); + SchematicsLoader.load(); + KallisteaWeather.load(); KallisteaItems.load(); KallisteaUnitTypes.load(); KallisteaBlocks.load(); @@ -74,19 +95,9 @@ private void loadESSD(){ }); } - private void resetTree(TechTree.TechNode root) { - root.reset(); - root.content.clearUnlock(); - } - private void loadSettings(){ ui.settings.addCategory(bundle.get("settings.epsilon-title"), Icon.book, t -> { t.checkPref("@settings.testing-mode", false); - if(testingMode){ - t.button("@settings.epsilon-tech-tree", Icon.tree, () -> { - ui.showConfirm("@confirm", "@settings.epsilon-tech-tree.confirm", () -> resetTree(kallistea.techTree)); - }); - } t.checkPref("@settings.hide-warn-dialog", false); t.checkPref("@settings.detailed-solar-system",false); }); diff --git a/src/epsilon/content/Kallistea/EpsFx.java b/src/epsilon/content/Kallistea/EpsFx.java index f49e720..9309b0a 100644 --- a/src/epsilon/content/Kallistea/EpsFx.java +++ b/src/epsilon/content/Kallistea/EpsFx.java @@ -26,7 +26,7 @@ public class EpsFx{ e.scaled(25f, f -> { stroke(f.fout() * 2f); - Lines.circle(e.x, e.y, 4f + f.finpow() * 30f); + circle(e.x, e.y, 4f + f.finpow() * 30f); }); stroke(e.fout() * 2f); @@ -46,21 +46,21 @@ public class EpsFx{ purpleFire = new Effect(60f, e -> { float alpha = e.fin(); float radius = 2f + Mathf.sin(e.time * 0.1f) * 0.5f; - Draw.color(Color.valueOf("d400ff"), Color.valueOf("8a2be2"), alpha); + color(Color.valueOf("d400ff"), Color.valueOf("8a2be2"), alpha); Fill.circle(e.x, e.y, radius); Drawf.light(e.x, e.y, radius * 6f, Color.valueOf("d400ff"), 0.3f); }), purpleSmoke = new Effect(30f, e -> { - Draw.color(Color.valueOf("ab72d6"), 0.3f); + color(Color.valueOf("ab72d6"), 0.3f); Fill.rect(e.x + Mathf.range(1f), e.y + e.finpow() * 4f, 1f, 4f); }), trailParticleEffect = new Effect(8f, e -> { float life = Interp.pow2Out.apply(1f - e.fin()); Color dropColor = Color.valueOf("db96eb").cpy().a(0.7f * life); - Draw.color(dropColor); + color(dropColor); Fill.circle(e.x, e.y, 1f * (1f - e.fin())); - Draw.reset(); + reset(); }), purpleOrbital = new Effect(60f, e -> { float t = e.time / 60f; @@ -83,7 +83,7 @@ public class EpsFx{ float trailWidth = orbSize * 1.5f; float trailLength = Interp.sineOut.apply(19f * pulse); Color c = Color.valueOf("b697c2").cpy().a(alpha); - Draw.color(c); + color(c); Fill.circle(e.x + x, e.y + y, orbSize); Drawf.tri( e.x + x, @@ -97,7 +97,7 @@ public class EpsFx{ for(int s=0; s { color(Color.valueOf("c075d1")); @@ -107,21 +107,21 @@ public class EpsFx{ }); }), prismBurst = new Effect(25f, e -> { - Draw.color(Color.purple, Color.white, e.fin()); + color(Color.purple, Color.white, e.fin()); for (int i = 0; i < 6; i++) { float angle = i * 60f + e.time * 6f; float len = 5f + Mathf.absin(e.time, 2f, 1f); - Lines.lineAngle(e.x, e.y, angle, len); + lineAngle(e.x, e.y, angle, len); } Drawf.light(e.x, e.y, 40f, Color.purple, 0.5f); }), singleOverloadFlashPurple = new Effect(30f, e -> { float alpha = 1f - e.finpow(); float size = Mathf.lerp(3f, 6f, e.fin()); - Draw.color(Color.valueOf("a78bad").a(alpha)); + color(Color.valueOf("a78bad").a(alpha)); TextureRegion region = Core.atlas.find("epsilon-energy-1"); Draw.rect(region, e.x, e.y, size, size); - Draw.reset(); + reset(); }), energyOverloadPulse = new Effect(30f, e -> { if (e.time % 10f < Time.delta){ @@ -133,5 +133,11 @@ public class EpsFx{ singleOverloadFlashPurple.at(x, y); } } + }), + circleFlashOut = new Effect(35f, e -> { + color(Color.valueOf("a77dc9")); + for(float angle = 0; angle<=360; angle++){ + Drawf.tri(e.x, e.y, 3, 3, angle); + } }); } \ No newline at end of file diff --git a/src/epsilon/content/Kallistea/EpsMusic.java b/src/epsilon/content/Kallistea/EpsMusic.java index ddee3ac..a0d74f4 100644 --- a/src/epsilon/content/Kallistea/EpsMusic.java +++ b/src/epsilon/content/Kallistea/EpsMusic.java @@ -32,7 +32,7 @@ public class EpsMusic { public static Music inevitability, planetOfDespair, youreSafeNow, alarm; - public static Sound highShoot, electricShoot, scan; + public static Sound highShoot, electricShoot, scan, purystalWalk; // Don't change from outside I trust you by putting it in public public static boolean enabled = true; @@ -56,6 +56,7 @@ public static void load() { highShoot = loadSound("high-shoot"); electricShoot = loadSound("electric-shoot"); scan = loadSound("scan"); + purystalWalk = loadSound("purystal-walk"); } private static Sound loadSound(String soundName){ diff --git a/src/epsilon/content/Kallistea/EpsilonPlanets.java b/src/epsilon/content/Kallistea/EpsilonPlanets.java index f17cdad..14941e6 100644 --- a/src/epsilon/content/Kallistea/EpsilonPlanets.java +++ b/src/epsilon/content/Kallistea/EpsilonPlanets.java @@ -1,13 +1,16 @@ package epsilon.content.Kallistea; +import arc.Core; import arc.func.Cons; import arc.graphics.Color; import arc.math.Rand; import arc.math.geom.Mat3D; +import arc.math.geom.Vec3; import arc.util.Tmp; import arc.struct.Seq; import epsilon.EpsilonVars; import epsilon.content.Kallistea.blocks.*; +import epsilon.graphics.g3d.*; import epsilon.planet.*; import mindustry.content.Blocks; import mindustry.graphics.g3d.*; @@ -39,13 +42,13 @@ public static void load(){ solarSystem = this; meshLoader = () -> new SunMesh( - this, 5, 8, 0.4f, 0.7f, 1.4f, 1.6f, 1.2f, + this, 5, 8, 0.67f, 0.7f, 1.52f, 1.6f, 1.2f, - Color.valueOf("6c72c4"), - Color.valueOf("60749e"), - Color.valueOf("7b8ad4"), - Color.valueOf("8d9ff7"), - Color.valueOf("b4c7de") + Color.valueOf("edf8ff"), + Color.valueOf("d7eafc"), + Color.valueOf("b2c9f7"), + Color.valueOf("949df2"), + Color.valueOf("8279e8") ); }}; @@ -53,12 +56,13 @@ public static void load(){ kallistea = new Planet("kallistea", epsilon, 0.82f, 1){{ accessible = true; hasAtmosphere = true; + minZoom = 1.99f; landCloudColor = Color.valueOf("6a7d9e"); atmosphereColor = Color.valueOf("7d1bb3"); atmosphereRadIn = 0.01f; - atmosphereRadOut = 0.1f; + atmosphereRadOut = 0.13f; orbitTime = 60f*20f; - rotateTime = 60f*12.3f; + rotateTime = 26f; orbitRadius = 40f; iconColor = Color.valueOf("891dcc"); solarSystem = epsilon; @@ -79,8 +83,14 @@ public static void load(){ startSector = 13; minZoom = 0.75f; generator = new KallisteaPlanetGenerator(); + Vec3 ringAxis = new Vec3(0, 1, 0).rotate(Vec3.X, 40); + meshLoader = () -> new MultiMesh( - new HexMesh(this, 7) + new RotMesh(this, 7), + new RingMesh(Core.atlas.find("epsilon-inner-ring-1"), this, 360, 1.55f, 1.61f, ringAxis), + new RingMesh(Core.atlas.find("epsilon-inner-ring-2"), this, 360, 1.41f, 1.53f, ringAxis), + new RingMesh(Core.atlas.find("epsilon-outer-ring-1"), this, 360, 1.9f, 1.96f, ringAxis), + new RingMesh(Core.atlas.find("epsilon-outer-ring-2"), this, 360, 1.97f, 2.13f, ringAxis) ); cloudMeshLoader = () -> new MultiMesh( new HexSkyMesh(this, 59, 2.7f, 0.1f, EpsilonVars.detailedSolarSystem ? 7 : 5, Color.valueOf("6a7d9e").a(0.80f), 3, 0.42f, EpsilonVars.detailedSolarSystem ? 1.2f : 1f, EpsilonVars.detailedSolarSystem ? 0.36f : 0.43f), @@ -92,20 +102,23 @@ public static void load(){ //due a vertices limit which is set by Anuken i have to minimalize vertices for bad devices (it should crash and on good devices but for some people it is somehow works lmao) if(EpsilonVars.detailedSolarSystem){ eryphos = new Planet("eryphos", epsilon, 1.75f, 1){{ - accessible = false; + minZoom = 1.9f; + accessible = true; hasAtmosphere = true; + allowSelfSectorLaunch = false; atmosphereColor = Color.valueOf("929dd1"); atmosphereRadIn = 0f; atmosphereRadOut = 3f; orbitTime = 60f*47f; orbitRadius = 85f; - rotateTime = 60f*836f; + rotateTime = 41f; solarSystem = epsilon; updateLighting = true; - alwaysUnlocked = allowLaunchLoadout = allowLaunchSchematics = clearSectorOnLose = false; - generator = new EryphosPlanetGenerator(); + allowLaunchToNumbered = allowLaunchLoadout = allowLaunchSchematics = clearSectorOnLose = false; + alwaysUnlocked = true; + generator = new EryphosPlanetGenerator(); meshLoader = () -> new MultiMesh( - new HexMesh(this, 7) + new RotMesh(this, 7) ); }}; /*keraunos = new Planet("keraunos", epsilon, 2.75f, 1){{ @@ -135,6 +148,53 @@ public static void load(){ // region moons + faniera = makeAsteroid("faniera",eryphos, Blocks.ice, Blocks.redIce, 184, 0.3f, 12, 0.5f, gen -> { + gen.iceChance = 1f; + gen.berylChance = 0f; + gen.carbonChance = 0f; + gen.stoneChance = 0f; + }); + + hyrokat = new Planet("hyrokat", eryphos, 0.45f, 1){{ + accessible = true; + minZoom = 2f; + hasAtmosphere = true; + atmosphereColor = Color.valueOf("87c9c6"); + atmosphereRadIn = 0.02f; + atmosphereRadOut = 0.02f; + orbitTime = 60f*45f; + orbitRadius = 7f; + orbitOffset = 10f; + rotateTime = 67f; + solarSystem = epsilon; + updateLighting = true; + allowLaunchToNumbered = allowLaunchLoadout = allowLaunchSchematics = clearSectorOnLose = false; + alwaysUnlocked = true; + generator = new HyrokatMoonGenerator(); + meshLoader = () -> new MultiMesh( + new RotMesh(this, 6) + ); + }}; + + enviros = new Planet("enviros", eryphos, 0.3f, 1){{ + accessible = true; + hasAtmosphere = false; + minZoom = 3f; + maxZoom = 3.1f; + bloom = true; + orbitTime = 60f*8f; + orbitRadius = 4f; + orbitOffset = 7f; + rotateTime = 103f; + solarSystem = epsilon; + updateLighting = true; + allowLaunchToNumbered = allowLaunchLoadout = allowLaunchSchematics = clearSectorOnLose = false; + alwaysUnlocked = true; + generator = new EnvirosMoonGenerator(); + meshLoader = () -> new MultiMesh( + new RotMesh(this, 5) + ); + }}; // region asteroids diff --git a/src/epsilon/content/Kallistea/KallisteaItems.java b/src/epsilon/content/Kallistea/KallisteaItems.java index b0b34c8..23629fe 100644 --- a/src/epsilon/content/Kallistea/KallisteaItems.java +++ b/src/epsilon/content/Kallistea/KallisteaItems.java @@ -2,12 +2,14 @@ import arc.graphics.*; import arc.struct.*; -import mindustry.type.Item; +import mindustry.type.*; import epsilon.world.EpsItem; public class KallisteaItems { public static Item gelionyte, calcite, quartz, fylion, redSand, magnetite, tantalum, anveiur; + public static Liquid + spoiledWater; public static final Seq kallisteaItems = new Seq<>(); @@ -54,6 +56,13 @@ public static void load(){ flammability = 0.24f; explosiveness = 0.45f; }}; + spoiledWater = new Liquid("liquid-spoiled-water", Color.valueOf("8462e8")){{ + barColor = Color.valueOf("8462e8"); + boilPoint = 0.5f; + viscosity = 0.35f; + heatCapacity = 0.2f; + gasColor = Color.valueOf("5948ae"); + }}; kallisteaItems.addAll(gelionyte, calcite, quartz, fylion, redSand, magnetite, tantalum, anveiur); } } \ No newline at end of file diff --git a/src/epsilon/content/Kallistea/KallisteaSectorPresets.java b/src/epsilon/content/Kallistea/KallisteaSectorPresets.java index 505d702..b6c7d44 100644 --- a/src/epsilon/content/Kallistea/KallisteaSectorPresets.java +++ b/src/epsilon/content/Kallistea/KallisteaSectorPresets.java @@ -13,5 +13,11 @@ public static void load(){ overrideLaunchDefaults = true; captureWave = 2; }}; + abandonedOutpost = new EpsilonSectorPreset("abandoned-outpost", EpsilonPlanets.kallistea, 9){{ + difficulty = 2; + overrideLaunchDefaults = true; + captureWave = 4; + requireUnlock = true; + }}; } } diff --git a/src/epsilon/content/Kallistea/KallisteaTechTree.java b/src/epsilon/content/Kallistea/KallisteaTechTree.java index 829f01b..500e0d8 100644 --- a/src/epsilon/content/Kallistea/KallisteaTechTree.java +++ b/src/epsilon/content/Kallistea/KallisteaTechTree.java @@ -3,6 +3,7 @@ import arc.struct.*; import epsilon.content.Kallistea.blocks.*; import epsilon.game.EpsObjectives; +import mindustry.content.Liquids; import mindustry.game.Objectives; import mindustry.type.Item; @@ -19,7 +20,7 @@ public static void load(){ costMultipliers.put(KallisteaItems.gelionyte, 0.3f); EpsilonPlanets.kallistea.techTree = nodeRoot("kallistea", KallisteaStorage.coreObscurity, () -> { - node(KallisteaItems.gelionyte, Seq.with(new Objectives.Research(KallisteaItems.gelionyte)), () -> { + node(KallisteaItems.gelionyte, Seq.with(new Objectives.OnSector(firstRiddles)), () -> { node(KallisteaItems.calcite, Seq.with(new Objectives.Produce(KallisteaItems.calcite)), () ->{ node(KallisteaItems.quartz, Seq.with(new Objectives.Produce(KallisteaItems.quartz)), () -> { node(KallisteaItems.fylion, Seq.with(new Objectives.Produce(KallisteaItems.fylion)), () -> { @@ -31,8 +32,12 @@ public static void load(){ }); }); }); + node(Liquids.ozone, Seq.with(new Objectives.Produce(Liquids.ozone)), () -> {}); }); node(KallisteaItems.redSand, Seq.with(new Objectives.Produce(KallisteaItems.redSand)), () -> {}); + node(KallisteaItems.spoiledWater, Seq.with(new Objectives.Produce(KallisteaItems.spoiledWater)), () -> { + node(Liquids.water, Seq.with(new Objectives.Produce(Liquids.water)), () -> {}); + }); }); }); node(KallisteaDistribution.transmittingBridge, () -> { @@ -49,7 +54,14 @@ public static void load(){ node(KallisteaProduction.breakerDrill); }); node(KallisteaSectorPresets.firstRiddles, Seq.with(new Objectives.OnSector(firstRiddles)), () -> { + node(abandonedOutpost, Seq.with(new Objectives.SectorComplete(firstRiddles)), () -> { + }); + }); + node(KallisteaDefense.dispersive, Seq.with(new EpsObjectives.OnVars("turret1", abandonedOutpost)), () -> { + node(KallisteaDefense.gelionyteWall, () -> { + + }); }); }); } diff --git a/src/epsilon/content/Kallistea/KallisteaUnitTypes.java b/src/epsilon/content/Kallistea/KallisteaUnitTypes.java index 3492dc3..7a9e1d3 100644 --- a/src/epsilon/content/Kallistea/KallisteaUnitTypes.java +++ b/src/epsilon/content/Kallistea/KallisteaUnitTypes.java @@ -20,10 +20,10 @@ public class KallisteaUnitTypes{ public static UnitType // core - penumbraStarter, sporacrawler, mycelist; + penumbraStarter, penumbraBroken, sporacrawler, mycelist; public static void load(){ penumbraStarter = new UnitType("penumbra-starter"){{ - outlineColor= Color.valueOf("2f2726"); + outlineColor= Color.valueOf("18151a"); constructor = MechUnit::create; controller = u -> new BuilderAI(true, 500f); canBoost = true; @@ -39,9 +39,64 @@ public static void load(){ weapons.add(new Weapon("epsilon-penumbra-starter-gun"){{ top = false; - x = 7f; - y = 5.5f; mirror = true; + x=0; + shake = 1.7f; + reload = 85f; + inaccuracy = 10; + shoot.shots = 2; + shoot.shotDelay = 1f; + recoil = 2f; + shootSound = EpsMusic.electricShoot; + bullet = new BasicBulletType(){{ + width = 5; + height = 5; + x = -7f; + y = 7.5f; + speed = 2; + lifetime = 60; + damage = 30; + frontColor = Color.valueOf("fcc0ce"); + backColor = trailColor = Color.valueOf("cc7085"); + trailWidth = 1.05f; + trailLength = 3; + trailEffect = Fx.incendTrail; + shootEffect = new ParticleEffect(){{ + particles = 6; + lifetime = 30f; + length = 30f; + baseLength = 0f; + cone = 0; + colorFrom = Color.valueOf("cc7085"); + colorTo = Color.valueOf("fcc0ce"); + sizeFrom = 5; + sizeTo = 0; + interp = Interp.pow3; + sizeInterp = Interp.pow3Out; + }}; + }}; + }}); + }}; + penumbraBroken = new UnitType("penumbra-broken"){{ + outlineColor= Color.valueOf("18151a"); + constructor = MechUnit::create; + controller = u -> new BuilderAI(true, 500f); + canBoost = true; + boostMultiplier = 1.3f; + health = 170; + speed = EpsilonVars.testingMode ? 3.5f : 0.9f; + buildSpeed = 1f; + armor = 1.5f; + riseSpeed = 0.05f; + + mineTier = 2; + mineSpeed = 4.25f; + + weapons.add(new Weapon("epsilon-penumbra-broken-gun2"){{ + top = false; + x = -7f; + y = 5.5f; + mirror = false; shake = 1.7f; reload = 85f; inaccuracy = 25; @@ -55,8 +110,8 @@ public static void load(){ speed = 2; lifetime = 60; damage = 30; - frontColor = Color.valueOf("97a6cc"); - backColor = trailColor = Color.valueOf("4c5878"); + frontColor = Color.valueOf("fcc0ce"); + backColor = trailColor = Color.valueOf("cc7085"); trailWidth = 1.05f; trailLength = 3; trailEffect = Fx.missileTrail; @@ -65,15 +120,38 @@ public static void load(){ lifetime = 30f; length = 30f; baseLength = 0f; - cone = 15; - colorFrom = Color.valueOf("6789e0"); - colorTo = Color.valueOf("455273"); + cone = 0; + colorFrom = Color.valueOf("cc7085"); + colorTo = Color.valueOf("fcc0ce"); sizeFrom = 5; sizeTo = 0; interp = Interp.pow3; sizeInterp = Interp.pow3Out; }}; }}; + }}, + new EpsilonWeapon("epsilon-penumbra-broken-gun"){{ + top = false; + x = 7f; + y = 5.5f; + mirror = false; + display = false; + shake = 0; + reload = 1f; + recoil = 0f; + shootSound = Sounds.none; + effectInterval = 30f; + effect = new MultiEffect(Fx.fire, EpsFx.energyOverloadPulse); + bullet = new BasicBulletType(){{ + width = 0; + height = 0; + damage = 0; + speed = 0; + shootEffect = none; + smokeEffect = none; + hitEffect = none; + despawnEffect = none; + }}; }}); }}; diff --git a/src/epsilon/content/Kallistea/KallisteaWeather.java b/src/epsilon/content/Kallistea/KallisteaWeather.java new file mode 100644 index 0000000..78cad1a --- /dev/null +++ b/src/epsilon/content/Kallistea/KallisteaWeather.java @@ -0,0 +1,69 @@ +package epsilon.content.Kallistea; + +import arc.Core; +import arc.graphics.Color; +import arc.graphics.g2d.Draw; +import arc.graphics.g2d.Lines; +import arc.math.Rand; +import epsilon.graphics.EpsPal; +import mindustry.gen.WeatherState; +import mindustry.type.Weather; +import mindustry.type.weather.ParticleWeather; + +public class KallisteaWeather { + public static class MeteorShowerWeather extends ParticleWeather{ + + public MeteorShowerWeather(String name){ + super(name); + duration = 60f * 30f; + noiseLayers = 0; + drawNoise = false; + baseSpeed = 0f; + force = 0f; + color = Color.white; + density = 50f; + sizeMin = 8f; + sizeMax = 20f; + xspeed = -400f; + yspeed = -800f; + } + + @Override + public void drawOver(WeatherState state){ + super.drawOver(state); + Rand rand = new Rand(); + float camX = Core.camera.position.x; + float camY = Core.camera.position.y; + rand.setSeed(1); + int amount = (int)(density * state.intensity); + for(int i = 0; i < amount; i++){ + float x = camX + rand.range(Core.graphics.getWidth()); + float y = camY + rand.range(Core.graphics.getHeight()); + Draw.color(Color.orange); + Lines.stroke(2f); + Lines.line(x, y, x + 15f, y + 30f); + } + Draw.reset(); + } + } + + public static void load(){ + Weather fensporStorm = new ParticleWeather("fenspor-storm"){{ + color= EpsPal.fenspor; + noiseColor = EpsPal.fensporUnits; + sizeMax = 30; + sizeMin = 7; + density = 9000; + duration = 60f*15f; + useWindVector = true; + drawNoise = true; + baseSpeed = 0.75f; + noisePath = "fog"; + noiseScale = 200; + noiseLayerSpeedM = 1.78f; + noiseLayerAlphaM = 0.83f; + noiseLayerSclM = 0.63f; + noiseLayers = 4; + }}; + } +} diff --git a/src/epsilon/content/Kallistea/SchematicsLoader.java b/src/epsilon/content/Kallistea/SchematicsLoader.java new file mode 100644 index 0000000..1ea72ed --- /dev/null +++ b/src/epsilon/content/Kallistea/SchematicsLoader.java @@ -0,0 +1,13 @@ +package epsilon.content.Kallistea; + +import mindustry.game.Schematic; +import mindustry.game.Schematics; + +public class SchematicsLoader { + public static Schematic + coreObscurity, coreObscurityd; + public static void load(){ + coreObscurity = Schematics.readBase64("bXNjaAF4nBWLQQqAIBQFnyItat8tPEoniBZqfyHY/6K2iOjuKQyzmoGB6bC7CCZIIcxBuBG3zWXo98NyUg0l5haFAUzJeUoVej8UVso1JmE7Tiu+hrvE9vRMDbp+32MZWQ=="); + coreObscurityd = Schematics.readBase64("bXNjaAF4nBXKQQqAIBBG4T+TFnWATtFROkG0UJuFYDOmRkR09ww+3upBQ1dsdkJ7XITeCRfiMpsI9bwYNsou+Vi8MIAuGEshQy1rg5Fi9kF4cpJoEpvdmXy5bf2aX80H3S4ZXw=="); + } +} \ No newline at end of file diff --git a/src/epsilon/content/Kallistea/blocks/KallisteaDefense.java b/src/epsilon/content/Kallistea/blocks/KallisteaDefense.java index 7bb58e9..3ba0737 100644 --- a/src/epsilon/content/Kallistea/blocks/KallisteaDefense.java +++ b/src/epsilon/content/Kallistea/blocks/KallisteaDefense.java @@ -2,11 +2,14 @@ import arc.graphics.Color; import arc.math.Interp; +import arc.struct.Seq; import epsilon.content.Kallistea.EpsFx; import epsilon.content.Kallistea.EpsMusic; import epsilon.content.Kallistea.KallisteaItems; import epsilon.world.blocks.defense.*; +import epsilon.world.bullets.RingExplosionBullet; import mindustry.content.Fx; +import mindustry.content.Items; import mindustry.entities.bullet.*; import mindustry.entities.effect.*; import mindustry.entities.part.RegionPart; @@ -26,11 +29,13 @@ public class KallisteaDefense { // walls gelionyteWall, quartzWall, quartzWallLarge, //region ganieris - prism, + prism, testTurret, // region incers dispersive, sparkline, fluxray, gravitor, disruptor, pulsegrid, lancefield, expanse, nullflare; + + public static void load() { gelionyteWall = new Wall("gelionyte-wall"){{ requirements(Category.defense, with(KallisteaItems.gelionyte, 6)); @@ -85,7 +90,7 @@ public static void load() { moveWhileCharging = false; ammo( - KallisteaItems.quartz, new BasicBulletType(11,90){{ + KallisteaItems.quartz, new BasicBulletType(11,115){{ width = 6; height = 16; lifetime = 60; @@ -248,7 +253,7 @@ KallisteaItems.quartz, new BasicBulletType(11,90){{ fragRandomSpread = 45; fragAngle = 180; fragSpread = 45; - fragBullet = new BasicBulletType(8, 30){{ + fragBullet = new BasicBulletType(8, 45){{ lifetime = 10; width = 5; height = 14; @@ -501,6 +506,98 @@ KallisteaItems.gelionyte, new BasicBulletType(2.3f, 150, "epsilon-plasm-bullet") }}; }}; }}; + // I want to make it look like The Orbital Strike Cannon from Unstable SMPa + /*nullflare = new EpsItemTurret("nullflare"){{ + requirements(Category.turret, with(KallisteaItems.magnetite, 950, KallisteaItems.fylion, 1350, KallisteaItems.tantalum, 900, KallisteaItems.anveiur, 640)); + size = 6; + health = 4500; + fraction = "Incers"; + consumePower(390f); + recoil = 2; + shake = 11f; + reload = 180; + range = 1080; + shoot.firstShotDelay = 300; + moveWhileCharging = false; + ammo( + KallisteaItems.tantalum, new BasicBulletType(10, 400){{ + width = 5; + height = 5; + smokeEffect = Fx.shootBigSmoke; + lifetime = 100; + speed = 5f; + ammoMultiplier = 1; + hitColor = backColor = Color.valueOf("633163"); + frontColor = trailColor = Color.valueOf("966596"); + trailWidth = 5f; + trailLength = 17; + splashDamage = 450; + splashDamageRadius = 73; + fragAngle = 360; + fragBullets = 12; + fragBullet = new BasicBulletType(650, 4){{ + width = 4; + height = 4; + lifetime = 60; + speed = 1.5f; + hitEffect = Fx.blastExplosion; + fragAngle = 135; + fragBullets = 5; + fragBullet = new BasicBulletType(350, 4){{ + width = 4; + height = 4; + lifetime = 60; + speed = 1.5f; + hitEffect = Fx.blastExplosion; + fragAngle = 180; + fragBullets = 7; + fragBullet = new BasicBulletType(150, 4){{ + width = 4; + height = 4; + lifetime = 60; + speed = 1.5f; + hitEffect = Fx.blastExplosion; + fragAngle = 215; + fragBullets = 9; + fragBullet = new BasicBulletType(95, 4){{ + width = 4; + height = 4; + lifetime = 60; + speed = 1.5f; + hitEffect = Fx.blastExplosion; + }}; + }}; + }}; + }}; + }} + ); + }};*/ + + testTurret = new EpsItemTurret("teleport-turret"){{ + requirements(Category.turret, with( + Items.copper, 300, + Items.silicon, 200 + )); + + ammo( + Items.surgeAlloy, + new RingExplosionBullet(){{ + rings = 4; + bulletsPerRing = 32; + ringBullet = new BasicBulletType(1.5f, 50f){{ + lifetime = 25f; + + splashDamage = 120f; + splashDamageRadius = 32f; + + hitEffect = Fx.blastExplosion; + despawnEffect = Fx.blastExplosion; + + fragBullets = 0; + }}; + }} + ); + }}; } } diff --git a/src/epsilon/content/Kallistea/blocks/KallisteaEnv.java b/src/epsilon/content/Kallistea/blocks/KallisteaEnv.java index 640a4d4..f467f70 100644 --- a/src/epsilon/content/Kallistea/blocks/KallisteaEnv.java +++ b/src/epsilon/content/Kallistea/blocks/KallisteaEnv.java @@ -1,6 +1,7 @@ package epsilon.content.Kallistea.blocks; import arc.graphics.Color; +import epsilon.content.Kallistea.EpsMusic; import mindustry.content.Fx; import mindustry.world.Block; import mindustry.world.blocks.environment.*; @@ -44,10 +45,7 @@ public class KallisteaEnv { // Thermalitic biome thermaliticFloor, thermaliticDarkFloor, thermaliticBrownFloor, thermaliticVulcanFloor, thermaliticWall,thermaliticWallAlt, thermaliticDarkWall, thermaliticBrownWall, thermaliticBrownWallAlt, thermaliticBoulder, thermaliticDarkBoulder, thermaliticBrownBoulder, - miniVulcan, vulcan, - - // broken facility - facilityTile1, facilityTile2, facilityTile3, facilityWalls; + miniVulcan, vulcan; public static void load() { { @@ -65,9 +63,10 @@ public static void load() { //PURYSTAL BIOME - purystalErodedFloor = new Floor("purystal-eroded-floor", 6); - purystalFloor = new Floor("purystal-floor", 6){{this.albedo = 0.35f;}}; - purystalLightFloor = new Floor("purystal-light-floor", 6); + purystalErodedFloor = new Floor("purystal-eroded-floor", 6){{walkSound= EpsMusic.purystalWalk; + }}; + purystalFloor = new Floor("purystal-floor", 6){{this.albedo = 0.35f;walkSound= EpsMusic.purystalWalk;}}; + purystalLightFloor = new Floor("purystal-light-floor", 6){{walkSound= EpsMusic.purystalWalk;}}; purystalWall = new StaticWall("purystal-wall"){{variants = 4; purystalErodedFloor.asFloor().wall = this; purystalFloor.asFloor().wall = this; purystalLightFloor.asFloor().wall = this; }}; @@ -163,16 +162,6 @@ public static void load() { // vulcans vulcan = new Vulcan("thermalitic-vulcan"){{variants = 2; parent = blendGroup = thermaliticVulcanFloor; emitLight = true; lightColor = Color.valueOf("d46108"); lightRadius = 45; effect = Fx.fire;}}; miniVulcan = new Vulcan("thermalitic-vulcan-mini"){{variants = 2; parent = blendGroup = thermaliticVulcanFloor; mini=true; emitLight = true; lightColor = Color.valueOf("d46108"); lightRadius = 25; effect = Fx.fire;}}; - - // facility biome - facilityTile1 = new TiledFloor("facility-tile-1") {{ - }}; - facilityTile2 = new TiledFloor("facility-tile-2"){{ - }}; - facilityTile3 = new TiledFloor("facility-tile-3"){{ - }}; - facilityWalls = new StaticWall("facility-walls"){{ - }}; } } } diff --git a/src/epsilon/content/Kallistea/blocks/KallisteaPower.java b/src/epsilon/content/Kallistea/blocks/KallisteaPower.java index 5795353..1513000 100644 --- a/src/epsilon/content/Kallistea/blocks/KallisteaPower.java +++ b/src/epsilon/content/Kallistea/blocks/KallisteaPower.java @@ -4,6 +4,7 @@ import epsilon.EpsilonVars; import epsilon.content.Kallistea.KallisteaItems; import mindustry.entities.effect.ParticleEffect; +import mindustry.graphics.Layer; import mindustry.type.Category; import mindustry.world.Block; import mindustry.world.blocks.power.ConsumeGenerator; @@ -11,6 +12,7 @@ import mindustry.world.blocks.power.PowerDiode; import mindustry.world.blocks.power.PowerNode; import mindustry.world.draw.DrawDefault; +import mindustry.world.draw.DrawGlowRegion; import mindustry.world.draw.DrawMulti; import mindustry.world.draw.DrawRegion; @@ -34,6 +36,7 @@ public static void load(){ sizeFrom = 3.5f; sizeTo = 0; spin = 5f; + layer = Layer.block + 0.1f; colorFrom = Color.valueOf("effdff"); colorTo = Color.valueOf("8b9cd3"); }}; @@ -42,6 +45,9 @@ public static void load(){ new DrawRegion("-rotator"){{ rotateSpeed = 1.25f; }}, + new DrawGlowRegion("-glow"){{ + color = Color.valueOf("959bae"); + }}, new DrawDefault() ); }}; diff --git a/src/epsilon/content/Kallistea/blocks/KallisteaProduction.java b/src/epsilon/content/Kallistea/blocks/KallisteaProduction.java index 88f29ce..82f4122 100644 --- a/src/epsilon/content/Kallistea/blocks/KallisteaProduction.java +++ b/src/epsilon/content/Kallistea/blocks/KallisteaProduction.java @@ -93,7 +93,7 @@ public static void load(){ fylionSmelter = new GenericCrafter("fylion-smelter"){{ requirements(Category.crafting, with(KallisteaItems.calcite, 120, KallisteaItems.quartz, 40)); health = 400; - size = 4; + size = 3; squareSprite = false; hasPower = true; hasLiquids = false; @@ -101,24 +101,19 @@ public static void load(){ consumePower(1.2f); consumeItems(with(KallisteaItems.calcite, 2, KallisteaItems.quartz, 1)); craftTime = 80f; - craftEffect = new ParticleEffect(){{ - particles = 10; - lifetime = 600f; - length = 700f; - baseLength = 5f; - sizeFrom = 4f; - sizeTo = 0f; - cone = 20f; - baseRotation = 45f; - colorFrom = Color.valueOf("709c9c"); - colorTo = Color.valueOf("417d7d"); - interp = Interp.pow2In; - sizeInterp = Interp.pow2Out; - }}; + craftEffect = Fx.none; outputItem = new ItemStack(KallisteaItems.fylion, 1); drawer = new DrawMulti( new DrawRegion("-bottom"), + new DrawCrucibleFlame(){{ + flameColor = Color.valueOf("420303"); + circleStroke = 0.5f; + }}, new DrawDefault(), + new DrawGlowRegion("-glow"){{ + color = Color.valueOf("a7dad3"); + glowIntensity = 0.7f; + }}, new DrawRegion("-top")); }}; tantalumSynthesizer = new GenericCrafter("tantalum-synthesizer"){{ @@ -135,35 +130,6 @@ public static void load(){ craftTime = 180f; updateEffect = EpsFx.purpleFire; updateEffectChance = 0.035f; - craftEffect = new MultiEffect( - new RadialEffect() {{ - amount = 6; - lifetime = 45f; - effect = new ParticleEffect(){{ - strokeFrom = 0.6f; - strokeTo = 0f; - colorFrom = Color.valueOf("ff80ff"); - colorTo = Color.valueOf("8000ff"); - line = true; - }}; - }}, - - new ParticleEffect() {{ - particles = 8; - lifetime = 80f; - sizeFrom = 2f; - sizeTo = 0f; - lenFrom = 2f; - lenTo = 8f; - cone = 25f; - length = 40f; - baseRotation = 45; - colorFrom = Color.valueOf("a480bf"); - colorTo = Color.valueOf("4b0082"); - layer = Layer.flyingUnit + 0.1f; - }}, - EpsFx.purpleSmoke - ); outputItem = new ItemStack(KallisteaItems.tantalum, 3); drawer = new DrawMulti( new DrawRegion("-bottom"), diff --git a/src/epsilon/content/Kallistea/blocks/KallisteaStorage.java b/src/epsilon/content/Kallistea/blocks/KallisteaStorage.java index 5c1cfda..b44e2f6 100644 --- a/src/epsilon/content/Kallistea/blocks/KallisteaStorage.java +++ b/src/epsilon/content/Kallistea/blocks/KallisteaStorage.java @@ -4,6 +4,7 @@ import epsilon.content.Kallistea.EpsMusic; import epsilon.content.Kallistea.KallisteaUnitTypes; import mindustry.world.Block; +import mindustry.world.Build; import mindustry.world.blocks.storage.*; import mindustry.type.Category; import epsilon.content.Kallistea.KallisteaItems; @@ -14,7 +15,7 @@ public class KallisteaStorage{ public static Block - coreObscurityBroken, coreObscurity; + coreObscurityBroken, coreObscurity, coreObscurityb; public static void load(){ coreObscurityBroken = new CoreBlock("core-obscurity-broken"){{ @@ -42,5 +43,17 @@ public static void load(){ requiresCoreZone = false; launchEffect = EpsFx.launchCore; }}; + coreObscurityb = new EpsilonCoreBlock("core-obscurityb"){{ + requirements(Category.effect, BuildVisibility.sandboxOnly, with(KallisteaItems.calcite, 120, KallisteaItems.gelionyte, 40)); + health = 1475; + size = 4; + itemCapacity = 1450; + fogRadius = 5; + unitType = KallisteaUnitTypes.penumbraBroken; + captureInvicibility = 5f; + alwaysUnlocked = true; + requiresCoreZone = false; + launchEffect = EpsFx.launchCore; + }}; } } diff --git a/src/epsilon/content/Kallistea/blocks/LoreBlocks.java b/src/epsilon/content/Kallistea/blocks/LoreBlocks.java index 57ea3cc..8e61ceb 100644 --- a/src/epsilon/content/Kallistea/blocks/LoreBlocks.java +++ b/src/epsilon/content/Kallistea/blocks/LoreBlocks.java @@ -1,21 +1,27 @@ package epsilon.content.Kallistea.blocks; +import arc.graphics.Color; import epsilon.EpsilonVars; +import epsilon.content.Kallistea.EpsFx; +import mindustry.content.Fx; +import mindustry.entities.effect.*; +import mindustry.graphics.Pal; import mindustry.world.Block; import mindustry.type.Category; -import mindustry.type.ItemStack; import epsilon.content.Kallistea.KallisteaItems; import epsilon.world.blocks.lore.*; +import mindustry.world.blocks.production.GenericCrafter; +import mindustry.world.meta.BuildVisibility; import static mindustry.type.ItemStack.with; public class LoreBlocks{ public static Block - testBlock1, cutsceneBlock; + testBlock1, newspaper1, cutsceneBlock, radioTower; public static void load(){ if(EpsilonVars.testingMode) { - testBlock1 = new ImageBlock("test-block1") {{ + testBlock1 = new DialogBlock("test-block1") {{ requirements(Category.distribution, with(KallisteaItems.calcite, 14884252)); health = 1; size = 1; @@ -24,11 +30,37 @@ public static void load(){ }}; } - cutsceneBlock = new CutsceneBlock("cutscene-block"){{ requirements(Category.logic, with(KallisteaItems.gelionyte, 1448425269)); size = 1; health = 99999; + ignoreBuildDarkness = true; + }}; + newspaper1 = new DialogBlock("newspaper1") {{ + requirements(Category.logic, buildVisibility= BuildVisibility.editorOnly, with(KallisteaItems.calcite, 14884252)); + health = 1; + size = 1; + imageName = "newspaper-1"; + dialogName = "incers-newspaper"; + }}; + + radioTower = new EffectableBlock("radio-tower"){{ + requirements(Category.logic, with(KallisteaItems.calcite, 120, KallisteaItems.gelionyte, 100, KallisteaItems.fylion, 35)); + size = 4; + health = 235; + squareSprite = false; + consumePower(2.5f); + craftTime = 240f; + craftEffect = new MultiEffect( + EpsFx.circleFlashOut, + new WaveEffect(){{ + colorFrom = Color.valueOf("ba8ede"); + colorTo = Color.valueOf("351f47"); + lightColor = Color.valueOf("ba8ede"); + sides = 4; + lightScl = 0.7f; + }} + ); }}; } } diff --git a/src/epsilon/cutscenes/TextShowup.java b/src/epsilon/cutscenes/TextShowup.java index 7f7f024..bbbf7b1 100644 --- a/src/epsilon/cutscenes/TextShowup.java +++ b/src/epsilon/cutscenes/TextShowup.java @@ -39,7 +39,7 @@ public void begin(){ table.touchable = Touchable.disabled; table.setFillParent(true); table.actions(Actions.delay(duration * 0.8f), Actions.fadeOut(duration * 0.3f, Interp.fade), Actions.remove()); - table.bottom().table(Styles.black5, t -> t.margin(1).image(Core.atlas.find(unitIconName)).style(Styles.outlineLabel)).padLeft(-15f).padBottom(70f).size(65f, 80f); + table.bottom().table(Styles.black5, t -> t.margin(1).image(Core.atlas.find(unitIconName + "-full")).style(Styles.outlineLabel)).padLeft(-15f).padBottom(70f).size(65f, 80f); table.bottom().table(Styles.black5, t -> t.margin(10f).add(Core.bundle.get(text)).style(Styles.outlineLabel)).padRight(65f).padBottom(70f).size(Core.bundle.get(text).length() * 11.5f, 60f); Core.scene.add(table); } diff --git a/src/epsilon/graphics/EpsShaders.java b/src/epsilon/graphics/EpsShaders.java new file mode 100644 index 0000000..4402a06 --- /dev/null +++ b/src/epsilon/graphics/EpsShaders.java @@ -0,0 +1,107 @@ +package epsilon.graphics; + +import arc.files.Fi; +import arc.graphics.Color; +import arc.graphics.g2d.Draw; +import arc.graphics.gl.Shader; +import arc.math.geom.Vec3; +import mindustry.Vars; +import mindustry.graphics.Shaders; +import mindustry.type.Planet; + +import static mindustry.Vars.*; + + +// note: some code is from omaloon +public class EpsShaders{ + public static PlanetTextureShader planetTextureShader; + public static EpsPlanetShader planet; + + public static void load(){ + planetTextureShader = new PlanetTextureShader(); + planet = new EpsPlanetShader(); + } + + + public static Fi file(String name){ + return tree.get("shaders/" + name); + } + + + public static class EpsPlanetShader extends EpsLoadShader{ + public Vec3 lightDir = (new Vec3(1.0F, 1.0F, 1.0F)).nor(); + public Color ambientColor; + public Vec3 camDir; + public Vec3 camPos; + public boolean emissive; + public Planet planet; + + public EpsPlanetShader() { + super("planet", "planet"); + this.ambientColor = Color.white.cpy(); + this.camDir = new Vec3(); + this.camPos = new Vec3(); + } + + @Override + public void apply() { + this.camDir.set(Vars.renderer.planets.cam.direction).rotate(Vec3.Y, this.planet.getRotation()); + this.setUniformf("u_lightdir", this.lightDir); + this.setUniformf("u_ambientColor", this.ambientColor.r, this.ambientColor.g, this.ambientColor.b); + this.setUniformf("u_camdir", this.camDir); + this.setUniformf("u_campos", Vars.renderer.planets.cam.position); + this.setUniformf("u_emissive", this.emissive ? 1.0F : 0.0F); + } + } + + public static class PlanetTextureShader extends EpsLoadShader{ + public Vec3 lightDir = new Vec3(1, 1, 1).nor(); + public Color ambientColor = Color.white.cpy(); + public Vec3 camDir = new Vec3(); + public float alpha = 1f; + public Planet planet; + + public PlanetTextureShader(){ + super("circle-mesh", "circle-mesh"); + } + + @Override + public void apply(){ + camDir.set(renderer.planets.cam.direction).rotate(Vec3.Y, planet.getRotation()); + + setUniformf("u_alpha", alpha); + setUniformf("u_lightdir", lightDir); + setUniformf("u_ambientColor", ambientColor.r, ambientColor.g, ambientColor.b); + setPlanetInfo("u_sun_info", planet.solarSystem); + setPlanetInfo("u_planet_info", planet); + setUniformf("u_camdir", camDir); + setUniformf("u_campos", renderer.planets.cam.position); + } + + private void setPlanetInfo(String name, Planet planet){ + Vec3 position = planet.position; + Shader shader = this; + shader.setUniformf(name, position.x, position.y, position.z, planet.radius); + } + } + public static class EpsLoadShader extends Shader { + + public EpsLoadShader(String fragment, String vertex){ + super( + file(vertex + ".vert"), + file(fragment + ".frag") + ); + } + + public void set(){ + Draw.shader(this); + } + + @Override + public void apply(){ + super.apply(); + + setUniformf("u_time_millis", System.currentTimeMillis() / 1000f * 60f); + } + } +} diff --git a/src/epsilon/graphics/g3d/RingMesh.java b/src/epsilon/graphics/g3d/RingMesh.java new file mode 100644 index 0000000..5952e5a --- /dev/null +++ b/src/epsilon/graphics/g3d/RingMesh.java @@ -0,0 +1,198 @@ +package epsilon.graphics.g3d; + + +import java.nio.FloatBuffer; + +import arc.Core; +import arc.graphics.*; +import arc.graphics.g2d.TextureRegion; +import arc.graphics.gl.Shader; +import arc.math.geom.*; +import arc.util.Tmp; +import epsilon.graphics.EpsShaders; +import mindustry.graphics.g3d.*; +import mindustry.type.Planet; + +/**A ring-shaped mesh for planets.... @author Arksource */ +public class RingMesh extends PlanetMesh{ + + public TextureRegion region; + public Texture texture; + public Color color = Color.white.cpy(); + + private static final Mat3D combinedMat = new Mat3D(); + + private static class MeshUtils { + static final float[] floats = new float[8]; + static Mesh mesh; + + static void begin(int count) { + mesh = new Mesh(true, count, 0, + VertexAttribute.position3, + VertexAttribute.normal, + VertexAttribute.texCoords + ); + + mesh.getVerticesBuffer().limit(count * 8); + mesh.getVerticesBuffer().position(0); + } + + static Mesh end(){ + Mesh last = mesh; + + last.getVerticesBuffer().limit(last + .getVerticesBuffer() + .position() + ); + + mesh = null; + return last; + } + + static void vert(Vec3 a, Vec3 normal, Vec2 texCords){ + FloatBuffer buffer = mesh.getVerticesBuffer(); + + floats[0] = a.x; + floats[1] = a.y; + floats[2] = a.z; + floats[3] = normal.x; + floats[4] = normal.y; + floats[5] = normal.z; + floats[6] = texCords.x; + floats[7] = texCords.y; + + buffer.put(floats); + } + } + + public RingMesh(TextureRegion region, Planet planet, int sides, float radiusIn, float radiusOut, Vec3 axis){ + this.planet = planet; + this.region = region; + this.texture = region.texture; + + MeshUtils.begin(sides * 12); + + Vec3 plane = new Vec3() + .set(1, 0, 0) + .rotate(Vec3.X, 90) + .rotate(Vec3.X, axis.angle(Vec3.X) + 1) + .rotate(Vec3.Y, axis.angle(Vec3.Y) + 1) + .rotate(Vec3.Z, axis.angle(Vec3.Z) + 1) + .crs(axis); + + Vec3 inv = axis.cpy().unaryMinus(); + Vec3 innerCurrent = Tmp.v31, outerCurrent = Tmp.v32; + Vec3 innerNext = Tmp.v33, outerNext = Tmp.v34; + Vec2 tex = Tmp.v1; + + float texU = region.u; + float texV = region.v; + float texU2 = region.u2; + float texV2 = region.v2; + + float uInner = texU; + float uOuter = texU2; + + for(int i = 0; i < sides; i++){ + float angleCurrent = i * 1f / sides * 360; + float angleNext = (i + 1f) / sides * 360; + + float vCurrentBase = i * 1f / sides; + float vNextBase = (i + 1f) / sides; + + float vCurrent = texV + vCurrentBase * (texV2 - texV); + float vNext = texV + vNextBase * (texV2 - texV); + + innerCurrent.set(plane).rotate(axis, angleCurrent).setLength2(1).scl(radiusIn); + outerCurrent.set(plane).rotate(axis, angleCurrent).setLength2(1).scl(radiusOut); + innerNext.set(plane).rotate(axis, angleNext).setLength2(1).scl(radiusIn); + outerNext.set(plane).rotate(axis, angleNext).setLength2(1).scl(radiusOut); + + // Caras frontales (Triángulo 1) + MeshUtils.vert(innerCurrent, axis, tex.set(uInner, vCurrent)); + MeshUtils.vert(outerCurrent, axis, tex.set(uOuter, vCurrent)); + MeshUtils.vert(outerNext, axis, tex.set(uOuter, vNext)); + + // Caras frontales (Triángulo 2) + MeshUtils.vert(outerNext, axis, tex.set(uOuter, vNext)); + MeshUtils.vert(innerNext, axis, tex.set(uInner, vNext)); + MeshUtils.vert(innerCurrent, axis, tex.set(uInner, vCurrent)); + + // Caras traseras (zona levemente oscura :p) + MeshUtils.vert(outerNext, inv, tex.set(uOuter, vNext)); + MeshUtils.vert(outerCurrent, inv, tex.set(uOuter, vCurrent)); + MeshUtils.vert(innerCurrent, inv, tex.set(uInner, vCurrent)); + + MeshUtils.vert(innerCurrent, inv, tex.set(uInner, vCurrent)); + MeshUtils.vert(innerNext, inv, tex.set(uInner, vNext)); + MeshUtils.vert(outerNext, inv, tex.set(uOuter, vNext)); + } + mesh = MeshUtils.end(); + } + + private static Shader shader(){ + return EpsShaders.planetTextureShader; + } + + @Override + public void preRender(PlanetParams params){ + EpsShaders.planetTextureShader.planet = this.planet; + + if(planet == null || planet.solarSystem == null){ + return; + } + EpsShaders.planetTextureShader.lightDir + .set(planet.solarSystem.position) + .sub(planet.position) + .rotate(Vec3.Y, planet.getRotation()) + .nor(); + + EpsShaders.planetTextureShader.ambientColor + .set(planet.solarSystem.lightColor); + + EpsShaders.planetTextureShader.alpha = 1f; + } + + private void setPlanetInfo(String name, Planet planet){ + if (planet == null) return; + + Vec3 position = planet.position; + Shader shader = shader(); + shader.setUniformf(name, position.x, position.y, position.z, planet.radius); + } + @Override + public void render(PlanetParams params, Mat3D projection, Mat3D transform){ + preRender(params); + + if (planet == null) return; + + Shader shader = shader(); + shader.bind(); + + Mat3D combined = combinedMat.set(projection).mul(transform); + shader.setUniformMatrix4("u_mat", combined.val); + shader.setUniformMatrix4("u_proj", projection.val); + shader.setUniformMatrix4("u_trans", transform.val); + + shader.setUniformf("u_color", color); + texture.bind(0); + shader.setUniformi("u_texture", 0); + + shader.setUniformf("u_lightdir", EpsShaders.planetTextureShader.lightDir); + shader.setUniformf("u_ambientColor", EpsShaders.planetTextureShader.ambientColor); + shader.setUniformf("u_alpha", EpsShaders.planetTextureShader.alpha); + shader.setUniformf("u_campos", Core.camera.position); + + setPlanetInfo("u_sun_info", planet.solarSystem); + setPlanetInfo("u_planet_info", planet); + + shader.apply(); + + mesh.render(shader, Gl.triangles); + } + + @Override + public void dispose() { + mesh.dispose(); + } +} \ No newline at end of file diff --git a/src/epsilon/graphics/g3d/RotMesh.java b/src/epsilon/graphics/g3d/RotMesh.java new file mode 100644 index 0000000..6d0882a --- /dev/null +++ b/src/epsilon/graphics/g3d/RotMesh.java @@ -0,0 +1,53 @@ +package epsilon.graphics.g3d; + +import arc.graphics.*; +import arc.graphics.gl.Shader; +import arc.math.geom.*; +import arc.util.Time; +import epsilon.graphics.EpsShaders; +import mindustry.graphics.g3d.*; +import mindustry.type.Planet; + +/** + * Planet mesh which rotates in real time. + * @author ItzCraft + **/ +public class RotMesh implements GenericMesh{ + protected Planet planet; + protected Mesh mesh; + protected Shader shader; + + private float angle; + + public RotMesh(Planet planet, int divisions){ + this.planet = planet; + this.shader = EpsShaders.planet; + this.mesh = MeshBuilder.buildHex(planet.generator, divisions, planet.radius, 0.2F); + } + + @Override + public void render(PlanetParams params, Mat3D projection, Mat3D transform){ + if(mesh.isDisposed())return; + + Mat3D mat = new Mat3D().set(transform); + angle += Time.delta / planet.rotateTime; + mat.rotate(Vec3.Y, angle); + + EpsShaders.planet.planet = planet; + shader.bind(); + shader.setUniformMatrix4("u_proj", projection.val); + shader.setUniformMatrix4("u_trans", mat.val); + shader.setUniformMatrix4("u_normalMat", mat.val); + EpsShaders.planet.emissive = planet.generator != null && planet.generator.isEmissive(); + EpsShaders.planet.ambientColor.set(planet.solarSystem.lightColor); + shader.apply(); + mesh.render(shader, Gl.triangles); + } + + @Override + public void dispose(){ + if(mesh != null){ + mesh.dispose(); + } + } +} diff --git a/src/epsilon/logic/EpsilonLogic.java b/src/epsilon/logic/EpsilonLogic.java index bbb53d7..a32a392 100644 --- a/src/epsilon/logic/EpsilonLogic.java +++ b/src/epsilon/logic/EpsilonLogic.java @@ -13,12 +13,14 @@ public static void init(){ epsilonCategory = new LCategory("epsilon-category", Color.valueOf("c270bc")); LAssembler.customParsers.put("playerchange", PlayerChange::new); + LAssembler.customParsers.put("playercoordinates", PlayerCoordinates::new); LAssembler.customParsers.put("setvars", SetVars::new); LAssembler.customParsers.put("customeffect", CustomEffect::new); LAssembler.customParsers.put("resetmusic", ResetMusic::new); LAssembler.customParsers.put("textdialog", TextDialog::new); LogicIO.allStatements.addUnique(PlayerChange::new); + LogicIO.allStatements.addUnique(PlayerCoordinates::new); LogicIO.allStatements.addUnique(SetVars::new); LogicIO.allStatements.addUnique(CustomEffect::new); LogicIO.allStatements.addUnique(ResetMusic::new); diff --git a/src/epsilon/logic/instructions/PlayerChangeI.java b/src/epsilon/logic/instructions/PlayerChangeI.java index 49cc93d..5a218b0 100644 --- a/src/epsilon/logic/instructions/PlayerChangeI.java +++ b/src/epsilon/logic/instructions/PlayerChangeI.java @@ -1,6 +1,5 @@ package epsilon.logic.instructions; -import epsilon.ui.EpsUi; import mindustry.gen.Unit; import mindustry.logic.LExecutor; import mindustry.logic.LExecutor.LInstruction; diff --git a/src/epsilon/logic/instructions/PlayerCoordinatesI.java b/src/epsilon/logic/instructions/PlayerCoordinatesI.java new file mode 100644 index 0000000..92c0edd --- /dev/null +++ b/src/epsilon/logic/instructions/PlayerCoordinatesI.java @@ -0,0 +1,24 @@ +package epsilon.logic.instructions; + +import mindustry.logic.LExecutor; +import mindustry.logic.LVar; + +import static mindustry.Vars.player; + +public class PlayerCoordinatesI implements LExecutor.LInstruction { + public LVar x,y; + + public PlayerCoordinatesI(LVar x,LVar y){ + this.x = x; + this.y = y; + } + + public PlayerCoordinatesI(){} + + @Override + public void run(LExecutor exec){ + //somewhy it works in WU + player.unit().x = x.numf()*8; + player.unit().y = y.numf()*8; + } +} diff --git a/src/epsilon/logic/statements/PlayerCoordinates.java b/src/epsilon/logic/statements/PlayerCoordinates.java new file mode 100644 index 0000000..f1b8386 --- /dev/null +++ b/src/epsilon/logic/statements/PlayerCoordinates.java @@ -0,0 +1,54 @@ +package epsilon.logic.statements; + +import arc.scene.ui.layout.Table; +import epsilon.logic.EpsilonLogic; +import epsilon.logic.instructions.PlayerCoordinatesI; +import mindustry.logic.LAssembler; +import mindustry.logic.LCategory; +import mindustry.logic.LExecutor; +import mindustry.logic.LStatement; + +public class PlayerCoordinates extends LStatement { + public String x = "0", y="0"; + + public PlayerCoordinates(String[] tokens){ + x = tokens[1]; + y = tokens[2]; + } + + public PlayerCoordinates(){} + + @Override + public void build(Table table){ + table.add(" x "); + + fields(table, x, v -> x = v); + + table.add(" y "); + + fields(table, y, i -> y = i); + } + + @Override + public boolean privileged() { + return true; + } + + @Override + public LExecutor.LInstruction build(LAssembler builder) { + return new PlayerCoordinatesI(builder.var(x), builder.var(y)); + } + + @Override + public LCategory category() { + return EpsilonLogic.epsilonCategory; + } + + public void write(StringBuilder builder){ + builder.append("playercoordinates"); + builder.append(" "); + builder.append(x); + builder.append(" "); + builder.append(y); + } +} diff --git a/src/epsilon/planet/EnvirosMoonGenerator.java b/src/epsilon/planet/EnvirosMoonGenerator.java new file mode 100644 index 0000000..1e3d795 --- /dev/null +++ b/src/epsilon/planet/EnvirosMoonGenerator.java @@ -0,0 +1,31 @@ +package epsilon.planet; + +import arc.graphics.*; +import arc.math.*; +import arc.math.geom.*; +import arc.util.Tmp; +import arc.util.noise.*; +import epsilon.content.Kallistea.blocks.KallisteaEnv; +import mindustry.content.Blocks; +import mindustry.maps.generators.PlanetGenerator; +import mindustry.world.Block; + +public class EnvirosMoonGenerator extends PlanetGenerator { + public float heightScl = 0.5f, octaves = 5, persistence = 0.51f, heightPow = 0.7f, heightMult = 0.74f; + + @Override + public float getHeight(Vec3 position){ + return Mathf.pow(rawHeight(position), heightPow) * heightMult; + } + + float rawHeight(Vec3 position){ + return Simplex.noise3d(seed, octaves, persistence, 1f/heightScl, 10f + position.x, 10f + position.y, 10f + position.z); + } + + @Override + public void getColor(Vec3 position, Color out){ + Block block = rawHeight(position) < 0.2f ? Blocks.carbonStone : rawHeight(position) < 0.3f ? Blocks.crystalFloor : rawHeight(position) < 0.45f ? Blocks.cryofluid : Blocks.ice; + + out.set(block.mapColor).a(1f - block.albedo); + } +} \ No newline at end of file diff --git a/src/epsilon/planet/HyrokatMoonGenerator.java b/src/epsilon/planet/HyrokatMoonGenerator.java new file mode 100644 index 0000000..93483b3 --- /dev/null +++ b/src/epsilon/planet/HyrokatMoonGenerator.java @@ -0,0 +1,31 @@ +package epsilon.planet; + +import arc.graphics.*; +import arc.math.*; +import arc.math.geom.*; +import arc.util.Tmp; +import arc.util.noise.*; +import epsilon.content.Kallistea.blocks.KallisteaEnv; +import mindustry.content.Blocks; +import mindustry.maps.generators.PlanetGenerator; +import mindustry.world.Block; + +public class HyrokatMoonGenerator extends PlanetGenerator { + public float heightScl = 0.7f, octaves = 6, persistence = 0.45f, heightPow = 1.1f, heightMult = 0.86f; + + @Override + public float getHeight(Vec3 position){ + return Mathf.pow(rawHeight(position), heightPow) * heightMult; + } + + float rawHeight(Vec3 position){ + return Simplex.noise3d(seed, octaves, persistence, 1f/heightScl, 10f + position.x, 10f + position.y, 10f + position.z); + } + + @Override + public void getColor(Vec3 position, Color out){ + Block block = rawHeight(position) < 0.2f ? Blocks.cryofluid : rawHeight(position) < 0.3f ? Blocks.ice : rawHeight(position) < 0.45f ? Blocks.iceSnow : Blocks.iceWall; + + out.set(block.mapColor).a(1f - block.albedo); + } +} diff --git a/src/epsilon/type/EpsilonWeapon.java b/src/epsilon/type/EpsilonWeapon.java index 18e99c5..0884325 100644 --- a/src/epsilon/type/EpsilonWeapon.java +++ b/src/epsilon/type/EpsilonWeapon.java @@ -1,43 +1,38 @@ package epsilon.type; +import arc.math.Angles; +import arc.math.Mathf; import arc.struct.Seq; import arc.util.Time; +import mindustry.content.Fx; import mindustry.entities.Effect; import mindustry.entities.units.WeaponMount; import mindustry.gen.Unit; import mindustry.type.Weapon; public class EpsilonWeapon extends Weapon { - private Seq effects = new Seq<>(); + public Effect effect = Fx.none; public float effectInterval = 60; private float effectTimer = 0f; public float effectX = 0; public float effectY = 0; + public float effectChance = 1f; public EpsilonWeapon(String name){ super(name); } - public void addEffects(Effect...effect){ - for(Effect eff : effect){ - effects.add(eff); - } - } - @Override public void update(Unit unit, WeaponMount mount){ super.update(unit, mount); effectTimer += Time.delta; - + float mountX = unit.x + Angles.trnsx(unit.rotation - 90, x, y); + float mountY = unit.y + Angles.trnsy(unit.rotation - 90, x, y); + float weaponRotation = unit.rotation - 90 + (rotate ? mount.rotation : baseRotation); + float wX = mountX + Angles.trnsx(weaponRotation, this.effectX, this.effectY); + float wY = mountY + Angles.trnsy(weaponRotation, this.effectX, this.effectY); if(effectTimer >= effectInterval){ - effectTimer = 0f; - for(Effect eff : effects){ - eff.at(unit.x + effectX, unit.y + effectY, unit.rotation + mount.rotation); - } + effectTimer = 0; + if(Mathf.chance(effectChance)) effect.at(wX, wY, mount.rotation + unit.rotation()); } } - - @Override - public void draw(Unit unit, WeaponMount mount){ - super.draw(unit, mount); - } } diff --git a/src/epsilon/ui/EpsUi.java b/src/epsilon/ui/EpsUi.java index 6b0d6ad..148b75b 100644 --- a/src/epsilon/ui/EpsUi.java +++ b/src/epsilon/ui/EpsUi.java @@ -19,7 +19,7 @@ public static void textDialog(String text, String unitIcon, float duration, bool table.touchable = Touchable.disabled; table.setFillParent(true); table.actions(Actions.delay(duration * 0.8f), Actions.fadeOut(duration * 0.3f, Interp.fade), Actions.remove()); - table.bottom().table(Styles.black5, t -> t.margin(1).image(Core.atlas.find(unitIcon)).style(Styles.outlineLabel)).padLeft(-15f).padBottom(70f).size(65f, 80f); + table.bottom().table(Styles.black5, t -> t.margin(1).image(Core.atlas.find(unitIcon +"-full")).style(Styles.outlineLabel)).padLeft(-15f).padBottom(70f).size(65f, 80f); if(useBundle){ table.bottom().table(Styles.black5, t -> t.margin(10f).add(Core.bundle.get(text)).style(Styles.outlineLabel)).padRight(65f).padBottom(70f).size(Core.bundle.get(text).length() * 11.5f, 60f); } diff --git a/src/epsilon/world/blocks/defense/EpsShieldWall.java b/src/epsilon/world/blocks/defense/EpsShieldWall.java index eeff4df..a30a63a 100644 --- a/src/epsilon/world/blocks/defense/EpsShieldWall.java +++ b/src/epsilon/world/blocks/defense/EpsShieldWall.java @@ -126,14 +126,16 @@ public void damage(float damage) { @Override public void buildConfiguration(Table table){ - table.button(Icon.defense, EpsStyles.epsButtonImage, ()->{ - enabled = true; - deselect(); - }).size(50f); - table.button(Icon.cancel, EpsStyles.epsButtonImage, ()->{ - enabled = false; + if(Vars.player.team() == this.team()){ + table.button(Icon.defense, EpsStyles.epsButtonImage, ()->{ + enabled = true; deselect(); - }).size(50f); + }).size(50f); + table.button(Icon.cancel, EpsStyles.epsButtonImage, ()->{ + enabled = false; + deselect(); + }).size(50f); + } } @Override diff --git a/src/epsilon/world/blocks/lore/CutsceneBlock.java b/src/epsilon/world/blocks/lore/CutsceneBlock.java index 5f4ff43..3e0f202 100644 --- a/src/epsilon/world/blocks/lore/CutsceneBlock.java +++ b/src/epsilon/world/blocks/lore/CutsceneBlock.java @@ -27,6 +27,7 @@ public CutsceneBlock(String name){ solid = true; update = true; noUpdateDisabled = false; + forceDark = true; category = Category.logic; } @SuppressWarnings("InnerClassMayBeStatic") diff --git a/src/epsilon/world/blocks/lore/ImageBlock.java b/src/epsilon/world/blocks/lore/DialogBlock.java similarity index 55% rename from src/epsilon/world/blocks/lore/ImageBlock.java rename to src/epsilon/world/blocks/lore/DialogBlock.java index d301036..ead804a 100644 --- a/src/epsilon/world/blocks/lore/ImageBlock.java +++ b/src/epsilon/world/blocks/lore/DialogBlock.java @@ -2,20 +2,21 @@ import arc.Core; import arc.scene.ui.layout.Table; +import mindustry.Vars; +import mindustry.core.GameState; import mindustry.gen.Building; import mindustry.gen.Icon; import mindustry.ui.Styles; -import mindustry.ui.dialogs.LanguageDialog; import mindustry.world.Block; import mindustry.world.meta.BuildVisibility; import mindustry.ui.dialogs.BaseDialog; -public class ImageBlock extends Block{ +public class DialogBlock extends Block{ // idk If it gonna work with Textureregion public String imageName; public String dialogName; - public ImageBlock(String name){ + public DialogBlock(String name){ super(name); update = true; breakable = false; @@ -24,20 +25,19 @@ public ImageBlock(String name){ targetable = false; destructible = false; drawTeamOverlay = false; - buildVisibility = BuildVisibility.sandboxOnly; + buildVisibility = BuildVisibility.editorOnly; } - public class ImageBlockBuild extends Building{ + public class DialogBlockBuild extends Building{ @Override public void buildConfiguration(Table table){ table.button(Icon.eye, Styles.cleari, () -> { - BaseDialog imageShow = new BaseDialog(Core.bundle.get(dialogName)); - imageShow.addCloseButton(); - switch(Core.settings.getString("locale")){ - case "en" -> imageShow.cont.image(Core.atlas.find(imageName + "-eng")); - case "ru" -> imageShow.cont.image(Core.atlas.find(imageName + "-ru")); - } - imageShow.show(); + BaseDialog dialog = new BaseDialog(Core.bundle.get(dialogName)); + dialog.cont.center(); + dialog.cont.add(Core.bundle.get(imageName)).center(); + dialog.addCloseButton(); + Vars.state.set(GameState.State.paused); + dialog.show(); }).size(50f); } } diff --git a/src/epsilon/world/blocks/lore/EffectableBlock.java b/src/epsilon/world/blocks/lore/EffectableBlock.java new file mode 100644 index 0000000..826ee0a --- /dev/null +++ b/src/epsilon/world/blocks/lore/EffectableBlock.java @@ -0,0 +1,17 @@ +package epsilon.world.blocks.lore; + +import mindustry.world.blocks.production.GenericCrafter; +import mindustry.world.meta.Stat; + +public class EffectableBlock extends GenericCrafter{ + public EffectableBlock(String name){ + super(name); + } + @Override + public void setStats(){ + super.setStats(); + stats.remove(Stat.input); + stats.remove(Stat.output); + stats.remove(Stat.productionTime); + } +} diff --git a/src/epsilon/world/bullets/RingExplosionBullet.java b/src/epsilon/world/bullets/RingExplosionBullet.java new file mode 100644 index 0000000..4626631 --- /dev/null +++ b/src/epsilon/world/bullets/RingExplosionBullet.java @@ -0,0 +1,70 @@ +package epsilon.world.bullets; + +import arc.math.Angles; +import mindustry.entities.bullet.BulletType; +import mindustry.gen.Bullet; + +public class RingExplosionBullet extends BulletType { + + public int rings = 3; + public int bulletsPerRing = 20; + + public float ringSpacing = 20f; + + public BulletType ringBullet; + + public RingExplosionBullet(){ + speed = 0f; + lifetime = 1f; + + collides = false; + hittable = false; + absorbable = false; + keepVelocity = false; + } + + @Override + public void init(Bullet b){ + super.init(b); + + float tx = b.aimX; + float ty = b.aimY; + + b.set(tx, ty); + + createRings(b); + + hitEffect.at(tx, ty); + despawnEffect.at(tx, ty); + + b.remove(); + } + + private void createRings(Bullet b){ + + for(int ring = 0; ring < rings; ring++){ + + float radius = (ring + 1) * ringSpacing; + + float angleOffset = + (360f / bulletsPerRing) * ring / (float)rings; + + for(int i = 0; i < bulletsPerRing; i++){ + + float angle = + (360f / bulletsPerRing) * i + angleOffset; + + float x = b.x + Angles.trnsx(angle, radius); + float y = b.y + Angles.trnsy(angle, radius); + + ringBullet.create( + b, + b.team, + x, + y, + angle + ); + } + } + } +}