《星际争霸II》 4.13.0 PTR 补丁说明

地图编辑器更新

我们很高兴宣布《星际争霸II》地图编辑器将迎来一次巨大的更新。

自从《自由之翼》以来,各位爱好者的反馈十分一致:地图编辑器应该更加便于使用。本次补丁便致力于解决这个问题,而又不使编辑器失去其应有的深度。因此,我们从《魔兽争霸III》编辑器中吸收了一些设计元素,使之更易于使用,而不会牺牲《星际争霸II》编辑器的现有功能。我们还进一步扩展了《星际争霸II》编辑器的功能。

我们鼓励地图制作者和 Mod 制作者加入,探索并向我们发送您的反馈意见,我们一直希望在将来增加更多激动人心的改进。这是我们有史以来最大的编辑器更新,我们很乐意了解您的看法!以下是一些令人兴奋的新功能的概述。对于我们来说,有关您的地图在这些更改下的实际表现情况的反馈至关重要。因此,请尝试将自定义地图发布到 PTR,如果您在我们的 PTR 论坛上遇到任何问题或奇怪的行为,请告诉我们。

开始之前:不要忘记在 PTR 上尝试之前备份您的地图,因为PTR只是实验性的。

另外:请记住,虽然可以在PTR上获得战争宝箱XP,但进展不会转移到其他地区,并且战争宝箱的大部分奖励也不会从PTR转移下来。

地图至地图加载

  • 《星际争霸II》多人游戏大厅现在支持在两个地图之间转移和过渡。
  • 转移和过渡中涉及的两个地图必须由同一位作者发布。
  • 添加了一个名为“在线地图到地图加载(Online Map To Map Load)”的新功能,该功能允许作者为所有玩家加载一个指定的“地图槽位(Map Slot)”,并为不同的玩家组指定胜利和失败。
  • 通过“管理已发布”上的右键菜单的“指定地图槽位(Assign Map Slot)”,可以在“管理已发布”窗口中分配“地图槽位”。
  • “地图槽位”必须为每个发布区域单独指定。
  • 建议在地图链中的第一张地图包含所有其他地图所需的资源依赖项依存关系,以减少地图之间的加载时间。
  • 添加了新的“战役(Campaign)”类型,可以在“游戏变化元素(Game Variants)”菜单中指定该类型。
  • 目前,“战役”类型未显示在游戏中的类型下拉列表中,但您仍可以在“我已发布的地图”中看到这些地图。

数据集合

  • A data collection is a new type of catalog that allows users to declare and group a set of data elements in a collection. A collection can be thought of like any other single piece of data such as a unit, ability, or upgrade.
  • When copying, renaming, or deleting a data collection, the editor will intelligently apply the same action for all data elements in the collection. For example, when copying a data collection, users will be prompted to provide a name for the new collection. The editor will then duplicate every data entry within the collection and name them accordingly. The editor will also set all linked fields such that the new data entries all point to their new counterparts.
  • Example: Copy the Blizzard collection and set the new data collection name to be Activision Blizzard.
  • Deleting a data collection will delete all data entries in the collection.
  • Changing the id of a data collection will also change the ids of all data entries in the collection.
  • The data entries of a data collection can either be set manually or be auto-populated.
  • Data collections make use of a new key character, “@”, in naming child data entries. The data collection system can automatically search the entire catalog to find any data entry whose id starts with the id of the data collection followed by the character, “@”. It will then automatically add them into the collection.
  • Because of this linked functionality, whenever the effect tree of an ability is changed, the corresponding data collection and its data entries will automatically be updated.
  • The following is sample data inside an auto-populated data collection:
  • Though it will not be auto-populated, data that does not follow this naming conversion can be added into data collections manually.
  • Menu: Data Collection -> Auto Fill Data Collection will automatically search the entire catalog and find any data entry with an id that starts with the data collection id followed by the character “@”. It will then automatically add them into the corresponding collection.
  • Menu: Data Collection -> Auto Name Data Collection will rename the data entries of the data collection based on the name of the data collection.
  • Data collections also allow us to add extra relationship information between data entries. For example, with data collections, the game can now understand information such as “what is the main actor for this unit?”.
  • Many other features in this update are dependent on this data collection feature.
  • Data collections expect certain coding conventions or guidelines to expose their full potential:
    • All data collection should be as self-contained as possible.
    • For example, an “Ability collection” should always work whenever you add it to a unit, and an ability should never be hardcoded to only work on specific units or units with specific weapons. As a cautionary example, in the old SC2 database, there was a Void Ray passive that increased damage after attacking for a long duration. This passive was actually fake, and the functionality was actually hardcoded into the weapon of the Void Ray itself. In this new era with data collections, we heavily discourage this misuse of data. As such, many new features described below were created to help achieve this goal.

“简易模式” 数据编辑器(数据模块)

  • “简易模式”数据编辑器是数据集合的扩展功能。启用后,数据编辑器将仅显示数据集合并模拟它们,并将它们视作是单个“技能数据”,“单位数据”,“物品数据”或“升级数据”等一样。您可以复制,移除,删除或重命名这些数据,就像是单个数据对象一样。
  • 该模式仅在表单视图中可用。它结合了最重要的数据字段,例如单位活力数据或技能伤害数据。
  • 该模式中显示的字段可以针对每种数据集合类型进行完全自定义。
  • 大多数星际2地图制作者最抱怨的是,编辑器太复杂了,无法轻松复制单位或技能。与星际2编辑器相比,这是魔兽3编辑器的最大优势。
    • 数据集合和简易模式是我们对此的解决办法。
    • 将来,我们将基于数据集合创建更多数据,以便用户可以更轻松地与它们进行交互。
  • 我们鼓励作者使用数据集合来创建 Mod,以便从中获得帮助。我们也公共 Mod 的作者定义对应的简易模式视图,以便其他作者可以轻松修改 Mod。

累加器

  • Accumulators are a new feature that allows map makers to create formulas based on various input parameters.
  • Accumulators can take Unit Custom Values and User Data as parameters.
  • Accumulators not only support formulas but also user-defined tables. When combined with validators, accumulators can also be used to provide case switch functionality.
  • For example, when an accumulator is used in a behavior that has varying levels and can be cast by multiple players, the accumulator will calculate the result on a per-player basis.
  • Accumulators are very versatile and can be used in many places. Examples include Damage, Healing Rate, Life Regen, Damage Reduction, Ability Cost, Armor Bonus, Actor Batch Count, Persist Count, Behavior Count, Behavior Duration, Damage Fraction, Attack Speed, Movement Speed, Vital Regen, Behavior Chance, Vital Modification, etc.
  • New String parse token: $AccumulatedValue:xxx$
    • This token can be used to calculate AccumulatedValue on UI, example:
    • Calls down “d ref=”$AccumulatedValue:Effect,JainaBlizzardPersistent,PeriodCount$”/>” freezing ice shard waves. Each wave deals damage to units in an area.
    • This token can be used to calculate AccumulatedValue in the UI. For example:

玩家层级响应

Player Response is a new data catalog that allows users to define response patterns when something happens for the equipped player. Designers can use triggers to equip these response patterns to certain players, and the player’s units will response to the registered events as if they all had damage response behaviors.

Users have the option to set priority and fall through methods for Player Responses.

Player Level Response removes the need to apply certain behaviors to everyone when creating commanders, which greatly improves the performance of the game. Also, since you only need to equip responses when the corresponding commander is responding, the game no longer needs to go through the death prevention data of all the commanders every time.

Player Response is no longer restricted to “Unit is Damaged” like damage response behaviors. For instance, it can also respond to player spawn, unit spawn, player unit death, etc.wei未分段状态栏

未分段状态条

  • Trigger action: UI – Override Player Option now allows to map makers to change the style of the default status bars to be more linear and unsegmented. It is useful for custom mods that require more accurate vital fraction display.

《魔兽争霸3》资源 Mod 数据更新

  • On February 2015, we released a War3 Asset Mod. Though the pack only included assets, many modders wanted to learn how to create War3 RPG-style abilities with the SC2 Editor. With so many Editor changes this patch, we’d like to provide modders with some examples with all these new features.
  • We worked with the creator of the community mod, Renee’s Warcraft III Mod’ to recreate his mod with all the new editor features.
  • Now the official War3 asset mod includes a whole set of working data that includes races, units, buildings, and abilities. We hope these examples help modders get up-to-speed.

编队移动

  • 《星际争霸II》现在支持编队移动,可以通过触发器为玩家开启/关闭。
  • 单位可以以方形队列移动和攻击,并将保持预设的单位间距。
  • 目前,编队移动不会强制所有单位保持一致速度,这与魔兽III中有所不同。
  • 可以调整相关数据来自定义该行为。

