прикол

Как известно, стандартная система добычи ресурсов в 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 - эта статья поможет вам разобраться
`
ОЖИДАНИЕ РЕКЛАМЫ...