Heroes do not warp back

xAnaMorphine

Active Member
Reaction score
43
Imagine, 3on3: Team A wins all heroes of team b are dead but it doesnt warp back:

Trigger:
  • Start Arena Timer
    • Events
    • Conditions
    • Actions
      • Countdown Timer - Start Arena_Timer as a One-shot timer that will expire in 120.00 seconds
      • Countdown Timer - Create a timer window for (Last started timer) with title Arena Fight in...
      • Countdown Timer - Show (Last created timer window)


Trigger:
  • Setup Arena
    • Events
      • Time - Arena_Timer expires
    • Conditions
    • Actions
      • Countdown Timer - Destroy (Last created timer window)
      • Sound - Play prepare <gen>
      • Game - Display to (All players) the text: Notice: Prepare for...
      • Wait 1.00 seconds
      • Sound - Play BattleNetTick <gen>
      • Game - Display to (All players) the text: 5...
      • Wait 1.00 seconds
      • Sound - Play BattleNetTick <gen>
      • Game - Display to (All players) the text: 4...
      • Wait 1.00 seconds
      • Sound - Play BattleNetTick <gen>
      • Game - Display to (All players) the text: 3...
      • Wait 1.00 seconds
      • Sound - Play BattleNetTick <gen>
      • Game - Display to (All players) the text: 2...
      • Wait 1.00 seconds
      • Sound - Play BattleNetTick <gen>
      • Game - Display to (All players) the text: 1...
      • Wait 1.00 seconds
      • Player Group - Pick every player in PlayerGroup[1] and do (Actions)
        • Loop - Actions
          • Unit Group - Pick every unit in (Units owned by (Picked player) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Stash))) and do (Actions)
            • Loop - Actions
              • Unit - Move (Picked unit) instantly to (Center of Arena 1 Team A Spawn <gen>)
              • Camera - Set the camera bounds for (Owner of (Picked unit)) to Arena 1 <gen>
              • Camera - Pan camera for (Owner of (Picked unit)) to (Center of Arena 1 Team A Spawn <gen>) over 0.00 seconds
              • Unit - Set life of (Picked unit) to 100.00%
              • Unit - Set mana of (Picked unit) to 100.00%
      • Player Group - Pick every player in PlayerGroup[2] and do (Actions)
        • Loop - Actions
          • Unit Group - Pick every unit in (Units owned by (Picked player) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Stash))) and do (Actions)
            • Loop - Actions
              • Unit - Move (Picked unit) instantly to (Center of Arena 1 Team B Spawn <gen>)
              • Camera - Set the camera bounds for (Owner of (Picked unit)) to Arena 1 <gen>
              • Camera - Pan camera for (Owner of (Picked unit)) to (Center of Arena 1 Team B Spawn <gen>) over 0.00 seconds
              • Unit - Set life of (Picked unit) to 100.00%
              • Unit - Set mana of (Picked unit) to 100.00%
      • Unit Group - Pick every unit in (Units in Arena 1 <gen>) and do (Actions)
        • Loop - Actions
          • Set Arena_UnitGroup[1] = (Units in Arena 1 <gen> matching (((Matching unit) belongs to an enemy of (Random player from PlayerGroup[2])) Equal to True))
          • Set Arena_UnitGroup[2] = (Units in Arena 1 <gen> matching (((Matching unit) belongs to an enemy of (Random player from PlayerGroup[1])) Equal to True))
      • Trigger - Turn on Warp Back <gen>
      • Trigger - Run Warp Back <gen> (ignoring conditions)



Trigger:
  • Warp Back
    • Events
      • Time - Every 2.00 seconds of game time
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Number of units in Arena_UnitGroup[1]) Equal to 0
          • (Number of units in Arena_UnitGroup[2]) Equal to 0
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Arena_UnitGroup[2]) Equal to 0
        • Then - Actions
          • Player Group - Pick every player in PlayerGroup[1] and do (Actions)
            • Loop - Actions
              • Player - Add 1 to (Picked player) Current lumber
              • Unit Group - Pick every unit in (Units owned by (Picked player) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Stash))) and do (Actions)
                • Loop - Actions
                  • Unit - Move (Picked unit) instantly to (Center of Team A <gen>)
              • Camera - Set the camera bounds for (Picked player) to Team A <gen>
              • Camera - Pan camera for (Owner of (Picked unit)) to (Center of Team A <gen>) over 0.00 seconds
              • Game - Display to (All players) the text: Team A wins!
              • Player Group - Pick every player in (All players) and do (Actions)
                • Loop - Actions
                  • Player - Add 350 to (Picked player) Current gold
                  • Player - Add 1 to (Picked player) Current lumber
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Arena_UnitGroup[1]) Equal to 0
        • Then - Actions
          • Player Group - Pick every player in PlayerGroup[2] and do (Actions)
            • Loop - Actions
              • Player - Add 1 to (Picked player) Current lumber
              • Unit Group - Pick every unit in (Units owned by (Picked player) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Stash))) and do (Actions)
                • Loop - Actions
                  • Unit - Move (Picked unit) instantly to (Center of Team B <gen>)
              • Camera - Set the camera bounds for (Picked player) to Team B <gen>
              • Camera - Pan camera for (Owner of (Picked unit)) to (Center of Team B <gen>) over 0.00 seconds
              • Game - Display to (All players) the text: Team B wins!
              • Player Group - Pick every player in (All players) and do (Actions)
                • Loop - Actions
                  • Player - Add 350 to (Picked player) Current gold
                  • Player - Add 1 to (Picked player) Current lumber
        • Else - Actions
      • Trigger - Run Start Arena Timer <gen> (ignoring conditions)
      • Trigger - Turn off (This trigger)
 

sentrywiz

New Member
Reaction score
25
More details. What does warp back means?

Its like a duel only with teams? Who wins the duel gets xp and gold and all heroes are teleported back to base?

The game restarts? A spell that warps units back in time?

WARP has a lot of meanings. Explain yours
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
first of all, your triggers leak like hell.

back to topic:
i guess these lines:
Trigger:
  • # Unit Group - Pick every unit in (Units owned by (Picked player) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Stash))) and do (Actions)
    • * Loop - Actions
      • o Unit - Move (Picked unit) instantly to (Center of Team A <gen>)

i guess the problem is the conditions used for this trigger.
you check for the number of units within the unit-groups but you never remove any units from these groups as far as i see.
i think you made a mistake by thinking that dead units are removed from a unitgroup by default but they aint. the units might be dead but they are still within the unitgroup. thats why the triggers do not fire.
 

xAnaMorphine

Active Member
Reaction score
43
first of all, your triggers leak like hell.

back to topic:
i guess these lines:
Trigger:
  • # Unit Group - Pick every unit in (Units owned by (Picked player) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Stash))) and do (Actions)
    • * Loop - Actions
      • o Unit - Move (Picked unit) instantly to (Center of Team A <gen>)

i guess the problem is the conditions used for this trigger.
you check for the number of units within the unit-groups but you never remove any units from these groups as far as i see.
i think you made a mistake by thinking that dead units are removed from a unitgroup by default but they aint. the units might be dead but they are still within the unitgroup. thats why the triggers do not fire.

thanks, i fixed all the leaks
so I just have to make a new trigger with the condition "a unit dies" and then remove dying unit from the unit group?
 

xAnaMorphine

Active Member
Reaction score
43
so this is how it looks like now:

Trigger:
  • Setup Arena
    • Events
      • Time - Arena_Timer expires
    • Conditions
    • Actions
      • Countdown Timer - Destroy (Last created timer window)
      • Sound - Play prepare <gen>
      • Game - Display to (All players) the text: Notice: Prepare for...
      • Wait 1.00 seconds
      • Sound - Play BattleNetTick <gen>
      • Game - Display to (All players) the text: 5...
      • Wait 1.00 seconds
      • Sound - Play BattleNetTick <gen>
      • Game - Display to (All players) the text: 4...
      • Wait 1.00 seconds
      • Sound - Play BattleNetTick <gen>
      • Game - Display to (All players) the text: 3...
      • Wait 1.00 seconds
      • Sound - Play BattleNetTick <gen>
      • Game - Display to (All players) the text: 2...
      • Wait 1.00 seconds
      • Sound - Play BattleNetTick <gen>
      • Game - Display to (All players) the text: 1...
      • Wait 1.00 seconds
      • Player Group - Pick every player in PlayerGroup[1] and do (Actions)
        • Loop - Actions
          • Set TeamA_Group = (Units owned by (Picked player) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Stash)))
          • Set TeamA_Arena_Loc = (Center of Arena 1 Team A Spawn <gen>)
          • Unit Group - Pick every unit in TeamA_Group and do (Actions)
            • Loop - Actions
              • Unit - Move (Picked unit) instantly to TeamA_Arena_Loc
              • Camera - Set the camera bounds for (Owner of (Picked unit)) to Arena 1 <gen>
              • Camera - Pan camera for (Owner of (Picked unit)) to TeamA_Arena_Loc over 0.00 seconds
              • Unit - Set life of (Picked unit) to 100.00%
              • Unit - Set mana of (Picked unit) to 100.00%
      • Player Group - Pick every player in PlayerGroup[2] and do (Actions)
        • Loop - Actions
          • Set TeamB_Group = (Units owned by (Picked player) matching ((((Matching unit) is A Hero) Equal to True) and ((Unit-type of (Matching unit)) Not equal to Stash)))
          • Set TeamB_Arena_Loc = (Center of Arena 1 Team B Spawn <gen>)
          • Unit Group - Pick every unit in TeamB_Group and do (Actions)
            • Loop - Actions
              • Unit - Move (Picked unit) instantly to TeamB_Arena_Loc
              • Camera - Set the camera bounds for (Owner of (Picked unit)) to Arena 1 <gen>
              • Camera - Pan camera for (Owner of (Picked unit)) to TeamB_Arena_Loc over 0.00 seconds
              • Unit - Set life of (Picked unit) to 100.00%
              • Unit - Set mana of (Picked unit) to 100.00%
      • Set Global_UnitGroup = (Units in Arena 1 <gen>)
      • Unit Group - Pick every unit in Global_UnitGroup and do (Actions)
        • Loop - Actions
          • Set Arena_UnitGroup[1] = (Units in Arena 1 <gen> matching (((Matching unit) belongs to an enemy of (Random player from PlayerGroup[2])) Equal to True))
          • Set Arena_UnitGroup[2] = (Units in Arena 1 <gen> matching (((Matching unit) belongs to an enemy of (Random player from PlayerGroup[1])) Equal to True))
      • Custom script: call DestroyGroup(udg_TeamA_Group)
      • Custom script: call DestroyGroup(udg_TeamB_Group)
      • Custom script: call DestroyGroup(udg_Global_UnitGroup)
      • Custom script: call RemoveLocation(udg_TeamA_Arena_Loc)
      • Custom script: call RemoveLocation(udg_TeamB_Arena_Loc)
      • Trigger - Turn on Warp Back <gen>
      • Trigger - Run Warp Back <gen> (ignoring conditions)


Trigger:
  • Warp Back
    • Events
      • Time - Every 2.00 seconds of game time
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Number of units in Arena_UnitGroup[1]) Equal to 0
          • (Number of units in Arena_UnitGroup[2]) Equal to 0
    • Actions
      • Set TeamA_WarpBack_Loc = (Center of Team A <gen>)
      • Set TeamB_WarpBack_Loc = (Center of Team B <gen>)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Arena_UnitGroup[2]) Equal to 0
        • Then - Actions
          • Player Group - Pick every player in PlayerGroup[1] and do (Actions)
            • Loop - Actions
              • Player - Add 1 to (Picked player) Current lumber
              • Unit Group - Pick every unit in TeamA_Group and do (Actions)
                • Loop - Actions
                  • Unit - Move (Picked unit) instantly to TeamB_WarpBack_Loc
              • Camera - Set the camera bounds for (Picked player) to Team A <gen>
              • Camera - Pan camera for (Owner of (Picked unit)) to TeamA_WarpBack_Loc over 0.00 seconds
              • Game - Display to (All players) the text: Team A wins!
              • Player Group - Pick every player in (All players) and do (Actions)
                • Loop - Actions
                  • Player - Add 350 to (Picked player) Current gold
                  • Player - Add 1 to (Picked player) Current lumber
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Arena_UnitGroup[1]) Equal to 0
        • Then - Actions
          • Player Group - Pick every player in PlayerGroup[2] and do (Actions)
            • Loop - Actions
              • Player - Add 1 to (Picked player) Current lumber
              • Unit Group - Pick every unit in TeamB_Group and do (Actions)
                • Loop - Actions
                  • Unit - Move (Picked unit) instantly to TeamB_WarpBack_Loc
              • Camera - Set the camera bounds for (Picked player) to Team B <gen>
              • Camera - Pan camera for (Owner of (Picked unit)) to TeamB_WarpBack_Loc over 0.00 seconds
              • Game - Display to (All players) the text: Team B wins!
              • Player Group - Pick every player in (All players) and do (Actions)
                • Loop - Actions
                  • Player - Add 350 to (Picked player) Current gold
                  • Player - Add 1 to (Picked player) Current lumber
        • Else - Actions
      • Custom script: call RemoveLocation(udg_TeamA_WarpBack_Loc)
      • Custom script: call RemoveLocation(udg_TeamB_WarpBack_Loc)
      • Trigger - Run Start Arena Timer <gen> (ignoring conditions)
      • Trigger - Turn off (This trigger)


