From 55a0f32d725d133aca453b0e714a69619fc34fed Mon Sep 17 00:00:00 2001 From: Shadow_Man <56026280+Astorin@users.noreply.github.com> Date: Sat, 20 Jan 2024 00:14:54 +0200 Subject: [PATCH 1/2] RU locale update for PyAL 2.1.15 (#224) * RU locale update for PyAL 2.1.15 * Update changelog.txt --- changelog.txt | 1 + locale/ru/entity.cfg | 7 ++++--- locale/ru/extras.cfg | 9 +++++++++ locale/ru/groups.cfg | 11 +++++++---- locale/ru/items.cfg | 4 ++++ locale/ru/techs.cfg | 8 ++++++++ locale/ru/tips.cfg | 2 ++ 7 files changed, 35 insertions(+), 7 deletions(-) diff --git a/changelog.txt b/changelog.txt index 1c29a64b..919e0dce 100644 --- a/changelog.txt +++ b/changelog.txt @@ -11,6 +11,7 @@ Date: ? - Fixed that composter turd path 1 module bonus did not work. (https://github.com/pyanodon/pybugreports/issues/370) - Stack filter inserters have been deleted. Removed stack filter inserters from sap turd path 2 recipe. - Fixed that chitin -> geothermal water produced at too low temperature for use in energy generation. + - Updated Russian locale (by Shadow_Man). --------------------------------------------------------------------------------------------------- Version: 2.1.14 Date: 2024-1-10 diff --git a/locale/ru/entity.cfg b/locale/ru/entity.cfg index 7f4a8193..21f79505 100644 --- a/locale/ru/entity.cfg +++ b/locale/ru/entity.cfg @@ -225,8 +225,9 @@ ez-ranch-mk01=Ферма желе МК1 ez-ranch-mk02=Ферма желе MK2 ez-ranch-mk03=Ферма желе MK3 ez-ranch-mk04=Ферма желе MK4 -dingrido=Дингридо crawdad=Рак +dingrido=Дингридо +spidertron=Меха-зунгрор phadaisus=Фадайсус ocula=Окула ipod=Глазная капсула @@ -471,9 +472,9 @@ ez-ranch-mk01=Полуавтоматизированная доильная ст ez-ranch-mk02=Полуавтоматизированная доильная станция. Из-за тёплого климата это здание потребляет много энергии, чтобы поддерживать низкую температуру. ez-ranch-mk03=Полуавтоматизированная доильная станция. Из-за тёплого климата это здание потребляет много энергии, чтобы поддерживать низкую температуру. ez-ranch-mk04=Полуавтоматизированная доильная станция. Из-за тёплого климата это здание потребляет много энергии, чтобы поддерживать низкую температуру. +crawdad=Большое послушное членистоногое с тяжёлой броней. dingrido=Крупный альфа-дингрит. Приручен, чтобы служить вам. -crawdad=Большое бронированное ручное существо. -phadaisus=Большой летающий кот-тусовщик. +phadaisus=Гиперзвуковой кот с крыльями. ocula=Плавающий безвредный глаз. Он способен доставить вам вещи даже когда вы находитесь за пределами логистической сети. ipod=Переоцененная куча мусора для хранения окулы, приносящей вам вещи. prandium-lab-mk01=Место, находящееся под надзором, для предотвращения побега умных хлопкоедов. diff --git a/locale/ru/extras.cfg b/locale/ru/extras.cfg index a834d246..37beda52 100644 --- a/locale/ru/extras.cfg +++ b/locale/ru/extras.cfg @@ -57,3 +57,12 @@ select-recipe=Выберите рецепт [oculua] wandering=Окула заблудился! [gps=__1__, __2__] + +[equipment-name] +py-mount-generator=Биологический двигатель + +[equipment-description] +py-mount-generator=Это существо способно генерировать энергию из собственного тела. Его можно использовать в качестве источника энергии для модулей сетки оборудования. + +[ammo-category-name] +dragon-breath=Дыхание дракона diff --git a/locale/ru/groups.cfg b/locale/ru/groups.cfg index 560d9e6c..b85c8637 100644 --- a/locale/ru/groups.cfg +++ b/locale/ru/groups.cfg @@ -3,7 +3,10 @@ py-alienlife=pY Инопланетная жизнь [fuel-category-name] bio-container=Биоконтейнеры -food=Пища -auog=Ауг -simik=Симик -dingrits=Дингрит +auog=Ауги +simik=Симики +dingrits=Дингриты +fish=Рыба +dingrit-food=Пища для дингритов +gastrocapacitor=Гастроконденсатор +phadai-food=Пища для фадай diff --git a/locale/ru/items.cfg b/locale/ru/items.cfg index f3f6e49f..457e604b 100644 --- a/locale/ru/items.cfg +++ b/locale/ru/items.cfg @@ -1,4 +1,7 @@ [item-name] +dragon-breath=Дыхание дракона +dragon-breath-ammo=Топливо для Фадайсуса +spidertron-remote=Пульт ездового животного moss=Мох moss-mk02=Мох МК2 moss-mk03=Мох МК3 @@ -845,6 +848,7 @@ ammonium-nitrate=Нитрат аммония guano=Гуано [item-description] +spidertron-remote=Позволяет отправлять ездовому животному простые команды перемещения с карты или из мира. moss=Может служить для маркировки частот водорослей. moss-mk02=Может служить для маркировки частот водорослей. moss-mk03=Может служить для маркировки частот водорослей. diff --git a/locale/ru/techs.cfg b/locale/ru/techs.cfg index bc3fa7c0..70a7153f 100644 --- a/locale/ru/techs.cfg +++ b/locale/ru/techs.cfg @@ -1,4 +1,8 @@ [technology-name] +mounts-mk01=Ездовые животные - Этап 1 +mounts-mk02=Ездовые животные - Этап 2 +spidertron=Ездовые животные - Этап 3 +mounts-mk04=Ездовые животные - Этап 4 xenobiology=Ксенобиология zoology=Зоология mycology-mk01=Микология (ур. 1) @@ -592,6 +596,10 @@ biofluid-mk02=Сеть биожидкостей (ур. 2) biofluid-mk03=Сеть биожидкостей (ур. 3) [technology-description] +mounts-mk01=Раки - большие бронированные членистоногие, которых одомашнили для езды верхом. Их прочный панцирь может легко таранить и разрушать деревья и скалы. Может быть оснащён модульным оборудованием и поддерживает логистические запросы. +mounts-mk02=Дингридо - это вид дингритов, оптимизированный для скоростной езды. На полной скорости они могут мчаться даже быстрее поезда. Может быть оснащён модульным оборудованием и поддерживает логистические запросы. +spidertron=В результате интенсивных (навязчивых) экспериментов вы наконец-то нашли способ успокоить и приручить зунгроров... заблокировав их движения в меха-костюме. Эти киборги обладают огромным инвентарём и сеткой снаряжения. Может быть оснащён модульным оборудованием и поддерживает логистические запросы. +mounts-mk04=Фадайсус - это последняя модернизация персонального транспорта. Он летает со скоростью звука над любой местностью и имеет огромную сетку оборудования. Может быть оснащён модульным оборудованием и поддерживает логистические запросы. xenobiology=Вид биологии, который (пока) не знаком земной науке. zoology=Раздел биологии, изучающий царство животных. В данном случае генно-модифицированных существ и пришельцев. mycology-mk01=Раздел ксенобиологии, занимающийся изучением инопланетных грибов, включая их генетические и биохимические свойства. diff --git a/locale/ru/tips.cfg b/locale/ru/tips.cfg index 7bfe916d..c0f59733 100644 --- a/locale/ru/tips.cfg +++ b/locale/ru/tips.cfg @@ -2,6 +2,7 @@ alienlife=Инопланетная жизнь farming=[item=native-flora] Фермерство caravans=[item=caravan] Караваны +mounts=[item=crawdad] Ездовые животные digosaurus=[item=digosaurus] Диг-о-завр mega-farm=[item=replicator-bioreserve] Автоматизированные умные фермы pydrive=[item=pydrive] Логистические станции @@ -15,6 +16,7 @@ biofluid=[item=guano] Сеть биожидкости [pywiki-descriptions] farming=Флора и фауна этой планеты могут быть переработаны во множество полезных продуктов. Кровь [item=vrauks] содержит полезную [fluid=formic-acid], а [item=moondrop] может быть переработана в [fluid=methane].\n\nВсе сельскохозяйственные виды попадают в одно из трёх царств; растения, животные или грибы. [item=saps], [item=moss], [item=tree-mk01], [item=fish] и [item=seaweed] могут быть собраны в местной среде, однако большинство инопланетных видов должны быть синтезированы с помощью дорогостоящих процессов генной модификации в [entity=creature-chamber-mk01] или [entity=botanical-nursery]. Для этого процесса потребуются данные ДНК, хранящиеся в кодексе, таком как [item=vrauks-codex], а также данные генетического шаблона из [entity=data-array].\n\nПосле того, как вы получили первых особей, важно вывести последующие поколения, чтобы избежать сложного процесса ГМО. У каждого царства уникальный метод размножения.\n\nЖивотные — детенышей/яйца животных, такие как [item=cocoon], можно разводить в [entity=rc-mk01]. Для этой машины требуется, чтобы два родителя были вставлены в ячейки модулей машины. После того, как у вас появятся молодые щенки, каждое животное можно вырастить в соответствующем вольере, например [entity=vrauks-paddock-mk01]. Этот вольер также требует, чтобы взрослые существа были вставлены в ячейки модулей.\n\nРастения — растениям требуются саженцы, такие как [item=moondrop-seeds], для создания следующего поколения. Превратите взрослые культуры в рассаду внутри [entity=botanical-nursery]. Затем из этих саженцев можно вырастить взрослые культуры в крупных фермерских хозяйствах, таких как [entity=moondrop-greenhouse-mk01]. Каждое здание фермы требует, чтобы взрослый урожай был помещен в ячейку модуля. В каждом цикле семян будет получено больше, чем вложено.\n\nГрибы — в атмосфере много крошечных спор грибов. [entity=spore-collector-mk01] будет автоматически очищать воздух от спор, таких как [item=fawogae-spore], без дополнительных затрат. Затем эти споры могут быть выращены во взрослые грибы на климатизированных грибных фермах, таких как [entity=fawogae-plantation-mk01]. Грибы требуют специального материала субстрата, такого как [item=fungal-substrate]. Для этих зданий также требуются взрослые грибы внутри ячеек модулей.\n\nДля дальнейшей оптимизации и увеличения производительности ферм существ возможна дальнейшая генетическая модификация до MK4. Это генетическое обновление увеличит скорость роста до 400%. Наиболее сложные виды животных требуют более продвинутых методов хранения данных, таких как [item=zungror-codex-mk04]. caravans=[item=caravan] — это живое органическое логистическое существо с 30 слотами инвентаря и программируемым расписанием, похожее на локомотив. Он использует алгоритм поиска пути, как у кусак.\nДля работы каравану требуется еда. Каждое действие или место назначения требует, чтобы караван потреблял пищу, причем разные типы еды обеспечивают разное количество действий.\nВы можете запрограммировать караван на посещение любого объекта. Когда он достигает места назначения, вы можете запрограммировать определенные действия на основе этого места назначения. Караваны не могут быть убиты поездами или кусаками. Существует также [item=flyavan].\n\nДействия, доступные для разных пунктов назначения, включают в себя: \n- Ожидание: караван останется в пункте назначения. *Не использует еду\n- Хранить еду: караван будет заполнять свои топливные слоты из инвентаря пункта назначения. *Не использует еду.\n- Заполнить груз (с ожиданием): караван будет извлекать предметы, пока его инвентарь не будет заполнен.\n- Заполнить груз (без ожидания): караван соберёт, что есть, и перейдёт к следующему действию.\n- Выгрузить груз (с ожиданием): караван будет опустошать свой инвентарь и перейдет к следующему действию только после полной выгрузки.\n- Выгрузить груз (без ожидания): караван попробует выгрузить свой инвентарь и перейдет к следующему действию, часть груза может остаться.\n- Пока в караване не будет ровно N предметов (с ожиданием): караван забирает или выгружает предметы, пока у него не наберется указанное количество.\n- Пока в караване не будет ровно N предметов (без ожидания): караван попробует забрать или выгрузить предметы, пока у него не наберется указанное количество, и перейдёт к следующему действию, если не получилось.\n- Пока у цели не будет ровно N предметов (с ожиданием): караван забирает или выгружает предметы, пока у аванпоста не наберется указанное количество.\n- Пока у цели не будет ровно N предметов (без ожидания): караван забирает или выгружает предметы, пока у аванпоста не наберется указанное количество, и перейдёт к следующему действию, если не получилось.\n- Логическое условие: караван будет ждать в пункте назначения, пока не будет выполнено лоогическое условие. *Не использует еду\n- Собрать всё из ячеек для мусора: Собирает все предметы в ячейках для мусора вашего персонажа.\n\nДействия, доступные для различных типов пунктов назначения, включают:\n- Игрок: [Ожидание, Хранить еду, Заполнить груз, Выгрузить груз, Фильтрованный сбор, Фильтрованная выгрузка, Собрать всё из ячеек для мусора]\n- Аванпост: [Ожидание, Хранить еду, Заполнить груз, Выгрузить груз, Фильтрованный сбор, Фильтрованная выгрузка, Логическое условие]\n- Другой караван: [Ожидание, Хранить еду, Заполнить груз, Выгрузить груз, Фильтрованный сбор, Фильтрованная выгрузка]\n- Грузовой вагон: [Ожидание, Заполнить груз, Выгрузить груз, Фильтрованный сбор, Фильтрованная выгрузка]\n- Опора ЛЭП: [Ожидание, Логическое условие]\n- По умолчанию: [Ожидание]\n\nИспользуйте среднюю кнопку мыши в [entity=outpost], чтобы установить фильтр. Не забудьте оставить место для еды! +mounts=Ездовые животные (маунты) - это эффективный вид личного транспорта на каждом этапе развития, который также может помочь в бою. Каждый уровень маунта обладает всеми способностями предыдущего маунта. [item=hazard-concrete] и [item=refined-hazard-concrete] не позволят маунтам пересечь границу и могут служить барьерами, чтобы не разрушить важную инфраструктуру.\n\n [item=automation-science-pack]\n\n[entity=car] - это самый простой и примитивный маунт. Он работает на твёрдом топливе, таком как [item=raw-coal], и развивает скорость до 100 км/ч. На автомобиле установлен [item=vehicle-machine-gun] для нанесения урона из стрелкового оружия. Объём багажника - 80 ячеек для предметов.\n\n [item=logistic-science-pack]\n\n[entity=crawdad] - первый биологический маунт. Созданный в [entity=creature-chamber-mk01], этот маунт способен бегать с максимальной скоростью 85 км/ч. Это существо любит рыбу и ест [item=fish], [item=fish-mk02], [item=fish-mk03] и [item=fish-mk04]. Во время бега он потребляет 800 кВт. Благодаря тяжёлой броне он способен таранить и разрушать препятствия, не получая при этом никакого урона. В нём хранится 90 ячеек предметов.\n[entity=crawdad] имеет сетку снаряжения 10x4; однако центральные 4x4 клетки постоянно занимает [item=py-mount-generator]. Этот генератор использует биологическую энергию, создаваемую маунтом, и мгновенно заполняет батареи снаряжения, используя пищевое топливо. Обратите внимание, что этот генератор на 200% эффективно преобразует пищевое топливо в энергию сетки оборудования. Он чрезвычайно полезен для персональной робототехники. Никакие другие генераторы не могут находиться в сетке снаряжения Рака.\n\n [item=chemical-science-pack]\n\n[item=dingrido] - это прирученная и одомашненная форма [item=dingrits]. Это животное способно бегать со скоростью более 250 км/ч! Он любит мясные продукты, такие как [item=meat], [item=dingrits-food-01] и [item=dingrits-food-02], и также использует [item=py-mount-generator]. Он хранит 120 ячеек предметов и имеет сетку снаряжения 10x6.\n\n [item=py-science-pack-3]\n\n[item=spidertron] - это механизированная версия [item=zungror]. Эта киборгизированная форма жизни способна ходить на восьми ногах практически по любой местности. Он передвигается со скоростью 110 км/ч и обладает высоким ускорением. Он потребляет энергию, хранящуюся в [item=gastrocapacitor], и использует режим управления WASD. Он оснащен 4 циклическими [item=spidertron-rocket-launcher-1], которые могут стрелять ракетами на высокой скорости. С помощью пульта [item=spidertron-remote] можно управлять [item=spidertron] с вида карты. С помощью пульта можно запрограммировать несколько [item=spidertron], чтобы они следовали друг за другом по цепочке. Он вмещает 160 ячеек предметов и имеет сетку снаряжения 10x8. Этот маунт использует [item=py-mount-generator].\n\n [item=utility-science-pack]\n\n[item=phadaisus] - это совершенная эволюционировавшая версия [item=phadai]. Он летает на гиперзвуковой скорости свыше 270 км/ч и использует режим управления WASD. Он любит есть [item=phadai-food-01] и [item=phadai-food-02] и может управляться с помощью [item=spidertron-remote]. У этого маунта есть разрушительное [item=dragon-breath], наносящее 2100 единиц урона огнем/с любому существу в радиусе 6 клеток. Это оружие полностью уничтожает леса. Огненное дыхание подпитывается [item=dragon-breath-ammo], каждый из которых обеспечивает боезапас на пять часов. Он хранит 200 ячеек предметов и имеет сетку снаряжения 10x10. Этот маунт также использует [item=py-mount-generator]. digosaurus=[item=digosaurus] — один из местных видов этой планеты. За годы эволюции они приспособились собирать и использовать [item=nexelit-ore] в качестве источника энергии. Используйте это.\nДиг-о-завр должен быть помещен в [entity=dino-dig-site]. Место раскопок имеет диапазон, в котором оно может добывать некселит. Оно также требует электричества.\n\nДиг-о-завру для работы требуется еда. Каждая еда позволяет диг-о-заврам добывать различное количество руды за цикл.\n[item=guts] → 1 руда\n[item=meat] → 2 руды\n[item=workers-food] → 8 руды\n[item=workers-food-02] → 16 руды\n[item=workers-food-03] → 32 руды\n\n[item=thikat] — это более крупная, генетически улучшенная версия диг-о-завра. Тикат имеет 100% производительность добычи.\n[item=work-o-dile] имеет 300% производительность добычи. mega-farm=[entity=mega-farm] может выращивать грядки растений. Вы можете выбрать тип растения и рецепт для этого растения, например [recipe=bioreserve-super-1], затем вам нужно будет скормить необходимые материалы. Затем вам нужно вставить сборщик, например [item=replicator-bioreserve]. Вставив сборщик, вы должны «запустить» «ракету» (без сомнения, слишком разрекламированные термины, придуманные маркетологами), которая создаёт участок выбранных вами растений к северу от вашего здания. Затем этот участок можно собрать с помощью [entity=harvester].\n\nКогда участок высохнет, вы можете повторить процесс для возобновляемого источника растений, такого как [item=native-flora]. Более сложные рецепты генерируют более богатые посадки. pydrive=Вы создали вид гигантских, сверхбыстрых, но послушных червей. Они могут мгновенно перемещать предметы между различными [entity=pydrive] зданиями, если эти здания настроены на идентификацию одного и того же червя.\n\nИспользуйте кольца флажков, чтобы выбрать определенного червя - каждый узор флажков выбирает своего червя. Ваши предметы всё ещё будут с червём, если ни одна логистическая станция не настроена на этого червя, вы можете получить их, снова настроившись на этого червя.\n\n[entity=pydrive] требует постоянной электроэнергии 10 МВт. From 7ec98ad769be74d30a972249b4487764b6c99a33 Mon Sep 17 00:00:00 2001 From: notnotmelon Date: Fri, 19 Jan 2024 19:15:00 -0600 Subject: [PATCH 2/2] add color masks for ulric man --- changelog.txt | 9 +- prototypes/creatures/ulric-man.lua | 395 +++++++++++++++++------------ 2 files changed, 239 insertions(+), 165 deletions(-) diff --git a/changelog.txt b/changelog.txt index 919e0dce..13b7f974 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,12 @@ --------------------------------------------------------------------------------------------------- +Version: 2.1.16 +Date: 2014-1-19 + Changes: + - Added a color mask for ulric man + - Updated Russian locale (by Shadow_Man). +--------------------------------------------------------------------------------------------------- Version: 2.1.15 -Date: ? +Date: 2014-1-19 Changes: - Reworked mounts. See the pycodex for more information. - Buffed fawogae path 3. No longer replaces the fawogae -> raw coal recipe and instead lets you have both. @@ -11,7 +17,6 @@ Date: ? - Fixed that composter turd path 1 module bonus did not work. (https://github.com/pyanodon/pybugreports/issues/370) - Stack filter inserters have been deleted. Removed stack filter inserters from sap turd path 2 recipe. - Fixed that chitin -> geothermal water produced at too low temperature for use in energy generation. - - Updated Russian locale (by Shadow_Man). --------------------------------------------------------------------------------------------------- Version: 2.1.14 Date: 2024-1-10 diff --git a/prototypes/creatures/ulric-man.lua b/prototypes/creatures/ulric-man.lua index ec640c59..69dc3e27 100644 --- a/prototypes/creatures/ulric-man.lua +++ b/prototypes/creatures/ulric-man.lua @@ -1,5 +1,182 @@ local movement_triggers = require('__base__.prototypes.entity.movement-triggers') +local idle = { + layers = { + { + filenames = { + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-1.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-2.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-3.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-4.png' + }, + slice = 10, + lines_per_file = 10, + line_length = 10, + width = 160, + height = 192, + frame_count = 50, + direction_count = 8, + animation_speed = 0.25, + shift = util.mul_shift(util.by_pixel(-0, -20)), + scale = 0.7 + }, + { + filenames = { + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-1-mask.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-2-mask.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-3-mask.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-4-mask.png' + }, + slice = 10, + lines_per_file = 10, + line_length = 10, + width = 160, + height = 192, + frame_count = 50, + direction_count = 8, + animation_speed = 0.25, + shift = util.mul_shift(util.by_pixel(-0, -20)), + scale = 0.7, + apply_runtime_tint = true, + tint = {a = 0.2} + }, + { + filenames = { + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-01.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-02.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-03.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-04.png' + }, + slice = 10, + lines_per_file = 10, + line_length = 10, + width = 192, + height = 128, + frame_count = 50, + direction_count = 8, + animation_speed = 0.25, + shift = util.mul_shift(util.by_pixel(25, 10)), + scale = 0.7, + draw_as_shadow = true + } + } +} + +local running = { + layers = { + { + filenames = { + '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-02.png' + }, + slice = 10, + lines_per_file = 10, + line_length = 10, + width = 224, + height = 224, + frame_count = 20, + direction_count = 8, + animation_speed = 0.3, + shift = util.mul_shift(util.by_pixel(-0, -20)), + scale = 0.7 + }, + { + filenames = { + '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-02-mask.png' + }, + slice = 10, + lines_per_file = 10, + line_length = 10, + width = 224, + height = 224, + frame_count = 20, + direction_count = 8, + animation_speed = 0.3, + shift = util.mul_shift(util.by_pixel(-0, -20)), + scale = 0.7, + apply_runtime_tint = true, + tint = {a = 0.5} + }, + { + filenames = { + '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-sh.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-02-sh.png' + }, + slice = 10, + lines_per_file = 10, + line_length = 10, + width = 224, + height = 160, + frame_count = 20, + direction_count = 8, + animation_speed = 0.3, + shift = util.mul_shift(util.by_pixel(15, -8)), + scale = 0.7, + draw_as_shadow = true + } + } +} + +local attack = { + layers = { + { + filenames = { + '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-01.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-02.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-03.png', + }, + slice = 10, + lines_per_file = 10, + line_length = 10, + width = 288, + height = 256, + frame_count = 30, + direction_count = 8, + animation_speed = 0.45, + shift = util.mul_shift(util.by_pixel(-0, -20)), + scale = 0.75, + }, + { + filenames = { + '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-01-mask.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-02-mask.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-03-mask.png', + }, + slice = 10, + lines_per_file = 10, + line_length = 10, + width = 288, + height = 256, + frame_count = 30, + direction_count = 8, + animation_speed = 0.45, + shift = util.mul_shift(util.by_pixel(-0, -20)), + scale = 0.75, + apply_runtime_tint = true, + tint = {a = 0.5} + }, + { + filenames = { + '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-01-sh.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-02-sh.png', + '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-03-sh.png', + }, + slice = 10, + lines_per_file = 10, + line_length = 10, + width = 320, + height = 224, + frame_count = 30, + direction_count = 8, + animation_speed = 0.45, + shift = util.mul_shift(util.by_pixel(22, 34)), + scale = 0.75, + draw_as_shadow = true, + }, + } +} + data:extend( { { @@ -103,127 +280,9 @@ data:extend( }, animations = { { - idle = { - layers = { - { - filenames = { - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-1.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-2.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-3.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-4.png' - }, - slice = 10, - lines_per_file = 10, - line_length = 10, - width = 160, - height = 192, - frame_count = 50, - direction_count = 8, - animation_speed = 0.25, - shift = util.mul_shift(util.by_pixel(-0, -20)), - scale = 0.7 - }, - { - filenames = { - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-01.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-02.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-03.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-04.png' - }, - slice = 10, - lines_per_file = 10, - line_length = 10, - width = 192, - height = 128, - frame_count = 50, - direction_count = 8, - animation_speed = 0.25, - shift = util.mul_shift(util.by_pixel(25, 10)), - scale = 0.7, - draw_as_shadow = true - } - } - }, - idle_with_gun = { - layers = { - { - filenames = { - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-1.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-2.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-3.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-4.png' - }, - slice = 10, - lines_per_file = 10, - line_length = 10, - width = 160, - height = 192, - frame_count = 50, - direction_count = 8, - animation_speed = 0.25, - shift = util.mul_shift(util.by_pixel(-0, -20)), - scale = 0.7 - }, - { - filenames = { - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-01.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-02.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-03.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/idle-sh-04.png' - }, - slice = 10, - lines_per_file = 10, - line_length = 10, - width = 192, - height = 128, - frame_count = 50, - direction_count = 8, - animation_speed = 0.25, - shift = util.mul_shift(util.by_pixel(25, 10)), - scale = 0.7, - draw_as_shadow = true - } - } - }, - mining_with_tool = { - layers = { - { - filenames = { - '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-01.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-02.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-03.png', - }, - slice = 10, - lines_per_file = 10, - line_length = 10, - width = 288, - height = 256, - frame_count = 30, - direction_count = 8, - animation_speed = 0.45, - shift = util.mul_shift(util.by_pixel(-0, -20)), - scale = 0.75, - }, - { - filenames = { - '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-01-sh.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-02-sh.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/attack-03-sh.png', - }, - slice = 10, - lines_per_file = 10, - line_length = 10, - width = 320, - height = 224, - frame_count = 30, - direction_count = 8, - animation_speed = 0.45, - shift = util.mul_shift(util.by_pixel(22, 34)), - scale = 0.75, - draw_as_shadow = true, - }, - } - }, + idle = idle, + idle_with_gun = idle, + mining_with_tool = attack, running_with_gun = { layers = { { @@ -257,6 +316,39 @@ data:extend( shift = util.mul_shift(util.by_pixel(-0, -20)), scale = 0.7 }, + { + stripes = { + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 0, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 0, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 0, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 448, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 448, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 448, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 448, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 896, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 896, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 896, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 896, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 1344, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 1344, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 1344, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 1344, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 1792, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 1792, x = 0}, + {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-mask.png', y = 1792, x = 0}, + }, + slice = 10, + line_length = 10, + width = 224, + height = 224, + frame_count = 20, + direction_count = 18, + animation_speed = 0.3, + shift = util.mul_shift(util.by_pixel(-0, -20)), + scale = 0.7, + apply_runtime_tint = true, + tint = {a = 0.5} + }, { stripes = { {width_in_frames = 10, height_in_frames = 2, filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-sh.png', y = 0, x = 0}, @@ -291,43 +383,7 @@ data:extend( }, } }, - running = { - layers = { - { - filenames = { - '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-02.png' - }, - slice = 10, - lines_per_file = 10, - line_length = 10, - width = 224, - height = 224, - frame_count = 20, - direction_count = 8, - animation_speed = 0.3, - shift = util.mul_shift(util.by_pixel(-0, -20)), - scale = 0.7 - }, - { - filenames = { - '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-01-sh.png', - '__pyalienlifegraphics3__/graphics/entity/ulric-man/run-02-sh.png' - }, - slice = 10, - lines_per_file = 10, - line_length = 10, - width = 224, - height = 160, - frame_count = 20, - direction_count = 8, - animation_speed = 0.3, - shift = util.mul_shift(util.by_pixel(15, -8)), - scale = 0.7, - draw_as_shadow = true - } - } - } + running = running } }, light = { @@ -423,11 +479,24 @@ ENTITY { open_sound = {filename = '__base__/sound/character-corpse-open.ogg', volume = 0.5}, close_sound = {filename = '__base__/sound/character-corpse-close.ogg', volume = 0.5}, picture = { - filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/corpse.png', - width = 224, - height = 224, - shift = util.by_pixel(-7.0, -5.0), - frame_count = 2 + layers = { + { + filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/corpse.png', + width = 224, + height = 224, + shift = util.by_pixel(-7.0, -5.0), + frame_count = 2 + }, + { + filename = '__pyalienlifegraphics3__/graphics/entity/ulric-man/corpse-mask.png', + width = 224, + height = 224, + shift = util.by_pixel(-7.0, -5.0), + frame_count = 2, + apply_runtime_tint = true, + tint = {a = 0.5} + }, + } }, localised_name = {'entity-name.character-corpse'} }