User:Gumi/Tiled/NPC Proposal
This proposal is to enable npc creation from Tiled. Should not be used for floating npcs (no map). For the examples below we will use the map 009-1 and position 25, 25;
Usage
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;
}
Set 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 |
|---|---|
| @foo | 19 |
| @bar$ | 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 @foo, 19;
set @bar, "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.