Spellpack Panda Spell Pack

HeX.16

Isn't Trollin You Right Now
Reaction score
131
Panda Spellpack(Version 1.0)
This spellpack contains a few panda spells which synergize well with eachother.


Pandaren Brewmaster
Pandarenbrewmaster.JPG

  • Arm Mirrage [Active]
  • Drunken Brawler [Passive]
  • StormCrout Ale [Active]
  • Breath of Ale [Active]

Spells

Arm Mirrage

Description:
With Each attack the Drunken master realizes a new level of speed. This allows him to attack swiftly, dealing smaller multiple attacks whenever he hits his opponents.

Screenshot:

a16eee5c5b3b4dff76717685d2d6fe5d4g.jpg

Code:
Trigger:
  • Single Attack Arm Mirrage
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • And - All (Conditions) are true
        • Conditions
          • (Ability being cast) Equal to Arm Mirrage (AM)
          • ((Target unit of ability being cast) belongs to an enemy of (Owner of (Triggering unit))) Equal to True
    • Actions
      • Set DrunkenBrawler = (Triggering unit)
      • For each (Integer A) from 1 to (0 + (2 x (Level of (Ability being cast) for DrunkenBrawler))), do (Actions)
        • Loop - Actions
          • Set ArmMirragePoint = (Position of DrunkenBrawler)
          • Unit - Create 1 Arm Mirrage Ghost (AM) for (Owner of DrunkenBrawler) at ArmMirragePoint facing (Facing of DrunkenBrawler) degrees
          • Set ArmMirragePotentialTargets = (Units within 200.00 of ArmMirragePoint matching ((((Matching unit) is A flying unit) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of DrunkenBrawler)) Equal to True))))
          • Custom script: call RemoveLocation(udg_ArmMirragePoint)
          • Animation - Change (Last created unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 50.00% transparency
          • Unit - Add a 0.60 second Generic expiration timer to (Last created unit)
          • Unit - Order (Last created unit) to Attack (Random unit from ArmMirragePotentialTargets)
          • Unit Group - Remove all units from ArmMirragePotentialTargets
          • Wait 0.10 seconds

Trigger:
  • Image Clean Up
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to Arm Mirrage Ghost (AM)
    • Actions
      • Animation - Change (Dying unit)'s animation speed to 0.00% of its original speed
      • Unit - Remove (Dying unit) from the game

Drunken Brawler

Description:
Hoaning his own martial art skills, the Drunken Brawler increases his reflexes, boosting movement and attack speed slightly, also allowing him to sometimes make critical blows against his enemies. He also gains knowledge of drunken fighting, allowing him to better fight while drunk.

Screenshot:

5af2c3599991db716d2822e730253ab24g.jpg

Code:
Trigger:
  • Drunken Brawler Timer
    • Events
      • Time - ArmMirrageMaxDuration expires
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • ArmMirrageInteger Greater than or equal to 5
        • Then - Actions
          • Set AmmasedImages = 0
          • Set ArmMirrageInteger = 0
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Set ArmMirrageInteger = (ArmMirrageInteger + 1)
      • Countdown Timer - Start ArmMirrageMaxDuration as a One-shot timer that will expire in 1.00 seconds
Trigger:
  • Drunken Brawler Attack Attempt
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • And - All (Conditions) are true
        • Conditions
          • ((Attacked unit) belongs to an enemy of (Owner of (Attacking unit))) Equal to True
    • Actions
      • Trigger - Turn off Drunken Brawler Damage Alter <gen>
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • And - All (Conditions) are true
            • Conditions
              • ((Attacked unit) is A structure) Equal to False
              • (Random real number between 0.00 and 100.00) Less than or equal to 15.00
              • (Level of Drunken Brawler (DB) for DrunkenBrawler) Greater than or equal to 1
        • Then - Actions
          • Set DM_CriticalStrike = True
        • Else - Actions
          • Set DM_CriticalStrike = False
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Mana of DrunkenBrawler) Greater than or equal to (Real((Integer((12.50 + (2.50 x (Real((Level of Drunken Brawler (DB) for DrunkenBrawler)))))))))
        • Then - Actions
          • Set DMHasEnoughMana = True
        • Else - Actions
          • Set DMHasEnoughMana = False
      • Set DM_AttackedUnit = (Attacked unit)
      • Trigger - Add to Drunken Brawler Damage Alter <gen> the event (Unit - DM_AttackedUnit Takes damage)
      • Trigger - Turn on Drunken Brawler Damage Alter <gen>
