1

» WarCraft 3 / Релиз Warcraft 3: Reforged

Читы работают, когда карта запущена из редактора.
Изменения в Common.j (последнее обновление беты + релиз)
	// Новое
    constant originframetype        ORIGIN_FRAME_SIMPLE_UI_PARENT           = ConvertOriginFrameType(18)
    constant originframetype        ORIGIN_FRAME_PORTRAIT_HP_TEXT           = ConvertOriginFrameType(19)
    constant originframetype        ORIGIN_FRAME_PORTRAIT_MANA_TEXT         = ConvertOriginFrameType(20)
    constant originframetype        ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR        = ConvertOriginFrameType(21)
    constant originframetype        ORIGIN_FRAME_UNIT_PANEL_BUFF_BAR_LABEL  = ConvertOriginFrameType(22)

    constant native MathRound takes real r returns integer
    native SetCinematicAudio takes boolean cinematicAudio returns nothing
    native BlzStartUnitAbilityCooldown takes unit whichUnit, integer abilCode, real cooldown returns nothing
    native BlzGetEventIsAttack takes nothing returns boolean
    native BlzSetUnitFacingEx takes unit whichUnit, real facingAngle returns nothing
Загруженные файлы
1

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

Раньше все вариации "обычных" варлоков имели одну иконку.
(По путям и описанию видно)
Загруженные файлы
1

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

Изменения Common.j
type
type minimapicon extends handle
type commandbuttoneffect extends handle
Map Setup API
native SetEnemyStartLocPrioCount takes integer whichStartLoc, integer prioSlotCount returns nothing
native SetEnemyStartLocPrio takes integer whichStartLoc, integer prioSlotIndex, integer otherStartLocIndex, startlocprio priority returns nothing
Native trigger interface
constant native ParseTags takes string taggedString returns string
EVENT_COMMAND_BUTTON_CLICK
native TriggerRegisterCommandEvent takes trigger whichTrigger, integer whichAbility, string order returns event
native TriggerRegisterUpgradeCommandEvent takes trigger whichTrigger, integer whichUpgrade returns event
Player API
constant native GetPlayerHandicapReviveTime takes player whichPlayer returns real
constant native GetPlayerHandicapDamage takes player whichPlayer returns real
constant native SetPlayerHandicapReviveTime takes player whichPlayer, real handicap returns nothing
constant native SetPlayerHandicapDamage takes player whichPlayer, real handicap returns nothing
Game API
native SetMaxCheckpointSaves takes integer maxCheckpointSaves returns nothing
native SaveGameCheckpoint takes string saveFileName, boolean showWindow returns nothing
Visual API
native SetPortraitLight takes string portraitDNCFile returns nothing
native CreateMinimapIconOnUnit takes unit whichUnit, integer red, integer green, integer blue, string pingPath, fogstate fogVisibility returns minimapicon
native CreateMinimapIconAtLoc takes location where, integer red, integer green, integer blue, string pingPath, fogstate fogVisibility returns minimapicon
native CreateMinimapIcon takes real x, real y, integer red, integer green, integer blue, string pingPath, fogstate fogVisibility returns minimapicon
native SkinManagerGetLocalPath takes string key returns string
native DestroyMinimapIcon takes minimapicon pingId returns nothing
native SetMinimapIconVisible takes minimapicon whichMinimapIcon, boolean visible returns nothing
native SetMinimapIconOrphanDestroy takes minimapicon whichMinimapIcon, boolean doDestroy returns nothing
Camera API
native BlzCameraSetupSetLabel takes camerasetup whichSetup, string label returns nothing
native BlzCameraSetupGetLabel takes camerasetup whichSetup returns string
native CameraSetFocalDistance takes real distance returns nothing
native CameraSetDepthOfFieldScale takes real scale returns nothing
Sound API
native SetSoundFacialAnimationLabel takes sound soundHandle, string animationLabel returns boolean
native SetSoundFacialAnimationGroupLabel takes sound soundHandle, string groupLabel returns boolean
native SetSoundFacialAnimationSetFilepath takes sound soundHandle, string animationSetFilepath returns boolean

