Fork of Advanced NPC for Minetest, using mobs_redo API.
Go to file
zorman2000 554fde4643 Adds pathfinding library Jumper by Ronald Yonaba. This includes an implementation of the A* pathfinding algorithm which makes NPC now always get to their goal node.
Pathfinding: Adds functions that allows to map the Minetest 3D map to a 2D array to use by the pathfinding algorithm.
Actions: Use new code for find_path function. Improves door opening while walking on paths, and also now close them. Cottages fence gates and doors are also now supported in addition to the default doors and gates.
Changes to the Readme and the License.
2017-01-06 07:57:42 -05:00
Jumper@df4eb22f2b Adds pathfinding library Jumper by Ronald Yonaba. This includes an implementation of the A* pathfinding algorithm which makes NPC now always get to their goal node. 2017-01-06 07:57:42 -05:00
actions Adds pathfinding library Jumper by Ronald Yonaba. This includes an implementation of the A* pathfinding algorithm which makes NPC now always get to their goal node. 2017-01-06 07:57:42 -05:00
backup Adds pathfinding library Jumper by Ronald Yonaba. This includes an implementation of the A* pathfinding algorithm which makes NPC now always get to their goal node. 2017-01-06 07:57:42 -05:00
locale First commit. Using mobs_npc code as start. 2016-11-12 07:06:09 -05:00
textures Added new texture for marriage ring. 2016-12-15 21:33:57 -05:00
trade Actions: added experimental, still WIP path-finding code in Lua 2016-12-28 22:10:06 -05:00
.gitmodules Adds pathfinding library Jumper by Ronald Yonaba. This includes an implementation of the A* pathfinding algorithm which makes NPC now always get to their goal node. 2017-01-06 07:57:42 -05:00
README.md Adds pathfinding library Jumper by Ronald Yonaba. This includes an implementation of the A* pathfinding algorithm which makes NPC now always get to their goal node. 2017-01-06 07:57:42 -05:00
debug.txt Adds pathfinding library Jumper by Ronald Yonaba. This includes an implementation of the A* pathfinding algorithm which makes NPC now always get to their goal node. 2017-01-06 07:57:42 -05:00
depends.txt First commit. Using mobs_npc code as start. 2016-11-12 07:06:09 -05:00
description.txt First commit. Using mobs_npc code as start. 2016-11-12 07:06:09 -05:00
dialogue.lua Trade: Fully working buy and sell offers. 2016-12-17 12:01:35 -05:00
init.lua Adds pathfinding library Jumper by Ronald Yonaba. This includes an implementation of the A* pathfinding algorithm which makes NPC now always get to their goal node. 2017-01-06 07:57:42 -05:00
license.txt Adds pathfinding library Jumper by Ronald Yonaba. This includes an implementation of the A* pathfinding algorithm which makes NPC now always get to their goal node. 2017-01-06 07:57:42 -05:00
mod.conf Progress on gifts and relationships. Still requires further debugging to understand some timer issues. 2016-11-14 06:28:37 -05:00
npc.lua Adds pathfinding library Jumper by Ronald Yonaba. This includes an implementation of the A* pathfinding algorithm which makes NPC now always get to their goal node. 2017-01-06 07:57:42 -05:00
random_data.lua Trade: Working buy/sell trade mechanism. 2016-12-15 20:51:06 -05:00
relationships.lua Actions: Added some fundamental movement actions. 2016-12-18 12:32:39 -05:00
trader.lua First commit. Using mobs_npc code as start. 2016-11-12 07:06:09 -05:00
trader_test.lua First commit. Using mobs_npc code as start. 2016-11-12 07:06:09 -05:00

README.md

advanced_npc

Introduction

Advanced NPC framework for Minetest, based on mobs_redo. The goal of this mod is to be able to have live villages in Minetest. These NPCs are highly inspired by the typical NPCs of Harvest Moon games. The general idea is that on almost all buildings of a village there are NPCs that are kind of intelligent: they have daily tasks they perform, can speak to players, can trade with the player, can use their own items (chests for example), know where to go around their village, can be lumbers, miners or any other Minetest-suitable profession and can ultimately engage into relationships with the player. And while basically only players are mentioned here, the ultimate goal is that they can do all of this also among themselves, so that villages are completely alive and evolving by themselves, without necessary player intervention.

License

advanced_npc is Copyright (C) 2016-2017 Hector Franqui (zorman2000), licensed under the GPLv3 license. See 'LICENSE.txt' for details.

The Jumper library is Copyright (c) 2012-2013 Roland Yonaba, licensed under MIT license. See 'Jumper/LICENSE.txt' for details.

Current progress and roadmap

Version 1.0

Phase 1: Gifts and relationships: In progress

  • NPCs should be able to receive items
  • NPCs will have favorite and disliked items
  • Giving an NPC their favorite or disliked item will affect positively/negatively their relationship with that player.
  • Eventually, an NPC can fall in love with that player and marry him/her
  • Relationships among NPCs should be possible too

Phase 2: Dialogues: In progress

  • NPCs should be able to perform complex dialogues:
    • Use yes/no or multiple option dialogue boxes to interact with player
    • Answers and responses by player
    • Specific dialogues on certain flags (so that events can change what an NPC says)

Phase 3: Trading: In progress

  • NPCs should be able to trade, either buy or sell items to/from player and other NPCs
    • There are two types of traders: casual and dedicated.
      • Casual traders are normal NPC which occasionaly make buy or sell offers to the player
      • Dedicated traders are traders that, when talked to, always make buy and sell offers. They have a greater variety too.
  • NPCs will also be able to offer "services", for example, repairing tools, by receiving an item and a payment, and then returning a specific item.

Phase 4: Actions: In progress

  • NPCs should be able to use chests, furnaces, doors, beds and sit on "sittable" nodes (in progress)
  • NPCs should be able to walk to specific places. Should also be able to open doors, fence gates and any other type of openable node while going to a place.
  • NPCs should have the ability to identify nodes that belong to him/her, and recall them/

Phase 5: Schedules and fundamental jobs

  • NPCs should be able to perform different activities on depending on the time of the day. For instance, a NPC could be farming during the morning, selling its product on the afternoon, and comfortable sitting at home during the night.
  • Add the fundamental jobs, which are:
    • Mining
    • Wood cutting
    • Farming
    • Cooking

Phase 6: Advanced spawners for villages

  • Support for mg_villages mod by Sokomine
    • Identify, on medieval villages, houses that NPC can live on.
    • Identify the amount of NPC that the house can support
    • Spawn NPCs and assign them a bed. Detect sharable objects (chest, furnace, benches)
    • Assign them random schedules based on the type of building they spawn.

Version 2.0

Phase 7: Make NPCs scriptable

Phase 8: Improve NPCs pathfinding, allow them to go upstairs.

Phase 9: Improve NPCs so that they can tame and own farm animals

Phase 10: Improve NPCs so that they can run on carts, boats and (maybe) horses

Version 3.0

Phase 11: Integrate with commerce mod

Phase 12: Improve relationships for obtaining more benefits from a married NPC

Phase 13: Improve AI to include support for house families

Phase 14: Improve AI to create village communities