Google Translate:

Script by 3ICE.




  • 08Dec

    3ICE’s Sliding System for RoC is a two dimensional, coordinate-based movement system for Warcraft III RoC and TFT. It is the perfect one step solution for creating Ice/Sliding Mazes in both Reign of Chaos and The Frozen Throne without having to take advanced physics in school. (Because developing your own would require that!) It is the only decent system around and it even works in RoC, is lagfree, perfectly optimized, fast and reliable. The included TerrainKill feature frees you from the tedious task of creating a thousand kill-regions.


    • RoC compatible!
    • Slides any number of objects (Tested with 600+ sliding units, though most people will only need 11.)
    • Slides anything: units, buildings, and even doodads.
    • One click install
    • No settings needed at all. Everything works automatically.
    • Advanced options are available for those who like to tweak things.
    • Lagfree (My system can handle hundreds of units without any loss of performance.)
    • Optimized code
    • No JASS knowledge is required. Although the system was written in JASS, settings are kept in a separate GUI trigger.
    • Built-in TerrainKill, you will never have to make kill-regions in the future.
    • Faster than any other sliding system (Direct access to X and Y coordinates > working with positions)
    • Used in great maps like 3ICE's Maze Designer, 3ICE's Realistic Sliding.
    • Comes with an easter egg (realistic sliding mode)
    • Oh, and it's Free

    Get your copy today: 3ICE’s Sliding System for RoC v3.w3m (It is worth a try even if you aren't a map maker)

    This following description is available inside the map too:

    3ICE: Hello!
    You: Hi, what do I do with this?
    3ICE: First of all, you should press CTRL+F9 to test this map and see if it suits your needs.
    3ICE: If it does, then use(import) it:
     You should have two maps open: This and Your own map.
     In the MAIN window of the World editor, navigate to: File ==> Preferences... ==> General
     Find "Automatically create unknown variables while pasting trigger data"
     It is not checked by default, but you might have already enabled it previously. Check it now.
     (It creates all the variables my system will use (Slide, TerrainKill, Speed and H))
     Switch back to the Trigger Editor and right click the category labeled "3ICE's Sliding System"
     Select Copy
     Switch to your map using Window ==> YourMap.w3m
     Paste the category anywhere you want, I would place it on the top.
    Additional things you might want to do:
    You: I want to slide monkeys/cows/bunnies. Can I do that?
    3ICE: Yes you can! Here's how it's done:
    3ICE: Look at the trigger called Setup1
    3ICE: Every unit that is added to the "H" unit group will slide on ice and die on snow.
    3ICE: So if your heroes aren't Demon Hunters, you will have to change H:
    3ICE: Set H = (Units of type Monkey/Cow/Bunny)
    You: Sliding is too slow, can I make it go faster?
    3ICE: You can. The default speed factor is 4.00
    3ICE: Very slow: 1.50 Slow: 2.30 Normal: 4.00 Fast: 5.50 Very Fast: 6.50 Extreme: 8.00
    3ICE: Additionally you can set Speed to 0.00 to freeze units on ice :)
    You: Omg what is all that code in the Setup2 trigger?
    3ICE: It is JASS, but you will have no trouble understanding it.
    You: I doubt I will ever...
    3ICE: Don't worry I'll help:
    3ICE: If you have your map's tileset (Advanced ==> Modify Tileset...) set to Northrend
    3ICE: And you used Ice for Sliding and Snow for killing...
    3ICE: Then you don't even have to change anything in Setup2 because those are the default values!
    3ICE: In case you have an other tileset, fear not!
    3ICE: Let's say you have Lordaeron Summer Grass for killing:
    3ICE: Customizing my system is as simple as changing:
    3ICE: set udg_TerrainKill = 'Nsnw'
    3ICE:            to
    3ICE: set udg_TerrainKill = 'Lgrs'
    You: What's up with this Nsnw and Lgrs?
    3ICE: Nsnw stands for Northrend Snow and Lgrs stands for Lordaeron Grass.
    3ICE: You can find more codes in the Setup2 trigger's header comments.
    You: What if the terrain I used isn't there?
    3ICE: Further help is available at: (Make a new topic, stating your question)
    You: Thanks.
    3ICE: No problem, I am always happy to help.
    Q: Why is Setup1 disabled?
    A: It isn't. It just contains disabled actions.
    Q: How can I turn on disabled actions?
    A: Right click ==> Enable function
    Q: What if I don't need the disabled actions?
    A: Right click ==> Delete
    Q: May I delete comments and this ReadMe?
    A: Yes, but you must keep the credits unchanged. I'd also appreciate if I was credited on the loading screen:
       Sliding triggers by 3ICE •
    Q: Can you make me a personalized sliding system for my knockback spell, etc?
    A: Yes, I might. Go to and make a new topic, stating your question
    Q: I don't want terrainkill!
    A: Remove the two marked lines from the "Slide" trigger. (Advanced users may also remove the TerrainKill variable)
    Q: Can I force players to buy a pair of IceSkates before they could steer?
    A: No, but let me know if you really need this feature and I'll make you a customized system.
       Go to and create a new topic
    Q: Can buildings slide?
    A: Yes, changed their pathing map to none and add them to the "H" unit group.
    Q: What will happen if I set the speed factor to 9999.99?
    A: Nothing dangerous. Units will jump to the map corner they are facing
    Q: Can I change the sliding speed during the game?
    A: Yes, simply use "Set Speed = 4.00".
    Q: Can I change the TerrainKill tile during the game?
    A: Yes, use: "Custom script: set udg_TerrainKill = 'Nsnw'" You can change the Slide terrain too.
       This will make your map require TFT, so if you are making a maze to RoC players convert your trigger to JASS:
       Edit >> Convert to Custom Text
    Q: Can't I use a regular GUI function for changing the TerrainKill tile?
    A: No. You must use Custom Script or a trigger converted to JASS.
    Q: How much better is your system than others?
    A: I use precalculated constants instead of PolarProjectionBJ() (Point With Polar Projection).
       The code is fully optimized. It doesn't create any memory leaks.
       No processing power is wasted on Locations like in all other systems.
       I work directly with the UnitX and UnitY values. This makes my system the best.
    Q: How can I stress test this system?
    A: Remove all snow except the edges, place 100 Demon Hunters all over the place and test the map. It won't lag.
    Q: My computer is very bad. Can I do anything?
    A: Yes, change the periodic timer in the "Slide" trigger from 0.01 to 0.03:
       call TriggerRegisterTimerEvent(gg_trg_Slide,0.01,true)
       call TriggerRegisterTimerEvent(gg_trg_Slide,0.03,true)
       and triple the Speed factor: Set Speed = 4.00 to Set Speed = 12.00
    Q: I heard there was a cool realistic mode you invented!
    A: Yes, remove the line "call IssueImmediateOrder(u,"stop")" from the "Slide" trigger and let the result amuse you.

    Download: 3ICE’s Sliding System for RoC v3.w3m (This is the same link as the one at the top. It is provided only for convenience and easy access)

    Posted by 3ICE @ 9:06 am

