Since the amount of data I've datamined is quite big. I'll do it by steps.
The code above, contains only the new natives.
Highlights
Generic Handles
Automation
Pathing Functions
Hotkey Events
Lots of new unit functions
//--------------------------------------------------------------------------------------------------// Contents//--------------------------------------------------------------------------------------------------// - About Types// - Automation// - Effect Historyconstintc_animBracketStartFlagFullMatch=(1<<5);constintc_animBracketStartFlagNoMismatchQueryProps=(1<<6);constintc_animBracketStartFlagDontResetOnUnhide=(1<<7);constintc_animFlagDontResetOnUnhide=(1<<5);constintc_animFlagNoMismatchQueryProps=(1<<6);constintc_animFlagVariationMatch=(1<<7);constintc_animationOffsetStart=0;constintc_animationOffsetEnd=1;nativevoidAnimLengthQueryByName(actora,stringanimName,boolscaledTime);nativevoidAnimLengthQueryByProps(actora,stringanimProps);nativegenerichandleAnimLengthQueryLastCreated();nativevoidAnimLengthQueryWait();nativefixedAnimLengthSync(generichandleh);nativefixedAnimLengthRemainingSync(generichandleh);nativevoidAnimWait(actora,stringanimName,fixedoffset,intoffsetType);//--------------------------------------------------------------------------------------------------// Automation//--------------------------------------------------------------------------------------------------nativestringAutomationLuaGlobalGetAsString(stringname);//--------------------------------------------------------------------------------------------------// Bank//--------------------------------------------------------------------------------------------------nativetextBankSizeAsText(stringname,intplayer);nativetextBankSectionSizeAsText(bankb,stringsection);nativetextBankKeySizeAsText(bankb,stringsection,stringkey);//--------------------------------------------------------------------------------------------------// Camera//--------------------------------------------------------------------------------------------------constintc_cameraValueFalloffStartNear=13;constintc_cameraValueFalloffEndNear=14;nativefixedCameraGetDistance(intplayer);nativeunitgroupCameraFollowUnitGroupGet(intplayer);// Toggle the forced follow state. If off, it will defer to the user option.//nativevoidCameraForceFollowUnitGroup(intplayer,boolforced);//--------------------------------------------------------------------------------------------------// Campaign// // Game initialization and configuration associated with standard campaign games//--------------------------------------------------------------------------------------------------nativevoidCampaignProgressEnableCampaignSaves(playergroupplayers,boolinDisable);// Blizzard maps only//--------------------------------------------------------------------------------------------------// Catalogs////--------------------------------------------------------------------------------------------------nativeintCatalogFieldValueGetFlagsAsInt(intcatalog,stringentry,stringfieldPath,intplayer);nativeboolCatalogFieldValueModify(intcatalog,stringentry,stringfieldPath,intplayer,stringvalue,intoperation);nativeboolCatalogReferenceModify(stringreference,intplayer,stringvalue,intoperation);nativevoidConversationDataLineSetPlayers(stringconvId,stringlineId,playergroupplayers);nativevoidConversationDataLineResetPlayers(stringconvId,stringlineId);nativevoidConversationDataLineHideForObservers(stringconvId,stringlineId,boolhide);// ConversationDataGetSpeaker returns the character id for the speaker of the given line, if any.nativestringConversationDataGetSpeaker(stringconvLine);//--------------------------------------------------------------------------------------------------// Data Table// - Data tables provide named storage for any script type.// Table access may be either global or thread-local.//--------------------------------------------------------------------------------------------------constintc_dataTypeGenericHandle=15;// - c_dataTypeGenericHandlenativevoidDataTableSetGenericHandle(boolglobal,stringname,generichandleval);nativegenerichandleDataTableGetGenericHandle(boolglobal,stringname);//--------------------------------------------------------------------------------------------------// Dialogs//--------------------------------------------------------------------------------------------------nativevoidDialogSetPositionRelativeToUnitWithAnchor(intdialog,unitinUnit,stringinAttachment,intanchor,intoffsetX,intoffsetY);nativevoidDialogSetRenderPriority(intdialog,intrenderPriority);constintc_triggerControlTypeCommandPanel=23;constintc_triggerControlTypeHeroCutscene=24;constintc_triggerControlTypeCountdownLabel=25;constintc_triggerControlTypeUnitStatusLabel=26;constintc_triggerControlTypeScoreValueFrame=27;constintc_triggerControlPropertyAnimIndex=68;// intconstintc_triggerControlPropertyUseAspectUncorrection=69;// boolconstintc_triggerControlPropertyHandle=70;// stringconstintc_triggerControlPropertyBorderColor=71;// colorconstintc_triggerControlPropertyFillColor=72;// colorconstintc_triggerControlPropertySubmenu=73;// stringconstintc_triggerControlPropertyUnitGroup=74;// unitgroupconstintc_triggerControlPropertyPlayerId=75;// intconstintc_triggerControlPropertyScoreValueLink=76;// stringconstintc_triggerControlPropertyStateIndex=77;// intconstintc_triggerImageTypeCircular=6;nativevoidDialogControlSetPropertyAsUnitGroup(intcontrol,intproperty,playergroupplayers,unitgroupvalue);nativeunitgroupDialogControlGetPropertyAsUnitGroup(intcontrol,intproperty,intplayer);nativevoidDialogControlSendAnimationEvent(intcontrol,playergroupplayers,stringeventName);nativevoidDialogControlSetAnimationSpeed(intcontrol,playergroupplayers,stringanimationName,fixedspeed);nativevoidDialogControlSetAnimationTime(intcontrol,playergroupplayers,stringanimationName,fixedspeed);nativevoidDialogControlAdvanceAnimation(intcontrol,playergroupplayers,stringanimationName,fixedspeed);nativevoidDialogControlRequestFocus(intcontrol,playergroupplayers);//--------------------------------------------------------------------------------------------------// Effect History//--------------------------------------------------------------------------------------------------nativeintEffectHistoryCount(effecthistoryinHistory);constintc_effectHistoryEffectRoot=0;constintc_effectHistoryEffectCurrent=1;nativestringEffectHistoryGetAbil(effecthistoryinHistory,intinIndex);nativefixedEffectHistoryGetAmountFixed(effecthistoryinHistory,intinIndex,intinAmount,boolinTotal);nativeintEffectHistoryGetAmountInt(effecthistoryinHistory,intinIndex,intinAmount,boolinTotal);nativestringEffectHistoryGetEffect(effecthistoryinHistory,intinIndex,intinEffect);nativefixedEffectHistoryGetTime(effecthistoryinHistory,intinIndex);nativeintEffectHistoryGetType(effecthistoryinHistory,intinIndex);nativeunitEffectHistoryGetUnitByLocation(effecthistoryinHistory,intinIndex,intinLocation);nativestringEffectHistoryGetWeapon(effecthistoryinHistory,intinIndex);//--------------------------------------------------------------------------------------------------// Environment//--------------------------------------------------------------------------------------------------// ShrubnativeboolInShrub(pointinPos);//--------------------------------------------------------------------------------------------------// Game//--------------------------------------------------------------------------------------------------constintc_cmdNotEnoughFood=12;nativestringGameMapPath();// deprecatednativevoidGameAddChargeRegen(stringinCharge,fixedinVal);nativevoidGameAddChargeRegenRemaining(stringinCharge,fixedinVal);nativevoidGameAddChargeRegenFull(stringinCharge,fixedinVal);nativefixedGameGetChargeRegenFull(stringinCharge,booladjustmentOnly);nativeintGameTestConfigType();nativeboolGameIsMatchmade();nativeboolGameIsRanked();nativeboolGameIsCompetitive();nativeboolGameIsPractice();nativeboolGameIsCooperative();nativeboolGameAreHeroDuplicatesAllowed();nativevoidKickFromGame(playergroupinPlayerGroup);nativevoidGameSetPauseable(boolpauseable);nativevoidMinimapPingPossibleEnemyStartLocations(fixedduration,stringinModelLink,colorc);//--------------------------------------------------------------------------------------------------// Misc//--------------------------------------------------------------------------------------------------nativevoidStartProfileRun(textname);nativevoidStopProfileRun();nativevoidWaitForProfilerLoggingToEnd();//--------------------------------------------------------------------------------------------------// Path//--------------------------------------------------------------------------------------------------nativevoidPathSetSourceUnit(intinPathId,unitinUnit);nativeunitPathGetSourceUnit(intinPathId);nativevoidPathSetStepModel(intinPathId,intinLocation,stringinModel);nativestringPathGetStepModel(intinPathId,intinLocation);nativevoidPathSetStepModelScale(intinPathId,intinLocation,fixedinScale);nativefixedPathGetStepModelScale(intinPathId,intinLocation);nativevoidPathSetStepMidpoint(intinPathId,intinLocation,fixedinMidpoint);nativefixedPathGetStepMidpoint(intinPathId,intinLocation);nativevoidPathClearWayPoints(intinPathId);nativevoidPathAddWayPoint(intinPathId,pointinWayPoint);nativevoidPathSetMinimumLinearDistance(intinPathId,fixedinDistance);// As the crow fliesnativefixedPathGetMinimumLinearDistance(intinPathId);// As the crow fliesnativevoidPathSetMinimumTravelDistance(intinPathId,fixedinDistance);nativefixedPathGetMinimumTravelDistance(intinPathId);nativevoidPathSetMinimumStepCount(intinPathId,intinStepCount);nativeintPathGetMinimumStepCount(intinPathId);nativeintPingCreateWithPlayerId(playergroupplayers,stringmodelLink,pointposition,colorintColor,fixedduration,intplayer);nativeintPingCreateFromData(playergroupplayers,stringpingLink,pointposition);nativevoidPingSetObserver(intp,boolisObserver);nativeintEventPingOption();//--------------------------------------------------------------------------------------------------// Hero Talent Tree//--------------------------------------------------------------------------------------------------nativestringTalentTreeGetHeroTalentLink(intinPlayer,intinIndex);nativeboolTalentTreeCanSelectHeroTalentTree(intinPlayer,intinTalentTreeIndex);nativevoidTalentTreeSetSelectedHeroTalentTree(intinPlayer,intinTalentTreeIndex);nativeintTalentTreeGetSelectedHeroTalentTree(intinPlayer,intinTier);nativeintTalentTreeGetSelectedHeroTalentTreeColumn(intinPlayer,intinTier);nativevoidTalentTreeClearTier(intinPlayer,intinTier);nativeboolTalentTreeAllowed(intinPlayer,intinTalentTreeIndex);nativevoidSetTalentTierEnabled(intinTier,boolinEnabled);nativevoidSetTalentUpgradeRequired(boolinRequired);nativevoidSetTalentTreeHeroLevel(intinPlayer,intinLevel);nativevoidSetTalentsEnabled(boolinRequired);nativevoidSetTalentTreeSelectionPanelDismissAllowed(boolinAllowed);nativevoidSetTalentTreeSelectionPanelAutoShow(boolinAutoShow);nativevoidSetTalentTreePauseGameWhenSelectionPanelShown(boolinPauseGame);nativevoidTriggerAddEventHeroTalentTreeSelected(triggert,intplayer);nativevoidTriggerAddEventHeroTalentTreeSelectionPanelShown(triggert,intplayer);nativevoidTriggerAddEventHeroTalentTreeSelectionPanelHidden(triggert,intplayer);nativevoidHelpPanelAddMessage(playergroupplayers,textspeakerText,textsubtitleText,stringmodelLink,soundlinksoundId);//--------------------------------------------------------------------------------------------------// Hero Leader Panel//--------------------------------------------------------------------------------------------------nativevoidSetHeroLeaderPanelEnabled(boolinRequired);nativestringPlayerHero(intinPlayer);nativestringPlayerSkin(intinPlayer);nativestringPlayerMount(intinPlayer);nativestringPlayerArtifact(intinPlayer,intinArtifactIndex);nativeintPlayerArtifactRank(intinPlayer,intinArtifactIndex);nativestringPlayerCommander(intinPlayer);nativeintPlayerCommanderLevel(intinPlayer);nativevoidPlayerSetToDLighting(intinPlayer,stringinLight);nativeboolPlayerAIControlAllowed(intplayer);nativevoidPlayerSetAllowAIControl(intplayer,boolallow);nativeboolPlayerIsUnderAIControl(intplayer);nativevoidPlayerSetUnderAIControl(intplayer,boolaiControlled);nativeboolPlayerHasReward(intinPlayer,stringinReward);nativevoidPlayerAddTalent(intinPlayer,stringinTalent);nativevoidPlayerRemoveTalent(intinPlayer,stringinTalent);nativeboolPlayerHasTalent(intinPlayer,stringinTalent);// Unlike RegionPlayableMapSet, this does not affect pathing.// Passing a null region will reset to global playable bounds.nativevoidPlayerSetBounds(intinPlayer,regioninRegion);constintc_playerStateCameraFollow=18;// Read-onlynativevoidPlayerSetRace(intinPlayer,stringinRace);nativevoidPlayerSetHero(intinPlayer,stringinHero);nativevoidPlayerSetSkin(intinPlayer,stringinSkin);nativevoidPlayerSetMount(intinPlayer,stringinMount);nativevoidPlayerSetCommander(intinPlayer,stringinCommander);nativevoidPlayerSetCommanderLevel(intinPlayer,intinCommanderLevel);nativevoidPlayerSetDeathTimer(intinPlayer,timerinTimer);// PlayerApplySkin may be used to apply multiple skin replacements simultaneously.// These are not automatically removed when applying new ones like PlayerSetSkin does.nativevoidPlayerApplySkin(intinPlayer,stringinSkin,boolapply);nativestringPlayerGetHotkeyProfile(intinPlayer);nativevoidTriggerAddEventPlayerJoin(triggerinTrigger,intplayer);nativevoidTriggerAddEventPlayerEffectUsedFromScope(triggert,intplayer,stringinScope);nativestringEventPlayerEffectUsedSourceBehavior();nativevoidSetScoreTimer(timerinTimer);//--------------------------------------------------------------------------------------------------// Points//--------------------------------------------------------------------------------------------------nativefixedDistanceSquaredBetweenPoints(pointp1,pointp2);nativepointPointInterpolate(pointsource,pointdest,fixedfraction);nativepointMidPoint(pointsource,pointdest);//--------------------------------------------------------------------------------------------------// Strings//--------------------------------------------------------------------------------------------------nativeintStringCompare(strings1,strings2,boolcaseSens);// - Use c_textExpressionTokenMain as the token code to define the main expression text// dynamically, rather than looking up from externalized text. In this case the string id// is arbitrary.//conststringc_textExpressionTokenMain="(main)";//--------------------------------------------------------------------------------------------------// Text Tags//--------------------------------------------------------------------------------------------------nativevoidTextTagSetGravity(intinTag,fixedinGravity);//--------------------------------------------------------------------------------------------------// Triggers////--------------------------------------------------------------------------------------------------constintc_triggerThreadFlagAI=1;// Thread is an AI thread.nativevoidTriggerCurrentTriggerThreadSetFlags(intf,boolon);// sets/clears flags given on the current thread// - Arbitrary data may be associated with the event via data tables. This works using special// value names for event parameters, which can be determined using TriggerEventParamName.//// 1) To set parameter values, store them in the local data table using DataTableSet*// with names from TriggerEventParamName. This must be done before calling TriggerSendEvent.//// 2) To access values when responding to the event, simply call DataTableGet* on the local// table using the same name from TriggerEventParamName.//nativestringTriggerEventParamName(stringeventName,stringparamName);// Trigger Debuggingconstintc_tdFilterFlagObservers=0;constintc_tdFilterFlagParticipants=1;nativevoidTriggerDebugOutputEnable(boolinEnable);nativevoidTriggerDebugSetTypeFilter(inttype,intfilter,boolenabled);//--------------------------------------------------------------------------------------------------// Units//--------------------------------------------------------------------------------------------------nativetextUnitGetName(unitinUnit);nativepointUnitGetGoalPosition(unitinUnit);constintc_unitStateResistant=33;constintc_unitStateSilenced=34;constintc_unitStateDazed=35;nativevoidUnitModifyCooldown(unitinUnit,stringinCooldown,fixedinVal,intinOperation);nativevoidUnitClearCooldowns(unitinUnit,boolinReset);nativeeffecthistoryUnitEffectHistory(unitinUnit,intinMaxCount);nativevoidUnitAbilitySpendExplicit(unitinUnit,abilcmdinAbilCmd,intinLocation,fixedinVitalsFactor,fixedinResourcesFactor,fixedinChargesFactor,fixedinCooldownFactor);// Ability command statesconstintc_cmdStateRecharging=(1<<8);constintc_cmdStateHideCharges=(1<<18);constintc_cmdStateHighlighted=(1<<19);nativeunitgroupUnitConjoinedGroup(unitinUnit,stringinConjoinedBehavior);nativefixedUnitGetDamageDealtTime(unitinUnit);nativefixedUnitGetDamageTakenTime(unitinUnit);// Behavior categoriesconstintc_unitBehaviorFlagCloak=3;constintc_unitBehaviorFlagInvulnerable=4;constintc_unitBehaviorFlagSlow=5;constintc_unitBehaviorFlagFast=6;constintc_unitBehaviorFlagStun=7;constintc_unitBehaviorFlagReveal=8;constintc_unitBehaviorFlagUser1=9;constintc_unitBehaviorFlagUser2=10;constintc_unitBehaviorFlagUser3=11;constintc_unitBehaviorFlagUser4=12;constintc_unitBehaviorFlagUser5=13;constintc_unitBehaviorFlagUser6=14;constintc_unitBehaviorFlagUser7=15;constintc_unitBehaviorFlagUser8=16;constintc_unitBehaviorFlagUser9=17;constintc_unitBehaviorFlagUser10=18;constintc_unitBehaviorFlagUser11=19;constintc_unitBehaviorFlagUser12=20;constintc_unitBehaviorFlagUser13=21;constintc_unitBehaviorFlagUser14=22;constintc_unitBehaviorFlagUser15=23;nativeboolUnitHasBehavior2(unitinUnit,stringinBehavior);nativefixedUnitBehaviorDamageModifyRemaining(unitinUnit,stringinBehavior);nativefixedUnitBehaviorDamageModifyLimit(unitinUnit,stringinBehavior);nativeboolUnitOrderIsAcquired(unitinUnit,intinIndex);constintc_unitInventorySlotContainer=65;// The value to use for inSlot when calling UnitInventoryMove to move an item to a top-level container provided by CAbilInventory directly.nativevoidUnitWeaponSetPeriodRemaining(unitinUnit,intinIndex,fixedinRemaining);nativeboolUnitInRangeAndAbleToAttackTarget(unitinUnit,unitinTarget);// Unit experiencenativefixedUnitXPGetCurrentXP(unitinUnit,stringinVeterancyBehavior);nativevoidUnitXPAddXP(unitinUnit,stringinVeterancyBehavior,fixedinXP);nativevoidUnitXPSetCurrentXP(unitinUnit,stringinVeterancyBehavior,fixedinXP);nativeintUnitXPGetXPForLevel(unitinUnit,stringinVeterancyBehavior,intinLevel);nativevoidUnitXPSetXPForLevel(unitinUnit,stringinVeterancyBehavior,intinLevel,intinXp);nativeintUnitXPGetCurrentLevel(unitinUnit,stringinVeterancyBehavior);nativevoidUnitXPSetCurrentLevel(unitinUnit,stringinVeterancyBehavior,intinLevel);nativeintUnitXPGetNumLevels(unitinUnit,stringinVeterancyBehavior);nativestringUnitTypeGetGenderCode(stringinUnitType);nativeboolUnitPathableToPoint(unitu,pointinTarget,fixedinRange,fixedinMaxDistance);nativeboolUnitPathableToUnit(unitu,unitinTarget,fixedinRange,fixedinMaxDistance);// Unit Vital// - The EUnitVital constants are in Game.galaxyconstintc_unitVitalAny=-1;nativevoidTriggerAddEventUnitDamageAbsorbed(triggerinTrigger,unitrefinUnit,stringinBehavior);nativevoidTriggerAddEventUnitHealed(triggerinTrigger,unitrefinUnit,intinHealType,stringinEffect);nativefixedEventUnitDamageAttempted();nativefixedEventUnitDamageAttemptedVitals();nativefixedEventUnitDamageBehaviorShield();nativefixedEventUnitDamageVitalsLeeched(intinVital);nativeintEventUnitDamageKillXP();// - c_unitEventHealednativeunitEventUnitHealLaunchUnit();nativeintEventUnitHealLaunchPlayer();nativeintEventUnitHealVital();nativefixedEventUnitHealAmount();nativestringEventUnitHealEffect();nativeunitEventUnitAbilityOtherUnit();nativevoidTriggerAddEventUnitBehaviorChangeFromCategory(triggert,unitrefu,intinCategory,intinChangeType);nativeunitEventUnitVictimUnit();nativeunitEventUnitItemUsed();nativestringEventUnitEffectUsed();// Map TagsnativestringPickedExclusiveMapTag();// UInativevoidUISetHotkeyProfile(playergroupplayers,stringprofileName);nativetextUIHotKeyString(inthotKey,intcount,boolabbreviate,booladdTags);nativevoidUISetGameMenuItemShortcut(playergroupinPlayers,intinMenuItemType,textinShortcut);nativevoidUIShowStandardMenu(playergroupinPlayers);nativevoidUISetHotkeyAllowed(playergroupplayers,inthotkey,boolallow);nativevoidUIMessageLogPanelSetVisible(playergroupinPlayers,boolinVisible);nativevoidUISetTargetingOrder(playergroupinPlayers,unitgroupinUnits,orderinOrder,boolinSticky);nativevoidTriggerAddEventHotkeyPressed(triggert,intplayer,inthotkey,booldown);nativevoidTriggerAddEventResourceRequest(triggert,intplayer);nativevoidTriggerAddEventResourceTrade(triggert,intplayer,intrecipientPlayer);nativevoidTriggerAddEventCommandError(triggert,intplayer,interror,abilcmdinAbilCmd);nativeintEventResourceRequestAmount(intresourceIndex);nativeintEventResourceTradeRecipient();nativeintEventResourceTradeAmount(intresourceIndex);nativeintEventCommandErrorValue();nativeabilcmdEventCommandErrorAbilCmd();//--------------------------------------------------------------------------------------------------// Visibility//--------------------------------------------------------------------------------------------------// these need to match the values in VisionUI.hconstintc_fillTypeFogged=0;constintc_fillTypeMasked=1;constintc_fillTypeHidden=2;constintc_fillTypeUnexplored=3;// Note: Alpha values are in percent (0-100)//nativefixedVisGetFoWAlpha(intplayer);nativevoidVisSetFoWAlpha(intplayer,fixedalpha);nativevoidVisResetFoWAlpha(intplayer);nativevoidVisFillArea(intplayer,regionarea,intfillType,boolcheckCliffLevel);
I see a lot of cool stuff in there but nothing really mind-blowing. A lot of conveniences like being able to modify a catalog value instead of set it.
New unit flags: Dazed, Silenced.
Can hide charges on button flags.
Can show recharging. I guess this is for when you have a charge of an ability, it will show the cooldown of when the next charge is acquired.
I think what stands out is the mixture of Heroes of the Storm and LotV settings. It's been asked a lot whether SC2 and HotS will share the exact same engine, and hence opening up the opportunity for a shared arcade (albeit with a potentially colossal download).
Those new dialog types, have me wondering, how will a command panel dialog work? Also i love the new UI events that are getting added, especially that trade resource one. Means that i can apply a tax to their trades now. Mwahahahahahha
I see a lot of cool stuff in there but nothing really mind-blowing. A lot of conveniences like being able to modify a catalog value instead of set it.
New unit flags: Dazed, Silenced.
Can hide charges on button flags.
Can show recharging. I guess this is for when you have a charge of an ability, it will show the cooldown of when the next charge is acquired.
I think what stands out is the mixture of Heroes of the Storm and LotV settings. It's been asked a lot whether SC2 and HotS will share the exact same engine, and hence opening up the opportunity for a shared arcade (albeit with a potentially colossal download).
Well, the trigger editor won't change much.
The key features are in the Data Editor. Specialy something called "Wizards". They are something like premade GUIs for making certain set of data objects through simpler parameters. Wizards can be created and designed on the editor, saved, reused and shared for others to use. I'm still gathering data on them to fill the missing holes.
I think the key feature in the natives is Automation and GenericHandle even though not much has been done on them yet.
There is one rather key thing in the trigger editor that is changing, but I'll admit, it is mostly for advanced triggers and allowing better design in general. That is the parameterization for generic signals
One simple example of the usage of this parameterization is Heroes of the Storm is panning the camera from script. You can associate the point you panned to and send the generic signal. Any trigger with this generic event can get the point that was panned to.
What it really makes possible is for us to make our own trigger events. Right now, say you wanted to expand upon "Unit Behavior Changes" to include what effect applied the behavior, or perhaps what ability the behavior came from. Right now, that can be done, in a very convoluted way. With this change, it can be made very streamlined.
Since the amount of data I've datamined is quite big. I'll do it by steps.
The code above, contains only the new natives.
Highlights
More natives found from hacking:
AutomationMapNameGet AutomationComputerNameGet AutomationBuildNumberGet
all the game natives (extracted from the executable):
I see a lot of cool stuff in there but nothing really mind-blowing. A lot of conveniences like being able to modify a catalog value instead of set it.
New unit flags: Dazed, Silenced.
Can hide charges on button flags.
Can show recharging. I guess this is for when you have a charge of an ability, it will show the cooldown of when the next charge is acquired.
I think what stands out is the mixture of Heroes of the Storm and LotV settings. It's been asked a lot whether SC2 and HotS will share the exact same engine, and hence opening up the opportunity for a shared arcade (albeit with a potentially colossal download).
Looks like you can stop a game from being pausable. Will be great for games like mafia, and probably tons of others with trolly players.
Those new dialog types, have me wondering, how will a command panel dialog work? Also i love the new UI events that are getting added, especially that trade resource one. Means that i can apply a tax to their trades now. Mwahahahahahha
Still alive and kicking, just busy.
My guide to the trigger editor (still a work in progress)
Well, the trigger editor won't change much.
The key features are in the Data Editor. Specialy something called "Wizards". They are something like premade GUIs for making certain set of data objects through simpler parameters. Wizards can be created and designed on the editor, saved, reused and shared for others to use. I'm still gathering data on them to fill the missing holes.
I think the key feature in the natives is Automation and GenericHandle even though not much has been done on them yet.
There is one rather key thing in the trigger editor that is changing, but I'll admit, it is mostly for advanced triggers and allowing better design in general. That is the parameterization for generic signals
One simple example of the usage of this parameterization is Heroes of the Storm is panning the camera from script. You can associate the point you panned to and send the generic signal. Any trigger with this generic event can get the point that was panned to.
What it really makes possible is for us to make our own trigger events. Right now, say you wanted to expand upon "Unit Behavior Changes" to include what effect applied the behavior, or perhaps what ability the behavior came from. Right now, that can be done, in a very convoluted way. With this change, it can be made very streamlined.
Did you manage to datamine some new models, portraits, etc., some dude did it with HotS several months before the game came out?