
Skills
Skilled Objects
Items

The system provides for a mechanism to exercise various skills which is a script structure. Exercising a skill creates an interaction between a player initiating the skill upon another object which can be another gameobject which may even be created as a result f exercising the skill.  

In the functioning of exercising a 'skill' there is a process that occurs and the definition of the skill will determine which elements are used and 

The technique of building this out will be based upon abstractions. Action abstractions can be, but not limited to, the following:

1. Exchanging an item with another player or NPC.
2. Exchanging part of an item if allowed by the item. Currency can be implemented in this abstraction.
3. Casting a spell.
4. Battle with another player. 
5. Teaching a skill to another play or NPC.
6. Building an object from raw materials like smithing, cooking, etc.
7. 

Each of these are abstractions of the process of initiating a skill. 

Skills are also objects that can be passed from player to player or to other gameobjects. This means that you can 'teach' the skill to another entity. Skills can be also very instantaeous or they may take alot of time to go through their processes. In this manner skills can have timed values associated with them. 

Do we need an overloading functionality so the same skill selection can run on different targets and will run different skill based upon target?

Steps of skill resolution.

Is target accepted by this skill.
Summate whether the required elements exist. If not then start denied skill.



Add newly created item to inventory or drop at location displacement.

\chapter{Performing Actions}
In game the player will right click on a 'target'. The target will present a list of actions that can be performed on the target in relation to the player. 


\chapter{Tables}
The game inventory of stuff is defined in a table called 'items'. z

An 'item_instance' table is created that is used as a many-to-many cross reference table to tie ownership of object instances to gameobjects such as Players and NPCs.

A 'npcs' table is created to define the names and locations of the NPCs in the game. 


 

 
