NOTES DE MISE À JOUR DE #STARCRAFTII 4.13.0

MISE À JOUR DE LA RÉDACTION

Nous sommes ravis d’annoncer une mise à jour majeure de l’éditeur de cartes StarCraft II!

Depuis Wings of Liberty, vos commentaires sont cohérents: l’éditeur devrait être plus facile à utiliser. Ce correctif vise à répondre à ces commentaires sans perdre en profondeur la personnalisation. En tant que tel, nous avons absorbé des éléments de l’éditeur Warcraft III conçus pour être faciles à utiliser sans sacrifier les capacités existantes de l’éditeur StarCraft II. Nous avons également étendu la capacité de l’éditeur SCII encore plus loin.

Nous encourageons les créateurs de cartes et les modistes à intervenir, à explorer et à nous envoyer vos commentaires, car nous sommes toujours intéressés à ajouter des changements plus excitants à l’avenir. Il s’agit de la plus grande mise à jour de l’éditeur que nous ayons jamais faite, et nous sommes ravis d’entendre ce que vous en pensez! Vous trouverez ci-dessous un aperçu de certaines des nouvelles fonctionnalités intéressantes. Il est essentiel pour nous d’obtenir des commentaires sur le comportement de vos cartes avec ces changements. Veuillez donc essayer de publier vos cartes personnalisées sur le PTR et faites-nous savoir si vous rencontrez des problèmes ou un comportement étrange sur notre forum PTR .

Avant de commencer: N’oubliez pas de sauvegarder vos cartes avant de les essayer sur PTR car PTR est censé être expérimental.

Aussi: veuillez garder à l’esprit que même si War Chest XP peut être gagné sur le PTR, la progression ne se poursuivra pas dans les autres régions, et la plupart des récompenses du War Chest ne seront pas transférées du PTR.


Chargement de la carte à la carte

  • StarCraft II prend désormais en charge la transition d’un lobby multijoueur entre deux cartes.
  • Les deux cartes impliquées dans la transition doivent être publiées par le même auteur.
  • Une nouvelle fonction a été ajoutée appelée «Carte en ligne pour charger la carte», qui permet à l’auteur de charger un «emplacement de carte» attribué à tous les joueurs et d’assigner la victoire et la défaite à différents groupes de joueurs.
  • Les «emplacements de carte» sont attribués dans la fenêtre Gérer les publications en utilisant la partie «Attribuer un emplacement de carte» du menu contextuel du clic droit sur une carte publiée.
  • Les emplacements de carte doivent être attribués individuellement dans chaque région.
  • Il est recommandé que la première carte de la chaîne contienne les dépendances d’actifs requises pour toutes les autres cartes pouvant éventuellement être transférées afin de réduire les temps de chargement entre les cartes.
  • Un nouveau genre «Campagne» a été ajouté qui peut être attribué dans le menu Variantes de jeu.
  • Le genre «Campagne» n’apparaît pas actuellement dans la liste déroulante des genres dans le jeu, mais vous pouvez toujours voir ces cartes dans votre «Ma publication».

Collecte de données

  • Une collection de données est un nouveau type de catalogue qui permet aux utilisateurs de déclarer et de regrouper un ensemble d’éléments de données dans une collection. Une collection peut être considérée comme n’importe quelle autre donnée unique telle qu’une unité, une capacité ou une mise à niveau.
  • Lors de la copie, du changement de nom ou de la suppression d’une collection de données, l’éditeur appliquera intelligemment la même action pour tous les éléments de données de la collection. Par exemple, lors de la copie d’une collection de données, les utilisateurs seront invités à fournir un nom pour la nouvelle collection. L’éditeur dupliquera ensuite chaque entrée de données dans la collection et les nommera en conséquence. L’éditeur définira également tous les champs liés de sorte que les nouvelles entrées de données pointent toutes vers leurs nouveaux homologues.
  • Exemple: copiez la collection Blizzard et définissez le nouveau nom de la collection de données sur Activision Blizzard.
  • La suppression d’une collection de données supprimera toutes les entrées de données de la collection.
  • La modification de l’ID d’une collection de données modifie également les ID de toutes les entrées de données de la collection.
  • Les entrées de données d’une collecte de données peuvent être définies manuellement ou renseignées automatiquement.
  • Les collectes de données utilisent un nouveau caractère clé, «@», pour nommer les entrées de données enfants. Le système de collecte de données peut rechercher automatiquement dans tout le catalogue pour trouver toute entrée de données dont l’ID commence par l’ID de la collecte de données suivi du caractère «@». Il les ajoutera ensuite automatiquement à la collection.
  • En raison de cette fonctionnalité liée, chaque fois que l’arbre d’effets d’une capacité est modifié, la collecte de données correspondante et ses entrées de données seront automatiquement mises à jour.
  • Voici des exemples de données dans une collection de données auto-remplie:
    • Bien qu’il ne soit pas renseigné automatiquement, les données qui ne suivent pas cette conversion de dénomination peuvent être ajoutées manuellement dans les collections de données.
  • Menu: Data Collection -> Auto Fill Data Collection recherchera automatiquement tout le catalogue et trouvera toute entrée de données avec un identifiant commençant par l’identifiant de collecte de données suivi du caractère «@». Il les ajoutera ensuite automatiquement dans la collection correspondante.
  • Menu: Data Collection -> Auto Name Data Collection renomme les entrées de données de la collecte de données en fonction du nom de la collecte de données.
  • Les collectes de données nous permettent également d’ajouter des informations supplémentaires sur les relations entre les entrées de données. Par exemple, avec les collectes de données, le jeu peut désormais comprendre des informations telles que «quel est l’acteur principal de cette unité?».
  • De nombreuses autres fonctionnalités de cette mise à jour dépendent de cette fonctionnalité de collecte de données.
  • Les collectes de données s’attendent à ce que certaines conventions ou directives de codage exposent leur plein potentiel:
    • Toute collecte de données doit être aussi autonome que possible.
    • Par exemple, une «collection de capacités» devrait toujours fonctionner chaque fois que vous l’ajoutez à une unité, et une capacité ne devrait jamais être codée en dur pour fonctionner uniquement sur des unités spécifiques ou des unités avec des armes spécifiques. Par exemple, dans l’ancienne base de données SC2, il y avait un passif Rayon du Vide qui augmentait les dégâts après une attaque de longue durée. Ce passif était en fait faux, et la fonctionnalité était en fait codée en dur dans l’arme du Void Ray lui-même. Dans cette nouvelle ère de collecte de données, nous déconseillons fortement cette mauvaise utilisation des données. À ce titre, de nombreuses nouvelles fonctionnalités décrites ci-dessous ont été créées pour aider à atteindre cet objectif.

Éditeur de données “Easy Mode”

  • L’éditeur de données «Mode facile» est une fonctionnalité étendue des collectes de données. Lorsqu’il est activé, l’éditeur de données n’affichera que les collections de données et les imitera comme s’il s’agissait d’une seule “Données de capacité”, “Données d’unité”, “Données d’article” ou “Données de mise à niveau”, etc. Vous pouvez copier, supprimer, supprimer ou renommer ces données comme s’il s’agissait d’un seul objet de données.
  • Ce mode est uniquement disponible en vue tableau. Il combine les champs de données les plus importants tels que les données Unit HP ou les données Ability Damage.
  • Les champs affichés en mode simplifié sont entièrement personnalisables pour chaque type de collecte de données.
  • L’une des plus grandes plaintes de la plupart des créateurs de cartes de l’éditeur SC2 est qu’il est trop compliqué de dupliquer des unités ou des capacités. C’est le plus grand avantage de l’éditeur War3 par rapport à l’éditeur SC2.
    • La combinaison des collectes de données et du mode facile est notre réponse.
    • À l’avenir, nous voudrons créer plus de données sur la base des collectes de données afin que les utilisateurs puissent interagir avec eux plus facilement.
  • Nous encourageons les moddeurs à créer leurs propres mods avec des collectes de données afin qu’ils puissent bénéficier de leurs avantages. Nous encourageons également les moddeurs de mods publics à définir leur vue Mode facile afin que d’autres moddeurs puissent facilement changer et modifier leurs mods.

Accumulateurs

  • Les accumulateurs sont une nouvelle fonctionnalité qui permet aux cartographes de créer des formules basées sur divers paramètres d’entrée.
  • Les accumulateurs peuvent prendre des valeurs personnalisées d’unité et des données utilisateur comme paramètres.
  • Les accumulateurs prennent en charge non seulement les formules, mais également les tables définies par l’utilisateur. Lorsqu’ils sont combinés avec des validateurs, les accumulateurs peuvent également être utilisés pour fournir une fonctionnalité de changement de casse.
  • Par exemple, lorsqu’un accumulateur est utilisé dans un comportement qui a des niveaux variables et peut être lancé par plusieurs joueurs, l’accumulateur calculera le résultat par joueur.
  • Les accumulateurs sont très polyvalents et peuvent être utilisés dans de nombreux endroits. Les exemples incluent les dégâts, le taux de guérison, la régénération de vie, la réduction des dégâts, le coût des capacités, le bonus d’armure, le nombre de lots d’acteurs, le nombre de persistance, le nombre de comportements, la durée du comportement, la fraction de dégâts, la vitesse d’attaque, la vitesse de déplacement, la régénération vitale, les chances de comportement, la modification vitale, etc.
  • Nouveau jeton d’analyse de chaîne: $ AccumulatedValue: xxx $
    • Ce jeton peut être utilisé pour calculer AccumulatedValue dans l’interface utilisateur. Par exemple:
      • Ce jeton peut être utilisé pour calculer AccumulatedValue sur l’interface utilisateur, par exemple:
        • Appelle “d ref =” $ AccumulatedValue: Effect, JainaBlizzardPersistent, PeriodCount $ “/>” gel des vagues d’éclats de glace. Chaque vague inflige des dégâts aux unités d’une zone.

Réponse au niveau du joueur

  • Player Response est un nouveau catalogue de données qui permet aux utilisateurs de définir des modèles de réponse lorsque quelque chose se produit pour le joueur équipé. Les concepteurs peuvent utiliser des déclencheurs pour équiper ces modèles de réponse à certains joueurs, et les unités du joueur répondront aux événements enregistrés comme s’ils avaient tous des comportements de réponse aux dégâts.
  • Les utilisateurs ont la possibilité de définir la priorité et de passer par les méthodes pour les réponses des joueurs.
  • La réponse au niveau du joueur supprime la nécessité d’appliquer certains comportements à tout le monde lors de la création de commandants, ce qui améliore considérablement les performances du jeu. De plus, puisque vous n’avez besoin d’équiper les réponses que lorsque le commandant correspondant répond, le jeu n’a plus besoin de parcourir les données de prévention de la mort de tous les commandants à chaque fois.
  • La réponse du joueur n’est plus limitée à «L’unité est endommagée» comme les comportements de réponse aux dégâts. Par exemple, il peut également répondre à l’apparition de joueurs, à l’apparition d’appartements, à la mort d’unités de joueurs, etc.

Barre d’état non segmentée

  • Action de déclenchement: UI – Override Player Option permet désormais aux créateurs de cartes de modifier le style des barres d’état par défaut pour qu’elles soient plus linéaires et non segmentées. Il est utile pour les mods personnalisés qui nécessitent un affichage plus précis des fractions vitales.

Données mises à jour pour le mod d’actif War3

  • En février 2015, nous avons publié un War3 Asset Mod. Bien que le pack ne comprenne que des actifs, de nombreux moddeurs voulaient apprendre à créer des capacités de style RPG War3 avec l’éditeur SC2. Avec autant de modifications apportées par l’éditeur à ce patch, nous aimerions fournir aux moddeurs quelques exemples avec toutes ces nouvelles fonctionnalités.
  • Nous avons travaillé avec le créateur du mod communautaire, Renee’s Warcraft III Mod ‘pour recréer son mod avec toutes les nouvelles fonctionnalités de l’éditeur.
  • Maintenant, le mod d’actif War3 officiel comprend un ensemble complet de données de travail qui incluent les races, les unités, les bâtiments et les capacités. Nous espérons que ces exemples aideront les moddeurs à se mettre à jour.

