Hello!
I love the game, really, I played it for the first time recently, and it was awesome.
I finished the 3 quests, I want more!
So I was wondering how does mapping/modding for FLARE works?
I just found out about this page : https://github.com/clintbellanger/flare/wiki/Mapmaking
But it claims to be outdated.
That kind of things should be keep up to date and linked from the main website.
But before even thinking of doing new maps, the simplest way to extend flare would be to add quests to the existing maps and npcs. Is quest writing supposed to be done directly in the txt files or is there some kind of interface for this kind of things?
I use Tiled to edit maps. The quest dialog files are edited in any plain-text editor.
Basically I need to carve out some time and create tutorials for all of this. Otherwise you can try looking at existing files to see how they work. Feel free to ask me any questions about what you see.
Yeah, I managed to add a quest by doing a new mod.
But in order to add a character on a frontier map, I had to copy the whole map. It would be great if map and enemies on it would be on separate files.
My quest is really small, I just added a necromancer hard to beat that the first npc ask us to kill if we come back to see him after averguard. Please look at http://mcmic.haxx.es/necromancy.tar.gz
Congratulations, you've made a good first step towards modding FLARE! I just played through your new quest. It worked great for me, though that graveyard could be a serious deathtrap for unsuspecting 1st-level players on their way to the goblin encampment.
Blergabeeble. I have a VERY small (20x20) test map going, and I can get the chest to open it if I walk over it. I corrected the collision layer, but now I can't open the chest! The hotspot attribute appears to be necessary, but I can't for the life of me figure out what it's calling for.
I agree with McMic that it'd be nice not to have to copy the whole map file - I also had to just in order to create the teleport point.
Also, for anyone following in my footsteps, the documentation at https://github.com/clintbellanger/flare/wiki/Mapmaking appears to be outdated in the following way:
[layer] id=background format=dec data=
should be:
[layer] type=background data=
makrohn, there are two ways to make chest events work.
1. Make it so the chest opens when you walk next to it. Instead of the event location being the 1x1 tile the chest is on, make it the 3x3 area surrounding the chest.
2. Hotspots are screen offsets and width/height for the mouse-clickable area to activate an event. If you're using a regular chest I suggest taking the hotspot info from an existing chest on a current map.
Is there a defeat_unset_status? I'm trying a classic "kill 3 goblins" quest, and I've gotten as far as kill the first one to get defeat_status=1_dead_gob. I somehow need, however, a prerequisite requires_status=kill_gobs, and then further down requires_status=1_dead_gob, defeat_status=2_dead_gobs, defeat_unset_status=1_dead_gob, so on, and so forth. Unless you already have some sort of incremental tracker built into the engine?
There is no defeat_unset_status, though if there's enough case for one I'll add it. Quest counters are something I can add later, and make the most sense for this kind of quest.
Until then, perhaps do a more interesting quest :)
Ahaha. Good answer.
small path for tiled-qt-0.8.1/src/plugins/flare/flareplugin.cpp
change from:
if (ObjectGroup *group = layer->asObjectGroup()) {
foreach (const MapObject *o, group->objects()) {
if (o->type().isEmpty()) {
out << "[" << group->name() << "]\n";
// display object name as comment
if (o->name().isEmpty()) {
out << "# " << o->name() << "\n";
}
out << "type=" << o->type() << "\n";
out << "location=" << o->x() << "," << o->y();
out << "," << o->width() << "," << o->height() << "\n";
// write all properties for this object
Properties::const_iterator it = o->properties().constBegin();
Properties::const_iterator it_end = o->properties().constEnd();
for (; it != it_end; ++it) {
out << it.key() << "=" << it.value() << "\n";
}
out << "\n";
}
}
to:
if (ObjectGroup *group = layer->asObjectGroup()) {
foreach (const MapObject *o, group->objects()) {
if (!o->type().isEmpty()) { // !
out << "[" << group->name() << "]\n";
// display object name as comment
if (!o->name().isEmpty()) {
out << "# " << o->name() << "\n";
}
out << "type=" << o->type() << "\n";
out << "location=" << o->x() << "," << o->y();
if(group->name()=="enemy"){
out << "\n";
} else {
out << "," << o->width() << "," << o->height() << "\n";
}
// write all properties for this object
Properties::const_iterator it = o->properties().constBegin();
Properties::const_iterator it_end = o->properties().constEnd();
for (; it != it_end; ++it) {
out << it.key() << "=" << it.value() << "\n";
}
out << "\n";
}
}
}
sample map: http://www.ex.ua/view_storage/759173035633
С Уважением Ковальчук Роман.
odino4ka,
Is your patch to avoid writing width,height for enemies?
The data isn't necessary, but the Flare engine will ignore those values for Enemy blocks. This is nice because the Flare Tiled plugin stays very simple.
Unless there's a situation I'm not thinking of that may cause issues?
This patch allows you to create a map without using text editors.
In your manual for the creation of maps, monsters, and adds a group of monsters in your hand, after the patch, it can be done in the editor Tiled, which for many will be easier. try, then it will be possible to arrange the editor monsters or NPC, or event, or teleport, and then do export and play.
P.S. Apologies for machine translation, I do not understand English.
С Уважением Ковальчук Роман.