GetSkill
------------------------------------------------------------
  object.GetSkill(type, id)
    This function will fetch a skill or exp_skill object
  Parameter types:
    integer type
    integer id
  Possible return types:
    object
    None
  Status:
    Tested

SetSkill
------------------------------------------------------------
  object.SetSkill(type, skillid, level, value)
    Sets objects's experience in the skill skillid as close to value
    as permitted. There is currently a limit of 1/4 of a level.
    There's no limit on exp reduction.
    FIXME overall experience is not changed (should it be?)
    FIXME need updated documentation
  Parameter types:
    integer type
    integer skillid
    integer level
    integer value
  Possible return types:
    None
  Status:
    Tested

ActivateRune
------------------------------------------------------------
  object.ActivateRune(what)
  Parameter types:
    object what
  Possible return types:
    None
  Status:
    Untested

CheckTrigger
------------------------------------------------------------
  object.CheckTrigger(what)
  Parameter types:
    object what
  Possible return types:
    None
  Status:
    Unfinished
    MUST DO THE HOOK HERE !

GetGod
------------------------------------------------------------
  object.GetGod()
  Parameter types:
  Possible return types:
    string
  Status:
    Stable

SetGod
------------------------------------------------------------
  object.SetGod(godname)
  Parameter types:
    string godname
  Possible return types:
    None
  Status:
    Unfinished!

TeleportTo
------------------------------------------------------------
  object.TeleportTo(map, x, y, unique)
    Teleports object to the given position of map.
  Parameter types:
    string map
    integer x
    integer y
    (optional) integer unique
  Possible return types:
    None
  Status:
    Tested

InsertInside
------------------------------------------------------------
  object.InsertInside(where)
    Inserts object into where.
  Parameter types:
    object where
  Possible return types:
    None
  Status:
    Stable

Apply
------------------------------------------------------------
  object.Apply(what, flags)
    forces object to apply what.
    flags should be a reasonable combination of the following:
    Daimonin.APPLY_TOGGLE - normal apply (toggle)
    Daimonin.APPLY_ALWAYS - always apply (never unapply)
    Daimonin.UNAPPLY_ALWAYS - always unapply (never apply)
    Daimonin.UNAPPLY_NOMERGE - don't merge unapplied items
    Daimonin.UNAPPLY_IGNORE_CURSE - unapply cursed items
    returns: 0 - object cannot apply objects of that type.
    1 - object was applied, or not...
    2 - object must be in inventory to be applied
  Parameter types:
    object what
    integer flags
  Possible return types:
    integer
  Status:
    Tested

PickUp
------------------------------------------------------------
  object.PickUp(what)
  Parameter types:
    object what
  Possible return types:
    None
  Status:
    Tested

Drop
------------------------------------------------------------
  object.Drop(what)
    Equivalent to the player command "drop" (name is an object name,
    "all", "unpaid", "cursed", "unlocked" or a count + object name :
    "<nnn> <object name>", or a base name, or a short name...)
  Parameter types:
    string what
  Possible return types:
    None
  Status:
    Tested

Take
------------------------------------------------------------
  object.Take(name)
  Parameter types:
    string name
  Possible return types:
    None
  Status:
    Temporary disabled (see commands.c)

Deposit
------------------------------------------------------------
  object.Deposit(deposit_object, string)
    deposit value or string money from object in deposit_object.
    Control first object has that amount of money, then remove it
    from object and add it in ->value of deposit_object.
  Parameter types:
    object deposit_object
    string string
  Possible return types:
    integer
  Status:
    Tested

Withdraw
------------------------------------------------------------
  object.Withdraw(deposit_object, string)
    withdraw value or string money from object in deposit_object.
    Control first object has that amount of money, then remove it
    from object and add it in ->value of deposit_object.
    FIXME Needs updated documentation
  Parameter types:
    object deposit_object
    string string
  Possible return types:
    integer
  Status:
    Tested

Communicate
------------------------------------------------------------
  object.Communicate(message)
    object says message to everybody on its map
    but instead of CFSay it is parsed for other npc or magic mouth
  Parameter types:
    string message
  Possible return types:
    None
  Status:
    Tested