47 Responses

  • 3ICE Says:

    Read previous comments at (For v1 and v2)
    Put new comments here!

  • Maxximus Says:

    Can you make a non-jass version please? Because I want to make other ice terrains, but I cant read jass.
    And I'd also like to place death-regions to allow diagonal terrain.

    Edited by 3ICE: Merged triplepost. + Fixed grammar. + Removed useless sentences. + Fixed sentence structure so that they make sense now.

  • 3ICE Says:

    There is no reason to make a GUI version of this system. Comments (the lines starting with "//") explain everything. Read the comments.

  • willy Says:

    how do you make it work on many tilesets att once? ex if i want to slide on every tile except one

  • 3ICE Says:
    That happens to be very simple to do :) I'm glad you asked it. All it takes is switching == to != in two triggers.

    In the Slide trigger, replace the line
    and in the Setup2 trigger set usg_Slide to the terrain you don't want to slide on.

    In the Steer trigger, replace the lines
    and that was all.
  • willy Says:

    On the Steer theirs 2 with if(GetTerrainType(x,y)==udg_Slide)and(IsUnitInGroup(u,udg_H))then
    do i change both?

  • 3ICE Says:

    Yes, change both. (Function Turn is for right clicking on units, and function Steer is for right clicking on terrain.)

  • Mike Says:

    What if you want only two types of terrains to be slideable at the same time?

  • 3ICE Says:
    A few changes will be needed…

    In the Slide trigger, replace the line
    // Slide2 is the second terrain type you want to slide on. It has to be created (Variable Editor) and
    // initialized (Setup2 trigger) exactly like the Slide variable.

    In the Steer trigger, replace the lines

    // It might be faster to introduce a new local variable now,
    // local t=GetTerrainType(x,y)
    // and use that instead of calling GetTerrainType(x,y) twice, but only do this if you know JASS.
    // It is too small improvement to be important to you.

  • Mike Says:

    Thanks for the help it really work.What do you mean about ( local t=GetTerrainType(x,y) )? What will that do or.. help with?

  • 3ICE Says:

    I told you to ignore it if you don't know JASS.

  • caron Says:

    How can I open 2 maps at the same time?

    Edited by 3ICE: Removed useless words, fixed capitalization and sentence structure. Added "the".

  • 3ICE Says:

    If you can open one, you can open two. If you can't, then you shouldn't use my Sliding System.

  • caron Says:

    Please help me… How can you open 2 maps at the same time? When I click on the 2nd map, it says that worldedit is already opened.

    Never mind, I did something else and it worked.. Thanks for the fast answer! (Please remove my posts.)
    Nice system =)

    Edited by 3ICE: Merged doublepost. + Fixed grammar. + Removed useless sentences. + Fixed sentence structure.
    And I will not remove your comments, because they are funny (even after I fixed your grammar).

  • Thurst4blood Says:

    Nice Sliding System! I used it in many maps.

  • MaZe_FoReVeR Says:

    I have been thinking on making a maze map, and jus needto now some triggers but i want to make a tft map but i wan to play it on ROC…

    I wunder if u cud helpme anyone. (: it wud b lovely coz i rely wana prove my mates wrong coz they sayd i shit at mapp making

    But I made dialogs few patrols a jass death regins
    Collison i need to know
    unit spewn i have
    viziblity i have form limiter
    and some more others trigger plzz… (:

  • 3ICE Says:

    Your mates are right. However with lots of practice and tutorial-reading you can improve.

    A few things to note:
      • You shit at [sic] spelling and grammar too.
      • If you got the Visibility trigger from LimiteR's tutorials, then why didn't you get the Collision trigger as well? Its the second item on the list…
      • Making TFT maps playable in RoC is pointless.
      • You live in Sheffield, UK don't you?
      • i usuly corect others's speelling, butt urs is was justt to much too ahndle.

  • AustralianBeast Says:

    Is there a way so i can have two types of ice at the same time? For example, one that only allows sliding in one direction and another that you can steer on

  • 3ICE Says:

    Yes, there is. Just combine the stuff from my previous comments.

  • Kav Says:

    I don't understand how to make more units able to slide.

    Set H = (Units of type grunt)
    Set H = (Units of type peon)

    That doesn't work for me. Please help.

    Edited by 3ICE: Removed unnecessary "to be", capitalized both sentences, fixed spelling of "dont" and "dosnt", removed a self bashing statement and his obviously fake email address and website. You don't need to fill everything in. :)

  • 3ICE Says:

    Instead of setting H to a new group every time (thus erasing your previous settings), use the actions I already provided:

    Unit Group - Add Unit to H
    Unit Group - Add Unit Group to H

    Good luck!

  • Kav Says:


    Edited by 3ICE: Removed obviously fake email address, website, and the excess amount of exclamation marks.

  • Polar Says:

    Thank you so much for this! You are right when saying that the // comments explain everything, I even figured out how to make 2 types of ice with different speed myself.
    I will put your name and link into the loading screen, even though I probably wont use the map on

    Edited by 3ICE: Fixed spelling/capitalization of "i", "figued", "difrent", another "i", and "battlenet".

  • ikillforeyou Says:

    How would you, fortel, make backwards ice? I tried making the slide speed to negative, but you weren't able to go onto the ice, because it instantly pushed you back. How would i fix this?

  • 3ICE Says:

    Wtf is "fortel"?

    This has already been discussed (and solved twice) here. Look at post #1133 on page 2, then at post #1130 on page 1.

  • ikillforeyou Says:

    And doesn't this system leak alot of points? i dont see you setting your local variables to null after either, are you hiding them somwhere, or am i missing somthing?

  • 3ICE Says:

    Learn to spell!

    "alot" –> a lot
    "i" –> I
    "dont" –> don't
    "somwhere" –> somewhere
    "somthing" –> something

    Even thinking that I could release a system with memory leaks in it offends me. Don't do it again.

    Did the thought to check whether my system uses points at all occur to you in the first place? Because I don't see any points anywhere except local location p=GetUnitLoc(GetOrderTargetUnit()), which is nulled properly; set p=null.

  • Thurst4blood Says:

    3ICE is right there, I looked myself and theres only one/1 null sentence.

    Nice system though 3ICE.

    PS: Any new maps lately?

  • Nike2008 Says:

    There I go gives me all kinds of script errors when starting the game: (

  • 3ICE Says:

    @Thurst4blood: Because I am only using only one/1 (What is the point of saying it that way?) leaky variable. The rest are integers and reals, which do not leak. This is one of the many reasons why my system is better than others.

    @Nike2008: Your comment does not help with anything whatsoever. I cannot see any script errors, because you forgot to post them. I cannot tell you what you messed up, because you haven't told me anything meaningful about it. Why don't you try?

  • Thurst4blood Says:

    How do you make color trigger and name trigger?

    Edited by 3ICE: Changed colour into color.

  • 3ICE Says:

    All of the coloring functions from Maze Designer:
    function color1 takes nothing returns nothing
    call SetUnitColor(GetEnumUnit(),GetPlayerColor(Player(S2I(SubString(GetEventPlayerChatString(),7,9))-1)))
    function color2 takes nothing returns nothing
    call SetUnitVertexColor(GetEnumUnit(),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),7,10))),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),10,13))),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),13,16))),255)
    function color3 takes nothing returns nothing
    call SetUnitVertexColor(GetEnumUnit(),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),7,10))),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),10,13))),R2I(2.55*S2R(SubString(GetEventPlayerChatString(),13,16))),R2I(2.55*(100-(S2R(SubString(GetEventPlayerChatString(),16,19))))))

    Name function from my old JASS experiments:
    function name takes nothing returns nothing
    call SetPlayerName(GetTriggerPlayer(),SubString(GetEventPlayerChatString(),7,StringLength(GetEventPlayerChatString())))

    Did you forget how to google?

  • Thurst4blood Says:

    I dont understand JASS =( Please help ASAP.

    Best Regards

  • Dotoriton Says:

    Did you make the 'ICE Slide maker' map it was a map where you could make your own slide online with your friends

  • 3ICE Says:

    If you mean "3ICE's Maze Designer", then yes.

    But if you are sure it was called "ICE Slide maker", then i don't know what you are talking about, because no such map exists in any map database indexed by Google.

  • Y.Ess Says:

    I made all those things that you wrote too mike, but it do not work. The system all time stops loading at "variables". I made one more variable and that is "slide2" and one more trigger, a copy of slide. I need more variables or need another trigger to change? Pls post an answer for me,
    Y.Ess [mby you still know me from gaming]

    Edited by 3ICE: Removed quote, did not bother fixing grammar.

  • 3ICE Says:

    Your comment makes no sense…

  • kawan Says:

    OMG ty 3ICE (still best creator :D) it worked alot you (still) ROCK!

    bye for now
    kawan333 (your buddy :D)

  • DemonSlayer98 Says:

    How would I go about editing this system to make units slide when they enter regions instead of entering terrain types?

    Actually, I'd like to keep the terrain type slide functionality as well for a different part of the map. (Not sure if this matters.. just thought I'd let you know.)

    Edited by 3ICE: Merging doublepost.

  • Thurst4blood Says:

    Can I ask, how to make it so that if the hero isnt on the slide terrain, he doesn't stop either?

    Basically what i mean is, How to make a hero keep sliding without stopping on Example; Cityscape - Grass?

    It would be most kind if you helped.

  • SHiNNiNG_FaiTH Says:

    hey 3ICE its faith, can you please code it so i can ctrl c ctrl v to control the "tightness" of your terrain kill? i love this very much however the "regions" are to tight to were i cant go diagnol unless i have a double path witch seems to still not work out to great.

    <3 your body SHiNNiNG_faiTH.


  • fake_name123 Says:

    you just rock o:
    Edited by 3ICE: Deleting doublepost, removing forged email and url

  • 3ICE Says:

    Thank you.

  • Thurst4blood Says:


    I was wondering.. Is it possible to make your terrain kill an adjustable one, like offsets? and change the offset to a real array for players to type like -killdistance ##??

  • 3ICE Says:

    Yes, it is possible. Basic JASS knowledge required.

  • Thurst4blood Says:

    I know some jass, it's just working out how to make such a thing possible. :D thanks for the fast reply O_O


    Alright i've made a slight change in your slide trigger, i've added these bits of text:

    local real playeroffset

    instead of local real x=GetUnitX(u) and local real y=GetUnitY(u) ive done this:

    local real x=GetUnitX(u) * playeroffset
    local real y=GetUnitY(u) * playeroffset

    Would this work?


    nah it aint working, confused like hell lol..

    Edited by 3ICE: Merged triplepost. Please use my forum for longer discussions.

  • R. D. Says:

    Edited by 3ICE: You have been banned for spamming.

Leave a Comment

Please note: If you post more than 5 URLs, then automated moderation will delay your comment for investigation. There is no need to resubmit the comment as it will be approved if found to be appropriate.