水域路径

  • 《星际争霸II》现在支持水域路径!
  • 新的路径类型:浅水深水
  • 新的超路径模式:漂浮两栖。
  • 地面单位可以通过地面区块。
  • 漂浮单位可以通过浅水深水区块。
  • 两栖可以通过地面浅水深水区块
  • 飞行单位可以通过任何没有空中路径阻碍器的区块。
  • 目前,两种新的路径只能通过地形编辑器(地形模块)绘制。

更多悬崖层级

  • 《星际争霸II》现在最多支持 15 层悬崖。(补丁前为 3 层)

升级系统革新

  • This is a big part of the Data Collection system and the new Commander system.
  • The old upgrade system was not able to be self-contained, which was a deal-breaker with the new data collection philosophy. With the old upgrade system, upgrades specified the abilities or units they affected along with their corresponding upgrade effects.
  • The new system allows upgrades to be much more self-contained. Units now need to declare what upgrades they use instead of letting upgrades dictate what units they affect. As an example, upgrades should no longer be implemented in the style of “Increase the life of Marines by 10”. Rather they should say “Increase the life of any unit that uses me by 10”.
  • New CUpgrade field: EffectArrayTemplate
    • It supports two additional tokens:
    • It supports data references and use of arithmetic. Use brackets, “{“ and “}”, to create formulas as you would in the text editor.
    • Data collections already encourage modders to name all related data with a specific naming convention, so modders can easily use ^ParamId^ for data entries related to the unit using them.
    • For example:
    • ^ParamId^: The Id of any data collection that uses the upgrade.
    • ^ParamLevel^: The current level of upgrade.
    • EffectArrayTemplate Reference=”Effect,^ParamId^@Weapon,Amount” Value=”{DataCollection,^ParamId^,UpgradeInfoWeapon.DamagePerLevel+3}”/
    • This upgrade will increase the weapon damage amount of the unit it’s used on by the unit’s data collection’s UpgradeInfoWeapon.DamagePerLevel field plus three.
    • You can put a fixed number into the value column, e.g., Value=”4”.
    • This field is similar to the old EffectArray field with the following exceptions:
  • CUpgrade’s old fields still exist and remain functionally the same, so all old upgrades still work. You can continue to create upgrades in the old style, but it is not recommended.
  • All Unit Upgrade Support
    • Since some upgrades are designed to work for “all units” (of a certain type), the CUpgrade now has a flag to enumerate all Data Collection Units.
    • Two filter fields, EnumExcludedUserFlags and EnumRequiredUserFlags have also been added to CUpgrade that allow upgrades to filter through all the data collection units based on their flags.
  • New Upgrade operations: AddBaseMultiply and SubtractBaseMultiply
    • These operations modify the target field based on its default value instead of its current value, which is generally more useful than the Multiply operation. For example, if you have 100 levels of an “increase unit life by 10%” upgrade, you probably want this upgrade to increase life by a fixed number on each level rather than multiplied by the life of the last level every time. Also, Add/SubtractBaseMultiply supports tech downgrades because it can undo itself at any time, which Multiply cannot.
  • Upgrades can now be used to enable or disable units for players.
  • New CWeapon field: Rate Multiplier
    • Has a default value of 1.
    • When the game tries to get the period of a weapon or CP effect, it will take this multiplier into account.
    • This change allows you to upgrade weapon speeds by a rate percentage instead of having to directly change its weapon period.

法球系统(以及多重射击和暴击)

  • Orbs are attack modifiers that are an important part of the MOBA genre.
  • StarCraft II’s damage response system can be used to create Orbs, but damage response and attack modifiers are actually very different.
  • Most of the old SC2 “Orb” abilities do not fit the traditional definition of how Orbs function as they are built into weapons themselves and cannot be easily added and removed from arbitrary weapons. Thus, if you wanted to create an Orb item, it would be unrealistic to build the Orb item effects into all the hero weapons in the game.
  • The Orb system we’ve updated here is an extended concept of generic MOBA Orb systems, which includes official support for Multishot and Critical Strike.
  • A true Orb system requires the following functionality:
    • For example, the Dark Arrow ability requires the Orb to apply a debuff to the target, and the debuff does something (raises a skeleton) when the target is killed. If the Orb system were only able to apply effects after the impact, the unit might be killed by the impact and a skeleton wouldn’t be raised.
    • Another example is the Orb ability, Fragmentation Shards. Because it does bonus AoE damage based on primary attack damage, the extra AoE damage effect needs to occur after the impact effect, because the randomized primary damage needs to be generated first.
    • Ability to apply its effects to weapon systems on a per attack basis.
    • Ability to modify projectile missiles.
    • Ability to add special effects when the weapon impacts the target, e.g., Fire, Frost, an Apply Behavior, etc. It should also be able to apply effects both before and after impact.
    • When a weapon begins its pre-swing, the attack modifier from the Orb needs to already be registered, even before the attack effect is fired. This allows units to play special attack animations such as with Critical Strike.
    • Orbs need to be able to apply consistent attack damage bonuses.
    • Orbs should have the option to validate their effects, e.g., the Bash and Critical Strike abilities not procing on friendly units.
  • New Effect flag: MainImpact
    • When on, this flag marks an effect as the main impact effect of a weapon effect tree so that attack modifiers can know when to fire their modifier effects.
  • New Behavior type: CBehaviorAttackModifier
    • With this flag, the attack modifier will still be applied to the attack tree, so the caster unit would still be able to fake a Critical Attack animation and throw a modified projectile missile. However, the attack won’t apply a real Orb effect when it impacts.
    • When applied, modifiers will take effect when a weapon starts. It will register itself to the entire attack effect tree.
    • The Chance field determines the chance of the attack modifier, calculated per attack.
    • Multiple modifiers added to a unit. The Unique Id field allows users to determine whether they can all work at the same time. In War3, only one Orb effect can take place even if a hero has equipped multiple Orbs. However, modders will probably still want to have the option for multiple Orbs work at the same time.
    • The Stack Max field determines the number of times the damage bonuses can be stacked.
    • The Damage Bonus fields decide whether there are constant or variable bonuses. These fields also support Accumulators.
    • Validator fields determine whether modifiers will work on certain attack targets. For example, you probably wouldn’t want to Critical Strike to work when you are attacking your own units.
    • The PreImpactEffect field will fire an effect before the impact occurs.
    • The DamageInheritEffect field fires an effect after the impact occurs, inheriting the impact damage to the following effect tree. These effects allow users to create a Chain Lighting effect or deal AoE damage based on the impact damage.
    • Can determine whether the attack can miss. See the Miss/Deflect/Block System section.
    • The Hallucination Visual Only flag allows modders to determine whether the attack modifier will apply the Orb effect if the caster is a Hallucination unit. If the caster is a Hallucination, you probably wouldn’t want them to deal AOE damage and raise dead as Skeletons. Still, some modders might want that option.
    • The MultishotEffect and MultishotSearchPattern fields allow users to launch a multishot effect to every target in the search pattern given Chance returns true and all validators are met. If the MultishotEffect field is not set, the effect will fallback to the original weapon effect of the attack.
    • Can also decide if Multishot targets can also receive the impact effects.
    • Can enable weapon by index, so that melee Heroes with the Orb item can use their hidden weapon to attack Air.
    • When applied to an attack, the Modifier can populate the WeaponModifier actor term on the WeaponStart event, so that the actor system can play different attack animations based on the current working attack modifers.
    • Have ‘IsCritical’ flag. When checked, could mark the attack as ‘Critical’, which would trigger Critical actor message, and would populate the SetText and SetTextlocalized message with the amount of the damage, so that modders can do Critical Strike floating texts.
  • New Ability Type: CAbilAttackModifier
    • CBehaviorAttackModifier can handle the most case of the Orb abilities, but for some abilities like Searing Arrow of the Priestess of the Moon, the Orb spell still need a shell to turn its autocast on and off.
    • CBehaviorAttackModifier is a shell of CBehaviorAttackModifier, so that it can add an auto cast/manually cast shell to the orb.
    • Can set the Cost to the modifier, so that every time the Orb ability is casted, it cost resources or vitals.
    • Has a level property so that it can be leveled up by a hero’s Learn abilities.
  • New Actor type: CActorActionOverride
    • Used to override the missile art, impact art, damage art of CActorAction.
    • Has fields Damage ModelImpact Model, and Missile Model to set the overriding model links.
    • When CActorAction is initialized, it will start the event, ActionInitModifier.
    • CActorActionOverride can capture this event and create itself in the scope of the CActorAction. It can then use ActionOverrideApplyTo to apply itself to CActorActions.
    • CActorAction will grab the data from CActorActionOverride and override its attack models.

动态技能支持

  • 现在可以使用触发器动态地为单位增加或移除技能。

