MeleeStartingUnitsNightElf
- Parameters
whichPlayer playerstartLoc locationdoHeroes booleandoCamera booleandoPreload boolean- comment
- bug
Leaks.
Uncleared handle variables:
nearestMinenearMineLocwispLocheroLoctree
In Jass you must set local variables that hold agents (or any child type) to
nullat the end of functions to avoid reference counter leaks.Objects not removed (e.g. RemoveLocation):
- Location,Location
nearMineLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine) - Location, Rect, Location
nearMineLoc = MeleeGetLocWithinRect(nearMineLoc, GetRectFromCircleBJ(GetUnitLoc(nearestMine), minTreeDist)) - Loc, Loc
wispLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 320, 0) - Loc, Rect, Loc
wispLoc = MeleeGetLocWithinRect(wispLoc, GetRectFromCircleBJ(GetUnitLoc(nearestMine - Loc, Loc
heroLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine) - Loc
heroLoc = Location(peonX, peonY - 2.00 * unitSpacing)
- patch
1.00
- Source
- Blizzard.j (suggest an edit or discuss on Github)
- return type
nothing- Source code
function MeleeStartingUnitsNightElf 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 real minTreeDist = 3.50 * bj_CELLWIDTH local real minWispDist = 1.75 * bj_CELLWIDTH local unit nearestMine local location nearMineLoc local location wispLoc local location heroLoc local real peonX local real peonY local unit tree if (doPreload) then call Preloader( "scripts\\NightElfMelee.pld" ) endif set nearestMine = MeleeFindNearestMine(startLoc, bj_MELEE_MINE_SEARCH_RADIUS) if (nearestMine != null) then // Spawn Tree of Life near the mine and have it entangle the mine. // Project the Tree's coordinates from the gold mine, and then snap // the X and Y values to within minTreeDist of the Gold Mine. set nearMineLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 650, 0) set nearMineLoc = MeleeGetLocWithinRect(nearMineLoc, GetRectFromCircleBJ(GetUnitLoc(nearestMine), minTreeDist)) set tree = CreateUnitAtLoc(whichPlayer, 'etol', nearMineLoc, bj_UNIT_FACING) call IssueTargetOrder(tree, "entangleinstant", nearestMine) // Spawn Wisps at the start location. set wispLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), startLoc, 320, 0) set wispLoc = MeleeGetLocWithinRect(wispLoc, GetRectFromCircleBJ(GetUnitLoc(nearestMine), minWispDist)) set peonX = GetLocationX(wispLoc) set peonY = GetLocationY(wispLoc) call CreateUnit(whichPlayer, 'ewsp', peonX + 0.00 * unitSpacing, peonY + 1.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX + 1.00 * unitSpacing, peonY + 0.15 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX - 1.00 * unitSpacing, peonY + 0.15 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX + 0.58 * unitSpacing, peonY - 1.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX - 0.58 * unitSpacing, peonY - 1.00 * unitSpacing, bj_UNIT_FACING) // 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 Tree of Life at the start location. call CreateUnitAtLoc(whichPlayer, 'etol', startLoc, bj_UNIT_FACING) // Spawn Wisps directly south of the town hall. set peonX = GetLocationX(startLoc) set peonY = GetLocationY(startLoc) - 224.00 call CreateUnit(whichPlayer, 'ewsp', peonX - 2.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX - 1.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX + 0.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX + 1.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(whichPlayer, 'ewsp', peonX + 2.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) // 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, 'Edem', 'Ekee', 'Emoo', 'Ewar', 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 Wisps. call SetCameraPositionForPlayer(whichPlayer, peonX, peonY) call SetCameraQuickPositionForPlayer(whichPlayer, peonX, peonY) endif endfunction