# Cliff Level Of Point (Integer)
Grammar — Cliff level of point
Flags —Native|Function
Returns what cliff level a point is on.
# Arguments
point— Point
Returns — int
native int CliffLevel(point inPos);
# Related
Category: Environment / Terrain And Water
- Show/Hide Environment — 
void— EnvironmentShow - Height At Point — 
fixed— WorldHeight - Terrain Texture At Point — 
string<gamelink::TerrainTex> — TerrainTexture - Cliff Level Of Point (Integer) — 
int— CliffLevel - Cliff Level Of Point (Real) — 
fixed— PointPathingCliffLevel - Line Crosses Cliff — 
bool— CrossCliff - Terrain Has Custom Attribute — 
bool— HasCustomCellAttribute - Show/Hide Terrain — 
void— TerrainShowRegion - Set Water State — 
void— WaterSetState - Pause/Unpause Water Transition — 
void— WaterPause 
# Examples
campaigns/swarm.sc2campaign — base.sc2maps/maps/campaign/swarm/evolution/zevolutionbaneling.sc2map/MapScript.galaxy:1926
    UnitGroupLoopBegin(UnitGroup("HotSHunter", gv_pLAYER_01_USER, RegionFromId(4), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0));
    for ( ; !UnitGroupLoopDone() ; UnitGroupLoopStep() ) {
        if ((CliffLevel(UnitGetPosition(UnitGroupLoopCurrent())) < 2)) {
            lv_playerOnHighGround = false;
            break;
campaigns/swarm.sc2campaign — base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map/MapScript.galaxy:470
    // Implementation
    libSwaC_gf_AttachReticleEffectAndTextTagOnUnit(libSwaC_ge_CampaginReticleType_ZergMainObjective, libSwaC_ge_CampaginReticleSize_Medium, StringExternal("Param/Value/13B04441"), lp_aberration, "Ref_Center");
    while (!(((CliffLevel(UnitGetPosition(lp_aberration)) == lp_targetCliffLevel) || (UnitIsAlive(lp_aberration) == false)))) {
        Wait(0.25, c_timeGame);
    }
campaigns/swarm.sc2campaign — base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map/MapScript.galaxy:515
    PingSetScale(PingLastCreated(), 0.8);
    PingSetTooltip(PingLastCreated(), StringExternal("Param/Value/5B59B205"));
    while (!((CliffLevel(UnitGetPosition(lp_tank)) == 2))) {
        Wait(0.25, c_timeGame);
    }
campaigns/swarm.sc2campaign — base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map/MapScript.galaxy:1991
    UnitGroupLoopBegin(gv_aberrationGroup);
    for ( ; !UnitGroupLoopDone() ; UnitGroupLoopStep() ) {
        if ((CliffLevel(UnitGetPosition(UnitGroupLoopCurrent())) != 2)) {
            gf_AberrationHelper(UnitGroupLoopCurrent(), 2);
        }
campaigns/swarm.sc2campaign — base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map/MapScript.galaxy:1998
    }
    UnitGroupLoopEnd();
    while (!((((CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 1))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 2))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 3))) == 2)) || (UnitGroupCount(UnitGroup("InfestedAbomination", gv_pLAYER_01_USER, RegionFromId(18), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 1)))) {
        Wait(0.25, c_timeGame);
    }
campaigns/swarm.sc2campaign — base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map/MapScript.galaxy:1998
    }
    UnitGroupLoopEnd();
    while (!((((CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 1))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 2))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 3))) == 2)) || (UnitGroupCount(UnitGroup("InfestedAbomination", gv_pLAYER_01_USER, RegionFromId(18), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 1)))) {
        Wait(0.25, c_timeGame);
    }
campaigns/swarm.sc2campaign — base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map/MapScript.galaxy:1998
    }
    UnitGroupLoopEnd();
    while (!((((CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 1))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 2))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 3))) == 2)) || (UnitGroupCount(UnitGroup("InfestedAbomination", gv_pLAYER_01_USER, RegionFromId(18), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 1)))) {
        Wait(0.25, c_timeGame);
    }