技能交换

  • 新函数:UnitAbilityChangeLink()
    • This function allows users to swap an existing ability on a unit to another unit while keeping its old charges, cooldown, and level states.
    • Different from Catalog Replacement in that it is per-ability instance based.
    • We’ve also added a new Ability Replace field in the Power User Type Behavior that provides a data version of this feature.
    • Can only swap to abilities with the same CAbil class of the old ability. For example, a target ability can only be swapped to a target ability.
    • The data version of Ability Swap will also affect the learnable abilities of Heroes.

触发器 GUI 支持结构体参数传递

  • Trigger functions and actions can now define Record types as parameters.
  • Record variables can now be passed to functions and actions as a parameter by reference.
  • Record parameters can be read and modified. Modifications will affect the record variable outside of the function scope.

新触发器API:数据表示例(DATA TABLE INSTANCE)

  • Works the same way as Data Tables, except that you can have multiple instances, count their values, and copy values between data tables.
  • The old Data Table is a single global data table. Adding an instanced version will allow designers to better organize their run time data

在单位/物品基础上覆写物品/技能提示

  • New natives: UnitSetInfoButtonTooltip, UnitClearInfoButtonTooltip
  • This allows users to override tooltips on command buttons.
  • The “set” trigger action expects three parameters: the unit/item being modified, the modification key, and the resulting tootip text.
  • The Modification key accepts three different formats, allowing for three ways to customize command tooltips:
    • In this case, use “@” as the key.
    • Key would be the AbilCmd e.g. “Stimpack,0”
    • Override Command Tooltips via AbilCmd.
    • Override Command Tooltips via the button link
    • Key would be the button id, e.g., Marine
    • Override Item Tooltips of the unit itself
  • Works even if the command panel is overridden to show the command panels of other units.

技能射击支持 SUPPORT

  • StarCraft II now has skillshot support!
  • New Launch Missile Effect flag field: SearchFlags
    • Configures whether the missile is a “denote if it hits target skillshot” or a “piercing through” skillshot. See below.
    • This enables skillshot search. Without it, you get a normal missile.
    • New Launch Missile Effect Search Flag: DynamicSearchArea
    • New Launch Missile Effect Search Flag: ArriveOnSearchHit
  • New Launch Missile Effect fields:
    • Denotes the max search count during the entirety of the missile’s travel time, not the max search count of each individual search. The missile will stop searching after it found SearchMaxCount targets.
    • When SearchMaxCount is reached and ArriveOnSearchHit is not set, the missile will continue to travel to its destination, but will no longer execute skillshot searches.
    • When SearchMaxCount is reached and ArriveOnSearchHit is set, the missile will detonate and run SearchHitArriveEffect at its last search point. Note that this is not the missile target, as it will not have reached the target point.
    • If SearchMaxCount is 0 and ArriveOnSearchHit is set, the missile will not limit the max count of the search. As long as one of its search effects finds a target, the missile will detonate and run SearchHitArriveEffect at its last search point.
    • The missile will run this effect every game loop, overriding the Height parameter in the search area based on the missile’s current speed. Essentially, it will not leave gaps between each search.
    • Note: The TVE cheat will display an incorrect default height instead of the correct height of the override search effect.
    • Only work when ArriveOnSearchHit is on. This effect executes when the missile detonates by hitting a target.
    • Note: This effect will be run at the final search point before the missile dies, not at the targeting point of the missile. This functionality is similar to that of a finish effect.
    • SearchHitArriveEffect
    • SearchEffect
    • SearchMaxCount

英雄系统改进

  • New CUnit class: CUnitHero
  • Five new fields (compared to CUnit):
    • This field will override the tech requirement of CAbilTrain when the ability is used to train the current hero unit and there already exists more than one of the Tech Alias of the current unit for the current player.
    • This uses the same structure as CAbilLearn_LearnInfo. If any of the indices sets an ability link, it will override the corresponding info of the learn ability on the hero. As a result, you will no longer need to create separate learn abilities for different heroes.
    • The command button of Learn Info can also be auto generated when the “Create Default Button” flag is set.
    • Sets the starting and leveling attribute points of a hero based on the current level of the Hero. This will only set Attribute Points; it won’t apply the Attribute behavior if the hero does not already have one.
    • This field dictates how much attack damage bonus a hero unit receives per MainAttribute point.
    • A single behavior link that is auto applied/unapplied on unit creation/morph.
    • No different from a normal behavior field. However, using this as a single field allows it to be easily read via a catalog function to determine a hero’s main attribute.
    • MainAttribute:
    • MainAttributeDamageBonus
    • AttributePointsInfoArray:
    • LearnInfoArray:
    • TierRequirements
  • New CAbilityRevive flag: Override Alert Icon
    • When a player revives a hero with a CAbilRevive ability with Override Alert Icon on, the ability will set the Alert Icon to the CAbilRevive’s icon instead of the hero unit’s icon.
  • New natives added:
    • These functions can be called by triggers to set a tech limit based on units, upgrades, abilities, behaviors, or effects.
    • Can also be used to customize the training limit of Heroes.
    • TechTreeSetProduceCap
    • TechTreeGetProduceCap
  • Base Attribute Points and Bonus Attribute Points
    • SetAttributePoints: When this flag is checked, the effect will set attribute points for the attribute behavior.
    • SetAttributeBasePoints: When the flag is checked, it will modify base points instead of bonus points.
    • Attribute behaviors on CHeroUnit now have two different point values: Base and Bonus.
    • The starting and leveling attribute points of a hero (configured in the AttributePointsInfoArray) will count as the Base value while other point changes such as behavior bonuses will be counted in the Bonus value.
    • In the unit info panel, base attribute points will be displayed as a white number while bonus attribute points will be displayed as a (+X) green number.
    • The bonuses added by Base attributes points are no longer displayed as (+X) green numbers. Instead, they will be added to the base attack damage/armor/weapon speed fields.
    • Attributes added by buffs or items will still be displayed as (+X) green numbers.
    • New CEffectApplyBehavior flags:
  • Added new CabilTrain field: IgnoreUnitCostRequirements
    • When set, the train ability will ignore unit costs as long as tech requirements are met.
    • This can be used to implement special game mechanics like “Your first hero is free”.
  • Learn Ability Submenu Improvements
    • When set, the learn ability submenu button will be hidden after a unit using the ability has learned all the abilities it can learn.
    • When set, a unit using this ability will automatically exit its submenu command cards after spending all its skill points.
    • New Learn Ability flag: ClearSubmenuOnPointsSpent
    • New Learn Ability flag: HideSubmenuOnLearnedAll
    • Fixed an issue where if all points were spent, the learn ability button would show “Required Level:” as red text even if the unit had already met the required level.
    • Fixed an issue where players could sometimes use the shift key to bypass level restrictions on Learn Ability.
  • Added new requirement unit count state: QueuedOrBetterOrRevivable
    • When counting tech units, this will include reviving and revivable heroes.
    • This is very useful when implementing hero training restrictions. For example, if you have the restriction, “You cannot train more than 3 heroes”, you probably don’t want to only count living heroes.
  • Hero Level and XP Formula
    • MinVeterancyXPBonusPerLevel
    • MinVeterancyXPPreviousValueFactor
    • MinVeterancyXPLevelFactor
    • If the size of the VeterancyLevelArray is smaller than the number in the Levels field, the game will automatically generate the “min XP” of the extra levels based on these factors.
    • The formula used is as follows where X is the level and F(X) is the min XP of the level:
    • This is only used when the Level X is greater than the size of VeterancyLevelArray. Otherwise, it will directly grab the min XP from the VeterancyLevelArray table.
    • F(X) = F(X-1) * MinVeterancyXPPreviousValueFactor + MinVeterancyXPLevelFactor * X + MinVeterancyXPBonusPerLevel
    • Set the max level of a hero.
    • This field is also upgradable, which allows modders to change max ability levels at runtime.
    • This field defaults to 0, which will fallback the level system to how it worked before.
    • New CBehaviorVeterancy field: Levels
    • New CBehaviorVeterancy fields:
  • XP Receiving Fraction based on Target Type
    • This field is a Structure Array, which allows users to specify a target filter and an accumulate-able fraction value for each array.
    • Whenever a hero receives XP, the game will check the target filters on the victim unit and apply the XP fraction if the victim matches any of the filters.
    • Combined with the Accumulators, users will be able to easily create XP formulas such as “summoned units grant half XP” or “Heroes gain reduced XP from creeps based on the current level of the Hero”.
    • New CBehaviorVeterancy field: XPReceiveFraction
  • Added new validator: CValidatorUnitCompareAbilSkillPoint
    • Check a unit’s spent skill points, unspent skill points, extra skill points, or total skill points.

