diff --git a/Artifacts/displacement.lua b/Artifacts/displacement.lua index 19e5f8c1..a4a3dcb9 100644 --- a/Artifacts/displacement.lua +++ b/Artifacts/displacement.lua @@ -15,9 +15,10 @@ gm.post_script_hook(gm.constants.stage_roll_next, function(self, other, result, if not displacement.active then return end validEnvs:clear() - for i = 1, 5 do -- go through 5 tiers of stages, we exclude tier 6 because we dont want to randomly go to risk of rain + for i = 1, 4 do -- go through 4 tiers of stages, we exclude tier 6 because we dont want to randomly go to risk of rain, and we exclude tier 5 stages because artifact of tempus can easily be cheesed if temple of the elders is chosen as one of the first stages (it also breaks the onstep code of the artifact's object for some reason? no clue why) local envs = List.wrap(gm._mod_stage_get_pool_list(i)) -- get all environments in a tier for _, env in ipairs(envs) do + print(Stage.wrap(env).identifier) validEnvs:add(env) -- add each environment to validEnvs end end @@ -28,7 +29,7 @@ gm.post_script_hook(gm.constants.stage_roll_next, function(self, other, result, if args[1].value == 1 then -- if the upcoming stage is tier 1 >> potentialEnvs:clear() -- >> clear the list of potential environments -- >> restore the list to include all environments again - for i = 1, 5 do + for i = 1, 4 do local envs = List.wrap(gm._mod_stage_get_pool_list(i)) for _, env in ipairs(envs) do potentialEnvs:add(env) diff --git a/Equipments/midas.lua b/Equipments/midas.lua index 17a52a98..fa6419fb 100644 --- a/Equipments/midas.lua +++ b/Equipments/midas.lua @@ -35,6 +35,6 @@ midas:onUse(function(actor, embryo) if embryo then reward = reward * 2 end - hud:add_gold_gml_Object_oHUD_Create_0(reward) + hud.gold = hud.gold + reward end end) diff --git a/Items/crypticSource.lua b/Items/crypticSource.lua index 48d4311a..7bcbf774 100644 --- a/Items/crypticSource.lua +++ b/Items/crypticSource.lua @@ -1,4 +1,4 @@ -local sprite = Resources.sprite_load(NAMESPACE, "CrypticSource", path.combine(PATH, "Sprites/Items/crypticSource.png"), 1, 16, 16) +local sprite = Resources.sprite_load(NAMESPACE, "CrypticSource", path.combine(PATH, "Sprites/Items/crypticSource.png"), 1, 18, 18) local crypticSource = Item.new(NAMESPACE, "crypticSource") crypticSource:set_sprite(sprite) diff --git a/Items/watchMetronome.lua b/Items/watchMetronome.lua index ee3cc2ae..9bfd3677 100644 --- a/Items/watchMetronome.lua +++ b/Items/watchMetronome.lua @@ -1,4 +1,4 @@ -local sprite = Resources.sprite_load(NAMESPACE, "WatchMetronome", path.combine(PATH, "Sprites/Items/watchMetronome.png"), 1, 15, 12) +local sprite = Resources.sprite_load(NAMESPACE, "WatchMetronome", path.combine(PATH, "Sprites/Items/watchMetronome.png"), 1, 17, 15) local bar_sprite = Resources.sprite_load(NAMESPACE, "MetronomeBar2", path.combine(PATH, "Sprites/Items/Effects/metronomeBar.png"), 1, 26, 5) --local bar_sprite_big = Resources.sprite_load(NAMESPACE, "MetronomeBarBig", path.combine(PATH, "Sprites/Items/Effects/metronomeBarBig.png"), 1, 2, 8) diff --git a/Language/english.json b/Language/english.json index 4bf947a1..5a832b89 100644 --- a/Language/english.json +++ b/Language/english.json @@ -9,7 +9,7 @@ "nameUpper" : "EXECUTIONER", "description" : "The Executioner is a mobile fighter who specializes in counting heads. Using Ion projectors, the Executioner fabricates illusions which cause foes to run away in fear, while also projecting an axe to take out the strongest enemies. Make sure to chain kills with Ion Burst and Execution to keep the damage pouring.", "endQuote" : "..and so he left, bloodlust unfulfilled.", - "story": "
    Passenger Details:\n[Military Class]\n\n
      Luggage and Equipment:\nOfficer boarded with EXN Acting Officer carbonweave uniform, civilian-grade plated oversuit and an issued service pistol. At military checkpoint, passenger's armament was noted to have an additional under-barrel \nmodification- and was cleared after an agreement was made to store it in a secure container. The passenger also cleared one ION 204X series battery customized with propulsion orifices. As a safety measure, passenger's \ntechnological goods were temporarily fitted with electrical auto-nullifiers and returned to them.\n\n[SECURITY RECALL]\n\n
        [Note E1a] Several reports of Passenger making entire security checkpoint crew uneasy. Light surveillance will be required until further notice.\n
          [Note E1b] Passenger would often reply in sounds rather than speech before opting to use Universal Sign Language.\n
            [Event E1] Contracted commando performs security check in Passenger's quarters.\n
              [Event E1a] Contracted commando requests 24 hour private surveillance in hall leading to Passenger's quarters.\n
                [Event E2] Passenger asked to move tables during mealtime after another Passenger sent a formal complaint to onboard security.", + "story": "
                  Passenger Details:\n[Military Class]\n\n
                    Luggage and Equipment:\nOfficer boarded with EXN Acting Officer carbonweave uniform, civilian-grade plated oversuit and an issued service pistol. At military checkpoint, passenger's armament was noted to have an additional under-barrel \nmodification- and was cleared after an agreement was made to store it in a secure container. The passenger also cleared one ION 204X series battery customized with propulsion orifices. As a safety measure, passenger's \ntechnological goods were temporarily fitted with electrical auto-nullifiers and returned to them.\n\n[SECURITY RECALL]\n
                      [Note E1a] Several reports of Passenger making entire security checkpoint crew uneasy. Light surveillance will be required until further notice.\n
                        [Note E1b] Passenger would often reply in sounds rather than speech before opting to use Universal Sign Language.\n
                          [Event E1] Contracted commando performs security check in Passenger's quarters.\n
                            [Event E1a] Contracted commando requests 24 hour private surveillance in hall leading to Passenger's quarters.\n
                              [Event E2] Passenger asked to move tables during mealtime after another Passenger sent a formal complaint to onboard security.", "id" : "Travel ID: 4383354378334FF3D34D", "departure" : "Departure:\nOld Alcatraz,\nRustborough,\nMars", "arrival" : "Destination:\nStillwater Bay,\nNewdredge,\nEuropa" @@ -19,10 +19,7 @@ "nameUpper" : "MULE", "description" : "EVERY MULE UNIT IS ADEQUATELY EQUIPPED AND READY FOR DUTY. BUILT WITH HIGH QUALITY MATERIALS FOR MAXIMUM WORK PERFORMANCE. THIS MODEL INCLUDES THE FORAGER SET OF TOOLS, PERFECT FOR HUNTING, EXPLORATION AND OTHER DANGEROUS TASKS FOR THE COMMON USER. IN ORDER TO INITIALIZE PLEASE STATE A DIRECTIVE ON SYSTEM BOOT.", "endQuote" : "..and so it left, pistons creaking, directive unstated.", - "story": "PSA: The MULE units are neither sentient nor pets. Calling them 'Molly' will not impact the MULE unit's programming.", - "id" : "", - "departure" : "", - "arrival" : "" + "story": "
                                Warrantee Expiration: \n8/16/2041 \n\nInputted Note: \n(ID: #1244C4F4F5D494) \nNOTICE: MULE - MODEL F \nI'd rather not get into hot water for “tampering with ship property”, but I recently booted up this MULE unit and took 'em for repairs. It was just lying there, so I took it that no one would really mind if I touched it up a little. Heard talks of personnel wanting to throw 'em away before takeoff, but I just couldn't let it happen to such fine craftmanship.. it's a sight for sore eyes, sure, but you've gotta admit, it's novelty! Multi-purpose units haven't been considered in a long time since the first quadruped model was a hit. Besides, we all know what these sorts of bots can get up to! With a chassis like this, I wouldn't doubt that this big guy's roughed some pretty gnarly terrain. It's a bit of a walking time capsule, wouldn't you say? \nAll needed footage attached below yadda yadda— Look, I'll level with ya. Just.. consider keepin' it around. Even for just a bit. Whether those rumors are true or not.. I think his owner would be happy, y'know.. knowing it's up 'n runnin' still. \nJust give 'em something to do. Give it one more chance. \n\n[MAINTENANCE REPORT] \n
                                  [Report M1] On boot-up, MULE unit remained completely motionless until around 20 minutes later when given a verbal command to deploy its support drone. MULE unit demonstrated idle processing and protocols only after the command. \n
                                    [Report M1a] Support drone's power bank was found to be degraded. No compatible replacements could be found, leaving it to only be recharged. Battery longevity not guaranteed. \n
                                      [Report M2] MULE unit was to be familiarized with Contact Light passengers and staff via facial recognition after suddenly attempting to constrain a mechanic it failed to recognize. Most UES personnel are now logged in its memory. \n
                                        [Report M2a] Remotely accessing MULE unit's memory reveals previous entries in its database dating back to 2036. Initial entries in its memory were found to be corrupted or expunged." }, "nemesisCommando" : { "name" : "Nemesis Commando", @@ -43,7 +40,7 @@ "nameUpper": "TECHNICIAN", "description": "The Technician is excellent at setting up and maintaining zones of enemy denial. Forced Shutdown can forcibly lock down an area when upgraded. Upgrading gadgets improves their effectiveness, but be careful when doing so in dangerous situations!", "endQuote": "..and so he left, by switching the ship off and on again.", - "story": "
                                          Passenger Details:\n[Employee Class]\n\n
                                            Employee Details:\nEmployee contracted to work on-site for the full duration of the scheduled voyage of the UES Contact Light, to perform maintenance on machinery should technical issues arise aboard the ship. Employee qualified with 6 years of hands-on experience in software and hardware engineering.\n\n
                                              Luggage & Equipment:\nEmployee boarded with a Durarend welding spacesuit rated with strong vacuum resistance, and additionally leather and cloth attire made for planetary wear. Employee notified that clothes may tear in the case of a vacuum event. Security flagged the sizable wrench they held for appearing impractical for use while potentially dangerous. Upon questioning, the employee indicated that it was \"custom-built ... for the toughest jobs.\" Following procedure, the wrench was moved to an automated lockbox in loading bay 1a. Remaining inspection of carry-ons revealed several standard-issue wrenches, 3 color-coded USBs, a 2047 model GeForm Laptop, tool boxes, and a welding tool. USBs were inspected on company-owned QPuting Disposable Computer installed with ReoVirus Detector v1.6.2. No traces of malware were detected and stored files are UPG format containing blueprints of various devices. Employee permitted to pass with no further difficulties.\n\n[SECURITY RECALL]\n
                                                [Event T1] Employee forcibly removed from cabin during liftoff preparations when refusing to leave after conversating with ship pilot for multiple hours.\n
                                                  [Event T2] Employee observed stealing sodas from a vending machine.\n
                                                    [Event T3] Automated lockdown originating in loading bay 4a resolved by employee.\n
                                                      [Event T4] Escape pod B-08 status shifted from ERROR to ALERT after the employee was requested by ship personnel to troubleshoot. Security personnel instructed to investigate.\n
                                                        [Event T1a] Employee additionally reported to have tampered with cabin control panel to make it \"easier to cruise.\" Scheduled launch delayed and employee instructed to revert any modifications made.", + "story": "
                                                          Passenger Details:\n[Employee Class]\n\n
                                                            Employee Details:\nEmployee contracted to work on-site for the full duration of the scheduled voyage of the UES Contact Light, to perform maintenance on machinery should technical issues arise aboard the ship. Employee qualified with 6 years of hands-on experience in software and hardware engineering.\n\n
                                                              Luggage & Equipment:\nEmployee boarded with a Durarend welding spacesuit rated with strong vacuum resistance, and additionally leather and cloth attire made for planetary wear. Employee notified that clothes may tear in the case of a vacuum event. Security flagged the sizable wrench they held for appearing impractical for use while potentially dangerous. Upon questioning, the employee indicated that it was \"custom-built ... for the toughest jobs.\" Following procedure, the wrench was moved to an automated lockbox in loading bay 1a. Remaining inspection of carry-ons revealed several standard-issue wrenches, 3 color-coded USBs, a 2047 model GeForm Laptop, tool boxes, and a welding tool. USBs were inspected on company-owned QPuting Disposable Computer installed with ReoVirus Detector v1.6.2. No traces of malware were detected and stored files are UPG format containing blueprints of various devices. Employee permitted to pass with no further difficulties.\n\n[SECURITY RECALL]\n
                                                                [Event T1] Employee forcibly removed from cabin during liftoff preparations when refusing to leave after conversating with ship pilot for multiple hours.\n
                                                                  [Event T2] Employee observed stealing sodas from a vending machine.\n
                                                                    [Event T3] Automated lockdown originating in loading bay 4a resolved by employee.\n
                                                                      [Event T4] Escape pod B-08 status shifted from ERROR to ALERT after the employee was requested by ship personnel to troubleshoot. Security personnel instructed to investigate.\n
                                                                        [Event T1a] Employee additionally reported to have tampered with cabin control panel to make it \"easier to cruise.\" Scheduled launch delayed and employee instructed to revert any modifications made.", "id" : "Travel ID: 54E4F4C434F59474E454", "departure" : "Departure:\nUES Shipping Dock 5,\nRedview,\nMars", "arrival" : "Destination:\nUES Shipping Dock 0,\nRedview,\nMars" diff --git a/Language/russian.json b/Language/russian.json index b8c365b3..e46db099 100644 --- a/Language/russian.json +++ b/Language/russian.json @@ -9,7 +9,7 @@ "nameUpper" : "ПАЛАЧ", "description": "Палач — подвижный боец, специализирующийся в подсчете трупов. Используя Ионные проекторы, Палач заставляет противников убегать в страхе, а также проецирует топор для устранения сильнейших из них. Цепочки убийств, сделанные с помощью «Ионной Вспышки» и «Казни» помогут продолжать наносить урон.", "endQuote": "..и он улетел, с неудовлетворенной жаждой крови.", - "story": "
                                                                          Сведения о пассажире:\n[Военный]\n\n
                                                                            Багаж и снаряжение:\nОфицер поднялся на борт в форме исполняющего обязанности офицера EXN из углеродного волокна, гражданском комбинезоне с пластинами и с выданным служебным пистолетом. На военном контрольно-пропускном пункте было отмечено, что вооружение пассажира имело дополнительную подствольную модификацию и было проверено после того, как было достигнуто соглашение о хранении вооружения в безопасном контейнере. Пассажир также проверил одну батарею серии ION 204X, настроенную с отверстиями для пропульсивной установки. В качестве меры безопасности технологические товары пассажира были временно оснащены электрическими автонуллификаторами и возвращены им.\n\n[ПРИМЕЧАНИЯ СЛУЖБЫ БЕЗОПАСНОСТИ]\n\n
                                                                              [Запись E1a] Несколько сообщений о пассажире заставили весь персонал контрольно-пропускного пункта беспокоиться. Легкое наблюдение будет обязательным до дальнейшего уведомления.\n
                                                                                [Запись E1b] Пассажир часто отвечал звуками, а не речью, прежде чем решил использовать универсальный язык жестов.\n
                                                                                  [Случай E1] Контрактный спецназовец проводит проверку безопасности в каютах пассажиров.\n
                                                                                    [Случай E1a] Контрактный спецназовец запрашивает круглосуточное частное наблюдение в зале, ведущем в каюты пассажиров.\n
                                                                                      [Случай E2] Пассажира попросили передвинуть столы во время еды после того, как другой пассажир отправил официальную жалобу в службу безопасности на борту.", + "story": "
                                                                                        Сведения о пассажире:\n[Военный]\n\n
                                                                                          Багаж и снаряжение:\nОфицер поднялся на борт в форме исполняющего обязанности офицера EXN из углеродного волокна, гражданском комбинезоне с пластинами и с выданным служебным пистолетом. На военном контрольно-пропускном пункте было отмечено, что вооружение пассажира имело дополнительную подствольную модификацию и было проверено после того, как было достигнуто соглашение о хранении вооружения в безопасном контейнере. Пассажир также проверил одну батарею серии ION 204X, настроенную с отверстиями для пропульсивной установки. В качестве меры безопасности технологические товары пассажира были временно оснащены электрическими автонуллификаторами и возвращены им.\n\n[ПРИМЕЧАНИЯ СЛУЖБЫ БЕЗОПАСНОСТИ]\n
                                                                                            [Запись E1a] Несколько сообщений о пассажире заставили весь персонал контрольно-пропускного пункта беспокоиться. Легкое наблюдение будет обязательным до дальнейшего уведомления.\n
                                                                                              [Запись E1b] Пассажир часто отвечал звуками, а не речью, прежде чем решил использовать универсальный язык жестов.\n
                                                                                                [Случай E1] Контрактный спецназовец проводит проверку безопасности в каютах пассажиров.\n
                                                                                                  [Случай E1a] Контрактный спецназовец запрашивает круглосуточное частное наблюдение в зале, ведущем в каюты пассажиров.\n
                                                                                                    [Случай E2] Пассажира попросили передвинуть столы во время еды после того, как другой пассажир отправил официальную жалобу в службу безопасности на борту.", "id" : "Travel ID: 4383354378334FF3D34D", "departure" : "Пункт отправления:\nСтарый Алькатрас,\nРастборо,\nМарс", "arrival" : "Пункт назначения:\nСтиллуотер-Бей,\nНьюдредж,\nЕвропа" @@ -17,19 +17,16 @@ "mule" : { "name" : "МУЛ", "nameUpper" : "МУЛ", - "description" : "КАЖДАЯ МОДЕЛЬ МУЛА ОБОРУДОВАНА И ГОТОВА К РАБОТЕ. СОЗДАНЫ ИЗ ВЫСОКОКАЧЕСТВЕННЫХ МАТЕРИАЛОВ ДЛЯ МАКСИМАЛЬНОЙ ПРОИЗВОДИТЕЛЬНОСТИ РАБОТЫ. ДАННАЯ МОДЕЛЬ ВКЛЮЧАЕТ НАБОР ИНСТРУМЕНТОВ ДЛЯ ДОБЫЧИ РЕСУРСОВ, ИДЕАЛЬНАЯ ДЛЯ ОХОТЫ, ИССЛЕДОВАНИЯ И ДРУГИХ ПОРУЧЕНИЙ, ОПАСНЫХ ДЛЯ ОБЫЧНОГО ПОЛЬЗОВАТЕЛЯ. ДЛЯ ИНИЦИАЛИЗАЦИИ УКАЖИТЕ ДИРЕКТИВУ ПРИ ЗАГРУЗКЕ СИСТЕМЫ.", + "description" : "КАЖДАЯ МОДЕЛЬ МУЛА ОБОРУДОВАНА И ГОТОВА К РАБОТЕ. СОЗДАНА ИЗ ВЫСОКОКАЧЕСТВЕННЫХ МАТЕРИАЛОВ ДЛЯ МАКСИМАЛЬНОЙ ПРОИЗВОДИТЕЛЬНОСТИ РАБОТЫ. ДАННАЯ МОДЕЛЬ ВКЛЮЧАЕТ НАБОР ИНСТРУМЕНТОВ ДЛЯ ДОБЫЧИ РЕСУРСОВ, ИДЕАЛЬНАЯ ДЛЯ ОХОТЫ, ИССЛЕДОВАНИЯ И ДРУГИХ ПОРУЧЕНИЙ, ОПАСНЫХ ДЛЯ ОБЫЧНОГО ПОЛЬЗОВАТЕЛЯ. ДЛЯ ИНИЦИАЛИЗАЦИИ УКАЖИТЕ ДИРЕКТИВУ ПРИ ЗАГРУЗКЕ СИСТЕМЫ.", "endQuote" : "..и он улетел, со скрипом поршней, без директивы.", - "story": "ОБЩЕСТВЕННОЕ ОБЪЯВЛЕНИЕ: Модели МУЛ не разумны, и не являются домашними животными. Они не запрограммированы откликаться на имя 'Молли'.", - "id" : "", - "departure" : "", - "arrival" : "" + "story": "
                                                                                                      Дата истечения гарантии: \n8/16/2041 \n\nЗаметка: \n(ID: #1244C4F4F5D494) \nЗАМЕТКА: МУЛ - МОДЕЛЬ F \nНе хочется попадать в неприятности из-за «порчи корабельного имущества», но недавно я включил этого МУЛа и отвёз его в ремонт. Он просто лежал, поэтому я решил, что никто не будет против, если я его немного подправлю. Слышал разговоры о том, что персонал хочет выбросить его перед взлётом, но я просто не могу позволить так обращаться с такой прекрасной работой... он, конечно, отрада для глаз, но, согласитесь, такого не каждый день увидишь! Многоцелевые модели давно не рассматривались с тех пор, как первая четвероногая модель стала хитом. К тому же, мы все знаем, на что способны подобные боты! С таким шасси, я не сомневаюсь, что этот здоровяк покорил довольно ухабистую местность. Он что-то вроде ходячей капсулы времени, не так ли? \nВсе необходимые кадры прикреплены ниже бла-бла-бла— Слушайте, я буду с вами откровенен. Просто... подумайте о том, чтобы оставить его здесь. Хотя бы на время. Правдивы эти слухи или нет... Думаю, его хозяин был бы рад, ну... знать, что он всё ещё на ходу. \nПросто займите его чем нибудь. Дайте ему ещё один шанс. \n\n[ОТЧЕТ ПО ТЕХОБСЛУЖИВАНИЮ] \n
                                                                                                        [Отчет M1] После включения МУЛ оставался полностью неподвижным примерно до 20 минут, пока не была получена устная команда на запуск вспомогательного дрона. МУЛ продемонстрировал работу в режиме ожидания и протоколов только после получения команды. \n
                                                                                                          [Отчет M1a] Аккумулятор вспомогательного дрона оказался испорченным. Совместимой замены найти не удалось, поэтому пришлось заряжать. Срок службы аккумулятора не гарантируется. \n
                                                                                                            [Отчет M2] МУЛ был ознакомлен с пассажирами и персоналом «Контакт Лайт» с помощью распознавания лиц после внезапной попытки связать механика, которого он не смог распознать. Большая часть персонала UES теперь записана в его памяти. \n
                                                                                                              [Отчет M2a] Удаленный доступ к памяти МУЛа показывает предыдущие записи в базе данных, датируемые 2036 годом. Первоначальные записи в его памяти оказались испорченными или удалёнными." }, "nemesisCommando" : { "name" : "Немезис Коммандо", "nameUpper" : "НЕМЕЗИС КОММАНДО", "description" : "Немезис Коммандо — гибкий персонаж с огневой мощью, способной справиться с любой ситуацией. Наносите раны на врагов, используя «Клинок Прекращения», чтобы подготовиться к разрушительному урону от других ваших способностей. Используйте «Тактический Перекат», чтобы входить и выходить из ближнего боя и обращать даже самые опасные ситуации в вашу пользу.", - "endQuote": "..и он улетел, неся с собой новое чувство человечности.", - "story": "НЕЗАРЕГИСТРИРОВАННАЯ ЗАПИСЬ ПОЛЕВЫХ ДАННЫХ: ДАННЫЕ ИЗМЕНЕНЫ В [##090??!?] \n[ОШИБКА 0x00000ce: Пакет Данных Поврежден, загрузка с точки восстановления.] \n\n
                                                                                                                [Запись 1] - Патрульная группа только что подобрала раненого отставшего в нескольких милях от лагеря. Ходят слухи, что он «появился из ниоткуда» (ага, как будто я в такое поверю), и в окрестностях нет ничего, что могло бы объяснить его происхождение. Независимо от обоснованности их заявлений, выживший есть выживший. Пока я пишу это, мы несем его обратно. Он, конечно, не облегчает нам задачу, учитывая огромный вес его снаряжения — он тащит какие-то нетрадиционные модификации стандартной брони коммандо. Похоже, это — или, может быть, изначально была — первоначальная версия модели Mk. 1 (хотя я почти уверен, что они прекратили ее производство много лет назад?). \n\n
                                                                                                                  [Запись 2] - Обновление: у приятеля есть пугающе тяжелая артиллерия для бойца коммандо — ракетная установка, все еще теплая на ощупь, и несколько почти наверняка инопланетных гранат — я чертовски уверен, что ничего подобного не видел. Сейчас он без сознания, и, судя по тому, что мы можем сказать, глядя через его шлем, он изрядно потрепан. Его левая рука кажется особенно жесткой — его ладонь сжата вокруг рукояти его виброклинка. Некоторые из нас только что попытались хорошенько ее рассмотреть, но похоже, что его кулак сросся с этой чертовой штукой. Среди прочего на нем, он полностью покрыт этим корким черным... веществом. Мы не знаем, было ли это результатом драки между несколькими выжившими или свидетельством какой-то самообо??!0049### \n[Конец читаемых данных.] \n\n
                                                                                                                    [Запись 2a] - Я не знаю сколько времени у меня осталось пока я печатаю оно проснулось лагерь РАЗРУШЕН люди текут кровью мы даже не знаем человек это учитывая что он может сделать никто не знает что делать он побежал прямо на Адриана \nмы даже не знаем что его побудило??? что МЫ сделали чтобы заслужить все это??? Почему ЭТО СУЩЕСТВО напало на НА?!??!?##$0959090302???! \n[Конец читаемых данных.] \n\n

                                                                                                                    Ово??ды р?оятся в?округ это?го бла?городного з?ве?ря, п?ока он па?сется. \n\nВаш?а ч??ума бу?дет уни?чтож?ена с эт?ой пов?ерхн?ости... \n\nЭ??ти?ми тру?дящи??мися рук?а?ми." + "endQuote": "..и он улетел, с новым чувством человечности внутри.", + "story": "НЕЗАРЕГИСТРИРОВАННАЯ ЗАПИСЬ ПОЛЕВЫХ ДАННЫХ: ДАННЫЕ ИЗМЕНЕНЫ В [##090??!?] \n[ОШИБКА 0x00000ce: Пакет Данных Поврежден, загрузка с точки восстановления.] \n\n

                                                                                                                      [Запись 1] - Патрульная группа только что подобрала раненого отставшего в нескольких милях от лагеря. Ходят слухи, что он «появился из ниоткуда» (ага, как будто я в такое поверю), и в окрестностях нет ничего, что могло бы объяснить его происхождение. Независимо от обоснованности их заявлений, выживший есть выживший. Пока я пишу это, мы несем его обратно. Он, конечно, не облегчает нам задачу, учитывая огромный вес его снаряжения — он тащит какие-то нетрадиционные модификации стандартной брони коммандо. Похоже, это — или, может быть, изначально была — первоначальная версия модели Mk. 1 (хотя я почти уверен, что они прекратили ее производство много лет назад?). \n\n
                                                                                                                        [Запись 2] - Обновление: у приятеля есть пугающе тяжелая артиллерия для бойца коммандо — ракетная установка, все еще теплая на ощупь, и несколько почти наверняка инопланетных гранат — я чертовски уверен, что ничего подобного не видел. Сейчас он без сознания, и, судя по тому, что мы можем сказать, глядя через его шлем, он изрядно потрепан. Его левая рука кажется особенно жесткой — его ладонь сжата вокруг рукояти его виброклинка. Некоторые из нас только что попытались хорошенько ее рассмотреть, но похоже, что его кулак сросся с этой чертовой штукой. Среди прочего на нем, он полностью покрыт этим корким черным... веществом. Мы не знаем, было ли это результатом драки между несколькими выжившими или свидетельством какой-то самообо??!0049### \n[Конец читаемых данных.] \n\n
                                                                                                                          [Запись 2a] - Я не знаю сколько времени у меня осталось пока я печатаю оно проснулось лагерь РАЗРУШЕН люди текут кровью мы даже не знаем человек это учитывая что он может сделать никто не знает что делать он побежал прямо на Адриана \nмы даже не знаем что его побудило??? что МЫ сделали чтобы заслужить все это??? Почему ЭТО СУЩЕСТВО напало на НА?!??!?##$0959090302???! \n[Конец читаемых данных.] \n\n

                                                                                                                          Ово??ды р?оятся в?округ это?го бла?городного з?ве?ря, п?ока он па?сется. \n\nВаш?а з??араза бу?дет уб??рана от?сюда э??ти?ми тру?дящи??мися рук?а?ми." }, "nemesisMercenary" : { "name" : "Nemesis Mercenary", @@ -91,12 +88,12 @@ "description": "ВЫ КРУТИТЕСЬ ВПЕРЕД, НАНОСЯ 4X100% УРОНА. ПОСЛЕДНИЙ УДАР ОГЛУШАЕТ." }, "muleV": { - "name": "БЕЗОПАСНАЯ ПОМОЩЬ", - "description": "ВЫ ЗАПУСКАЕТЕ ПЕРСОНАЛЬНЫЙ РЕМОНТНЫЙ ДРОН НА 8 СЕКУНД. ОН ИСЦЕЛЯЕТ ВАС НА 5X7% ОТ ВАШЕГО МАКСИМАЛЬНОГО ЗДОРОВЬЯ. ПРИ ПОЛНОМ ЗДОРОВЬЕ, ДАЕТ БАРЬЕР." + "name": "АВАРИЙНАЯ ПОМОЩЬ", + "description": "ВЫ ЗАПУСКАЕТЕ РЕМОНТНЫЙ ДРОН НА 8 СЕКУНД, ИСЦЕЛЯЮЩИЙ ВАС НА 5X7% ОТ ВАШЕГО МАКСИМАЛЬНОГО ЗДОРОВЬЯ. ПРИ ПОЛНОМ ЗДОРОВЬЕ, ДАЕТ БАРЬЕР ВМЕСТО ИСЦЕЛЕНИЯ." }, "muleVBoosted": { - "name": "БЕЗОПАСНАЯ ПОМОЩЬ 2.0", - "description": "ВЫ ЗАПУСКАЕТЕ ПЕРСОНАЛЬНЫЙ РЕМОНТНЫЙ ДРОН НА 8 СЕКУНД. ОН ИСЦЕЛЯЕТ ВАС НА 5X10% ОТ ВАШЕГО МАКСИМАЛЬНОГО ЗДОРОВЬЯ. ПРИ ПОЛНОМ ЗДОРОВЬЕ, ДАЕТ БАРЬЕР." + "name": "АВАРИЙНАЯ ПОМОЩЬ 2.0", + "description": "ВЫ ЗАПУСКАЕТЕ РЕМОНТНЫЙ ДРОН НА 8 СЕКУНД, ИСЦЕЛЯЮЩИЙ ВАС НА 5X10% ОТ ВАШЕГО МАКСИМАЛЬНОГО ЗДОРОВЬЯ. ПРИ ПОЛНОМ ЗДОРОВЬЕ, ДАЕТ БАРЬЕР ВМЕСТО ИСЦЕЛЕНИЯ." }, "nemesisCommandoZ": { "name": "Клинок Прекращения", @@ -454,6 +451,11 @@ "Protector.name" : "Защитник", "Protector.text" : "Хранитель Артефакта" }, + + "monster" : { + "admonitor.name" : "Глиняный Наставник", + "admonitor.story" : "Вдалеке знакомый глинянный «человек» плелся по территории храма. Однако, несмотря на схожесть внешности, это существо было не одним из тех, что я видел раньше. В отличие от своих меньших собратьев, ему не хватало ловкости, но этот горшечный защитник имел два стиснутых кулака. Его походка придавала ему почти... уверенный вид. Знаю, глупо было бы полагать, что оно не способно на разумные эмоции вроде убеждённости. Тем не менее, заботясь о своём благополучии, я решил не испытывать на прочность это качающееся нефтяное пятно и спрятался в раскопанных руинах. \n\nЕсли я хочу выбраться с этой планеты живым, я предпочту, чтобы моя бедренная кость была цела." + }, "interactable" : { "MimicInactive.text" : "..?", @@ -464,6 +466,7 @@ "poison.name" : "%s яда", "empyrean.name" : "%s Эмпиреи", "empyrean.text" : "Предвестник Суда", + "empyrean.worm" : "Призматический Левиафан" }, "stage" : { "whistlingBasin.name" : "Свистящий Бассейн", diff --git a/Sounds/Survivors/Executioner/select.ogg b/Sounds/Survivors/Executioner/select.ogg new file mode 100644 index 00000000..45b9586a Binary files /dev/null and b/Sounds/Survivors/Executioner/select.ogg differ diff --git a/Sprites/Items/Effects/guardingAmulet.png b/Sprites/Items/Effects/guardingAmulet.png index 146f7d00..aeee6187 100644 Binary files a/Sprites/Items/Effects/guardingAmulet.png and b/Sprites/Items/Effects/guardingAmulet.png differ diff --git a/Sprites/Items/JudderingEgg.png b/Sprites/Items/JudderingEgg.png index 44b34050..ca47d800 100644 Binary files a/Sprites/Items/JudderingEgg.png and b/Sprites/Items/JudderingEgg.png differ diff --git a/Sprites/Items/coffeeBag.png b/Sprites/Items/coffeeBag.png index 84879ab5..9bddddae 100644 Binary files a/Sprites/Items/coffeeBag.png and b/Sprites/Items/coffeeBag.png differ diff --git a/Sprites/Items/crypticSource.png b/Sprites/Items/crypticSource.png index 7b001c1b..af355165 100644 Binary files a/Sprites/Items/crypticSource.png and b/Sprites/Items/crypticSource.png differ diff --git a/Sprites/Items/roulette.png b/Sprites/Items/roulette.png index 5b6a7861..6175bda0 100644 Binary files a/Sprites/Items/roulette.png and b/Sprites/Items/roulette.png differ diff --git a/Sprites/Items/watchMetronome.png b/Sprites/Items/watchMetronome.png index 17b8c211..1ca04da4 100644 Binary files a/Sprites/Items/watchMetronome.png and b/Sprites/Items/watchMetronome.png differ diff --git a/Sprites/Items/wonderHerbs.png b/Sprites/Items/wonderHerbs.png index 8f91a6e5..5d0689fb 100644 Binary files a/Sprites/Items/wonderHerbs.png and b/Sprites/Items/wonderHerbs.png differ diff --git a/Sprites/Survivors/Executioner/portrait2.png b/Sprites/Survivors/Executioner/portrait2.png new file mode 100644 index 00000000..c02f480e Binary files /dev/null and b/Sprites/Survivors/Executioner/portrait2.png differ diff --git a/Sprites/Survivors/Executioner/portrait3.png b/Sprites/Survivors/Executioner/portrait3.png new file mode 100644 index 00000000..84c12207 Binary files /dev/null and b/Sprites/Survivors/Executioner/portrait3.png differ diff --git a/Sprites/Survivors/Executioner/portrait4.png b/Sprites/Survivors/Executioner/portrait4.png new file mode 100644 index 00000000..55128568 Binary files /dev/null and b/Sprites/Survivors/Executioner/portrait4.png differ diff --git a/Sprites/Survivors/Executioner/portraitSmall2.png b/Sprites/Survivors/Executioner/portraitSmall2.png new file mode 100644 index 00000000..b36934cc Binary files /dev/null and b/Sprites/Survivors/Executioner/portraitSmall2.png differ diff --git a/Sprites/Survivors/Executioner/portraitSmall3.png b/Sprites/Survivors/Executioner/portraitSmall3.png new file mode 100644 index 00000000..52fc0cbb Binary files /dev/null and b/Sprites/Survivors/Executioner/portraitSmall3.png differ diff --git a/Sprites/Survivors/Executioner/portraitSmall4.png b/Sprites/Survivors/Executioner/portraitSmall4.png new file mode 100644 index 00000000..64c26010 Binary files /dev/null and b/Sprites/Survivors/Executioner/portraitSmall4.png differ diff --git a/Sprites/Survivors/Executioner/select2.png b/Sprites/Survivors/Executioner/select2.png new file mode 100644 index 00000000..848ebe05 Binary files /dev/null and b/Sprites/Survivors/Executioner/select2.png differ diff --git a/Sprites/Survivors/Executioner/select3.png b/Sprites/Survivors/Executioner/select3.png new file mode 100644 index 00000000..fa27bd0f Binary files /dev/null and b/Sprites/Survivors/Executioner/select3.png differ diff --git a/Sprites/Survivors/Executioner/select4.png b/Sprites/Survivors/Executioner/select4.png new file mode 100644 index 00000000..432ff686 Binary files /dev/null and b/Sprites/Survivors/Executioner/select4.png differ diff --git a/Sprites/Survivors/MULE/portrait.png b/Sprites/Survivors/MULE/portrait.png index 7f20a945..b42373f2 100644 Binary files a/Sprites/Survivors/MULE/portrait.png and b/Sprites/Survivors/MULE/portrait.png differ diff --git a/Sprites/Survivors/MULE/portrait2.png b/Sprites/Survivors/MULE/portrait2.png index ab4be193..d0578a4c 100644 Binary files a/Sprites/Survivors/MULE/portrait2.png and b/Sprites/Survivors/MULE/portrait2.png differ diff --git a/Sprites/Survivors/MULE/portrait3.png b/Sprites/Survivors/MULE/portrait3.png new file mode 100644 index 00000000..a262c0ca Binary files /dev/null and b/Sprites/Survivors/MULE/portrait3.png differ diff --git a/Sprites/Survivors/MULE/portrait4.png b/Sprites/Survivors/MULE/portrait4.png new file mode 100644 index 00000000..e2a192a3 Binary files /dev/null and b/Sprites/Survivors/MULE/portrait4.png differ diff --git a/Sprites/Survivors/MULE/portrait5.png b/Sprites/Survivors/MULE/portrait5.png new file mode 100644 index 00000000..db8e0e2b Binary files /dev/null and b/Sprites/Survivors/MULE/portrait5.png differ diff --git a/Sprites/Survivors/MULE/portraitSmall3.png b/Sprites/Survivors/MULE/portraitSmall3.png new file mode 100644 index 00000000..f2d96868 Binary files /dev/null and b/Sprites/Survivors/MULE/portraitSmall3.png differ diff --git a/Sprites/Survivors/MULE/portraitSmall4.png b/Sprites/Survivors/MULE/portraitSmall4.png new file mode 100644 index 00000000..1e063738 Binary files /dev/null and b/Sprites/Survivors/MULE/portraitSmall4.png differ diff --git a/Sprites/Survivors/MULE/portraitSmall5.png b/Sprites/Survivors/MULE/portraitSmall5.png new file mode 100644 index 00000000..98813e2a Binary files /dev/null and b/Sprites/Survivors/MULE/portraitSmall5.png differ diff --git a/Sprites/Survivors/MULE/select2.png b/Sprites/Survivors/MULE/select2.png new file mode 100644 index 00000000..0c4dba55 Binary files /dev/null and b/Sprites/Survivors/MULE/select2.png differ diff --git a/Sprites/Survivors/MULE/select3.png b/Sprites/Survivors/MULE/select3.png new file mode 100644 index 00000000..d4bbc1c8 Binary files /dev/null and b/Sprites/Survivors/MULE/select3.png differ diff --git a/Sprites/Survivors/MULE/select4.png b/Sprites/Survivors/MULE/select4.png new file mode 100644 index 00000000..c6c72a63 Binary files /dev/null and b/Sprites/Survivors/MULE/select4.png differ diff --git a/Sprites/Survivors/MULE/select5.png b/Sprites/Survivors/MULE/select5.png new file mode 100644 index 00000000..36b947ff Binary files /dev/null and b/Sprites/Survivors/MULE/select5.png differ diff --git a/Sprites/Survivors/NemesisCommando/palette.png b/Sprites/Survivors/NemesisCommando/palette.png new file mode 100644 index 00000000..6d393ca5 Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/palette.png differ diff --git a/Sprites/Survivors/NemesisCommando/portrait2.png b/Sprites/Survivors/NemesisCommando/portrait2.png new file mode 100644 index 00000000..11c4251d Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/portrait2.png differ diff --git a/Sprites/Survivors/NemesisCommando/portrait3.png b/Sprites/Survivors/NemesisCommando/portrait3.png new file mode 100644 index 00000000..12cab2b4 Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/portrait3.png differ diff --git a/Sprites/Survivors/NemesisCommando/portrait4.png b/Sprites/Survivors/NemesisCommando/portrait4.png new file mode 100644 index 00000000..3ee5404f Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/portrait4.png differ diff --git a/Sprites/Survivors/NemesisCommando/portrait5.png b/Sprites/Survivors/NemesisCommando/portrait5.png new file mode 100644 index 00000000..364f9003 Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/portrait5.png differ diff --git a/Sprites/Survivors/NemesisCommando/portraitTiny2.png b/Sprites/Survivors/NemesisCommando/portraitTiny2.png new file mode 100644 index 00000000..ab428ceb Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/portraitTiny2.png differ diff --git a/Sprites/Survivors/NemesisCommando/portraitTiny3.png b/Sprites/Survivors/NemesisCommando/portraitTiny3.png new file mode 100644 index 00000000..3492a738 Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/portraitTiny3.png differ diff --git a/Sprites/Survivors/NemesisCommando/portraitTiny4.png b/Sprites/Survivors/NemesisCommando/portraitTiny4.png new file mode 100644 index 00000000..06a1d1e8 Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/portraitTiny4.png differ diff --git a/Sprites/Survivors/NemesisCommando/portraitTiny5.png b/Sprites/Survivors/NemesisCommando/portraitTiny5.png new file mode 100644 index 00000000..8dad8038 Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/portraitTiny5.png differ diff --git a/Sprites/Survivors/NemesisCommando/select2.png b/Sprites/Survivors/NemesisCommando/select2.png new file mode 100644 index 00000000..eb1a636d Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/select2.png differ diff --git a/Sprites/Survivors/NemesisCommando/select3.png b/Sprites/Survivors/NemesisCommando/select3.png new file mode 100644 index 00000000..2c43149d Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/select3.png differ diff --git a/Sprites/Survivors/NemesisCommando/select4.png b/Sprites/Survivors/NemesisCommando/select4.png new file mode 100644 index 00000000..fd7f11f9 Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/select4.png differ diff --git a/Sprites/Survivors/NemesisCommando/select5.png b/Sprites/Survivors/NemesisCommando/select5.png new file mode 100644 index 00000000..4cb5e369 Binary files /dev/null and b/Sprites/Survivors/NemesisCommando/select5.png differ diff --git a/Survivors/executioner.lua b/Survivors/executioner.lua index f73d240f..a31b86a3 100644 --- a/Survivors/executioner.lua +++ b/Survivors/executioner.lua @@ -22,7 +22,7 @@ local sprite_fall_half = Resources.sprite_load(NAMESPACE, "ExecutionerFallHalf" local sprite_climb = Resources.sprite_load(NAMESPACE, "ExecutionerClimb", path.combine(SPRITE_PATH, "climb.png"), 6, 12, 18) local sprite_death = Resources.sprite_load(NAMESPACE, "ExecutionerDeath", path.combine(SPRITE_PATH, "death.png"), 11, 38, 17) local sprite_decoy = Resources.sprite_load(NAMESPACE, "ExecutionerDecoy", path.combine(SPRITE_PATH, "decoy.png"), 1, 16, 18) ---local sprite_palette = Resources.sprite_load(NAMESPACE, "ExecutionerPalette", path.combine(SPRITE_PATH, "palette.png")) +local sprite_palette = Resources.sprite_load(NAMESPACE, "ExecutionerPalette", path.combine(SPRITE_PATH, "palette.png")) local sprite_shoot1 = Resources.sprite_load(NAMESPACE, "ExecutionerShoot1", path.combine(SPRITE_PATH, "shoot1.png"), 5, 10, 17) local sprite_shoot1_half = Resources.sprite_load(NAMESPACE, "ExecutionerShoot1Half", path.combine(SPRITE_PATH, "shoot1Half.png"), 5, 10, 17) @@ -57,6 +57,7 @@ local sprite_ion_particleS = Resources.sprite_load(NAMESPACE, "ExecutionerIonPar local sprite_log = Resources.sprite_load(NAMESPACE, "ExecutionerLog", path.combine(SPRITE_PATH, "log.png")) -- sounds. +local sound_select = Resources.sfx_load(NAMESPACE, "UISurvivorsExecutioner", path.combine(SOUND_PATH, "select.ogg")) local sound_shoot1 = Resources.sfx_load(NAMESPACE, "ExecutionerShoot1", path.combine(SOUND_PATH, "skill1.ogg")) local sound_shoot2 = Resources.sfx_load(NAMESPACE, "ExecutionerShoot2", path.combine(SOUND_PATH, "skill2.ogg")) local sound_shoot3 = Resources.sfx_load(NAMESPACE, "ExecutionerShoot3", path.combine(SOUND_PATH, "skill3.ogg")) @@ -122,6 +123,7 @@ executioner:set_animations({ executioner:set_cape_offset(0, -8, 0, -5) executioner:set_primary_color(Color.from_rgb(175, 113, 126)) +executioner.select_sound_id = sound_select executioner.sprite_loadout = sprite_loadout executioner.sprite_portrait = sprite_portrait @@ -129,6 +131,20 @@ executioner.sprite_portrait_small = sprite_portrait_small executioner.sprite_idle = sprite_idle -- used by skin systen for idle sprite executioner.sprite_title = sprite_walk -- also used by skin system for walk sprite executioner.sprite_credits = sprite_credits +executioner:set_palettes(sprite_palette, sprite_palette, sprite_palette) + +--skins +executioner:add_skin("Grass Green", 1, Resources.sprite_load(NAMESPACE, "ExecutionerSelect2", path.combine(SPRITE_PATH, "select2.png"), 23, 28, 0), +Resources.sprite_load(NAMESPACE, "ExecutionerPortrait2", path.combine(SPRITE_PATH, "portrait2.png"), 3), +Resources.sprite_load(NAMESPACE, "ExecutionerPortraitSmall2", path.combine(SPRITE_PATH, "portraitSmall2.png"))) + +executioner:add_skin("Blood Red", 2, Resources.sprite_load(NAMESPACE, "ExecutionerSelect3", path.combine(SPRITE_PATH, "select3.png"), 23, 28, 0), +Resources.sprite_load(NAMESPACE, "ExecutionerPortrait3", path.combine(SPRITE_PATH, "portrait3.png"), 3), +Resources.sprite_load(NAMESPACE, "ExecutionerPortraitSmall3", path.combine(SPRITE_PATH, "portraitSmall3.png"))) + +executioner:add_skin("Royal Purple", 3, Resources.sprite_load(NAMESPACE, "ExecutionerSelect4", path.combine(SPRITE_PATH, "select4.png"), 23, 28, 0), +Resources.sprite_load(NAMESPACE, "ExecutionerPortrait4", path.combine(SPRITE_PATH, "portrait4.png"), 3), +Resources.sprite_load(NAMESPACE, "ExecutionerPortraitSmall4", path.combine(SPRITE_PATH, "portraitSmall4.png"))) executioner:clear_callbacks() executioner:onInit(function(actor) @@ -787,6 +803,7 @@ stateExecutionerSpecial2:onStep(function(actor, data) projectile.direction = 90 - actor.image_xscale * 90 projectile.image_xscale = actor.image_xscale projectile.damage_coeff = damage + projectile:actor_skin_skinnable_set_skin(actor) projectile.tX = actor.x + 270 * actor.image_xscale projectile.tY = actor.y @@ -831,6 +848,8 @@ objExecutionerAxe:onCreate(function(self) self.time = 0.0 self:get_data().already_hit = {} + + self:actor_skin_skinnable_init() end) objExecutionerAxe:onStep(function(self) if not Instance.exists(self.parent) then @@ -958,4 +977,8 @@ objExecutionerAxe:onStep(function(self) end end) +objExecutionerAxe:onDraw(function(self) + self:actor_skin_skinnable_draw_self() +end) + local executionerLog = Survivor_Log.new(executioner, sprite_log) diff --git a/Survivors/mule.lua b/Survivors/mule.lua index 458bf483..df544623 100644 --- a/Survivors/mule.lua +++ b/Survivors/mule.lua @@ -111,22 +111,22 @@ mule.sprite_credits = sprite_credits mule.select_sound_id = sound_select mule:set_palettes(sprite_palette, sprite_palette, sprite_palette) --- skins ---mule:add_skin("Yellow Rose", 1, Resources.sprite_load(NAMESPACE, "MuleSelect2", path.combine(SPRITE_PATH, "select.png"), 15, 56, 0), ---Resources.sprite_load(NAMESPACE, "MulePortrait2", path.combine(SPRITE_PATH, "portrait.png"), 4), ---Resources.sprite_load(NAMESPACE, "MulePortraitSmall2", path.combine(SPRITE_PATH, "portraitSmall.png"))) +--skins +mule:add_skin("Yellow Rose", 1, Resources.sprite_load(NAMESPACE, "MuleSelect2", path.combine(SPRITE_PATH, "select2.png"), 15, 56, 0), +Resources.sprite_load(NAMESPACE, "MulePortrait2", path.combine(SPRITE_PATH, "portrait2.png"), 4), +Resources.sprite_load(NAMESPACE, "MulePortraitSmall2", path.combine(SPRITE_PATH, "portraitSmall2.png"))) ---mule:add_skin("Steel Soul", 2, Resources.sprite_load(NAMESPACE, "MuleSelect3", path.combine(SPRITE_PATH, "select.png"), 15, 56, 0), ---Resources.sprite_load(NAMESPACE, "MulePortrait3", path.combine(SPRITE_PATH, "portrait.png"), 4), ---Resources.sprite_load(NAMESPACE, "MulePortraitSmall3", path.combine(SPRITE_PATH, "portraitSmall.png"))) +mule:add_skin("Steel Soul", 2, Resources.sprite_load(NAMESPACE, "MuleSelect3", path.combine(SPRITE_PATH, "select3.png"), 15, 56, 0), +Resources.sprite_load(NAMESPACE, "MulePortrait3", path.combine(SPRITE_PATH, "portrait3.png"), 4), +Resources.sprite_load(NAMESPACE, "MulePortraitSmall3", path.combine(SPRITE_PATH, "portraitSmall3.png"))) ---mule:add_skin("Automated Hunter", 3, Resources.sprite_load(NAMESPACE, "MuleSelect4", path.combine(SPRITE_PATH, "select.png"), 15, 56, 0), ---Resources.sprite_load(NAMESPACE, "MulePortrait4", path.combine(SPRITE_PATH, "portrait.png"), 4), ---Resources.sprite_load(NAMESPACE, "MulePortraitSmall4", path.combine(SPRITE_PATH, "portraitSmall.png"))) +mule:add_skin("Automated Hunter", 3, Resources.sprite_load(NAMESPACE, "MuleSelect4", path.combine(SPRITE_PATH, "select4.png"), 15, 56, 0), +Resources.sprite_load(NAMESPACE, "MulePortrait4", path.combine(SPRITE_PATH, "portrait4.png"), 4), +Resources.sprite_load(NAMESPACE, "MulePortraitSmall4", path.combine(SPRITE_PATH, "portraitSmall4.png"))) ---mule:add_skin("Military Grade", 4, Resources.sprite_load(NAMESPACE, "MuleSelect5", path.combine(SPRITE_PATH, "select.png"), 15, 56, 0), ---Resources.sprite_load(NAMESPACE, "MulePortrait5", path.combine(SPRITE_PATH, "portrait.png"), 4), ---Resources.sprite_load(NAMESPACE, "MulePortraitSmall5", path.combine(SPRITE_PATH, "portraitSmall.png"))) +mule:add_skin("Military Grade", 4, Resources.sprite_load(NAMESPACE, "MuleSelect5", path.combine(SPRITE_PATH, "select5.png"), 15, 56, 0), +Resources.sprite_load(NAMESPACE, "MulePortrait5", path.combine(SPRITE_PATH, "portrait5.png"), 4), +Resources.sprite_load(NAMESPACE, "MulePortraitSmall5", path.combine(SPRITE_PATH, "portraitSmall5.png"))) mule:clear_callbacks() mule:onInit(function(actor) @@ -831,4 +831,4 @@ stateSpecial:onStep(function(actor, data) actor:skill_util_exit_state_on_anim_end() end) ---local muleLog = Survivor_Log.new(mule, sprite_log) \ No newline at end of file +local muleLog = Survivor_Log.new(mule, sprite_log) \ No newline at end of file diff --git a/Survivors/nemesisCommando.lua b/Survivors/nemesisCommando.lua index 6e1d65d0..a9778308 100644 --- a/Survivors/nemesisCommando.lua +++ b/Survivors/nemesisCommando.lua @@ -5,6 +5,7 @@ local sprite_select = Resources.sprite_load(NAMESPACE, "NemCommandoSelect", pa local sprite_portrait = Resources.sprite_load(NAMESPACE, "NemCommandoPortrait", path.combine(SPRITE_PATH, "portrait.png"), 3) local sprite_portrait_small = Resources.sprite_load(NAMESPACE, "NemCommandoPortraitSmall", path.combine(SPRITE_PATH, "portraitTiny.png")) local sprite_credits = Resources.sprite_load(NAMESPACE, "CreditsSurvivorNemCommando", path.combine(SPRITE_PATH, "credits.png"), 1, 7, 11) +local sprite_palette = Resources.sprite_load(NAMESPACE, "NemCommandoPalette", path.combine(SPRITE_PATH, "palette.png")) local sprite_idle = Resources.sprite_load(NAMESPACE, "NemCommandoIdle", path.combine(SPRITE_PATH, "idle.png"), 1, 15, 12) local sprite_idle2 = Resources.sprite_load(NAMESPACE, "NemCommandoIdle2", path.combine(SPRITE_PATH, "idle2.png"), 1, 15, 12) @@ -130,6 +131,24 @@ nemCommando.sprite_loadout = sprite_select nemCommando.sprite_idle = sprite_idle nemCommando.sprite_title = sprite_walk nemCommando.sprite_credits = sprite_credits +nemCommando:set_palettes(sprite_palette, sprite_palette, sprite_palette) + +--skins +nemCommando:add_skin("Mk. II", 1, Resources.sprite_load(NAMESPACE, "NemCommandoSelect2", path.combine(SPRITE_PATH, "select2.png"), 34, 28, 0), +Resources.sprite_load(NAMESPACE, "NemCommandoPortrait2", path.combine(SPRITE_PATH, "portrait2.png"), 3), +Resources.sprite_load(NAMESPACE, "NemCommandoPortraitSmall2", path.combine(SPRITE_PATH, "portraitTiny2.png"))) + +nemCommando:add_skin("Ice Blade", 2, Resources.sprite_load(NAMESPACE, "NemCommandoSelect3", path.combine(SPRITE_PATH, "select3.png"), 34, 28, 0), +Resources.sprite_load(NAMESPACE, "NemCommandoPortrait3", path.combine(SPRITE_PATH, "portrait3.png"), 3), +Resources.sprite_load(NAMESPACE, "NemCommandoPortraitSmall3", path.combine(SPRITE_PATH, "portraitTiny3.png"))) + +nemCommando:add_skin("Nature's Gift", 3, Resources.sprite_load(NAMESPACE, "NemCommandoSelect4", path.combine(SPRITE_PATH, "select4.png"), 34, 28, 0), +Resources.sprite_load(NAMESPACE, "NemCommandoPortrait4", path.combine(SPRITE_PATH, "portrait4.png"), 3), +Resources.sprite_load(NAMESPACE, "NemCommandoPortraitSmall4", path.combine(SPRITE_PATH, "portraitTiny4.png"))) + +nemCommando:add_skin("Callback", 4, Resources.sprite_load(NAMESPACE, "NemCommandoSelect5", path.combine(SPRITE_PATH, "select5.png"), 34, 28, 0), +Resources.sprite_load(NAMESPACE, "NemCommandoPortrait5", path.combine(SPRITE_PATH, "portrait5.png"), 3), +Resources.sprite_load(NAMESPACE, "NemCommandoPortraitSmall5", path.combine(SPRITE_PATH, "portraitTiny5.png"))) -- utility function for updating his basic sprites depending on if his last skill was the gun local function nemmando_update_sprites(actor, has_gun) @@ -426,6 +445,7 @@ stateNemCommandoSecondary2:onStep(function(actor, data) slash.direction = actor:skill_util_facing_direction() slash.image_xscale = actor.image_xscale slash.depth = slash.depth + i + slash:actor_skin_skinnable_set_skin(actor) if i > 0 then slash.image_blend = Color.DKGRAY @@ -454,6 +474,8 @@ objSlash:onCreate(function(inst) local data = inst:get_data() data.hit_list = {} data.lifetime = 80 + + inst:actor_skin_skinnable_init() end) objSlash:onStep(function(inst) if not Instance.exists(inst.parent) then @@ -477,6 +499,7 @@ objSlash:onStep(function(inst) trail.image_xscale = inst.image_xscale trail.image_yscale = inst.image_yscale trail.depth = inst.depth + 1 + trail:actor_skin_skinnable_set_skin(inst.parent) end local scale = math.min(1, data.lifetime / 40) @@ -502,6 +525,9 @@ objSlash:onStep(function(inst) end end end) +objSlash:onDraw(function(inst) + inst:actor_skin_skinnable_draw_self() +end) nemCommandoUtility:set_skill_icon(sprite_skills, 3) nemCommandoUtility.cooldown = 3 * 60 diff --git a/Survivors/technician.lua b/Survivors/technician.lua index ba0a3ecb..7f522b13 100644 --- a/Survivors/technician.lua +++ b/Survivors/technician.lua @@ -271,6 +271,14 @@ local buff_vending_2 = Buff.new(NAMESPACE, "really_hydrated") local buff_exposed = Buff.new(NAMESPACE, "exposed") local buff_exposed_2 = Buff.new(NAMESPACE, "exposed2") +local fake_mocha = Item.new(NAMESPACE, "fakeMocha", true) +fake_mocha.is_hidden = true +fake_mocha:clear_callbacks() +fake_mocha:onStatRecalc(function(actor, stack) + actor.attack_speed = actor.attack_speed + 0.15 * stack + actor.pHmax = actor.pHmax + 0.06 * stack +end) + -- All the machines.........! --Create an EfFlash (Fading solid color overlay of the object) @@ -1722,6 +1730,10 @@ stateTechnicianSpecial:onStep(function(actor, data) turret_inst.image_xscale = actor.image_xscale GM.actor_queue_dirty(turret_inst) GM.inventory_items_copy(actor, turret_inst, Item.LOOT_TAG.item_blacklist_engi_turrets) + + turret_inst:item_give(fake_mocha, turret_inst:item_stack_count(Item.find("ror-mocha"))) -- this is stupid but has to be done because for whatever reason mochas crash the game when certain actors get it (like drones) + turret_inst:item_remove(Item.find("ror-mocha"), turret_inst:item_stack_count(Item.find("ror-mocha")), Item.STACK_KIND.any) + if data.scepter > 0 then turret_inst.upgrade_progress = 3 end diff --git a/manifest.json b/manifest.json index b6d53484..7d39e6a9 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "name": "StarstormReturns", - "version_number": "0.1.2", + "version_number": "0.1.3", "website_url": "https://discord.gg/fGShMVEayr", "description": "A remaster of Starstorm 1, adding new survivors, items, artifacts, stages, enemies and much more to Risk of Rain Returns.", "dependencies": [