Asteria 2.0

This large update doesn't really contain much new content. That wasn't
really the focus when I was programming for the last two weeks. What I
did do was go through the entire server and re-write old code I thought
could be better, and fixed a crapload of bugs! Now with that out of the
way all the focus is on the content from now on.

Keeping this "lightweight" is becoming increasingly difficult. In order
to do thing as efficiently as possible, I'm trying to make sure
everything I do has some sort of 'foundation' for future implementation
this, along with the need for lots of external loading, is making the
server a lot more bulky then I'd hoped.

With that said, the updates:

- Issues with global items fixed

Found a bug where if you went into a different region then came back,
global items would be gone. This issue is resolved.

Another bug where if you picked up a global item, logged out and logged
back in the global item would re-appear (but you wouldn't be able to
pick it up, due to the fact that the system wasn't programmed
retardedly). This has been fixed.

- Shops

Value checking, buying, selling, and even restocking are all fully
functional as far as I know. The ability to have shops restock
themselves is optional (as if certain shops restocked it could interfere
with the economy).

- ScheduledChainFactory

The first build of this was a mistake. Pretty much all I was doing was
throwing tasks in a queue, and then polling the queue which is pretty
useless (and somewhat defies the defintion of a 'chain' and 'controlled
execution', what this was intended to be) and might as well have been
scheduling a shit load of tasks instead because it proved to be almost
useless when starting the cutscene I intended to do.

So, I've solved this issue how? by creating something more flexible,
less stressful on the server, and that fits the definition of a 'chain'
more.

And how does this new creation differ from the old one? Instead of using
a shitload of tasks I first created a container Object called a
'ScheduledChainElement' that actions are wrapped in along with the delay
before being submitted to the factory's internal queue. Then when the
factory is ran one task is scheduled that executes a action only after
the last action was completed and the delay is finished (delay time
depends on the time unit the chain factory is running on). This results
in having execution like so:

new-chain-factory:
chain-element 1 [delay: 3; action: print "hi"];
chain-element 2 [delay: 3; action: print "hi"];
chain-element 3 [delay: 3; action: print "hi"];

... wait 3 seconds print "hi"
.. wait 3 more seconds print "hi"
..wait a final three seconds, print "hi" then shutdown the chain factory

rather than

old-chain-factory:
chain-element 1 [delay: 3; action: print "hi"];
chain-element 2 [delay: 3; action: print "hi"];
chain-element 3 [delay: 3; action: print "hi"];

... wait 3 seconds and "hi" is printed three times because the old chain
factory was just mass scheduling tasks, which in fact, is putting more
stress on the task factory because the new method only uses one task to
schedule a mass amount of actions.

Also with the new chain factories, they can be used more than once.

- DedicatedServer is gone

The whole concept was borked, all I was doing was creating a useless
thread for no reason other than to hog resources? no more
'DedicatedServer'.

- Item bonuses

Correct item bonuses are now dsplayed in the equipment tab.

- Full helm and platebodies updating

Full helmets and platebodies would make the character invisible, I've
fixed this.

- Object Orientation

Correct object facing ids, they were messed up before.

- Npc Dialogues

Was doing npc dialogues statically instead of instancing certain parts
per player, which resulted in a weird global effect (if one player was
on a certain stage of dialogue with an npc, so was everyone else). This
has been fixed.

- Walking queue listener fix

I noticed a small loophole where the listeners task was occasionally not
being stopped and could have caused a huge memory leak if not fixed!

- Walking queue addition

The ability to lock and unlock your movement has been added.

- Updates to the gui

Switching betweetn different tabs, a new menu, and a new button. This
will be updated even more in the future.

- Also crapload of cleaning, renaming, repackaging and other minor bug
fixes and additions.

So much has been done that I'd like to call this Asteria v2.0 this is
getting close to completetion! Didn't think I'd get this far!