MeleeStartingUnitsUndead
- Parameters
-
whichPlayer player
startLoc location
doHeroes boolean
doCamera boolean
doPreload boolean
- comment
- bug
Leaks.
Uncleared handle variables:
nearestMine
nearMineLoc
nearTownLoc
heroLoc
In Jass you must set local variables that hold agents (or any child type) to
null
at the end of functions to avoid reference counter leaks.Objects not removed (e.g. RemoveLocation):
- Loc, Loc
nearTownLoc = MeleeGetProjectedLoc(startLoc, GetUnitLoc(nearestMine)
- Loc, Loc
nearMineLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine)
- Loc, Loc
heroLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine)
- Loc, Loc
heroLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine)
- Loc
heroLoc = Location(peonX, peonY - 2.00 * unitSpacing)
- patch
1.00
- Source
- Blizzard.j
- return type
nothing
- Source code
function MeleeStartingUnitsUndead takes player whichPlayer, location startLoc, boolean doHeroes, boolean doCamera, boolean doPreload returns nothing local boolean useRandomHero = IsMapFlagSet(MAP_RANDOM_HERO) local real unitSpacing = 64.00 local unit nearestMine local location nearMineLoc local location nearTownLoc local location heroLoc local real peonX local real peonY local real ghoulX local real ghoulY if (doPreload) then call Preloader( "scripts\\UndeadMelee.pld" ) endif set nearestMine = MeleeFindNearestMine(startLoc, bj_MELEE_MINE_SEARCH_RADIUS) if (nearestMine != null) then // Spawn Necropolis at the start location. call CreateUnitAtLoc(whichPlayer, 'unpl', startLoc, bj_UNIT_FACING) // Replace the nearest gold mine with a blighted version. set nearestMine = BlightGoldMineForPlayerBJ(nearestMine, whichPlayer) // Spawn Ghoul near the Necropolis. set nearTownLoc = MeleeGetProjectedLoc(startLoc, GetUnitLoc(nearestMine), 288, 0) set ghoulX = GetLocationX(nearTownLoc) set ghoulY = GetLocationY(nearTownLoc) set bj_ghoul[GetPlayerId(whichPlayer)] = CreateUnit(whichPlayer, 'ugho', ghoulX + 0.00 * unitSpacing, ghoulY + 0.00 * unitSpacing, bj_UNIT_FACING) // Spawn Acolytes near the mine. set nearMineLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 320, 0) set peonX = GetLocationX(nearMineLoc) set peonY = GetLocationY(nearMineLoc) call CreateUnit(whichPlayer, 'uaco', peonX + 0.00 * unitSpacing, peonY + 0.50 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'uaco', peonX + 0.65 * unitSpacing, peonY - 0.50 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'uaco', peonX - 0.65 * unitSpacing, peonY - 0.50 * unitSpacing, bj_UNIT_FACING) // Create a patch of blight around the gold mine. call SetBlightLoc(whichPlayer,nearMineLoc, 768, true) // Set random hero spawn point to be off to the side of the start location. set heroLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 384, 45) else // Spawn Necropolis at the start location. call CreateUnitAtLoc(whichPlayer, 'unpl', startLoc, bj_UNIT_FACING) // Spawn Acolytes and Ghoul directly south of the Necropolis. set peonX = GetLocationX(startLoc) set peonY = GetLocationY(startLoc) - 224.00 call CreateUnit(whichPlayer, 'uaco', peonX - 1.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'uaco', peonX - 0.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'uaco', peonX + 0.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ugho', peonX + 1.50 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) // Create a patch of blight around the start location. call SetBlightLoc(whichPlayer,startLoc, 768, true) // Set random hero spawn point to be just south of the start location. set heroLoc = Location(peonX, peonY - 2.00 * unitSpacing) endif if (doHeroes) then // If the "Random Hero" option is set, start the player with a random hero. // Otherwise, give them a "free hero" token. if useRandomHero then call MeleeRandomHeroLoc(whichPlayer, 'Udea', 'Udre', 'Ulic', 'Ucrl', heroLoc) else call SetPlayerState(whichPlayer, PLAYER_STATE_RESOURCE_HERO_TOKENS, bj_MELEE_STARTING_HERO_TOKENS) endif endif if (doCamera) then // Center the camera on the initial Acolytes. call SetCameraPositionForPlayer(whichPlayer, peonX, peonY) call SetCameraQuickPositionForPlayer(whichPlayer, peonX, peonY) endif endfunction