]> git.lizzy.rs Git - Crafter.git/blobdiff - mods/mob/api/data_handling.lua
Make mobs navigate even better
[Crafter.git] / mods / mob / api / data_handling.lua
index a5795352e3c2264924c626af46a040b124248480..3b8753170fe69047b60a6ad2ae7458014cb9f843 100644 (file)
@@ -1,6 +1,12 @@
+local
+vector,minetest,math,pairs
+=
+vector,minetest,math,pairs
 --
 mobs.create_data_handling_functions = function(def,mob_register)
-       mob_register.get_staticdata = function(self)
+
+       --mob_register.get_staticdata = function(self)
+               --[[
                return minetest.serialize({
                        --range = self.range,
                        hp = self.hp,
@@ -8,17 +14,22 @@ mobs.create_data_handling_functions = function(def,mob_register)
                        hostile = self.hostile,
                        hostile_timer = self.hostile_timer,
                        death_animation_timer = self.death_animation_timer,
-                       dead = self.dead
+                       dead = self.dead,
+                       tnt_timer = self.tnt_timer,
+                       tnt_tick_timer = self.tnt_tick_timer,
+                       tnt_mod_state = self.tnt_mod_state,
+                       punch_timer = self.punch_timer,
+                       projectile_timer = self.projectile_timer,
+                       scared = self.scared,
+                       scared_timer = self.scared_timer,
+                       c_mob_data = self.c_mob_data,
+                       on_fire = self.on_fire,
                })
-       end
-
+               ]]--
+       --end
 
-       mob_register.on_activate = function(self, staticdata, dtime_s)
-               global_mob_amount = global_mob_amount + 1
-               print("Mobs Spawned. Current Mobs: "..global_mob_amount)
-               self.object:set_armor_groups({immortal = 1})
-               --self.object:set_velocity({x = math.random(-5,5), y = 5, z = math.random(-5,5)})
-               self.object:set_acceleration(def.gravity)
+       mob_register.on_activate = function(self)--, staticdata, dtime_s)
+               --[[
                if string.sub(staticdata, 1, string.len("return")) == "return" then
                        local data = minetest.deserialize(staticdata)
                        if data and type(data) == "table" then
@@ -29,10 +40,22 @@ mobs.create_data_handling_functions = function(def,mob_register)
                                self.hostile_timer = data.hostile_timer
                                self.death_animation_timer = data.death_animation_timer
                                self.dead = data.dead
+                               self.tnt_timer = data.tnt_timer
+                               self.tnt_tick_timer = data.tnt_tick_timer
+                               self.tnt_mod_state = data.tnt_mod_state
+                               self.punch_timer = data.punch_timer
+                               self.projectile_timer = data.projectile_timer
+                               self.scared = data.scared
+                               self.scared_timer = data.scared_timer                           
+                               self.c_mob_data = data.c_mob_data
+                               self.on_fire = data.on_fire
                        end
                end
-               
+               ]]--
                --set up mob
+               self.object:set_armor_groups({immortal = 1})
+               --self.object:set_velocity({x = math.random(-5,5), y = 5, z = math.random(-5,5)})
+               self.object:set_acceleration(def.gravity)
                self.object:set_animation(def.standing_frame, 0, 0, true)
                self.current_animation = 0
                self.object:set_hp(self.hp)
@@ -45,27 +68,38 @@ mobs.create_data_handling_functions = function(def,mob_register)
                end
                self.is_mob = true
                self.object:set_armor_groups({immortal = 1})
-               --self.object:set_yaw(math.pi*math.random(-1,1)*math.random())
+
+               if self.custom_on_activate then
+                       self.custom_on_activate(self)
+               end
+
+               if self.on_fire == true then
+                       start_fire(self.object)
+               end
+
+               --use this to handle the global mob table
+               --minetest.after(0,function()
+               --      self.deactivating = true
+               --end)
        end
 
        --this is the info on the mob
        mob_register.debug_nametag = function(self,dtime)
                --we're doing this to the child because the nametage breaks the
                --animation on the mob's body
-               if self.child then
-                       --we add in items we want to see in this list
-                       local debug_items = {"hostile_timer","hostile"}
-                       local text = ""
-                       for _,item in pairs(debug_items) do
-                               if self[item] ~= nil then
-                                       text = text..item..": "..tostring(self[item]).."\n"
-                               end
+               
+               --we add in items we want to see in this list
+               local debug_items = {"hostile","hostile_timer"}
+               local text = ""
+               for _,item in pairs(debug_items) do
+                       if self[item] ~= nil then
+                               text = text..item..": "..tostring(self[item]).."\n"
                        end
-                       self.child:set_nametag_attributes({
-                       color = "white",
-                       text = text
-                       })
                end
+               self.object:set_nametag_attributes({
+               color = "white",
+               text = text
+               })
        end
        return(mob_register)
 end