This caused me myself some confusion as well some time ago (and I don't think it's yet been explained clearly in the wiki nor tutorial, though my apologies if it is now explained, as I haven't looked at the wiki or tutorial in quite a while), the reason is this:
with v5.4, you now can have multiple Player Objects, and switch between them.
this also means that the Player Objects that you aren't currently controlling (you can only control 1 ~ no co-op play, lol), quest sees them as just as "normal" (Type: Object)* Objects.
*for an Object:
Type of Object: Object, Room, Object+Room, or Player**
**err... this is under the Options Tab, I believe, as a checkbox (boolean toggle) or maybe as a drop down box (can't remember), with it called something like (or as an option~choice called): "can be a player"
-----
in GUI~Editor:
to set who is initially the start-controlled Player Object:
Game -> Player (Tab) -> Pov -> (choose who, the Object won't show up, unless you turn on its toggle or choice: "can be a player" ~ see above for where to find~do this at)
and to change~switch your "pov" (your currently controlled Player Object):
Add a~new script -> ??? (too lazy to look up ~ you can find it ~ just scroll down to the bottom lol) -> ~ "change game pov" -> (choose your new "game.pov")
in Code:
<game name="blah">
// blah code lines
<pov type="object">player</pov> // using "player" as an example only, for a: name_of_a_Player_Object
// blah code lines
</game>
the "pov" attribute is within (a "child" of) the "game" Object (Game Object)
the "game" Object (Game Object) contains (is a "parent" of) the "pov" attribute
so, in-Code, it is syntaxed~formatted as:
(I'm bolding the "pov" Object, so you can distinguish it, from it's own such attributes "attached to ~ childs of" it, the "pov" Object)
Object: game.pov (pretend that this is just: "pla.yer", no different from "player", lol)
Attribute 1: strength
(
Object <---
Object.Attribute)
(
Object)
game.pov // yes this is different, because it's special, lol
(
Object.Attribute <----
Object.Attribute.Attribute)
(
Object.Attribute)
game.pov.strength
(
Object.Attribute=Value_or_Expression)
game.pov.strength = 5 // Value
game.pov.strength =
game.pov.strength + 5 // Expression
To change~switch your game.pov:
game.pov=name_of_new_Player_Object
if you only have a single Player Object, and for example, using the default Player Object: "player", then you can use:
game.pov
~OR~
player
game.pov.strength=50
~is the same as~
player.strength=50
however, if you're using multiple Player Objects, then it matters whether you use "game.pov" vs (for examples) "player" or "HK"
------
so, this means that a Player Object has TWO descriptions, one for when it is used (controlled) by the game player, and another for when it is not used. Yes, you can be "HK" Player Object, switch~change to "player" Player Object, and then talk to (or fight~kill, ~ never!, you can't defeat~kill "HK"! muwahaha!) "HK" Player Object.
now, the two descriptions, are in separate places in the GUI~Editor:
The Non-Player (Type: Object) Object Description Location (for example):
"player" -> Setup (Tab) -> Description -> (fill it in, as text or as scripts)
The Player Object Description Location (for example):
"player" -> Options (Tab) -> Lookat Object Description (the small and huge boxes at the very bottom) -> (fill it in, as text or as scripts)
hopefully this helps.
------------
P.S.
for in-Code:
I'm too lazy to look up how the two different descriptions are syntaxed~formatted~look as scripting~coding, as you guys~girls can do this yourself anyways, lol.
---------------
P.S.S.
pov = point of view
so think of this as like a "first person shooter game", the "pov" is the character that you're currently controlling, but you can switch to controlling some other character (changing them to being your "pov", game.pov=HK, hehe), and you can switch back again too: game.pov=player, for example.