Occupations: Refactor all occupation defs into separate Lua files.
Add WIP priest occupation. Add WIP (very WIP) farmer occupation.
This commit is contained in:
parent
6c3988a731
commit
2a0b0aa538
150
data/occupations/default.lua
Normal file
150
data/occupations/default.lua
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
----------------------------------------------------
|
||||||
|
-- Default occupation for Advanced NPC
|
||||||
|
-- By Zorman2000
|
||||||
|
----------------------------------------------------
|
||||||
|
-- The default "occupation" gives some schedule entries to the NPCs
|
||||||
|
-- which don't have any occupation. The rest is left as randomly
|
||||||
|
-- initialized.
|
||||||
|
|
||||||
|
local basic_def = {
|
||||||
|
-- Use random textures
|
||||||
|
textures = {},
|
||||||
|
-- Use random dialogues
|
||||||
|
dialogues = {},
|
||||||
|
-- Initialize inventory with random items
|
||||||
|
initial_inventory = {},
|
||||||
|
-- Initialize schedule
|
||||||
|
schedules_entries = {
|
||||||
|
-- Schedule entry for 7 in the morning
|
||||||
|
[7] = {
|
||||||
|
-- Get out of bed
|
||||||
|
[1] = {task = npc.actions.cmd.USE_BED, args = {
|
||||||
|
pos = npc.places.PLACE_TYPE.BED.PRIMARY,
|
||||||
|
action = npc.actions.const.beds.GET_UP
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Walk to home inside
|
||||||
|
[2] = {task = npc.actions.cmd.WALK_TO_POS, args = {
|
||||||
|
end_pos = npc.places.PLACE_TYPE.OTHER.HOME_INSIDE,
|
||||||
|
walkable = {}
|
||||||
|
},
|
||||||
|
chance = 75
|
||||||
|
},
|
||||||
|
-- Allow mobs_redo wandering
|
||||||
|
[3] = {action = npc.actions.cmd.FREEZE, args = {freeze = false}}
|
||||||
|
},
|
||||||
|
-- Schedule entry for 7 in the morning
|
||||||
|
[8] = {
|
||||||
|
-- Walk to outside of home
|
||||||
|
[1] = {task = npc.actions.cmd.WALK_TO_POS, args = {
|
||||||
|
end_pos = npc.places.PLACE_TYPE.OTHER.HOME_OUTSIDE,
|
||||||
|
walkable = {}
|
||||||
|
},
|
||||||
|
chance = 75
|
||||||
|
},
|
||||||
|
-- Allow mobs_redo wandering
|
||||||
|
[2] = {action = npc.actions.cmd.FREEZE, args = {freeze = false}}
|
||||||
|
},
|
||||||
|
-- Schedule entry for 12 midday
|
||||||
|
[12] = {
|
||||||
|
-- Walk to a sittable node
|
||||||
|
[1] = {task = npc.actions.cmd.WALK_TO_POS, args = {
|
||||||
|
end_pos = {place_type=npc.places.PLACE_TYPE.SITTABLE.PRIMARY, use_access_node=true},
|
||||||
|
walkable = {"cottages:bench"}
|
||||||
|
},
|
||||||
|
chance = 75
|
||||||
|
},
|
||||||
|
-- Sit on the node
|
||||||
|
[2] = {task = npc.actions.cmd.USE_SITTABLE, args = {
|
||||||
|
pos = npc.places.PLACE_TYPE.SITTABLE.PRIMARY,
|
||||||
|
action = npc.actions.const.sittable.SIT
|
||||||
|
},
|
||||||
|
depends = {1}
|
||||||
|
},
|
||||||
|
-- Stay put into place
|
||||||
|
[3] = {action = npc.actions.cmd.SET_INTERVAL, args = {
|
||||||
|
freeze = true,
|
||||||
|
interval = 35
|
||||||
|
},
|
||||||
|
depends = {2}
|
||||||
|
},
|
||||||
|
[4] = {action = npc.actions.cmd.SET_INTERVAL, args = {
|
||||||
|
freeze = true,
|
||||||
|
interval = npc.actions.default_interval
|
||||||
|
},
|
||||||
|
depends = {3}
|
||||||
|
},
|
||||||
|
-- Get up from sit
|
||||||
|
[5] = {action = npc.actions.cmd.USE_SITTABLE, args = {
|
||||||
|
pos = npc.places.PLACE_TYPE.SITTABLE.PRIMARY,
|
||||||
|
action = npc.actions.const.sittable.GET_UP
|
||||||
|
},
|
||||||
|
depends = {4}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Schedule entry for 1 in the afternoon
|
||||||
|
[13] = {
|
||||||
|
-- Give NPC money to buy from player
|
||||||
|
[1] = {property = npc.schedule_properties.put_multiple_items, args = {
|
||||||
|
itemlist = {
|
||||||
|
{name="default:iron_lump", random=true, min=2, max=4}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
chance = 75
|
||||||
|
},
|
||||||
|
-- Change trader status to "trader"
|
||||||
|
[2] = {property = npc.schedule_properties.trader_status, args = {
|
||||||
|
status = npc.trade.TRADER
|
||||||
|
},
|
||||||
|
chance = 75
|
||||||
|
},
|
||||||
|
[3] = {property = npc.schedule_properties.can_receive_gifts, args = {
|
||||||
|
can_receive_gifts = false
|
||||||
|
},
|
||||||
|
depends = {1}
|
||||||
|
},
|
||||||
|
-- Allow mobs_redo wandering
|
||||||
|
[4] = {action = npc.actions.cmd.FREEZE, args = {freeze = false}}
|
||||||
|
},
|
||||||
|
-- Schedule entry for 6 in the evening
|
||||||
|
[18] = {
|
||||||
|
-- Change trader status to "none"
|
||||||
|
[1] = {property = npc.schedule_properties.trader_status, args = {
|
||||||
|
status = npc.trade.NONE
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Enable gift receiving again
|
||||||
|
[2] = {property = npc.schedule_properties.can_receive_gifts, args = {
|
||||||
|
can_receive_gifts = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Get inside home
|
||||||
|
[3] = {task = npc.actions.cmd.WALK_TO_POS, args = {
|
||||||
|
end_pos = npc.places.PLACE_TYPE.OTHER.HOME_INSIDE,
|
||||||
|
walkable = {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Allow mobs_redo wandering
|
||||||
|
[4] = {action = npc.actions.cmd.FREEZE, args = {freeze = false}}
|
||||||
|
},
|
||||||
|
-- Schedule entry for 10 in the evening
|
||||||
|
[22] = {
|
||||||
|
[1] = {task = npc.actions.cmd.WALK_TO_POS, args = {
|
||||||
|
end_pos = {place_type=npc.places.PLACE_TYPE.BED.PRIMARY, use_access_node=true},
|
||||||
|
walkable = {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Use bed
|
||||||
|
[2] = {task = npc.actions.cmd.USE_BED, args = {
|
||||||
|
pos = npc.places.PLACE_TYPE.BED.PRIMARY,
|
||||||
|
action = npc.actions.const.beds.LAY
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Stay put on bed
|
||||||
|
[3] = {action = npc.actions.cmd.FREEZE, args = {freeze = true}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Register default occupation
|
||||||
|
npc.occupations.register_occupation(npc.occupations.basic_name, basic_def)
|
73
data/occupations/default_farmer.lua
Normal file
73
data/occupations/default_farmer.lua
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
----------------------------------------------------
|
||||||
|
-- Test farmer occupation for Advanced NPC
|
||||||
|
-- By Zorman2000
|
||||||
|
----------------------------------------------------
|
||||||
|
-- This farmer implementation is still WIP. It is supposed to spawn
|
||||||
|
-- on buildings that have plots or there are fields nearby. Also, it
|
||||||
|
-- work on its crops during the morning, and sell some of them on the
|
||||||
|
-- afternoon.
|
||||||
|
|
||||||
|
local farmer_def = {
|
||||||
|
dialogues = {},
|
||||||
|
textures = {},
|
||||||
|
initial_inventory = {},
|
||||||
|
schedule_entries = {
|
||||||
|
[7] = {
|
||||||
|
[1] =
|
||||||
|
{
|
||||||
|
task = npc.actions.cmd.WALK_TO_POS,
|
||||||
|
args = {
|
||||||
|
end_pos = npc.places.PLACE_TYPE.OTHER.HOME_OUTSIDE,
|
||||||
|
walkable = {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[2] =
|
||||||
|
{
|
||||||
|
check = true,
|
||||||
|
range = 2,
|
||||||
|
random_execution_times = true,
|
||||||
|
min_count = 10,
|
||||||
|
max_count = 12,
|
||||||
|
nodes = {"farming:cotton_3"},
|
||||||
|
actions =
|
||||||
|
{
|
||||||
|
-- Actions for grown cotton - harvest and replant
|
||||||
|
["farming:cotton_3"] =
|
||||||
|
{
|
||||||
|
[1] =
|
||||||
|
{
|
||||||
|
action = npc.actions.cmd.WALK_STEP,
|
||||||
|
},
|
||||||
|
[2] =
|
||||||
|
{
|
||||||
|
action = npc.actions.cmd.DIG,
|
||||||
|
},
|
||||||
|
[3] =
|
||||||
|
{
|
||||||
|
action = npc.actions.cmd.PLACE,
|
||||||
|
args =
|
||||||
|
{
|
||||||
|
node = "farming:cotton_1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
none_actions =
|
||||||
|
{
|
||||||
|
-- Walk a single step in a random direction
|
||||||
|
[1] = {
|
||||||
|
action = npc.actions.cmd.WALK_STEP,
|
||||||
|
args =
|
||||||
|
{
|
||||||
|
dir = "random"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Register occupation
|
||||||
|
npc.occupations.register_occupation("test_farmer", farmer_def)
|
197
data/occupations/default_priest.lua
Normal file
197
data/occupations/default_priest.lua
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
----------------------------------------------------
|
||||||
|
-- Basic priest occupation for Advanced NPC (WIP)
|
||||||
|
-- By Zorman2000
|
||||||
|
----------------------------------------------------
|
||||||
|
-- The basic priest occupation is given to NPCs that spawn on houses
|
||||||
|
-- surrounding churchs. While on the church, the priest provides
|
||||||
|
-- universal wisdom and advice, and also heals the player a limited number of times.
|
||||||
|
-- DISCLAIMER: The "teachings" in this file come from a compilation of 15 principles shared
|
||||||
|
-- among religions around the world. Zorman2000 and other contributors are not
|
||||||
|
-- necessarily aligned with the principles and morals in these teachings, nor affiliated
|
||||||
|
-- to religions that promote them.
|
||||||
|
|
||||||
|
local priest_def = {
|
||||||
|
dialogues = {
|
||||||
|
type = "given",
|
||||||
|
data = {
|
||||||
|
{
|
||||||
|
text = "Blessings be upon you, my child!",
|
||||||
|
tags = {"unisex"}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text = "The temple will always open the doors to everyone.",
|
||||||
|
tags = {"unisex"}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text = "Following the teachings is the path to a good life.",
|
||||||
|
tags = {"unisex"}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text = "Thanks for coming to greet me, I hope you have a blessed day! ",
|
||||||
|
tags = {"unisex"}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text = "Welcome to the temple, how can I help you today?",
|
||||||
|
flag = {name="on_church", value=true},
|
||||||
|
tags = {"unisex"},
|
||||||
|
responses =
|
||||||
|
{
|
||||||
|
[1] = {
|
||||||
|
text = "I'm injured. Can you heal me?",
|
||||||
|
action_type = "function",
|
||||||
|
action = function(self, player)
|
||||||
|
local heal_count = self.flags["heal_count"]
|
||||||
|
if heal_count then
|
||||||
|
-- Increase heal count
|
||||||
|
self.flags["heal_count"] = self.flags["heal_count"] + 1
|
||||||
|
else
|
||||||
|
self.flags["heal_count"] = 1
|
||||||
|
heal_count = 1
|
||||||
|
end
|
||||||
|
-- Check if heal count is achieved
|
||||||
|
if heal_count > 5 then
|
||||||
|
npc.chat(self.npc_name, player:get_player_name(), "I cannot heal you anymore, "
|
||||||
|
.."my child.\nTo mortals like you and me, the power of the Creator is\n"
|
||||||
|
.." limited. Only though learning the teachings we are able to understand more"
|
||||||
|
.."...\nBe safe my child.")
|
||||||
|
else
|
||||||
|
npc.chat(self.npc_name, player:get_player_name(),
|
||||||
|
"Receive the blessings of the Creator!")
|
||||||
|
effect(self.object:getpos(), 20, "default_coral_skeleton.png", 0.1, 0.3, 3, 10)
|
||||||
|
-- Heal one heart
|
||||||
|
player:set_hp(player:get_hp() + 2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
},
|
||||||
|
[2] = {
|
||||||
|
text = "What are your teachings?",
|
||||||
|
action_type = "function",
|
||||||
|
action = function(self, player)
|
||||||
|
local teachings = {
|
||||||
|
[1] = "Do unto others what you would have them do unto you",
|
||||||
|
[2] = "Honor your Father and Mother. Knowing them is the key to knowing ourselves",
|
||||||
|
[3] = "Sincerity is the way to heaven,\nand to think how to be sincere is the way of the man",
|
||||||
|
[4] = "Generosity, charity and kindness will open an individual to an unbounded reservoir of riches",
|
||||||
|
[5] = "Even as the scent dwells within the flower, so God within thine own heart forever abides",
|
||||||
|
[6] = "Acts of faith, prayer and meditation provide us with the strength that allows love for our fellow man to become an abiding force. Love is unifying.",
|
||||||
|
[7] = "Peacemakers are blessed.\nPeace is the natural result of individuals and nations living in close kinship",
|
||||||
|
[8] = "You reap what you sow.\nEven if it is a mystery, we are all ruled by this inevitable law of nature",
|
||||||
|
[9] = "The blessings of life are deeper than what can be appreciated by the senses",
|
||||||
|
[10] = "Do no harm, as we are part of the whole, and shouldn't perceive others as foreign or separate from ownself",
|
||||||
|
[11] = "The most beautiful thing a man can do is to forgive wrong",
|
||||||
|
[12] = "Judge not, lest ye be judged. Mankind is nothing but a great family and we all spring from common source",
|
||||||
|
[13] = "Anger clouds the mind in the very moments that clarity and objectivity are needed most.",
|
||||||
|
[14] = "Nature, Being, The Absolute, Creator... whatever name man chooses, there is but one force in the universe. All people and things are of one essence",
|
||||||
|
[15] = "Study the words, no doubt, but look behind them to the thought they indicate;\nhaving fond it, throw the words away. Live the spirit of them"
|
||||||
|
}
|
||||||
|
npc.chat(self.npc_name, player:get_player_name(), teachings[math.random(1, #teachings)]
|
||||||
|
..". \nThese are the teachings of our Creator.")
|
||||||
|
end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
textures = {
|
||||||
|
"npc_male_priest.png"
|
||||||
|
},
|
||||||
|
initial_inventory = {
|
||||||
|
{name="farming:bread", count=1}
|
||||||
|
},
|
||||||
|
properties = {
|
||||||
|
initial_trader_status = npc.trade.NONE,
|
||||||
|
enable_gift_items_hints = false
|
||||||
|
},
|
||||||
|
|
||||||
|
building_types = {
|
||||||
|
"hut", "house", "farm_tiny", "lumberjack"
|
||||||
|
},
|
||||||
|
surrounding_building_types = {
|
||||||
|
"church"
|
||||||
|
},
|
||||||
|
schedules_entries = {
|
||||||
|
[7] = {
|
||||||
|
-- Get out of bed
|
||||||
|
[1] = {
|
||||||
|
task = npc.actions.cmd.USE_BED,
|
||||||
|
args = {
|
||||||
|
pos = npc.places.PLACE_TYPE.BED.PRIMARY,
|
||||||
|
action = npc.actions.const.beds.GET_UP
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Walk to home inside
|
||||||
|
[2] = {
|
||||||
|
task = npc.actions.cmd.WALK_TO_POS,
|
||||||
|
chance = 95,
|
||||||
|
args = {
|
||||||
|
end_pos = npc.places.PLACE_TYPE.OTHER.HOME_INSIDE,
|
||||||
|
walkable = {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Allow mobs_redo wandering
|
||||||
|
[3] = {action = npc.actions.cmd.FREEZE, args = {freeze = false}}
|
||||||
|
},
|
||||||
|
[8] = {
|
||||||
|
-- Walk to workplace
|
||||||
|
[1] =
|
||||||
|
{
|
||||||
|
task = npc.actions.cmd.WALK_TO_POS,
|
||||||
|
args = {
|
||||||
|
end_pos = npc.places.PLACE_TYPE.WORKPLACE.PRIMARY,
|
||||||
|
walkable = {},
|
||||||
|
use_access_node = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[2] =
|
||||||
|
{
|
||||||
|
property = npc.schedule_properties.flag,
|
||||||
|
args = {
|
||||||
|
action = "set",
|
||||||
|
flag_name = "on_church",
|
||||||
|
flag_value = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[17] = {
|
||||||
|
[1] =
|
||||||
|
{
|
||||||
|
property = npc.schedule_properties.flag,
|
||||||
|
args = {
|
||||||
|
action = "set",
|
||||||
|
flag_name = "on_church",
|
||||||
|
flag_value = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[2] =
|
||||||
|
{
|
||||||
|
task = npc.actions.cmd.WALK_TO_POS,
|
||||||
|
args = {
|
||||||
|
end_pos = npc.places.PLACE_TYPE.OTHER.HOME_INSIDE,
|
||||||
|
walkable = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[21] = {
|
||||||
|
[1] = {
|
||||||
|
task = npc.actions.cmd.WALK_TO_POS,
|
||||||
|
args = {
|
||||||
|
end_pos = {place_type=npc.places.PLACE_TYPE.BED.PRIMARY, use_access_node=true},
|
||||||
|
walkable = {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Use bed
|
||||||
|
[2] = {
|
||||||
|
task = npc.actions.cmd.USE_BED,
|
||||||
|
args = {
|
||||||
|
pos = npc.places.PLACE_TYPE.BED.PRIMARY,
|
||||||
|
action = npc.actions.const.beds.LAY
|
||||||
|
}
|
||||||
|
},
|
||||||
|
-- Stay put on bed
|
||||||
|
[3] = {action = npc.actions.cmd.FREEZE, args = {freeze = true}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Register occupation
|
||||||
|
npc.occupations.register_occupation("basic_priest", priest_def)
|
@ -1,223 +1,7 @@
|
|||||||
-- Occupations definitions
|
|
||||||
|
|
||||||
-- Register default occupation
|
local path = minetest.get_modpath("advanced_npc")
|
||||||
npc.occupations.register_occupation(npc.occupations.basic_name, npc.occupations.basic_def)
|
|
||||||
|
|
||||||
-- Test priest
|
-- This may be temporary for now.
|
||||||
npc.occupations.register_occupation("test_priest", {
|
dofile(path.."/data/occupations/default.lua")
|
||||||
dialogues = {
|
dofile(path.."/data/occupations/default_farmer.lua")
|
||||||
type = "given",
|
dofile(path.."/data/occupations/default_priest.lua")
|
||||||
data = {
|
|
||||||
{
|
|
||||||
text = "How are you today my child?",
|
|
||||||
tags = {"male"}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text = "Welcome to the temple, how can I help you today?",
|
|
||||||
flag = {name="on_church", value=true},
|
|
||||||
tags = {"unisex"},
|
|
||||||
responses =
|
|
||||||
{
|
|
||||||
[1] = {
|
|
||||||
text = "I'm injured. Can you heal me?",
|
|
||||||
action_type = "function",
|
|
||||||
action = function(self, player)
|
|
||||||
local heal_count = self.flags["heal_count"]
|
|
||||||
if heal_count then
|
|
||||||
-- Increase heal count
|
|
||||||
self.flags["heal_count"] = self.flags["heal_count"] + 1
|
|
||||||
else
|
|
||||||
self.flags["heal_count"] = 1
|
|
||||||
heal_count = 1
|
|
||||||
end
|
|
||||||
-- Check if heal count is achieved
|
|
||||||
if heal_count > 5 then
|
|
||||||
npc.chat(self.npc_name, player:get_player_name(), "I cannot heal you anymore, "
|
|
||||||
.."my child. To mortals like you and me, the power of the Creator is "
|
|
||||||
.." limited. Only though learning the teachings we are able to understand more"
|
|
||||||
.."... Be safe my child.")
|
|
||||||
else
|
|
||||||
npc.chat(self.npc_name, player:get_player_name(),
|
|
||||||
"Receive the blessings of the Creator!")
|
|
||||||
effect(self.object:getpos(), 20, "default_coral_skeleton.png", 0.1, 0.3, 3, 10)
|
|
||||||
-- Heal one heart
|
|
||||||
player:set_hp(player:get_hp() + 2)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
},
|
|
||||||
[2] = {
|
|
||||||
text = "What are your teachings?",
|
|
||||||
action_type = "function",
|
|
||||||
action = function(self, player)
|
|
||||||
local teachings = {
|
|
||||||
[1] = "Do unto others what you would have them do unto you.",
|
|
||||||
[2] = "Sincerity is the way to heaven, and to think how to be sincere is the way of the man",
|
|
||||||
[3] = "Even as the scent dwells within the flower, so God within thine own heart forever abides"
|
|
||||||
}
|
|
||||||
npc.chat(self.npc_name, player:get_player_name(), teachings[math.random(1, #teachings)]
|
|
||||||
..". These are the teachings of our Creator.")
|
|
||||||
end
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
textures = {
|
|
||||||
"npc_male_priest.png"
|
|
||||||
},
|
|
||||||
initial_inventory = {
|
|
||||||
{name="farming:bread", count=1}
|
|
||||||
},
|
|
||||||
initial_trader_status = npc.trade.NONE,
|
|
||||||
building_types = {
|
|
||||||
"hut", "house", "farm_tiny", "lumberjack"
|
|
||||||
},
|
|
||||||
surrounding_building_types = {
|
|
||||||
"church"
|
|
||||||
},
|
|
||||||
schedules_entries = {
|
|
||||||
[7] = {
|
|
||||||
-- Get out of bed
|
|
||||||
[1] = {
|
|
||||||
task = npc.actions.cmd.USE_BED,
|
|
||||||
args = {
|
|
||||||
pos = npc.places.PLACE_TYPE.BED.PRIMARY,
|
|
||||||
action = npc.actions.const.beds.GET_UP
|
|
||||||
}
|
|
||||||
},
|
|
||||||
-- Walk to home inside
|
|
||||||
[2] = {
|
|
||||||
task = npc.actions.cmd.WALK_TO_POS,
|
|
||||||
chance = 95,
|
|
||||||
args = {
|
|
||||||
end_pos = npc.places.PLACE_TYPE.OTHER.HOME_INSIDE,
|
|
||||||
walkable = {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
-- Allow mobs_redo wandering
|
|
||||||
[3] = {action = npc.actions.cmd.FREEZE, args = {freeze = false}}
|
|
||||||
},
|
|
||||||
[8] = {
|
|
||||||
-- Walk to workplace
|
|
||||||
[1] =
|
|
||||||
{
|
|
||||||
task = npc.actions.cmd.WALK_TO_POS,
|
|
||||||
args = {
|
|
||||||
end_pos = npc.places.PLACE_TYPE.WORKPLACE.PRIMARY,
|
|
||||||
walkable = {},
|
|
||||||
use_access_node = true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
[2] =
|
|
||||||
{
|
|
||||||
property = npc.schedule_properties.flag,
|
|
||||||
args = {
|
|
||||||
action = "set",
|
|
||||||
flag_name = "on_church",
|
|
||||||
flag_value = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
[17] = {
|
|
||||||
[1] =
|
|
||||||
{
|
|
||||||
property = npc.schedule_properties.flag,
|
|
||||||
args = {
|
|
||||||
action = "set",
|
|
||||||
flag_name = "on_church",
|
|
||||||
flag_value = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
[2] =
|
|
||||||
{
|
|
||||||
task = npc.actions.cmd.WALK_TO_POS,
|
|
||||||
args = {
|
|
||||||
end_pos = npc.places.PLACE_TYPE.OTHER.HOME_INSIDE,
|
|
||||||
walkable = {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
[21] = {
|
|
||||||
[1] = {
|
|
||||||
task = npc.actions.cmd.WALK_TO_POS,
|
|
||||||
args = {
|
|
||||||
end_pos = {place_type=npc.places.PLACE_TYPE.BED.PRIMARY, use_access_node=true},
|
|
||||||
walkable = {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
-- Use bed
|
|
||||||
[2] = {
|
|
||||||
task = npc.actions.cmd.USE_BED,
|
|
||||||
args = {
|
|
||||||
pos = npc.places.PLACE_TYPE.BED.PRIMARY,
|
|
||||||
action = npc.actions.const.beds.LAY
|
|
||||||
}
|
|
||||||
},
|
|
||||||
-- Stay put on bed
|
|
||||||
[3] = {action = npc.actions.cmd.FREEZE, args = {freeze = true}}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Test farmer
|
|
||||||
npc.occupations.register_occupation("test_farmer", {
|
|
||||||
dialogues = {},
|
|
||||||
textures = {},
|
|
||||||
initial_inventory = {},
|
|
||||||
schedule_entries = {
|
|
||||||
[7] = {
|
|
||||||
[1] =
|
|
||||||
{
|
|
||||||
task = npc.actions.cmd.WALK_TO_POS,
|
|
||||||
args = {
|
|
||||||
end_pos = npc.places.PLACE_TYPE.OTHER.HOME_OUTSIDE,
|
|
||||||
walkable = {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
[2] =
|
|
||||||
{
|
|
||||||
check = true,
|
|
||||||
range = 2,
|
|
||||||
random_execution_times = true,
|
|
||||||
min_count = 10,
|
|
||||||
max_count = 12,
|
|
||||||
nodes = {"farming:cotton_3"},
|
|
||||||
actions =
|
|
||||||
{
|
|
||||||
-- Actions for grown cotton - harvest and replant
|
|
||||||
["farming:cotton_3"] =
|
|
||||||
{
|
|
||||||
[1] =
|
|
||||||
{
|
|
||||||
action = npc.actions.cmd.WALK_STEP,
|
|
||||||
},
|
|
||||||
[2] =
|
|
||||||
{
|
|
||||||
action = npc.actions.cmd.DIG,
|
|
||||||
},
|
|
||||||
[3] =
|
|
||||||
{
|
|
||||||
action = npc.actions.cmd.PLACE,
|
|
||||||
args =
|
|
||||||
{
|
|
||||||
node = "farming:cotton_1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
none_actions =
|
|
||||||
{
|
|
||||||
-- Walk a single step in a random direction
|
|
||||||
[1] = {
|
|
||||||
action = npc.actions.cmd.WALK_STEP,
|
|
||||||
args =
|
|
||||||
{
|
|
||||||
dir = "random"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
Loading…
Reference in New Issue
Block a user