Trigger:
  • Drunken Brawler Damage Alter
    • Events
    • Conditions
      • (Damage source) Equal to DrunkenBrawler
    • Actions
      • Set DrunkenBrawler = (Damage source)
      • Unit - Create 1 Universal Dummy (All) for (Owner of DrunkenBrawler) at (Position of DrunkenBrawler) facing Default building facing degrees
      • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
      • Set PLAYER_ATT_DMG_BUFFER[(Player number of (Owner of DrunkenBrawler))] = (Last created unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DrunkenBrawler has buff Focused Power (FP)) Equal to True
        • Then - Actions
          • Unit - Cause PLAYER_ATT_DMG_BUFFER[(Player number of (Owner of DrunkenBrawler))] to damage DM_AttackedUnit, dealing 75.00 damage of attack type Hero and damage type Normal
          • Set FPStunPoint = (Position of DrunkenBrawler)
          • Unit - Create 1 Universal Dummy (All) for (Owner of DrunkenBrawler) at FPStunPoint facing Default building facing degrees
          • Custom script: call RemoveLocation(udg_FPStunPoint)
          • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
          • Unit - Add Stun (FP) to (Last created unit)
          • Unit - Order (Last created unit) to Human Mountain King - Storm Bolt DM_AttackedUnit
          • Unit - Remove Focused Power (FP) buff from DrunkenBrawler
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DrunkenBrawler has buff Drunken Brawler Drunken Haze (SCA)) Equal to True
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • DM_CriticalStrike Equal to True
            • Then - Actions
              • Set DMDamageBoost = ((((Damage taken) + ((3.00 + (Real((Level of StormCrout Ale (SCA) for DrunkenBrawler)))) x (Real(DrunkLevel)))) x ((0.15 + (0.10 x (Real((Level of Drunken Brawler (DB) for DrunkenBrawler))))) + ((0.02 + (0.01 x (Real((Level of Drunken Brawler (DB) for Drunken
              • Unit - Cause PLAYER_ATT_DMG_BUFFER[(Player number of (Owner of DrunkenBrawler))] to damage DM_AttackedUnit, dealing DMDamageBoost damage of attack type Chaos and damage type Universal
              • Floating Text - Create floating text that reads ((String((Integer(((Damage taken) + DMDamageBoost))))) + !) above DrunkenBrawler with Z offset 0.00, using font size 11.00, color (74.12%, 50.59%, 24.31%), and 0.00% transparency
              • Floating Text - Set the velocity of (Last created floating text) to 55.00 towards 90.00 degrees
              • Floating Text - Change (Last created floating text): Disable permanence
              • Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
              • Floating Text - Change the fading age of (Last created floating text) to 2.00 seconds
            • Else - Actions
              • Unit - Cause PLAYER_ATT_DMG_BUFFER[(Player number of (Owner of DrunkenBrawler))] to damage DM_AttackedUnit, dealing ((3.00 + (Real((Level of Drunken Brawler (DB) for DrunkenBrawler)))) x (Real(DrunkLevel))) damage of attack type Chaos and damage type Universal
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • DM_CriticalStrike Equal to True
            • Then - Actions
              • Set DMDamageBoost = (((Damage taken) x ((0.15 + (0.10 x (Real((Level of Drunken Brawler (DB) for DrunkenBrawler))))) + 0.00)) x 1.00)
              • Unit - Cause PLAYER_ATT_DMG_BUFFER[(Player number of (Owner of DrunkenBrawler))] to damage DM_AttackedUnit, dealing DMDamageBoost damage of attack type Chaos and damage type Universal
              • Floating Text - Create floating text that reads ((String((Integer(((Damage taken) + DMDamageBoost))))) + !) above DrunkenBrawler with Z offset 0.00, using font size 11.00, color (74.12%, 50.59%, 24.31%), and 0.00% transparency
              • Floating Text - Set the velocity of (Last created floating text) to 55.00 towards 90.00 degrees
              • Floating Text - Change (Last created floating text): Disable permanence
              • Floating Text - Change the lifespan of (Last created floating text) to 3.00 seconds
              • Floating Text - Change the fading age of (Last created floating text) to 2.00 seconds
            • Else - Actions
      • Trigger - Turn off (This trigger)

StormCrout Ale

Description:
A secret recipe past down from generations brewed by the monks of his training temple, Chen has learned how to make a powerful ale, capable of increasing one's power. However, the side effects are still extremely potewnt on drinkers with weak stomachs and control.

Screenshot:

989d1755b4fc11e4d345c9b2f0e826a14g.jpg

Code:
Trigger:
  • StormCrout Effect
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to StormCrout Ale (SCA)
    • Actions
      • Set DrunkenBrawler = (Triggering unit)
      • Trigger - Turn on StormCrout Check <gen>
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (DrunkenBrawler has buff Drunken Brawler Drunken Haze (SCA)) Equal to True
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • DrunkLevel Greater than or equal to 5
            • Then - Actions
              • Set DrunkLevel = 5
            • Else - Actions
              • Set DrunkLevel = (DrunkLevel + 1)
        • Else - Actions
          • Set DrunkLevel = 1
      • Set DrunkCastPoint = (Position of DrunkenBrawler)
      • Unit - Create 1 Universal Dummy (All) for (Owner of DrunkenBrawler) at DrunkCastPoint facing Default building facing degrees
      • Custom script: call RemoveLocation(udg_DrunkCastPoint)
      • Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
      • Unit - Add StormCrout Ale Drunkness (SCA) to (Last created unit)
      • Unit - Set level of StormCrout Ale Drunkness (SCA) for (Last created unit) to (((6 x DrunkLevel) - 5) + (Level of Drunken Brawler (DB) for DrunkenBrawler))
      • Unit - Order (Last created unit) to Neutral Pandaren Brewmaster - Drunken Haze DrunkenBrawler
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Drunken Evasion Book (DB) for DrunkenBrawler) Greater than or equal to ((Level of StormCrout Ale (SCA) for DrunkenBrawler) + 2)
        • Then - Actions
          • Unit - Set level of Drunken Evasion Book (DB) for DrunkenBrawler to ((Level of StormCrout Ale (SCA) for DrunkenBrawler) + 2)
        • Else - Actions
          • Unit - Set level of Drunken Evasion Book (DB) for DrunkenBrawler to ((Level of Drunken Evasion Book (DB) for DrunkenBrawler) + 1)
Trigger:
  • StormCrout Check
    • Events
      • Time - Every 0.50 seconds of game time
    • Conditions
      • (DrunkenBrawler has buff Drunken Brawler Drunken Haze (SCA)) Equal to False
    • Actions
      • Unit - Set level of Drunken Evasion Book (DB) for DrunkenBrawler to 1
      • Set DrunkLevel = 0
      • Trigger - Turn off (This trigger)

Breath of Ale

Description:
Takes a swig from his ale barrel and blows out a strong mist of ale onto his enemies, covering them in alchohol. The effect leaves the units drunk, with slower motion and a loss of accuracy. The more alchohol he has in him, the stronger the effect will be...

Screenshot:

8e111c399b1e61bdaf1e56ca096072aa4g.jpg

Code:
Trigger:
  • Breath of Ale AoE Setup
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Breath of Ale (BoA)
    • Actions
      • Set DrunkenBrawler = (Triggering unit)
      • Set BoATargetPoint = (Target point of ability being cast)
      • Custom script: call RemoveLocation(udg_BoACastPoint)
      • Unit Group - Remove all units from UnitsalreadyDrunk
      • Unit - Set level of Drunken Evasion Book (DB) for DrunkenBrawler to 1
      • Unit - Remove Drunken Brawler Drunken Haze (SCA) buff from DrunkenBrawler
      • Trigger - Turn off StormCrout Check <gen>
      • Set StoredAleLevel = DrunkLevel
      • Set DrunkLevel = 0
      • Set BoACastPoint = (Position of DrunkenBrawler)
      • Set BoAConeAngle = (Angle from BoACastPoint to BoATargetPoint)
      • Custom script: call RemoveLocation(udg_BoACastPoint)
      • Custom script: call RemoveLocation(udg_BoATargetPoint)
      • Set BoAConeCurrentDistance = 50.00
      • Set BoACastPoint = ((Position of DrunkenBrawler) offset by 50.00 towards BoAConeAngle degrees)
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Set BoAConeAoEPoint[(Integer A)] = (BoACastPoint offset by 50.00 towards BoAConeAngle degrees)
          • Set BoAAffectedUnits = (Units within 80.00 of BoAConeAoEPoint[(Integer A)] matching ((((Matching unit) is A structure) Equal to False) and (((((Matching unit) is A ground unit) Equal to True) and (((Matching unit) is Magic Immune) Equal to False)) and ((((Matching unit) is alive) E
          • Unit Group - Pick every unit in BoAAffectedUnits and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Picked unit) is in UnitsalreadyDrunk) Equal to False
                • Then - Actions
                  • Unit - Create 1 Universal Dummy (All) for (Owner of DrunkenBrawler) at BoAConeAoEPoint[(Integer A)] facing Default building facing degrees
                  • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                  • Unit - Add Breath of Ale Drunkness (BoA) to (Last created unit)
                  • Unit - Set level of Breath of Ale Drunkness (BoA) for (Last created unit) to (((6 x (Level of Breath of Ale (BoA) for DrunkenBrawler)) - 5) + StoredAleLevel)
                  • Unit - Order (Last created unit) to Neutral Pandaren Brewmaster - Drunken Haze (Picked unit)
                  • Unit Group - Add (Picked unit) to UnitsalreadyDrunk
                • Else - Actions
              • Unit Group - Remove (Picked unit) from BoAAffectedUnits
          • Custom script: call RemoveLocation(udg_BoAConeAoEPoint[GetForLoopIndexA()])
      • Trigger - Turn on Breath of Ale Wave Detect <gen>
Trigger:
  • Breath of Ale Wave Detect
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Set BoAConeCurrentDistance = (BoAConeCurrentDistance + (500.00 / 20.00))
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Set BoAConeAoEPoint[(Integer A)] = (BoACastPoint offset by (BoAConeCurrentDistance - 50.00) towards (BoAConeAngle + (-40.00 + (20.00 x (Real((Integer A)))))) degrees)
          • Set BoAAffectedUnits = (Units within 100.00 of BoAConeAoEPoint[(Integer A)] matching ((((Matching unit) is A structure) Equal to False) and (((((Matching unit) is A ground unit) Equal to True) and (((Matching unit) is Magic Immune) Equal to False)) and ((((Matching unit) is alive)
          • Unit Group - Pick every unit in BoAAffectedUnits and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Picked unit) is in UnitsalreadyDrunk) Equal to False
                • Then - Actions
                  • Unit - Create 1 Universal Dummy (All) for (Owner of DrunkenBrawler) at BoAConeAoEPoint[(Integer A)] facing Default building facing degrees
                  • Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
                  • Unit - Add Breath of Ale Drunkness (BoA) to (Last created unit)
                  • Unit - Set level of Breath of Ale Drunkness (BoA) for (Last created unit) to (((6 x (Level of Breath of Ale (BoA) for DrunkenBrawler)) - 5) + StoredAleLevel)
                  • Unit - Order (Last created unit) to Neutral Pandaren Brewmaster - Drunken Haze (Picked unit)
                  • Unit Group - Add (Picked unit) to UnitsalreadyDrunk
                • Else - Actions
              • Unit Group - Remove (Picked unit) from BoAAffectedUnits
          • Custom script: call RemoveLocation(udg_BoAConeAoEPoint[GetForLoopIndexA()])
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BoAConeCurrentDistance Greater than or equal to 550.00
        • Then - Actions
          • Unit Group - Remove all units from UnitsalreadyDrunk
          • Unit Group - Remove (Picked unit) from BoAAffectedUnits
          • Custom script: call RemoveLocation(udg_BoACastPoint)
          • Trigger - Turn off (This trigger)
        • Else - Actions

Credits
Code:
Unknown for Breath of Ale effect
Glenphir for spell post template.
More to be added
 

Nherwyziant

Be better than you were yesterday :D
Reaction score
96
Where's the map? Screenshots? Codes?

EDIT: ahh, as I press F5, the map appeared and also the codes. Still working on the thread :) GL.
 

Crazy_Dead

New Member
Reaction score
24
Good that you dont use the Thread Interface like Glenphirs :p

EDIT:

Trigger:
  • ((Target unit of ability being cast) belongs to an enemy of (Owner of (Triggering unit))) Equal to True

Does that leak?
 

HeX.16

Isn't Trollin You Right Now
Reaction score
131
No i dont think target unit leaks.
Units dont leak do they?
 

Komaqtion

You can change this now in User CP.
Reaction score
469
They do leak, but don't mind about that, since if you'd mind that much of leaks, and efficiency, you wouldn't code in GUI :p

I also REALLY suggest you make each spell MUI (Or at least MPI)...

Now to the code:

Single Attack Arm Mirrage:

Trigger:
  • And - All (Conditions) are true
    • Conditions
      • (Ability being cast) Equal to Arm Mirrage (AM)
      • ((Target unit of ability being cast) belongs to an enemy of (Owner of (Triggering unit))) Equal to True


Remove the "And" here, as it's automatically "And" when you use conditions in the "Conditions" 'area' :D

Trigger:
  • For each (Integer A) from 1 to (0 + (2 x (Level of (Ability being cast) for DrunkenBrawler))), do (Actions)


"( 0 +" ?!?!

Why would you use "0 +" and not justs use "(2 x (Level of (Ability being cast)" alone ? :S
(Do that ;))

And:
Trigger:
  • Unit Group - Remove all units from ArmMirragePotentialTargets


Isn't enough to prevent the leak created...
You need:
JASS:
Custom script: call DestroyGroup(udg_ArmMirragePotentialTargets)

;)

And also, you really shouldn't use waits inside loops !
Learn how to use Hashtables, and then make another trigger with a 0.10 second periodic event, and use hashtables to retrieve the data for each unit and do the actions there instead ;)

Drunken Brawler Attack Attempt

Again, remove the "And" in the conditions ;)

Now, this is a quite major issue, this whole spell will bug VERY much later in game because of this line:
Trigger:
  • Trigger - Add to Drunken Brawler Damage Alter <gen> the event (Unit - DM_AttackedUnit Takes damage)


You can not register the same event for the same unit twice, since then the trigger will run twice if that unit takes damage...
You should store the registered units in a unit-group, and then check if that unit isn't in the group, then you register, else you dont ;)

Drunken Brawler Damage Alter

Code:
Unit - Create 1 Universal Dummy (All) for (Owner of DrunkenBrawler) at [COLOR="Red"](Position of DrunkenBrawler)[/COLOR] facing Default building facing degrees

Leaks...

And same as the first spell (Though this one might be quite a bit more of a challenge :p) you really should at least try to make stuff MUI (Or, yet again, at least MPI ;)), it simply makes it soo much better ! :D
And hashtables is a great thing for it ;)

Breath of Ale AoE Setup

What's this doing as the third line ?! :S
Trigger:
  • Custom script: call RemoveLocation(udg_BoACastPoint)


Isn't needed there...

And what are these doing as the 13th and 14th line ?!?!?!?!?!
Trigger:
  • Custom script: call RemoveLocation(udg_BoACastPoint)
    • Custom script: call RemoveLocation(udg_BoATargetPoint)

(Does this spell even work properly ? :S)

You can't remove those points before using them fully...

Move all of these "leak-removing" custom scripts as the last lines of the trigger (Except the one in the loop ;))

DO NOT REMOVE THE POINT-VARIABLE "BoACastPoint" ANYWHERE IN THIS TRIGGER !

Code:
Set BoACastPoint = ([COLOR="Red"](Position of DrunkenBrawler)[/COLOR] offset by 50.00 towards BoAConeAngle degrees)

Should use the variable called "BoACastPoint" here ;)

Trigger:
  • Set BoAAffectedUnits = (Units within 80.00 of BoAConeAoEPoint[(Integer A)] matching ((((Matching unit) is A structure) Equal to False) and (((((Matching unit) is A ground unit) Equal to True) and (((Matching unit) is Magic Immune) Equal to False)) and ((((Matching unit) is alive) E


Yet again, you need to destroy groups like these ;)

And this line isn't even needed...
Trigger:
  • Unit Group - Remove (Picked unit) from BoAAffectedUnits


It's also better to use this for removing points with (Integer A) in them:
Trigger:
  • Custom script: call RemoveLocation(udg_BoAConeAoEPoint[bj_forLoopAIndex])


Breath of Ale Wave Detect

Trigger:
  • Set BoAAffectedUnits = (Units within 100.00 of BoAConeAoEPoint[(Integer A)] matching ((((Matching unit) is A structure) Equal to False) and (((((Matching unit) is A ground unit) Equal to True) and (((Matching unit) is Magic Immune) Equal to False)) and ((((Matching unit) is alive)


Also needs to be destroyed...

Trigger:
  • Unit Group - Remove (Picked unit) from BoAAffectedUnits


Isn't needed...

Same again:
Trigger:
  • Custom script: call RemoveLocation(udg_BoAConeAoEPoint[bj_forLoopAIndex])


Hopefully this is all XD

As said several time (Didn't say it in the last trigger, as I think it's obvious) MAKE THEM MUI (Or MPI :p) ! :D

Anyways, a good try ;)
 

HeX.16

Isn't Trollin You Right Now
Reaction score
131
Shit load of problems there Komaqtion i will start to fix them tomorrow. Im way to lazy right now.
 

HeX.16

Isn't Trollin You Right Now
Reaction score
131
Im going to leave this thread for a few days sorry. Learning about Hashtables and MUI is taking me a while. Im also learning Jass. So i will try remake these in Jass.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top