• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Help with Editing Abyss tile

Status
Not open for further replies.
Level 8
Joined
Jun 26, 2019
Messages
318
Hello all. I am starting to learn how to edit and import the terrain tiles. I need help how to editing the Abyss tile from Outland's terrains. Because I need somehow to edit the Abyss to be into blue pathing instead of pink pathing. The Abyss's pathing is pink, unwalkable and unbuildable. I want to edit the Abyss tile to be walkable with unbuildable. I am building a new Star War Battleships game. I have an idea about this Abyss tile. It's look so cool in Reforged mode for Starcraft game. But, the problem is I couldn't get ground units on Abyss tile because they are unwalkable. I need help how to edit and import the Abyss tile to be walkable with unbuildable. Like those blue and pink pathings in the picture below.

upload_2020-3-27_17-25-8.png
 
Extract the Terrain.slk from the CASC

Directory: TerrainArt/Terrain.slk

Terrain.slk allows you to modify terrain tile pathing.

Once you're done editing the .slk create a folder (name it "TerrainArt") in Warcraft III directory and put the customized Terrain.slk inside the folder you created, then restart the editor, that should change the pathing of the tiles when you load your map in the Editor.

Similar topic: Modifying Terrain Pathability in Reforged
 
Last edited:
Level 8
Joined
Jun 26, 2019
Messages
318
I am confused. Wait. What I am trying to do is to extract the Abyss tile from CASC, and import it to map, and then rename the pathing to be one of tiles that is walkable, you know? How can I do this? I am lost. I don't know how to modify the Terrain.slk, since you said I can modify it, but what do you mean, I can modify it? I don't think I have heard that before yet.

EDIT: Okay, I just found out about the terrain.slk. I have to open it in the notepad, and find "Abyss" codes, and change the pathing in there. Got it. Thanks!

upload_2020-3-27_22-2-59.png


upload_2020-3-27_22-12-45.png


:peasant-thumbs-up-cheers:
 
Last edited:
You can use Microsoft Excel instead of Notepad.

Just remember to remove the custom Terrain.slk when you're done editing your map since it will affect other maps you open aswell (both in game and in the editor). The pathing is saved in your map everytime you hit save in the editor, when you're done editing your map you can just delete the custom Terrain.slk (the custom tile pathing will still be saved in your map even if you already removed the custom Terrain.slk)
 
Last edited:
Find this line in the DEMOCODE trigger.

Code:
call RigidBody_TerrainUtils.SetTerrainTypeFriction('Adrd', 2.0)

Change Adrd to the terrain ID of the Outland Abyss, pretty sure you can see the terrain IDs in the Terrain.slk. It's hard to miss since it's always four characters.

Edit: Outland Abyss' terrain ID is Oaby.
 
Last edited:
Level 8
Joined
Jun 26, 2019
Messages
318
Okay... almost worked out, but now the problem is, little different from Ice terrain for Abyss terrain, because when I changed it to Abyss from Ice, the stopping unit is too fast sliding when stopping the unit. Originally it was slowly to complete stop when stopping the unit in Ice terrain, but now in Abyss terrain, it kept sliding too fast when stopping the unit. :(

Now I am trying to figure out how to fix it on Abyss terrain like it used to be in Ice terrain... or, where is the code that changes the speed of acceleration and decelerating for slide effect?? I like the Ice terrain one that is in this one as shown in picture below because I liked how the accelerating, decelerating, and sliding effects worked out on this Ice terrain.

upload_2020-3-28_0-52-59.png


upload_2020-3-28_0-44-53.png


EDIT: FOUND IT! It's in the "RigidBody" on configurations. It's perfect! All good! Now, I am going to save everything I fixed so far and try install it to my own map and test it out. Thanks for your help! :)

upload_2020-3-28_1-31-42.png
 
Last edited:
Level 8
Joined
Jun 26, 2019
Messages
318
@Strydhaizer
Now, since you pulled this off and fixed all my issues, I was wondering if you can understand and help me out with one of my old forums about the pushing effect. Here the link below:

Help with Push Units

I want to have a unit with push effect as aura around the unit, to push other units, like Carrack's barrier ability in Battleships Crossfire, you know? If you don't understand, I will go play Battleships Crossfire to get Carrack, and do the ability test with taking a GIF video of it to show you what's it looks like that I wanted it to be in my push ability trigger that the link I just sent you above.
 
