From The Mana World
< User:Gumi
Revision as of 00:16, 18 March 2015 by Gumi (talk | contribs)

This proposal is to enable npc creation from Tiled. Should not be used for floating npcs (no map).

Usage

For the examples below we will use the map 009-1 and position 25, 25. The only mandatory property is "callfunc"

Basic npc

Object type: NPC
Object name: FooBar#Baz

Property Value
callfunc Qux

Gives:

009-1,25,25,0|script|FooBar#Baz|127
{
    set @npcname$, "FooBar";
    callfunc "Qux";
    end;
}

That's nice but the NPC does not have a visible sprite, it defaults to 127. Let's add a sprite.

Adding a sprite

Object type: NPC
Object name: FooBar#Baz

Property Value
sprite 161
callfunc Qux

Gives:

009-1,25,25,0|script|FooBar#Baz|161
{
    set @npcname$, "FooBar";
    callfunc "Qux";
    end;
}

The "sprite" property is non-mandatory and defaults to 127 when not set.

Setting the direction

Object type: NPC
Object name: FooBar#Baz

Property Value
direction 3
sprite 161
callfunc Qux

Gives:

009-1,25,25,3|script|FooBar#Baz|161
{
    set @npcname$, "FooBar";
    callfunc "Qux";
    end;
}


Setting as debug npc

Object type: NPC
Object name: FooBar#Baz

Property Value
debug true
direction 3
sprite 161
callfunc Qux

Gives:

009-1,25,25,3|script|FooBar#Baz|161
{
    set @npcname$, "FooBar";
    callfunc "Qux";
    end;
OnInit:
    if(DEBUG) end;
    disablenpc "FooBar#Baz";
    end;
}


Adding a trigger area

Object type: NPC
Object name: FooBar#Baz

Property Value
trigger 2,4
debug true
direction 3
sprite 161
callfunc Qux

Gives:

009-1,25,25,3|script|FooBar#Baz|161,2,4
{
    end;
OnTouch:
    set @npcname$, "FooBar";
    callfunc "Qux";
    end;
OnInit:
    if(DEBUG) end;
    disablenpc "FooBar#Baz";
    end;
}


Adding custom variables

Object type: NPC
Object name: FooBar#Baz

Property Value
@quux 19
@norf$ baz
trigger 2,4
debug true
direction 3
sprite 161
callfunc Qux

Gives:

009-1,25,25,3|script|FooBar#Baz|161,2,4
{
    end;
OnTouch:
    set @quux, 19;
    set @norf$, "baz";
    set @npcname$, "FooBar";
    callfunc "Qux";
    end;
OnInit:
    if(DEBUG) end;
    disablenpc "FooBar#Baz";
    end;
}

Any property starting with @ is treated as a custom variable. Only temporary variables (@) can be set through NPC objects. To set global variables, please manually add a floating NPC.



Examples

Debug npc

Object type: NPC
Object name: Debug#3

Property Value
sprite 154
debug true
callfunc Debug

Gives:

020-1,75,85,0|script|Debug#3|154
{
    set @npcname$, "Debug";
    callfunc "Debug";
    end;
OnInit:
    if(DEBUG) end;
    disablenpc "Debug#3";
    end;
}