Приветствую Вас, Рядовой! Регистрация RSS

RA2 Resourse

Пятница, 26 Апреля 24
Главная » Статьи » Мои статьи

Ares Expansion DLL (Нововведения 01)
Новая и дополненная игровая логика


Дополнительные ArmorTypes и Verses 
Новые секции в [ArmorTypes] позволяют задать новые ArmorTypes для объектов (в дополнение к старым 11 существующим ArmorTypes; none, flak, plate, light, medium, heavy, wood, steel, concrete, special_1 и special_2). 

[ArmorTypes] 
paper=steel 
magic=11% 

paper=steel объявляет новый ArmorType по имени "paper”, чьи Verses для каждой боеголовки по умолчанию равны Verses этой боеголовки против "steel” ArmorType. magic=11% объявляет новый ArmorType по имени "magic”, чьи Verses на всех боеголовках по умолчанию равны 11%. Эти ArmorTypes можно назначить любому объекту в точности как стандартные ArmorTypes (нечувствительно к регистру). Их восприимчивость к отдельным боеголовкам можно отрегулировать следующим образом:[Warhead]Versus.magic=150% делает эту боеголовку наносящей 150% урон против объектов с Armor=magic. 
Versus.*= 

Заметьте, что каждый ArmorType требует отдельного флага "Versus.*”, тогда как оригинальные 11 ArmorTypes последовательно записываются через оригинальный флаг Verses (обратите внимание на опечатку Westwood-а в слове "versus”). 

Оригинальный флаг Verses= больше не приводит к вылету при указывании менее 11 значений. 

Особые значения Verses боеголовок 
Флаг Verses (используемый для определения эффективности боеголовки против разных типов брони) имел три особых значения, особо влиявших на поведение юнита: 
0% значит нет force fire, нет ответной атаки, нет автоматического выбора цели 
1% означает нет ответной атаки, нет автоматического выбора цели 
2% означает нет автоматического выбора цели 

Это поведение теперь можно включить или выключить независимо от модификатора урона (так что теперь может быть боеголовка со 100% эффективностью против типа брони, но, в тоже время, не позволяюшая напрямую атаковать войска этого ArmorType).[Warhead]Versus.magic.ForceFire= (boolean): 
Можно или нет давать приказ force-fired по "magic” ArmorType. [Warhead]Versus.steel.Retaliate= (boolean): 
Можно или нет использовать эту боеголовку для ответного огня против "steel” 
[Warhead]Versus.clingfilm.PassiveAcquire= (boolean): 
Можно или нет позволять этой боеголовке "автоматически" выбирать в качестве цели "clingfilm” ArmorType. 
Заметьте правильное написание в Ares слова "acquire”. 

Иммунитеты 
В оригинальной игре были способы сделать юнит иммунным к определенным боеголовкам, но они очень ограничены. Например, пехотинец [DESO] имел флаг ImmuneToRadiation=yes и боеголовка [RadBeamWarhead] имела флаг Radiation=yes. Это означает, что дезолятор будет обладать иммунитетом к урону от радиационных лучей других дезоляторов. У этой системы иммунитетов два ограничения: 
1. Существует лишь маленькая горстка таких пар флагов. 
2. Иммунитеты защищают только от получения урона от этих боеголовок. Она не мешает атаковать и целится в этот юнит. В нашем примере два дезолятора могут вступить в перестрелку и безрезультатно её вести. 

Ares обходит эти ограничения через новые типы брони, как отмечено выше. Если вы хотите дополнительные иммунитеты в "старом стиле", позволяющие юнитам атаковать цели, которым они не могут повредить, e’ immunities that still allow units to target things they can’t damage (например потому что они могут поражать врагов в местности вокруг цели), то создайте новый тип брони, эмулирующий следующий пример: 
[ArmorTypes] 
flakImmuneToFrost=flak 

[IceMan] 
Armor=flakImmuneToFrost 
Primary=IceBlast 

[IceBlast] 
Warhead=IceBlastWH 

[IceBlastWH] 
Versus.flakImmuneToFrost=0% 
Versus.flakImmuneToFrost.ForceFire=yes 
Versus.flakImmuneToFrost.Retaliate=yes 
Versus.flakImmuneToFrost.PassiveAcquire=yes 