campaigns/swarm.sc2campaign — base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map/MapScript.galaxy:2391
    UnitGroupLoopBegin(gv_aberrationGroup);
    for ( ; !UnitGroupLoopDone() ; UnitGroupLoopStep() ) {
        if ((CliffLevel(UnitGetPosition(UnitGroupLoopCurrent())) == 3) && (libNtve_gf_UnitInRegion(UnitGroupLoopCurrent(), RegionFromId(3)) == false) && (libNtve_gf_UnitInRegion(UnitGroupLoopCurrent(), RegionFromId(9)) == false)) {
            return true;
        }
campaigns/swarm.sc2campaign — base.sc2maps/maps/campaign/swarm/zexpedition03.sc2map/MapScript.galaxy:9361
        for (autoD7A3A7E0_i = 1; autoD7A3A7E0_i <= autoD7A3A7E0_n; autoD7A3A7E0_i += 1) {
            lv_randomPoint = RegionRandomPoint(RegionFromId(56));
            if ((CliffLevel(lv_randomPoint) == 1)) {
                libNtve_gf_CreateExplosionAtPoint(libNtve_ge_ExplosionSize_Large, libNtve_ge_ExplosionType_Protoss, RegionRandomPoint(RegionFromId(56)));
                break;
campaigns/swarm.sc2campaign — base.sc2maps/maps/campaign/voidprologue/voidprologue02.sc2map/MapScript.galaxy:837
                    if ((UnitIsAlive(lp_powerSource) == true)) {
                        lv_warpPoint = RegionRandomPoint(RegionCircle(UnitGetPosition(lp_powerSource), 3.5));
                        while ((CliffLevel(lv_warpPoint) != CliffLevel(UnitGetPosition(lp_powerSource)))) {
                            lv_warpPoint = RegionRandomPoint(RegionCircle(UnitGetPosition(lp_powerSource), 3.5));
                        }
campaigns/swarm.sc2campaign — base.sc2maps/maps/campaign/voidprologue/voidprologue02.sc2map/MapScript.galaxy:837
                    if ((UnitIsAlive(lp_powerSource) == true)) {
                        lv_warpPoint = RegionRandomPoint(RegionCircle(UnitGetPosition(lp_powerSource), 3.5));
                        while ((CliffLevel(lv_warpPoint) != CliffLevel(UnitGetPosition(lp_powerSource)))) {
                            lv_warpPoint = RegionRandomPoint(RegionCircle(UnitGetPosition(lp_powerSource), 3.5));
                        }
campaigns/swarm.sc2campaign/base.sc2maps/maps/campaign/swarm/evolution/zevolutionbaneling.sc2map — MapScript.galaxy:1926
    UnitGroupLoopBegin(UnitGroup("HotSHunter", gv_pLAYER_01_USER, RegionFromId(4), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0));
    for ( ; !UnitGroupLoopDone() ; UnitGroupLoopStep() ) {
        if ((CliffLevel(UnitGetPosition(UnitGroupLoopCurrent())) < 2)) {
            lv_playerOnHighGround = false;
            break;
campaigns/swarm.sc2campaign/base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map — MapScript.galaxy:470
    // Implementation
    libSwaC_gf_AttachReticleEffectAndTextTagOnUnit(libSwaC_ge_CampaginReticleType_ZergMainObjective, libSwaC_ge_CampaginReticleSize_Medium, StringExternal("Param/Value/13B04441"), lp_aberration, "Ref_Center");
    while (!(((CliffLevel(UnitGetPosition(lp_aberration)) == lp_targetCliffLevel) || (UnitIsAlive(lp_aberration) == false)))) {
        Wait(0.25, c_timeGame);
    }
campaigns/swarm.sc2campaign/base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map — MapScript.galaxy:515
    PingSetScale(PingLastCreated(), 0.8);
    PingSetTooltip(PingLastCreated(), StringExternal("Param/Value/5B59B205"));
    while (!((CliffLevel(UnitGetPosition(lp_tank)) == 2))) {
        Wait(0.25, c_timeGame);
    }
campaigns/swarm.sc2campaign/base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map — MapScript.galaxy:1991
    UnitGroupLoopBegin(gv_aberrationGroup);
    for ( ; !UnitGroupLoopDone() ; UnitGroupLoopStep() ) {
        if ((CliffLevel(UnitGetPosition(UnitGroupLoopCurrent())) != 2)) {
            gf_AberrationHelper(UnitGroupLoopCurrent(), 2);
        }
campaigns/swarm.sc2campaign/base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map — MapScript.galaxy:1998
    }
    UnitGroupLoopEnd();
    while (!((((CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 1))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 2))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 3))) == 2)) || (UnitGroupCount(UnitGroup("InfestedAbomination", gv_pLAYER_01_USER, RegionFromId(18), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 1)))) {
        Wait(0.25, c_timeGame);
    }
campaigns/swarm.sc2campaign/base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map — MapScript.galaxy:1998
    }
    UnitGroupLoopEnd();
    while (!((((CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 1))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 2))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 3))) == 2)) || (UnitGroupCount(UnitGroup("InfestedAbomination", gv_pLAYER_01_USER, RegionFromId(18), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 1)))) {
        Wait(0.25, c_timeGame);
    }