//Subtitle support that is attached to the soundHandle rather than as disperate data with the legacy UI
native SetDialogueSpeakerNameKey takes sound soundHandle, string speakerName returns boolean
native GetDialogueSpeakerNameKey takes sound soundHandle returns string
native SetDialogueTextKey takes sound soundHandle, string dialogueText returns boolean
native GetDialogueTextKey takes sound soundHandle returns string
Machinima API
native BlzHideCinematicPanels takes boolean enable returns nothing
JAPI Functions
native BlzShowTerrain takes boolean show returns nothing
native BlzShowSkyBox takes boolean show returns nothing
native BlzStartRecording takes integer fps returns nothing
native BlzEndRecording takes nothing returns nothing
native BlzShowUnitTeamGlow takes unit whichUnit, boolean show returns nothing
native CreateCommandButtonEffect takes integer abilityId, string order returns commandbuttoneffect
native CreateUpgradeCommandButtonEffect takes integer whichUprgade returns commandbuttoneffect
native CreateLearnCommandButtonEffect takes integer abilityId returns commandbuttoneffect
native DestroyCommandButtonEffect takes commandbuttoneffect whichEffect returns nothing

// Skin
native BlzGetUnitSkin takes unit whichUnit returns integer
native BlzGetItemSkin takes item whichItem returns integer
// native BlzGetDestructableSkin takes destructable whichDestructable returns integer
native BlzSetUnitSkin takes unit whichUnit, integer skinId returns nothing
native BlzSetItemSkin takes item whichItem, integer skinId returns nothing
// native BlzSetDestructableSkin takes destructable whichDestructable, integer skinId returns nothing
native BlzCreateItemWithSkin takes integer itemid, real x, real y, integer skinId returns item
native BlzCreateUnitWithSkin takes player id, integer unitid, real x, real y, real face, integer skinId returns unit
native BlzCreateDestructableWithSkin takes integer objectid, real x, real y, real face, real scale, integer variation, integer skinId returns destructable
native BlzCreateDestructableZWithSkin takes integer objectid, real x, real y, real z, real face, real scale, integer variation, integer skinId returns destructable
native BlzCreateDeadDestructableWithSkin takes integer objectid, real x, real y, real face, real scale, integer variation, integer skinId returns destructable
native BlzCreateDeadDestructableZWithSkin takes integer objectid, real x, real y, real z, real face, real scale, integer variation, integer skinId returns destructable
native BlzGetPlayerTownHallCount takes player whichPlayer returns integer
Изменения Blizzard.j
Constants
constant real bj_HANDICAPDAMAGE_EASY = 50.00
constant real bj_HANDICAPREVIVE_NOTHARD = 50.00

// Auto Save constants
constant integer bj_MAX_CHECKPOINTS = 5

// Campaign offset constants (for mission indexing)
Было:
constant integer bj_CAMPAIGN_OFFSET_XN = 0
constant integer bj_CAMPAIGN_OFFSET_XH = 1
constant integer bj_CAMPAIGN_OFFSET_XU = 2
constant integer bj_CAMPAIGN_OFFSET_XO = 3
Стало:
constant integer bj_CAMPAIGN_OFFSET_XN = 5
constant integer bj_CAMPAIGN_OFFSET_XH = 6
constant integer bj_CAMPAIGN_OFFSET_XU = 7
constant integer bj_CAMPAIGN_OFFSET_XO = 8

// Mission indexing constants
constant integer bj_MISSION_INDEX_T02 = bj_CAMPAIGN_OFFSET_T * 1000 + 2
constant integer bj_MISSION_INDEX_T03 = bj_CAMPAIGN_OFFSET_T * 1000 + 3
constant integer bj_MISSION_INDEX_T04 = bj_CAMPAIGN_OFFSET_T * 1000 + 4