Say
------------------------------------------------------------
  object.Say(message, mode)
    object says message to everybody on its map
    FIXME needs documentation of mode
  Parameter types:
    string message
    (optional) integer mode
  Possible return types:
    None
  Status:
    Tested

SayTo
------------------------------------------------------------
  object.SayTo(target, message, mode)
    NPC talks only to player but map get a "xx talks to" msg too.
    FIXME needs documentation of mode parameter
  Parameter types:
    object target
    string message
    (optional) integer mode
  Possible return types:
    None
  Status:
    Tested

Write
------------------------------------------------------------
  who.Write(message , color)
    Writes a message to a specific player.
  Parameter types:
    string message
    (optional) integer color
  Possible return types:
    None
  Status:
    Tested

SetGender
------------------------------------------------------------
  object.SetGender(gender)
    Changes the gender of object. gender_string should be one of
    Daimonin.NEUTER, Daimonin.MALE, Daimonin.GENDER_FEMALE or
    Daimonin.HERMAPHRODITE
  Parameter types:
    integer gender
  Possible return types:
    None
  Status:
    Tested

SetRank
------------------------------------------------------------
  object.SetRank(rank_string)
    Set the rank of an object to rank_string
    Rank string 'Mr' is special for no rank
  Parameter types:
    string rank_string
  Possible return types:
    object
    None
  Status:
    Tested

SetAlignment
------------------------------------------------------------
  object.SetAlignment(alignment_string)
  Parameter types:
    string alignment_string
  Possible return types:
    object
    None
  Status:
    Tested

GetAlignmentForce
------------------------------------------------------------
  object.GetAlignmentForce()
    This gets the aligment_force from a inventory (should be player?)
  Parameter types:
  Possible return types:
    object
    None
  Status:
    Stable

SetGuildForce
------------------------------------------------------------
  object.SetGuildForce(rank_string)
    Sets the current rank of object to rank_string. Returns
    the guild_force object that was modified.
  Parameter types:
    string rank_string
  Possible return types:
    object
    None
  Warning:
    This set only the title. The guild tag is in <slaying>
    For test of a special guild, you must use GetGuild()
    For settings inside a guild script, you can use this function
    Because it returns the guild_force obj after setting the title
  Status:
    Stable

GetGuildForce
------------------------------------------------------------
  object.GetGuildForce()
    This gets the guild_force from a inventory (should be player?)
  Parameter types:
  Possible return types:
    object
    None
  Status:
    Stable

Fix
------------------------------------------------------------
  object.Fix()
    Recalculates a player's or monster's stats depending on
    equipment, forces, skills etc.
  Parameter types:
  Possible return types:
    None
  Status:
    Untested

Kill
------------------------------------------------------------
  object.Kill(what, how)
  Parameter types:
    object what
    integer how
  Possible return types:
    None
  Status:
    Untested
    add hooks before use!

CastAbility
------------------------------------------------------------
  caster.CastAbility(target,spellno,mode,direction,option)
    caster casts the ability numbered spellno on target.
    mode = Daimonin.CAST_NORMAL or Daimonin.CAST_POTION
    direction is the direction to cast the ability in
    option is additional string option(s)
    FIXME: only allows for directional abilities?
    Abilities are can be cast in magic-blocking areas, and do not
    use magicattack.
  Parameter types:
    object target
    integer spellno
    integer mode
    integer direction
    string option
  Possible return types:
    None
  Status:
    Stable

CastSpell
------------------------------------------------------------
  caster.CastSpell(target,spell,mode,direction,option)
    caster casts the spell numbered spellno on target.
    mode = Daimonin.CAST_NORMAL or Daimonin.CAST_POTION
    direction is the direction to cast the spell in
    option is additional string option(s)
    NPCs can cast spells even in no-spell areas.
    FIXME: only allows for directional spells
    FIXME: is direction/position relative to target? (0 = self)
  Parameter types:
    object target
    integer spell
    integer mode
    integer direction
    string option
  Possible return types:
    None
  Status:
    Untested

DoKnowSpell
------------------------------------------------------------
  object.DoKnowSpell(spell)
    1 if the spell is known by object, 0 if it isn't
  Parameter types:
    integer spell
  Possible return types:
    integer
  Status:
    Tested