Mouvement de formation

  • StarCraft II prend désormais en charge le mouvement de formation, qui peut être activé / désactivé pour chaque joueur via des déclencheurs.
  • L’unité peut se déplacer et attaquer dans une formation carrée avec une distance de séparation prédéfinie entre elles.
  • Actuellement, ce mouvement de formation ne forcera pas toutes les unités en formation à maintenir la même vitesse de mouvement, ce qui est différent de la version War3.
  • Les moddeurs peuvent modifier ces données pour personnaliser le comportement.

Cheminement de l’eau

  • StarCraft II prend désormais en charge le cheminement de l’eau!
  • Nouveaux types de parcours: eau peu profonde et eau profonde .
  • Nouveau sur les modes de cheminement: flottant et amphibie .
  • Les unités terrestres peuvent cheminer sur les tuiles Sol et Eau peu profonde .
  • Les unités flottantes peuvent cheminer sur les tuiles Eau peu profonde et Eau profonde .
  • Les unités amphibies peuvent cheminer sur les tuiles Sol , Eau peu profonde et Eau profonde .
  • Les unités volantes peuvent aller partout où il n’y a pas de bloqueurs de trajets aériens.
  • Actuellement, ces deux nouveaux types de chemin ne peuvent être peints que par le pinceau de chemin dans l’éditeur de terrain.

Couches de falaises multiples

  • StarCraft II prend désormais en charge jusqu’à 15 couches de falaise, contre 3.

Mettre à niveau la refonte du système

  • Il s’agit d’une grande partie du système de collecte de données et du nouveau système Commander.
  • L’ancien système de mise à niveau ne pouvait pas être autonome, ce qui était une rupture avec la nouvelle philosophie de collecte de données. Avec l’ancien système de mise à niveau, les mises à niveau spécifiaient les capacités ou unités affectées ainsi que leurs effets de mise à niveau correspondants.
  • Le nouveau système permet aux mises à niveau d’être beaucoup plus autonomes. Les unités doivent maintenant déclarer quelles améliorations elles utilisent au lieu de laisser les mises à niveau dicter quelles unités elles affectent. Par exemple, les mises à niveau ne devraient plus être mises en œuvre dans le style de «Augmenter la vie des Marines de 10». Ils devraient plutôt dire “Augmentez la vie de toute unité qui m’utilise de 10”.
  • Nouveau champ CUpgrade : EffectArrayTemplate
    • Ce champ est similaire à l’ancien champ EffectArray avec les exceptions suivantes:
      • Il prend en charge deux jetons supplémentaires:
        • ^ ParamId ^ : l’ID de toute collecte de données qui utilise la mise à niveau.
        • ^ ParamLevel ^ : Le niveau actuel de mise à niveau.
      • Il prend en charge les références de données et l’utilisation de l’arithmétique. Utilisez des crochets, “{” et “}”, pour créer des formules comme vous le feriez dans l’éditeur de texte.
      • Les collectes de données encouragent déjà les moddeurs à nommer toutes les données associées avec une convention de dénomination spécifique, de sorte que les moddeurs peuvent facilement utiliser ^ ParamId ^ pour les entrées de données liées à l’unité qui les utilise.
      • Par exemple:
        • EffectArrayTemplate Reference = “Effect, ^ ParamId ^ @ Weapon, Amount” Value = “{DataCollection, ^ ParamId ^, UpgradeInfoWeapon.DamagePerLevel + 3}” /
        • Cette mise à niveau augmentera le montant des dégâts de l’arme de l’unité sur laquelle elle est utilisée par le champ UpgradeInfoWeapon.DamagePerLevel de la collecte de données de l’unité plus trois.
        • Vous pouvez mettre un nombre fixe dans la colonne de valeur, par exemple Value = ”4”.
  • Les anciens champs de CUpgrade existent toujours et restent fonctionnellement les mêmes, donc toutes les anciennes mises à niveau fonctionnent toujours. Vous pouvez continuer à créer des mises à niveau dans l’ancien style, mais ce n’est pas recommandé.
  • Prise en charge de la mise à niveau de toutes les unités
    • Étant donné que certaines mises à niveau sont conçues pour fonctionner pour «toutes les unités» (d’un certain type), CUpgrade dispose désormais d’un indicateur pour énumérer toutes les unités de collecte de données.
    • Deux champs de filtre, EnumExcludedUserFlags et EnumRequiredUserFlags ont également été ajoutés à CUpgrade qui permettent aux mises à niveau de filtrer à travers toutes les unités de collecte de données en fonction de leurs indicateurs.
  • Nouvelles opérations de mise à niveau: AddBaseMultiply et SubtractBaseMultiply
    • Ces opérations modifient le champ cible en fonction de sa valeur par défaut au lieu de sa valeur actuelle, ce qui est généralement plus utile que l’opération Multiplier. Par exemple, si vous avez 100 niveaux de mise à niveau «augmentez la durée de vie de 10%», vous souhaiterez probablement que cette mise à niveau augmente la durée de vie d’un nombre fixe à chaque niveau plutôt que d’être multipliée par la durée de vie du dernier niveau à chaque fois. De plus, Add / SubtractBaseMultiply prend en charge les déclassements technologiques car il peut se défaire à tout moment, ce que Multiply ne peut pas.
  • Les mises à niveau peuvent désormais être utilisées pour activer ou désactiver des unités pour les joueurs.
  • Nouveau champ CWeapon: Multiplicateur de taux
    • A une valeur par défaut de 1.
    • Lorsque le jeu essaie d’obtenir la période d’une arme ou d’un effet PC, il tient compte de ce multiplicateur.
    • Cette modification vous permet de mettre à niveau la vitesse de vos armes d’un pourcentage de taux au lieu d’avoir à modifier directement la période de son arme.

Système Orb (plus Multishot et Critical Strike)

  • Les orbes sont des modificateurs d’attaque qui constituent une partie importante du genre MOBA.
  • Le système de réponse aux dommages de StarCraft II peut être utilisé pour créer des orbes, mais la réponse aux dégâts et les modificateurs d’attaque sont en réalité très différents.
  • La plupart des anciennes capacités «Orbe» du SC2 ne correspondent pas à la définition traditionnelle du fonctionnement des orbes car elles sont intégrées aux armes elles-mêmes et ne peuvent pas être facilement ajoutées et supprimées d’armes arbitraires. Ainsi, si vous vouliez créer un objet Orbe, il serait irréaliste d’intégrer les effets de l’objet Orbe dans toutes les armes de héros du jeu.
  • Le système Orb que nous avons mis à jour ici est un concept étendu de systèmes génériques MOBA Orb, qui inclut la prise en charge officielle de Multishot et Critical Strike.
  • Un véritable système Orb nécessite les fonctionnalités suivantes:
    • Possibilité d’appliquer ses effets aux systèmes d’armes par attaque.
    • Possibilité de modifier les missiles projectiles.
    • Possibilité d’ajouter des effets spéciaux lorsque l’arme a un impact sur la cible, par exemple le feu, le givre, un comportement d’application, etc. Elle devrait également être en mesure d’appliquer des effets avant et après l’impact.
      • Par exemple, la capacité Flèche sombre nécessite que l’Orbe applique un debuff à la cible, et le debuff fait quelque chose (soulève un squelette) lorsque la cible est tuée. Si le système Orb ne pouvait appliquer des effets qu’après l’impact, l’unité pourrait être tuée par l’impact et un squelette ne serait pas levé.
      • Un autre exemple est la capacité Orbe, Fragments Shards. Parce qu’il inflige des dégâts AoE supplémentaires en fonction des dégâts d’attaque principaux, l’effet de dégâts AoE supplémentaire doit se produire après l’effet d’impact, car les dégâts primaires aléatoires doivent être générés en premier.
    • Lorsqu’une arme commence son pré-swing, le modificateur d’attaque de l’Orbe doit déjà être enregistré, avant même que l’effet d’attaque ne soit déclenché. Cela permet aux unités de jouer des animations d’attaque spéciales comme avec Critical Strike.
    • Les orbes doivent pouvoir appliquer des bonus constants de dégâts d’attaque.
    • Les orbes devraient avoir la possibilité de valider leurs effets, par exemple, les capacités Bash et Critical Strike ne se déclenchent pas sur les unités amies.
  • Nouvel indicateur d’effet: MainImpact
    • Lorsqu’il est activé, ce drapeau marque un effet comme le principal effet d’impact d’une arborescence d’effets d’arme afin que les modificateurs d’attaque puissent savoir quand déclencher leurs effets de modificateur.
  • Nouveau type de comportement: CBehaviorAttackModifier
    • Une fois appliqués, les modificateurs prendront effet au démarrage d’une arme. Il s’enregistrera dans l’arborescence entière des effets d’attaque.
    • Le champ Chance détermine la chance du modificateur d’attaque, calculée par attaque.
    • Plusieurs modificateurs ajoutés à une unité. Le champ Identifiant unique permet aux utilisateurs de déterminer s’ils peuvent tous travailler en même temps. Dans War3, un seul effet Orbe peut avoir lieu même si un héros a équipé plusieurs Orbes. Cependant, les moddeurs voudront probablement toujours avoir l’option pour que plusieurs Orbes fonctionnent en même temps.
    • Le champ Stack Max détermine le nombre de fois que les bonus de dégâts peuvent être cumulés.
    • Les champs Bonus aux dommages déterminent s’il existe des bonus constants ou variables. Ces champs prennent également en charge les accumulateurs.
    • Les champs du validateur déterminent si les modificateurs fonctionneront sur certaines cibles d’attaque. Par exemple, vous ne voudriez probablement pas que la frappe critique fonctionne lorsque vous attaquez vos propres unités.
    • Le champ PreImpactEffect déclenchera un effet avant que l’impact ne se produise.
    • Le champ DamageInheritEffect déclenche un effet après que l’impact se soit produit, héritant des dommages de l’impact sur l’arbre d’effet suivant. Ces effets permettent aux utilisateurs de créer un effet d’éclairage de chaîne ou d’infliger des dégâts d’AoE en fonction des dégâts d’impact.
    • Peut déterminer si l’attaque peut manquer. Voir la section Miss / Deflect / Block System.
    • Le drapeau Hallucination Visuel Seul permet aux moddeurs de déterminer si le modificateur d’attaque appliquera l’effet Orbe si le lanceur est une unité d’Hallucination. Si le lanceur de sorts est une hallucination, vous ne voudriez probablement pas qu’il inflige des dégâts AOE et ressuscite des morts en tant que squelettes. Pourtant, certains moddeurs pourraient vouloir cette option.
      • Avec ce drapeau, le modificateur d’attaque sera toujours appliqué à l’arbre d’attaque, de sorte que l’unité de lanceur de sorts pourra toujours simuler une animation d’attaque critique et lancer un missile de projectile modifié. Cependant, l’attaque n’appliquera pas un véritable effet Orbe lorsqu’elle aura un impact.
    • Les champs MultishotEffect et MultishotSearchPattern permettent aux utilisateurs de lancer un effet multishot sur chaque cible dans le modèle de recherche, étant donné que Chance renvoie true et que tous les validateurs sont respectés. Si le champ MultishotEffect n’est pas défini, l’effet reviendra à l’effet d’arme d’origine de l’attaque.
    • Peut également décider si les cibles Multishot peuvent également recevoir les effets d’impact.
    • Peut activer l’arme par index, afin que les héros de mêlée avec l’objet Orbe puissent utiliser leur arme cachée pour attaquer Air.
    • Lorsqu’il est appliqué à une attaque, le modificateur peut remplir le terme d’acteur WeaponModifier sur l’événement WeaponStart, afin que le système d’acteur puisse jouer différentes animations d’attaque en fonction des modificateurs d’attaque en cours de fonctionnement.
    • Avoir le drapeau «IsCritical». Lorsqu’elle est cochée, elle pourrait marquer l’attaque comme “ Critique ”, ce qui déclencherait un message d’acteur critique et remplirait le message SetText et SetTextlocalized avec le montant des dommages, afin que les moddeurs puissent faire des textes flottants Critical Strike.
  • Nouveau type de capacité: CAbilAttackModifier
    • CBehaviorAttackModifier peut gérer la plupart des capacités des orbes, mais pour certaines capacités comme Flèche brûlante de la prêtresse de la lune, le sort Orbe a toujours besoin d’un obus pour activer et désactiver sa diffusion automatique.
    • CBehaviorAttackModifier est un shell de CBehaviorAttackModifier, de sorte qu’il peut ajouter un shell de cast automatique / casté manuellement à l’orbe.
    • Peut définir le coût sur le modificateur, de sorte que chaque fois que la capacité Orbe est lancée, elle coûte des ressources ou des éléments vitaux.
    • Possède une propriété de niveau pour pouvoir être améliorée par les capacités d’apprentissage d’un héros.
  • Nouveau type d’acteur: CActorActionOverride
    • Utilisé pour remplacer l’art du missile, l’art de l’impact, l’art de l’endommagement de CActorAction.
    • Possède les champs Damage Model , Impact Model et Missile Model pour définir les liens de modèle primordiaux.
    • Lorsque CActorAction est initialisé, il démarre l’événement, ActionInitModifier .
    • CActorActionOverride peut capturer cet événement et se créer dans le cadre de CActorAction. Il peut ensuite utiliser ActionOverrideApplyTo pour s’appliquer à CActorActions.
    • CActorAction récupérera les données de CActorActionOverride et remplacera ses modèles d’attaque.

