Advertisement
Guest User

Untitled

a guest
Oct 31st, 2012
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.27 KB | None | 0 0
  1. --Gems by Vsevolod Borislav (wowiamdiamonds)
  2. --
  3. --License: WTFPL
  4. --
  5. --Depends: default, moreores
  6. --
  7. --Adds gems and encrusted tools
  8. --
  9.  
  10. minetest.register_node("gems:mineral_garnet", {
  11. description = "Garnet",
  12. tiles = {"default_stone.png^gems_mineral_garnet.png"},
  13. is_ground_content = true,
  14. groups = {cracky=3},
  15. drop = 'gems:garnet',
  16. sounds = default.node_sound_stone_defaults(),
  17. })
  18. minetest.register_node("gems:mineral_aquamarine", {
  19. description = "Aquamarine",
  20. tiles = {"default_stone.png^gems_mineral_aquamarine.png"},
  21. is_ground_content = true,
  22. groups = {cracky=3},
  23. drop = 'gems:aquamarine',
  24. sounds = default.node_sound_stone_defaults(),
  25. })
  26. minetest.register_node("gems:mineral_topaz", {
  27. description = "Topaz",
  28. tiles = {"default_stone.png^gems_mineral_topaz.png"},
  29. is_ground_content = true,
  30. groups = {cracky=3},
  31. drop = 'gems:topaz',
  32. sounds = default.node_sound_stone_defaults(),
  33. })
  34. minetest.register_node("gems:mineral_diamond", {
  35. description = "Diamond",
  36. tiles = {"default_stone.png^gems_mineral_diamond.png"},
  37. is_ground_content = true,
  38. groups = {cracky=3},
  39. drop = 'gems:diamond',
  40. sounds = default.node_sound_stone_defaults(),
  41. })
  42. minetest.register_node("gems:mineral_opal", {
  43. description = "Opal",
  44. tiles = {"default_stone.png^gems_mineral_opal.png"},
  45. is_ground_content = true,
  46. groups = {cracky=3},
  47. drop = 'gems:opal',
  48. sounds = default.node_sound_stone_defaults(),
  49. })
  50.  
  51. minetest.register_craftitem("gems:garnet", {
  52. description = "Garnet",
  53. inventory_image = "gems_gem_garnet.png",
  54. })
  55. minetest.register_craftitem("gems:aquamarine", {
  56. description = "Aquamarine",
  57. inventory_image = "gems_gem_aquamarine.png",
  58. })
  59. minetest.register_craftitem("gems:topaz", {
  60. description = "Topaz",
  61. inventory_image = "gems_gem_topaz.png",
  62. })
  63. minetest.register_craftitem("gems:diamond", {
  64. description = "Diamond",
  65. inventory_image = "gems_gem_diamond.png",
  66. })
  67. minetest.register_craftitem("gems:opal", {
  68. description = "Opal",
  69. inventory_image = "gems_gem_opal.png",
  70. })
  71.  
  72. encrust_a_tool = function(result,crafttool,craftgem)
  73. minetest.register_craft( {
  74. type = "shapeless",
  75. output = result,
  76. recipe = {
  77. crafttool,
  78. craftgem,
  79. },
  80. })
  81. end
  82.  
  83. mods = {"default","moreores","moreores"}
  84. metals = {"steel","gold","mithril"}
  85. metalname = {"Steel","Gold","Mithril"}
  86. gems = {"garnet","aquamarine","topaz","diamond","opal"}
  87. gemname = {"Garnet","Aquamarine","Topaz","Diamond","Opal"}
  88.  
  89. gembenefitspeed = {0.90,0.80,1.12,0.86,0.75}
  90. gembenefitwear = {1.05,1.10,1.35,1.20,0.80}
  91.  
  92. for j,k in ipairs(metals) do
  93. modis = mods[j]
  94. metalis = metals[j]
  95. pickdef = minetest.registered_tools[modis..":pick_"..metalis]
  96. axedef = minetest.registered_tools[modis..":axe_"..metalis]
  97. shoveldef = minetest.registered_tools[modis..":shovel_"..metalis]
  98. sworddef = minetest.registered_tools[modis..":sword_"..metalis]
  99. pickdig = pickdef.tool_capabilities.groupcaps.cracky
  100. axedigc = axedef.tool_capabilities.groupcaps.choppy
  101. axedigf = axedef.tool_capabilities.groupcaps.fleshy
  102. shoveldig = shoveldef.tool_capabilities.groupcaps.crumbly
  103. sworddigf = sworddef.tool_capabilities.groupcaps.fleshy
  104. sworddigs = sworddef.tool_capabilities.groupcaps.snappy
  105. sworddigc = sworddef.tool_capabilities.groupcaps.choppy
  106. for i,l in gems do
  107. npickdig = {}
  108. naxedigc = {}
  109. naxedigf = {}
  110. nshoveldig = {}
  111. nsworddigf = {}
  112. nsworddigs = {}
  113. nsworddigc = {}
  114.  
  115. npickdig.times[1] = pickdig.times[1]*gembenefitspeed[i]
  116. npickdig.times[2] = pickdig.times[2]*gembenefitspeed[i]
  117. npickdig.times[3] = pickdig.times[3]*gembenefitspeed[i]
  118. npickdig.uses = pickdig.uses*gembenefitwear[i]
  119.  
  120. naxedigc.times[1] = axedigc.times[1]*gembenefitspeed[i]
  121. naxedigc.times[2] = axedigc.times[2]*gembenefitspeed[i]
  122. naxedigc.times[3] = axedigc.times[3]*gembenefitspeed[i]
  123. naxedigc.uses = axedigc.uses*gembenefitwear[i]
  124.  
  125. naxedigf.times[1] = axedigf.times[1]*gembenefitspeed[i]
  126. naxedigf.times[2] = axedigf.times[2]*gembenefitspeed[i]
  127. naxedigf.times[3] = axedigf.times[3]*gembenefitspeed[i]
  128. naxedigf.uses = axedigf.uses*gembenefitwear[i]
  129.  
  130. nshoveldig.times[1] = shoveldig.times[1]*gembenefitspeed[i]
  131. nshoveldig.times[2] = shoveldig.times[2]*gembenefitspeed[i]
  132. nshoveldig.times[3] = shoveldig.times[3]*gembenefitspeed[i]
  133. nshoveldig.uses = shoveldig.uses*gembenefitwear[i]
  134.  
  135. nsworddigf.times[1] = sworddigf.times[1]*gembenefitspeed[i]
  136. nsworddigf.times[2] = sworddigf.times[2]*gembenefitspeed[i]
  137. nsworddigf.times[3] = sworddigf.times[3]*gembenefitspeed[i]
  138. nsworddigf.uses = sworddigf.uses*gembenefitwear[i]
  139.  
  140. nsworddigs.times[1] = sworddigs.times[1]*gembenefitspeed[i]
  141. nsworddigs.times[2] = sworddigs.times[2]*gembenefitspeed[i]
  142. nsworddigs.times[3] = sworddigs.times[3]*gembenefitspeed[i]
  143. nsworddigs.uses = sworddigs.uses*gembenefitwear[i]
  144.  
  145. nsworddigc.times[1] = sworddigc.times[1]*gembenefitspeed[i]
  146. nsworddigc.times[2] = sworddigc.times[2]*gembenefitspeed[i]
  147. nsworddigc.times[3] = sworddigc.times[3]*gembenefitspeed[i]
  148. nsworddigc.uses = sworddigc.uses*gembenefitwear[i]
  149.  
  150. minetest.register_tool("gems:pick_"..k.."_"..l, {
  151. description = metalname[j].." Pickaxe with "..gemname[i],
  152. inventory_image = mods[j].."_tool_"..metals[j].."pick.png^gems_pick_"..gems[i],
  153. tool_capabilities = {
  154. max_drop_level = pickdef.tool_capabilities.max_drop_level,
  155. groupcaps = {
  156. npickdig,
  157. }
  158. }
  159. })
  160. minetest.register_tool("gems:axe_"..k.."_"..i, {
  161. description = metalname[j].." Axe with "..gemname[i],
  162. inventory_image = mods[j].."_tool_"..metals[j].."axe.png^gems_axe_"..gems[i],
  163. tool_capabilities = {
  164. max_drop_level = axedef.tool_capabilities.max_drop_level,
  165. groupcaps = {
  166. naxedigc,
  167. naxedigf,
  168. }
  169. }
  170. })
  171. minetest.register_tool("gems:shovel_"..k.."_"..l, {
  172. description = metalname[j].." Shovel with "..gemname[i],
  173. inventory_image = mods[j].."_tool_"..metals[j].."shovel.png^gems_shovel_"..gems[i],
  174. tool_capabilities = {
  175. max_drop_level = shoveldef.tool_capabilities.max_drop_level,
  176. groupcaps = {
  177. nshoveldig,
  178. }
  179. }
  180. })
  181. minetest.register_tool("gems:sword_"..k.."_"..l, {
  182. description = metalname[j].." Sword with "..gemname[i],
  183. inventory_image = mods[j].."_tool_"..metals[j].."sword.png^gems_sword_"..gems[i],
  184. tool_capabilities = {
  185. max_drop_level = sworddef.tool_capabilities.max_drop_level,
  186. groupcaps = {
  187. nsworddigf,
  188. nsworddigs,
  189. nsworddigc,
  190. }
  191. }
  192. })
  193. minetest.register_craft({
  194. type = "shapeless",
  195. output = "gems:pick_"..k.."_"..l,
  196. recipe = {
  197. "gems:"..i,
  198. mods[j]..":pick_"..k,
  199. }
  200. })
  201. minetest.register_craft({
  202. type = "shapeless",
  203. output = "gems:axe_"..k.."_"..l,
  204. recipe = {
  205. "gems:"..i,
  206. mods[j]..":axe_"..k,
  207. }
  208. })
  209. minetest.register_craft({
  210. type = "shapeless",
  211. output = "gems:shovel_"..k.."_"..l,
  212. recipe = {
  213. "gems:"..i,
  214. mods[j]..":shovel_"..k,
  215. }
  216. })
  217. minetest.register_craft({
  218. type = "shapeless",
  219. output = "gems:sword_"..k.."_"..l,
  220. recipe = {
  221. "gems:"..i,
  222. mods[j]..":sword_"..k,
  223. }
  224. })
  225. end
  226. end
  227.  
  228. local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, ore_per_chunk, height_min, height_max)
  229. if maxp.y < height_min or minp.y > height_max then
  230. return
  231. end
  232. local y_min = math.max(minp.y, height_min)
  233. local y_max = math.min(maxp.y, height_max)
  234. local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1)
  235. local pr = PseudoRandom(seed)
  236. local num_chunks = math.floor(chunks_per_volume * volume)
  237. local chunk_size = 3
  238. if ore_per_chunk <= 4 then
  239. chunk_size = 2
  240. end
  241. local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk)
  242. --print("generate_ore num_chunks: "..dump(num_chunks))
  243. for i=1,num_chunks do
  244. if (y_max-chunk_size+1 <= y_min) then return end
  245. local y0 = pr:next(y_min, y_max-chunk_size+1)
  246. if y0 >= height_min and y0 <= height_max then
  247. local x0 = pr:next(minp.x, maxp.x-chunk_size+1)
  248. local z0 = pr:next(minp.z, maxp.z-chunk_size+1)
  249. local p0 = {x=x0, y=y0, z=z0}
  250. for x1=0,chunk_size-1 do
  251. for y1=0,chunk_size-1 do
  252. for z1=0,chunk_size-1 do
  253. if pr:next(1,inverse_chance) == 1 then
  254. local x2 = x0+x1
  255. local y2 = y0+y1
  256. local z2 = z0+z1
  257. local p2 = {x=x2, y=y2, z=z2}
  258. if minetest.env:get_node(p2).name == wherein then
  259. minetest.env:set_node(p2, {name=name})
  260. end
  261. end
  262. end
  263. end
  264. end
  265. end
  266. end
  267. --print("generate_ore done")
  268. end
  269.  
  270. minetest.register_on_generated(function(minp, maxp, seed)
  271. math.randomseed(os.time())
  272. local current_seed = seed + math.random(10,100)
  273. local function get_next_seed()
  274. current_seed = current_seed + 1
  275. return current_seed
  276. end
  277. generate_ore("gems:mineral_garnet", "default:stone", minp, maxp, get_next_seed(), 1/7/7/7, 1, -31000, -64)
  278. generate_ore("gems:mineral_aquamarine", "default:stone", minp, maxp, get_next_seed(), 1/7/7/7, 1, -31000, -128)
  279. generate_ore("gems:mineral_topaz", "default:stone", minp, maxp, get_next_seed(), 1/7/7/7, 1, -31000, -256)
  280. generate_ore("gems:mineral_diamond", "default:stone", minp, maxp, get_next_seed(), 1/7/7/7, 1, -31000, -512)
  281. generate_ore("gems:mineral_opal", "default:stone", minp, maxp, get_next_seed(), 1/7/7/7, 1, -31000, -1024)
  282. end)
  283.  
  284. print("[Gems] Loaded!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement