From c092207dd381478ab7adb7b5a646f36bd3322248 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sun, 24 Apr 2016 10:47:00 -0700 Subject: [PATCH] Mark. --- init.lua | 177 +++++++++++++++++++++++++++++++++++++++++++++-- models/sheep.b3d | Bin 51023 -> 51023 bytes 2 files changed, 173 insertions(+), 4 deletions(-) diff --git a/init.lua b/init.lua index 0000b14..16006cd 100644 --- a/init.lua +++ b/init.lua @@ -54,6 +54,23 @@ obj:factor_is_near_mate = ... --]] +function vector.sort(v1, v2) + return {x = math.min(v1.x, v2.x), y = math.min(v1.y, v2.y), z = math.min(v1.z, v2.z)}, + {x = math.max(v1.x, v2.x), y = math.max(v1.y, v2.y), z = math.max(v1.z, v2.z)} +end + +local function dir_to_yaw(vec) + if vec.z < 0 then + return math.pi - math.atan(vec.x / vec.z) + elseif vec.z > 0 then + return -math.atan(vec.x / vec.z) + elseif vec.x < 0 then + return math.pi + else + return 0 + end +end + local drivers = {} local factors = {} @@ -126,11 +143,140 @@ end drivers.roam = { start = function(self) -- start with moving animation - animation_select(self, "move") + animation_select(self, "idle") + local state = self.entity_ai_state + state.roam_idle = true + state.roam_ttl = math.random(3, 9) end, step = function(self, dtime) animation_loop(self, dtime) consider_factors(self) + -- handle movement stuff + local state = self.entity_ai_state + if state.roam_ttl and state.roam_ttl > 0 then + state.roam_ttl = state.roam_ttl - dtime + if state.roam_idle then + -- we should already be stopped + return + elseif state.roam_move then + -- do path movement + local pos = self.object:getpos() + if vector.distance(pos, state.roam_target) < 1.0 then + -- arrived (close enough! + print("arrived") + state.roam_ttl = 0 + return + end + if state.roam_path then + local i, v = next(state.roam_path, nil) + if not i then + -- pathing failed + print("failed pathing!") + state.roam_path = nil + return + end + if vector.distance(pos, v) < 0.6 then + print("removed one!") + state.roam_path[i] = nil + -- shouldn't return here + return + end + local vo = {x = v.x, y = v.y - 0.5, z = v.z} + print("next: " .. minetest.pos_to_string(vo)) + local vec = vector.subtract(vo, pos) + local len = vector.length(vec) + local vdif = vec.y + vec.y = 0 + local dir = vector.normalize(vec) + local spd = vector.multiply(dir, 2.0)-- vel + if vdif > 0 and len < 2.0 then + print("jump") + -- jump + spd = {x = 0, y = 0.5, z = 0} + else + spd.y = self.object:getvelocity().y + end + --print(minetest.pos_to_string(spd)) + self.object:setyaw(dir_to_yaw(spd)) + self.object:setvelocity(spd) + end + + else + print("unknown roam state!") + end + else + -- reset ttl + state.roam_ttl = math.random(3, 9) + -- flip state + if state.roam_idle then + print("going roaming") + -- get a target + local pos = self.object:getpos() + local minp, maxp = vector.sort({ + x = math.random(pos.x - 10, pos.x + 10), + y = pos.y - 5, + z = math.random(pos.z - 10, pos.z + 10) + }, { + x = math.random(pos.x - 10, pos.x + 10), + y = pos.y + 5, + z = math.random(pos.z - 10, pos.z + 10) + }) + minp, maxp = vector.sort(minp, maxp) + local nodes = minetest.find_nodes_in_area_under_air(minp, maxp, + {"group:dirt", "group:soil", "group:crumbly", "default:dirt_with_dry_grass", "default:sand"}) + if #nodes == 0 then + -- failed to get a target, just stand still + print("No target found, stopped") + return + end + + local pick = nodes[math.random(1, #nodes)] + -- move to the top surface of pick + pick.y = pick.y + 0.5 + if not pick then + print("no path found!") + return + end + print("going to: " .. dump(pick)) + state.roam_target = pick + + state.roam_path = minetest.find_path(pos, pick, 30, 2.2, 2.0, "Dijkstra") + if not state.roam_path then + print("Unable to calculate path") + else + for k, v in pairs(state.roam_path) do + minetest.add_particle({ + pos = v, + velocity = vector.new(), + acceleration = vector.new(), + expirationtime = 3, + size = 3, + collisiondetection = false, + vertical = false, + texture = "wool_white.png", + playername = nil + }) + end + end + + -- done, roaming mode good! + animation_select(self, "move") + state.roam_idle = nil + state.roam_move = true + + else + print("going idle") + animation_select(self, "idle") + state.roam_idle = true + state.roam_move = nil + state.roam_target = nil + state.roam_path = nil + -- stop + self.object:setvelocity(vector.new()) + end + end + -- minetest.find_nodes_in_area_under_air(minp, maxp, nodenames) + -- minetest.find_path(pos1,pos2,searchdistance,max_jump,max_drop,algorithm) end, stop = function(self) -- play out remaining animations @@ -177,6 +323,19 @@ drivers.flee = { end, } +drivers.death = { + start = function(self) + -- start with moving animation + animation_select(self, "idle") + end, + step = function(self, dtime) + animation_loop(self, dtime) + end, + stop = function(self) + -- play out remaining animations + end, +} + factors.got_hit = function(self) local state = self.entity_ai_state return state.factors.got_hit @@ -215,6 +374,9 @@ local function entity_ai_on_activate(self, staticdata) print("activate: " .. self.name .. ", driver=" .. driver) end + -- gravity + self.object:setacceleration({x = 0, y = -9.81, z = 0}) + drivers[driver].start(self) end @@ -227,6 +389,13 @@ end local function entity_ai_on_punch(self, puncher, time_from_last_punch, tool_capabilities, dir) local state = self.entity_ai_state state.factors["got_hit"] = {puncher, time_from_last_punch, tool_capabilities, dir} + if self.object:get_hp() == 0 then + print("death") + self.object:set_hp(1) + state.driver = "death" + drivers.death.start(self) + return false + end end local function entity_ai_on_rightclick(self, clicker) @@ -367,13 +536,13 @@ local sheep_script = { minetest.register_entity("entity_ai:sheep", { name = "entity_ai:sheep", - hp_max = 100, + hp_max = 30, physical = true, visual = "mesh", mesh = "sheep.b3d", - textures = {"sheep_fur.png"}, + textures = {"sheep_fur.png"}, -- standard stuff - collisionbox = {-1/2, -1/2, -1/2, 1/2, 1/2, 1/2}, + collisionbox = {-7/16, -1/2, -7/16, 7/16, 6/16, 7/16}, -- entity_ai stuff script = sheep_script, -- standard callbacks diff --git a/models/sheep.b3d b/models/sheep.b3d index f5708175b913e049cab5ccb321b3893734caa167..6eafb64b1353314ce8cae48c9ef1d5fc67d1abde 100644 GIT binary patch literal 51023 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 bq@G;8NNVbxkh+!nzM+D3W*#ui1@?ad9(0*D literal 51023 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