X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;ds=sidebyside;f=mods%2Fmob%2Finit.lua;h=3e3f9ad57e2e1324c37f21ad8185f1d41f9ca74b;hb=f802598771603d9e6acaf322b39f0561bb0d52f9;hp=53a48501d06d02807fd2074daf89fc8c01f451c9;hpb=7bc80989b2e2ea5b4c8c0a5a134a2e55705e1186;p=Crafter.git diff --git a/mods/mob/init.lua b/mods/mob/init.lua index 53a4850..3e3f9ad 100644 --- a/mods/mob/init.lua +++ b/mods/mob/init.lua @@ -1,8 +1,8 @@ --this is where mobs are defined --this is going to be used to set an active mob limit -global_mob_table = {} - +global_mob_amount = 0 +mob_limit = 100 local path = minetest.get_modpath(minetest.get_current_modname()) @@ -12,108 +12,364 @@ dofile(path.."/items.lua") dofile(path.."/chatcommands.lua") +mobs.register_mob( + { + mobname = "pig", + physical = true, + collide_with_objects = false, + collisionbox = {-0.37, 0, -0.37, 0.37, 0.85, 0.37}, + visual = "mesh", + visual_size = {x = 3, y = 3}, + mesh = "pig.b3d", + textures = { + --blank out the first two to create adult pig + "pig.png" + }, + + --these are used to anchor a point to the head position + ----- + head_bone = "head", + debug_head_pos = false, + head_directional_offset = 0.5, --used in vector.multiply(minetest.yaw_to_dir(body_yaw),head_offset) + head_height_offset = 0.8, --added to the base y position + --use this to correct the head position initially because it becomes severly offset - look at your blender model to get this perfect + head_position_correction = vector.new(0,3,-0.5), + --this is used to tell the game the orientation of the bone (swaps x to and y, then z and y) + head_coord = "horizontal", + ----- + + is_visible = true, + pointable = true, + automatic_face_movement_dir = 0, + automatic_face_movement_max_rotation_per_sec = 300, + makes_footstep_sound = false, + hp = 10, + gravity = {x = 0, y = -9.81, z = 0}, + movement_type = "walk", + max_speed = 5, + state = 0, + view_distance = 15, + + item_drop = "mob:raw_porkchop", + standing_frame = {x=0,y=0}, + moving_frame = {x=0,y=40}, + animation_multiplier = 20, + ---- + ---- + death_rotation = "x", + + hurt_sound = "pig", + die_sound = "pig_die", + + + hostile = false, + attacked_hostile = false, + attack_type = "punch", + group_attack = true, + --explosion_radius = 4, -- how far away the mob has to be to initialize the explosion + --explosion_power = 7, -- how big the explosion has to be + --explosion_time = 3, -- how long it takes for a mob to explode + } +) mobs.register_mob( - { - mobname = "pig", + { + mobname = "snowman", physical = true, collide_with_objects = false, - collisionbox = {-0.37, -0.4, -0.37, 0.37, 0.5, 0.37}, + collisionbox = {-0.37, 0, -0.37, 0.37, 1.75, 0.37}, visual = "mesh", visual_size = {x = 3, y = 3}, - mesh = "pig.x", + mesh = "snowman.b3d", textures = { - "body.png","leg.png","leg.png","leg.png","leg.png" + "snowman.png","snowman.png","snowman.png","snowman.png","snowman.png","snowman.png", }, + + --these are used to anchor a point to the head position + + + ----- + --head_bone = "head", + debug_head_pos = false, + head_directional_offset = 0, --used in vector.multiply(minetest.yaw_to_dir(body_yaw),head_offset) + head_height_offset = 1.625, --added to the base y position + --use this to correct the head position initially because it becomes severly offset - look at your blender model to get this perfect + head_position_correction = vector.new(0,4.6,0), + --this is used to tell the game the orientation of the bone (swaps x to and y, then z and y) + head_coord = "vertical", + --rotational_correction = math.pi/2, + ----- + is_visible = true, pointable = true, - automatic_face_movement_dir = -90.0, + automatic_face_movement_dir = 0, automatic_face_movement_max_rotation_per_sec = 300, makes_footstep_sound = false, - hp = 10, - gravity = {x = 0, y = -9.81, z = 0}, - movement_type = "walk", - max_speed = 5, - hostile = false, - state = 0, - view_distance = 15, - - item_drop = "mob:raw_porkchop", - standing_frame = {x=0,y=0}, - moving_frame = {x=5,y=15}, - animation_multiplier = 5, - ---- - - has_head = true, --remove this when mesh based head rotation is implemented - head_visual = "mesh", - head_visual_size = {x = 1.1, y = 1.1}, - head_mesh = "pig_head.x", - head_textures ={"head.png","nose.png"}, - head_mount = vector.new(0,1.2,1.9), - - death_rotation = "z", - - hurt_sound = "pig", - die_sound = "pig_die", - - attack_type = "punch", - --explosion_radius = 4, -- how far away the mob has to be to initialize the explosion - --explosion_power = 7, -- how big the explosion has to be - --explosion_time = 3, -- how long it takes for a mob to explode - } + hp = 10, + gravity = {x = 0, y = -9.81, z = 0}, + movement_type = "walk", + max_speed = 5, + state = 0, + view_distance = 15, + + item_drop = "weather:snowball", + standing_frame = {x=0,y=0}, + moving_frame = {x=0,y=0}, + animation_multiplier = 10, + ---- + ---- + death_rotation = "x", + + hurt_sound = "wool", + die_sound = "wool", + + + hostile = true, + attack_type = "projectile", + projectile_type = "weather:snowball", + projectile_timer_cooldown = 1, + + } +) + +mobs.register_mob( + { + mobname = "phyg", + physical = true, + collide_with_objects = false, + collisionbox = {-0.37, 0, -0.37, 0.37, 0.85, 0.37}, + visual = "mesh", + visual_size = {x = 3, y = 3}, + mesh = "phyg.b3d", + textures = { + --blank out the first two to create adult pig + "phyg.png","wings.png" + }, + + --these are used to anchor a point to the head position + + + ----- + head_bone = "head", + debug_head_pos = false, + head_directional_offset = 0.5, --used in vector.multiply(minetest.yaw_to_dir(body_yaw),head_offset) + head_height_offset = 0.8, --added to the base y position + --use this to correct the head position initially because it becomes severly offset - look at your blender model to get this perfect + head_position_correction = vector.new(0,3,-0.5), + --this is used to tell the game the orientation of the bone (swaps x to and y, then z and y) + head_coord = "horizontal", + ----- + + is_visible = true, + pointable = true, + automatic_face_movement_dir = 0, + automatic_face_movement_max_rotation_per_sec = 300, + makes_footstep_sound = false, + takes_fall_damage = false, + make_jump_noise = false, + hp = 10, + gravity = {x = 0, y = -1, z = 0}, + movement_type = "walk", + max_speed = 5, + state = 0, + view_distance = 15, + + item_drop = "main:gold", + item_minimum = 4, + item_max = 5, + + standing_frame = {x=0,y=0}, + moving_frame = {x=0,y=40}, + animation_multiplier = 20, + ---- + ---- + death_rotation = "x", + + hurt_sound = "pig", + die_sound = "pig_die", + + + hostile = false, + attacked_hostile = false, + attack_type = "punch", + group_attack = true, + --explosion_radius = 4, -- how far away the mob has to be to initialize the explosion + --explosion_power = 7, -- how big the explosion has to be + --explosion_time = 3, -- how long it takes for a mob to explode + } ) +--[[ mobs.register_mob( - { - mobname = "slime", + { + mobname = "chicken", physical = true, - collide_with_objects = false, - collisionbox = {-0.37, -0.4, -0.37, 0.37, 0.5, 0.37}, - visual = "mesh", - visual_size = {x = 3, y = 3}, - mesh = "slime.x", + collide_with_objects = false, + collisionbox = {-0.37, -0.4, -0.37, 0.37, 0.5, 0.37}, + visual = "mesh", + visual_size = {x = 3, y = 3}, + mesh = "chicken.b3d", textures = { - "slimecore.png","slimeeye.png","slimeeye.png","slimeeye.png","slimeoutside.png" + --if you're wondering what mob this is, it's a chicken + "chicken.png","chicken.png","chicken.png","chicken.png","chicken.png","chicken.png","chicken.png","chicken.png","chicken.png","chicken.png","chicken.png","chicken.png","chicken.png","chicken.png" }, is_visible = true, pointable = true, - automatic_face_movement_dir = 180, + automatic_face_movement_dir = -90.0, automatic_face_movement_max_rotation_per_sec = 300, makes_footstep_sound = false, - hp = 10, - gravity = {x = 0, y = -9.81, z = 0}, - movement_type = "jump", - max_speed = 5, - hostile = true, - state = 0, - view_distance = 20, - item_drop = "mob:slimeball", - - standing_frame = {x=0,y=0}, - moving_frame = {x=0,y=0}, - animation_multiplier = 5, - ---- - has_head = false, --remove this when mesh based head rotation is implemented - - death_rotation = "x", - - hurt_sound = "slime_die", - die_sound = "slime_die", - - attack_type = "punch", - die_in_light = true, - die_in_light_level = 12, - } + hp = 10, + gravity = {x = 0, y = -9.81, z = 0}, + movement_type = "walk", + max_speed = 5, + hostile = false, + state = 0, + view_distance = 15, + + item_drop = "mob:raw_porkchop", + standing_frame = {x=0,y=0}, + moving_frame = {x=5,y=15}, + animation_multiplier = 5, + ---- + + has_head = true, --remove this when mesh based head rotation is implemented + head_visual = "mesh", + head_visual_size = {x = 1.1, y = 1.1}, + head_mesh = "pig_head.x", + head_textures ={"head.png","nose.png"}, + head_mount = vector.new(0,1.2,1.9), + + death_rotation = "z", + + hurt_sound = "pig", + die_sound = "pig_die", + + attack_type = "punch", + --explosion_radius = 4, -- how far away the mob has to be to initialize the explosion + --explosion_power = 7, -- how big the explosion has to be + --explosion_time = 3, -- how long it takes for a mob to explode + } +) +]]-- + +mobs.register_mob( + { + mobname = "big_slime", + physical = true, + collide_with_objects = false, + collisionbox = {-1.25, 0, -1.25, 1.25, 2.5, 1.25}, + visual = "mesh", + visual_size = {x = 15, y = 15}, + mesh = "slime.b3d", + textures = { + "slime.png" + }, + is_visible = true, + pointable = true, + automatic_face_movement_dir = 90, + automatic_face_movement_max_rotation_per_sec = 300, + makes_footstep_sound = false, + hp = 40, + gravity = {x = 0, y = -9.81, z = 0}, + movement_type = "jump", + make_jump_noise = true, + max_speed = 5, + hostile = true, + state = 0, + view_distance = 20, + death_rotation = "z", + hurt_sound = "slime_die", + die_sound = "slime_die", + attack_type = "punch", + custom_on_death = function(self) + local pos = self.object:get_pos() + for i = 1,4 do + minetest.add_entity(pos,"mob:medium_slime") + end + end, + } +) + +mobs.register_mob( + { + mobname = "medium_slime", + physical = true, + collide_with_objects = false, + collisionbox = {-0.625, 0, -0.625, 0.625, 1.25, 0.625}, + visual = "mesh", + visual_size = {x = 7.5, y = 7.5}, + mesh = "slime.b3d", + textures = { + "slime.png" + }, + is_visible = true, + pointable = true, + automatic_face_movement_dir = 90, + automatic_face_movement_max_rotation_per_sec = 300, + makes_footstep_sound = false, + hp = 20, + gravity = {x = 0, y = -9.81, z = 0}, + movement_type = "jump", + make_jump_noise = true, + max_speed = 5, + hostile = true, + state = 0, + view_distance = 20, + death_rotation = "z", + hurt_sound = "slime_die", + die_sound = "slime_die", + attack_type = "punch", + custom_on_death = function(self) + local pos = self.object:get_pos() + pos.y = pos.y + 0.2 + for i = 1,4 do + minetest.add_entity(pos,"mob:small_slime") + end + end, + } ) +mobs.register_mob( + { + mobname = "small_slime", + physical = true, + collide_with_objects = false, + collisionbox = {-0.3, 0, -0.3, 0.3, 0.6, 0.3}, + visual = "mesh", + visual_size = {x = 3.7, y = 3.7}, + mesh = "slime.b3d", + textures = { + "slime.png" + }, + is_visible = true, + pointable = true, + automatic_face_movement_dir = 90, + automatic_face_movement_max_rotation_per_sec = 300, + makes_footstep_sound = false, + hp = 5, + gravity = {x = 0, y = -9.81, z = 0}, + movement_type = "jump", + make_jump_noise = true, + max_speed = 5, + hostile = true, + state = 0, + view_distance = 20, + death_rotation = "z", + hurt_sound = "slime_die", + die_sound = "slime_die", + attack_type = "punch", + item_drop = "mob:slimeball" + } +) +--[[ mobs.register_mob( - { - mobname = "flying_pig", + { + mobname = "flying_pig", physical = true, collide_with_objects = false, collisionbox = {-0.37, -0.4, -0.37, 0.37, 0.5, 0.37}, @@ -128,49 +384,49 @@ mobs.register_mob( automatic_face_movement_dir = -90.0, automatic_face_movement_max_rotation_per_sec = 300, makes_footstep_sound = false, - hp = 10, - gravity = {x = 0, y = -1, z = 0}, - movement_type = "jump", - max_speed = 5, - hostile = true, - state = 0, - view_distance = 50, - item_drop = "main:gold", - item_minimum = 4, - item_amount = 5, - - standing_frame = {x=0,y=0}, - moving_frame = {x=5,y=15}, - animation_multiplier = 5, - ---- - - has_head = true, --remove this when mesh based head rotation is implemented - head_visual = "mesh", - head_visual_size = {x = 1.1, y = 1.1}, - head_mesh = "pig_head.x", - head_textures ={"flying_pig_head.png","flying_pig_nose.png"}, - head_mount = vector.new(0,1.2,1.9), - - death_rotation = "z", - - hurt_sound = "pig", - die_sound = "pig_die", - - attack_type = "projectile", - projectile_timer_cooldown = 5, - projectile_type = "tnt:tnt", - - --explosion_radius = 4, -- how far away the mob has to be to initialize the explosion - --explosion_power = 7, -- how big the explosion has to be - --explosion_time = 3, -- how long it takes for a mob to explode - } + hp = 10, + gravity = {x = 0, y = -1, z = 0}, + movement_type = "jump", + max_speed = 5, + hostile = true, + state = 0, + view_distance = 50, + item_drop = "main:gold", + item_minimum = 4, + item_amount = 5, + + standing_frame = {x=0,y=0}, + moving_frame = {x=5,y=15}, + animation_multiplier = 5, + ---- + + has_head = true, --remove this when mesh based head rotation is implemented + head_visual = "mesh", + head_visual_size = {x = 1.1, y = 1.1}, + head_mesh = "pig_head.x", + head_textures ={"flying_pig_head.png","flying_pig_nose.png"}, + head_mount = vector.new(0,1.2,1.9), + + death_rotation = "z", + + hurt_sound = "pig", + die_sound = "pig_die", + + attack_type = "projectile", + projectile_timer_cooldown = 5, + projectile_type = "tnt:tnt", + + --explosion_radius = 4, -- how far away the mob has to be to initialize the explosion + --explosion_power = 7, -- how big the explosion has to be + --explosion_time = 3, -- how long it takes for a mob to explode + } ) mobs.register_mob( - { - mobname = "creepig", + { + mobname = "creepig", physical = true, collide_with_objects = false, collisionbox = {-0.37, -0.4, -0.37, 0.37, 0.5, 0.37}, @@ -185,41 +441,240 @@ mobs.register_mob( automatic_face_movement_dir = -90.0, automatic_face_movement_max_rotation_per_sec = 300, makes_footstep_sound = false, - hp = 10, - gravity = {x = 0, y = -9.81, z = 0}, - movement_type = "walk", - max_speed = 4, - hostile = true, - state = 0, - view_distance = 20, - item_drop = "mob:cooked_porkchop", - - standing_frame = {x=0,y=0}, - moving_frame = {x=5,y=15}, - animation_multiplier = 5, - ---- - - has_head = true, --remove this when mesh based head rotation is implemented - head_visual = "mesh", - head_visual_size = {x = 1.1, y = 1.1}, - head_mesh = "pig_head.x", - head_textures ={"creepig_head.png","creepig_nose.png"}, - head_mount = vector.new(0,1.2,1.9), - - death_rotation = "z", - - hurt_sound = "pig", - die_sound = "pig_die", - - attack_type = "explode", - --projectile_timer_cooldown = 5, - --projectile_type = "tnt:tnt", - - explosion_radius = 2, -- how far away the mob has to be to initialize the explosion - explosion_power = 7, -- how big the explosion has to be - explosion_time = 5, -- how long it takes for a mob to explode - - die_in_light = true, - die_in_light_level = 12, - } + hp = 10, + gravity = {x = 0, y = -9.81, z = 0}, + movement_type = "walk", + max_speed = 4, + hostile = true, + state = 0, + view_distance = 20, + item_drop = "mob:cooked_porkchop", + + standing_frame = {x=0,y=0}, + moving_frame = {x=5,y=15}, + animation_multiplier = 5, + ---- + + has_head = true, --remove this when mesh based head rotation is implemented + head_visual = "mesh", + head_visual_size = {x = 1.1, y = 1.1}, + head_mesh = "pig_head.x", + head_textures ={"creepig_head.png","creepig_nose.png"}, + head_mount = vector.new(0,1.2,1.9), + + death_rotation = "z", + + hurt_sound = "pig", + die_sound = "pig_die", + + attack_type = "explode", + --projectile_timer_cooldown = 5, + --projectile_type = "tnt:tnt", + + explosion_radius = 2, -- how far away the mob has to be to initialize the explosion + explosion_power = 7, -- how big the explosion has to be + explosion_time = 5, -- how long it takes for a mob to explode + + die_in_light = true, + die_in_light_level = 12, + } +) + +]]-- + +mobs.register_mob( + { + mobname = "creeper", + physical = true, + collide_with_objects = false, + collisionbox = {-0.37,0, -0.37, 0.37, 1.5, 0.37}, + visual = "mesh", + visual_size = {x = 3.2, y = 3.2}, + mesh = "creeper.b3d", + textures = { + "creeper.png" + }, + is_visible = true, + pointable = true, + automatic_face_movement_max_rotation_per_sec = 300, + makes_footstep_sound = false, + hp = 40, + gravity = {x = 0, y = -9.81, z = 0}, + movement_type = "walk", + max_speed = 4, + hostile = true, + hostile_cooldown = false, + state = 0, + view_distance = 20, + item_drop = "mob:gunpowder", + + standing_frame = {x=0,y=0}, + moving_frame = {x=0,y=40}, + animation_multiplier = 20, + ---- + pathfinds = true, + + --these are used to anchor a point to the head position + ----- + automatic_face_movement_dir = 0, + head_bone = "head", + debug_head_pos = false, + --this always has to be slightly positive + head_directional_offset = 0.01, + head_height_offset = 1.45, --added to the base y position + --use this to correct the head position initially because it becomes severly offset - look at your blender model to get this perfect + head_position_correction = vector.new(0,2.4,0), + head_coord = "vertical", + ----- + + + death_rotation = "x", + + hurt_sound = "creeper_hurt", + die_sound = "creeper_hurt", + + attack_type = "explode", + --projectile_timer_cooldown = 5, + --projectile_type = "tnt:tnt", + + explosion_radius = 4, -- how far away the mob has to be to initialize the explosion + explosion_power = 4, -- how big the explosion has to be + explosion_time = 3, -- how long it takes for a mob to explode + + die_in_light = false, + --die_in_light_level = 12, + } ) + + + +mobs.register_mob( + { + mobname = "nitro_creeper", + physical = true, + collide_with_objects = false, + collisionbox = {-0.37,0, -0.37, 0.37, 1.5, 0.37}, + visual = "mesh", + visual_size = {x = 3.2, y = 3.2}, + mesh = "creeper.b3d", + textures = { + "nitro_creeper.png" + }, + is_visible = true, + pointable = true, + automatic_face_movement_max_rotation_per_sec = 300, + makes_footstep_sound = false, + hp = 70, + gravity = {x = 0, y = -9.81, z = 0}, + movement_type = "walk", + max_speed = 9, + hostile = true, + hostile_cooldown = false, + state = 0, + view_distance = 20, + item_drop = "mob:gunpowder", + + damage_color = "blue", + + standing_frame = {x=0,y=0}, + moving_frame = {x=0,y=40}, + animation_multiplier = 20, + ---- + pathfinds = true, + + --these are used to anchor a point to the head position + ----- + automatic_face_movement_dir = 0, + head_bone = "head", + debug_head_pos = false, + --this always has to be slightly positive + head_directional_offset = 0.01, + head_height_offset = 1.45, --added to the base y position + --use this to correct the head position initially because it becomes severly offset - look at your blender model to get this perfect + head_position_correction = vector.new(0,2.4,0), + head_coord = "vertical", + ----- + + + death_rotation = "x", + + hurt_sound = "creeper_hurt", + die_sound = "creeper_hurt", + + attack_type = "explode", + --projectile_timer_cooldown = 5, + --projectile_type = "tnt:tnt", + + explosion_radius = 6, -- how far away the mob has to be to initialize the explosion + explosion_power = 14, -- how big the explosion is (radius) + explosion_time = 3, -- how long it takes for a mob to explode + explosion_blink_timer = 0.1, -- how fast the blinking happens + + die_in_light = false, + --die_in_light_level = 12, + } +) + + +mobs.register_mob( + { + mobname = "spider", + physical = true, + collide_with_objects = false, + collisionbox = {-0.37, 0, -0.37, 0.37, 0.85, 0.37}, + visual = "mesh", + visual_size = {x = 3, y = 3}, + mesh = "spider.b3d", + textures = { + "spider.png" + }, + + --these are used to anchor a point to the head position + + + ----- + head_bone = "body.head", + debug_head_pos = false, + rotational_correction = -math.pi/2, + head_directional_offset = 0.3, --used in vector.multiply(minetest.yaw_to_dir(body_yaw),head_offset) + head_height_offset = 0.63, --added to the base y position + --use this to correct the head position initially because it becomes severly offset - look at your blender model to get this perfect + head_position_correction = vector.new(0,1.24,0), + --this is used to tell the game the orientation of the bone (swaps x to and y, then z and y) + head_coord = "horizontal", + ----- + + is_visible = true, + pointable = true, + automatic_face_movement_dir = 90, + automatic_face_movement_max_rotation_per_sec = 300, + makes_footstep_sound = false, + hp = 40, + gravity = {x = 0, y = -9.81, z = 0}, + movement_type = "walk", + max_speed = 5, + state = 0, + view_distance = 15, + + item_drop = "mob:string", + standing_frame = {x=21,y=21}, + moving_frame = {x=0,y=20}, + animation_multiplier = 20, + ---- + ---- + death_rotation = "z", + + hurt_sound = "spider", + die_sound = "spider_die", + + + hostile = true, + friendly_in_daylight = true, + attacked_hostile = true, + attack_type = "punch", + group_attack = true, + --explosion_radius = 4, -- how far away the mob has to be to initialize the explosion + --explosion_power = 7, -- how big the explosion has to be + --explosion_time = 3, -- how long it takes for a mob to explode + } +) \ No newline at end of file