Prise en charge des capacités dynamiques

  • Les moddeurs peuvent désormais utiliser des déclencheurs pour ajouter ou supprimer des capacités des unités.

Échange de capacités

  • Nouvelle fonction: UnitAbilityChangeLink ()
    • Cette fonction permet aux utilisateurs d’échanger une capacité existante sur une unité à une autre unité tout en conservant ses anciennes charges, temps de recharge et états de niveau.
    • Différent du remplacement de catalogue en ce qu’il est basé sur l’instance par capacité.
    • Nous avons également ajouté un nouveau champ Capacité de remplacement dans le comportement de type d’utilisateur avancé qui fournit une version de données de cette fonctionnalité.
    • Ne peut échanger que des capacités avec la même classe CAbil de l’ancienne capacité. Par exemple, une capacité cible ne peut être échangée que contre une capacité cible.
    • La version de données de l’échange de capacités affectera également les capacités d’apprentissage des héros.

Passer la référence de structure dans l’interface graphique de déclenchement

  • Les fonctions et actions de déclenchement peuvent désormais définir des types d’enregistrement en tant que paramètres.
  • Les variables d’enregistrement peuvent désormais être transmises aux fonctions et actions en tant que paramètre par référence.
  • Les paramètres d’enregistrement peuvent être lus et modifiés. Les modifications affecteront la variable d’enregistrement en dehors de l’étendue de la fonction.

Nouvelles API de déclenchement: instance de table de données

  • Fonctionne de la même manière que les tables de données, sauf que vous pouvez avoir plusieurs instances, compter leurs valeurs et copier des valeurs entre les tables de données.
  • L’ancienne table de données est une table de données globale unique. L’ajout d’une version instanciée permettra aux concepteurs de mieux organiser leurs données d’exécution.

Remplacement des info-bulles des objets / capacités sur une base d’unité / objet

  • Nouveaux natifs: UnitSetInfoButtonTooltip, UnitClearInfoButtonTooltip
  • Cela permet aux utilisateurs de remplacer les info-bulles sur les boutons de commande.
  • L’action de déclenchement «set» attend trois paramètres: l’unité / l’élément en cours de modification, la clé de modification et le texte de l’info-bulle résultant.
  • La clé de modification accepte trois formats différents, permettant trois façons de personnaliser les info-bulles de commande:
    • Remplacer les info-bulles de commande via AbilCmd.
      • La clé serait le AbilCmd par exemple “Stimpack, 0”
    • Remplacer les info-bulles de commande via le lien du bouton
    • La clé serait l’identifiant du bouton, par exemple, Marine
    • Remplacer les info-bulles des éléments de l’unité elle-même
      • Dans ce cas, utilisez “@” comme clé.
  • Fonctionne même si le panneau de commande est remplacé pour afficher les panneaux de commande des autres unités.

Assistance Skillshot

  • StarCraft II est désormais compatible avec Skillshot!
  • Nouveau champ indicateur Launch Missile Effect: SearchFlags
    • Nouveau drapeau de recherche d’effet de missile de lancement: DynamicSearchArea
      • Cela permet la recherche de compétences. Sans cela, vous obtenez un missile normal.
    • Nouveau drapeau de recherche d’effet de missile de lancement: ArriveOnSearchHit
      • Configure si le missile est un «indiquez s’il frappe la compétence cible» ou une compétence perforante. Voir ci-dessous.
  • Nouveaux champs Launch Missile Effect:
    • SearchHitArriveEffect
      • Ne fonctionne que lorsque ArriveOnSearchHit est activé. Cet effet s’exécute lorsque le missile explose en touchant une cible.
      • Remarque: Cet effet sera exécuté au point de recherche final avant la mort du missile, pas au point de ciblage du missile. Cette fonctionnalité est similaire à celle d’un effet de finition.
    • SearchEffect
      • Le missile exécutera cet effet à chaque boucle de jeu, remplaçant le paramètre Hauteur dans la zone de recherche en fonction de la vitesse actuelle du missile. Essentiellement, cela ne laissera pas d’espace entre chaque recherche.
      • Remarque: La triche TVE affichera une hauteur par défaut incorrecte au lieu de la hauteur correcte de l’effet de recherche de remplacement.
    • SearchMaxCount
      • Indique le nombre maximal de recherches pendant toute la durée du voyage du missile, et non le nombre maximal de recherches de chaque recherche individuelle. Le missile cessera de chercher après avoir trouvé des cibles SearchMaxCount.
      • Lorsque SearchMaxCount est atteint et que ArriveOnSearchHit n’est pas défini, le missile continuera à se déplacer vers sa destination, mais n’exécutera plus de recherches de compétences.
      • Lorsque SearchMaxCount est atteint et ArriveOnSearchHit est défini, le missile explose et exécute SearchHitArriveEffect à son dernier point de recherche. Notez que ce n’est pas la cible du missile, car il n’aura pas atteint le point cible.
      • Si SearchMaxCount est égal à 0 et ArriveOnSearchHit est défini, le missile ne limitera pas le nombre maximal de recherches. Tant qu’un de ses effets de recherche trouve une cible, le missile explose et exécute SearchHitArriveEffect à son dernier point de recherche.

Système de héros amélioré

  • Nouvelle classe CUnit: CUnitHero
  • Cinq nouveaux champs (par rapport à CUnit):
    • Attribut principal:
      • Un lien de comportement unique qui est automatiquement appliqué / non appliqué lors de la création / transformation de l’unité.
      • Pas différent d’un champ de comportement normal. Cependant, en l’utilisant comme un champ unique, il peut être facilement lu via une fonction de catalogue pour déterminer l’attribut principal d’un héros.
    • MainAttributeDamageBonus
      • Ce champ détermine le bonus de dégâts d’attaque qu’une unité de héros reçoit par point MainAttribute.
    • AttributePointsInfoArray:
      • Définit les points d’attribut de départ et de mise à niveau d’un héros en fonction du niveau actuel du héros. Cela ne définira que les points d’attribut; il n’appliquera pas le comportement Attribut si le héros n’en a pas déjà un.
    • LearnInfoArray:
      • Cela utilise la même structure que CAbilLearn_LearnInfo. Si l’un des indices définit un lien de capacité, il remplacera les informations correspondantes de la capacité d’apprentissage sur le héros. En conséquence, vous n’aurez plus besoin de créer des capacités d’apprentissage distinctes pour différents héros.
      • Le bouton de commande des informations d’apprentissage peut également être généré automatiquement lorsque l’indicateur «Créer un bouton par défaut» est défini.
    • Exigences de niveau
      • Ce champ remplacera l’exigence technique de CAbilTrain lorsque la capacité est utilisée pour entraîner l’unité de héros actuelle et qu’il existe déjà plusieurs alias techniques de l’unité actuelle pour le joueur actuel.
  • Nouvel indicateur CAbilityRevive : icône d’alerte de remplacement
    • Lorsqu’un joueur fait revivre un héros avec une capacité CAbilRevive avec l’icône d’alerte prioritaire activée, la capacité définit l’icône d’alerte sur l’icône de CAbilRevive au lieu de l’icône de l’unité de héros.
  • De nouveaux indigènes ont ajouté:
    • TechTreeSetProduceCap
    • TechTreeGetProduceCap
      • Ces fonctions peuvent être appelées par des déclencheurs pour définir une limite technologique basée sur les unités, les améliorations, les capacités, les comportements ou les effets.
      • Peut également être utilisé pour personnaliser la limite d’entraînement des héros.
  • Points d’attribut de base et points d’attribut bonus
    • Les comportements d’attribut sur CHeroUnit ont maintenant deux valeurs de points différentes: Base et Bonus.
    • Les points d’attribut de départ et de nivellement d’un héros (configurés dans AttributePointsInfoArray ) compteront comme valeur de base tandis que les autres changements de points tels que les bonus de comportement seront comptés dans la valeur Bonus.
    • Dans le panneau d’informations sur l’unité, les points d’attribut de base seront affichés sous forme de nombre blanc tandis que les points d’attribut bonus seront affichés sous forme de nombre (+ X) vert.
    • Les bonus ajoutés par les points d’attributs de base ne sont plus affichés sous forme de nombres verts (+ X). Au lieu de cela, ils seront ajoutés aux champs de dégâts d’attaque de base / armure / vitesse d’arme.
    • Les attributs ajoutés par des buffs ou des objets seront toujours affichés sous forme de nombres verts (+ X).
    • Nouveaux indicateurs CEffectApplyBehavior:
      • SetAttributePoints: Lorsque cet indicateur est coché, l’effet définira des points d’attribut pour le comportement d’attribut.
      • SetAttributeBasePoints: Lorsque le drapeau est coché, il modifiera les points de base au lieu des points bonus.
  • Ajout d’un nouveau champ CabilTrain : IgnoreUnitCostRequirements
    • Une fois définie, la capacité du train ignorera les coûts unitaires tant que les exigences techniques seront satisfaites.
    • Cela peut être utilisé pour implémenter des mécanismes de jeu spéciaux comme «Votre premier héros est gratuit».
  • Améliorations du sous-menu Capacité d’apprentissage
    • Nouveau drapeau de capacité d’apprentissage: ClearSubmenuOnPointsSpent
      • Lorsqu’elle est définie, une unité utilisant cette capacité quitte automatiquement ses cartes de commande de sous-menu après avoir dépensé tous ses points de compétence.
    • Nouveau indicateur de capacité d’apprentissage: HideSubmenuOnLearnedAll
      • Une fois réglé, le bouton de sous-menu de capacité d’apprentissage sera caché après qu’une unité utilisant la capacité a appris toutes les capacités qu’elle peut apprendre.
    • Correction d’un problème où si tous les points étaient dépensés, le bouton de capacité d’apprentissage afficherait “Niveau requis:” en texte rouge même si l’unité avait déjà atteint le niveau requis.
    • Correction d’un problème où les joueurs pouvaient parfois utiliser la touche Maj pour contourner les restrictions de niveau sur la capacité d’apprentissage.
  • Ajout d’un nouvel état de comptage d’unités d’exigence: QueuedOrBetterOrRevivable
    • Lors du comptage des unités technologiques, cela inclura des héros revivifiants et revivifiables.
    • Ceci est très utile lors de la mise en œuvre des restrictions d’entraînement des héros. Par exemple, si vous avez la restriction «Vous ne pouvez pas entraîner plus de 3 héros», vous ne voulez probablement pas compter uniquement les héros vivants.
  • Niveau du héros et formule XP
    • Nouveau champ CBehaviorVeterancy: Niveaux
      • Définissez le niveau maximum d’un héros.
      • Ce champ est également évolutif, ce qui permet aux moddeurs de modifier les niveaux de capacité maximum lors de l’exécution.
      • Ce champ par défaut est 0, ce qui ramènera le système de niveaux à son fonctionnement antérieur.
    • Nouveaux champs CBehaviorVeterancy:
      • MinVeterancyXPBonusPerLevel
      • MinVeterancyXPPreviousValueFactor
      • MinVeterancyXPLevelFactor
      • Si la taille de VeterancyLevelArray est inférieure au nombre dans le champ Niveaux, le jeu générera automatiquement le «XP minimum» des niveaux supplémentaires en fonction de ces facteurs.
      • La formule utilisée est la suivante où X est le niveau et F (X) est le XP minimum du niveau:
        • F (X) = F (X-1) * MinVeterancyXPPreviousValueFactor + MinVeterancyXPLevelFactor * X + MinVeterancyXPBonusPerLevel
      • Ceci n’est utilisé que lorsque le niveau X est supérieur à la taille de VeterancyLevelArray. Sinon, il récupérera directement le XP minimum de la table VeterancyLevelArray.
  • Fraction de réception XP basée sur le type de cible
    • Nouveau champ CBehaviorVeterancy : XPReceiveFraction
      • Ce champ est un tableau de structure, qui permet aux utilisateurs de spécifier un filtre cible et une valeur de fraction cumulable pour chaque tableau.
      • À chaque fois qu’un héros reçoit de l’XP, le jeu vérifie les filtres cibles sur l’unité victime et applique la fraction XP si la victime correspond à l’un des filtres.
      • Combinés avec les accumulateurs, les utilisateurs pourront facilement créer des formules XP telles que «les unités invoquées accordent la moitié d’EXP» ou «les héros gagnent de l’XP réduit grâce aux creeps en fonction du niveau actuel du héros».
  • Ajout d’un nouveau validateur: CValidatorUnitCompareAbilSkillPoint
    • Vérifiez les points de compétence dépensés d’une unité, les points de compétence non dépensés, les points de compétence supplémentaires ou le total des points de compétence.