AcquireSpell
------------------------------------------------------------
  object.AcquireSpell(spell, mode)
    object will learn or unlearn spell.
    mode: Daimonin.LEARN or Daimonin.UNLEARN
  Parameter types:
    integer spell
    integer mode
  Possible return types:
    None
  Status:
    Tested

DoKnowSkill
------------------------------------------------------------
  object.DoKnowSkill(skill)
    1 if the skill is known by object, 0 if it isn't
  Parameter types:
    integer skill
  Possible return types:
    integer
  Status:
    Tested

AcquireSkill
------------------------------------------------------------
  object.AcquireSkill(skillno, mode)
    object will learn or unlearn skill.
    mode: Daimonin.LEARN or Daimonin.UNLEARN
    Get skill number with Daimonin.GetSkillNr()
  Parameter types:
    integer skillno
    integer mode
  Possible return types:
    None
  Status:
    Tested

FindMarkedObject
------------------------------------------------------------
  object.FindMarkedObject()
    Returns the marked object in object's inventory, or None if no
    object is marked.
  Parameter types:
  Possible return types:
    object
  Status:
    Stable

CheckInvisibleInside
------------------------------------------------------------
  object.CheckInvisibleInside(id)
  Parameter types:
    string id
  Possible return types:
    object
  Status:
    Untested

CreatePlayerForce
------------------------------------------------------------
  object.CreatePlayerForce(force_name, time)
    Creates and insters a player force named force_name in object.
    The values of a player force will effect the player.
    If time is given and > 0, the force will be removed again after
    time/0.02 ticks.
  Parameter types:
    string force_name
    (optional) integer time
  Possible return types:
    object
  Status:
    Stable.

CheckQuestObject
------------------------------------------------------------
  object.CheckQuestObject(archetype, name)
    We get and check the player has a misc'ed quest object
    : If so, the player has usally solved this quest before.
  Parameter types:
    string archetype
    string name
  Possible return types:
    object
    None
  Status:
    Stable

AddQuestObject
------------------------------------------------------------
  object.AddQuestObject(archetype, name)
    Add the misc'ed quest object to players quest container.
    : create the quest container if needed
  Parameter types:
    string archetype
    string name
  Possible return types:
    None
  Status:
    Stable

CreatePlayerInfo
------------------------------------------------------------
  object.CreatePlayerInfo(name)
    Creates a player_info object of specified name in object's
    inventory
    The Values of a player_info object will NOT effect the player.
    Returns the created object
  Parameter types:
    string name
  Possible return types:
    object
  Status:
    Stable

GetPlayerInfo
------------------------------------------------------------
  object.GetPlayerInfo(name)
    get first player_info with the specified name in who's inventory
  Parameter types:
    string name
  Possible return types:
    object
    None
  Status:
    Stable

GetNextPlayerInfo
------------------------------------------------------------
  object.GetNextPlayerInfo(player_info)
    get next player_info in who's inventory with same name as
    player_info
  Parameter types:
    object player_info
  Possible return types:
    object
    None
  Status:
    Stable

CreateInvisibleInside
------------------------------------------------------------
  object.CreateInvisibleInside(id)
  Parameter types:
    string id
  Possible return types:
    object
  Status:
    Untested

CreateObjectInside
------------------------------------------------------------
  object.CreateObjectInside(archname, identified, number, value)
    Creates an object from archname and inserts into object.
    identified is either Daimonin.IDENTIFIED or Daimonin.UNIDENTIFIED
    If value is >= 0 it will be used as the new object's value,
    otherwise the value will be taken from the arch.
  Parameter types:
    string archname
    integer identified
    integer number
    (optional) integer value
  Possible return types:
    object
  Status:
    Stable
    i must change this a bit - only REAL arch names - not object names

CheckInventory
------------------------------------------------------------
  object.CheckInventory(mode, arch, name, title, type)
    returns the first found object with the specified name if found
    in object's inventory, or None if it wasn't found.
    title, arch or object == None will be ignored for search
    also type == -1
    mode: 0=only inventory, 1: inventory and container, 2: all inv.
  Parameter types:
    integer mode
    string or None arch
    (optional) string or None name
    (optional) string or None title
    (optional) integer type
  Possible return types:
    object
    None
  Status:
    Tested

