]> git.lizzy.rs Git - Crafter.git/blobdiff - mods/mob/api/data_handling.lua
Add in sheep
[Crafter.git] / mods / mob / api / data_handling.lua
index d20aee95f65ffdda4fff5403c5b7ccae00c24013..9afa35b9750d384f856ca028bce74b80905d30a4 100644 (file)
@@ -1,76 +1,90 @@
 --
 mobs.create_data_handling_functions = function(def,mob_register)
-    mob_register.get_staticdata = function(self)
-        return minetest.serialize({
-            --range = self.range,
-            hp = self.hp,
-            hunger = self.hunger,
-            hostile = self.hostile,
-            hostile_timer = self.hostile_timer,
-            death_animation_timer = self.death_animation_timer,
-            dead = self.dead
-        })
-    end
+       mob_register.get_staticdata = function(self)
+               return minetest.serialize({
+                       --range = self.range,
+                       hp = self.hp,
+                       hunger = self.hunger,
+                       hostile = self.hostile,
+                       hostile_timer = self.hostile_timer,
+                       death_animation_timer = self.death_animation_timer,
+                       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,
+               })
+       end
 
 
-    mob_register.on_activate = function(self, staticdata, dtime_s)
-        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)
-        if string.sub(staticdata, 1, string.len("return")) == "return" then
-            local data = minetest.deserialize(staticdata)
-            if data and type(data) == "table" then
-                --self.range = data.range
-                self.hp = data.hp
-                self.hunger = data.hunger
-                self.hostile = data.hostile
-                self.hostile_timer = data.hostile_timer
-                self.death_animation_timer = data.death_animation_timer
-                self.dead = data.dead
-            end
-        end
-        
-        --set up mob
-        self.object:set_animation(def.standing_frame, 0, 0, true)
-        self.current_animation = 0
-        self.object:set_hp(self.hp)
-        self.direction = vector.new(math.random()*math.random(-1,1),0,math.random()*math.random(-1,1))
-        
-        
-        --set the head up
-        if def.has_head == true then
-            local head = minetest.add_entity(self.object:get_pos(), "mob:head"..def.mobname)
-            if head then
-                self.child = head
-                self.child:get_luaentity().parent = self.object
-                self.child:set_attach(self.object, "", self.head_mount, vector.new(0,0,0))
-                self.head_rotation = vector.new(0,0,0)
-                self.child:set_animation({x=90,y=90}, 15, 0, true)
-            end
-        end
-        self.is_mob = true
-        self.object:set_armor_groups({immortal = 1})
-        --self.object:set_yaw(math.pi*math.random(-1,1)*math.random())
-    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)
+               if string.sub(staticdata, 1, string.len("return")) == "return" then
+                       local data = minetest.deserialize(staticdata)
+                       if data and type(data) == "table" then
+                               --self.range = data.range
+                               self.hp = data.hp
+                               self.hunger = data.hunger
+                               self.hostile = data.hostile
+                               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
+                       end
+               end
+               
+               --set up mob
+               self.object:set_animation(def.standing_frame, 0, 0, true)
+               self.current_animation = 0
+               self.object:set_hp(self.hp)
+               self.direction = vector.new(math.random()*math.random(-1,1),0,math.random()*math.random(-1,1))
+               
+               
+               --set the head up
+               if self.head_bone then
+                       self.object:set_bone_position(self.head_bone, self.head_position_correction, vector.new(0,0,0))
+               end
+               self.is_mob = true
+               self.object:set_armor_groups({immortal = 1})
 
-    --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
-            end
-            self.child:set_nametag_attributes({
-            color = "white",
-            text = text
-            })
-        end
-    end
-    return(mob_register)
+               if self.custom_on_activate then
+                       self.custom_on_activate(self)
+               end
+               --self.object:set_yaw(math.pi*math.random(-1,1)*math.random())
+       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
+               
+               --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
+               end
+               self.object:set_nametag_attributes({
+               color = "white",
+               text = text
+               })
+       end
+       return(mob_register)
 end