// Campaign Minimap icon styles
constant integer bj_CAMPPINGSTYLE_PRIMARY = 0
constant integer bj_CAMPPINGSTYLE_BONUS = 1
constant integer bj_CAMPPINGSTYLE_TURNIN = 2
constant integer bj_CAMPPINGSTYLE_BOSS = 3
constant integer bj_CAMPPINGSTYLE_CONTROL_ALLY = 4
constant integer bj_CAMPPINGSTYLE_CONTROL_NEUTRAL = 5
constant integer bj_CAMPPINGSTYLE_CONTROL_ENEMY = 6
Last X'd vars
minimapicon bj_lastCreatedMinimapIcon = null
commandbuttoneffect bj_lastCreatedCommandButtonEffect = null
Camera Utility Functions
function CameraSetupApplyForPlayerSmooth takes boolean doPan, camerasetup whichSetup, player whichPlayer, real forcedDuration, real easeInDuration, real easeOutDuration, real smoothFactor returns nothing
 if (GetLocalPlayer() == whichPlayer) then
 // Use only local code (no net traffic) within this block to avoid desyncs.
 call BlzCameraSetupApplyForceDurationSmooth(whichSetup, doPan, forcedDuration, easeInDuration, easeOutDuration, smoothFactor)
 endif
endfunction
Event Registration Utility Functions
function TriggerRegisterBuildCommandEventBJ takes trigger trig, integer unitId returns event
 call TriggerRegisterCommandEvent(trig, 'ANbu', UnitId2String(unitId))
 call TriggerRegisterCommandEvent(trig, 'AHbu', UnitId2String(unitId))
 call TriggerRegisterCommandEvent(trig, 'AEbu', UnitId2String(unitId))
 call TriggerRegisterCommandEvent(trig, 'AObu', UnitId2String(unitId))
 call TriggerRegisterCommandEvent(trig, 'AUbu', UnitId2String(unitId))
 return TriggerRegisterCommandEvent(trig, 'AGbu', UnitId2String(unitId))
endfunction

function TriggerRegisterTrainCommandEventBJ takes trigger trig, integer unitId returns event
 return TriggerRegisterCommandEvent(trig, 'Aque', UnitId2String(unitId))
endfunction

function TriggerRegisterUpgradeCommandEventBJ takes trigger trig, integer techId returns event
 return TriggerRegisterUpgradeCommandEvent(trig, techId)
endfunction
Environment Utility Functions
function GetLastCreatedMinimapIcon takes nothing returns minimapicon
 return bj_lastCreatedMinimapIcon
endfunction

function CreateMinimapIconOnUnitBJ takes unit whichUnit, integer red, integer green, integer blue, string pingPath, fogstate fogVisibility returns minimapicon
 set bj_lastCreatedMinimapIcon = CreateMinimapIconOnUnit(whichUnit, red, green, blue, pingPath, fogVisibility)
 return bj_lastCreatedMinimapIcon
endfunction

function CreateMinimapIconAtLocBJ takes location where, integer red, integer green, integer blue, string pingPath, fogstate fogVisibility returns minimapicon
 set bj_lastCreatedMinimapIcon = CreateMinimapIconAtLoc(where, red, green, blue, pingPath, fogVisibility)
 return bj_lastCreatedMinimapIcon
endfunction

function CreateMinimapIconBJ takes real x, real y, integer red, integer green, integer blue, string pingPath, fogstate fogVisibility returns minimapicon
 set bj_lastCreatedMinimapIcon = CreateMinimapIcon(x, y, red, green, blue, pingPath, fogVisibility)
 return bj_lastCreatedMinimapIcon
endfunction