I'm gonna be honest it's really hard for me to help you here since I'm currently using mobile and I have no access to my computer until the quarantine in my area ends. (Off topic).

You mean you want to push all the units that goes near the MainUnit/Hero that has an aura?

If that's a yes then you can create a periodic trigger (that loops every 0.03 seconds, and in Actions create a temporary unit group, pick all units that goes near the hero/main unit (500 should be fine).
- Let's assume the hero has the aura.

Then you can use this knockback system (I personally use this. It is substandard but you can easily fix the issues pointed by the moderator in the thread since it's GUI - it still works even if you don't fix the issues mentioned by the moderator).

KB System by Paladon: GUI Knockback System [Paladon] v.1.60

Then put all actions in the trigger "Actions to Apply" inside the temporary unit group you created.

Once that's done change
Set VariableSet KBA_TargetUnit = (Target unit of ability being cast)
To
Set VariableSet KBA_TargetUnit = (Picked Unit)

Now every unit that goes near the hero will be pushed backwards.

EDIT:

The triggers should look like this

Trigger 1

Event
Every 0.03 seconds
Actions
Unit Group - Pick all unit in AuraGroup and do Actions
> Set TempUnit = (Picked Unit)
> Set TempPoint = Position of (Picked Unit)
> Set TempGroup = (Pick all units within 250 from TempPoint).
> Unit Group - Pick all unit in TempGroup and do Actions
> > Set KBA_Caster = TempUnit
> > Set KBA_Target = (Picked Unit)
> > Set KBA_Level = 1
> > Set KBA_Speed = 7.00 (you can modify this to your preference)
> > Set KBA_DistancePerLevel = 750
> > Trigger - Run Cast_A_Knockback
> Custom Script: call RemoveLocation(udg_TempPoint)
> Custom Script: call DestroyGroup(udg_TempGroup)

Trigger 2

Event
A unit Learns an ability
Condition
(Learned ability) Equals to <Your Aura>
Actions
Unit Group - Add (Learning Hero) to AuraGroup
 