Вышеуказанные настройки дают IceMan иммунитет к урону оружия IceMan, хотя все ещё может быть атакован этим оружием. 

AlternateTheaterArt 
Navy Seal имеет флаг AlternateArcticArt=yes, что позволяет игре использовать графический файл seala.shp на арктических картах вместо seal.shp. Эта логика работает с любым InfantryType, но только лишь на арктических театрах и лишь для InfantryTypes.[TechnoType]AlternateTheaterArt= (boolean): 
Уточняет, использует или нет юнит с SHP-графикой альтернативные версии в зависимости от театра текущей карты. Например, Image=JUNK и AlternateTheaterArt=yes у юнита заставят загружать из artmd.ini секцию [JUNKA] на арктических, [JUNKD] на пустынных и т.д. в зависимости от театра. Если любая из этих секций отсутствует, то будет использоваться простое [JUNK]. Это довольно похоже на AlternateArcticArt, просто самостоятельно и умнее. По умолчанию стоит no. 
Замечание: Это работает лишь для юнитов с SHP-графикой. Воксели не используют эту систему и не могут иметь зависящую от театра графику (вы должны использовать Prerequisite.RequiredTheaters для достижения аналогичного эффекта). 

Избегаемые Internal Errors 
Snowmd.ini 
[General]Medians=71 
Эта настройка необходима для избегания Internal Error, происходящей при генерации случайной карты с включенными Urban Areas/городскими областями. Оно также необходимо для Terrain Expansion. Чтобы избежать внутренних ошибок, Ares устанавливает значение по умолчанию на 71. 

Carryalls 
Carryall использовался в Tiberian Sun. AircraftTypes с Carryall=yes могли поднимать UnitTypes с поля боя, перевозить их и приземлять в новом месте. Эта логика не использовалась в Red Alert 2 и не обновлялась касательно морских войск и других нововведений. Ares обновляет логику и добавляет новые опции. 
[AircraftType]►Carryall.SizeLimit= (число) 
Максимальный Size=, с которым техника может быть поднята carryall. -1 означает любой размер. По умолчанию -1. 
[UnitType]►Carryall.Allowed= (boolean) 
Может ли юнит вообще быть поднят таким образом? Если не указано, то юниты с Organic=yes или NonVehicle=yes не могут быть подняты. Если указано, то флаг Carryall.Allowed переписывает положение по умолчанию. Пока невозможно "раззаписать" заданнное и вернуться к значению по умолчанию. Вам нужно четко указать значение. 

Замечание: Юниты, пораженные паразитами (кальмары/террор дроны), не могут быть подняты. 

Замечание: По умолчанию carryall-ы будут поднимать корабли, то есть UnitTypes с Naval=yes, но не будут способны поместить их назад в воду. Помещенный на землю корабль взорвется вместе с транспортом. Для предотвращения укажите Carryall.Allowed=no на кораблях. 

Хронотюрьмы 
Одна из задумок для Yuri’s Revenge, с выпущенным концепт-артом и даже присутствовавшая на оригинальной версии обложки игры. Хронотюрьма представляет собой юнит, затягивающий вражеские войска в "сферу заключения" своей турели; сфера увеличивалась в размере с каждым затянутым юнитом, и если тюрьма разрушалась, то юниты оказывались бы на свободе. Ares добавляет функции, с которыми можно создать этот юнит, но вполне можно использовать и для других целей. 
[Weapon]Abductor=(boolean): 
Если установлено на yes, оружие с этим флагом будет затягивать цель в качестве пассажира юнита-стрелка. Если нападавший будет уничтожен, его пассажиры освободятся. 
Замечание: Удостоверьтесь что у юнита-стрелка есть место для пассажиров. Также не забывайте, что по умолчанию SizeLimit=0, и если он не указан, то большинство юнитов будет невозможно захватить. Как и всегда, транспортам нужно указать PipScale. 
Замечание: Из-за способа работы Passengers у зданий, вполне возможно что эта логика не будет корректно работать со зданиями. (Возможно InfantryAbsorb/ UnitAbsorb как-то пригодятся). Эти проблемы признаны выходящими за грань оригинального запроса и не считаются багами. Аналогично с InfantryTypes. О неполадках при работе логики с VehicleTypes и AircraftTypes, с другой стороны, необходимо немедленно сообщать. 