Trigger:
  • Remove Dying Units
    • Events
      • Unit - A unit Dies
    • Conditions
      • ((Dying unit) is A Hero) Equal to True
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ((Dying unit) is in Arena_UnitGroup[1]) Equal to True
        • Then - Actions
          • Unit Group - Remove (Dying unit) from Arena_UnitGroup[1]
        • Else - Actions
          • Unit Group - Remove (Dying unit) from Arena_UnitGroup[2]


Problem is, I can not destroy the Arena_UnitGroup[x] because it is a periodic timer but it wont cause a lot of leaks or will it?
P.S.: Is the trigger to remove dying unit correct?
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
do your triggers work?

why do you do this:
Trigger:
  • Trigger - Turn on Warp Back <gen>
    • Trigger - Run Warp Back <gen> (ignoring conditions)

the second action is rather useless, i doubt the duel will be over just the moment it started and ignoring the conditions aint a good method here either. just remove the second line i'd say.

and why cant you destroy the groups? of course you can
 

Hatebreeder

So many apples
Reaction score
381
Group don't leak as long as they're used or not reassigned (Multiple instances of a function that uses udg_Group = CreateGroup())
 

xAnaMorphine

Active Member
Reaction score
43
well i am talking about this lines:

Trigger:
  • Unit Group - Pick every unit in Global_UnitGroup and do (Actions)
    • Loop - Actions
      • Set Arena_UnitGroup[1] = (Units in Arena 1 <gen> matching (((Matching unit) belongs to an enemy of (Random player from PlayerGroup[2])) Equal to True))
      • Set Arena_UnitGroup[2] = (Units in Arena 1 <gen> matching (((Matching unit) belongs to an enemy of (Random player from PlayerGroup[1])) Equal to True))


I am not able to destroy them because i still have to remove units from it
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
you can destroy those at the end of the duel. then they will be empty anyhow.
 

xAnaMorphine

Active Member
Reaction score
43
I did, but here i got antoher problem, the unit who wins a duel does not get warped back

i have it like thius:

Trigger:
  • Warp Back
    • Events
      • Time - Every 2.00 seconds of game time
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Number of units in Arena_UnitGroup[1]) Equal to 0
          • (Number of units in Arena_UnitGroup[2]) Equal to 0
    • Actions
      • Set TeamA_WarpBack_Loc = (Center of Team A <gen>)
      • Set TeamB_WarpBack_Loc = (Center of Team B <gen>)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Arena_UnitGroup[1]) Equal to 0
        • Then - Actions
          • Player Group - Pick every player in PlayerGroup[2] and do (Actions)
            • Loop - Actions
              • Player - Add 1 to (Picked player) Current lumber
              • Unit Group - Pick every unit in TeamB_Group and do (Actions)
                • Loop - Actions
                  • Unit - Move (Picked unit) instantly to TeamB_WarpBack_Loc
              • Camera - Pan camera for (Owner of (Picked unit)) to TeamB_WarpBack_Loc over 0.00 seconds
              • Game - Display to (All players) the text: Team B wins!
              • Player Group - Pick every player in (All players) and do (Actions)
                • Loop - Actions
                  • Player - Add 350 to (Picked player) Current gold
                  • Player - Add 1 to (Picked player) Current lumber
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Arena_UnitGroup[2]) Equal to 0
        • Then - Actions
          • Player Group - Pick every player in PlayerGroup[1] and do (Actions)
            • Loop - Actions
              • Player - Add 1 to (Picked player) Current lumber
              • Unit Group - Pick every unit in TeamA_Group and do (Actions)
                • Loop - Actions
                  • Unit - Move (Picked unit) instantly to TeamB_WarpBack_Loc
              • Camera - Pan camera for (Owner of (Picked unit)) to TeamA_WarpBack_Loc over 0.00 seconds
              • Game - Display to (All players) the text: Team A wins!
              • Player Group - Pick every player in (All players) and do (Actions)
                • Loop - Actions
                  • Player - Add 350 to (Picked player) Current gold
                  • Player - Add 1 to (Picked player) Current lumber
        • Else - Actions
      • Custom script: call RemoveLocation(udg_TeamA_WarpBack_Loc)
      • Custom script: call RemoveLocation(udg_TeamB_WarpBack_Loc)
      • Trigger - Run Start Arena Timer <gen> (ignoring conditions)
      • Trigger - Turn off (This trigger)