Améliorations du système d’articles et d’inventaire

  • Les systèmes d’objets sont vitaux pour les RPG, et nous sommes heureux de leur fournir un plus grand niveau de prise en charge de l’éditeur.
  • Prise en charge de la création d’objets
    • Les objets de l’inventaire d’une unité peuvent désormais être utilisés pour construire des structures.
    • Cette capacité d’objet peut être définie pour obliger le héros à maintenir un canal. Alternativement, les joueurs peuvent “se déformer” dans des bâtiments tels que les structures Protoss.
    • Ce type d’élément peut être utile pour créer des extensions. Le héros peut acheter un hôtel de ville de poche et le placer dans une nouvelle extension; le bâtiment se construirait alors automatiquement.
  • Afficher l’inventaire pour les autres joueurs
    • Nouvelle propriété CInventoryPanel : ShowForAllPlayers
      • Quand c’est vrai, les joueurs pourront sélectionner les unités des autres joueurs pour voir leurs inventaires. Cependant, ils ne pourront pas utiliser ces éléments.
  • Monter des articles dans l’inventaire
    • CCommandButton expose désormais sa propriété ButtonOtherUnit . Désormais, les utilisateurs pourront utiliser la propriété bind pour lier l’unité d’élément (l’élément lui-même, pas le support) à un cadre cible ou à d’autres cadres.
    • Grâce à cette fonctionnalité, les utilisateurs pourront lancer des capacités sur un élément de leur inventaire, soit pour le transférer, soit pour le mettre à niveau.
    • Grâce à cette fonctionnalité, les utilisateurs peuvent également double-cliquer sur les portails de ville pour se téléporter automatiquement vers votre hôtel de ville de plus haut niveau.
  • Panneau d’inventaire accessible à l’échelle mondiale
    • Les utilisateurs peuvent désormais remplacer la propriété Unité d’inventaire de CInventoryPanel afin d’afficher l’inventaire d’une unité qui n’est pas actuellement sélectionnée.
    • Les utilisateurs peuvent également utiliser des déclencheurs pour créer de nouveaux contrôles de boîte de dialogue d’inventaire. Cela prend en charge les opérateurs comme le contrôle de dialogue de carte de commande introduit dans Legacy of the Void.
    • Les utilisateurs peuvent régler l’unité en sélectionnant «Utiliser SetDialogItemUnit». La définition de cette valeur à zéro réinitialise l’unité à l’unité de tête sélectionnée.
  • Afficher l’inventaire de l’acheteur
    • Auparavant, StarCraft II avait un faible support pour les magasins d’articles neutres de style War3. Avant ce correctif, lorsque les utilisateurs cliquaient sur une unité commerciale, ils ne pouvaient pas voir l’inventaire de l’unité acheteuse.
    • Désormais, les magasins neutres afficheront l’inventaire de l’acheteur tant qu’ils ne disposent pas d’un inventaire lui-même et que le panneau d’inventaire n’est pas remplacé pour afficher l’inventaire d’une unité spécifique.
  • Charger des données sur CUnit
    • Ajout de données sur les frais à l’unité et aux articles afin que lors de la vente d’articles et d’unités, les données d’unité et d’article puissent définir leurs informations de stock par défaut (comme le démarrage du temps de recharge dans les magasins, les stocks maximum dans les magasins, etc.)
    • Une capacité CAbilTrain peut être signalée pour ignorer ces paramètres par défaut et utiliser les paramètres personnalisés dans la capacité elle-même.
      • Si le drapeau n’est pas coché et que la capacité a ses propres données, les deux instances de données de charge seront ajoutées ensemble.
  • Éléments de mise sous tension «réels»
    • Nouveau type d’élément: CItemAbilPowerUp
    • Les objets bonus peuvent désormais être implémentés comme de vrais objets au lieu d’avoir à imiter une unité.
    • CItemAbilPowerUp est hérité de CItemAbil. Les seules différences sont qu’il sera utilisé automatiquement lors de sa récupération, et il peut être récupéré même lorsque l’inventaire de l’unité est déjà plein.
    • CItemAbilPowerUp ne peut être utilisé que par des unités disposant d’un inventaire. L’unité doit également avoir le drapeau CanUseItem allumé .
    • Ces nouveaux objets bonus sont de vrais objets, ils respectent donc les événements d’inventaire et peuvent être utilisés dans le système de butin.
    • CItemAbilPowerUp testera si le lanceur de sorts peut utiliser la capacité de mise sous tension dans CItemAbilPowerUp. Si ce n’est pas le cas, il lancera un message d’erreur et ne fera pas passer le lanceur de sorts à l’objet.
    • Le drapeau KillAfterUse permet à l’élément d’être détruit après que le lanceur de sorts a utilisé la mise sous tension.
    • Une unité normale avec un inventaire mais sans le drapeau CanUseItem activé pourra récupérer des bonus et les porter à un héros.
  • Nouveau drapeau EAbilInventoryFlag : ItemDropOnDeath
    • Ce drapeau forcera une unité à abandonner tous ses objets à sa mort même si elle est réactivable. Cela peut être utile pour les unités normales avec la capacité de sac à dos WarCraft III.
  • Nouveau drapeau EAbilInventoryFlag : CanUseItem
    • Ce drapeau indique si les unités peuvent utiliser des objets. Il aide à créer des unités avec des inventaires de messagerie, celles qui peuvent transporter des articles mais ne pas les utiliser.
  • Nouvel indicateur EAbilInventoryFlag : CanApplyEquipBehavior
    • Ce drapeau indique si les unités peuvent bénéficier de buffs de statut d’objet, par exemple, +5 Force. Il aide également à créer des unités avec des inventaires de messagerie.
  • Nouveau drapeau CItemAbil: Transitoire
    • Lorsque ce drapeau est coché, la capacité de l’objet sera forcée d’être lancée comme transitoire, même si la capacité d’origine sur l’objet n’est pas une capacité transitoire.
  • Correction d’un problème où les inventaires essayaient toujours de ramasser des objets s’ils étaient détruits à l’approche.
  • Correction d’un problème où CAbilSpawn ne fonctionnait pas.
  • Correction d’un problème lors de la mise en gage d’un objet de votre inventaire à la distance maximale de pion qui pouvait vous faire perdre l’objet mais ne pas gagner de ressources.
  • Nouveaux sous-noms pour les événements d’acteurs Abil: PawnSource , PawnTarget .
    • Ceux-ci se déclencheront lorsque vous mettrez un objet en gage.
  • Nouveau champ CAbilInventory: exigences
    • Une fois définie, la capacité d’inventaire sera désactivée avant que ses exigences techniques ne soient satisfaites.
    • L’interface utilisateur d’inventaire sera également masquée avant que les exigences ne soient remplies.
  • Nouvel indicateur CValidatorUnitInventory : RequireEnabled
    • Lorsqu’elle est cochée, le validateur ne renverra e_CmdOK que si la capacité d’inventaire de ciblage est activée et répond à ses exigences techniques.
  • Pour répondre aux événements Player Use Effect, il existe une nouvelle API de déclenchement qui permet aux utilisateurs de capturer l’élément utilisé pour créer l’effet, s’il existe un élément, et son type d’élément.
  • Les objets de capacité peuvent désormais choisir d’utiliser leurs propres liens de récupération, remplaçant le lien de récupération hérité de la capacité.

Assistance boutique neutre / alliée

  • Les magasins neutres / alliés sont des bâtiments neutres / alliés avec lesquels les autres joueurs peuvent interagir à l’aide des capacités de CAbilInteract.
  • Pour toutes les capacités, le champ Tech Player a maintenant une option supplémentaire: Caster .
    • En définissant le champ Tech Player d’un CAbilTrain sur Caster, la capacité vérifie les exigences techniques du joueur qui a émis la commande.
    • Ceci est utile pour créer une capacité «vendre unité / objet de vente basé sur l’arbre technologique de l’acheteur».
  • Nouveau champ CabilTrain : AgentUnitValidator
    • Lorsqu’elle est définie, la capacité aura toujours besoin d’une unité d’agent pour lancer et vérifiera par rapport aux validateurs définis dans ce champ lors de la formation des unités.
    • Avec ce champ, les capacités «Boutique d’objets» peuvent désormais être facilement créées dans SC2.
      • Pour les boutiques d’articles, les utilisateurs voudront généralement que l’unité acheteuse de la boutique ait un inventaire pour pouvoir acheter des articles.
      • Auparavant, SC2 ne disposait pas de ce support, donc même si l’unité acheteuse n’avait pas d’inventaire, l’article était toujours créé.
      • Avec le champ AgentUnitValidator, les utilisateurs peuvent ajouter des validateurs comme «L’unité a un inventaire valide» et «L’inventaire n’est pas plein». Par conséquent, si l’unité d’agent n’a pas d’inventaire, la capacité lancerait simplement un message d’erreur et ne serait pas lancée.
  • Nouveau drapeau CAbilTrain : ChargeCasterPlayer
    • Normalement, les capacités de boutique neutres exigent que les joueurs acheteurs et vendeurs partagent les dépenses de ressources entre eux via le drapeau “Dépenses alliées”. Si ce n’est pas le cas, l’acheteur recevra le message d’erreur «Impossible de dépenser pour ce joueur».
    • Par défaut, les joueurs neutres partagent les coûts avec tous les joueurs. Mais si un utilisateur voulait créer une boutique alliée, une boutique où les joueurs alliés peuvent acheter des articles ou des unités, il ne voudrait probablement pas que ces joueurs partagent les dépenses. Sinon, les joueurs pourraient dépenser l’argent de leurs alliés.
    • Le nouveau drapeau, ChargeCasterPlayer, est conçu pour résoudre ce problème. Lorsque cette option est activée, le coût de l’article ou de l’unité vendue sera facturé au joueur qui a émis le bon de commande, même si l’acheteur et le vendeur ne partagent pas les dépenses.
    • S’il y a d’autres joueurs qui partagent les dépenses avec le joueur acheteur et que le joueur acheteur n’a pas suffisamment de ressources pour payer le coût, la capacité facturera toujours le coût à ces autres joueurs.
  • Nouvel indicateur CAbilInteract : AlwaysShowCommandCard
    • Lorsque ce drapeau est activé, une unité de magasin montrera sa carte de commande à tous les joueurs qui peuvent interagir avec elle (décidé par le champ Filtre cible de CAbilInteract), même si le joueur n’a pas d’unité d’agent valide près de la boutique.
    • Par conséquent, même si un joueur n’a pas d’agent à proximité du magasin, il pourra toujours prévisualiser ce que le magasin vend.
    • Cependant, ce joueur ne pourrait toujours pas utiliser la carte de commande s’il ne contrôle pas l’unité de magasin, par exemple, s’il n’a pas d’agent à proximité.
  • Correction d’un problème où les capacités d’interaction tentaient constamment d’acquérir une unité sans vérifier le champ ValidatorArray.