[TechnoType]PassengerTurret=(boolean): 
Если yes, то турель юнита будет меняться на турель с нумерацией, равной числу пассажиров в юните. 
0 пассажиров - footur.vxl 
1 пассажир - footur1.vxl 
5 пассажиров - footur5.vxl 
Замечание: Для корректной работы используйте оригинальную логику нескольких турелей YR; то есть укажите Turret=yes, необходимое число в TurretCount, и флаги WeaponX для уточнения оружия каждой турели. 

Хроносдвиг 
Эти опции уточняют работу хроносферы с объектом. 
[TechnoType]Chronoshift.Allow= (boolean): 
Определяет, будет или нет этот юнит затронут супероружием типа Chronosphere. В остальном игнорируется. По умолчанию yes. 
[BuildingType]Chronoshift.IsVehicle= (boolean): 
Определяет, является или нет это здание развернутой техникой, которая может быть перемещена супероружием Chronosphere, которое перемещает юниты и с Chronosphere.ReconsiderBuildings=yes. С другой стороны, это здание не будет считаться зданием в целях телепортации и его нельзя будет переместить хроносферой, которая не работает на юнитах. По умолчанию no. 

Уникальные палитры анимаций и Projectile 
В Yuri’s Revenge вы могли использовать для анимаций палитру анимаций или палитру юнитов. Ares позволяет задать свою палитру для анимаций и снарядов (projectiles). 
[Animation]CustomPalette = (имя файла с .pal): 
Задает имя палитры этой анимации/снаряда. 
Вы можете задать зависящие от театра палитры, поместив три ~ в той части имени файла, в которой должна находится буква театра. 
CustomPalette=abcd.pal всегда использует abcd.pal. 
CustomPalette=lib~~~.pal использует libtem.pal, libsno.pal и т.д. 
Учтите, что вы должны добавить projectile в список [Animations]. 

Настраиваемый фундамент здания 
Фундамент зданий теперь может быть любого размера и формы, а не только лишь несколько заранее заготовленных вариантов. Например, можно восстановить крестовидную ремонтную площадку из старого Red Alert. INI код довольно сложный, поэтому ради работы вручную рекомендуется использовать генератор. При работе с генератором не забудьте пометить внешние клетки. 

Замечание: Военные заводы запрограммированы использовать путь выхода юнита из оригинальной игры, так что редактирование их размера не рекомендуется. Точка выхода из военного завода запрограммирована быть 11 внешней клеткой. 

Замечание: Генератор расположен на сайте Renegade Project Network и не совместим с Google Chrome. 

Настраиваемая палитра иконок 
Вместо постоянного использования палитры иконок, отдельным иконкам можно назначить свою палитру. В artmd.ini:[UnitArt]CameoPalette= (имя файла, включая .pal): 
Задает имя палитры для иконки юнита (Cameo и AltCameo должны быть в одинаковой палитре), в формате "filename.pal”. По умолчанию cameo.pal. 

In rulesmd.ini: 
[SuperWeapon]SidebarPalette= (имя файла, включая .pal): 
Задает имя палитры иконки супероружия, SidebarImage, в формате "filename.pal”. По умолчанию cameo.pal. 

Замечание: Иконки не должны использовать цвет номер 0 любой палитры. В игре он будет прозрачным. 

Настраиваемые шевроны 
Юниты теперь могут получить свои уникальные шевроны (ветеранский знак). 
[TechnoType]Insignia.Rookie= (имя файла, не включая .shp) 
[TechnoType]Insignia.Veteran= (имя файла, не включая .shp) [TechnoType]Insignia.Elite= (имя файла, не включая .shp) 
Например, Insignia.Rookie=SAMPLE отобразит sample.shp как шеврон объекта-новичка. 

Эти SHP - как и оригинальный pips.shp - должны быть в палитре театра. Если вы задали шеврон, будет нарисован первый фрейм этого SHP. Ветераны и элита без таких уточнений будут по-прежнему использовать 15-й/16-й фрейм pips.shp. 

