diff --git a/darts.lua b/api/darts.lua similarity index 100% rename from darts.lua rename to api/darts.lua diff --git a/nssm_api.lua b/api/main_api.lua similarity index 100% rename from nssm_api.lua rename to api/main_api.lua diff --git a/api/settings.lua b/api/settings.lua new file mode 100644 index 0000000..77625a6 --- /dev/null +++ b/api/settings.lua @@ -0,0 +1,14 @@ +nssm.mymapgenis = tonumber(minetest.settings:get('nssm.mymapgenis')) or 7 +nssm.multimobs = tonumber(minetest.settings:get('nssm.multimobs')) or 1000 + +-- Server safe setting - allow a non-griefing rainbow tool +nssm.init_rainbow_staff = minetest.settings:get_bool('nssm.classic_rainbow_staff') + +-- Server safe setting - fire-placing mobs do not cause havoc on server +nssm.normal_fire = minetest.settings:get_bool('nssm.normal_fire') + +-- Safe fire +nssm.fire_node = "nssm:squib_fire" +if nssm.normal_fire then + nssm.fire_node = "fire:basic_flame" +end diff --git a/init.lua b/init.lua index ad059ce..80fb5af 100644 --- a/init.lua +++ b/init.lua @@ -1,83 +1,27 @@ -local path = minetest.get_modpath("nssm") nssm = {} -nssm.mymapgenis = tonumber(minetest.settings:get('nssm.mymapgenis')) or 7 -nssm.multimobs = tonumber(minetest.settings:get('nssm.multimobs')) or 1000 +-- File loading +nssm.path = minetest.get_modpath("nssm") --- Server safe setting - allow a non-griefing rainbow tool -nssm.init_rainbow_staff = minetest.settings:get_bool('nssm.classic_rainbow_staff') - --- Server safe setting - fire-placing mobs do not cause havoc on server -nssm.normal_fire = minetest.settings:get_bool('nssm.normal_fire') - -nssm.fire_node = "nssm:squib_fire" -if nssm.normal_fire then - nssm.fire_node = "fire:basic_flame" +function nssm:load(filepath) + dofile(nssm.path.."/"..filepath) end -dofile(path.."/spawn.lua") +-- General API +nssm:load("api/settings.lua") +nssm:load("api/main_api.lua") +nssm:load("api/darts.lua") --Mobs -dofile(path.."/mobs/ant_queen.lua") -dofile(path.."/mobs/ant_soldier.lua") -dofile(path.."/mobs/ant_worker.lua") -dofile(path.."/mobs/black_widow.lua") -dofile(path.."/mobs/bloco.lua") -dofile(path.."/mobs/crab.lua") -dofile(path.."/mobs/crocodile.lua") -dofile(path.."/mobs/daddy_long_legs.lua") -dofile(path.."/mobs/dolidrosaurus.lua") -dofile(path.."/mobs/duck.lua") -dofile(path.."/mobs/duckking.lua") -dofile(path.."/mobs/echidna.lua") -dofile(path.."/mobs/enderduck.lua") -dofile(path.."/mobs/flying_duck.lua") -dofile(path.."/mobs/felucco.lua") -dofile(path.."/mobs/giant_sandworm.lua") -dofile(path.."/mobs/icelamander.lua") -dofile(path.."/mobs/icesnake.lua") -dofile(path.."/mobs/kraken.lua") -dofile(path.."/mobs/larva.lua") -dofile(path.."/mobs/lava_titan.lua") -dofile(path.."/mobs/manticore.lua") -dofile(path.."/mobs/mantis_beast.lua") -dofile(path.."/mobs/mantis.lua") -dofile(path.."/mobs/masticone.lua") -dofile(path.."/mobs/moonheron.lua") -dofile(path.."/mobs/mordain.lua") -dofile(path.."/mobs/morgre.lua") -dofile(path.."/mobs/morde.lua") -dofile(path.."/mobs/morgut.lua") -dofile(path.."/mobs/morlu.lua") -dofile(path.."/mobs/morvalar.lua") -dofile(path.."/mobs/morvy.lua") -dofile(path.."/mobs/morwa.lua") -dofile(path.."/mobs/night_master.lua") -dofile(path.."/mobs/octopus.lua") -dofile(path.."/mobs/phoenix.lua") -dofile(path.."/mobs/pumpboom.lua") -dofile(path.."/mobs/pumpking.lua") -dofile(path.."/mobs/sandworm.lua") -dofile(path.."/mobs/scrausics.lua") -dofile(path.."/mobs/sand_bloco.lua") -dofile(path.."/mobs/signosigno.lua") -dofile(path.."/mobs/snow_biter.lua") -dofile(path.."/mobs/spiderduck.lua") -dofile(path.."/mobs/stone_eater.lua") -dofile(path.."/mobs/swimming_duck.lua") -dofile(path.."/mobs/tarantula.lua") -dofile(path.."/mobs/uloboros.lua") -dofile(path.."/mobs/werewolf.lua") -dofile(path.."/mobs/white_werewolf.lua") ---Final Boss -dofile(path.."/mobs/mese_dragon.lua") +nssm:load("mobs/all_mobs.lua") +nssm:load("mobs/spawn.lua") ---Others -dofile(path.."/rainbow_staff.lua") -dofile(path.."/darts.lua") -dofile(path.."/nssm_materials.lua") -dofile(path.."/nssm_spears.lua") -dofile(path.."/nssm_api.lua") -dofile(path.."/nssm_weapons.lua") -dofile(path.."/nssm_armor.lua") +-- Items etc + +nssm:load("materials/materials.lua") + +nssm:load("tools/spears.lua") +nssm:load("tools/weapons.lua") +nssm:load("tools/rainbow_staff.lua") +nssm:load("tools/armor.lua") diff --git a/materials/craft_items.lua b/materials/craft_items.lua new file mode 100644 index 0000000..0b43cfd --- /dev/null +++ b/materials/craft_items.lua @@ -0,0 +1,121 @@ +function nssm:register_noneatcraftitems (name, descr) + minetest.register_craftitem("nssm:"..name, { + description = descr, + image = name..".png", + }) +end + +function nssm:register_eatcraftitems (name, descr, gnam) + minetest.register_craftitem("nssm:"..name, { + description = descr, + image = name..".png", + on_use = minetest.item_eat(gnam), + groups = { meat=1, eatable=1 }, + }) +end + +-- Materials + +nssm:register_noneatcraftitems ('sky_feather','Sky Feather') +nssm:register_noneatcraftitems ('snake_scute','Snake Scute') +nssm:register_noneatcraftitems ('eyed_tentacle','Eyed Tentacle') +nssm:register_noneatcraftitems ('ant_queen_abdomen',"Ant Queen's Abdomen") +nssm:register_noneatcraftitems ('masticone_skull_fragments','Masticone Skull Fragments') +nssm:register_noneatcraftitems ('tentacle_curly','Kraken Tentacle') +nssm:register_noneatcraftitems ('lava_titan_eye','Lava Titan Eye') +nssm:register_noneatcraftitems ('duck_beak','Duck Beak') +nssm:register_noneatcraftitems ('ice_tooth','Ice Tooth') +nssm:register_noneatcraftitems ('little_ice_tooth','Little Ice Tooth') +nssm:register_noneatcraftitems ('digested_sand',"Digested Sand") +nssm:register_noneatcraftitems ('black_ice_tooth','Black Ice Tooth') +nssm:register_noneatcraftitems ('tarantula_chelicerae','Tarantula Fangs') +nssm:register_noneatcraftitems ('crab_chela','Crab Claw') +nssm:register_noneatcraftitems ('cursed_pumpkin_seed','Cursed Pumpkin Seed') +nssm:register_noneatcraftitems ('mantis_claw','Mantis Claw') +nssm:register_noneatcraftitems ('manticore_fur','Manticore Fur') +nssm:register_noneatcraftitems ('ant_hard_skin','Ant Husk') +nssm:register_noneatcraftitems ('bloco_skin','Bloco Hide') +nssm:register_noneatcraftitems ('crab_carapace_fragment','Crab Shell Fragment') +nssm:register_noneatcraftitems ('crocodile_skin','Crocodile Hide') +nssm:register_noneatcraftitems ('manticore_spine','Manticore Spine') +nssm:register_noneatcraftitems ('night_feather','Night Feather') +nssm:register_noneatcraftitems ('sun_feather','Sun Feather') +nssm:register_noneatcraftitems ('duck_feather','Duck Feather') +nssm:register_noneatcraftitems ('black_duck_feather','Black Duck Feather') +nssm:register_noneatcraftitems ('masticone_fang','Masticone Fang') +nssm:register_noneatcraftitems ('white_wolf_fur','White Wolf Fur') +nssm:register_noneatcraftitems ('stoneater_mandible','Stoneater Mandible') +nssm:register_noneatcraftitems ('ant_mandible','Ant Mandible') +nssm:register_noneatcraftitems ('wolf_fur','Wolf Fur') +nssm:register_noneatcraftitems ('felucco_fur','Felucco Fur') +nssm:register_noneatcraftitems ('felucco_horn','Felucco Horn') +nssm:register_noneatcraftitems ('mantis_skin','Mantis Husk') +nssm:register_noneatcraftitems ('sand_bloco_skin','Sand Bloco Hide') +nssm:register_noneatcraftitems ('sandworm_skin','Sandworm Hide') +nssm:register_noneatcraftitems ('sky_iron','Sky Iron') +nssm:register_noneatcraftitems ('web_string','Cobweb String') +nssm:register_noneatcraftitems ('dense_web_string','Dense Cobweb String') +nssm:register_noneatcraftitems ('black_powder','Black Powder') +nssm:register_noneatcraftitems ('morelentir_dust','Soarkly Dark Stone Dust') +nssm:register_noneatcraftitems ('empty_evocation_bomb','Empty Summoning Bomb') + +nssm:register_noneatcraftitems ('greedy_soul_fragment','Greedy Soul Fragment') +nssm:register_noneatcraftitems ('lustful_soul_fragment','Lustful Soul Fragment') +nssm:register_noneatcraftitems ('wrathful_soul_fragment','Wrathful Soul Fragment') +nssm:register_noneatcraftitems ('proud_soul_fragment','Proud Soul Fragment') +nssm:register_noneatcraftitems ('slothful_soul_fragment','Slothful Soul Fragment') +nssm:register_noneatcraftitems ('envious_soul_fragment','Envious Soul Fragment') +nssm:register_noneatcraftitems ('gluttonous_soul_fragment','Gluttonous Soul Fragment') +nssm:register_noneatcraftitems ('gluttonous_moranga','Gluttonous Moranga') +nssm:register_noneatcraftitems ('envious_moranga','Envious Moranga') +nssm:register_noneatcraftitems ('proud_moranga','Proud Moranga') +nssm:register_noneatcraftitems ('slothful_moranga','Slothful Moranga') +nssm:register_noneatcraftitems ('lustful_moranga','Lustful Moranga') +nssm:register_noneatcraftitems ('wrathful_moranga','Wrathful Moranga') +nssm:register_noneatcraftitems ('greedy_moranga','Greedy Moranga') + +-- Food + +nssm:register_eatcraftitems ('werewolf_leg','Werewolf Leg',3) +nssm:register_eatcraftitems ('felucco_steak','Felucco Steak',3) +nssm:register_eatcraftitems ('roasted_felucco_steak','Roasted Felucco Steak',6) +nssm:register_eatcraftitems ('heron_leg','Moonheron Leg',2) +nssm:register_eatcraftitems ('chichibios_heron_leg',"Chichibio's Moonheron Leg",4) +nssm:register_eatcraftitems ('crocodile_tail','Crocodile Tail',3) +nssm:register_eatcraftitems ('roasted_crocodile_tail','Roasted Crocodile Tail',6) +nssm:register_eatcraftitems ('roasted_werewolf_leg','Roasted_Werewolf Leg',6) +nssm:register_eatcraftitems ('duck_legs','Duck Legs',1) +nssm:register_eatcraftitems ('roasted_duck_legs','Roasted Duck Leg',3) +nssm:register_eatcraftitems ('ant_leg','Ant Leg',-1) +nssm:register_eatcraftitems ('roasted_ant_leg','Roasted Ant Leg',4) +nssm:register_eatcraftitems ('spider_leg','Spider Leg',-1) +nssm:register_eatcraftitems ('roasted_spider_leg','Roasted Spider Leg',4) +nssm:register_eatcraftitems ('brain','Brain',3) +nssm:register_eatcraftitems ('roasted_brain','Roasted Brain',8) +nssm:register_eatcraftitems ('tentacle','Tentacle',2) +nssm:register_eatcraftitems ('roasted_tentacle','Roasted Tentacle',5) +nssm:register_eatcraftitems ('worm_flesh','Worm Meat',-2) +nssm:register_eatcraftitems ('roasted_worm_flesh','Roasted Worm',4) +nssm:register_eatcraftitems ('amphibian_heart','Amphibian Heart',1) +nssm:register_eatcraftitems ('roasted_amphibian_heart','Roasted Amphibian Heart',8) +nssm:register_eatcraftitems ('raw_scrausics_wing','Raw Scrausics Wing',1) +nssm:register_eatcraftitems ('spicy_scrausics_wing','Spicy Scrausics Wing',6) +nssm:register_eatcraftitems ('phoenix_nuggets','Phoenix Nuggets',20) +nssm:register_eatcraftitems ('phoenix_tear','Phoenix Tear',20) +nssm:register_eatcraftitems ('frosted_amphibian_heart','Frosted Amphibian Heart',-1) +nssm:register_eatcraftitems ('surimi','Surimi',4) +nssm:register_eatcraftitems ('amphibian_ribs','Amphibian Ribs',2) +nssm:register_eatcraftitems ('roasted_amphibian_ribs','Roasted Amphibian Ribs',6) +nssm:register_eatcraftitems ('dolidrosaurus_fin','Dolidrosaurus Fin',-2) +nssm:register_eatcraftitems ('roasted_dolidrosaurus_fin','Roasted Dolidrosaurus Fin',4) +nssm:register_eatcraftitems ('larva_meat','Larva Meat',-1) +nssm:register_eatcraftitems ('larva_juice','Larva Juice',-3) +nssm:register_eatcraftitems ('larva_soup','Larva Soup',10) +nssm:register_eatcraftitems ('mantis_meat','Mantis Meat',1) +nssm:register_eatcraftitems ('roasted_mantis_meat','Roasted Mantis',4) +nssm:register_eatcraftitems ('spider_meat','Spider Meat',-1) +nssm:register_eatcraftitems ('roasted_spider_meat','Roasted Spider',3) +nssm:register_eatcraftitems ('silk_gland','Silk Gland',-1) +nssm:register_eatcraftitems ('roasted_silk_gland','Roasted Silk Gland',3) +nssm:register_eatcraftitems ('super_silk_gland','Super Silk Gland',-8) +nssm:register_eatcraftitems ('roasted_super_silk_gland','Roasted Super Silk Gland',2) diff --git a/materials/eggs.lua b/materials/eggs.lua new file mode 100644 index 0000000..2ad2327 --- /dev/null +++ b/materials/eggs.lua @@ -0,0 +1,66 @@ +-- Eggs recipes +-- To be deprecated with drops + +minetest.register_craft({ + output = 'nssm:duck', + recipe = { + {'', 'nssm:duck_beak', ''}, + {'nssm:duck_feather', 'nssm:energy_globe', 'nssm:duck_feather'}, + {'nssm:duck_legs', 'nssm:duck_feather', 'nssm:duck_legs'}, + } +}) + +minetest.register_craft({ + output = 'nssm:flying_duck', + recipe = { + {'nssm:duck_feather', 'nssm:duck_beak', 'nssm:duck_feather'}, + {'nssm:duck_feather', 'nssm:energy_globe', 'nssm:duck_feather'}, + {'nssm:duck_legs', 'nssm:duck_feather', 'nssm:duck_legs'}, + } +}) + +minetest.register_craft({ + output = 'nssm:enderduck', + recipe = { + {'nssm:black_duck_feather', 'nssm:duck_beak', 'nssm:black_duck_feather'}, + {'nssm:duck_legs', 'nssm:energy_globe', 'nssm:duck_legs'}, + {'nssm:duck_legs', '', 'nssm:duck_legs'}, + } +}) + +minetest.register_craft({ + output = 'nssm:swimming_duck', + recipe = { + {'nssm:duck_feather', 'nssm:duck_beak', 'nssm:duck_feather'}, + {'nssm:duck_legs', 'nssm:energy_globe', 'nssm:duck_legs'}, + {'nssm:duck_feather', 'nssm:duck_feather', 'nssm:duck_feather'}, + } +}) + +minetest.register_craft({ + output = 'nssm:spiderduck', + recipe = { + {'nssm:duck_legs', 'nssm:duck_beak', 'nssm:duck_legs'}, + {'nssm:black_duck_feather', 'nssm:energy_globe', 'nssm:black_duck_feather'}, + {'nssm:duck_legs', 'nssm:black_duck_feather', 'nssm:duck_legs'}, + } +}) + +minetest.register_craft({ + output = 'nssm:duckking_egg', + recipe = { + {'', 'nssm:helmet_crown', ''}, + {'nssm:duck_feather', 'nssm:duck_beak', 'nssm:duck_feather'}, + {'nssm:duck_legs', 'nssm:superior_energy_globe', 'nssm:duck_legs'}, + } +}) + +minetest.register_craft({ + output = 'nssm:bloco', + recipe = { + {'nssm:bloco_skin', 'nssm:bloco_skin', 'nssm:bloco_skin'}, + {'nssm:bloco_skin', 'nssm:energy_globe', 'nssm:bloco_skin'}, + {'nssm:bloco_skin', 'nssm:bloco_skin', 'nssm:bloco_skin'}, + } +}) + diff --git a/materials/energy_globes.lua b/materials/energy_globes.lua new file mode 100644 index 0000000..8d964fa --- /dev/null +++ b/materials/energy_globes.lua @@ -0,0 +1,39 @@ +function nssm:eat_energy(nutrition, speed) + minetest.item_eat(nutrition) + -- TODO - add speed, gravity = floor(2/speed)+0.5, protection = protection + 1.5*speed + -- Something like that ... +end + +function nssm:register_energy(name, descr, nutrition, speed) + minetest.register_craftitem("nssm:"..name, { + description = descr, + image = name..".png", + on_use = nssm:eat_energy(nutrition, speed), + }) +end + +local function register_energy_craft(smaller,bigger) + minetest.register_craft({ + output = bigger, + recipe = { + smaller,smaller,smaller, + smaller,smaller,smaller, + smaller,smaller,smaller, + } + }) + + minetest.register_craft({ + output = smaller.." 9", + type = shapeless, + recipe = {bigger} + }) +end + +nssm:register_energy('life_energy', 'Life Energy', 1) +nssm:register_energy('energy_globe', 'Energy Sphere', 2) +nssm:register_energy('great_energy_globe', 'Great Energy Sphere', 5) +nssm:register_energy('superior_energy_globe', 'Awesome Energy Sphere', 12) + +register_energy_craft("nssm:life_energy", "nssm:energy_globe") +register_energy_craft("nssm:energy_globe", "nssm:great_energy_globe") +register_energy_craft("nssm:great_energy_globe", "nssm:superior_energy_globe") diff --git a/nssm_materials.lua b/materials/materials.lua similarity index 78% rename from nssm_materials.lua rename to materials/materials.lua index 169b310..ef37584 100644 --- a/nssm_materials.lua +++ b/materials/materials.lua @@ -1,218 +1,8 @@ ---non eatable craftitems - -function nssm_register_noneatcraftitems (name, descr) - minetest.register_craftitem("nssm:"..name, { - description = descr, - image = name..".png", - }) -end - -nssm_register_noneatcraftitems ('sky_feather','Sky Feather') -nssm_register_noneatcraftitems ('snake_scute','Snake Scute') -nssm_register_noneatcraftitems ('eyed_tentacle','Eyed Tentacle') -nssm_register_noneatcraftitems ('great_energy_globe','Great Energy Globe') -nssm_register_noneatcraftitems ('superior_energy_globe','Superior Energy Globe') -nssm_register_noneatcraftitems ('ant_queen_abdomen','Ant Queen Abdomen') -nssm_register_noneatcraftitems ('masticone_skull_fragments','Masticone Skull Fragments') -nssm_register_noneatcraftitems ('tentacle_curly','Kraken Tentacle') -nssm_register_noneatcraftitems ('lava_titan_eye','Lava Titan Eye') -nssm_register_noneatcraftitems ('duck_beak','Duck Beak') -nssm_register_noneatcraftitems ('ice_tooth','Ice Tooth') -nssm_register_noneatcraftitems ('little_ice_tooth','Little Ice Tooth') -nssm_register_noneatcraftitems ('digested_sand',"Digested Sand") -nssm_register_noneatcraftitems ('black_ice_tooth','Black Ice Tooth') -nssm_register_noneatcraftitems ('tarantula_chelicerae','Tarantula Chelicerae') -nssm_register_noneatcraftitems ('crab_chela','Crab Chela') -nssm_register_noneatcraftitems ('cursed_pumpkin_seed','Cursed Pumpkin Seed') -nssm_register_noneatcraftitems ('mantis_claw','Mantis Claw') -nssm_register_noneatcraftitems ('manticore_fur','Manticore Fur') -nssm_register_noneatcraftitems ('ant_hard_skin','Ant Hard Skin') -nssm_register_noneatcraftitems ('bloco_skin','Bloco Skin') -nssm_register_noneatcraftitems ('crab_carapace_fragment','Crab Carapace Fragment') -nssm_register_noneatcraftitems ('crocodile_skin','Crocodile Skin') -nssm_register_noneatcraftitems ('manticore_spine','Manticore Spine') -nssm_register_noneatcraftitems ('night_feather','Night Feather') -nssm_register_noneatcraftitems ('sun_feather','Sun Feather') -nssm_register_noneatcraftitems ('duck_feather','Duck Feather') -nssm_register_noneatcraftitems ('black_duck_feather','Black Duck Feather') -nssm_register_noneatcraftitems ('masticone_fang','Masticone Fang') -nssm_register_noneatcraftitems ('white_wolf_fur','White Wolf Fur') -nssm_register_noneatcraftitems ('stoneater_mandible','Stoneater Mandible') -nssm_register_noneatcraftitems ('ant_mandible','Ant Mandible') -nssm_register_noneatcraftitems ('life_energy','Life Energy') -nssm_register_noneatcraftitems ('wolf_fur','Wolf Fur') -nssm_register_noneatcraftitems ('felucco_fur','Felucco Fur') -nssm_register_noneatcraftitems ('felucco_horn','Felucco Horn') -nssm_register_noneatcraftitems ('energy_globe','Energy Globe') -nssm_register_noneatcraftitems ('greedy_soul_fragment','Greedy Soul Fragment') -nssm_register_noneatcraftitems ('lustful_soul_fragment','Lustful Soul Fragment') -nssm_register_noneatcraftitems ('wrathful_soul_fragment','Wrathful Soul Fragment') -nssm_register_noneatcraftitems ('proud_soul_fragment','Proud Soul Fragment') -nssm_register_noneatcraftitems ('slothful_soul_fragment','Slothful Soul Fragment') -nssm_register_noneatcraftitems ('envious_soul_fragment','Envious Soul Fragment') -nssm_register_noneatcraftitems ('gluttonous_soul_fragment','Gluttonous Soul Fragment') -nssm_register_noneatcraftitems ('gluttonous_moranga','Gluttonous Moranga') -nssm_register_noneatcraftitems ('envious_moranga','Envious Moranga') -nssm_register_noneatcraftitems ('proud_moranga','Proud Moranga') -nssm_register_noneatcraftitems ('slothful_moranga','Slothful Moranga') -nssm_register_noneatcraftitems ('lustful_moranga','Lustful Moranga') -nssm_register_noneatcraftitems ('wrathful_moranga','Wrathful Moranga') -nssm_register_noneatcraftitems ('greedy_moranga','Greedy Moranga') -nssm_register_noneatcraftitems ('mantis_skin','Mantis_skin') -nssm_register_noneatcraftitems ('sand_bloco_skin','Sand Bloco Skin') -nssm_register_noneatcraftitems ('sandworm_skin','Sandworm Skin') -nssm_register_noneatcraftitems ('sky_iron','Sky Iron') -nssm_register_noneatcraftitems ('web_string','Cobweb String') -nssm_register_noneatcraftitems ('dense_web_string','Dense Cobweb String') -nssm_register_noneatcraftitems ('black_powder','Black Powder') -nssm_register_noneatcraftitems ('morelentir_dust','Dark Starred Stone Dust') -nssm_register_noneatcraftitems ('empty_evocation_bomb','Empty Evocation Bomb') - -function nssm_register_eatcraftitems (name, descr, gnam) - minetest.register_craftitem("nssm:"..name, { - description = descr, - image =name..".png", - on_use = minetest.item_eat(gnam), - groups = { meat=1, eatable=1 }, - }) -end - -nssm_register_eatcraftitems ('werewolf_leg','Werewolf Leg',3) -nssm_register_eatcraftitems ('felucco_steak','Felucco Steak',3) -nssm_register_eatcraftitems ('roasted_felucco_steak','Roasted Felucco Steak',6) -nssm_register_eatcraftitems ('heron_leg','Moonheron Leg',2) -nssm_register_eatcraftitems ('chichibios_heron_leg',"Chichibio's Moonheron Leg",4) -nssm_register_eatcraftitems ('crocodile_tail','Crocodile Tail',3) -nssm_register_eatcraftitems ('roasted_crocodile_tail','Roasted Crocodile Tail',6) -nssm_register_eatcraftitems ('roasted_werewolf_leg','Roasted_Werewolf Leg',6) -nssm_register_eatcraftitems ('duck_legs','Duck Legs',1) -nssm_register_eatcraftitems ('roasted_duck_legs','Roasted Duck Leg',3) -nssm_register_eatcraftitems ('ant_leg','Ant Leg',-1) -nssm_register_eatcraftitems ('roasted_ant_leg','Roasted Ant Leg',4) -nssm_register_eatcraftitems ('spider_leg','Spider Leg',-1) -nssm_register_eatcraftitems ('roasted_spider_leg','Roasted Spider Leg',4) ---nssm_register_eatcraftitems ('brain','Brain',3) ---nssm_register_eatcraftitems ('roasted_brain','Roasted Brain',8) -nssm_register_eatcraftitems ('tentacle','Tentacle',2) -nssm_register_eatcraftitems ('roasted_tentacle','Roasted Tentacle',5) -nssm_register_eatcraftitems ('worm_flesh','Worm Flesh',-2) -nssm_register_eatcraftitems ('roasted_worm_flesh','Roasted Worm Flesh',4) -nssm_register_eatcraftitems ('amphibian_heart','Amphibian Heart',1) -nssm_register_eatcraftitems ('roasted_amphibian_heart','Roasted Amphibian Heart',8) -nssm_register_eatcraftitems ('raw_scrausics_wing','Raw Scrausics Wing',1) -nssm_register_eatcraftitems ('spicy_scrausics_wing','Spicy Scrausics Wing',6) -nssm_register_eatcraftitems ('phoenix_nuggets','Phoenix Nuggets',20) -nssm_register_eatcraftitems ('phoenix_tear','Phoenix Tear',20) -nssm_register_eatcraftitems ('frosted_amphibian_heart','Frosted Amphibian Heart',-1) -nssm_register_eatcraftitems ('surimi','Surimi',4) -nssm_register_eatcraftitems ('amphibian_ribs','Amphibian Ribs',2) -nssm_register_eatcraftitems ('roasted_amphibian_ribs','Roasted Amphibian Ribs',6) -nssm_register_eatcraftitems ('dolidrosaurus_fin','Dolidrosaurus Fin',-2) -nssm_register_eatcraftitems ('roasted_dolidrosaurus_fin','Roasted Dolidrosaurus Fin',4) -nssm_register_eatcraftitems ('larva_meat','Larva Meat',-1) -nssm_register_eatcraftitems ('larva_juice','Larva Juice',-3) -nssm_register_eatcraftitems ('larva_soup','Larva Soup',10) -nssm_register_eatcraftitems ('mantis_meat','Mantis Meat',1) -nssm_register_eatcraftitems ('roasted_mantis_meat','Roasted Mantis Meat',4) -nssm_register_eatcraftitems ('spider_meat','Spider Meat',-1) -nssm_register_eatcraftitems ('roasted_spider_meat','Roasted Spider Meat',3) -nssm_register_eatcraftitems ('silk_gland','Silk Gland',-1) -nssm_register_eatcraftitems ('roasted_silk_gland','Roasted Silk Gland',3) -nssm_register_eatcraftitems ('super_silk_gland','Super Silk Gland',-8) -nssm_register_eatcraftitems ('roasted_super_silk_gland','Roasted Super Silk Gland',2) +nssm:load("materials/craft_items.lua") --ore generation -minetest.register_ore({ - ore_type = "scatter", - ore = "nssm:modders_block", - wherein = "default:stone", - clust_scarcity = 50*50*50, - clust_num_ores = 1, - clust_size = 1, - y_min = -115, - y_max = -95, -}) - -for i=1,9 do - minetest.register_ore({ - ore_type = "scatter", - ore = "nssm:ant_dirt", - wherein = "default:cobble", - clust_scarcity = 1, - clust_num_ores = 1, - clust_size = 1, - y_min = -1, - y_max = 40, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "nssm:ant_dirt", - wherein = "default:mossycobble", - clust_scarcity = 1, - clust_num_ores = 1, - clust_size = 1, - y_min = -1000, - y_max = 40, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "nssm:ant_dirt", - wherein = "default:sandstonebrick", - clust_scarcity = 1, - clust_num_ores = 1, - clust_size = 1, - y_min = -1000, - y_max = 40, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "nssm:ant_dirt", - wherein = "stairs:stair_sandstonebrick", - clust_scarcity = 1, - clust_num_ores = 1, - clust_size = 1, - y_min = -1000, - y_max = 40, - }) - - minetest.register_ore({ - ore_type = "scatter", - ore = "nssm:ant_dirt", - wherein = "stairs:stair_cobble", - clust_scarcity = 1, - clust_num_ores = 1, - clust_size = 1, - y_min = -1000, - y_max = 40, - }) -end - -minetest.register_ore({ - ore_type = "scatter", - ore = "nssm:web", - wherein = "default:junglegrass", - clust_scarcity = 2*2*2, - clust_num_ores = 2, - clust_size = 2, - y_min = -20, - y_max = 200, - }) - -minetest.register_ore({ - ore_type = "scatter", - ore = "nssm:web", - wherein = "default:jungleleaves", - clust_scarcity = 4*4*4, - clust_num_ores = 5, - clust_size = 5, - y_min = -20, - y_max = 200, - } -) +nssm:load("materials/ores.lua") --nodes @@ -1475,33 +1265,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = 'nssm:energy_globe', - recipe = { - {'nssm:life_energy', 'nssm:life_energy', 'nssm:life_energy'}, - {'nssm:life_energy', 'nssm:life_energy', 'nssm:life_energy'}, - {'nssm:life_energy', 'nssm:life_energy', 'nssm:life_energy'}, - } -}) - -minetest.register_craft({ - output = 'nssm:great_energy_globe', - recipe = { - {'nssm:energy_globe', 'nssm:energy_globe', 'nssm:energy_globe'}, - {'nssm:energy_globe', 'nssm:energy_globe', 'nssm:energy_globe'}, - {'nssm:energy_globe', 'nssm:energy_globe', 'nssm:energy_globe'}, - } -}) - -minetest.register_craft({ - output = 'nssm:superior_energy_globe', - recipe = { - {'nssm:great_energy_globe', 'nssm:great_energy_globe', 'nssm:great_energy_globe'}, - {'nssm:great_energy_globe', 'nssm:great_energy_globe', 'nssm:great_energy_globe'}, - {'nssm:great_energy_globe', 'nssm:great_energy_globe', 'nssm:great_energy_globe'}, - } -}) - minetest.register_craft({ output = 'nssm:mese_egg', type = "shapeless", @@ -1514,24 +1277,6 @@ minetest.register_craft({ recipe = {'nssm:lava_titan_eye','nssm:tentacle_curly'} }) -minetest.register_craft({ - output = 'nssm:life_energy 9', - type = "shapeless", - recipe = {'nssm:energy_globe'} -}) - -minetest.register_craft({ - output = 'nssm:energy_globe 9', - type = "shapeless", - recipe = {'nssm:great_energy_globe'} -}) - -minetest.register_craft({ - output = 'nssm:great_energy_globe 9', - type = "shapeless", - recipe = {'nssm:superior_energy_globe'} -}) - --[[ minetest.register_craft({ output = 'nssm:masticone_skull', @@ -1979,67 +1724,3 @@ minetest.register_abm({ end }) ---Eggs recipes - -minetest.register_craft({ - output = 'nssm:duck', - recipe = { - {'', 'nssm:duck_beak', ''}, - {'nssm:duck_feather', 'nssm:energy_globe', 'nssm:duck_feather'}, - {'nssm:duck_legs', 'nssm:duck_feather', 'nssm:duck_legs'}, - } -}) - -minetest.register_craft({ - output = 'nssm:flying_duck', - recipe = { - {'nssm:duck_feather', 'nssm:duck_beak', 'nssm:duck_feather'}, - {'nssm:duck_feather', 'nssm:energy_globe', 'nssm:duck_feather'}, - {'nssm:duck_legs', 'nssm:duck_feather', 'nssm:duck_legs'}, - } -}) - -minetest.register_craft({ - output = 'nssm:enderduck', - recipe = { - {'nssm:black_duck_feather', 'nssm:duck_beak', 'nssm:black_duck_feather'}, - {'nssm:duck_legs', 'nssm:energy_globe', 'nssm:duck_legs'}, - {'nssm:duck_legs', '', 'nssm:duck_legs'}, - } -}) - -minetest.register_craft({ - output = 'nssm:swimming_duck', - recipe = { - {'nssm:duck_feather', 'nssm:duck_beak', 'nssm:duck_feather'}, - {'nssm:duck_legs', 'nssm:energy_globe', 'nssm:duck_legs'}, - {'nssm:duck_feather', 'nssm:duck_feather', 'nssm:duck_feather'}, - } -}) - -minetest.register_craft({ - output = 'nssm:spiderduck', - recipe = { - {'nssm:duck_legs', 'nssm:duck_beak', 'nssm:duck_legs'}, - {'nssm:black_duck_feather', 'nssm:energy_globe', 'nssm:black_duck_feather'}, - {'nssm:duck_legs', 'nssm:black_duck_feather', 'nssm:duck_legs'}, - } -}) - -minetest.register_craft({ - output = 'nssm:duckking_egg', - recipe = { - {'', 'nssm:helmet_crown', ''}, - {'nssm:duck_feather', 'nssm:duck_beak', 'nssm:duck_feather'}, - {'nssm:duck_legs', 'nssm:superior_energy_globe', 'nssm:duck_legs'}, - } -}) - -minetest.register_craft({ - output = 'nssm:bloco', - recipe = { - {'nssm:bloco_skin', 'nssm:bloco_skin', 'nssm:bloco_skin'}, - {'nssm:bloco_skin', 'nssm:energy_globe', 'nssm:bloco_skin'}, - {'nssm:bloco_skin', 'nssm:bloco_skin', 'nssm:bloco_skin'}, - } -}) diff --git a/materials/ores.lua b/materials/ores.lua new file mode 100644 index 0000000..feff09d --- /dev/null +++ b/materials/ores.lua @@ -0,0 +1,91 @@ +minetest.register_ore({ + ore_type = "scatter", + ore = "nssm:modders_block", + wherein = "default:stone", + clust_scarcity = 50*50*50, + clust_num_ores = 1, + clust_size = 1, + y_min = -115, + y_max = -95, +}) + +for i=1,9 do + minetest.register_ore({ + ore_type = "scatter", + ore = "nssm:ant_dirt", + wherein = "default:cobble", + clust_scarcity = 1, + clust_num_ores = 1, + clust_size = 1, + y_min = -1, + y_max = 40, + }) + + minetest.register_ore({ + ore_type = "scatter", + ore = "nssm:ant_dirt", + wherein = "default:mossycobble", + clust_scarcity = 1, + clust_num_ores = 1, + clust_size = 1, + y_min = -1000, + y_max = 40, + }) + + minetest.register_ore({ + ore_type = "scatter", + ore = "nssm:ant_dirt", + wherein = "default:sandstonebrick", + clust_scarcity = 1, + clust_num_ores = 1, + clust_size = 1, + y_min = -1000, + y_max = 40, + }) + + minetest.register_ore({ + ore_type = "scatter", + ore = "nssm:ant_dirt", + wherein = "stairs:stair_sandstonebrick", + clust_scarcity = 1, + clust_num_ores = 1, + clust_size = 1, + y_min = -1000, + y_max = 40, + }) + + minetest.register_ore({ + ore_type = "scatter", + ore = "nssm:ant_dirt", + wherein = "stairs:stair_cobble", + clust_scarcity = 1, + clust_num_ores = 1, + clust_size = 1, + y_min = -1000, + y_max = 40, + }) +end + +minetest.register_ore({ + ore_type = "scatter", + ore = "nssm:web", + wherein = "default:junglegrass", + clust_scarcity = 2*2*2, + clust_num_ores = 2, + clust_size = 2, + y_min = -20, + y_max = 200, + }) + +minetest.register_ore({ + ore_type = "scatter", + ore = "nssm:web", + wherein = "default:jungleleaves", + clust_scarcity = 4*4*4, + clust_num_ores = 5, + clust_size = 5, + y_min = -20, + y_max = 200, + } +) + diff --git a/mobs/all_mobs.lua b/mobs/all_mobs.lua new file mode 100644 index 0000000..7390630 --- /dev/null +++ b/mobs/all_mobs.lua @@ -0,0 +1,55 @@ +nssm:load("mobs/ant_queen.lua") +nssm:load("mobs/ant_soldier.lua") +nssm:load("mobs/ant_worker.lua") +nssm:load("mobs/black_widow.lua") +nssm:load("mobs/bloco.lua") +nssm:load("mobs/crab.lua") +nssm:load("mobs/crocodile.lua") +nssm:load("mobs/daddy_long_legs.lua") +nssm:load("mobs/dolidrosaurus.lua") +nssm:load("mobs/duck.lua") +nssm:load("mobs/duckking.lua") +nssm:load("mobs/echidna.lua") +nssm:load("mobs/enderduck.lua") +nssm:load("mobs/flying_duck.lua") +nssm:load("mobs/felucco.lua") +nssm:load("mobs/giant_sandworm.lua") +nssm:load("mobs/icelamander.lua") +nssm:load("mobs/icesnake.lua") +nssm:load("mobs/kraken.lua") +nssm:load("mobs/larva.lua") +nssm:load("mobs/lava_titan.lua") +nssm:load("mobs/manticore.lua") +nssm:load("mobs/mantis_beast.lua") +nssm:load("mobs/mantis.lua") +nssm:load("mobs/masticone.lua") +nssm:load("mobs/moonheron.lua") +nssm:load("mobs/mordain.lua") +nssm:load("mobs/morgre.lua") +nssm:load("mobs/morde.lua") +nssm:load("mobs/morgut.lua") +nssm:load("mobs/morlu.lua") +nssm:load("mobs/morvalar.lua") +nssm:load("mobs/morvy.lua") +nssm:load("mobs/morwa.lua") +nssm:load("mobs/night_master.lua") +nssm:load("mobs/octopus.lua") +nssm:load("mobs/phoenix.lua") +nssm:load("mobs/pumpboom.lua") +nssm:load("mobs/pumpking.lua") +nssm:load("mobs/sandworm.lua") +nssm:load("mobs/scrausics.lua") +nssm:load("mobs/sand_bloco.lua") +nssm:load("mobs/signosigno.lua") +nssm:load("mobs/snow_biter.lua") +nssm:load("mobs/spiderduck.lua") +nssm:load("mobs/stone_eater.lua") +nssm:load("mobs/swimming_duck.lua") +nssm:load("mobs/tarantula.lua") +nssm:load("mobs/uloboros.lua") +nssm:load("mobs/werewolf.lua") +nssm:load("mobs/white_werewolf.lua") + +--Final Boss +nssm:load("mobs/mese_dragon.lua") + diff --git a/spawn.lua b/mobs/spawn.lua similarity index 100% rename from spawn.lua rename to mobs/spawn.lua diff --git a/todo.txt b/todo.txt index 793b7b1..d07e6cd 100644 --- a/todo.txt +++ b/todo.txt @@ -1,7 +1,22 @@ +Mobs bugs + changes + * Check why ice snake and snow biter are not placing ice * Check why lava titan is not placing lava +* Ensure the masticone can be defeated by just klilling (use spawn 5, chance 1/6) + +API refactoring + * Check difference between putting_ability and midas_ability * Rework the virulence/cryosave/affectbones safeguards -* Make `_egg` marker consistent (probably just remove the `_egg` markers altogether?) -* Ensure the masticone can be defeated by just klilling (use spawn 5, chance 1/6) -* Split materials.lua into noddes, items, abms +* Split materials.lua into nodes, items, abms + * in-progress + * did some further splitting to improve maintainability + +Cleanup + misc enhancements + +* Make `_egg` marker consistent + * Check if mobs are ever registered as items + * Perhaps remove `_egg` designations altogether + * Perhaps remove duck egg building recipes +* Implement speed on eating energy +* Make brains drop from something diff --git a/nssm_armor.lua b/tools/armor.lua similarity index 100% rename from nssm_armor.lua rename to tools/armor.lua diff --git a/rainbow_staff.lua b/tools/rainbow_staff.lua similarity index 91% rename from rainbow_staff.lua rename to tools/rainbow_staff.lua index 8568cf5..cab5dda 100644 --- a/rainbow_staff.lua +++ b/tools/rainbow_staff.lua @@ -3,6 +3,10 @@ -- This tends to be problematic on servers, so is replaced with a powerful tool instead -- if classic rainbow staff is not enabled +-- How long the rainbow generating entity should remain in existence +-- Used to be 10, really should not last so long, given that it adds rainbow on every server step... +local max_rainbow_time = 1 + if nssm.classic_rainbow_staff then minetest.register_entity("nssm:rainbow", { textures = {"transparent.png"}, @@ -16,7 +20,7 @@ if nssm.classic_rainbow_staff then return end - if os.time() - self.timer > 10 then + if os.time() - self.timer > max_rainbow_time then minetest.set_node(pos, {name="nyancat:nyancat"}) self.object:remove() end diff --git a/nssm_spears.lua b/tools/spears.lua similarity index 100% rename from nssm_spears.lua rename to tools/spears.lua diff --git a/nssm_weapons.lua b/tools/weapons.lua similarity index 100% rename from nssm_weapons.lua rename to tools/weapons.lua