物品和库存系统改进

  • Item systems are vital to RPGs, and we are pleased to provide a greater level of Editor support for them.
  • Item Build Support
    • Items in a unit’s inventory can now be used to build structures.
    • This item ability can be set to require the hero to maintain a channel. Alternatively, players may “warp in” buildings such as with Protoss structures.
    • This type of item can be helpful to build expansions. The hero can buy a Pocket Town Hall and place it at a new expansion; the building would then automatically build itself.
  • Show Inventory for Other Players
    • When true, players will be able select other players’ units to see their inventories. However, they won’t be able to use these items.
    • New CInventoryPanel property: ShowForAllPlayers
  • Cast On Items in Inventory
    • CCommandButton now exposes its ButtonOtherUnit property. Now users will be able to use property bind to bind the item unit (the item itself, not the carrier) to either a target frame or other frames.
    • With this functionality, users will be able to cast abilities on an item inside their inventories, either to transfer or upgrade it.
    • With this feature, users can also now double click on Town Portals to auto-teleport to your highest-level Town Hall.
  • Globally Accessible Inventory Panel
    • Users can now override the Inventory Unit property of CInventoryPanel in order to show the inventory of a unit that is not current selected.
    • Users can also use triggers to create new inventory dialog controls. This supports operators like the command card dialog control introduced in Legacy of the Void.
    • Users can set the unit by selecting “Use SetDialogItemUnit”. Setting this to null will reset the unit to the selected leader unit.
  • Show Buyer’s Inventory
    • Previously, StarCraft II had poor support for War3-style Neutral Item Shops. Before this patch, when users clicked on a shop unit, they wouldn’t be able to see the buyer unit’s inventory.
    • Now neutral shops will show the buyer’s inventory as long as they does not have an inventory itself and the inventory panel is not overridden to show a specific unit’s inventory.
  • Charge Data on CUnit
    • If the flag is not checked and the ability has its own data, both instances of charge data will be added together.
    • Added charge data to unit and items so that when selling items and units, unit and item data can set their default Stock information (such as starting cooldown in shops, max stocks in shops, etc.)
    • A CAbilTrain ability can be flagged to ignore these default settings and use the custom settings in the ability itself.
  • “Real” Power-up Items
    • New Item type: CItemAbilPowerUp
    • Powerup items can now be implemented as real items instead of having to mimic a unit.
    • CItemAbilPowerUp is inherited from CItemAbil. The only differences are that it will be used automatically when picked up, and it can be picked up even when the unit’s inventory is already full.
    • CItemAbilPowerUp can only be used by units with an inventory. The unit must also have the CanUseItem flag on.
    • These new powerup items are real items, so they respect inventory events and can be used in the Loot system.
    • CItemAbilPowerUp will test whether the caster can use the powerup ability in CItemAbilPowerUp. If it can’t, it will throw an error message, and won’t make the caster move to the item.
    • The KillAfterUse flag allows the item to be destroyed after the caster has used the powerup.
    • A normal unit with an inventory but without the CanUseItem flag on will be able to pick up powerups and carry them to a hero.
  • New EAbilInventoryFlag flag: ItemDropOnDeath
    • This flag will force a unit to drop all its items on death even if it is revivable. This can be useful for normal units with the WarCraft III Backpack ability.
  • New EAbilInventoryFlag flag: CanUseItem
    • This flag designates whether units can use items. It aids in creating units with courier inventories, ones that can carry items but not use them.
  • New EAbilInventoryFlag flag: CanApplyEquipBehavior
    • This flag designates whether units can benefit from item status buffs, e.g., +5 Strength. It also aids in creating units with courier inventories.
  • New CItemAbil flag: Transient
    • With this flag checked, the item ability will be forced to be cast as Transient, even if the original ability on the item is not a Transient ability.
  • Fixed an issue where inventories would still try to pick up items if they are destroyed on approach.
  • Fixed an issue where CAbilSpawn did not work.
  • Fixed an issue when pawning an item from your inventory at the max pawn distance may cause you to lose the item but not gain resources.
  • New sub names to Abil actor events: PawnSourcePawnTarget.
    • These will fire when you pawn an item.
  • New CAbilInventory field: Requirements
    • When set, the inventory ability will be disabled before its tech requirements are met.
    • The inventory UI will also be hidden before the requirements are met.
  • New CValidatorUnitInventory flag: RequireEnabled
    • When checked, the validator will only return e_CmdOK if the targeting inventory ability is enabled and has met its tech requirements.
  • For responding to Player Use Effect events, there is a new trigger API that allows users to capture the item used to create the effect, if there is an item, and its item type.
  • Ability Items can now choose to use their own cooldown links, overriding the cooldown link inherited from the ability.

中立/盟友商店支持

  • Neutral/allied Shops are neutral/allied buildings that can be interacted with by other players with the help of CAbilInteract abilities.
  • For all abilities, the Tech Player field now has an additional option: Caster.
    • By setting the Tech Player field of a CAbilTrain to Caster, the ability will check the tech requirements of the player who issued the order.
    • This is useful in creating a “sell unit/sell item based on the buyer’s tech tree” ability.
  • New CabilTrain field: AgentUnitValidator
    • For item shops, users will usually want the buyer unit of the shop to have an inventory to be able to purchase items.
    • Previously, SC2 didn’t have this support, so even if the buyer unit didn’t have an inventory, the item would always be created.
    • With the AgentUnitValidator field, users can add validators like “Unit has a valid inventory” and “Inventory is not full”. Therefore, if the agent unit doesn’t have an inventory, the ability would simply throw an error message and wouldn’t be cast.
    • When set, the ability will always need an agent unit to cast and will check against the validators set in this field when training units.
    • With this field, “Item Shop” abilities now can be easily created in SC2.
  • New CAbilTrain flag: ChargeCasterPlayer
    • Normally, neutral shop abilities require buyer and seller players to share the spending of resources with each other via the “Ally Spending” flag. If this is not the case, the buyer would get the error message, “Can’t Spend On that Player”.
    • By default, neutral players share costs with all players. But if a user wanted to create an allied shop, a shop where allied players are able to purchase items or units, he probably wouldn’t want these players to share spending. Otherwise, players would be able to spend their allies’ money.
    • The new flag, ChargeCasterPlayer, is designed to solve this issue. When on, the cost of the sold item or unit will be charged on the player who issued the Purchase order, even if the buyer and seller aren’t share spending.
    • If there are other players who share spending with the buyer player, and the buyer player doesn’t have enough resources to pay the cost, the ability will still charge the cost on these other players.
  • New CAbilInteract flag: AlwaysShowCommandCard
    • When this flag is on, a shop unit will show its command card to all players that can interact with it (Decided by the CAbilInteract’s Target Filter field), even if the player does not have a valid agent unit near the shop.
    • Therefore, even if a player doesn’t have an agent unit near by the shop, they will still be able to preview what the shop is selling.
    • However, this player still wouldn’t be able to use the command card if they don’t control the shop unit, for instance, if they don’t have an agent unit nearby.
  • Fixed an issue where interact abilities would constantly try to acquire a unit without checking the ValidatorArray field.

单位行为追踪系统

  • New behavior Type: BehaviorUnitTracker
    • The behavior works like a unit list. It can store all units that are added to it and has validator and max count fields. Anytime a member of the list does not match the set validator, it will be removed from a list.
    • There are also flags that allow users to convert the tracker into a global list or player-based list, which does not require a behavior instance to work.
  • New Accumulator: CAccumulatorTrackedUnitCount
    • Allows users to use Accumulators based on how many units are in the given list.
  • New effects: CEffectAddTrackedUnit CEffectClearTrackedUnits, CEffectRemoveTrackedUnit
    • Allows users to add/remove units from a list.
  • New effect: CEffectEnumTrackedUnits
    • Allows users to loop through the unit tracking list and execute effects on each of them based on filters.
  • New Validators: CValidatorCompareTrackedUnitsCount, CValidatorIsUnitTracked
    • Can be used to count how many units are tracked via the behavior and check if a unit is in a given tracker list.
  • The tracker system is very useful when trying to keep “one to many” mapping between units.
    • For example, it can track a summoner unit to its summoned units.