function CampaignMinimapIconUnitBJ takes unit whichUnit, integer style returns nothing
 local integer red
 local integer green
 local integer blue
 local string path
 if ( style == bj_CAMPPINGSTYLE_PRIMARY ) then
 // green
 set red = 255
 set green = 0
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestObjectivePrimary" )
 elseif ( style == bj_CAMPPINGSTYLE_BONUS ) then
 // yellow
 set red = 255
 set green = 255
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestObjectiveBonus" )
 elseif ( style == bj_CAMPPINGSTYLE_TURNIN ) then
 // yellow
 set red = 255
 set green = 255
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestTurnIn" )
 elseif ( style == bj_CAMPPINGSTYLE_BOSS ) then
 // red
 set red = 255
 set green = 0
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestBoss" )
 elseif ( style == bj_CAMPPINGSTYLE_CONTROL_ALLY ) then
 // green
 set red = 0
 set green = 255
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestControlPoint" )
 elseif ( style == bj_CAMPPINGSTYLE_CONTROL_NEUTRAL ) then
 // white
 set red = 255
 set green = 255
 set blue = 255
 set path = SkinManagerGetLocalPath( "MinimapQuestControlPoint" )
 elseif ( style == bj_CAMPPINGSTYLE_CONTROL_ENEMY ) then
 // red
 set red = 255
 set green = 0
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestControlPoint" )
 endif
 call CreateMinimapIconOnUnitBJ( whichUnit, red, green, blue, path, FOG_OF_WAR_MASKED )
 call SetMinimapIconOrphanDestroy( bj_lastCreatedMinimapIcon, true )
endfunction

function CampaignMinimapIconLocBJ takes location where, integer style returns nothing
 local integer red
 local integer green
 local integer blue
 local string path
 if ( style == bj_CAMPPINGSTYLE_PRIMARY ) then
 // green (different from the unit version)
 set red = 0
 set green = 255
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestObjectivePrimary" )
 elseif ( style == bj_CAMPPINGSTYLE_BONUS ) then
 // yellow
 set red = 255
 set green = 255
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestObjectiveBonus" )
 elseif ( style == bj_CAMPPINGSTYLE_TURNIN ) then
 // yellow
 set red = 255
 set green = 255
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestTurnIn" )
 elseif ( style == bj_CAMPPINGSTYLE_BOSS ) then
 // red
 set red = 255
 set green = 0
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestBoss" )
 elseif ( style == bj_CAMPPINGSTYLE_CONTROL_ALLY ) then
 // green
 set red = 0
 set green = 255
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestControlPoint" )
 elseif ( style == bj_CAMPPINGSTYLE_CONTROL_NEUTRAL ) then
 // white
 set red = 255
 set green = 255
 set blue = 255
 set path = SkinManagerGetLocalPath( "MinimapQuestControlPoint" )
 elseif ( style == bj_CAMPPINGSTYLE_CONTROL_ENEMY ) then
 // red
 set red = 255
 set green = 0
 set blue = 0
 set path = SkinManagerGetLocalPath( "MinimapQuestControlPoint" )
 endif
 call CreateMinimapIconAtLocBJ( where, red, green, blue, path, FOG_OF_WAR_MASKED )
endfunction
Command Button Effect Utility Functions
function CreateCommandButtonEffectBJ takes integer abilityId, string order returns commandbuttoneffect
 set bj_lastCreatedCommandButtonEffect = CreateCommandButtonEffect(abilityId, order)
 return bj_lastCreatedCommandButtonEffect
endfunction

function CreateTrainCommandButtonEffectBJ takes integer unitId returns commandbuttoneffect
 set bj_lastCreatedCommandButtonEffect = CreateCommandButtonEffect('Aque', UnitId2String(unitId))
 return bj_lastCreatedCommandButtonEffect
endfunction

function CreateUpgradeCommandButtonEffectBJ takes integer techId returns commandbuttoneffect
 set bj_lastCreatedCommandButtonEffect = CreateUpgradeCommandButtonEffect(techId)
 return bj_lastCreatedCommandButtonEffect
endfunction

function CreateLearnCommandButtonEffectBJ takes integer abilityId returns commandbuttoneffect
 set bj_lastCreatedCommandButtonEffect = CreateLearnCommandButtonEffect(abilityId)
 return bj_lastCreatedCommandButtonEffect
endfunction

function CreateBuildCommandButtonEffectBJ takes integer unitId returns commandbuttoneffect
 local race r = GetPlayerRace(GetLocalPlayer())
 local integer abilityId
 if (r == RACE_HUMAN) then
 set abilityId = 'AHbu'
 elseif (r == RACE_ORC) then
 set abilityId = 'AObu'
 elseif (r == RACE_UNDEAD) then
 set abilityId = 'AUbu'
 elseif (r == RACE_NIGHTELF) then
 set abilityId = 'AEbu'
 else
 set abilityId = 'ANbu'
 endif
 set bj_lastCreatedCommandButtonEffect = CreateCommandButtonEffect(abilityId, UnitId2String(unitId))
 return bj_lastCreatedCommandButtonEffect