Système de suivi des unités de comportement

  • Nouveau type de comportement: BehaviorUnitTracker
    • Le comportement fonctionne comme une liste d’unités. Il peut stocker toutes les unités qui y sont ajoutées et possède des champs validateur et nombre max. Chaque fois qu’un membre de la liste ne correspond pas au validateur défini, il sera supprimé d’une liste.
    • Il existe également des indicateurs qui permettent aux utilisateurs de convertir le tracker en une liste globale ou une liste basée sur le lecteur, ce qui ne nécessite pas une instance de comportement pour fonctionner.
  • Nouvel accumulateur: CAccumulatorTrackedUnitCount
    • Permet aux utilisateurs d’utiliser des accumulateurs en fonction du nombre d’unités dans la liste donnée.
  • Nouveaux effets: CEffectAddTrackedUnit CEffectClearTrackedUnits, CEffectRemoveTrackedUnit
    • Permet aux utilisateurs d’ajouter / supprimer des unités d’une liste.
  • Nouvel effet: CEffectEnumTrackedUnits
    • Permet aux utilisateurs de parcourir la liste de suivi des unités et d’exécuter des effets sur chacun d’eux en fonction de filtres.
  • Nouveaux validateurs: CValidatorCompareTrackedUnitsCount, CValidatorIsUnitTracked
    • Peut être utilisé pour compter le nombre d’unités suivies via le comportement et vérifier si une unité est dans une liste de suivi donnée.
  • Le système de suivi est très utile lorsque vous essayez de conserver la correspondance «un à plusieurs» entre les unités.
    • Par exemple, il peut suivre une unité invocatrice jusqu’à ses unités invoquées.

Autres modifications du système de comportement

  • Alias ​​de pile de comportements
    • Cette fonctionnalité permet aux comportements de s’empiler en fonction d’un «identifiant de pile» au lieu d’un identifiant de comportement.
    • Par exemple, dans WC3, l’Archimage et divers creeps ont une version de Brilliance Aura. Ce sont deux buffs différents, et lorsque vous possédez ces deux types d’unités, vous ne voudrez peut-être pas que les unités environnantes reçoivent les deux ensembles d’aura de brillance. Dans ce cas, l’aura de la version héros doit toujours être priorisée.
    • Deux nouveaux champs CBehaviorBuff: StackAlias (chaîne) et StackAliasPriority (entier).
      • Si deux buffs du même StackAlias ​​sont appliqués à la même unité, ils partageront un nombre maximum, en priorisant le plus bas. Si leur nombre total dépasse le nombre maximum partagé, le jeu commencera à supprimer les piles, en commençant par le buff avec le StackAliasPriority le plus bas et ensuite la durée la plus courte. Cela se produira jusqu’à ce que le nombre total de piles corresponde au nombre maximal de piles partagées.
    • Nouvel événement d’acteur: BehaviorStackAlias
      • Permet aux utilisateurs de capturer les événements de comportement (On, Off, Damage Response, etc.) en fonction de StackAlias ​​du comportement au lieu de l’ID de comportement.
      • Il permet également de partager des acteurs entre des comportements avec les mêmes StackAliases, car vous voulez probablement que toutes les versions du buff Brilliance Aura partagent le même art.
    • Nouveau CEffectRemoveBehavior terrain: StackAlias
      • Cela permet aux utilisateurs de supprimer les buffs basés sur StackAlias.
    • Nouveau validateur: CValidatorUnitBehaviorStackAlias
      • Cela permet aux utilisateurs de compter les piles de comportements par StackAlias. Il comptera tous les comportements sur l’unité avec le StackAlias ​​donné et a la possibilité de ne compter que les comportements activés.
  • Prise en charge du texte flottant de réponse aux dommages de l’acteur
    • Lorsque CActorMsgBehavior déclenche un événement avec un sous-nom DamageHandled, l’utilisation des messages SetTextLocalized et SetText après l’événement définira désormais automatiquement le texte via la quantité de dégâts modifiée.
    • Les dégâts remplaceront le jeton ‘% AMOUNT%’ dans le texte cible.
    • Ceci est utile pour créer un texte flottant pour les dommages.
  • Meilleure prise en charge des événements d’acteur On / Off Comportement
    • Les événements de comportement On / Off définissent désormais les paramètres d’effet pour la dernière pile appliquée ou la dernière pile supprimée.
    • Ceci est utile pour configurer plus finement les acteurs du comportement. Auparavant, les utilisateurs n’étaient pas en mesure de référencer le lanceur d’un comportement sous des événements de comportement marche / arrêt.
  • Nouvel état de comportement: Cannot Die
    • Marque une unité comme «incapable de mourir» à moins que le comportement ne soit supprimé.
    • Bien que l’utilisation de réponses aux dommages puisse produire un effet similaire, les réponses aux décès ne peuvent empêcher la mort que par les dommages. Cet état de comportement empêche la mort pour une raison quelconque, par exemple une durée de vie définie sur 0.
    • Cet état fournit une alternative simple pour un système de prévention de la mort basé sur un déclencheur.
  • Nouvel état de comportement: supprimer le crédit de destruction
    • Empêche une unité d’accorder des crédits de destruction ou des crédits de ressource tués au joueur qui tue.
    • Utile pour créer des unités hallucinées.
  • Nouveau champ CBehaviorBuff : DeathType
    • Cela peut remplacer le type de mort d’une unité et ignorer le type de mort de l’effet de dégâts mortels.
    • Le type de mort «Supprimer» ne peut pas être remplacé de cette manière.
    • La valeur par défaut est “Inconnu”, ce qui signifie “ne pas remplacer”.
  • Nouveau type de mort: réincarnation
    • Cela empêche les unités de larguer du butin et des objets à leur mort.
  • Le validateur, CValidatorUnitCompareBehaviorCount et les effets, CEffectRemoveBehavior et CEffectTransferBehavior partagent désormais tous les champs de configuration détaillés suivants:
    • BehaviorCategories, BehaviorClass, BehaviorAlignment, ExcludeOriginPlayer, ExcludeCasterUnit, RequireOriginPlayer, RequireCasterUnit
  • Auparavant, ces validateurs / effets n’avaient qu’un champ CEffectBehavior, et ces nouveaux champs supplémentaires étaient exclusifs à CEffectBehavior.
  • Ces ajouts permettent aux utilisateurs de compter, supprimer et transférer des comportements avec plus de contrôle.
  • Par exemple, les utilisateurs peuvent désormais supprimer les piles de comportement qui ont été ajoutées par un joueur de unitcaster cible, etc.
  • Il est également utile dans la mise en œuvre de «dissipations intelligentes», telles que la suppression des buffs appliqués par les unités ennemies.
  • Nouveau champ CValidatorUnitCompareBehaviorCount, CEffectRemoveBehavior et CEffectTransferBehavior: correspond à tout
    • Détermine si l’effet / validateur sera exécuté si l’un des champs de configuration est rempli ou si tous les champs de configuration doivent être remplis.

Meilleur support de cadavre

  • Nouveau indicateur CEffectModifyUnit_ModifyFlags: Supprimer
    • Ce drapeau qui supprimera directement l’unité du jeu et détruira toute la portée de l’acteur de l’unité.
    • Ceci est ajouté car les utilisateurs ne sont pas en mesure d’utiliser l’effet “Supprimer” de CEffectDamage pour supprimer un cadavre.
  • Nouveau filtre unitaire: en décomposition
    • Une unité en décomposition est définie comme une unité actuellement sur le terrain et morte depuis un certain temps. Cela contraste avec celui qui a déjà été tué mais qui est toujours en train de tomber au sol et de générer un cadavre. En termes techniques, cela est vrai lorsque Death Time est actif et que Revive Delay est terminé.
    • Le but de ce filtre est que les capacités qui ciblent les cadavres ne fonctionnent pas sur les unités récemment décédées et qui sont toujours en train de générer un cadavre.
    • Si le temps de mort de l’unité a été réglé sur -1, la phase de désintégration sera ignorée. Par exemple, les héros de Warcraft III ne devraient jamais se décomposer.
  • Nouveau filtre unitaire: relevable
    • CEffectModifyUnit peut désormais être défini si un cadavre n’est pas évaluable .
    • Irraisonnable nous permet de marquer si un cadavre a déjà été utilisé.
      • Par exemple, alors qu’une goule mange un cadavre, le cadavre existe toujours, mais le moddeur peut ne pas vouloir qu’il soit réanimable ou élevé en tant que mort-vivant. Dans ce cas, le moddeur peut définir des capacités pour n’accepter que des cadavres soulevables et définir des cadavres sur Unraiseable pendant qu’il est mangé.
  • Nouveau drapeau: Autoriser le cadavre
    • Avec ce drapeau allumé, les capacités de transport pourront transporter des cadavres dans leur cargaison.

Type d’attaque, type de dégâts et système de type d’armure

  • Nouveau champ CWeapon: Type d’attaque
    • Les moddeurs peuvent changer les multiplicateurs de dégâts de chaque type d’attaque contre chaque type d’armure dans les données du jeu.
    • Le type d’attaque affectera tous les effets de dégâts dans l’ensemble de l’arborescence des armes, de sorte que les moddeurs pourront désormais modifier les multiplicateurs de dégâts au niveau de l’arme au lieu de passer par chaque entrée d’effet dans l’arbre des effets pour changer leurs facteurs de dégâts.
  • Nouveau champ CUnit: type d’armure
    • Le type d’armure décide des multiplicateurs de dégâts des armes utilisées contre les unités.
  • Nouveau validateur: CValidatorUnitArmor
    • Permet aux utilisateurs de vérifier le type d’armure d’une unité.
  • Nouveau champ CEffectDamage: Type de dommage
    • Les moddeurs peuvent changer les filtres cibles pour le type de dommages dans les données du jeu.
    • L’utilisation de filtres cibles sur les types de dommages permet aux utilisateurs de configurer tous les effets de dégâts et de dégâts AoE dans le jeu. Il peut également décider si certains effets de dégâts peuvent jamais endommager certaines cibles.
    • Par exemple, en filtrant simplement les cibles «alliées» dans chaque type de dommage, les utilisateurs peuvent facilement faire en sorte que toutes les armes du jeu n’éclaboussent plus leurs alliés. Cela est utile lors de la création d’un mod coopératif car il devrait être construit sur plusieurs autres mods, et l’arme AoE et les sorts de ces autres mods ont divers effets de feu amicaux.

