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.
@wushin: There is a "end;" instead of a "close;" because not all function send "mes" so "close2;" should be put before "return;" in the functions
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. Variables should be FIXED values (ie. 3), not dynamic values (ie. @foo - 3). Only temporary variables (@) can be set through NPC objects. To set global variables, please manually add a floating NPC.
@wushin: Should variables be cleaned before the "end;" ?
Automatically added variables
Variable | Value |
---|---|
@npcname$ | Anything that comes before the # (if any) in the object name |
@wushin: Should we add more default variables like the X,Y position of the 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; }
Banker
Object type: NPC
Object name: Richard
Property | Value |
---|---|
sprite | 161 |
callfunc | Banker |
Gives:
009-2,20,99,0|script|Richard|161 { set @npcname$, "Richard"; callfunc "Banker"; end; }