endfunction

function GetLastCreatedCommandButtonEffectBJ takes nothing returns commandbuttoneffect
 return bj_lastCreatedCommandButtonEffect
endfunction
Hero and Item Utility Functions
function SetPlayerHandicapDamageBJ takes player whichPlayer, real handicapPercent returns nothing
 call SetPlayerHandicapDamage(whichPlayer, handicapPercent * 0.01)
endfunction

function GetPlayerHandicapDamageBJ takes player whichPlayer returns real
 return GetPlayerHandicapDamage(whichPlayer) * 100
endfunction

function SetPlayerHandicapReviveTimeBJ takes player whichPlayer, real handicapPercent returns nothing
 call SetPlayerHandicapReviveTime(whichPlayer, handicapPercent * 0.01)
endfunction

function GetPlayerHandicapReviveTimeBJ takes player whichPlayer returns real
 return GetPlayerHandicapReviveTime(whichPlayer) * 100
endfunction
Cinematic Transmission Utility Functions
Было:
function SetCinematicSceneBJ takes sound soundHandle, integer portraitUnitId, playercolor color, string speakerTitle, string text, real sceneDuration, real voiceoverDuration returns nothing
 set bj_cineSceneLastSound = soundHandle
 call PlaySoundBJ(soundHandle)
 call SetCinematicScene(portraitUnitId, color, speakerTitle, text, sceneDuration, voiceoverDuration)
endfunction
Стало:
function SetCinematicSceneBJ takes sound soundHandle, integer portraitUnitId, playercolor color, string speakerTitle, string text, real sceneDuration, real voiceoverDuration returns nothing
 set bj_cineSceneLastSound = soundHandle
 call SetCinematicScene(portraitUnitId, color, speakerTitle, text, sceneDuration, voiceoverDuration)
 call PlaySoundBJ(soundHandle)
endfunction

Было:
function TransmissionFromUnitWithNameBJ takes force toForce, unit whichUnit, string unitName, sound soundHandle, string message, integer timeType, real timeVal, boolean wait returns nothing
 call TryInitCinematicBehaviorBJ()
 // Ensure that the time value is non-negative.
 set timeVal = RMaxBJ(timeVal, 0)
 set bj_lastTransmissionDuration = GetTransmissionDuration(soundHandle, timeType, timeVal)
 set bj_lastPlayedSound = soundHandle
 if (IsPlayerInForce(GetLocalPlayer(), toForce)) then
 // Use only local code (no net traffic) within this block to avoid desyncs.
 if (whichUnit == null) then
 // If the unit reference is invalid, send the transmission from the center of the map with no portrait.
 call DoTransmissionBasicsXYBJ(0, PLAYER_COLOR_RED, 0, 0, soundHandle, unitName, message, bj_lastTransmissionDuration)
 else
 call DoTransmissionBasicsXYBJ(GetUnitTypeId(whichUnit), GetPlayerColor(GetOwningPlayer(whichUnit)), GetUnitX(whichUnit), GetUnitY(whichUnit), soundHandle, unitName, message, bj_lastTransmissionDuration)
 if (not IsUnitHidden(whichUnit)) then
 call UnitAddIndicator(whichUnit, bj_TRANSMISSION_IND_RED, bj_TRANSMISSION_IND_BLUE, bj_TRANSMISSION_IND_GREEN, bj_TRANSMISSION_IND_ALPHA)
 endif
 endif
 endif
 if wait and (bj_lastTransmissionDuration > 0) then
 // call TriggerSleepAction(bj_lastTransmissionDuration)
 call WaitTransmissionDuration(soundHandle, timeType, timeVal)
 endif
