dvd.lua 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. -- Flowers by DragonsVolcanoDance.
  2. --
  3. -- Message to DVD: you gave me this code in an *.odt file.
  4. -- This remark forever marks your utter noobishness. :p
  5. -- Also, you forgot some } and ).
  6. local function pixel_box(x1, y1, z1, x2, y2, z2)
  7. return {
  8. x1 / 16 - 0.5,
  9. y1 / 16 - 0.5,
  10. z1 / 16 - 0.5,
  11. x2 / 16 - 0.5,
  12. y2 / 16 - 0.5,
  13. z2 / 16 - 0.5,
  14. }
  15. end
  16. local function get_selection_box(x1, y1, z1, x2, y2, z2)
  17. return {
  18. type = "fixed",
  19. fixed = {
  20. pixel_box(x1, y1, z1, x2, y2, z2),
  21. },
  22. }
  23. end
  24. flowers.aradonia_flowers_list = {
  25. {node="aradonia:caveflower6"},
  26. {node="aradonia:caveflower8"},
  27. {node="aradonia:caveflower9"},
  28. {node="aradonia:caveflower10"},
  29. {node="aradonia:caveflower11"},
  30. {node="aradonia:caveflower12"},
  31. {node="aradonia:caveflower13"},
  32. }
  33. -- Giant Luminous Flower
  34. minetest.register_node(':aradonia:caveflower6', {
  35. description = 'Midnight Sun',
  36. drawtype = "plantlike",
  37. visual_scale = 2.0,
  38. walkable = false,
  39. tiles = {'dvd_luminousflower.png'},
  40. inventory_image = 'dvd_luminousflower.png',
  41. paramtype = "light",
  42. light_source = 6,
  43. selection_box = get_selection_box(0, 0, 0, 16, 32, 16),
  44. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  45. sounds = default.node_sound_leaves_defaults(),
  46. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  47. })
  48. -- Fairy Flower
  49. minetest.register_node(':aradonia:caveflower8', {
  50. description = 'Fairy Flower',
  51. drawtype = "plantlike",
  52. visual_scale = 2.0,
  53. walkable = false,
  54. tiles = {'dvd_fairyflower2.png'},
  55. inventory_image = 'dvd_fairyflower2.png',
  56. paramtype = "light",
  57. light_source = 5,
  58. selection_box = get_selection_box(-2, 0, -2, 18, 28, 18),
  59. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  60. sounds = default.node_sound_leaves_defaults(),
  61. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  62. })
  63. --------------------------------------------------------------------------------
  64. local function sunflower_choose(pos)
  65. local time = minetest.get_timeofday()
  66. local node = minetest.get_node(pos)
  67. if time < 0.2 or time > 0.8 then
  68. -- Night.
  69. if node.name ~= "aradonia:caveflower9" then
  70. node.name = "aradonia:caveflower9"
  71. minetest.swap_node(pos, node)
  72. end
  73. else
  74. -- Day.
  75. if node.name ~= "aradonia:caveflower10" then
  76. node.name = "aradonia:caveflower10"
  77. minetest.swap_node(pos, node)
  78. end
  79. end
  80. end
  81. local function sunflower_on_construct(pos)
  82. sunflower_choose(pos)
  83. minetest.get_node_timer(pos):start(math.random(50, 100) / 10)
  84. end
  85. local function sunflower_on_timer(pos, elapsed)
  86. sunflower_choose(pos)
  87. minetest.get_node_timer(pos):start(math.random(50, 100) / 10)
  88. end
  89. -- Weeping Sunset Flower
  90. minetest.register_node(':aradonia:caveflower9', {
  91. description = 'Weeping Sunset',
  92. drawtype = "plantlike",
  93. visual_scale = 2.0,
  94. walkable = false,
  95. tiles = {'dvd_weepingsunset.png'},
  96. inventory_image = 'dvd_weepingsunset.png',
  97. paramtype = "light",
  98. light_source = 4,
  99. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  100. sounds = default.node_sound_leaves_defaults(),
  101. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  102. on_construct = sunflower_on_construct,
  103. on_timer = sunflower_on_timer,
  104. })
  105. -- Weeping Sunrise Flower
  106. minetest.register_node(':aradonia:caveflower10', {
  107. description = 'Weeping Sunrise',
  108. drawtype = "plantlike",
  109. visual_scale = 2.0,
  110. walkable = false,
  111. tiles = {'dvd_weepingsunrise.png'},
  112. inventory_image = 'dvd_weepingsunrise.png',
  113. paramtype = "light",
  114. light_source = 4,
  115. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  116. sounds = default.node_sound_leaves_defaults(),
  117. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  118. on_construct = sunflower_on_construct,
  119. on_timer = sunflower_on_timer,
  120. })
  121. --------------------------------------------------------------------------------
  122. local function fire_lantern_punch(pos)
  123. local p1 = vector.offset(pos, 0, 1, 0)
  124. if minetest.get_node(p1).name == "air" then
  125. minetest.set_node(p1, {name="fire:basic_flame"})
  126. end
  127. end
  128. local function fire_lantern_after_destruct(pos)
  129. minetest.set_node(pos, {name="fire:basic_flame"})
  130. end
  131. -- Fiery Lantern
  132. minetest.register_node(':aradonia:caveflower11', {
  133. description = 'Fiery Lantern',
  134. drawtype = "plantlike",
  135. visual_scale = 2.0,
  136. walkable = false,
  137. tiles = {'dvd_fierylantern.png'},
  138. inventory_image = 'dvd_fierylantern.png',
  139. paramtype = "light",
  140. paramtype2 = "meshoptions",
  141. place_param2 = 2,
  142. light_source = 5,
  143. selection_box = get_selection_box(0, 0, 0, 16, 27, 16),
  144. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  145. sounds = default.node_sound_leaves_defaults(),
  146. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  147. on_punch = fire_lantern_punch,
  148. after_destruct = fire_lantern_after_destruct,
  149. })
  150. --------------------------------------------------------------------------------
  151. -- Candle Flowers
  152. minetest.register_node(':aradonia:caveflower12', {
  153. description = 'Candle Flowers',
  154. drawtype = "plantlike",
  155. visual_scale = 1.0,
  156. walkable = false,
  157. tiles = {'dvd_fireflowers.png'},
  158. inventory_image = 'dvd_fireflowers.png',
  159. paramtype = "light",
  160. paramtype2 = "meshoptions",
  161. place_param2 = 10,
  162. light_source = 5,
  163. selection_box = {
  164. type = "fixed",
  165. fixed = {
  166. pixel_box(0, 0, 0, 16, 7, 16),
  167. },
  168. },
  169. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  170. sounds = default.node_sound_leaves_defaults(),
  171. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  172. })
  173. -- Fiery Thorns
  174. minetest.register_node(':aradonia:caveflower13', {
  175. description = 'Fiery Thorns',
  176. drawtype = "plantlike",
  177. visual_scale = 1.0,
  178. walkable = false,
  179. tiles = {'dvd_fierythorns.png'},
  180. inventory_image = 'dvd_fierythorns.png',
  181. paramtype = "light",
  182. paramtype2 = "meshoptions",
  183. place_param2 = 3+32,
  184. light_source = 1,
  185. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  186. sounds = default.node_sound_leaves_defaults(),
  187. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  188. damage_per_second = 2*500,
  189. _damage_per_second_type = "snappy",
  190. _death_message = {
  191. "The firethorns got <player>.",
  192. "<player> was pierced by firethorns.",
  193. },
  194. })
  195. -- Glowflowers
  196. minetest.register_node(':aradonia:caveflower14', {
  197. description = 'Star Moss',
  198. drawtype = "plantlike",
  199. visual_scale = 1.0,
  200. walkable = false,
  201. tiles = {'dvd_glowflowers.png'},
  202. inventory_image = 'dvd_glowflowers.png',
  203. paramtype = "light",
  204. paramtype2 = "meshoptions",
  205. place_param2 = 10,
  206. light_source = 4,
  207. selection_box = {
  208. type = "fixed",
  209. fixed = {
  210. pixel_box(0, 0, 0, 16, 7, 16),
  211. },
  212. },
  213. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  214. sounds = default.node_sound_leaves_defaults(),
  215. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  216. })
  217. --Moon Flower
  218. minetest.register_node(':aradonia:caveflower15', {
  219. description = 'Moon Flower',
  220. drawtype = "plantlike",
  221. visual_scale = 1.0,
  222. walkable = false,
  223. tiles = {'dvd_moonflower.png'},
  224. inventory_image = 'dvd_moonflower.png',
  225. paramtype = "light",
  226. paramtype2 = "meshoptions",
  227. light_source = 4,
  228. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  229. sounds = default.node_sound_leaves_defaults(),
  230. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  231. })
  232. --Pink Moon Flower
  233. minetest.register_node(':aradonia:caveflower16', {
  234. description = 'Pink Moon Flower',
  235. drawtype = "plantlike",
  236. visual_scale = 1.0,
  237. walkable = false,
  238. tiles = {'dvd_pinkmoonflower.png'},
  239. inventory_image = 'dvd_pinkmoonflower.png',
  240. paramtype = "light",
  241. paramtype2 = "meshoptions",
  242. light_source = 4,
  243. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  244. sounds = default.node_sound_leaves_defaults(),
  245. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  246. })
  247. --Dustflower
  248. minetest.register_node(':aradonia:caveflower17', {
  249. description = 'Dust Flower',
  250. drawtype = "plantlike",
  251. visual_scale = 1.0,
  252. walkable = false,
  253. tiles = {'dvd_dustflower.png'},
  254. inventory_image = 'dvd_dustflower.png',
  255. paramtype = "light",
  256. paramtype2 = "meshoptions",
  257. light_source = 4,
  258. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  259. sounds = default.node_sound_leaves_defaults(),
  260. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  261. })
  262. --Emergant Dustflower
  263. minetest.register_node(':aradonia:caveflower18', {
  264. description = 'Emergant Dustflower',
  265. drawtype = "plantlike",
  266. visual_scale = 2.0,
  267. walkable = false,
  268. tiles = {'dvd_emergantdustflower.png'},
  269. inventory_image = 'dvd_emergantdustflower.png',
  270. paramtype = "light",
  271. paramtype2 = "meshoptions",
  272. light_source = 6,
  273. selection_box = {
  274. type = "fixed",
  275. fixed = {
  276. pixel_box(0, 0, 0, 16, 32, 16),
  277. },
  278. },
  279. groups = {level = 1, snappy = 3, oddly_breakable_by_hand = 1, attached_node = 1},
  280. sounds = default.node_sound_leaves_defaults(),
  281. movement_speed_multiplier = default.SLOW_SPEED_PLANTS,
  282. })