Как известно, стандартная система добычи ресурсов в StarCraft 2 работает по принципу: N секунду распиливаем месторождение минералов, после относим добытый ресурс на базу.
Но мало кто знает, что эту систему можно настроить по аналогии с Варкрафтовской системой добычи: ударили по ресурсу, прибавили свой запас ресурса, после отнесли добытое на базу
Список используемых объектов
- Способность типа Harvest # ID: CustomGather
- Поведение типа Resource # ID: CustomGather_Resource
- Поведение типа Buff # ID: CarryCustomGather_Resource
- Эффект типа Damage # ID: ResDamage
- Актор типа Model (по родителю ModelAddition) # ID: itemRes
- Модель типа Generic (по родителю CModel) # ID: itemRes
Способность
Для начала создадим способность типа Harvest (с ID: CustomGather).
Данный тип способности буквально предназначен для добывания ресурса "из других юнитов содержащих ресурс". Стоит ещё отметить, что такие способности можно наводить только на тех юнитов, у которых в данных в поле Resource State, указано как Harvestable
- В этой способности можно задать вместимость добывающей единицы, определяющую сколько юнит может вместить в себя ресурса прежде чем он самостоятельно пойдёт его сдавать в ближающую базу
- Также здесь указан эффект. В данном примере здесь указан эффект урона ResDamage, так можно попростому реализовать поведение ресурсной единицы от его добывания (вспомните как в WarCraft 3 при добыче дерева, оно слегка трясётся)
- Ну и третий параметр, Effect Delay, по сути просто задержка применения эффекта после добычи ресурса
XML
<CAbilHarvest id="CustomGather">
<Effect value="ResDamage"/>
<EffectDelay value="1.75"/>
<ResourceAmountCapacity index="Minerals" value="4"/>
</CAbilHarvest>Behavior
Ещё понадобится отдельный бафф для содержания ресурса
Вкратце, этот бафф определяет, сколько ресурса хранится в единице
- ВАЖНО: Бафф Не определяет какой именно ресурс, минералы, веспен, терразин и т.д. Тип начисляемого ресурса определяется в поле Resource Type в самой единице содержащий бафф ресурса
XML
<CBehaviorResource id="CustomGather_Resource">
<Capacity value="7650"/>
<Contents value="1350"/>
<HarvestTime value="1.75"/>
<HarvestAmount value="2"/>
<ReturnDelay value="1"/>
<CarryResourceBehavior value="CarryCustomGather_Resource"/>
<IdealHarvesterCount value="1"/>
</CBehaviorResource>Ещё потребуется поведение типа Buff.
В нём ничего не должно быть, оно нужно только как метка для акторов, о том что в добывающей единице есть собранный ресурс
В нём ничего не должно быть, оно нужно только как метка для акторов, о том что в добывающей единице есть собранный ресурс
Как видите в нём даже не указаны никакие поля
<CBehaviorBuff id="CarryCustomGather_Resource"/>
Визуал
А дальше переходим к визуальной составляющей
Актор
Нужен один единственный актор, который будет отвечать за переносимый ресурс в "руках" добывающего
- В поле Host Site Operation можно назначить точку прикрепления модели добывающего, к которой хотите прикреплять модельку ресурса (подобно тому как расположен кристаллик минерала у КСМ)
XML
<CActorModel id="carryModel" parent="ModelAddition">
<On Terms="Behavior.CarrytestResource.On" Send="Create"/>
<On Terms="Behavior.CarrytestResource.Off" Send="AnimBracketStop BSD"/>
<HostSiteOps Ops="SOpAttachWeapon"/>
</CActorModel>Ну и конечно же, потребуется сама модель с ссылкой на уже файл модели переносимого ресурса
XML
<CModel id="carryModel">
<Model value="тут_путь_к_модели.m3"/>
</CModel>Визард
К статье прикреплен файл визарда, который автоматически генерирует эту способность. Если не знаете как использовать визарды в редакторе карт StarCraft 2 - эта статья поможет вам разобраться

SC2







