fire_spirit.lua 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. local S = mobs.intllib_monster
  2. local mob_drops = {
  3. {name = "fireflies:firefly", chance = 1, min = 1, max = 1}
  4. }
  5. if minetest.get_modpath("ethereal") then
  6. table.insert(mob_drops,
  7. {name = "ethereal:fire_dust", chance = 1, min = 1, max = 1})
  8. end
  9. -- Fire Spirit
  10. mobs:register_mob("mobs_monster:fire_spirit", {
  11. type = "monster",
  12. passive = false,
  13. attack_type = "dogfight",
  14. pathfinding = true,
  15. reach = 2,
  16. damage = 4,
  17. hp_min = 25,
  18. hp_max = 45,
  19. armor = 100,
  20. collisionbox = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
  21. visual_scale = {x = 0.5, y = 0.5, z = 0.5},
  22. visual = "sprite",
  23. textures = {
  24. {"mobs_fire_spirit.png"}
  25. },
  26. glow = 14,
  27. blood_texture = "fire_basic_flame.png",
  28. immune_to = {
  29. {"bucket:bucket_water", 1},
  30. {"bucket:bucket_river_water", 1},
  31. {"all"}
  32. },
  33. makes_footstep_sound = false,
  34. sounds = {
  35. random = "fire_fire",
  36. damage = "fire_extinguish_flame",
  37. death = "fire_extinguish_flame"
  38. },
  39. view_range = 14,
  40. walk_velocity = 2,
  41. run_velocity = 3,
  42. jump = true,
  43. jump_height = 6,
  44. drops = mob_drops,
  45. water_damage = 1,
  46. lava_damage = 0,
  47. fire_damage = 0,
  48. light_damage = 0,
  49. fall_damage = false,
  50. fear_height = 8,
  51. animation = {},
  52. on_die = function(self, pos)
  53. mobs:effect(pos, 20, "tnt_smoke.png", 3, 5, 2, 0.5, nil, false)
  54. self.object:remove()
  55. end,
  56. do_custom = function(self, dtime)
  57. self.flame_timer = (self.flame_timer or 0) + dtime
  58. if self.flame_timer < 0.25 then
  59. return
  60. end
  61. self.flame_timer = 0
  62. local pos = self.object:get_pos()
  63. -- pos, amount, texture, min_size, max_size, radius, gravity, glow, fall
  64. mobs:effect(pos, 5, "fire_basic_flame.png", 1, 2, 0.1, 0.2, 14, nil)
  65. end
  66. })
  67. if not mobs.custom_spawn_monster then
  68. mobs:spawn({
  69. name = "mobs_monster:fire_spirit",
  70. nodes = {"default:obsidian", "caverealms:hot_cobble"},
  71. neighbors = {"group:fire"},
  72. min_light = 12,
  73. max_light = 15,
  74. chance = 1500,
  75. active_object_count = 1,
  76. max_height = -150
  77. })
  78. end
  79. mobs:register_egg("mobs_monster:fire_spirit", S("Fire Spirit"), "fire_basic_flame.png", 1)