Настраиваемая анимацию парашютов 
Объектам можно назначить свою анимацию парашютов. 
[Object]Parachute.Anim= (анимация) 
Задает анимацию из artmd.ini, которая послужит парашютом объекта при падении. Если не указана, будет использоваться стандарное PARACH. SHP предполагается нарисованным в палитре юнитов. 

Пока проигрывается анимация, скорость падения объекта не будет превышать [General]ParachuteMaxFallRate=. После её завершения, если объект все ещё падает, его скорость возрастет до [General]NoParachuteMaxFallRate=. 

Настраиваемое получение опыта 
Позволяет настроить способы получения юнитом опыта от убитых врагов для юнитов с Passengers, Airstrike и Mind-Control. 
[TechnoType]Experience.FromPassengers= (boolean): 
Позволяет юниту с OpenTopped=yes или Gunner=yes получать опыт когда пассажир убивает врага. Если нет, то юнит получает опыт только от своих собственных убийств. Для юнитов вроде IFV это означает, что юнит может получать опыт для себя только без пассажиров. По умолчанию yes. 
[TechnoType]Experience.PromotePassengers= (boolean): 
Если юнит с OpenTopped=yes или Gunner=yes набрал опыта и стал элитой, то стрелявшие пассажиры будут получать весь опыт за убийство цели для себя. Если no, то опыт будет потерян. По умолчанию no. 
[TechnoType]Experience.PassengerModifier= (дробь - множитель): 
Если пассажир убивает цель, то он получает эту часть опыта за убийство. По умолчанию 100%. 
[TechnoType]Experience.FromAirstrike= (boolean): 
Если цель будет уничтожена вызванным из-за карты авиаударом, то опыт получит наводчик вместо самолета. По умолчанию no. 
[TechnoType]Experience.AirstrikeModifier= (дробь - множитель): 
Если Experience.FromAircraft=yes, то наводчик авиаудара (вроде Бориса) получит эту часть опыта за уничтожение цели авиаударом. По умолчанию 100%. 
[TechnoType]Experience.MindControlSelfModifier= (дробь - множитель): 
Если юнит под контролем разума убивает врага, контролирующий получает часть опыта подконтрольного. Подконтрольный получает весь опыт за убийство, независимо от этого значения. По умолчанию 0%. 

:[TechnoType]Experience.MindControlVictimModifier= (дробь - множитель) 
Если юнит под контролем разума убивает врага, опыт подконтрольного умножается на это значение. Например, вы можете сделать так, чтобы этот и предыдущий флаг в сумме составляли 100% или любое другое число. По умолчанию 100%. 

Техника с амбразурами под контролем разума не будет получать никакого опыта от своих пассажиров, если те не находятся на стороне контролирующего. Контролирующие разум союзника не будут получать опыта за его убийства. 

Trainable=no всегда учитывается, не способные обучаться войска никогда не получают опыт. Для сравнения - в оригинальной игре траспорт с амбразурами позволял всем пассажирам получать опыт, даже если у них был флаг Trainable=no. 

Уничтожение юнитов через ЭМИ 
Некоторые юниты должны уничтожать ЭМИ, а не просто становится парализованными. Авиация должна разбиваться, но летающие TechnoTypes вроде осадных вертолетов, Кировых или летающих дисков не считается классом Aircraft. EMP.Threshold меняет это поведение. EMP.Threshold по умолчанию равен inair, разрушая все TechnoTypes, которые находятся в воздухе в момент поражения ЭМИ. TechnoTypes при парашютировании не считаются находящимися в воздухе, хотя превышение положительного предела позволит убивать и их. 
[TechnoType]►EMP.Threshold= (вариант - один из yes|no|inair *или* число фреймов) 
Определяет, будет или нет TechnoType уничтожаться ЭМИ-оружием. Использование числа задает четкий порог, превышение которого приведет к разрушению юнита. 
Положительное значение уничтожит юнит при превышении его счетчиком ЭМИ. yes равно 1. 
Негативное значение уничтожит юнит только если он в данный момент в воздухе. inair равен -1. 
Ноль отключает эту механику. no равно 0. 
С этим вы можете создать юниты, выдерживающие лишь конечное значение ЭМИ перед необратимым повреждением систем, а также летающие или парящие войска, падающие от ЭМИ на землю в точности как самолеты. 
Использование inair не дает уничтожить развернутый осадный вертолет. Использование -100 разрушит осадный вертолет только если он в воздухе и набрал свыше 100 фреймов ЭМИ. 