其他行为系统改进

  • Behavior Stack Alias
    • This allows users to count behavior stacks by StackAlias. It will count all behaviors on the unit with the given StackAlias and has the option to count only enabled behaviors.
    • This allows users to remove buffs based on StackAlias.
    • Allows users to capture Behavior events (On, Off, Damage Response, etc.) based on the StackAlias of the behavior instead of the behavior id.
    • It also allows sharing actors between Behaviors with the same StackAliases, as you probably want all versions of the Brilliance Aura buff share the same art.
    • If two buffs of the same StackAlias are applied to the same unit, they will share a Max Count, prioritizing the lower one. If their total count exceeds the shared max count, the game will begin removing stacks, starting with the buff with the lowest StackAliasPriority and then the shortest duration. This will occur until the total stack count matches the shared max stack count.
    • This feature allows behaviors to stack based on a “stack id” instead of a behavior id.
    • For example, in WC3, both the Archmage and various creeps have a version of Brilliance Aura. These are two different buffs, and when you own both these types of units, you might not want surrounding units to receive both sets of Brilliance Aura. In this case, the hero version aura should always be prioritized.
    • Two new CBehaviorBuff fields: StackAlias (string) and StackAliasPriority (integer).
    • New Actor Event: BehaviorStackAlias
    • New CEffectRemoveBehavior field: StackAlias
    • New validator: CValidatorUnitBehaviorStackAlias
  • Actor Damage Response Floating Text Support
    • When CActorMsgBehavior fires an event with a DamageHandled sub name, using SetTextLocalized and SetText messages after the event will now automatically set text via the modified damage amount.
    • The damage will replace the ‘%AMOUNT%’ token in the target text.
    • This is useful for creating damage floating text for damage responses.
  • Better support for Behavior On/Off Actor Events
    • Behavior On/Off events will now set effect parameters for the last applied stack or the last removed stack.
    • This is useful to more finely configure behavior actors. Previously, users were not able to reference the caster of a behavior under behavior on/off events.
  • New Behavior state: Cannot Die
    • Marks a unit as “not able to die” unless the behavior is removed.
    • Though the use of damage responses is able to achieve a similar effect, death responses can only prevent death by damage. This behavior state prevents death for any reason, e.g., life set to 0.
    • This state provides a simple alternative for a trigger-based death prevention system.
  • New Behavior state: Suppress Kill Credit
    • Prevents a unit from granting kill credits or killed resource credits to the killing player.
    • Useful for creating hallucinated units.
  • New CBehaviorBuff field: DeathType
    • This can override a unit’s DeathType and will ignore the death type of the killing damage effect.
    • The “Remove” death type may not be overridden in this way.
    • Default value is “Unknown”, meaning “don’t override”.
  • New Death Type: Reincarnation
    • This prevents units from dropping loot and items on death.
  • The validator, CValidatorUnitCompareBehaviorCount, and the effects, CEffectRemoveBehavior, and CEffectTransferBehavior now all share the following detailed config fields:
    • BehaviorCategories, BehaviorClass, BehaviorAlignment, ExcludeOriginPlayer, ExcludeCasterUnit, RequireOriginPlayer, RequireCasterUnit
  • Previously, these validators/effects only had a CEffectBehavior field, and these new additional fields were exclusive to CEffectBehavior.
  • These additions allow users to count, remove, and transfer behaviors with more control.
  • For example, users may now remove behavior stacks that were added by a target unitcaster player, etc.
  • It is also useful in the implementation of “smart dispels”, such as only removing buffs applied by enemy units.
  • New CValidatorUnitCompareBehaviorCount, CEffectRemoveBehavior, and CEffectTransferBehavior field: Matches All
    • Determines whether the effect/validator will be executed if any of the config fields are met or if all config fields need to be met.

更好的尸体支持

  • New CEffectModifyUnit_ModifyFlags flag: Remove
    • This flag that will directly remove the unit from the game and will destroy the unit actor’s entire scope.
    • This is added because users are not able to use the “Remove” effect from CEffectDamage to remove a corpse.
  • New Unit Filter: Decaying
    • A Decaying unit is defined as one that is currently on the ground and has been dead for a while. This is in contrast to one that has already been killed but is still in the midst of falling to the ground and generating a corpse. In technical terms, this is true when Death Time is active, and Revive Delay is over.
    • This purpose of this filter is so that abilities that target corpses will not work on units that have recently died and are still in the process of generating a corpse.
    • If the unit’s Death Time has been set to -1, the decay phase will be skipped. For instance, Warcraft III heroes should never decay.
  • New Unit Filter: Raiseable
    • For example, while a Ghoul is eating a corpse, the corpse still exists, but the modder might not want it to be revivable or raised as Undead. In this case, the modder can set abilities to only accept Raiseable corpses and set corpses to Unraiseable while being eaten.
    • CEffectModifyUnit can now set if a corpse is Unraiseable.
    • Unraiseable allow us to mark whether a corpse has already been used.
  • New flag: Allow Corpse
    • With this flag on, transport abilities will be able to carry corpses in their cargo.

攻击类型,伤害类型和护甲类型系统

  • New CWeapon field: Attack Type
    • Modders can change the damage multipliers of each Attack Type against each Armor Type in the Game Data.
    • The Attack Type will affect all damage effects in the entire weapon tree, so modders will now be able to modify damage multipliers on the Weapon level instead of going through every effect entry in the effect tree to change their damage factors.
  • New CUnit field: Armor Type
    • Armor Type decides the damage multipliers of weapons used against units.
  • New validator: CValidatorUnitArmor
    • Allow users to check a unit’s Armor Type.
  • New CEffectDamage field: Damage Type
    • Modders can change Target Filters for Damage Type in Game Data.
    • Using Target Filters on Damage Types allow users to configure all the damage and AoE damage effects in the game. It can also decide whether certain damage effects can ever damage certain targets.
    • For example, by simply filtering out “Ally” targets in every Damage Type, users can easily make all weapons in the game no longer splash allies. This is useful when creating a Co-op mod as it would need to be built on top of multiple other mods, and the AoE weapon and spells in these other mods have various friendly fire effects.

效果失误几率(闪避几率),格挡和偏转(反弹)

  • The Behavior Damage Response structure has now been extended to handle more than just mere damage response cases.
  • Miss Chance
    • By default, weapons will keep their old behavior.
    • New CWeapon flag: NeverMiss
    • Attack Modifiers can also add the NeverMiss property to a weapon effect tree.
    • If a weapon effect tree says a weapon can miss, when the weapon fires, it will check the Missing Chance on both the attacker and defender sides. It will then mark whether the effect will miss based on validators and chances set in the response structure.
    • Ground units attacking targets on higher cliff levels can also have a bonus miss chance, which can be modified in Game Data.
    • If a weapon’s effect tree has been marked as “Missed”, the weapon will not execute impact damage, nor any Orb effects on impact.
    • When a weapon misses, it will send an Actor Weapon event with “Missed” as its sub name. This way, modders can decide whether they want to capture this event to create “Miss!” floating text on the unit or display a dodge effect.
  • Block Chance
    • Determines whether the effect can be blocked. By default, set to off.
    • New CEffect field: CanBeBlocked
    • When an effect is executed, the game will query the response structure on the impact unit and check its Block Chance and any validators.
    • If blocked, the effect will be canceled and won’t execute. The effect will then send an actor Effect event with Blocked as its sub name so that users can set appropriate actors.
    • This feature is useful for creating spell blocking behaviors.
  • Deflect Chance
    • Determines whether the effect can be deflected. By default, set to off.
    • New CEffect flag: ValidateImpactDeflection
    • Deflection is almost identical to Block Chance except the effect that would have occurred will be duplicated and shot back to the caster.
    • The deflected effect will have caster and target properties reversed and will count as a shot from the original target unit to the original caster unit. The damage bonus setting in the reflected effect tree will still be set to use the original caster’s damage bonuses.
    • Another difference between deflection and blocking is that effect trees will only evaluate deflection once each. If an effect has passed the Deflection check once, the rest of the effect tree will not check deflection chance again, even if there are following effects in the effect tree that have the ValidateImpactDeflection flag checked.