endfunction
Стало:
function TransmissionFromUnitWithNameBJ takes force toForce, unit whichUnit, string unitName, sound soundHandle, string message, integer timeType, real timeVal, boolean wait returns nothing
 call TryInitCinematicBehaviorBJ()
 call AttachSoundToUnit(soundHandle, whichUnit)
 // Ensure that the time value is non-negative.
 set timeVal = RMaxBJ(timeVal, 0)
 set bj_lastTransmissionDuration = GetTransmissionDuration(soundHandle, timeType, timeVal)
 set bj_lastPlayedSound = soundHandle
 if (IsPlayerInForce(GetLocalPlayer(), toForce)) then
 // Use only local code (no net traffic) within this block to avoid desyncs.
 if (whichUnit == null) then
 // If the unit reference is invalid, send the transmission from the center of the map with no portrait.
 call DoTransmissionBasicsXYBJ(0, PLAYER_COLOR_RED, 0, 0, soundHandle, unitName, message, bj_lastTransmissionDuration)
 else
 call DoTransmissionBasicsXYBJ(GetUnitTypeId(whichUnit), GetPlayerColor(GetOwningPlayer(whichUnit)), GetUnitX(whichUnit), GetUnitY(whichUnit), soundHandle, unitName, message, bj_lastTransmissionDuration)
 if (not IsUnitHidden(whichUnit)) then
 call UnitAddIndicator(whichUnit, bj_TRANSMISSION_IND_RED, bj_TRANSMISSION_IND_BLUE, bj_TRANSMISSION_IND_GREEN, bj_TRANSMISSION_IND_ALPHA)
 endif
 endif
 endif
 if wait and (bj_lastTransmissionDuration > 0) then
 // call TriggerSleepAction(bj_lastTransmissionDuration)
 call WaitTransmissionDuration(soundHandle, timeType, timeVal)
 endif
endfunction

function PlayDialogueFromSpeaker takes force toForce, unit speaker, sound soundHandle, integer timeType, real timeVal, boolean wait returns nothing
 call TryInitCinematicBehaviorBJ()
 call AttachSoundToUnit(soundHandle, speaker)
 // Ensure that the time value is non-negative.
 set timeVal = RMaxBJ(timeVal, 0)
 set bj_lastTransmissionDuration = GetTransmissionDuration(soundHandle, timeType, timeVal)
 set bj_lastPlayedSound = soundHandle
 if (IsPlayerInForce(GetLocalPlayer(), toForce)) then
 call PlaySoundBJ(soundHandle)
 endif
 if wait and (bj_lastTransmissionDuration > 0) then
 // call TriggerSleepAction(bj_lastTransmissionDuration)
 call WaitTransmissionDuration(soundHandle, timeType, timeVal)
 endif
endfunction

function PlayDialogueFromSpeakerEx takes force toForce, unit speaker, integer speakerType, sound soundHandle, integer timeType, real timeVal, boolean wait returns boolean
 //Make sure that the runtime unit type and the parameter are the same,
 //otherwise the offline animations will not match and will fail
 if GetUnitTypeId(speaker) != speakerType then
 debug call BJDebugMsg(("Attempted to play FacialAnimation with the wrong speaker UnitType - Param: " + I2S(speakerType) + " Runtime: " + I2S(GetUnitTypeId(speaker))))
 //return false
 endif
 call TryInitCinematicBehaviorBJ()
 call AttachSoundToUnit(soundHandle, speaker)
 // Ensure that the time value is non-negative.
 set timeVal = RMaxBJ(timeVal, 0)
 set bj_lastTransmissionDuration = GetTransmissionDuration(soundHandle, timeType, timeVal)
 set bj_lastPlayedSound = soundHandle
 if (IsPlayerInForce(GetLocalPlayer(), toForce)) then
 call SetCinematicSceneBJ(soundHandle, speakerType, GetPlayerColor(GetLocalPlayer()), GetLocalizedString(GetDialogueSpeakerNameKey(soundHandle)), GetLocalizedString(GetDialogueTextKey(soundHandle)), bj_lastTransmissionDuration + bj_TRANSMISSION_PORT_HANGTIME, bj_lastTransmissionDuration)
 endif
 if wait and (bj_lastTransmissionDuration > 0) then
 // call TriggerSleepAction(bj_lastTransmissionDuration)
 call WaitTransmissionDuration(soundHandle, timeType, timeVal)
 endif
 return true