Фабрики и клонирование 
Разные фабрики для юнитов (механика собачих будок) 
[InfantryOrVehicle]►BuiltAt= (список BuildingTypes) 
Юниты будут выходить из первого незанятого здания под контролем того же house, которое указано в этом списке. Если не указан BuildingType, то его можно создать на любой фабрике, способный производить юниты этого типа. По умолчанию none. 
[BuildingType]►Factory.ExplicitOnly= (boolean) 
Поставьте yes, если вы хотите позволить этой фабрике строить только те юниты, у которых этот BuildingType указан в их списке BuiltAt. Юниты с пустым BuiltAt списком будет невозможно создать в этой постройке. Эффект аналогичен указанию BuiltAt списков у каждого юнита, игнорируя фабрики с этим флагом. По умолчанию no. 

Быстрый старт 
Для воссоздания собачьей конуры из Red Alert, поставьте [KENN]►Factory=InfantryType, [KENN]►Factory.ExplicitOnly=yes, [DOG]►BuiltAt=KENN и обновите [DOG]►Prerequisite значением [KENN]. 

"Чаны клонирования” для VehicleTypes 
[BuildingType]►CloningFacility= (boolean) 
Задает, что это здание будет клонировать все VehicleTypes с тем же значением Naval, которые Cloneable=yes и ClonedAt=none. Это версия клонирования для VehicleType. По умолчанию no. 
Настройки клонирования 
[Infantry или Vehicle]►Cloneable= (boolean) 
Может или нет эта пехота или техниуа быть клонирована через Cloning=yes, CloningFacility=yes или их собственное ClonedAt здание. По умолчанию yes. 
[InfantryOrVehicle]►ClonedAt= (список BuildingTypes) 
Каждое здание из этого списка под контролем того же house будет бесплатно создавать копию этого объекта. Если здание заблокировано, то игроку не возместят средства за потенциальную потерю. По умолчанию none. 

Замечание: Клонирование будет игнорировать здания с Factory=. Заметьте, что Factory не то, что заставляет юниты выходить или выезжать оттуда, это WeaponsFactory=yes, GDIBarracks=yes, NODBarracks=yes и YuriBarracks=yes. 
Замечание: Если задано ClonedAt, то ни Cloning=yes, ни CloningFacility=yes не склонируют объект. 

Запрограммированные свойства юнитов 
В игре запрограммированы особые действия с юнитами, имеющими некоторые ID. А именно [COW], [DESO] и [FV]. Эти юниты теперь могут быть лишены названных особых действий, или же эти действия можно придать другим юнитам. 

IsCow 
[COW] запрограммирована чаще проигрывать анимацию в состоянии покоя, а также произвольно бродить туда-сюда. Теперь вы можете поставить IsCow=yes на любой другой InfantryTypes, или, само собой, поставить IsCow=no на [COW]. 

IsDesolator 
[DESO] запрограммирован использовать другой тайминг при стрельбе оружием с развертыванием. Смена тайминга похоже связана с графическим Sequence юнита, но точный эффект неизвестен. Теперь вы можете поставить IsDesolator=yes на любой другой InfantryTypes или, само собой, IsDesolator=no на [DESO]. 

Множественные IFV / Gunner 
[FV] был единственным юнитом, проверяемым на специальные турели и флаги оружия вроде SniperTurretIndex. С Ares вся техника с поставленным Gunner=yes будет считывать эти флаги. Это озгачает, что вы можете сделать несколько типов IFV. 

VoiceIFVRepair 
С Ares вы можете задать VoiceIFVRepair для любого юнита-IFV.[VehicleType]VoiceIFVRepair = (раздел в soundmd): 
Определяет реплику этой IFV при команде починить что-либо.

Источник: http://redalert3.3nx.ru/viewtopic.php?p=2702
Категория: Мои статьи | Добавил: ATroN (16 Сентября 12) | Автор: Spy
Просмотров: 1213 | Теги: expansion, Ares, dll | Рейтинг: 0.0/0
Всего комментариев: 0
avatar