单位变形系统改进

  • Morph/Unmorph Toggle
    • When set, the ability will apply BehaviorOn buff to the unit when the unit is in its Morphed state; it will apply the BehaviorOff buff when the unit is in its Normal state. These two fields will only work if the morph ability is marked as “Toggle”.
    • Determines whether the morphed unit will automatically try to morph back when possible.
    • Validates whether a morphed unit can use the Unmorph command.
    • For a togglable morph ability, after the unit has already morphed, the ability can still be issued an Unmorph command, which will cause the unit to start the morphing process defined in the InforArrayUnmorph field.
    • For most cases, the InforArrayUnmorph field should be set so that its final unit type is its normal state unit type. This way, the unit will be morphed back to normal with the Unmorph command.
    • When Toggle is on, morph Abilities can be used to toggle back and forth between two different unit type chains.
    • New CAbilMorph flag: Toggle
    • New CAbilMorph field: InforArrayUnmorph
    • New CAbilMorph command index: Unmorph.
    • New CabilMorph field: ValidatorArrayUnmorph
    • New CabilMorph flag: AutoUnmorph
    • New CabilMorph fields: BehaviorOn/BehaviorOff
    • Even if a unit is directly created as the Morphed unit type, morph abilities will still consider the unit as having gone through the morphing process. They will apply the relevant behaviors and allow it to use the Unmorph command.
  • Morph Tech Count
    • When on, CAbilMorph will pass the source unit’s unit type to the unit it morphed to. The final unit will automatically inherit the source unit’s unit link as its Tech Alias.
    • This property is inherited throughout the entire morphing chain.
    • e.g. Town Hall -> Keep -> Castle
    • A Castle would count as both a Keep and a Town Hall. Even a directly created Castle would count as both a Keep and a Town Hall even though it was not actually morphed from either.
    • Why don’t we simply add Town Hall and Keep to the Castle’s alias (by adding them into the Tech Alias field of the Castle)? We use this more indirect route because ProvideSourceUnitTech only takes effect when the unit is in its Completed state. Only then would it count as the source unit in tech count. If we were to use the TechAlias field, the alias would exist in any state, even when the unit is morphing (InProgress state). In this case, when you morph a Keep to Castle, you would be in an awkward interstitial state: because you have a Completed Keep and an InProgress Castle at the same time, the tech count system would think you have an InProgress Keep, which is not the case.
    • New CAbilMorph flag: ProvideSourceUnitTech
  • “Move to and then Morph” support
    • New CAbilMorph flags: RequireAcquiredTarget, RequireAcquiredTargetUnmorph
    • New CAbilMorph fields: Range, TargetSorts
      • When these fields are set, a unit will search its autocast radius, try to find a target within range that matches the validator, and then move to that target. The unit will start to morph after it reaches the target unit. The Range field indicates the highest range a caster can start to morph from.

资源性能单位

  • New unit flag: NeverThink
    • Normally, every unit in the game will check pathing, enemy scanning, ability acquiring, and many other logical checks every game loop (0.0625 game seconds). This flag relieves them from those checking, which could help improve performances in custom maps.NeverThink units cannot have behaviors and abilities with the exception of Resource behaviors.

其他通用单位改进

  • Unit Max Speed
    • Used to change the maximum speed of a unit.
    • Specifies the maximum speed a unit can reach, even if it receives speed bonuses.
    • New CUnit field: SpeedMaximum
    • New Behavior field: MoveSpeedBaseMaximumBonus
  • New CUnit mob type: Warcraft
    • A unit’s Mob field now has the “Wacraft” mob type selection.
    • This allows triggers to differentiate between Warcraft units and StarCraft units.
  • New CUnit fields: LifeRegenRateNight, EnergyRegenRateNight, ShieldRegenRateNight
    • Can be used to allow Night Elf units to regenerate at night without a behavior for each unit.
  • New CUnit field: BuildTime
    • For each phase with this flag set, the unit’s build time will be added to the respective phase’s duration.
    • If unchecked, a unit’s build time will be added to the ability’s build time.
    • An extra place to store a build time on unit data, which can be used to config build times in CAbilBuild, CAbilTrain, and CAbilMorph.
    • New CAbilBuild and CAbilTrain flag: IgnoreUnitBuildTime
    • New CAbilMorph array flag for each phase of each section: UseBuildTimeArray
  • New validator: CValidatorUnitCompareAbilStage
    • Allows users to validate a CAbilEffect’s ability stage.
    • If the Ability field is set to None, it will validate the ability stage of whatever ability it is current casting. This means that users can now check whether a unit is channeling with the ability it is casting.
  • New Target Filters:
    • Powerup: True when the CUnit_PowerupEffect field value is valid.
    • PowerupOrItem: A powerup or an item.
    • HeroUnit: Units with a hero flag. This is different from “Heroic”, which is an attribute.
  • New CUnit field: Unit Level
    • When set to > 0, if a unit is highlighted, its tooltip will show this level under the unit’s name.
    • This field can be used to target sort or validate. It can also be used in accumulators.
  • Addon Parent Behavior
    • When an addon is linked to a parent building, the behavior from ParentBehaviorLink will be applied to the parent building. The caster of this behavior is the Addon, not the parent building.
    • This allows the ParentBehaviorLink behavior to control the parent building based on the state of the addon.
    • Morph abilities can validate on this behavior to throw an error message when the parent building is given a lift command while the attached addon is researching.
    • New CUnit field: ParentBehaviorLink
  • CUnit_LifeDamageGain is now upgradable.
  • CValidatorUnitState is greatly improved to be able to check up to 100 different unit states, up from 1.
    • For example: Idle, Jumping, Highlighted, ArmorDisabled, Revivable, Dying, ArmySelect, etc.

其他技能系统改进

  • Auto Generate Buttons For Abilities
    • In order to allow for abilities to be easily applied to any unit, all buttons now have a property to allow modders to set their default button position and submenu Id on the command card.
    • On any ability, modders can set whether any given ability command will automatically Generate Ability Buttons such that the ability would work as soon as it is applied to a unit. No longer will users have to set these button and icons in the unit command card manually.
  • Trigger API to add and remove abilities on units at run time
    • New Trigger API actions: Unit Add Ability, Unit Remove Ability
  • Easier Level Configuration
    • Most ability types now have a Levels field that can directly set the max level of an ability. Combined with the accumulator system, modders will no longer need to implement 1000 sets of abilities for abilities that have 1000 levels.
    • The Levels field is also upgradable so that modders will be able to change max ability levels at runtime.
    • When the Levels field is set to 0, the default value, the ability level system will fallback to the previous functionality.
  • New CCharge field TimeDelay
    • This allows abilities to ignore the TimeDelay set in the unit and instead use the ability’s own settings.
    • Works for all ability/item/behavior charges.
    • Works similarly to TimeStart, but it only affects the first charge of the ability, item, or behavior.
    • When TimeDelay = 0, the charge system will work as before.
    • When TimeDelay > 0, TimeStart will be ignored.
    • When the ability begins to stock charges, the first charge’s regen time will use the TimeDelay value, and any following charges will use the TimeUse value.
    • New flag: IgnoreTimeDelay.
  • Catalog Replacement now supports Item Abilities.
    • For example, modders will be able to create different units when an item is used based on the Race of the player.
    • The replacement is not based on the item’s owner but rather the item’s user.
    • This allows different players use the same item with different effects.
  • SEffectParamsShared now has a m_level member, which saves the level of the ability that started the effect tree.
    • Effect trees can use this as a snapshot to get related level data so that even if the ability changes levels after the effect tree begins, the effect tree would still remember the old level of the ability.
    • Accumulators can also use this data as ability data.
  • CEffectCreateUnit_SpawnUnit can now be configured to create different unit types depending on the level of the effect tree.
  • CAbilBheavior can now set different validators for Auto Toggle On and Auto Toggle Off instead of just having one validator for autocast.
  • New Ability Categories and Behavior Categories
    • Added various new abilities and buff categories.
    • Buff behaviors can now enable/disable abilities by category.
  • New field for all abilities: State Behavior
    • This field creates a behavior when an ability is created. It will destroy it when the ability is destroyed, and it will disable/enable it when the ability is disabled/enabled.

其他伤害系统改进

  • New CEffectDamage field: DamageInheritEffect
    • The effect set in this field will be fired after the primary damage is done.
    • It will inherit the damage amount of the primary damage.
  • New CEffectDamage flag: NoZeroDamageInherit
    • This tells DamageInheritEffect to not fire when damage done is 0.
  • New CEffectDamage: Fraction
    • An extra fraction that will be multiplied to all other existing fractions.
    • This field supports accumulators, so modders will be able to create formulas based on this fraction.

武器预效果

  • New weapons field: PreEffect.
    • This is an effect version of PreEffectBehavior, which supports validating on target unit to decide whether the PreEffect should be executed.

同类中断支持

  • New CAbilEffect flag: HomogenousInterrupt
    • When this flag is on, users will see the following behavior: If a player selects a unit that is channeling a spell and orders it to move, it will stop the channel and move. If the player selects more than one unit and at least one of them is not channeling a spell, only the units that are not channeling will move immediately. In this scenario, the move order would be queued for all units currently channeling spells.
    • When the flag is off, players will observe the old SC2 behavior.

建筑建造系统改进

  • Worker Give Way During Construction
    • When the HomogenousInterrupt and Interrupt flag are both on in a CAbilBuild that doesn’t cause its workers to disappear into the building during the construction, then in the construction stage, workers will not block the placement of other buildings when you try to place them. Instead, they will walk away and then come back to find a better place to continue construction.
  • Building Birth animation time auto scaling
    • CAbilBuildable will now send Start, Cancel, Complete, Pause, and Resume events to the actor system.
    • Start events will also contain the build time information of the building. Actors will automatically set the build animation to be the same length of the build time. This way, buildings will finish their Birth animations as soon as they finish construction.