SetSaveBed
------------------------------------------------------------
  object.SetSaveBed(map, x, y)
    Sets the current savebed position for object to the specified
    coordinates on the map.
  Parameter types:
    map map
    integer x
    integer y
  Possible return types:
    None
  Status:
    Stable

Remove
------------------------------------------------------------
  object.Remove()
    Takes the object out of whatever map or inventory it is in. The
    object can then be inserted or teleported somewhere else, or just
    left alone for the garbage collection to take care of.
  Parameter types:
  Possible return types:
    None
  Status:
    Tested
    Gecko  : This function is DANGEROUS. Added limitations on what can be
    removed to avoid some of the problems

SetPosition
------------------------------------------------------------
  object.SetPosition(x, y)
    Cannot be used to move objects out of containers. (Use Drop() or
    TeleportTo() for that)
  Parameter types:
    integer x
    integer y
  Possible return types:
    None
  Status:
    Tested

IdentifyItem
------------------------------------------------------------
  caster.IdentifyItem(target, marked, mode)
    caster identifies object(s) in target's inventory.
    mode: Daimonin.IDENTIFY_NORMAL, Daimonin.IDENTIFY_ALL or
    Daimonin.IDENTIFY_MARKED
    marked must be None for IDENTIFY_NORMAL and IDENTIFY_ALL
  Parameter types:
    object target
    speciall marked
    integer mode
  Possible return types:
    None
  Status:
    Tested

IsOfType
------------------------------------------------------------
  object.IsOfType(type)
    returns 1 if object is of the specified type, or 0 otherwise.
    (e.g. Daimonin.TYPE_MONSTER for monster/NPC, or
    Daimonin.TYPE_PLAYER for players)
  Parameter types:
    integer type
  Possible return types:
    integer
  Status:
    Tested

Save
------------------------------------------------------------
  object.Save()
  Parameter types:
  Possible return types:
    string
  Status:
    Untested

GetIP
------------------------------------------------------------
  object.GetIP()
  Parameter types:
  Possible return types:
    string
    None
  Status:
    Tested

GetArchName
------------------------------------------------------------
  object.GetArchName()
    
  Parameter types:
  Possible return types:
    string
  Status:
    Tested

ShowCost
------------------------------------------------------------
  buyer.ShowCost(value)
    Returns a string describing value as x gold, x silver, x copper
    : cost string comes from shop.c and is temporary STATIC
    : note: whoptr is not used - perhaps we use this in future with it
  Parameter types:
    integer value
  Possible return types:
    string
  Status:
    Tested

GetItemCost
------------------------------------------------------------
  buyer.GetItemCost(object,type)
    type is one of Daimonin.COST_TRUE, COST_BUY or COST_SELL
  Parameter types:
    object object
    integer type
  Possible return types:
    integer
  Status:
    Untested

GetMoney
------------------------------------------------------------
  buyer.GetMoney()
    returns the amount of money the object carries in copper
  Parameter types:
  Possible return types:
    integer
  Status:
    Tested

PayForItem
------------------------------------------------------------
  buyer.PayForItem(object)
  Parameter types:
    object object
  Possible return types:
    integer
  Status:
    Untested

PayAmount
------------------------------------------------------------
  buyer.PayAmount(value)
    If buyer has enough money, value copper will be deducted from
    buyer, and 1 will be returned. Otherwise returns 0
  Parameter types:
    integer value
  Possible return types:
    integer
  Status:
    Tested

SendCustomCommand
------------------------------------------------------------
  object.SendCustomCommand(customcommand)
  Parameter types:
    string customcommand
  Possible return types:
    None
  Status:
    Untested

Clone
------------------------------------------------------------
  object.Clone(mode)
    mode = Daimonin.CLONE_WITH_INVENTORY (default) or
    Daimonin.CLONE_WITHOUT_INVENTORY
    You should do something with the clone. TeleportTo() or
    InsertInside() are useful functions for this.
  Parameter types:
    (optional) integer mode
  Possible return types:
    object
  Status:
    Tested

GetUnmodifiedAttribute
------------------------------------------------------------
  object.GetUnmodifiedAttribute(attribute_id)
  Parameter types:
    integer attribute_id
  Possible return types:
  Status:
    UNFINISHED <- fields not available...