Effet Miss Chance, blocage et déviation

  • La structure de réponse aux dommages comportementaux a maintenant été étendue pour gérer plus que de simples cas de réponse aux dommages.
  • Miss Chance
    • Nouveau drapeau CWeapon : NeverMiss
      • Par défaut, les armes conserveront leur ancien comportement.
    • Les modificateurs d’attaque peuvent également ajouter la propriété NeverMiss à une arborescence d’effets d’armes.
    • Si un arbre d’effet d’arme indique qu’une arme peut manquer, quand l’arme tire, il vérifie la chance manquante du côté de l’attaquant et du défenseur. Il indiquera ensuite si l’effet manquera en fonction des validateurs et des chances définis dans la structure de réponse.
    • Les unités terrestres attaquant des cibles sur des niveaux de falaise plus élevés peuvent également avoir une chance de manquer un bonus, qui peut être modifiée dans les données du jeu.
    • Si l’arbre d’effet d’une arme a été marqué comme «Manqué», l’arme n’exécutera pas de dégâts d’impact, ni aucun effet Orbe sur l’impact.
    • Lorsqu’une arme manque, elle envoie un événement Arme d’acteur avec «Manqué» comme sous-nom. De cette façon, les moddeurs peuvent décider s’ils veulent capturer cet événement pour créer “Miss!” texte flottant sur l’unité ou afficher un effet d’esquive.
  • Bloquer la chance
    • Nouveau champ CEffect : CanBeBlocked
      • Détermine si l’effet peut être bloqué. Par défaut, désactivez-le.
    • Lorsqu’un effet est exécuté, le jeu interroge la structure de réponse sur l’unité d’impact et vérifie sa chance de blocage et tous les validateurs.
    • S’il est bloqué, l’effet sera annulé et ne s’exécutera pas. L’effet enverra alors un événement d’effet d’acteur avec Bloqué comme sous-nom afin que les utilisateurs puissent définir les acteurs appropriés.
    • Cette fonctionnalité est utile pour créer des comportements de blocage des sorts.
  • Changement de chance
    • Nouvel indicateur CEffect: ValidateImpactDeflection
      • Détermine si l’effet peut être dévié. Par défaut, désactivez-le.
    • La déviation est presque identique à Block Chance, sauf que l’effet qui se serait produit sera dupliqué et renvoyé au lanceur de sorts.
    • L’effet dévié aura les propriétés de lanceur et de cible inversées et comptera comme un tir de l’unité cible d’origine vers l’unité de lanceur d’origine. Le paramètre de bonus de dégâts dans l’arbre des effets réfléchis sera toujours défini pour utiliser les bonus de dégâts du lanceur d’origine.
    • Une autre différence entre la déflexion et le blocage est que les arbres d’effets n’évalueront la déflexion qu’une fois chacun. Si un effet a passé la vérification de déflexion une fois, le reste de l’arborescence d’effets ne vérifiera pas à nouveau les chances de déviation, même s’il existe des effets suivants dans l’arborescence d’effets qui ont le drapeau ValidateImpactDeflection vérifié.

Changement du système de morphing de l’unité

  • Basculer Morph / Unmorph
    • Nouveau drapeau CAbilMorph: Toggle
    • Nouveau champ CAbilMorph : InforArrayUnmorph
      • Lorsque la bascule est activée, les capacités de morphing peuvent être utilisées pour basculer entre deux chaînes de type d’unité différentes.
    • Nouvel index de commande CAbilMorph : Unmorph .
      • Pour une capacité de morphing basculable, après que l’unité a déjà morphé, la capacité peut toujours recevoir une commande Unmorph, ce qui obligera l’unité à démarrer le processus de morphing défini dans le champ InforArrayUnmorph.
      • Dans la plupart des cas, le champ InforArrayUnmorph doit être défini de sorte que son type d’unité final soit son type d’unité à l’état normal. De cette façon, l’unité sera reconvertie à la normale avec la commande Unmorph.
    • Nouveau champ CabilMorph: ValidatorArrayUnmorph
      • Valide si une unité morphée peut utiliser la commande Unmorph.
    • Nouveau drapeau CabilMorph : AutoUnmorph
      • Détermine si l’unité transformée essaiera automatiquement de revenir en arrière lorsque cela sera possible.
    • Nouveaux champs CabilMorph: BehaviorOn / BehaviorOff
      • Lorsqu’elle est définie, la capacité applique le buff BehaviorOn à l’unité lorsque l’unité est dans son état Morphed; il appliquera le buff BehaviorOff lorsque l’unité est dans son état Normal. Ces deux champs ne fonctionneront que si la capacité de morphing est marquée comme «Toggle».
    • Même si une unité est directement créée comme type d’unité morphée, les capacités de morphing considéreront toujours l’unité comme ayant subi le processus de morphing. Ils appliqueront les comportements appropriés et lui permettront d’utiliser la commande Unmorph.
  • Morph Tech Count
    • Nouvel indicateur CAbilMorph : ProviderSourceUnitTech
      • Lorsque cette option est activée, CAbilMorph transmet le type d’unité de l’unité source à l’unité vers laquelle elle s’est transformée. L’unité finale héritera automatiquement du lien d’unité de l’unité source en tant qu’alias technique.
      • Cette propriété est héritée tout au long de la chaîne de morphing.
      • par exemple Mairie -> Donjon -> Château
      • Un château compterait à la fois comme un donjon et un hôtel de ville. Même un château créé directement compterait à la fois comme un donjon et un hôtel de ville, même s’il n’était pas réellement transformé non plus.
      • Pourquoi ne pas simplement ajouter l’hôtel de ville et le donjon à l’alias du château (en les ajoutant dans le champ Tech Alias ​​du château)? Nous utilisons cette route plus indirecte car ProviderSourceUnitTech ne prend effet que lorsque l’unité est dans son état Terminé. Ce n’est qu’alors qu’elle comptera comme unité source dans le décompte technologique. Si nous devions utiliser le champ TechAlias, l’alias existerait dans n’importe quel état, même lorsque l’unité se transforme (état InProgress). Dans ce cas, lorsque vous transformez un donjon en château, vous serez dans un état interstitiel gênant: parce que vous avez un donjon terminé et un château InProgress en même temps, le système de comptage technologique penserait que vous avez un donjon InProgress, qui est pas le cas.
  • Prise en charge de “Déplacer vers puis Morpher”
    • Nouveaux indicateurs CAbilMorph : RequireAcquiredTarget, RequireAcquiredTargetUnmorph
    • Nouveaux champs CAbilMorph: Range, TargetSorts
      • Lorsque ces champs sont définis, une unité recherche son rayon de diffusion automatique, essaie de trouver une cible dans la plage qui correspond au validateur, puis se déplace vers cette cible. L’unité commencera à se métamorphoser après avoir atteint l’unité cible. Le champ Plage indique la plage la plus élevée à partir de laquelle un lanceur peut commencer à se transformer.

Unités performantes en matière de ressources

  • Nouveau drapeau d’unité: NeverThink
    • Normalement, chaque unité du jeu vérifie le cheminement, le balayage ennemi, l’acquisition de capacités et bien d’autres vérifications logiques à chaque boucle de jeu (0,0625 seconde de jeu). Cet indicateur les libère de ces vérifications, ce qui pourrait aider à améliorer les performances dans les cartes personnalisées.Les unités NeverThink ne peuvent pas avoir de comportements et de capacités à l’exception des comportements de ressources.

Autres modifications des unités génériques

  • Vitesse maximale de l’unité
    • Nouveau champ CUnit: SpeedMaximum
      • Spécifie la vitesse maximale qu’une unité peut atteindre, même si elle reçoit des bonus de vitesse.
    • Nouveau champ Comportement: MoveSpeedBaseMaximumBonus
      • Utilisé pour changer la vitesse maximale d’une unité.
  • Nouveau type de mob CUnit: Warcraft
    • Le champ Mob d’ une unité a désormais la sélection de type de mob “Wacraft” .
    • Cela permet aux déclencheurs de différencier les unités Warcraft et les unités StarCraft.
  • Nouveaux champs CUnit: LifeRegenRateNight, EnergyRegenRateNight, ShieldRegenRateNight
    • Peut être utilisé pour permettre aux unités elfes de la nuit de se régénérer la nuit sans comportement pour chaque unité.
  • Nouveau champ CUnit: BuildTime
    • Un emplacement supplémentaire pour stocker un temps de génération sur les données d’unité, qui peut être utilisé pour configurer les temps de génération dans CAbilBuild, CAbilTrain et CAbilMorph.
    • Nouveaux indicateurs CAbilBuild et CAbilTrain: IgnoreUnitBuildTime
      • Si elle n’est pas cochée, le temps de construction d’une unité sera ajouté au temps de construction de la capacité.
    • Nouvel indicateur de tableau CAbilMorph pour chaque phase de chaque section: UseBuildTimeArray
      • Pour chaque phase avec ce drapeau défini, le temps de construction de l’unité sera ajouté à la durée de la phase respective.
  • Nouveau validateur: CValidatorUnitCompareAbilStage
    • Permet aux utilisateurs de valider le niveau de capacité d’un CAbilEffect.
    • Si le champ Capacité est défini sur Aucun, il validera le niveau de capacité de la capacité en cours de lancement. Cela signifie que les utilisateurs peuvent désormais vérifier si une unité canalise avec la capacité qu’elle lance.
  • Nouveaux filtres cibles:
    • Powerup : True lorsque la valeur du champ CUnit_PowerupEffect est valide.
    • PowerupOrItem: Un powerup ou un élément.
    • HeroUnit: unités avec un drapeau de héros. C’est différent de “Heroic”, qui est un attribut.
  • Nouveau champ CUnit: niveau de l’unité
    • Lorsqu’il est réglé sur> 0, si une unité est mise en surbrillance, son info-bulle affichera ce niveau sous le nom de l’unité.
    • Ce champ peut être utilisé pour cibler le tri ou valider. Il peut également être utilisé dans des accumulateurs.
  • Comportement du parent de l’addon
    • Nouveau champ CUnit: ParentBehaviorLink
      • Lorsqu’un module complémentaire est lié à un bâtiment parent, le comportement de ParentBehaviorLink sera appliqué au bâtiment parent. Le lanceur de ce comportement est l’addon, pas le bâtiment parent.
      • Cela permet au comportement ParentBehaviorLink de contrôler le bâtiment parent en fonction de l’état de l’addon.
      • Les capacités de morphing peuvent valider ce comportement pour lancer un message d’erreur lorsque le bâtiment parent reçoit une commande de levage pendant que l’addon attaché recherche.
  • CUnit_LifeDamageGain est désormais évolutif.
  • CValidatorUnitState est considérablement amélioré pour pouvoir vérifier jusqu’à 100 états d’unité différents, contre 1.
    • Par exemple: Inactif, Saut, Surligné, ArmorDisabled, Revivable, Dying, ArmySelect, etc.

Autres modifications du système de capacités

  • Boutons de génération automatique pour les capacités
    • Afin de permettre aux capacités d’être facilement appliquées à n’importe quelle unité, tous les boutons ont maintenant une propriété permettant aux moddeurs de définir leur position de bouton par défaut et leur ID de sous-menu sur la carte de commande.
    • Sur n’importe quelle capacité, les moddeurs peuvent définir si une commande de capacité donnée générera automatiquement des boutons de capacité de telle sorte que la capacité fonctionnera dès qu’elle sera appliquée à une unité. Les utilisateurs n’auront plus à définir manuellement ces boutons et icônes dans la carte de commande de l’unité.
  • API de déclenchement pour ajouter et supprimer des capacités sur les unités au moment de l’exécution
    • Nouvelles actions de l’API de déclenchement: capacité d’ajout d’unité, capacité de suppression d’unité
  • Configuration de niveau plus simple
    • La plupart des types de capacités ont désormais un champ Niveaux qui peut directement définir le niveau maximum d’une capacité. Combinés avec le système d’accumulateurs, les moddeurs n’auront plus besoin d’implémenter 1000 ensembles de capacités pour les capacités qui ont 1000 niveaux.
    • Le champ Niveaux peut également être mis à niveau afin que les moddeurs puissent modifier les niveaux de capacité maximum lors de l’exécution.
    • Lorsque le champ Niveaux est défini sur 0, la valeur par défaut, le système de niveau de capacité revient à la fonctionnalité précédente.
  • Nouveau champ CCharge TimeDelay
    • Fonctionne pour tous les frais de capacité / objet / comportement.
    • Fonctionne de manière similaire à TimeStart, mais il n’affecte que la première charge de la capacité, de l’objet ou du comportement.
    • Lorsque TimeDelay = 0, le système de charge fonctionnera comme auparavant.
    • Lorsque TimeDelay> 0, TimeStart sera ignoré.
    • Lorsque la capacité commence à stocker des charges, le temps de régénération de la première charge utilise la valeur TimeDelay, et toutes les charges suivantes utilisent la valeur TimeUse.
    • Nouveau drapeau: IgnoreTimeDelay .
      • Cela permet aux capacités d’ignorer le délai défini dans l’unité et d’utiliser à la place les propres paramètres de la capacité.
  • Le remplacement de catalogue prend désormais en charge les capacités des objets .
    • Le remplacement n’est pas basé sur le propriétaire de l’article mais plutôt sur l’utilisateur de l’article.
    • Cela permet à différents joueurs d’utiliser le même objet avec des effets différents.
      • Par exemple, les moddeurs pourront créer différentes unités lorsqu’un objet est utilisé en fonction de la race du joueur.
  • SEffectParamsShared a maintenant un membre m_level, qui enregistre le niveau de la capacité qui a démarré l’arborescence des effets.
    • Les arbres d’effets peuvent l’utiliser comme un instantané pour obtenir des données de niveau connexes de sorte que même si la capacité change de niveau après le début de l’arbre d’effets, l’arbre d’effets se souviendra toujours de l’ancien niveau de la capacité.
    • Les accumulateurs peuvent également utiliser ces données comme données de capacité.
  • CEffectCreateUnit_SpawnUnit peut maintenant être configuré pour créer différents types d’unités en fonction du niveau de l’arborescence d’effets.
  • CAbilBheavior peut désormais définir différents validateurs pour l’activation et la désactivation automatiques au lieu d’avoir un seul valideur pour la diffusion automatique.
  • Nouvelles catégories de capacité et catégories de comportement
    • Ajout de diverses nouvelles capacités et catégories de buffs.
    • Les comportements de buff peuvent désormais activer / désactiver les capacités par catégorie.
  • Nouveau champ pour toutes les capacités: comportement de l’État
    • Ce champ crée un comportement lors de la création d’une capacité. Il le détruira lorsque la capacité sera détruite, et il la désactivera / l’activera lorsque la capacité sera désactivée / activée.