should i change it to that?
Trigger:
  • Warp Back
    • Events
      • Time - Every 2.00 seconds of game time
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Number of units in Arena_UnitGroup[1]) Equal to 0
          • (Number of units in Arena_UnitGroup[2]) Equal to 0
    • Actions
      • Set TeamA_WarpBack_Loc = (Center of Team A <gen>)
      • Set TeamB_WarpBack_Loc = (Center of Team B <gen>)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Arena_UnitGroup[2]) Equal to 0
        • Then - Actions
          • Player Group - Pick every player in PlayerGroup[1] and do (Actions)
            • Loop - Actions
              • Player - Add 1 to (Picked player) Current lumber
              • Unit Group - Pick every unit in TeamA_Group and do (Actions)
                • Loop - Actions
                  • Unit - Move (Picked unit) instantly to TeamB_WarpBack_Loc
              • Camera - Pan camera for (Owner of (Picked unit)) to TeamA_WarpBack_Loc over 0.00 seconds
              • Game - Display to (All players) the text: Team A wins!
              • Player Group - Pick every player in (All players) and do (Actions)
                • Loop - Actions
                  • Player - Add 350 to (Picked player) Current gold
                  • Player - Add 1 to (Picked player) Current lumber
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Number of units in Arena_UnitGroup[1]) Equal to 0
            • Then - Actions
              • Player Group - Pick every player in PlayerGroup[2] and do (Actions)
                • Loop - Actions
                  • Player - Add 1 to (Picked player) Current lumber
                  • Unit Group - Pick every unit in TeamB_Group and do (Actions)
                    • Loop - Actions
                      • Unit - Move (Picked unit) instantly to TeamB_WarpBack_Loc
                  • Camera - Pan camera for (Owner of (Picked unit)) to TeamB_WarpBack_Loc over 0.00 seconds
                  • Game - Display to (All players) the text: Team B wins!
                  • Player Group - Pick every player in (All players) and do (Actions)
                    • Loop - Actions
                      • Player - Add 350 to (Picked player) Current gold
                      • Player - Add 1 to (Picked player) Current lumber
            • Else - Actions
      • Custom script: call RemoveLocation(udg_TeamA_WarpBack_Loc)
      • Custom script: call RemoveLocation(udg_TeamB_WarpBack_Loc)
      • Trigger - Run Start Arena Timer <gen> (ignoring conditions)
      • Trigger - Turn off (This trigger)
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
well then i guess your trigger doesnt fire at all. add some message at the very top of the trigger. this way you will know whether the event occurs and the conditions are met. thats the first thing to check.
 

xAnaMorphine

Active Member
Reaction score
43
somehow the trigger wont work;
i figuerd out a new one:

Trigger:
  • Warp Back
    • Events
      • Time - Every 2.00 seconds of game time
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Number of units in Arena_UnitGroup[1]) Equal to 0
          • (Number of units in Arena_UnitGroup[2]) Equal to 0
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in Arena_UnitGroup[2]) Equal to 0
        • Then - Actions
          • Unit Group - Pick every unit in Arena_UnitGroup[1] and do (Actions)
            • Loop - Actions
              • Set TeamA_WarpBack_Loc = (Center of Team A <gen>)
              • Unit - Move (Picked unit) instantly to TeamA_WarpBack_Loc
              • Camera - Pan camera for (Owner of (Picked unit)) to TeamA_WarpBack_Loc over 0.00 seconds
          • Game - Display to (All players) the text: Team A has won the ...
          • Trigger - Run Arena Timer <gen> (checking conditions)
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Number of units in Arena_UnitGroup[1]) Equal to 0
            • Then - Actions
              • Unit Group - Pick every unit in Arena_UnitGroup[2] and do (Actions)
                • Loop - Actions
                  • Set TeamB_WarpBack_Loc = (Center of Team B <gen>)
                  • Unit - Move (Picked unit) instantly to TeamB_WarpBack_Loc
                  • Camera - Pan camera for (Owner of (Picked unit)) to TeamB_WarpBack_Loc over 0.00 seconds
              • Game - Display to (All players) the text: Team B has won the ...
              • Trigger - Run Arena Timer <gen> (checking conditions)
              • Trigger - Turn off (This trigger)
            • Else - Actions
 

xAnaMorphine

Active Member
Reaction score
43
does this one work? or do you still have problems?

Well I tested against bots, it worked how it should, now i will remove the leaks.
But I am not sure if the trigger will bug o_o because of the "if-then-else" in the "else" condition
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top