Last edited:
Level 8
Joined
Jun 26, 2019
Messages
318
I like this trigger I just pasted, but I still don't understand the trigger you showed me, but can you fix this trigger to be working properly like I wanted it to be? Like you just fixed it, but how do I do it in this? Here the triggers below. Otherwise, I will test the knockback system and do the triggers that you just showed me.

  • Push Ball
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • (Unit-type of (Attacking unit)) Equal to Arcane Tower
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • GB_Indexs[0] Equal to 0
        • Then - Actions
          • Trigger - Turn on Push Ball Loop <gen>
        • Else - Actions
      • Set VariableSet GB_Indexs[0] = (GB_Indexs[0] + 1)
      • Set VariableSet GB_Indexs[1] = (GB_Indexs[1] + 1)
      • -------- Setting Everything --------
      • -------- --------------------------------------------------------------------------------- --------
      • -------- Don't Change anything here --------
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet GB_Caster[GB_Indexs[0]] = (Triggering unit)
      • Set VariableSet GB_Casting_Point[GB_Indexs[0]] = (Center of Region 000 <gen>)
      • Set VariableSet GB_Target_Point = (Center of Region 002 <gen>)
      • Set VariableSet GB_Angle[GB_Indexs[0]] = (Angle from GB_Casting_Point[GB_Indexs[0]] to GB_Target_Point)
      • Set VariableSet GB_Distance[GB_Indexs[0]] = 3000.00
      • Set VariableSet GB_Reached_Distance[GB_Indexs[0]] = 0.00
      • Set VariableSet GB_Range[GB_Indexs[0]] = 0.00
      • Set VariableSet GB_Off_Boolean[GB_Indexs[0]] = True
      • -------- --------------------------------------------------------------------------------- --------
      • -------- Here you can change the Speed of the ball --------
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet GB_Moving_Range[GB_Indexs[0]] = 10.00
      • -------- --------------------------------------------------------------------------------- --------
      • -------- This is where you change the Turning Speed (to make them do circle) --------
      • -------- 0 = no circle just pushing --------
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet GB_Turning_Rate[GB_Indexs[0]] = 0.00
      • -------- --------------------------------------------------------------------------------- --------
      • -------- This is for changing the Damage (this is a damage every 0.03 sec) --------
      • -------- The 250 AOE is Multiplied by the Level... --------
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet GB_Damage_250_AOE = 20.00
      • Set VariableSet GB_Damage_500_AOE = 20.00
      • -------- --------------------------------------------------------------------------------- --------
      • -------- This is for the special Effects --------
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet GB_Special_Effect_Units = Abilities\Weapons\FaerieDragonMissile\FaerieDragonMissile.mdl
      • Set VariableSet GB_Special_Effect_Ball = Abilities\Spells\NightElf\Blink\BlinkCaster.mdl
      • -------- --------------------------------------------------------------------------------- --------
      • -------- This is the Knockback Speed --------
      • -------- --------------------------------------------------------------------------------- --------
      • Set VariableSet GB_Knockback_Speed = 20.00
      • -------- --------------------------------------------------------------------------------- --------
      • -------- Don't change anything in the Push Ball Loop Trigger --------
      • -------- --------------------------------------------------------------------------------- --------
      • Custom script: call RemoveLocation(udg_GB_Target_Point)
  • Push Ball Loop
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer GB_Indexs[2]) from 1 to GB_Indexs[0], do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • GB_Off_Boolean[GB_Indexs[2]] Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • GB_Reached_Distance[GB_Indexs[2]] Greater than or equal to GB_Distance[GB_Indexs[2]]
                • Then - Actions
                  • Custom script: call RemoveLocation(udg_GB_Casting_Point[udg_GB_Indexs[2]])
                  • Set VariableSet GB_Off_Boolean[GB_Indexs[2]] = False
                  • Set VariableSet GB_Indexs[1] = (GB_Indexs[1] - 1)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • GB_Indexs[1] Equal to 0
                    • Then - Actions
                      • Set VariableSet GB_Indexs[0] = 0
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                • Else - Actions
                  • Set VariableSet GB_Range[GB_Indexs[2]] = (GB_Range[GB_Indexs[2]] + GB_Moving_Range[GB_Indexs[2]])
                  • Set VariableSet GB_Moving_Point = (GB_Casting_Point[GB_Indexs[2]] offset by GB_Range[GB_Indexs[2]] towards GB_Angle[GB_Indexs[2]] degrees.)
                  • -------- Special Effect of the Ball --------
                  • Special Effect - Create a special effect at GB_Moving_Point using GB_Special_Effect_Ball
                  • Special Effect - Destroy (Last created special effect)
                  • Set VariableSet GB_Unit_Group = (Units within 600.00 of GB_Moving_Point matching ((((Matching unit) is alive) Equal to True) and ((((Owner of (Matching unit)) is an ally of (Owner of (Matching unit)).) Equal to True) and (((Matching unit) is A structure) Equal to False))).)
                  • Unit Group - Pick every unit in GB_Unit_Group and do (Actions)
                    • Loop - Actions
                      • -------- 500 AOE range damage --------
                      • Unit - Cause GB_Caster[GB_Indexs[2]] to damage (Picked unit), dealing GB_Damage_500_AOE damage of attack type Spells and damage type Normal
                      • -------- Setting everything to make move the units --------
                      • Set VariableSet GB_Custom_Value = (Custom value of (Picked unit))
                      • Set VariableSet GB_Unit[GB_Custom_Value] = (Picked unit)
                      • Set VariableSet GB_Unit_Point[GB_Custom_Value] = (Position of GB_Unit[GB_Custom_Value])
                      • -------- Special Effect on the units --------
                      • Set VariableSet GB_100 = (Random integer number between 1 and 100)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • GB_100 Less than or equal to 50
                        • Then - Actions
                          • Special Effect - Create a special effect at GB_Unit_Point[GB_Custom_Value] using GB_Special_Effect_Units
                          • Special Effect - Destroy (Last created special effect)
                        • Else - Actions
                      • Set VariableSet GB_Unit_Angle[GB_Custom_Value] = (Angle from GB_Moving_Point to GB_Unit_Point[GB_Custom_Value])
                      • Set VariableSet GB_Unit_Moving_Point[GB_Custom_Value] = (GB_Unit_Point[GB_Custom_Value] offset by GB_Knockback_Speed towards (GB_Unit_Angle[GB_Custom_Value] + GB_Turning_Rate[GB_Indexs[2]]) degrees.)
                      • -------- Moving the units --------
                      • Unit - Move GB_Unit[GB_Custom_Value] instantly to GB_Unit_Moving_Point[GB_Custom_Value]
                  • -------- The Group that will recieve the 250 AOE range Damage --------
                  • Set VariableSet GB_Unit_Group_2 = (Units within 600.00 of GB_Moving_Point matching ((((Matching unit) is alive) Equal to True) and ((((Owner of (Matching unit)) is an ally of (Owner of (Matching unit)).) Equal to True) and (((Matching unit) is A structure) Equal to False))).)
                  • Unit Group - Pick every unit in GB_Unit_Group_2 and do (Actions)
                    • Loop - Actions
                      • -------- Dealing the damage --------
                  • -------- Setting the time --------
                  • Set VariableSet GB_Reached_Distance[GB_Indexs[2]] = (GB_Moving_Range[GB_Indexs[2]] + GB_Reached_Distance[GB_Indexs[2]])
                  • -------- Removing the Leaks --------
                  • Custom script: call RemoveLocation(udg_GB_Unit_Moving_Point[udg_GB_Custom_Value])
                  • Custom script: call RemoveLocation(udg_GB_Unit_Point[udg_GB_Custom_Value])
                  • Custom script: call RemoveLocation(udg_GB_Moving_Point)
                  • Custom script: call DestroyGroup(udg_GB_Unit_Group)
                  • Custom script: call DestroyGroup(udg_GB_Unit_Group_2)
            • Else - Actions