攻击地面 AOE 光标支持

  • This feature consists of the following two code changes:
    • If a unit has multiples weapons, the cusor will use the first valid DisplayEffect of the weapons to decide its visual.
    • CActorMsgAbil now carries cmd information so that modders can now use CActorTermAbilCmd to respond to CActorMsgAbil. This way, the actor system will be able to tell whether cursor mode is triggered by a normal attack or an attack ground guide via cmdIndex.
    • CAbilAttack now passes the DisplayEffect to the actor system as the cursor effect. This way, the actor system will be able to filter targets and scale the AOE cursor.

维修费系统

  • New Race field: UpkeepTax
    • This allows modders to customize the player’s resource income rate based on their food count.

斜坡建造

  • Previously players were never able to build buildings on Ramps in SC2, because it was hardcoded.
  • New Terrain Type Data data field: Ramp No Build
    • Allows users to select whether ramps will always be painted as Unbuildable.
    • When off, players will be able to build on ramps.

采集技能改进

  • New CAbilHarvest field: ResourceAmountCapacity
    • Default value of 0.
    • Every time a worker finishes harvesting resources, it will compare the resource amount they carry with the value of ResourceAmountCapacity. If the carried amount is less than ResourceAmountCapacity, it will try to continue harvesting resources until it reaches the expected amount unless it is queued another order or ordered to move away.
    • Even if a worker has not reached the expected amount of mined resources, the player can still order it to stop and return the mined resources it currently carries.
    • If a worker is ordered to do another task while it is mining, it will try to at least mine once before doing that task.
    • If a worker tries to continue harvesting but the target resource has died, it will try to find another resource nearby.
  • New CabilHavrest flag: No Extract
    • When on, the Harvest ability will not remove resources from Resource nodes but will still gain resources.

昼夜时间系统改进

  • New trigger event to capture day/night changes: Game Day/Night State Change
  • New trigger function to Get/Set the time of day by a fixed value: Set Time Of Day (Seconds)Current Time Of Day (Seconds)
  • New trigger function to grab the current day/night state: Current Day/Night State
  • New validator to validate on the time of day value: Game Compare Time Of Day

资源交付的演算体支持

  • New Actor Message: UnitResourceDrop
    • This actor event posts whenever a unit drops a resource to a Town Hall (or any resource drop unit).
    • The source name field is the unit actor of the unit that dropped the resource.
    • The sub name field is the resource type. Modders will be able to differentiate drops based on the sub name.
    • Using the SetTextLocalized and SetText messages after the event will automatically set the target text to the resource drop amount.
    • The actual Drop Amount will replace the %AMOUNT% token in the target text.

创建多个相同演算体

  • New Actor Type: CActorBatch
    • This solves a problem where users were previously not able to repeat the creating of an actor.
    • This actor has a Count field, which can be used to create multiple of the same type of child actor.
    • By default, the created actor uses CActorBatch’s bearing.

演算体强制循环支持

  • The Actor system now supports forced looping of playing an animation.
  • New EAnimsFlags flag: ForceLooping
    • If both this and the PlayForever flag are set, the system will play a randomly chosen variation of the animation every time the animation completes regardless of whether the animation is set to be looped or not.
    • Flag Priority: AssetDrivenLooping > ForceLooping > NonLooping
  • New EAnimBracketStartFlag: ContentForceLooping
    • While this flag is on and the ContentPlayOnce flag is off, the system will plays a randomly chosen variation of the animation every time the content animation completes until an AnimBracketStop message is sent regardless of whether the content animation is set to be looped or not.

A.I. 战术改进

  • New CUnit field: AIExecuteAbilTactical
    • This will run the tactical A.I. hook function with pattern: Unit, galaxyFuncName, scanned group, inAbility, inItem.
  • Fixed an inconsistency between tactical data and tactical function where the tactical function did not work on hostile and neutral A.I. players.

A.I. 地嗪和自定义资源支持

  • Improved the Synapse A.I. so that the A.I. will be able to understand Terrazine and Custom Resources as resource types. The A.I. will also now be able to harvest them.

A.I. 祭坛复活

  • The A.I. can now interpret a Stock order as a Revive hero order if it can’t find a way to train a particular type of hero.
  • The A.I. script must register the Reviver buildings via AIReqAddSpecialMaker() just like register the nuke abilities.
  • When the A.I. tries to stock a Hero and cannot find the train ability, it will search the revive list and try to revive a hero with the same type.

A.I. 单位库存替换

  • The A.I. now respects catalog Replacement when trying to build or train.
  • For example, if a Marine is replaced with a Zealot by an A.I. player, the A.I. player will properly recognize the train Marine ability as the train Zealot ability, and it will be able to issue the train order correctly.
  • This also affects merge, build, research, train, and warp train.
  • New unit flag: AIPreplacedForceBully
    • When preplaced onto a map, this unit will be considered as a replaceable bully by the computer even if the computer cannot currently replace it. This allows for abilities gained via the Replace Ability trigger action to be used by the computer to replace bullies.

更好的经典地图转换器

  • Improved the Legacy Map converter. When converting WarCraft III maps, it will no longer only convert terrain mesh, but also terrain textur, and preplaced units, doodads, destructibles, cameras, and regions.

数据驱动的战利品系统

  • New natives added to Galaxy: UnitLootDropUnit, UnitLootDropPoint
    • Modders can config their loot in the Loot data Editor and then use these natives to generate loot. Loot can be an item, a unit, an effect, or even a random item of X level/of X item classes, etc.
  • New natives: UnitLootLastCreated, UnitLootLastCreatedGroup
    • Modders can use these to grab the loot items that were just generated via UnitLootDropUnit or UnitLootDropPoint.
  • New item flag: IncludeInLootItemPool
    • When checked, an item will be included into the random pick pool of CLootItem. Modders can thus mark items as “not able to randomly dropped”.
  • CLootItem.ClassArray is now upgradable and modders will be able to use triggers to randomize the creation of items of different classes.

CTRL 命令修饰符

  • The modifier is off by default. Use the trigger action, UISetCommandAllowed, to turn it on and off.
  • When this modifier is on: When you hold Ctrl while issuing an order, the order will only be sent to units in the currently highlighted subgroup instead of all selected units. For example, say a player selects a Marine and a Zealot, making sure only the Marine is highlighted. If he then issues a right click move order while holding down Ctrl key, only the Marine would be ordered to move.

其他 UI 框架属性改进

  • Added a property to CUnitFrame: UseSelectionLeader
    • Gives the UI the ability to grab the current leader unit of the current selection (first unit of the active subgroup).
    • When checked, CUnitFrame will automatically set LocalObservedSelectionLeaderUnit() as its unit. It will also update its UnitTag property so that it can perform property binding to other frames.
    • When checked, CUnitFrame will ignore all property bindings that bind the UnitTag to other frames as it should only reflect the selection leader.
    • When unchecked, CUnitFrame will behave as before.
  • Fixed an issue where CUnitButton would not update its UnitTag property.

其他触发器 API 改进

  • Ability Stage
    • CAbilRally can now throw a trigger stage event: Place when the rally is placed.
  • Player Handicap
    • Player Handicap can now break the previous 100% limit.
  • Unit Magazine Management
    • Removes an existing unit to a unit magazine.
    • Adds an existing unit to a unit magazine.
    • New Galaxy API: UnitMagazineAssign
    • New Galaxy API: UnitMagazineRemove
  • New Player State API: AlwaysShowUnitTooltip
    • When this state is on, this player’s units will always show highlighted tooltips even if they are not marked as Highlight Tooltipable.
  • New Player State API: GivesBounty
    • On by default for all players. When on, player units will reward their Kill Resources to the enemy players who killed these units.
  • New Actor API: ActorScopeMoveTo
    • Moves an actor scope to the bearings of a given actor.
  • New Trigger Event: Player Spent Vital Event
    • Captures when a player has spent vital.
    • Can understand which vital was spent and how much was spent in the trigger event response.