Autres modifications du système de dommages

  • Nouveau champ CEffectDamage : DamageInheritEffect
    • L’effet défini dans ce champ sera déclenché une fois les dommages principaux effectués.
    • Il héritera du montant des dégâts du dommage principal.
  • Nouveau drapeau CEffectDamage : NoZeroDamageInherit
    • Cela indique à DamageInheritEffect de ne pas se déclencher lorsque les dégâts sont 0.
  • Nouveau CEffectDamage: Fraction
    • Une fraction supplémentaire qui sera multipliée par toutes les autres fractions existantes.
    • Ce champ prend en charge les accumulateurs, donc les moddeurs pourront créer des formules basées sur cette fraction.

Pré-effet d’arme

  • Nouveau champ d’armes: PreEffect .
    • Il s’agit d’une version d’effet de PreEffectBehavior, qui prend en charge la validation sur l’unité cible pour décider si le PreEffect doit être exécuté.

Prise en charge des interruptions homogènes

  • Nouveau drapeau CAbilEffect: HomogenousInterrupt
    • Lorsque ce drapeau est activé, les utilisateurs verront le comportement suivant: Si un joueur sélectionne une unité qui canalise un sort et lui ordonne de se déplacer, il arrêtera le canal et se déplacera. Si le joueur sélectionne plus d’une unité et qu’au moins l’une d’entre elles ne canalise pas un sort, seules les unités qui ne canalisent pas se déplaceront immédiatement. Dans ce scénario, l’ordre de déplacement serait mis en file d’attente pour toutes les unités canalisant actuellement des sorts.
    • Lorsque le drapeau est éteint, les joueurs observeront l’ancien comportement du SC2.

Modification du système de construction de bâtiments

  • Ouvrier cède la place pendant la construction
    • Lorsque le HomogenousInterrupt et Interrompre drapeau sont à la fois dans un CAbilBuild qui ne provoque pas ses travailleurs à disparaître dans le bâtiment lors de la construction, puis dans la phase de construction, les travailleurs ne bloquera pas le placement d’autres bâtiments lorsque vous essayez de les placer. Au lieu de cela, ils partiront et reviendront ensuite pour trouver un meilleur endroit pour poursuivre la construction.
  • Mise à l’échelle automatique du temps d’animation de la naissance
    • CAbilBuildable enverra désormais les événements Démarrer, Annuler, Terminer, Pause et Reprendre au système d’acteur.
    • Les événements de début contiendront également les informations de temps de construction du bâtiment. Les acteurs définiront automatiquement l’animation de génération sur la même durée que la durée de génération. De cette façon, les bâtiments termineront leurs animations de naissance dès qu’ils auront terminé la construction.

Prise en charge du curseur AOE au sol d’attaque

  • Cette fonctionnalité comprend les deux modifications de code suivantes:
    • CActorMsgAbil contient désormais des informations cmd afin que les moddeurs puissent désormais utiliser CActorTermAbilCmd pour répondre à CActorMsgAbil. De cette façon, le système d’acteur sera en mesure de dire si le mode curseur est déclenché par une attaque normale ou un guide au sol d’attaque via cmdIndex.
    • CAbilAttack transmet désormais DisplayEffect au système d’acteur comme effet de curseur. De cette façon, le système d’acteurs pourra filtrer les cibles et mettre à l’échelle le curseur AOE.
      • Si une unité possède plusieurs armes, le cusor utilisera le premier DisplayEffect valide des armes pour décider de son visuel.

Système d’entretien

  • Nouveau champ de course: UpkeepTax
    • Cela permet aux moddeurs de personnaliser le taux de revenu des ressources du joueur en fonction de leur nombre de nourriture.

Construire sur des rampes

  • Auparavant, les joueurs ne pouvaient jamais construire de bâtiments sur des rampes dans SC2, car il était codé en dur.
  • Nouveau champ de données de type de terrain: rampe sans construction
    • Permet aux utilisateurs de sélectionner si les rampes seront toujours peintes comme non constructibles.
    • Lorsqu’ils sont désactivés, les joueurs pourront construire sur des rampes.

Améliorations des capacités de récolte

  • Nouveau champ CAbilHarvest: ResourceAmountCapacity
    • Valeur par défaut de 0.
    • Chaque fois qu’un travailleur termine la récolte des ressources, il compare la quantité de ressources qu’il transporte avec la valeur de ResourceAmountCapacity. Si le montant transporté est inférieur à ResourceAmountCapacity, il essaiera de continuer à récolter les ressources jusqu’à ce qu’il atteigne le montant attendu, sauf s’il est mis en file d’attente pour une autre commande ou ordonné de s’éloigner.
    • Même si un travailleur n’a pas atteint la quantité attendue de ressources minées, le joueur peut toujours lui ordonner de s’arrêter et de rendre les ressources minées qu’il transporte actuellement.
    • Si un travailleur reçoit l’ordre de faire une autre tâche pendant son exploitation, il essaiera au moins une fois avant d’effectuer cette tâche.
    • Si un travailleur essaie de continuer à récolter mais que la ressource cible est morte, il essaiera de trouver une autre ressource à proximité.
  • Nouveau drapeau CabilHavrest: aucun extrait
    • Lorsque cette option est activée, la capacité de récolte ne supprime pas les ressources des nœuds de ressources, mais gagne tout de même des ressources.

Améliorations du système de l’heure du jour

  • Nouvel événement déclencheur pour capturer les changements jour / nuit: Game Day / Night State Change
  • Nouvelle fonction de déclenchement pour obtenir / définir l’heure de la journée par une valeur fixe: définir l’heure du jour (secondes) , l’ heure actuelle (secondes)
  • Nouvelle fonction de déclenchement pour saisir l’état jour / nuit actuel : État jour / nuit actuel
  • Nouveau validateur pour valider l’heure de la journée: Game Compare Time Of Day

Prise en charge des acteurs pour la suppression des ressources

  • Message du nouvel acteur: UnitResourceDrop
    • Cet événement d’acteur est publié chaque fois qu’une unité dépose une ressource dans un hôtel de ville (ou dans n’importe quelle unité de dépose de ressource).
    • Le champ du nom de la source est l’acteur d’unité de l’unité qui a supprimé la ressource.
    • Le champ de sous-nom correspond au type de ressource. Les moddeurs pourront différencier les gouttes en fonction du sous-nom.
    • L’utilisation des messages SetTextLocalized et SetText après l’événement définira automatiquement le texte cible sur le montant de la suppression des ressources.
    • Le montant réel de dépôt remplacera le jeton% AMOUNT% dans le texte cible.

Création de multiples du même acteur

  • Nouveau type d’acteur: CActorBatch
    • Cela résout un problème où les utilisateurs ne pouvaient pas auparavant répéter la création d’un acteur.
    • Cet acteur possède un champ Nombre, qui peut être utilisé pour créer plusieurs du même type d’acteur enfant.
    • Par défaut, l’acteur créé utilise le relèvement de CActorBatch.

Prise en charge du bouclage forcé du système d’acteurs

  • Le système Actor prend désormais en charge le bouclage forcé de la lecture d’une animation.
  • Nouveau drapeau EAnimsFlags : ForceLooping
    • Si cela et le drapeau PlayForever sont définis, le système lira une variation choisie au hasard de l’animation à chaque fois que l’animation se termine, que l’animation soit définie pour être bouclée ou non.
    • Priorité d’indicateur: AssetDrivenLooping> ForceLooping> NonLooping
  • Nouveau EAnimBracketStartFlag: ContentForceLooping
    • Tant que cet indicateur est activé et que l’indicateur ContentPlayOnce est désactivé, le système lit une variation choisie au hasard de l’animation chaque fois que l’animation de contenu se termine jusqu’à ce qu’un message AnimBracketStop soit envoyé, que l’animation de contenu soit définie pour être bouclée ou non.

Amélioration tactique de l’IA

  • Nouveau champ CUnit: AIExecuteAbilTactical
    • Cela exécutera la fonction de crochet tactique de l’IA avec le motif: Unit, galaxyFuncName, groupe scanné, inAbility, inItem.
  • Correction d’une incohérence entre les données tactiques et la fonction tactique où la fonction tactique ne fonctionnait pas sur les joueurs IA hostiles et neutres.

AI Terrazine et prise en charge des ressources personnalisées

  • Amélioration de l’IA Synapse afin que l’IA puisse comprendre la terrazine et les ressources personnalisées en tant que types de ressources. L’IA pourra désormais également les récolter.

AI Altar Revive

  • L’IA peut désormais interpréter un ordre de Stock comme un ordre de héros Revive s’il ne peut pas trouver un moyen d’entraîner un type particulier de héros.
  • Le script AI doit enregistrer les bâtiments Reviver via AIReqAddSpecialMaker () tout comme enregistrer les capacités de Nuke.
  • Lorsque l’IA essaie de stocker un héros et ne trouve pas la capacité de train, elle recherche la liste de relance et essaie de faire revivre un héros avec le même type.

Remplacement du stock AI

  • L’IA respecte désormais le remplacement de catalogue lorsqu’elle essaie de construire ou de s’entraîner.
  • Par exemple, si un Marine est remplacé par un Zélote par un joueur IA, le joueur AI reconnaîtra correctement la capacité Marine du train comme étant la capacité Zélote du train, et il pourra émettre l’ordre de train correctement.
  • Cela affecte également la fusion, la construction, la recherche, le train et le train de chaîne.
  • Nouveau drapeau d’unité: AIPreplacedForceBully
    • Lorsqu’il est pré-placé sur une carte, cet appareil sera considéré comme un intimidateur remplaçable par l’ordinateur même si l’ordinateur ne peut pas actuellement le remplacer. Cela permet aux ordinateurs gagnés via l’action de déclenchement Remplacer la capacité d’être utilisés par l’ordinateur pour remplacer les intimidateurs.

Meilleur convertisseur de carte hérité

  • Amélioration du convertisseur de cartes héritées. Lors de la conversion de cartes WarCraft III, il ne convertira plus seulement le maillage du terrain, mais aussi la texture du terrain et les unités, doodads, destructibles, caméras et régions pré-placés.

Système de butin piloté par les données

  • Nouveaux natifs ajoutés à Galaxy: UnitLootDropUnit, UnitLootDropPoint
    • Les moddeurs peuvent configurer leur butin dans l’éditeur de données de butin puis utiliser ces natifs pour générer du butin. Le butin peut être un objet, une unité, un effet ou même un objet aléatoire de niveau X / de classes d’objets X, etc.
  • Nouveaux natifs: UnitLootLastCreated, UnitLootLastCreatedGroup
    • Les moddeurs peuvent les utiliser pour récupérer les objets de butin qui viennent d’être générés via UnitLootDropUnit ou UnitLootDropPoint.
  • Nouvel indicateur d’élément: IncludeInLootItemPool
    • Lorsqu’elle est cochée, un élément sera inclus dans le pool de sélection aléatoire de CLootItem. Les moddeurs peuvent ainsi marquer les objets comme «non capables d’être lâchés au hasard».
  • CLootItem.ClassArray est désormais évolutif et les moddeurs pourront utiliser des déclencheurs pour randomiser la création d’éléments de différentes classes.