campaigns/swarm.sc2campaign/base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map — MapScript.galaxy:1998
    }
    UnitGroupLoopEnd();
    while (!((((CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 1))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 2))) == 2) && (CliffLevel(UnitGetPosition(UnitGroupUnit(gv_aberrationGroup, 3))) == 2)) || (UnitGroupCount(UnitGroup("InfestedAbomination", gv_pLAYER_01_USER, RegionFromId(18), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 1)))) {
        Wait(0.25, c_timeGame);
    }
campaigns/swarm.sc2campaign/base.sc2maps/maps/campaign/swarm/evolution/zevolutionmutalisk.sc2map — MapScript.galaxy:2391
    UnitGroupLoopBegin(gv_aberrationGroup);
    for ( ; !UnitGroupLoopDone() ; UnitGroupLoopStep() ) {
        if ((CliffLevel(UnitGetPosition(UnitGroupLoopCurrent())) == 3) && (libNtve_gf_UnitInRegion(UnitGroupLoopCurrent(), RegionFromId(3)) == false) && (libNtve_gf_UnitInRegion(UnitGroupLoopCurrent(), RegionFromId(9)) == false)) {
            return true;
        }
campaigns/swarm.sc2campaign/base.sc2maps/maps/campaign/swarm/zexpedition03.sc2map — MapScript.galaxy:9361
        for (autoD7A3A7E0_i = 1; autoD7A3A7E0_i <= autoD7A3A7E0_n; autoD7A3A7E0_i += 1) {
            lv_randomPoint = RegionRandomPoint(RegionFromId(56));
            if ((CliffLevel(lv_randomPoint) == 1)) {
                libNtve_gf_CreateExplosionAtPoint(libNtve_ge_ExplosionSize_Large, libNtve_ge_ExplosionType_Protoss, RegionRandomPoint(RegionFromId(56)));
                break;
campaigns/swarm.sc2campaign/base.sc2maps/maps/campaign/voidprologue/voidprologue02.sc2map — MapScript.galaxy:837
                    if ((UnitIsAlive(lp_powerSource) == true)) {
                        lv_warpPoint = RegionRandomPoint(RegionCircle(UnitGetPosition(lp_powerSource), 3.5));
                        while ((CliffLevel(lv_warpPoint) != CliffLevel(UnitGetPosition(lp_powerSource)))) {
                            lv_warpPoint = RegionRandomPoint(RegionCircle(UnitGetPosition(lp_powerSource), 3.5));
                        }
campaigns/swarm.sc2campaign/base.sc2maps/maps/campaign/voidprologue/voidprologue02.sc2map — MapScript.galaxy:837
                    if ((UnitIsAlive(lp_powerSource) == true)) {
                        lv_warpPoint = RegionRandomPoint(RegionCircle(UnitGetPosition(lp_powerSource), 3.5));
                        while ((CliffLevel(lv_warpPoint) != CliffLevel(UnitGetPosition(lp_powerSource)))) {
                            lv_warpPoint = RegionRandomPoint(RegionCircle(UnitGetPosition(lp_powerSource), 3.5));
                        }
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:677
        if (onGround > 0) {
            cliffLevel = CliffLevel(here);
            
            //  Only switch if there is a ground target on the same or lower cliff level so that
mods/core.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:684
            while (onGround > 0) {
                there = UnitGetPosition(UnitGroupUnit(targetGroupGround, onGround));
                testCliffLevel = CliffLevel(there);
                if (cliffLevel >= testCliffLevel) {
                    return there;
mods/novastoryassets.sc2mod — base.sc2maps/maps/campaign/nova/nova02.sc2map/MapScript.galaxy:903
    for (auto15AD87D2_i = 1; auto15AD87D2_i <= auto15AD87D2_n; auto15AD87D2_i += 1) {
        lv_ravagerTargetPoint = RegionRandomPoint(lp_ravagerShotTargetRegion);
        if ((CliffLevel(lv_ravagerTargetPoint) == CliffLevel(RegionGetCenter(lp_ravagerShotTargetRegion)))) {
            return lv_ravagerTargetPoint;
        }
mods/novastoryassets.sc2mod — base.sc2maps/maps/campaign/nova/nova02.sc2map/MapScript.galaxy:903
    for (auto15AD87D2_i = 1; auto15AD87D2_i <= auto15AD87D2_n; auto15AD87D2_i += 1) {
        lv_ravagerTargetPoint = RegionRandomPoint(lp_ravagerShotTargetRegion);
        if ((CliffLevel(lv_ravagerTargetPoint) == CliffLevel(RegionGetCenter(lp_ravagerShotTargetRegion)))) {
            return lv_ravagerTargetPoint;
        }
mods/novastoryassets.sc2mod — base3.sc2maps/maps/campaign/nova/nova07.sc2map/MapScript.galaxy:4173
        auto55E94B5C_var = UnitGroupUnitFromEnd(auto55E94B5C_g, auto55E94B5C_u);
        if (auto55E94B5C_var == null) { break; }
        if (((CliffLevel(UnitGetPosition(auto55E94B5C_var)) > 2) || (PathingType(UnitGetPosition(auto55E94B5C_var)) == c_pathingBuilding))) {
            UnitRemove(auto55E94B5C_var);
        }
mods/novastoryassets.sc2mod/base.sc2maps/maps/campaign/nova/nova02.sc2map — MapScript.galaxy:903
    for (auto15AD87D2_i = 1; auto15AD87D2_i <= auto15AD87D2_n; auto15AD87D2_i += 1) {
        lv_ravagerTargetPoint = RegionRandomPoint(lp_ravagerShotTargetRegion);
        if ((CliffLevel(lv_ravagerTargetPoint) == CliffLevel(RegionGetCenter(lp_ravagerShotTargetRegion)))) {
            return lv_ravagerTargetPoint;
        }
mods/novastoryassets.sc2mod/base.sc2maps/maps/campaign/nova/nova02.sc2map — MapScript.galaxy:903
    for (auto15AD87D2_i = 1; auto15AD87D2_i <= auto15AD87D2_n; auto15AD87D2_i += 1) {
        lv_ravagerTargetPoint = RegionRandomPoint(lp_ravagerShotTargetRegion);
        if ((CliffLevel(lv_ravagerTargetPoint) == CliffLevel(RegionGetCenter(lp_ravagerShotTargetRegion)))) {
            return lv_ravagerTargetPoint;
        }
mods/novastoryassets.sc2mod/base3.sc2maps/maps/campaign/nova/nova07.sc2map — MapScript.galaxy:4173
        auto55E94B5C_var = UnitGroupUnitFromEnd(auto55E94B5C_g, auto55E94B5C_u);
        if (auto55E94B5C_var == null) { break; }
        if (((CliffLevel(UnitGetPosition(auto55E94B5C_var)) > 2) || (PathingType(UnitGetPosition(auto55E94B5C_var)) == c_pathingBuilding))) {
            UnitRemove(auto55E94B5C_var);
        }
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:653
        if (onGround > 0) {
            cliffLevel = CliffLevel(here);
            
            //  Only switch if there is a ground target on the same or lower cliff level so that
mods/starcoop/starcoop.sc2mod — base.sc2data/TriggerLibs/Tactical/TactTerrAI.galaxy:660
            while (onGround > 0) {
                there = UnitGetPosition(UnitGroupUnit(targetGroupGround, onGround));
                testCliffLevel = CliffLevel(there);
                if (cliffLevel >= testCliffLevel) {
                    return there;