其他数据编辑器改进

  • The Data Editor can now locate the correct XML line when a user selects a Default data entry.
  • Requirement Links (const CTechRequirementsGraph*) now respects XML token replacement.
    • With this, most abilities can now use tokens to point their Requirement Link to be the same id of the ability itself.
  • CBehaviorLinkArraynow now respects XML token replacement.
  • Animation Props (CAnimProps) in actor messages now respects XML token replacement.
  • Trying to clear a non-existent TintColor prop on an actor will no longer throw an error message.
  • CActorQuad now has flags to allow it to be able to auto-stretch based on its launch and impact positions.
  • New target sort type: CTargetSortValidator
    • Sorts targets based on whether they meet the given validators.
  • New order command flag: Attack Once
    • When issuing an attack order, it is now allowed to issue an “attack once” order with order command flags.
    • The Order Set Flags trigger action can be used to set this flag.
  • CEffectOffset fields now can be upgraded with Add, Subtract, Multiply, and Divide operations, operating like a 3D Vector. Previously, only Set was available.
  • New kinetic: CKineticDistance
    • Will project the target unit from a starting position to a given distance in the direction of the original position of a kinetic parameter.
  • New CWeapon field: DisplayName
    • Used to override the name of the weapon in the tooltip.
  • New CEffectModifyUnit flag: StartingVitals
    • Sets a unit’s Life, Energy, and Shields to its starting vitals.
  • New CEffectModifyUnit flag: SetVitals
    • Directly sets a unit’s vitals.
  • Heal Effects for CActorActon
    • CEffectHeal can now provide ActionParticipantsMessage and ActionCommenceMessage messages for CActorAction. This allows heal effects to configure Actor actions.
    • Fixed an issue where CEffectHeal would not be able to fire its Stop effect action sub name at the correct time.
  • New CValidatorUnitOrderCValidatorUnitOrder flag: CheckStateOnly
    • When checked, this validator will only evaluate if the ability command is disabled for the unit, regardless if the command can be executed due to reasons like “not enough mana”.
  • New CEffectModifyUnit flag: ResourceDrop.
    • When checked, the impact unit will instantly drop the resource it’s currently carrying without needing to travel to a Town Hall. The owning player will receive the resource.
  • New CEffectEnumArea flag: UnCreep
    • When on, the search effect will exclude Creeps in its search radius.
  • Unit Random Seed API:
    • New trigger API to set, get, or reset a unit’s randomized seed.
    • The randomized seed of a unit determines a unit’s random name, variations, etc.
    • This is useful when you want to create an exact copy of a unit.
  • Fixed an issue with CEffectSwitch where it would sometimes return a wrong error message.
  • New flag for Train abilities: Copy Life Percentage
    • Determines whether the trained unit would inherit the life percentage of the trainer unit.
  • New flag for Train abilities: Bypass Food Restriction
    • Allows the ability to bypass food restrictions.
  • New Placement Build ability flag: Smart Cast
    • Determines whether the ability can be right clicked to smart cast.
  • New flag for Effect abilities: External Acquire Passenger
    • Allows abilities to acquire units inside a transport.
  • Fixed an issue where the Unit Weapon Range validator would always fail when a unit was mind controlled.
  • New Create Healer effect flag: Continue When Full
    • Determines whether the Create Healer effect will continue if the healed vital is full.
    • By default, off.
  • Fixed an issue where Create Unit effects would directly create units at a rally point instead of moving them to the rally point if the Rally Unit field was set.
  • New Set Effect field: RecycleCount
    • Allows their child effects to be executed repeatedly until they meet the recycle count.
  • New flag for Effect Abilities: Cancel Reset Auto Cast
    • Determines whether the auto-cast state of the ability would be reset when the player manually cancels ability channeling.
  • New Veterancy Level validator field: Result Max Level
    • Checks whether a unit has reached the maximum hero level.
  • Fixed an issue where revive alerts did not correctly point to revived units nor play the right VO.
  • New Set Effect flag: Set Source
    • Set the source unit/point of its child effects to be the target point/unit of the current target unit/point.
  • Added a search box to the Ability Command list dialog in the data editor.

自定义种族修复

  • The race dropdown in game lobbies now correctly lists the custom races set in the map instead of always displaying Terran, Zerg, and Protoss.
  • Please note this change does not affect Extension Mods for now, there is currently no way to add custom races into race dropdowns via an extension mod.
  • Fixed an issue where maps with custom races could crash due to a console skin feature.

自定义团队名称支持

  • The SC2 Editor now supports custom team names.
  • Custom team names may be set differently based on different game modes.
  • To customize team names, go to Map/Mod->Game Variants.

扩展 “D TIME/” 文本标签

  • Added five new Time Types to the “time” text tag for showing different game times.
  • When passing these type names instead of a direct number, the text tag will show the corresponding in-game time.
  • Examples:
    • Fixed Time: 9125 seconds
    • Game Time: 11:50
    • Mission Time: 11:50
    • AI Time: 11:50
    • Date Time: 2020:06:12:12:12:23
    • Time Of Day: 22:06:34
    • Fixed Time: “d time=”9125″/>
    • Game Time: “d time=”GameTime”/>
    • Mission Time: “d time=”MissionTime”/>
    • AI Time: “d time=”AITime”/>
    • Date Time: “d time=”DateTime”/>
    • Time Of Day: “d time=”TimeOfDay”/>
    • Input Text
    • Displayed Text

其他 UI 框架属性改进

  • New CHeroFrame properties: HeroTag, Skill Point
    • Exposes a hero’s unit tag and unspent skill points.
    • Modders can use these properties to customize their own hero frames.

其他改进

  • Increased the max foliageCount in the Terrian Editor to 10 per cell.
  • Fixed an issue where a red text error would show up when trying to revive a unit that died during a morph.
  • New field in GameUI data: Suppress Skins In Replay
    • This allows WCS Game Heart to suppress skins in replays.

漏洞修复

  • Fixed an issue where the first attack wave could become stuck during Legacy of the Void: Whispers of Oblivion campaign mission.
  • Fixed an issue where Shield Batteries would not obey stop commands on non-defensive structures while auto-cast is enabled.
  • The portrait for the Command Center on the Terran Remastered console skin is now properly centered.
  • Fixed an issue where some water doodads would occasionally blink above water.

【SCII过场动画编辑器系列】初级篇:5、模型绑定和音效添加

点此返回总篇

大家好,这次我将带来全新的内容学习——模型绑定和音效添加。

事实上,不光是模型,音效也是能够绑定到另一个模型之上,达到3D的效果。那么今天的内容大概分为以下几个部分:

  1. 搭建一个预设场景
  2. 将某一个模型绑定到另一个模型上
  3. 音效的介绍和添加
继续阅读【SCII过场动画编辑器系列】初级篇:5、模型绑定和音效添加

【SCII过场动画编辑器系列】初级篇:4、SCII自带人物模型走路教程

点此返回总篇

许久没有更新,不知道大家是否还记得过场动画编辑器的使用呢?如果忘记了记得回去复习复习哈!

我们废话不多说,直接进入今天的正题——让人物动起来。

在SCII的许多人物高模中,有着这样的一个动画<Walk>,但是实际我们操作后发现,人物只是在原地踏步。

继续阅读【SCII过场动画编辑器系列】初级篇:4、SCII自带人物模型走路教程

【SCII过场动画编辑器系列】初级篇:3、简单的场景搭建与光影配置

点此返回总篇

今天,我们进入到编辑器初级篇中最有意思的部分了,本小结将介绍以下内容:

  1. 如何保存项目
  2. 简单的场景搭建
  3. 调整光照和光影效果,以达到预期效果
  4. 制作游戏封面图
继续阅读【SCII过场动画编辑器系列】初级篇:3、简单的场景搭建与光影配置

【SCII过场动画编辑器系列】初级篇:2、过场动画编辑器的基础功能和操作

点此返回总篇目录

——在讲过场动画编辑器的基础功能和操作之前,我们先做一个统一的约定,假设各位都有SCII的三大战役包以及诺娃的隐秘行动任务包,我们的讲授将在这个基础上进行。

继续阅读【SCII过场动画编辑器系列】初级篇:2、过场动画编辑器的基础功能和操作

【SCII过场动画编辑器系列】初级篇:1、过场动画编辑器所需要的电脑配置与配置过低的解决办法

点此返回总篇目录

过场动画编辑器推荐的电脑配置:

处理器:Intel酷睿i5及以上

显卡:GTX660及以上

硬盘:固态500GB以上

内存:双通道16GB以上

继续阅读【SCII过场动画编辑器系列】初级篇:1、过场动画编辑器所需要的电脑配置与配置过低的解决办法

【SCII过场动画编辑器系列】总篇:为什么要讲过场动画编辑器?

点此返回网站主页

——银河编辑器中鲜有人掌握并利用的武器,便是过场动画编辑器。

了解过场动画编辑器,你能得到什么

可能什么都得不到,因为你可能没有那个心思,也没有那个耐心去做过场动画,但了解过场动画编辑器,对于光源光影、雾气遮罩等效果会有充分的体会和认识,并且在这之上,可以提高游戏画面效果,让玩家有更佳的游戏体验

如果你肯花心思去做过场动画,那么也请不要在这方面投入太多的时间,制作成型的过场动画一定是个精雕细琢的过程,因为一个音效,你可能要琢磨半天,去找资源,试听,选定,然后发现效果不太好,然后又再推翻,重新寻找……一个过场动画里充满了声音和音效,可想而知,单是过场动画声音的效果就得制作相当长的一段时间。

继续阅读【SCII过场动画编辑器系列】总篇:为什么要讲过场动画编辑器?