Ctrl Order Modifier

  • Le modificateur est désactivé par défaut. Utilisez l’action de déclenchement, UISetCommandAllowed , pour l’activer et la désactiver.
  • Lorsque ce modificateur est activé: lorsque vous maintenez la touche Ctrl enfoncée lors de l’émission d’une commande, la commande ne sera envoyée qu’aux unités du sous-groupe actuellement en surbrillance au lieu de toutes les unités sélectionnées. Par exemple, supposons qu’un joueur sélectionne un Marine et un Zélote, en s’assurant que seul le Marine est mis en surbrillance. S’il émet ensuite un ordre de déplacement avec un clic droit tout en maintenant la touche Ctrl enfoncée, seul le Marine recevrait l’ordre de se déplacer.

Autres modifications des propriétés du cadre de l’interface utilisateur

  • Ajout d’une propriété à CUnitFrame: UseSelectionLeader
    • Donne à l’interface utilisateur la possibilité de saisir l’unité de tête actuelle de la sélection actuelle (première unité du sous-groupe actif).
    • Lorsqu’elle est cochée, CUnitFrame définira automatiquement LocalObservedSelectionLeaderUnit () comme unité. Il mettra également à jour sa propriété UnitTag afin qu’il puisse effectuer une liaison de propriété à d’autres cadres.
    • Lorsqu’elle est cochée, CUnitFrame ignorera toutes les liaisons de propriété qui lient UnitTag à d’autres cadres car elle ne doit refléter que le leader de la sélection.
    • Lorsqu’elle n’est pas cochée, CUnitFrame se comportera comme auparavant.
  • Correction d’un problème où CUnitButton ne mettait pas à jour sa propriété UnitTag.

Autres modifications de l’API de déclenchement

  • Étape de capacité
    • CAbilRally peut désormais lancer un événement de phase de déclenchement: placez lorsque le rallye est placé.
  • Handicap du joueur
    • Le handicap du joueur peut désormais dépasser la limite de 100% précédente.
  • Gestion de magazine d’unité
    • Nouvelle API Galaxy: UnitMagazineAssign
      • Ajoute une unité existante à un magasin d’unités.
    • Nouvelle API Galaxy: UnitMagazineRemove
      • Supprime une unité existante d’un magasin d’unités.
  • Nouvelle API d’état du lecteur : AlwaysShowUnitTooltip
    • Lorsque cet état est activé, les unités de ce joueur afficheront toujours des info-bulles en surbrillance même si elles ne sont pas marquées comme info-bulle surlignée.
  • Nouvelle API d’état du joueur: GivesBounty
    • Activé par défaut pour tous les joueurs. Lorsque cette option est activée, les unités des joueurs récompenseront leurs ressources de destruction aux joueurs ennemis qui ont tué ces unités.
  • Nouvelle API d’acteur: ActorScopeMoveTo
    • Déplace une portée d’acteur aux repères d’un acteur donné.
  • Nouvel événement déclencheur: événement vital dépensé par le joueur
    • Capture quand un joueur a dépensé vital.
    • Peut comprendre quel élément vital a été dépensé et combien a été dépensé dans la réponse à l’événement déclencheur.

Autres modifications de l’éditeur de données

  • L’éditeur de données peut désormais localiser la ligne XML correcte lorsqu’un utilisateur sélectionne une entrée de données par défaut.
  • Les liens d’exigence (const CTechRequirementsGraph *) respectent désormais le remplacement des jetons XML.
    • Avec cela, la plupart des capacités peuvent désormais utiliser des jetons pour indiquer que leur lien d’exigence est le même identifiant de la capacité elle-même.
  • CBehaviorLinkArraynow respecte désormais le remplacement de jeton XML.
  • Les accessoires d’animation (CAnimProps) dans les messages des acteurs respectent désormais le remplacement des jetons XML.
  • Essayer d’effacer un accessoire TintColor inexistant sur un acteur ne lancera plus de message d’erreur.
  • CActorQuad dispose désormais de drapeaux pour lui permettre de s’étirer automatiquement en fonction de ses positions de lancement et d’impact.
  • Nouveau type de tri cible: CTargetSortValidator
    • Trie les cibles selon qu’elles respectent les validateurs donnés.
  • Nouvel indicateur de commande d’ordre: Attaquer une fois
    • Lors de l’émission d’un ordre d’attaque, il est désormais autorisé d’émettre un ordre “d’attaque unique” avec des drapeaux de commande d’ordre.
    • L’ action de déclenchement Order Set Flags peut être utilisée pour définir cet indicateur.
  • Les champs CEffectOffset peuvent désormais être mis à niveau avec les opérations Ajouter, Soustraire, Multiplier et Diviser, fonctionnant comme un vecteur 3D. Auparavant, seul Set était disponible.
  • Nouvelle cinétique: CKineticDistance
    • Projette l’unité cible d’une position de départ à une distance donnée dans la direction de la position d’origine d’un paramètre cinétique.
  • Nouveau champ CWeapon: DisplayName
    • Utilisé pour remplacer le nom de l’arme dans l’info-bulle.
  • Nouveau indicateur CEffectModifyUnit: StartingVitals
    • Règle la vie, l’énergie et les boucliers d’une unité sur ses points vitaux de départ.
  • Nouveau indicateur CEffectModifyUnit : SetVitals
    • Définit directement les signes vitaux d’une unité.
  • Effets de guérison pour CActorActon
    • CEffectHeal peut désormais fournir des messages ActionParticipantsMessage et ActionCommenceMessage pour CActorAction. Cela permet aux effets de soins de configurer les actions des acteurs.
    • Correction d’un problème où CEffectHeal ne pouvait pas déclencher son sous-nom d’action d’effet d’arrêt au bon moment.
  • Nouveau drapeau CValidatorUnitOrderCValidatorUnitOrder : CheckStateOnly
    • Lorsqu’elle est cochée, ce validateur n’évaluera que si la commande de capacité est désactivée pour l’unité, peu importe si la commande peut être exécutée pour des raisons comme «pas assez de mana».
  • Nouvel indicateur CEffectModifyUnit: ResourceDrop .
    • Lorsqu’elle est cochée, l’unité d’impact abandonne instantanément la ressource qu’elle transporte actuellement sans avoir besoin de se rendre dans un hôtel de ville. Le joueur propriétaire recevra la ressource.
  • Nouveau drapeau CEffectEnumArea : UnCreep
    • Lorsque cette option est activée, l’effet de recherche exclut Creeps dans son rayon de recherche.
  • API Unit Random Seed:
    • Nouvelle API de déclenchement pour définir, obtenir ou réinitialiser la graine aléatoire d’une unité.
    • La graine aléatoire d’une unité détermine le nom aléatoire d’une unité, ses variations, etc.
    • Ceci est utile lorsque vous souhaitez créer une copie exacte d’une unité.
  • Correction d’un problème avec CEffectSwitch où il retournait parfois un mauvais message d’erreur.
  • Nouveau drapeau pour les capacités Train: copier le pourcentage de vie
    • Détermine si l’unité formée hériterait du pourcentage de vie de l’unité d’entraînement.
  • Nouveau drapeau pour les capacités Train: Contourner la restriction alimentaire
    • Permet de contourner les restrictions alimentaires.
  • Nouvel indicateur de capacité de création de placement: Smart Cast
    • Détermine si la capacité peut être cliquée avec le bouton droit de la souris sur le lancer intelligent.
  • Nouveau drapeau pour les capacités d’effet: Acquérir un passager externe
    • Permet d’acquérir des unités à l’intérieur d’un transport.
  • Correction d’un problème où le validateur de portée d’armes d’unité échouait toujours lorsqu’une unité était contrôlée par l’esprit.
  • Nouveau drapeau d’effet Créer un guérisseur: continuer lorsqu’il est plein
    • Détermine si l’effet Créer un guérisseur se poursuivra si le vital soigné est plein.
    • Par défaut, désactivé.
  • Correction d’un problème où les effets de création d’unité créaient directement des unités à un point de ralliement au lieu de les déplacer vers le point de rassemblement si le champ Unité de ralliement était défini.
  • Nouveau champ Set Effect: RecycleCount
    • Permet à leurs effets enfants d’être exécutés à plusieurs reprises jusqu’à ce qu’ils atteignent le nombre de recyclages.
  • Nouveau drapeau pour les capacités d’effet: Annuler la réinitialisation de la diffusion automatique
    • Détermine si l’état de lancement automatique de la capacité sera réinitialisé lorsque le joueur annule manuellement la canalisation des capacités.
  • Champ de validation du nouveau niveau d’ancienneté: résultat
    • Vérifie si une unité a atteint le niveau de héros maximum.
  • Correction d’un problème où les alertes de réanimation ne pointaient pas correctement vers les unités ravivées ni ne jouaient le bon VO.
  • Nouveau drapeau Set Effect: Set Source
    • Définissez l’unité / le point source de ses effets enfants comme étant le point / l’unité cible de l’unité / point cible actuel.
  • Ajout d’une zone de recherche à la boîte de dialogue Liste des commandes de capacités dans l’éditeur de données.

Correctifs pour les courses personnalisées

  • Le menu déroulant des races dans les lobbies du jeu répertorie désormais correctement les races personnalisées définies dans la carte au lieu d’afficher toujours Terran, Zerg et Protoss.
  • Veuillez noter que cette modification n’affecte pas les modules d’extension pour l’instant, il n’y a actuellement aucun moyen d’ajouter des courses personnalisées dans les listes déroulantes des courses via un module d’extension.
  • Correction d’un problème où les cartes avec des races personnalisées pouvaient se bloquer en raison d’une fonction d’habillage de la console.

Prise en charge des noms d’équipe personnalisés

  • L’éditeur SC2 prend désormais en charge les noms d’équipe personnalisés.
  • Les noms d’équipe personnalisés peuvent être définis différemment en fonction des différents modes de jeu.
  • Pour personnaliser les noms des équipes, accédez à Map / Mod-> Game Variants.

Développer la balise de texte “d time /”

  • Ajout de cinq nouveaux types de temps à la balise de texte «temps» pour afficher différents temps de jeu.
  • Lorsque vous passez ces noms de type au lieu d’un nombre direct, la balise de texte affichera le temps de jeu correspondant.
  • Exemples:
    • Texte de saisie
      • Heure fixe: “d time =” 9125 “/>
      • Heure du jeu: “d time =” GameTime “/>
      • Temps de mission: “d time =” MissionTime “/>
      • AI Time: “d time =” AITime “/>
      • Date et heure: “d time =” DateTime “/>
      • Heure du jour: “d time =” TimeOfDay “/>
    • Texte affiché
      • Temps fixe: 9125 secondes
      • Durée du jeu: 11:50
      • Temps de mission: 11:50
      • Temps AI: 11:50
      • Date et heure: 2020: 06: 12: 12: 12: 23
      • Heure du jour: 22:06:34

Autres modifications des propriétés du cadre de l’interface utilisateur

  • Nouvelles propriétés CHeroFrame: HeroTag, Skill Point
    • Expose l’étiquette d’unité du héros et les points de compétence non dépensés.
    • Les moddeurs peuvent utiliser ces propriétés pour personnaliser leurs propres cadres de héros.

Modifications diverses

  • Augmentation du nombre maximal de feuillages dans l’éditeur Terrian à 10 par cellule.
  • Correction d’un problème où une erreur de texte rouge s’affichait lorsque vous tentiez de faire revivre une unité décédée pendant une évolution.
  • Nouveau champ dans les données GameUI: supprimer les skins en relecture
    • Cela permet au WCS Game Heart de supprimer les skins dans les replays.

CORRECTIFS DE BUG

  • Correction d’un problème où la première vague d’attaque pouvait rester bloquée pendant la mission de campagne Legacy of the Void: Whispers of Oblivion.
  • Correction d’un problème où les batteries de bouclier n’obéissaient pas aux commandes d’arrêt sur les structures non défensives lorsque la lancer automatique était activée.
  • Le portrait du Command Center sur le skin de la console Terran Remastered est désormais correctement centré.
  • Correction d’un problème où certains gribouillis d’eau clignotaient parfois au-dessus de l’eau.