endfunction

function PlayDialogueFromSpeakerType takes force toForce, player fromPlayer, integer speakerType, location loc, sound soundHandle, integer timeType, real timeVal, boolean wait returns boolean
 call TryInitCinematicBehaviorBJ()
 // Ensure that the time value is non-negative.
 set timeVal = RMaxBJ(timeVal, 0)
 set bj_lastTransmissionDuration = GetTransmissionDuration(soundHandle, timeType, timeVal)
 set bj_lastPlayedSound = soundHandle
 if (IsPlayerInForce(GetLocalPlayer(), toForce)) then
 call SetCinematicSceneBJ(soundHandle, speakerType, GetPlayerColor(fromPlayer), GetLocalizedString(GetDialogueSpeakerNameKey(soundHandle)), GetLocalizedString(GetDialogueTextKey(soundHandle)), bj_lastTransmissionDuration + bj_TRANSMISSION_PORT_HANGTIME, bj_lastTransmissionDuration)
 if(speakerType != 0) then
 call PingMinimap(GetLocationX(loc), GetLocationY(loc), bj_TRANSMISSION_PING_TIME)
 endif
 endif
 if wait and (bj_lastTransmissionDuration > 0) then
 // call TriggerSleepAction(bj_lastTransmissionDuration)
 call WaitTransmissionDuration(soundHandle, timeType, timeVal)
 endif
 return true
endfunction

function PlayDialogueFromSpeakerTypeEx takes force toForce, player fromPlayer, integer speakerType, location loc, sound soundHandle, integer timeType, real timeVal, boolean wait returns boolean
 return PlayDialogueFromSpeakerType(toForce, fromPlayer, speakerType, loc, soundHandle, timeType, timeVal, wait)
endfunction
Placeholder function for auto save feature
function SaveGameCheckPointBJ takes string mapSaveName, boolean doCheckpointHint returns nothing
 call SaveGameCheckpoint(mapSaveName, doCheckpointHint)
endfunction
Melee Template Victory / Defeat Conditions
Было:
function MeleeGetAllyKeyStructureCount takes player whichPlayer returns integer
 local integer playerIndex
 local player indexPlayer
 local integer keyStructs
 // Count the number of buildings controlled by all not-yet-defeated co-allies.
 set keyStructs = 0
 set playerIndex = 0
 loop
 set indexPlayer = Player(playerIndex)
 if (PlayersAreCoAllied(whichPlayer, indexPlayer)) then
 set keyStructs = keyStructs + GetPlayerTypedUnitCount(indexPlayer, "townhall", true, true)
 set keyStructs = keyStructs + GetPlayerTypedUnitCount(indexPlayer, "greathall", true, true)
 set keyStructs = keyStructs + GetPlayerTypedUnitCount(indexPlayer, "treeoflife", true, true)
 set keyStructs = keyStructs + GetPlayerTypedUnitCount(indexPlayer, "necropolis", true, true)
 endif
 set playerIndex = playerIndex + 1
 exitwhen playerIndex == bj_MAX_PLAYERS
 endloop
 return keyStructs
endfunction
Стало:
function MeleeGetAllyKeyStructureCount takes player whichPlayer returns integer
 local integer playerIndex
 local player indexPlayer
 local integer keyStructs
 // Count the number of buildings controlled by all not-yet-defeated co-allies.
 set keyStructs = 0
 set playerIndex = 0
 loop
 set indexPlayer = Player(playerIndex)
 if (PlayersAreCoAllied(whichPlayer, indexPlayer)) then
 set keyStructs = BlzGetPlayerTownHallCount(indexPlayer)
 endif
 set playerIndex = playerIndex + 1
 exitwhen playerIndex == bj_MAX_PLAYERS
 endloop
 return keyStructs
endfunction
Изменения Common.ai
constant integer FOREST_TROLL = 'nftr'
Загруженные файлы