EDIT1: Sigh. The triggers you showed me. It's not working properly. I guess I made mistakes in triggers. I am not sure. The unit pushing itself to north of map, I couldn't move it. Forget this trigger. I really want to work on my trigger I just showed you the triggers above. I really like it. But, I want it to be a unit with aura, and be controllable to go anywhere this unit want to go or being ordered to go to. For now, this trigger is just special effect itself and I couldn't control it, and it is not a unit yet. I want it to be a unit with all of this trigger, to be able to push any units around it, you know. Check out the triggers above to see if you can fix it to turn it into a unit with aura from special effect.

EDIT2: @Strydhaizer Grrrrr. I tried everything what you said, and it keep bouncing the unit to all the way north. I couldn't control the unit. I was wondering if you can fix the triggers shown above? The reason I wanted this trigger is because it's connected to my map. So. I need somehow fix it to turn it into the aura ability instead of special effect, you know. I used the special effect for to block units from entering. Now I also want to make other one with copy of this trigger for to turn it into the aura ability, you know.
 
Last edited:
Probably it's moving North because I forgot to include KBA_StartingPosition in the trigger, I thought you will figure it out yourself. If problem still happens perhaps you should trace the problem in the knockback system itself, although I never really had any problems with the Knockback system I used so it shouldn't be necessary.

> > Set KBA_StartingPosition = Position of (KBA_Caster)
This should be under "Set KBA_Target = (Picked Unit)" action

Event
Every 0.03 seconds
Actions
Unit Group - Pick all unit in AuraGroup and do Actions
> Set TempUnit = (Picked Unit)
> Set TempPoint = Position of (Picked Unit)
> Set TempGroup = (Pick all units within 250 from TempPoint).
> Unit Group - Pick all unit in TempGroup and do Actions
> > Set KBA_Caster = TempUnit
> > Set KBA_Target = (Picked Unit)
> > Set KBA_StartingPosition = Position of (KBA_Caster)
> > Set KBA_Level = 1
> > Set KBA_Speed = 7.00 (you can modify this to your preference)
> > Set KBA_DistancePerLevel = 750
> > Trigger - Run Cast_A_Knockback
> > Custom Script: call RemoveLocation(udg_KBA_StartingPosition)
> Custom Script: call RemoveLocation(udg_TempPoint)
> Custom Script: call DestroyGroup(udg_TempGroup)

It should work, I did the very same thing in my map but with a tank where it pushes the organics that comes close to the unit.

Like I mentioned at the spoiler I posted days ago I cannot test the triggers you posted since I do not have access in my computer right now, and I am not familiar with it so I cannot help you with that. Perhaps other people can help you with your problem. My apologies if I cannot help.
 
Last edited:
Status
Not open for further replies.
Top