Compare commits

...

41 Commits

Author SHA1 Message Date
b7a011b7b8 sinc upstream info, enable destruction by default 2023-06-05 22:31:47 -04:00
49b3e9c0b4 20230604 release, sync with tenplus1 last changes 2023-06-05 22:26:21 -04:00
c346a34a29 Readme improvements 2023-06-05 22:20:50 -04:00
6f9c15bedb dont relly on the legacy layer of default mod, detect if player api is present
* this mod was using the legacy.lua extension of default mod,
  with this patch we can avout the player_api or use it if present
2023-06-05 22:19:38 -04:00
2255cdd34b remove any conflicts with lib_mount
* backported e370819ff5
2023-06-05 14:25:46 -04:00
c5e2f9b2cb fix fox behaviour, fix water dragon aim
* backported b76fac199a
2023-06-05 13:13:10 -04:00
c128c1d895 minor improve to readme 2023-06-05 10:20:21 -04:00
bbe37a1d9c fix wrong local non local variable for function scope only
* backported from 15a6083540
2023-06-05 10:11:10 -04:00
da5228f37f Improve description for minenux MOBS suite 2022-06-14 13:21:38 -04:00
94d07a3462 document the configurations 2022-01-25 11:50:28 -04:00
804bde5ad8 do not load twice the piloting code, dont override the dragon object
* this are in sync with tenplus1 but with fix due piloting must be before normal dragon
* so dont override the already set dragon object used in normal dragon
2022-01-25 11:37:03 -04:00
a61d81c2f1 print logs about configuration and mod loading 2022-01-25 11:26:23 -04:00
be54fbcc0c fix conditionals about configurations of settings of mod
* fix conditionals of configurations to be more viable compat
* fix miscpelled variable so now it works
* use more simple conditional when loading
* closed https://codeberg.org/minenux/minetest-mod-mobs_doomed/issues/8
2022-01-25 11:24:10 -04:00
eda954a04b fix configurable nyancat horrible flying pig with namespaced change
* complete the commit from e114cb543fc0e32f848d615c407764167abda833
* finish the backported confifurable nyancat the horrible flying pig
* backported from 74fc8110c1
* closed https://codeberg.org/minenux/minetest-mod-mobs_doomed/issues/8
2022-01-25 10:47:22 -04:00
5ff7d64b48 workaround for lib_mount copy api on commented line set_yaw
* documented at https://notabug.org/TenPlus1/dmobs/issues/11#issuecomment-29714
* we do not need all the current lib_mount.attach features, so ony change deprecated
* a (math.pi/2) around parenthesis do be sure of the values
2022-01-25 10:05:05 -04:00
ffe3a46f82 due is a cross namespace usage, rollback commit 9b0a24bee78ea9242715d4e18c53fdf0898b2625
* due the namespace is used a pre ":" to be able to use another node/entity
2022-01-25 09:50:25 -04:00
e114cb543f backported confifurable nyancat the horrible flying pig
* backported from 74fc8110c1
* closed https://codeberg.org/minenux/minetest-mod-mobs_doomed/issues/8
2022-01-24 23:18:07 -04:00
971ba0f058 added description 2022-01-24 18:08:08 -04:00
e5f3a9575d fix for deprecatede api call of get_look_yaw with new get_look_horizontal
* fixed https://codeberg.org/minenux/minetest-mod-mobs_doomed/issues/9
2022-01-24 18:06:36 -04:00
e8c5f23477 more nil pos checks 2022-01-24 18:06:20 -04:00
9792774d85 added owl drops from tenplus1 fork 2022-01-24 18:05:41 -04:00
dab8436407 fix wrong bones drop management 2022-01-24 18:05:08 -04:00
6f540cdb76 sync from tenplush1 fire damage and sync mobs code
* sync fire damage values
* check positions and code mobs
2022-01-24 18:04:20 -04:00
9e57af5f32 fix nil check pos for wasp 2022-01-24 17:59:11 -04:00
9b0a24bee7 fix wrong cited at saddle.lua 2022-01-24 17:58:06 -04:00
ea67a37868 message notes about the name of the mod, namesapaced changed information 2022-01-24 15:52:16 -04:00
19d207f8e4 changing namesspace from dmobs to mobs_doomed
* fix missing coloms and brackleds in follow and drops of mobs
* change name of mod to mobs_doomed in all files
* an older definition still references to nyancat so make a symlink
2022-01-24 15:32:17 -04:00
ab1b5877c1 added tech notes and nodes names for README information 2022-01-24 12:19:50 -04:00
2524ab1b9d added settings types for configuration over gui 2022-01-24 12:19:04 -04:00
3b188e2b8e check for current player status on each player reference
* fix related to compatibilit with minetest 0.4.17 and 5.0.0/5.2.0 for player object bug
* https://github.com/minetest/minetest#8452 reported but never solved property
2022-01-24 10:32:51 -04:00
1b9488ef82 Merge branch 'master-imprvements' into main: fix depends, add fire damage
* integrated https://github.com/minetest-mobs-mods/dmobs/pull/9 into main
* also merge fire_damage to mobs,
  backported from tenplus1 fork d44a25a6f4
* missing depends on mobs_animal due rats and fox
* missing forced depends on farming https://notabug.org/TenPlus1/dmobs/issues/9
* there's too many references on so must be forced
* fix missing depends on bones due skeleton
* add missing depends on mod.conf
* also this PR added the merging of branch 'master-own-tameable' into master-imprvements
  cherry picked from Make owl tamable BlockySurvival/mobs_animal_pack#6
* not change namespace neither idents YET
2022-01-24 10:24:38 -04:00
4a1b534470 Merge branch 'master-own-tameable' into main: owl are tameable now
* this PR added the merging of branch 'master-own-tameable' into master-imprvements
  cherry picked from Make owl tamable BlockySurvival/mobs_animal_pack#6
* not change namespace neither idents YET
2022-01-24 10:15:10 -04:00
ed69b46302 fix missing depends bones due skeleton, mobs_animal and fix forced ones due farming
* missing depends on mobs_animal due rats and fox
* missing forced depends on farming https://notabug.org/TenPlus1/dmobs/issues/9
  there's too many references on so must be forced
* fix missing depends on bones due skeleton
* add missing depends on mod.conf
2022-01-24 10:08:27 -04:00
73fef41a81 fix tameable and drops for logical mobs animals
* reported at the fork https://notabug.org/TenPlus1/dmobs/issues/6
* fix the follows tameable for almost logical animals
* fix the drops of animals that are meal when dies
* by example also elephant drops grass ? seriously..
* do not force forcing farming mod due commit about drop items
* do not force mobs_animals neither so detect the mod if any
2022-01-24 09:46:49 -04:00
2aa8bc0304 Make owl tamable, with compatibility and right code checks
* Merge branch 'master-own-tameable' into master-imprvements
* cherry picked from BlockySurvival/mobs_animal_pack#6
* not change namespace neither idents
2022-01-24 08:30:08 -04:00
ce957e321b added fire_damage to mobs, backported from tenplus1 fork
* backported from d44a25a6f4
2022-01-21 13:49:28 -04:00
72bb99a183 added fire_damage to mobs, backported from tenplus1 fork
* backported from d44a25a6f4
2022-01-21 13:48:05 -04:00
97c29052fd backported nil check from tenplus1 fork
* take notice from https://forum.minetest.net/viewtopic.php?p=389433#p389433
* also check previous error
2022-01-21 13:23:46 -04:00
eedef229d7 improve readme and information 2022-01-21 13:11:33 -04:00
c85fa38193 Make owl tamable, with compatibility and right code checks
* cherry picked from https://github.com/BlockySurvival/mobs_animal_pack/pull/6
* not change namespace neither idents
2022-01-21 12:46:30 -04:00
f10866a183 Make owl tamable, with compatibility and right code checks
* cherry picked from https://github.com/BlockySurvival/mobs_animal_pack/pull/6
* not change namespace neither idents
2022-01-21 12:37:52 -04:00
52 changed files with 767 additions and 440 deletions

View File

@ -1,3 +1,15 @@
* 2023-06-04 : mckaygerhard
* dont relly on the legacy layer of default mod, detect if player api is present
* remove any conflicts with lib_mount
* fix fox behaviour, fix water dragon aim
* fix wrong local non local variable for function scope only
* sync with tenplus1 last changes, backport fixeds
* 2022-01-23 : mckaygerhard
* change namespace from dmobs to mobs_doomed
* fixed depends
* fixed damage by fire
* improvements over readme and information, added screenshot
* Fixed a few nil error bugs from tenplus1 and more checks
* 2021-03-30 : Poikilos
* Add more details to the panda texture (Change every pixel give or take a few) while reducing the number of pixels.
* 2019-07-31 : Grossam

128
README.md
View File

@ -1,6 +1,128 @@
# D00Med's Mobs
minetest mod mobs D00Med
=========================
MOBS for dragons, pandas, orcs, ogres, fox, owl, and many more animals that can be loved or enemies!
Information
-----------
Some of those mobs are already in others mods.. like Dragon (nether), wasp (nssm/mobs_monster)
Dragon gems are dropped by the "boss" dragons ie: the wyvern, the water dragon, and the great dragon(red+black).
If you see a wasp, bee careful because it wasp probably spawned by the "king of sting", a huge wasp that will make nests and spawn more wasps. Golems sometimes drop their heads. you can use these to make a friendly golem, if you place one on top of two stone blocks. Foxes are sneaky, they will dig through fences if you try to trap them.
![](screenshot.png)
You must first place an egg in a "nest" made of lava, obsidian, cactus, or ice.
Then you can right click the egg with a gem(the purple one), and after a while the egg will change color. Then you have to right click it with the gem that matches the type of dragon in the egg.
* Red dragon - Lava nest - Fire gem
* Green dragon - Cactus nest - Poison gem
* Blue dragon - Ice nest - Ice gem
* Black dragon - Obsidian nest - Lightning gem
The nests are just the nodes above, surrounding the egg on all sides and underneath.
To get tame dragons you need to hatch them from eggs.
Technical info
--------------
This mod is named `mobs_doomed` in this branch, and includes all the changes from the tenplus1 fork and
some improvements fixeds from mckaygerhard namespaced changes. Its the same from `dmobs` but plus all the
recent changes and also fixeds, with renamed namespace to be named as `mobs_doomed`.
This means its compatible with all engine releases of minetest since 0.4 to 5.5
and maybe latest.
> **Warning** **This mod will added 10 megs of more media to yuor server game so clients on mobile may sufering**
Please for more technical info about dragons read the [dragons.md](dragons.md) file.
There's an api for vehicles and mount, it forked little **lib_mount lua** api so can be outdated in future.
Models sources are in [projects](projects) directory of course in GIMP format.
### Depends
* default
* mobs
* wool
* farming
* bones
* mobs_animal (optional)
* ethereal (optional)
* caverealms (optional)
* player_api (this depends if you use older game base)
### Download
This is a fork that tries to rename the namespace to `mobs_doomed` from `dmobs` o be in sync with mobs api from tenplus1.
to use the older named mod just download it but before commit https://codeberg.org/minenux/minetest-mod-mobs_doomed/commit/7910cbf5dd9ce97c72c056ee656966b32cc1b574 .
To use the `mobs_doomed` (that is same as tenplus1 dmobs and includes the compatiblity from original one) just
download this current branch and be sure to named the directory mod as `mobs_doomed`.
It also try to be compatible with both 0.4 and 5.2 engines of minetest for minenux games. This fork can be downloaded
from https://codeberg.org/minenux/minetest-mod-mobs_doomed the original one is at https://github.com/minetest-mobs-mods/dmobs
### Configurations
| Configuration variable | Description | type | default |
| ----------------------- | ------------------------------ | ----- | ----- |
| mobs_doomed.regulars | Enable most common new animals | bool | true |
| mobs_doomed.eggtimer | Timer for the egg mechanics | int | 100 |
| mobs_doomed.destructive | Fire balls will be destructive | bool | true |
| mobs_doomed.dragons | If disabled only a common dragon will be spawned | bool | true |
| mobs_doomed.allow_nyanc | Enable the stupid NyanCat mob fliying pig | bool | false |
### mobs nodes and names
Whit more chance, more rare.
There's some settings, if `mobs_doomed.regulars` are enabled then those monster will be available:
| tech name | type | chance | notes | spawn nodes |
| -------------- | ----- | ------- | ---------- | --------------------------- |
| mobs_doomed:nyan | mobs | 300 | friendly | air or ethereal:mushroom/nyanland:meseleaves |
| mobs_doomed:hedgehog | mobs | 8000 | friendly | group:flora, ethereal:prairie_dirt |
| mobs_doomed:whale | mobs | 16000 | friendly | default:water_source |
| mobs_doomed:owl | mobs | 16000 | friendly | group:tree |
| mobs_doomed:gnorm | npc | 16000 | friendly | default:dirt_with_grass, ethereal:bamboo_dirt |
| mobs_doomed:tortoise | mobs | 8000 | friendly | default:water_source, group:sand |
| mobs_doomed:elephan | mobs | 16000 | friendly | default:dirt_with_dry_grass, ethereal:grove_dirt |
| mobs_doomed:pig | mobs | 32000 | friendly | default:dirt_with_grass, ethereal:prairie_dirt, nyanland:cloudstone |
| mobs_doomed:panda | mobs | 32000 | friendly | default:dirt_with_grass, ethereal:bamboo_dirt |
| mobs_doomed:waps | mobs | 16000 | baddly | air/leaves or mobs_doomed:hive |
| mobs_doomed:waps_leader | mobs | 64000 | baddly | air/leaves or mobs_doomed:hive |
| mobs_doomed:golem | mobs | 16000 | baddly | group:stone |
| mobs_doomed:pig_evil | mobs | 64000 | baddly | group:leave, ethereal:bamboo_leaves |
| mobs_doomed:fox | mobs | 32000 | baddly | group:leaves |
| mobs_doomed:rat | mobs | 32000 | baddly | group:stone, group:sand |
| mobs_doomed:treeman | mobs | 16000 | baddly | group:leaves |
| mobs_doomed:skeleton | mobs | 16000 | baddly | group:stone, caverealms:stone_with_salt, default:desert_sand |
| mobs_doomed:badger | mobs | 8000 | friendly | |
There's some settings, if `mobs_doomed.dragon`, orcs and ogres spawn more often when dragons are disabled:
| tech name | type | chance | notes | spawn nodes |
| -------------- | ----- | ------- | ---------- | --------------------------- |
| mobs_doomed:orc | mobs | 8000/2000 | baddly | default:snow_block, default:permafrost_with_moss, default:permafrost_with_stone, ethereal:cold_dirt |
| mobs_doomed:ogre | mobs | 16000/32000 | baddly | default:snow_block, default:permafrost_with_moss, default:permafrost_with_stone, ethereal:cold_dirt |
| mobs_doomed:dragon_great_tame | npc | 30000 | very rare, fire/lava | ethereal:jungle_dirt,default:jungleleaves,default:lava_source,caverealms:glow_mese, caverealms:glow_amethyst,caverealms:glow_crystal,caverealms:glow_emerald,cavereals:glow_ruby
| mobs_doomed:dragon | mobs | 16000 | always enabled | group:leaves |
| mobs_doomed:waterdragon | mobs | 24000 | rare, ice/water | default:water_source |
| mobs_doomed:dragon1 | mobs | 24000 | rare, fire | ethereal:fiery_dirt, default:desert_sand |
| mobs_doomed:dragon2 | mobs | 24000 | rare, thunder/fire | ethereal:cristal_dirt, default:dirt_with_dry_grass |
| mobs_doomed:dragon3 | mobs | 30000 | rare, poison | ethereal:jungle_dirt, default:jungleleaves |
| mobs_doomed:dragon4 | mobs | 24000 | rare, ice/water | default:snow_block, default:permafrost_with_moss, default:permafrost_with_stone, ethereal:cold_dirt |
| mobs_doomed:wyvern | mobs | 32000 | rare, dog attack | group:leaves |
| mobs_doomed:dragon_great | mobs | 30000 | very rare, fire/lava | ethereal:jungle_dirt,default:jungleleaves,default:lava_source,caverealms:glow_mese, caverealms:glow_amethyst,caverealms:glow_crystal,caverealms:glow_emerald,cavereals:glow_ruby |
## Authors & License
Thanks to D00Med, TenPlus1, blert2112, Grossam and taikedz
## Authors & License
- See license.txt.
See [license.txt](license.txt)

217
api.lua
View File

@ -23,7 +23,7 @@
--from lib_mount (required by new functions)
local p_api = minetest.get_modpath("player_api")
local mobs_redo = false
if mobs.mod and mobs.mod == "redo" then
mobs_redo = true
@ -43,11 +43,12 @@ local function force_detach(player)
end
player:set_detach()
end
default.player_attached[player:get_player_name()] = false
if p_api then player_api.player_attached[player:get_player_name()] = false
else default.player_attached[player:get_player_name()] = false end
player:set_eye_offset({x=0, y=0, z=0}, {x=0, y=0, z=0})
end
function object_attach(entity, player, attach_at, eye_offset)
function mobs_doomed.object_attach(entity, player, attach_at, eye_offset)
eye_offset = eye_offset or {x=0, y=0, z=0}
force_detach(player)
entity.driver = player
@ -56,18 +57,27 @@ function object_attach(entity, player, attach_at, eye_offset)
player:set_properties({visual_size = {x=1, y=1}})
player:set_eye_offset(eye_offset, {x=0, y=0, z=0})
default.player_attached[player:get_player_name()] = true
if p_api then player_api.player_attached[player:get_player_name()] = true
else default.player_attached[player:get_player_name()] = true end
minetest.after(0.2, function()
default.player_set_animation(player, "sit" , 30)
if p_api then player_api.set_animation(player, "sit" , 30)
else default.player_set_animation(player, "sit" , 30) end
end)
entity.object:set_yaw(player:get_look_yaw() - math.pi / 2)
--entity.object:set_yaw(player:get_look_yaw() - math.pi / 2)
entity.object:set_yaw(player:get_look_horizontal() - (math.pi/2))
end
function object_detach(entity, player, offset)
function mobs_doomed.object_detach(entity, player, offset)
entity.driver = nil
player:set_detach()
default.player_attached[player:get_player_name()] = false
default.player_set_animation(player, "stand" , 30)
if p_api then
player_api.player_attached[player:get_player_name()] = false
player_api.set_animation(player, "stand" , 30)
else
default.player_attached[player:get_player_name()] = false
default.player_set_animation(player, "stand" , 30)
end
player:set_eye_offset({x=0, y=0, z=0}, {x=0, y=0, z=0})
local pos = player:get_pos()
pos = {x = pos.x + offset.x, y = pos.y + 0.2 + offset.y, z = pos.z + offset.z}
@ -79,48 +89,60 @@ end
minetest.register_on_leaveplayer(function(player)
force_detach(player)
end)
minetest.register_on_shutdown(function()
local players = minetest.get_connected_players()
for i = 1,#players do
force_detach(players[i])
if player then
force_detach(player)
end
end)
minetest.register_on_shutdown(function()
local playerc
local players = minetest.get_connected_players()
for i = 1,#players do
playerc = players[i]
if playerc then
force_detach(players[i])
end
playerc = nil
end
end)
minetest.register_on_dieplayer(function(player)
force_detach(player)
return true
if player then
force_detach(player)
return true
end
end)
-------------------------------------------------------------------------------
--mixed code(from this mod and lib_mount)
local rotview = math.pi / 2
function object_drive(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim, jumps)
function mobs_doomed.object_drive(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim, jumps)
local ctrl = entity.driver:get_player_control()
local dir = entity.driver:get_look_dir();
local vec_forward = {x=dir.x*speed,y=-2,z=dir.z*speed}
local vec_backward = {x=-dir.x*speed,y=-2,z=-dir.z*speed}
local vec_stop = {x=0,y=0,z=0}
local yaw = entity.driver:get_look_yaw();
--local yaw = entity.driver:get_look_yaw()
local yaw = entity.driver:get_look_horizontal()
if ctrl.up then
entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:set_yaw(yaw+math.pi+math.pi/2) -- check math.pi+math.pi/2 check if the order of the signs is correct
entity.object:set_velocity(vec_forward)
elseif ctrl.down then
entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:set_yaw(yaw+math.pi+math.pi/2) -- check math.pi+math.pi/2 check if the order of the signs is correct
entity.object:set_velocity(vec_backward)
elseif not ctrl.down or ctrl.up then
entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:set_yaw(yaw+math.pi+math.pi/2) -- check math.pi+math.pi/2 check if the order of the signs is correct
entity.object:set_velocity(vec_stop)
end
if ctrl.sneak and ctrl.LMB and shoots then
local pos = entity.object:get_pos()
local obj = minetest.add_entity({x=pos.x+0+dir.x*2,y=pos.y+1.5+dir.y,z=pos.z+0+dir.z*2}, arrow)
local vec = {x=dir.x*6,y=dir.y*6,z=dir.z*6}
local yaw = entity.driver:get_look_yaw();
obj:set_yaw(yaw+math.pi/2)
local yaw = entity.driver:get_look_horizontal() + rotview -- we have math.pi/2 but later yaw sumarized again in next line
obj:set_yaw(yaw+math.pi/2) -- check math.pi+math.pi/2 check if the order of the signs is correct
obj:set_velocity(vec)
end
--lib_mount animation
@ -149,7 +171,10 @@ function object_drive(entity, dtime, speed, shoots, arrow, moving_anim, stand_an
-- end
end
function object_fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim)
function mobs_doomed.object_fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim)
if entity and not entity.driver:get_look_dir() then return end
local ctrl = entity.driver:get_player_control()
local velo = entity.object:get_velocity()
local dir = entity.driver:get_look_dir();
@ -157,7 +182,7 @@ function object_fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim
local vec_backward = {x=-dir.x*speed,y=dir.y*speed+2,z=-dir.z*speed}
local vec_rise = {x=velo.x,y=velo.y+0.2,z=velo.z}
local vec_stop = {x=0,y=-0.2,z=0}
local yaw = entity.driver:get_look_yaw();
local yaw = entity.driver:get_look_horizontal() + rotview
local pos = entity.object:get_pos()
local node = minetest.get_node(pos).name
@ -166,25 +191,26 @@ function object_fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim
-- entity.object:set_velocity({x=velo.x*0.5, y=velo.y*0.5, z=velo.z*0.5})
-- end
if ctrl.up then
entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:set_yaw(yaw+math.pi+math.pi/2) -- check math.pi+math.pi/2 check if the order of the signs is correct
entity.object:set_velocity(vec_forward)
elseif ctrl.down then
entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:set_yaw(yaw+math.pi+math.pi/2) -- check math.pi+math.pi/2 check if the order of the signs is correct
entity.object:set_velocity(vec_backward)
elseif ctrl.jump then
entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:set_yaw(yaw+math.pi+math.pi/2) -- check math.pi+math.pi/2 check if the order of the signs is correct
entity.object:set_velocity(vec_rise)
elseif not ctrl.down or ctrl.up or ctrl.jump then
entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:set_yaw(yaw+math.pi+math.pi/2) -- check math.pi+math.pi/2 check if the order of the signs is correct
entity.object:set_velocity(vec_stop)
end
if ctrl.aux1 and shoots and not entity.loaded then
local pos = entity.object:get_pos()
local obj = minetest.add_entity({x=pos.x+0+dir.x*2.5,y=pos.y+1.5+dir.y,z=pos.z+0+dir.z*2.5}, arrow)
local vec = vector.multiply(dir, 12)
local yaw = entity.driver:get_look_yaw();
--local yaw = entity.driver:get_look_yaw()
local yaw = entity.driver:get_look_horizontal()
entity.loaded = true
obj:set_yaw(yaw+math.pi/2)
obj:set_yaw(yaw+math.pi/2) -- check math.pi+math.pi/2 check if the order of the signs is correct
obj:set_velocity(vec)
local object = obj:get_luaentity()
object.launcher = entity.driver
@ -232,128 +258,3 @@ local function get_v(v)
return math.sqrt(v.x ^ 2 + v.z ^ 2)
end
lib_mount = {}
function lib_mount.attach(entity, player, attach_at, eye_offset)
eye_offset = eye_offset or {x=0, y=0, z=0}
force_detach(player)
entity.driver = player
player:set_attach(entity.object, "", attach_at, {x=0, y=0, z=0})
player:set_properties({visual_size = {x=1, y=1}})
player:set_eye_offset(eye_offset, {x=0, y=0, z=0})
default.player_attached[player:get_player_name()] = true
minetest.after(0.2, function()
default.player_set_animation(player, "sit" , 30)
end)
entity.object:set_yaw(player:get_look_yaw() - math.pi / 2)
end
function lib_mount.detach(entity, player, offset)
if entity ~= nil then entity.driver = nil end
player:set_detach()
default.player_attached[player:get_player_name()] = false
default.player_set_animation(player, "stand" , 30)
player:set_eye_offset({x=0, y=0, z=0}, {x=0, y=0, z=0})
local pos = player:get_pos()
pos = {x = pos.x + offset.x, y = pos.y + 0.2 + offset.y, z = pos.z + offset.z}
minetest.after(0.1, function()
player:set_pos(pos)
end)
end
function lib_mount.drive(entity, dtime, moving_anim, stand_anim, can_fly)
entity.v = get_v(entity.object:get_velocity()) * get_sign(entity.v)
local ctrl = entity.driver:get_player_control()
local yaw = entity.object:get_yaw()
if ctrl.up then
entity.v = entity.v + 0.1
elseif ctrl.down then
entity.v = entity.v - 0.1
end
if ctrl.left then
if entity.v < 0 then
entity.object:set_yaw(yaw - (1 + dtime) * 0.03)
else
entity.object:set_yaw(yaw + (1 + dtime) * 0.03)
end
elseif ctrl.right then
if entity.v < 0 then
entity.object:set_yaw(yaw + (1 + dtime) * 0.03)
else
entity.object:set_yaw(yaw - (1 + dtime) * 0.03)
end
end
local velo = entity.object:get_velocity()
if entity.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then
if stand_anim and stand_anim ~= nil and mobs_redo == true then
mobs:set_animation(entity, stand_anim)
end
entity.object:set_pos(entity.object:get_pos())
return
end
if moving_anim and moving_anim ~= nil and mobs_redo == true then
mobs:set_animation(entity, moving_anim)
end
local s = get_sign(entity.v)
entity.v = entity.v - 0.02 * s
if s ~= get_sign(entity.v) then
entity.object:set_velocity({x = 0, y = 0, z = 0})
entity.v = 0
return
end
if math.abs(entity.v) > 5 then
entity.v = 5 * get_sign(entity.v)
end
local p = entity.object:get_pos()
p.y = p.y - 0.5
local new_velo = {x = 0, y = 0, z = 0}
local new_acce = {x = 0, y = 0, z = 0}
if not is_group(p, "crumbly") then
local nodedef = minetest.registered_nodes[minetest.get_node(p).name]
if (not nodedef) or nodedef.walkable then
entity.v = 0
new_acce = {x = 0, y = 1, z = 0}
else
new_acce = {x = 0, y = -9.8, z = 0}
end
new_velo = get_velocity(entity.v, entity.object:get_yaw(),
entity.object:get_velocity().y)
entity.object:set_pos(entity.object:get_pos())
else
p.y = p.y + 1
if is_group(p, "crumbly") then
local y = entity.object:get_velocity().y
if y >= 5 then
y = 5
elseif y < 0 then
new_acce = {x = 0, y = 20, z = 0}
else
new_acce = {x = 0, y = 5, z = 0}
end
new_velo = get_velocity(entity.v, entity.object:get_yaw(), y)
entity.object:set_pos(entity.object:get_pos())
else
new_acce = {x = 0, y = 0, z = 0}
if math.abs(entity.object:get_velocity().y) < 1 then
local pos = entity.object:get_pos()
pos.y = math.floor(pos.y) + 0.5
entity.object:set_pos(pos)
new_velo = get_velocity(entity.v, entity.object:get_yaw(), 0)
else
new_velo = get_velocity(entity.v, entity.object:get_yaw(),
entity.object:get_velocity().y)
entity.object:set_pos(entity.object:get_pos())
end
end
end
if can_fly and can_fly == true and ctrl.jump then
new_velo.y = new_velo.y + 0.75
end
entity.object:set_velocity(new_velo)
entity.object:set_acceleration(new_acce)
end

View File

@ -29,6 +29,6 @@ local base_arrow = {
for _,arrowtype in pairs( {"ice","lightning","poison"} ) do
base_arrow.textures = {"dmobs_"..arrowtype..".png"}
name = "dmobs:"..arrowtype
mobs:register_arrow(name, dmobs.deepclone(base_arrow) )
name = "mobs_doomed:"..arrowtype
mobs:register_arrow(name, mobs_doomed.deepclone(base_arrow) )
end

View File

@ -1,6 +1,6 @@
--function to register tamed dragon attacks
function dmobs.register_fire(fname, texture, dmg, replace_node, explode, ice, variance, size)
function mobs_doomed.register_fire(fname, texture, dmg, replace_node, explode, ice, variance, size)
minetest.register_entity(fname, {
textures = {texture},
velocity = 0.1,
@ -14,7 +14,7 @@ minetest.register_entity(fname, {
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
for k, obj in pairs(objs) do
if obj:get_luaentity() ~= nil then
if obj:get_luaentity().name ~= fname and obj:get_luaentity().name ~= "dmobs:dragon_red" and obj:get_luaentity().name ~= "dmobs:dragon_blue" and obj:get_luaentity().name ~= "dmobs:dragon_black" and obj:get_luaentity().name ~= "dmobs:dragon_green" and obj:get_luaentity().name ~= "dmobs:dragon_great_tame" and obj:get_luaentity().name ~= "__builtin:item" then
if obj:get_luaentity().name ~= fname and obj:get_luaentity().name ~= "mobs_doomed:dragon_red" and obj:get_luaentity().name ~= "mobs_doomed:dragon_blue" and obj:get_luaentity().name ~= "mobs_doomed:dragon_black" and obj:get_luaentity().name ~= "mobs_doomed:dragon_green" and obj:get_luaentity().name ~= "mobs_doomed:dragon_great_tame" and obj:get_luaentity().name ~= "__builtin:item" then
obj:punch(self.launcher, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=3},
@ -43,7 +43,7 @@ minetest.register_entity(fname, {
end
end
end
local apos = self.object:get_pos()
local apos = self.object:get_pos(); if not apos then return end
local part = minetest.add_particlespawner(
6, --amount
0.3, --time
@ -65,7 +65,7 @@ minetest.register_entity(fname, {
})
end
dmobs.register_fire("dmobs:fire_plyr", "dmobs_fire.png", 2, "fire:basic_flame", true, false, 0.3, 1)
dmobs.register_fire("dmobs:ice_plyr", "dmobs_ice.png", 2, "default:ice", false, true, 0.5, 10)
dmobs.register_fire("dmobs:poison_plyr", "dmobs_poison.png", 2, "air", false, false, 0.3, 1)
dmobs.register_fire("dmobs:lightning_plyr", "dmobs_lightning.png", 2, "air", true, false, 0, 0.5)
mobs_doomed.register_fire("mobs_doomed:fire_plyr", "dmobs_fire.png", 2, "fire:basic_flame", true, false, 0.3, 1)
mobs_doomed.register_fire("mobs_doomed:ice_plyr", "dmobs_ice.png", 2, "default:ice", false, true, 0.5, 10)
mobs_doomed.register_fire("mobs_doomed:poison_plyr", "dmobs_poison.png", 2, "air", false, false, 0.3, 1)
mobs_doomed.register_fire("mobs_doomed:lightning_plyr", "dmobs_lightning.png", 2, "air", true, false, 0, 0.5)

View File

@ -1,5 +1,5 @@
--Thanks to Tenplus1
mobs:register_arrow("dmobs:fire", {
mobs:register_arrow("mobs_doomed:fire", {
visual = "sprite",
visual_size = {x = 0.5, y = 0.5},
textures = {"dmobs_fire.png"},

View File

@ -1,5 +1,5 @@
mobs:register_arrow("dmobs:fire", {
mobs:register_arrow("mobs_doomed:fire", {
visual = "sprite",
visual_size = {x = 0.5, y = 0.5},
textures = {"dmobs_fire.png"},

View File

@ -1,4 +1,4 @@
mobs:register_arrow("dmobs:sting", {
mobs:register_arrow("mobs_doomed:sting", {
visual = "sprite",
visual_size = {x = 0.5, y = 0.5},
textures = {"dmobs_sting.png"},

View File

@ -1,6 +1,9 @@
default
mobs
wool
farming?
farming
bones?
ethereal?
caverealms?
mobs_animal?
player_api?

1
description.txt Normal file
View File

@ -0,0 +1 @@
MOBS for more monsters like dragons, orcs, ogres, elephans, etc

View File

@ -1,11 +1,43 @@
D00Med's Mobs
minetest mod mobs_doomed
======================
How to Dragon
MOBS for dragons.. Main info at [Readme.md](README.md)
## Dragns and orcs/ogres
When dragons are disabled orcs will spawm more frecuently,
about 16000 chance and 32000 (very rare) chance if dragons are disabled,
same for ogres, about 6000 with disabled dragons and 8000 then.
## Dragons names
Generic dragon always spawn, the others only if enabled in settings by `mobs_doomed.dragons` set to true (default):
| tech name | type | chance | notes | spawn nodes |
| ------------- | ---- | ------ | ------------------ | ---------------------- |
| mobs_doomed:dragon | mob | 16000 | always enabled | group:leaves |
| mobs_doomed:waterdragon | mob | 24000 | rare, ice/water | default:water_source |
| mobs_doomed:dragon1 | mob | 24000 | rare, fire | ethereal:fiery_dirt, default:desert_sand |
| mobs_doomed:dragon2 | mob | 24000 | rare, thunder/fire | ethereal:cristal_dirt, default:dirt_with_dry_grass |
| mobs_doomed:dragon3 | mob | 30000 | rare, poison | ethereal:jungle_dirt, default:jungleleaves |
| mobs_doomed:dragon4 | mob | 24000 | rare, ice/water | default:snow_block, default:permafrost_with_moss, default:permafrost_with_stone, ethereal:cold_dirt |
| mobs_doomed:wyvern | mob | 32000 | rare, dog attack | group:leaves |
| mobs_doomed:dragon_great | mob | 30000 | very rare, fire/lava | ethereal:jungle_dirt,default:jungleleaves,default:lava_source,caverealms:glow_mese, caverealms:glow_amethyst,caverealms:glow_crystal,caverealms:glow_emerald,cavereals:glow_ruby |
| mobs_doomed:dragon_great_tame | npc | 30000 | very rare, fire/lava | ethereal:jungle_dirt,default:jungleleaves,default:lava_source,caverealms:glow_mese, caverealms:glow_amethyst,caverealms:glow_crystal,caverealms:glow_emerald,cavereals:glow_ruby |
Dragon D00Med's Mobs
-------------
![screenshot_red_dragon.png](screenshot_red_dragon.png)
## How to Dragon
By defeating dragons you will get eggs. Place them in their ideal environment and feed them a dragon gem (the violet one) to create an
elemental egg.
Environements :
* Fire : lava source
* Lightning : obsidian
* Poison : cactus
@ -24,4 +56,13 @@ Feed the right elemental gem to the elemental egg to hatch a dragon:
Use the Use key to shoot fireballs when riding your new pet dragon.
Press the forward key to fly to the direction you're looking
## Configurations
there's a variable named `mobs_doomed.dragons` by default set to true, if disabled or false will spawn more orcs
and only let the `mobs_doomed:dragon` available for spawn. This can be set using the
config file (server) or using the gui configure advanced part from the client (single player)
Enjoy !
Main info at [Readme.md](README.md)

61
dragons/README.md Normal file
View File

@ -0,0 +1,61 @@
minetest mod mobs_doomed
======================
Main info at [../Readme.md](../README.md)
## Dragns and orcs/ogres
When dragons are disabled orcs will spawm more frecuently,
about 16000 chance and 32000 (very rare) chance if dragons are disabled,
same for ogres, about 6000 with disabled dragons and 8000 then.
## Dragons names
Generic dragon always spawn, the others only if enabled in settings by `dmobs.dragons` set to true (default):
| tech name | type | chance | notes | spawn nodes |
| ------------- | ---- | ------ | ------------------ | ---------------------- |
| mobs_doomed:dragon | mob | 16000 | always enabled | group:leaves |
| mobs_doomed:waterdragon | mob | 24000 | rare, ice/water | default:water_source |
| mobs_doomed:dragon1 | mob | 24000 | rare, fire | ethereal:fiery_dirt, default:desert_sand |
| mobs_doomed:dragon2 | mob | 24000 | rare, thunder/fire | ethereal:cristal_dirt, default:dirt_with_dry_grass |
| mobs_doomed:dragon3 | mob | 30000 | rare, poison | ethereal:jungle_dirt, default:jungleleaves |
| mobs_doomed:dragon4 | mob | 24000 | rare, ice/water | default:snow_block, default:permafrost_with_moss, default:permafrost_with_stone, ethereal:cold_dirt |
| mobs_doomed:wyvern | mob | 32000 | rare, dog attack | group:leaves |
| mobs_doomed:dragon_great | mob | 30000 | very rare, fire/lava | ethereal:jungle_dirt,default:jungleleaves,default:lava_source,caverealms:glow_mese, caverealms:glow_amethyst,caverealms:glow_crystal,caverealms:glow_emerald,cavereals:glow_ruby |
| mobs_doomed:dragon_great_tame | npc | 30000 | very rare, fire/lava | ethereal:jungle_dirt,default:jungleleaves,default:lava_source,caverealms:glow_mese, caverealms:glow_amethyst,caverealms:glow_crystal,caverealms:glow_emerald,cavereals:glow_ruby |
Dragon D00Med's Mobs
-------------
![../screenshot_red_dragon.png](../screenshot_red_dragon.png)
## How to Dragon
By defeating dragons you will get eggs. Place them in their ideal environment and feed them a dragon gem (the violet one) to create an
elemental egg.
Environements :
* Fire : lava source
* Lightning : obsidian
* Poison : cactus
* Ice : ice
* Great : diamond block
By defeating special dragons, you can obtain elemental gems.
Feed the right elemental gem to the elemental egg to hatch a dragon:
* Fire : fire gem
* Lightning : lightning gem
* Poison : poison gem
* Ice : ice gem
* Great : dragon gem
Use the Use key to shoot fireballs when riding your new pet dragon.
Press the forward key to fly to the direction you're looking
Enjoy !
Main info at [../Readme.md](../README.md)

View File

@ -11,7 +11,7 @@ local dragondef = {
dogshoot_switch = 2,
dogshoot_count = 0,
dogshoot_count_max =5,
arrow = "dmobs:fire",
arrow = "mobs_doomed:fire",
shoot_offset = 1,
hp_min = 70,
hp_max = 100,
@ -29,7 +29,7 @@ local dragondef = {
jump_chance = 30,
walk_chance = 80,
fall_speed = 0,
follow = {"dmobs:dragon_gem"},
follow = {"mobs_doomed:dragon_gem"},
pathfinding = true,
fall_damage = 0,
sounds = {
@ -41,13 +41,14 @@ local dragondef = {
fly = true,
fly_in = {"air","default:water_source", "default:water_flowing", "default:lava_source", "default:lava_flowing"},
drops = {
{name = "dmobs:egg", chance = 1, min = 1, max = 1},
{name = "dmobs:dragon_gem", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:egg", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:dragon_gem", chance = 1, min = 1, max = 1},
},
fall_speed = 0,
stepheight = 10,
water_damage = 3,
lava_damage = 1,
fire_damage = 1,
light_damage = 0,
view_range = 20,
animation = {
@ -63,19 +64,19 @@ local dragondef = {
punch_end = 47,
},
knock_back = 2,
do_custom = dmobs.dragon.step_custom,
on_rightclick = dmobs.dragon.on_rc
do_custom = mobs_doomed.dragon.step_custom,
on_rightclick = mobs_doomed.dragon.on_rc
}
-- The wild dragon is registered
mobs:register_mob("dmobs:dragon1", dmobs.deepclone(dragondef) )
mobs:register_mob("mobs_doomed:dragon1", mobs_doomed.deepclone(dragondef) )
-- The def is modified to make it tamed and rideable
dragondef.type = "npc"
dragondef.attacks_monsters = true
dragondef.on_rightclick = dmobs.dragon.ride
dragondef.do_custom = dmobs.dragon.do_custom
dragondef.on_rightclick = mobs_doomed.dragon.ride
dragondef.do_custom = mobs_doomed.dragon.do_custom
-- The tamed version is registered
mobs:register_mob("dmobs:dragon_red", dmobs.deepclone(dragondef) )
mobs:register_mob("mobs_doomed:dragon_red", mobs_doomed.deepclone(dragondef) )

View File

@ -11,7 +11,7 @@ local dragondef = {
dogshoot_switch = 2,
dogshoot_count = 0,
dogshoot_count_max =5,
arrow = "dmobs:lightning",
arrow = "mobs_doomed:lightning",
shoot_offset = 1,
hp_min = 70,
hp_max = 100,
@ -29,7 +29,7 @@ local dragondef = {
jump_chance = 30,
walk_chance = 80,
fall_speed = 0,
follow = {"dmobs:dragon_gem"},
follow = {"mobs_doomed:dragon_gem"},
pathfinding = true,
fall_damage = 0,
sounds = {
@ -41,13 +41,14 @@ local dragondef = {
fly = true,
fly_in = {"air","default:water_source","default:water_flowing"},
drops = {
{name = "dmobs:egg", chance = 1, min = 1, max = 1},
{name = "dmobs:dragon_gem", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:egg", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:dragon_gem", chance = 1, min = 1, max = 1},
},
fall_speed = 0,
stepheight = 10,
water_damage = 2,
lava_damage = 0,
fire_damage = 0,
light_damage = 0,
view_range = 20,
animation = {
@ -63,18 +64,18 @@ local dragondef = {
punch_end = 47,
},
knock_back = 2,
do_custom = dmobs.dragon.step_custom,
on_rightclick = dmobs.dragon.on_rc
do_custom = mobs_doomed.dragon.step_custom,
on_rightclick = mobs_doomed.dragon.on_rc
}
mobs:register_mob("dmobs:dragon2", dmobs.deepclone(dragondef) )
mobs:register_mob("mobs_doomed:dragon2", mobs_doomed.deepclone(dragondef) )
dragondef.type = "npc"
dragondef.attacks_monsters = true
dragondef.on_rightclick = dmobs.dragon.ride
dragondef.on_rightclick = mobs_doomed.dragon.ride
dragondef.do_custom = dmobs.dragon.do_custom
dragondef.do_custom = mobs_doomed.dragon.do_custom
mobs:register_mob("dmobs:dragon_black", dmobs.deepclone(dragondef) )
mobs:register_mob("mobs_doomed:dragon_black", mobs_doomed.deepclone(dragondef) )

View File

@ -11,7 +11,7 @@ local dragondef = {
dogshoot_switch = 2,
dogshoot_count = 0,
dogshoot_count_max =5,
arrow = "dmobs:poison",
arrow = "mobs_doomed:poison",
shoot_offset = 1,
hp_min = 70,
hp_max = 100,
@ -29,7 +29,7 @@ local dragondef = {
jump_chance = 30,
walk_chance = 80,
fall_speed = 0,
follow = {"dmobs:dragon_gem"},
follow = {"mobs_doomed:dragon_gem"},
pathfinding = true,
fall_damage = 0,
sounds = {
@ -41,13 +41,14 @@ local dragondef = {
fly = true,
fly_in = {"air","default:water_source","default:water_flowing"},
drops = {
{name = "dmobs:egg", chance = 1, min = 1, max = 1},
{name = "dmobs:dragon_gem", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:egg", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:dragon_gem", chance = 1, min = 1, max = 1},
},
fall_speed = 0,
stepheight = 10,
water_damage = 2,
lava_damage = 0,
fire_damage = 0,
light_damage = 0,
view_range = 20,
animation = {
@ -63,18 +64,18 @@ local dragondef = {
punch_end = 47,
},
knock_back = 2,
do_custom = dmobs.dragon.step_custom,
on_rightclick = dmobs.dragon.on_rc
do_custom = mobs_doomed.dragon.step_custom,
on_rightclick = mobs_doomed.dragon.on_rc
}
mobs:register_mob("dmobs:dragon3", dmobs.deepclone(dragondef) )
mobs:register_mob("mobs_doomed:dragon3", mobs_doomed.deepclone(dragondef) )
dragondef.type = "npc"
dragondef.attacks_monsters = true
dragondef.on_rightclick = dmobs.dragon.ride
dragondef.on_rightclick = mobs_doomed.dragon.ride
dragondef.do_custom = dmobs.dragon.do_custom
dragondef.do_custom = mobs_doomed.dragon.do_custom
mobs:register_mob("dmobs:dragon_green", dmobs.deepclone(dragondef) )
mobs:register_mob("mobs_doomed:dragon_green", mobs_doomed.deepclone(dragondef) )

View File

@ -11,7 +11,7 @@ local dragondef = {
dogshoot_switch = 2,
dogshoot_count = 0,
dogshoot_count_max =5,
arrow = "dmobs:ice",
arrow = "mobs_doomed:ice",
shoot_offset = 1,
hp_min = 70,
hp_max = 100,
@ -29,7 +29,7 @@ local dragondef = {
jump_chance = 30,
walk_chance = 80,
fall_speed = 0,
follow = {"dmobs:dragon_gem"},
follow = {"mobs_doomed:dragon_gem"},
pathfinding = true,
fall_damage = 0,
sounds = {
@ -41,13 +41,14 @@ local dragondef = {
fly = true,
fly_in = {"air","default:water_source","default:water_flowing"},
drops = {
{name = "dmobs:egg", chance = 1, min = 1, max = 1},
{name = "dmobs:dragon_gem", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:egg", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:dragon_gem", chance = 1, min = 1, max = 1},
},
fall_speed = 0,
stepheight = 10,
water_damage = 1,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
view_range = 20,
animation = {
@ -63,16 +64,16 @@ local dragondef = {
punch_end = 47,
},
knock_back = 2,
do_custom = dmobs.dragon.step_custom,
on_rightclick = dmobs.dragon.on_rc
do_custom = mobs_doomed.dragon.step_custom,
on_rightclick = mobs_doomed.dragon.on_rc
}
mobs:register_mob("dmobs:dragon4", dmobs.deepclone(dragondef) )
mobs:register_mob("mobs_doomed:dragon4", mobs_doomed.deepclone(dragondef) )
dragondef.type = "npc"
dragondef.attacks_monsters = true
dragondef.on_rightclick = dmobs.dragon.ride
dragondef.do_custom = dmobs.dragon.do_custom
dragondef.on_rightclick = mobs_doomed.dragon.ride
dragondef.do_custom = mobs_doomed.dragon.do_custom
mobs:register_mob("dmobs:dragon_blue", dmobs.deepclone(dragondef) )
mobs:register_mob("mobs_doomed:dragon_blue", mobs_doomed.deepclone(dragondef) )

View File

@ -1,8 +1,7 @@
-- 'Generic' dragon
dofile(minetest.get_modpath("dmobs").."/dragons/piloting.lua")
mobs:register_mob("dmobs:dragon", {
mobs:register_mob("mobs_doomed:dragon", {
type = "monster",
passive = false,
attacks_monsters = true,
@ -13,7 +12,7 @@ mobs:register_mob("dmobs:dragon", {
dogshoot_switch = 2,
dogshoot_count = 0,
dogshoot_count_max =5,
arrow = "dmobs:fire",
arrow = "mobs_doomed:fire",
shoot_offset = 1,
hp_min = 50,
hp_max = 80,
@ -50,6 +49,7 @@ mobs:register_mob("dmobs:dragon", {
stepheight = 10,
water_damage = 2,
lava_damage = 0,
fire_damage = 0,
light_damage = 0,
view_range = 20,
animation = {
@ -65,6 +65,6 @@ mobs:register_mob("dmobs:dragon", {
punch_end = 47,
},
knock_back = 2,
do_custom = dmobs.dragon.step_custom,
on_rightclick = dmobs.dragon.on_rc
do_custom = mobs_doomed.dragon.step_custom,
on_rightclick = mobs_doomed.dragon.on_rc
})

View File

@ -10,7 +10,7 @@ local dragonpairs = {
local function egg_transform(pos, node, clicker, item, _)
local wield_item = clicker:get_wielded_item():get_name()
if wield_item == "dmobs:dragon_gem" then
if wield_item == "mobs_doomed:dragon_gem" then
local p = {x = pos.x, y = pos.y - 1, z = pos.z}
local corner_name
@ -48,9 +48,9 @@ local function egg_transform(pos, node, clicker, item, _)
minetest.chat_send_player(clicker:get_player_name()," ... something seems to be happening .... come back later?")
minetest.after(dmobs.eggtimer,
minetest.after(mobs_doomed.eggtimer,
function(pos, dragon, pname)
minetest.set_node(pos, {name="dmobs:dragon_egg_"..dragon_type})
minetest.set_node(pos, {name="mobs_doomed:dragon_egg_"..dragon_type})
end,
pos
)
@ -64,28 +64,28 @@ local function egghatch(pos, node, clicker, item, _)
local eggnode = minetest.get_node(pos).name
for nature,details in pairs(dragonpairs) do
if ( wield_item == "dmobs:dragon_gem_"..nature and eggnode:find(nature) ) or
( wield_item == "dmobs:dragon_gem" and eggnode == "dmobs:dragon_egg_great" ) then -- special case... because inconsiderate/inconsistent naming
if ( wield_item == "mobs_doomed:dragon_gem_"..nature and eggnode:find(nature) ) or
( wield_item == "mobs_doomed:dragon_gem" and eggnode == "mobs_doomed:dragon_egg_great" ) then -- special case... because inconsiderate/inconsistent naming
minetest.chat_send_player(clicker:get_player_name(), " ... it ... swallowed the gem...")
minetest.after(dmobs.eggtimer,
minetest.after(mobs_doomed.eggtimer,
function(pos, dragon, pname)
local neweggnode = minetest.get_node(pos).name
if eggnode ~= neweggnode then return end -- prevent infinite hatchings
minetest.remove_node(pos)
local thedragon = "dmobs:dragon_"..details.colour
if eggnode == "dmobs:dragon_egg_great" then
thedragon = "dmobs:dragon_great_tame"
local thedragon = "mobs_doomed:dragon_"..details.colour
if eggnode == "mobs_doomed:dragon_egg_great" then
thedragon = "mobs_doomed:dragon_great_tame"
end
local ent = minetest.add_entity(pos, thedragon)
minetest.sound_play("dmobs_chirrup",{pos=pos,max_hear_distance=20})
local obj = ent:get_luaentity()
if eggnode ~= "dmobs:dragon_egg_great" then
if eggnode ~= "mobs_doomed:dragon_egg_great" then
ent:set_properties({
textures = {"dmobs_dragon_young.png"},
visual_size = {x=1, y=1},
@ -121,28 +121,28 @@ local base_egg = { -- base template for all dragon eggs
}
minetest.register_node("dmobs:egg", dmobs.deepclone(base_egg) ) -- clone, to not affect the base template
minetest.register_node("mobs_doomed:egg", mobs_doomed.deepclone(base_egg) ) -- clone, to not affect the base template
-- Fire egg
base_egg.groups.not_in_creative_inventory=1
base_egg.on_rightclick = egghatch
base_egg.tiles = {"dmobs_egg1.png"}
minetest.register_node("dmobs:dragon_egg_fire", dmobs.deepclone(base_egg) )
minetest.register_node("mobs_doomed:dragon_egg_fire", mobs_doomed.deepclone(base_egg) )
-- Lightning egg
base_egg.tiles = {"dmobs_egg2.png"}
minetest.register_node("dmobs:dragon_egg_lightning", dmobs.deepclone(base_egg) )
minetest.register_node("mobs_doomed:dragon_egg_lightning", mobs_doomed.deepclone(base_egg) )
-- Poison egg
base_egg.tiles = {"dmobs_egg3.png"}
minetest.register_node("dmobs:dragon_egg_poison", dmobs.deepclone(base_egg) )
minetest.register_node("mobs_doomed:dragon_egg_poison", mobs_doomed.deepclone(base_egg) )
-- Ice egg
base_egg.tiles = {"dmobs_egg4.png"}
minetest.register_node("dmobs:dragon_egg_ice", dmobs.deepclone(base_egg) )
minetest.register_node("mobs_doomed:dragon_egg_ice", mobs_doomed.deepclone(base_egg) )
-- Great dragon egg
base_egg.groups.not_in_creative_inventory=nil
base_egg.tiles = {"default_sandstone.png"}
base_egg.description = "Great Dragon Egg"
minetest.register_node("dmobs:dragon_egg_great", dmobs.deepclone(base_egg) )
minetest.register_node("mobs_doomed:dragon_egg_great", mobs_doomed.deepclone(base_egg) )

View File

@ -9,7 +9,7 @@ local gdragon_base = {
dogshoot_switch = 2,
dogshoot_count = 0,
dogshoot_count_max =5,
arrow = "dmobs:lightning",
arrow = "mobs_doomed:lightning",
shoot_offset = 1,
hp_min = 150,
hp_max = 250,
@ -39,12 +39,13 @@ local gdragon_base = {
fly = true,
fly_in = {"air","default:water_source","default:water_flowing", "default:lava_source","default:lava_flowing"},
drops = {
{name = "dmobs:dragon_egg_great", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:dragon_egg_great", chance = 1, min = 1, max = 1},
},
fall_speed = 0,
stepheight = 10,
water_damage = 2,
lava_damage = 0,
fire_damage = 0,
light_damage = 0,
view_range = 20,
animation = {
@ -62,13 +63,13 @@ local gdragon_base = {
knock_back = 2,
}
mobs:register_mob("dmobs:dragon_great", dmobs.deepclone(gdragon_base) )
mobs:register_mob("mobs_doomed:dragon_great", mobs_doomed.deepclone(gdragon_base) )
gdragon_base.type = "npc"
gdragon_base.attacks_monsters = true
gdragon_base.on_rightclick = dmobs.dragon.ride
gdragon_base.on_rightclick = mobs_doomed.dragon.ride
gdragon_base.do_custom = dmobs.dragon.do_custom
gdragon_base.do_custom = mobs_doomed.dragon.do_custom
mobs:register_mob("dmobs:dragon_great_tame", dmobs.deepclone(gdragon_base) )
mobs:register_mob("mobs_doomed:dragon_great_tame", mobs_doomed.deepclone(gdragon_base) )

View File

@ -1,31 +1,31 @@
--thanks to diriel, blert2112 and taikedz
dmobs.dragon = {}
dofile(minetest.get_modpath("dmobs").."/dragons/piloting.lua")
if not mobs_doomed.dragon then
mobs_doomed.dragon = {}
end
local tamed_dragons = {}
--items and tools
minetest.register_craftitem("dmobs:dragon_gem_lightning", {
minetest.register_craftitem("mobs_doomed:dragon_gem_lightning", {
description = "Lightning Gem",
inventory_image = "dmobs_gem_lightning.png"
})
minetest.register_craftitem("dmobs:dragon_gem_ice", {
minetest.register_craftitem("mobs_doomed:dragon_gem_ice", {
description = "Ice Gem",
inventory_image = "dmobs_gem_ice.png"
})
minetest.register_craftitem("dmobs:dragon_gem_fire", {
minetest.register_craftitem("mobs_doomed:dragon_gem_fire", {
description = "Fire Gem",
inventory_image = "dmobs_gem_fire.png"
})
minetest.register_craftitem("dmobs:dragon_gem_poison", {
minetest.register_craftitem("mobs_doomed:dragon_gem_poison", {
description = "Poison Gem",
inventory_image = "dmobs_gem_poison.png"
})
minetest.register_craftitem("dmobs:dragon_gem", {
minetest.register_craftitem("mobs_doomed:dragon_gem", {
description = "Dragon Gem",
inventory_image = "dmobs_gem.png"
})
@ -36,19 +36,19 @@ minetest.register_craftitem("dmobs:dragon_gem", {
----------
-- Wild dragons
mobs:register_egg("dmobs:dragon", "Minor Dragon", "default_apple.png", 1)
mobs:register_egg("dmobs:dragon1", "Wild Fire Dragon", "default_apple.png", 1)
mobs:register_egg("dmobs:dragon2", "Wild Lightning Dragon", "dmobs_lightning.png", 1)
mobs:register_egg("dmobs:dragon3", "Wild Poison Dragon", "dmobs_poison.png", 1)
mobs:register_egg("dmobs:dragon4", "Wild Ice Dragon", "default_ice.png", 1)
mobs:register_egg("dmobs:dragon_great", "Boss Dragon", "dmobs_egg1.png", 1)
mobs:register_egg("dmobs:waterdragon", "Boss Waterdragon", "dmobs_egg4.png", 1)
mobs:register_egg("dmobs:wyvern", "Boss Wyvern", "dmobs_egg3.png", 1)
mobs:register_egg("mobs_doomed:dragon", "Minor Dragon", "default_apple.png", 1)
mobs:register_egg("mobs_doomed:dragon1", "Wild Fire Dragon", "default_apple.png", 1)
mobs:register_egg("mobs_doomed:dragon2", "Wild Lightning Dragon", "dmobs_lightning.png", 1)
mobs:register_egg("mobs_doomed:dragon3", "Wild Poison Dragon", "dmobs_poison.png", 1)
mobs:register_egg("mobs_doomed:dragon4", "Wild Ice Dragon", "default_ice.png", 1)
mobs:register_egg("mobs_doomed:dragon_great", "Boss Dragon", "dmobs_egg1.png", 1)
mobs:register_egg("mobs_doomed:waterdragon", "Boss Waterdragon", "dmobs_egg4.png", 1)
mobs:register_egg("mobs_doomed:wyvern", "Boss Wyvern", "dmobs_egg3.png", 1)
-- Tamed dragons
mobs:register_egg("dmobs:dragon_red", "Tamed Fire Dragon", "default_apple.png", 1)
mobs:register_egg("dmobs:dragon_black", "Tamed Lightning Dragon", "dmobs_lightning.png", 1)
mobs:register_egg("dmobs:dragon_green", "Tamed Poison Dragon", "dmobs_poison.png", 1)
mobs:register_egg("dmobs:dragon_blue", "Tamed Ice Dragon", "default_ice.png", 1)
mobs:register_egg("dmobs:dragon_great_tame", "Tamed Great Dragon", "default_lava_source_animated.png", 1)
mobs:register_egg("mobs_doomed:dragon_red", "Tamed Fire Dragon", "default_apple.png", 1)
mobs:register_egg("mobs_doomed:dragon_black", "Tamed Lightning Dragon", "dmobs_lightning.png", 1)
mobs:register_egg("mobs_doomed:dragon_green", "Tamed Poison Dragon", "dmobs_poison.png", 1)
mobs:register_egg("mobs_doomed:dragon_blue", "Tamed Ice Dragon", "default_ice.png", 1)
mobs:register_egg("mobs_doomed:dragon_great_tame", "Tamed Great Dragon", "default_lava_source_animated.png", 1)

View File

@ -1,11 +1,11 @@
if not dmobs.dragon then
dmobs.dragon = {}
if not mobs_doomed.dragon then
mobs_doomed.dragon = {}
end
dmobs.dragon.step_custom = function(self, dtime)
mobs_doomed.dragon.step_custom = function(self, dtime)
if self.driver then
object_fly(self, dtime, 10, true, "dmobs:fire_plyr", "walk", "stand")
mobs_doomed.object_fly(self, dtime, 10, true, "mobs_doomed:fire_plyr", "walk", "stand")
if self.state == "attack" then
self.state = nil
end
@ -14,12 +14,12 @@ dmobs.dragon.step_custom = function(self, dtime)
return true
end
dmobs.dragon.ride = function(self, clicker)
mobs_doomed.dragon.ride = function(self, clicker)
if self.tamed and self.owner == clicker:get_player_name() then
local inv = clicker:get_inventory()
if self.driver and clicker == self.driver then
object_detach(self, clicker, {x=1, y=0, z=1})
mobs_doomed.object_detach(self, clicker, {x=1, y=0, z=1})
if inv:room_for_item("main", "mobs:saddle") then
inv:add_item("main", "mobs:saddle")
@ -29,7 +29,7 @@ dmobs.dragon.ride = function(self, clicker)
elseif not self.driver then
if clicker:get_wielded_item():get_name() == "mobs:saddle" then
object_attach(self, clicker, {x=0, y=12, z=4}, {x=0, y=0, z=4})
mobs_doomed.object_attach(self, clicker, {x=0, y=12, z=4}, {x=0, y=0, z=4})
inv:remove_item("main", "mobs:saddle")
end
end
@ -37,19 +37,19 @@ dmobs.dragon.ride = function(self, clicker)
end
dmobs.dragon.on_rc = function(self, clicker)
mobs_doomed.dragon.on_rc = function(self, clicker)
if not clicker or not clicker:is_player() then
return
end
if mobs:feed_tame(self, clicker, 1, false, false) then
return
end
dmobs.dragon.ride(self, clicker)
mobs_doomed.dragon.ride(self, clicker)
end
dmobs.dragon.do_custom = function(self, dtime)
mobs_doomed.dragon.do_custom = function(self, dtime)
if self.driver then
object_fly(self, dtime, 10, true, "dmobs:fire_plyr", "walk", "stand")
mobs_doomed.object_fly(self, dtime, 10, true, "mobs_doomed:fire_plyr", "walk", "stand")
if self.state == "attack" then
self.state = "idle"

View File

@ -1,6 +1,6 @@
-- Waterdragon (Hydra)
mobs:register_mob("dmobs:waterdragon", {
mobs:register_mob("mobs_doomed:waterdragon", {
type = "monster",
passive = false,
attack_type = "dogshoot",
@ -8,7 +8,7 @@ mobs:register_mob("dmobs:waterdragon", {
dogshoot_count = 0,
dogshoot_count_max =5,
shoot_interval = 2.5,
arrow = "dmobs:ice",
arrow = "mobs_doomed:ice",
shoot_offset = 0,
pathfinding = false,
reach = 5,
@ -35,8 +35,8 @@ mobs:register_mob("dmobs:waterdragon", {
run_velocity = 0.01,
jump = false,
drops = {
{name = "dmobs:dragon_gem_ice", chance = 1, min = 1, max = 1},
{name = "dmobs:dragon_gem_fire", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:dragon_gem_ice", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:dragon_gem_fire", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 5,
@ -66,12 +66,12 @@ mobs:register_mob("dmobs:waterdragon", {
local obj, obj2, ent
-- add body and make it follow head
obj = minetest.add_entity({x=pos.x+1, y=pos.y, z=pos.z}, "dmobs:waterdragon_2")
obj = minetest.add_entity({x=pos.x+1, y=pos.y, z=pos.z}, "mobs_doomed:waterdragon_2")
ent = obj:get_luaentity()
ent.following = self.object
-- add body and make it follow previous body segment
obj2 = minetest.add_entity({x=pos.x-1, y=pos.y, z=pos.z}, "dmobs:waterdragon_2")
obj2 = minetest.add_entity({x=pos.x-1, y=pos.y, z=pos.z}, "mobs_doomed:waterdragon_2")
ent = obj2:get_luaentity()
ent.following = self.object
end
@ -80,7 +80,7 @@ mobs:register_mob("dmobs:waterdragon", {
mobs:register_mob("dmobs:waterdragon_2", {
mobs:register_mob("mobs_doomed:waterdragon_2", {
type = "monster",
passive = false,
attack_type = "shoot",
@ -88,8 +88,8 @@ mobs:register_mob("dmobs:waterdragon_2", {
dogshoot_count = 0,
dogshoot_count_max =5,
shoot_interval = 3,
arrow = "dmobs:ice",
shoot_offset = 0,
arrow = "mobs_doomed:ice",
shoot_offset = -1,
pathfinding = false,
reach = 5,
damage = 2,
@ -117,6 +117,7 @@ mobs:register_mob("dmobs:waterdragon_2", {
jump = false,
water_damage = 0,
lava_damage = 5,
fire_damage = 4,
light_damage = 0,
animation = {
speed_normal = 15,

View File

@ -1,4 +1,4 @@
mobs:register_mob("dmobs:wyvern", {
mobs:register_mob("mobs_doomed:wyvern", {
type = "monster",
passive = false,
attacks_monsters = false,
@ -9,7 +9,7 @@ mobs:register_mob("dmobs:wyvern", {
dogshoot_switch = 2,
dogshoot_count = 0,
dogshoot_count_max =5,
arrow = "dmobs:poison",
arrow = "mobs_doomed:poison",
shoot_offset = 0.5,
hp_min = 100,
hp_max = 150,
@ -33,8 +33,8 @@ mobs:register_mob("dmobs:wyvern", {
jump = true,
fly = false,
drops = {
{name = "dmobs:dragon_gem_poison", chance = 1, min = 1, max = 1},
{name = "dmobs:dragon_gem_lightning", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:dragon_gem_poison", chance = 1, min = 1, max = 1},
{name = "mobs_doomed:dragon_gem_lightning", chance = 1, min = 1, max = 1},
},
sounds = {
shoot_attack = "dmobs_poison",
@ -42,6 +42,7 @@ mobs:register_mob("dmobs:wyvern", {
},
water_damage = 0,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
view_range = 20,
animation = {

View File

@ -1,39 +1,42 @@
dmobs = {}
mobs_doomed = {}
-- dmobs by D00Med
-- mounts api by D00Med and lib_mount api by blert2112
dofile(minetest.get_modpath("dmobs").."/api.lua")
dofile(minetest.get_modpath("mobs_doomed").."/api.lua")
-- Enable dragons (disable to remove tamed dragons and dragon bosses)
dmobs.dragons = minetest.settings:get_bool("dmobs.dragons")
if dmobs.dragons == nil then
dmobs.dragons = true
end
dmobs.regulars = minetest.settings:get_bool("dmobs.regulars")
if dmobs.regulars == nil then
dmobs.regulars = true
end
mobs_doomed.dragons = minetest.settings:get_bool("mobs_doomed.dragons")
if mobs_doomed.dragons == nil then mobs_doomed.dragons = true end
-- Enable regular mobs independient of dragons (if all disabled one dragon and some orcs will be enabled)
mobs_doomed.regulars = minetest.settings:get_bool("mobs_doomed.regulars")
if mobs_doomed.regulars == nil then mobs_doomed.regulars = true end
-- Enabling of NyanCat
mobs_doomed.allow_nyanc = minetest.settings:get_bool("mobs_doomed.allow_nyanc")
if mobs_doomed.allow_nyanc == nil then mobs_doomed.allow_nyanc = false end
-- Enable fireballs/explosions
dmobs.destructive = minetest.settings:get_bool("dmobs.destructive") or false
mobs_doomed.destructive = minetest.settings:get_bool("mobs_doomed.destructive")
if mobs_doomed.destructive == nil then mobs_doomed.destructive = true end
-- Timer for the egg mechanics
dmobs.eggtimer = tonumber(minetest.settings:get("dmobs.eggtimer") ) or 100
mobs_doomed.eggtimer = tonumber(minetest.settings:get("mobs_doomed.eggtimer") )
if mobs_doomed.eggtimer == nil then mobs_doomed.eggtimer = 100 end
-- Table cloning to reduce code repetition
dmobs.deepclone = function(t) -- deep-copy a table -- from https://gist.github.com/MihailJP/3931841
mobs_doomed.deepclone = function(t) -- deep-copy a table -- from https://gist.github.com/MihailJP/3931841
if type(t) ~= "table" then return t end
local target = {}
for k, v in pairs(t) do
if k ~= "__index" and type(v) == "table" then -- omit circular reference
target[k] = dmobs.deepclone(v)
target[k] = mobs_doomed.deepclone(v)
else
target[k] = v
end
@ -45,7 +48,7 @@ end
local function loadmob(mobname,dir)
dir = dir or "/mobs/"
dofile(minetest.get_modpath("dmobs")..dir..mobname..".lua")
dofile(minetest.get_modpath("mobs_doomed")..dir..mobname..".lua")
end
-- regular mobs
@ -56,7 +59,6 @@ local mobslist = {
"panda",
"tortoise",
"golem_friendly",
"nyan",
"gnorm",
"hedgehog",
"owl",
@ -77,18 +79,27 @@ local mobslist = {
"ogre",
}
if dmobs.regulars then
minetest.log("action","[mobs_doomed] nyancat enabled "..tostring(mobs_doomed.allow_nyanc))
minetest.log("action","[mobs_doomed] dragons enabled "..tostring(mobs_doomed.dragons))
minetest.log("action","[mobs_doomed] more animals "..tostring(mobs_doomed.regulars))
minetest.log("action","[mobs_doomed] enable destructive fire "..tostring(mobs_doomed.destructive))
minetest.log("action","[mobs_doomed] configured egg timer "..tostring(mobs_doomed.eggtimer))
if mobs_doomed.regulars then
for _,mobname in pairs(mobslist) do
loadmob(mobname)
end
if mobs_doomed.allow_nyanc then
loadmob("nyan")
end
end
---------------
-- dragons!! --
---------------
dofile(minetest.get_modpath("mobs_doomed").."/dragons/piloting.lua")
loadmob("dragon_normal","/dragons/")
if dmobs.dragons then
if mobs_doomed.dragons then
loadmob("main","/dragons/")
loadmob("dragon1","/dragons/")
loadmob("dragon2","/dragons/")
@ -98,24 +109,26 @@ if dmobs.dragons then
loadmob("water_dragon","/dragons/")
loadmob("wyvern","/dragons/")
dofile(minetest.get_modpath("dmobs").."/dragons/eggs.lua")
dofile(minetest.get_modpath("mobs_doomed").."/dragons/eggs.lua")
end
dofile(minetest.get_modpath("dmobs").."/arrows/dragonfire.lua")
dofile(minetest.get_modpath("dmobs").."/arrows/dragonarrows.lua")
dofile(minetest.get_modpath("mobs_doomed").."/arrows/dragonfire.lua")
dofile(minetest.get_modpath("mobs_doomed").."/arrows/dragonarrows.lua")
-- General arrow definitions
if dmobs.destructive == true then
dofile(minetest.get_modpath("dmobs").."/arrows/fire_explosive.lua")
if mobs_doomed.destructive == true then
dofile(minetest.get_modpath("mobs_doomed").."/arrows/fire_explosive.lua")
else
dofile(minetest.get_modpath("dmobs").."/arrows/fire.lua")
dofile(minetest.get_modpath("mobs_doomed").."/arrows/fire.lua")
end
dofile(minetest.get_modpath("dmobs").."/nodes.lua")
dofile(minetest.get_modpath("dmobs").."/arrows/sting.lua")
dofile(minetest.get_modpath("mobs_doomed").."/nodes.lua")
dofile(minetest.get_modpath("mobs_doomed").."/arrows/sting.lua")
-- Spawning
dofile(minetest.get_modpath("dmobs").."/spawn.lua")
dofile(minetest.get_modpath("dmobs").."/saddle.lua")
dofile(minetest.get_modpath("mobs_doomed").."/spawn.lua")
dofile(minetest.get_modpath("mobs_doomed").."/saddle.lua")
print("[MOD] mobs_doomed loaded")

View File

@ -1,4 +1,4 @@
mobs:register_mob("dmobs:badger", {
mobs:register_mob("mobs_doomed:badger", {
type = "animal",
passive = false,
reach = 1,
@ -25,6 +25,7 @@ mobs:register_mob("dmobs:badger", {
water_damage = 0,
lava_damage = 2,
light_damage = 0,
fire_damage = 2,
fall_damage = 1,
fall_speed = -8,
fear_height = 4,
@ -41,7 +42,6 @@ mobs:register_mob("dmobs:badger", {
run_end = 58,
punch_start = 60,
punch_end = 80,
},
on_rightclick = function(self, clicker)
@ -54,4 +54,4 @@ mobs:register_mob("dmobs:badger", {
})
mobs:register_egg("dmobs:badger", "Badger", "default_obsidian.png", 1)
mobs:register_egg("mobs_doomed:badger", "Badger", "default_obsidian.png", 1)

View File

@ -5,21 +5,21 @@ minetest.register_abm({
nodenames = {"flowers:flower_rose", "flowers:flower_tulip",
"flowers:flower_dandelion_yellow", "flowers:flower_viola",
"flowers:flower_dandelion_white", "flowers:flower_geranium"},
interval = 10.0,
interval = 10,
chance = 10,
action = function(pos, node, active_object_count, active_object_count_wider)
minetest.add_entity({x=pos.x,y=pos.y+0.3,z=pos.z}, "dmobs:butterfly")
minetest.add_entity({x=pos.x,y=pos.y+0.3,z=pos.z}, "mobs_doomed:butterfly")
end
})
minetest.register_entity("dmobs:butterfly", {
minetest.register_entity("mobs_doomed:butterfly", {
visual = "mesh",
mesh = "butterfly.b3d",
physical = true,
textures = {"dmobs_butterfly.png",},
visual_size = {x=0.3, y=0.3},
on_activate = function(self)
num = math.random(1,4)
local num = math.random(1,4)
self.object:set_properties({textures = {"dmobs_butterfly"..num..".png",},})
self.object:set_animation({x=1, y=10}, 20, 0)
self.object:set_yaw(math.pi+num)

View File

@ -1,4 +1,12 @@
mobs:register_mob("dmobs:elephant", {
local followf = {}
-- detect common minetest famous mobs
if minetest.get_modpath("farming") then
table.insert(followf, "farming:wheat")
table.insert(followf, "farming:seed_cotton")
end
mobs:register_mob("mobs_doomed:elephant", {
type = "animal",
passive = false,
reach = 1,
@ -21,6 +29,7 @@ mobs:register_mob("dmobs:elephant", {
jump = false,
water_damage = 2,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
fall_damage = 1,
fall_speed = -20, -- extra heavy!
@ -28,10 +37,10 @@ mobs:register_mob("dmobs:elephant", {
replace_rate = 10,
replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "ethereal:bamboo"},
replace_with = "air",
follow = {"farming:wheat"},
follow = followf,
view_range = 14,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
{name = "mobs:meat_raw", chance = 2, min = 1, max = 3},
},
animation = {
speed_normal = 5,
@ -55,4 +64,4 @@ mobs:register_mob("dmobs:elephant", {
})
mobs:register_egg("dmobs:elephant", "Elephant", "default_dry_grass.png", 1)
mobs:register_egg("mobs_doomed:elephant", "Elephant", "default_dry_grass.png", 1)

View File

@ -1,5 +1,13 @@
local followf = {}
table.insert(followf, "mobs:meat_raw")
if minetest.get_modpath("mobs_animal") then
table.insert(followf, "mobs_animal:muttom_raw")
end
-- Fox
mobs:register_mob("dmobs:fox", {
mobs:register_mob("mobs_doomed:fox", {
type = "monster",
attacks_monsters = true,
reach = 1,
@ -9,8 +17,8 @@ mobs:register_mob("dmobs:fox", {
hp_max = 52,
armor = 130,
collisionbox = {-0.4, -0.6, -0.4, 0.3, 0.3, 0.3},
runaway = true,
pathfinding = true,
-- runaway = true,
-- pathfinding = true,
visual = "mesh",
mesh = "fox.b3d",
textures = {
@ -33,12 +41,13 @@ mobs:register_mob("dmobs:fox", {
water_damage = 0,
lava_damage = 2,
light_damage = 0,
fire_damage = 2,
fall_damage = 1,
fear_height = 4,
replace_rate = 10,
replace_what = {"farming:wheat_5", "default:fence_wood", "default:grass_5", "default:dirt_with_grass"},
replace_with = "air",
follow = {"mobs:meat_raw"},
follow = followf,
view_range = 14,
animation = {
speed_normal = 6,
@ -63,4 +72,4 @@ mobs:register_mob("dmobs:fox", {
})
mobs:register_egg("dmobs:fox", "Fox", "wool_orange.png", 1)
mobs:register_egg("mobs_doomed:fox", "Fox", "wool_orange.png", 1)

View File

@ -1,4 +1,4 @@
mobs:register_mob("dmobs:gnorm", {
mobs:register_mob("mobs_doomed:gnorm", {
type = "npc",
can_dig = true,
passive = true,
@ -23,10 +23,15 @@ mobs:register_mob("dmobs:gnorm", {
jump = true,
water_damage = 0,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
fall_damage = 1,
fall_speed = -6,
fear_height = 4,
drops = {
{name = "default:wood", chance = 1, min = 1, max = 1},
{name = "default:apple", chance = 1, min = 1, max = 1},
},
replace_rate = 10,
replace_what = {"default:apple", "default:stone", "default:stone_with_coal", "default:fence_wood"},
replace_with = "air",
@ -56,4 +61,4 @@ mobs:register_mob("dmobs:gnorm", {
})
mobs:register_egg("dmobs:gnorm", "Gnorm", "default_dirt.png", 1)
mobs:register_egg("mobs_doomed:gnorm", "Gnorm", "default_dirt.png", 1)

View File

@ -1,7 +1,7 @@
--stone golem
mobs:register_mob("dmobs:golem", {
mobs:register_mob("mobs_doomed:golem", {
type = "monster",
reach = 3,
damage = 2,
@ -22,10 +22,12 @@ mobs:register_mob("dmobs:golem", {
run_velocity = 2.5,
jump = true,
drops = {
{name = "dmobs:golemstone", chance = 30, min = 1, max = 1},
{name = "default:stone", chance = 1, min = 1, max = 5},
{name = "mobs_doomed:golemstone", chance = 30, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 2,
fire_damage = 1,
light_damage = 1,
fall_damage = 0,
fear_height = 10,
@ -45,4 +47,4 @@ mobs:register_mob("dmobs:golem", {
})
mobs:register_egg("dmobs:golem", "Stone Golem", "default_stone.png", 1)
mobs:register_egg("mobs_doomed:golem", "Stone Golem", "default_stone.png", 1)

View File

@ -1,5 +1,5 @@
mobs:register_mob("dmobs:golem_friendly", {
mobs:register_mob("mobs_doomed:golem_friendly", {
type = "npc",
reach = 3,
damage = 2,
@ -15,6 +15,9 @@ mobs:register_mob("dmobs:golem_friendly", {
{"dmobs_golem.png"},
},
follow = "default:cobble",
drops = {
{name = "default:cobble", chance = 1, min = 1, max = 3},
},
blood_texture = "default_stone.png",
visual_size = {x=1, y=1},
makes_footstep_sound = true,
@ -23,6 +26,7 @@ mobs:register_mob("dmobs:golem_friendly", {
jump = true,
water_damage = 0,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
fall_damage = 0,
fear_height = 10,
@ -41,4 +45,4 @@ mobs:register_mob("dmobs:golem_friendly", {
},
})
mobs:register_egg("dmobs:golem_friendly", "Stone Golem (friendly)", "default_stone.png", 1)
mobs:register_egg("mobs_doomed:golem_friendly", "Stone Golem (friendly)", "default_stone.png", 1)

View File

@ -1,4 +1,14 @@
mobs:register_mob("dmobs:hedgehog", {
local followf = {}
-- detect common minetest famous mobs
if minetest.get_modpath("farming") then
table.insert(followf, "farming:bread")
table.insert(followf, "farming:wheat")
table.insert(followf, "farming:seed_cotton")
end
mobs:register_mob("mobs_doomed:hedgehog", {
type = "animal",
passive = true,
hp_min = 12,
@ -19,12 +29,16 @@ mobs:register_mob("dmobs:hedgehog", {
jump_height = 0.6,
water_damage = 2,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
fall_damage = 1,
fall_speed = -6,
fear_height = 4,
view_range = 14,
follow = {"farming:bread"},
follow = followf,
drops = {
{name = "mobs:meat_raw", chance = 2, min = 1, max = 3},
},
animation = {
speed_normal = 5,
speed_run = 10,
@ -47,4 +61,4 @@ mobs:register_mob("dmobs:hedgehog", {
})
mobs:register_egg("dmobs:hedgehog", "Hedgehog", "wool_brown.png", 1)
mobs:register_egg("mobs_doomed:hedgehog", "Hedgehog", "wool_brown.png", 1)

View File

@ -1,4 +1,4 @@
mobs:register_mob("dmobs:nyan", {
mobs:register_mob("mobs_doomed:nyan", {
type = "animal",
passive = true,
reach = 4,
@ -12,7 +12,7 @@ mobs:register_mob("dmobs:nyan", {
textures = {
{"dmobs_nyancat.png"},
},
jump = true,
jump = true,
fly = true,
fall_speed = 0,
stepheight = 1.5,
@ -25,10 +25,11 @@ mobs:register_mob("dmobs:nyan", {
run_chance = 20,
jump = true,
drops = {
{name = "default:nyan_cat", chance = 2, min = 1, max = 1},
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 2,
fire_damage = 1,
light_damage = 0,
follow = {"default:mese"},
view_range = 14,
@ -44,7 +45,7 @@ mobs:register_mob("dmobs:nyan", {
},
do_custom = function(self)
local apos = self.object:get_pos()
local apos = self.object:get_pos(); if not apos then return end
local vec = self.object:get_velocity()
local part = minetest.add_particlespawner({
amount = 5,
@ -75,4 +76,4 @@ mobs:register_mob("dmobs:nyan", {
})
mobs:register_egg("dmobs:nyan", "Nyan Cat", "wool_pink.png", 1)
mobs:register_egg("mobs_doomed:nyan", "Nyan Cat", "wool_pink.png", 1)

View File

@ -1,5 +1,5 @@
-- Ogre
mobs:register_mob("dmobs:ogre", {
mobs:register_mob("mobs_doomed:ogre", {
type = "monster",
passive = false,
reach = 2,
@ -26,6 +26,7 @@ mobs:register_mob("dmobs:ogre", {
rotate = 180,
water_damage = 0,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
fall_damage = 1,
fall_speed = -14,
@ -42,8 +43,7 @@ mobs:register_mob("dmobs:ogre", {
run_end = 38,
punch_start = 70,
punch_end = 100,
},
})
mobs:register_egg("dmobs:ogre", "Ogre", "default_desert_sand.png", 1)
mobs:register_egg("mobs_doomed:ogre", "Ogre", "default_desert_sand.png", 1)

View File

@ -1,6 +1,6 @@
-- Orc
mobs:register_mob("dmobs:orc", {
mobs:register_mob("mobs_doomed:orc", {
type = "monster",
passive = false,
reach = 1,
@ -26,6 +26,7 @@ mobs:register_mob("dmobs:orc", {
jump = true,
water_damage = 0,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
fall_damage = 1,
fall_speed = -13,
@ -42,12 +43,11 @@ mobs:register_mob("dmobs:orc", {
run_end = 18,
punch_start = 20,
punch_end = 30,
},
})
-- Orc (Redesign)
mobs:register_mob("dmobs:orc2", {
mobs:register_mob("mobs_doomed:orc2", {
type = "monster",
passive = false,
reach = 1,
@ -94,5 +94,5 @@ mobs:register_mob("dmobs:orc2", {
})
mobs:register_egg("dmobs:orc2", "Morgul Orc", "default_desert_sand.png", 1) -- new and improved, hey
mobs:register_egg("dmobs:orc", "Orc", "default_desert_sand.png", 1)
mobs:register_egg("mobs_doomed:orc2", "Morgul Orc", "default_desert_sand.png", 1) -- new and improved, hey
mobs:register_egg("mobs_doomed:orc", "Orc", "default_desert_sand.png", 1)

View File

@ -1,4 +1,47 @@
mobs:register_mob("dmobs:owl", {
local follow = {}
-- detect common minetest famous mobs
if minetest.get_modpath("farming") then
table.insert(follow, "farming:seed_wheat")
table.insert(follow, "farming:seed_cotton")
end
if minetest.get_modpath("butterflies") then
table.insert(follow, "butterflies:butterfly_red")
table.insert(follow, "butterflies:butterfly_violet")
table.insert(follow, "butterflies:butterfly_white")
end
if minetest.get_modpath("fireflies") then
table.insert(follow, "fireflies:firefly")
end
if minetest.get_modpath("mobs_animal") then
table.insert(follow, "mobs_animal:rat")
table.insert(follow, "mobs_animal:bee")
table.insert(follow, "mobs_animal:bunny")
table.insert(follow, "mobs_animal:chicken")
table.insert(follow, "mobs_animal:muttom_raw")
end
-- compatibility with those made specially for other games
if minetest.get_modpath("mobs_bugslive") then
table.insert(follow, "mobs_bugslive:bug")
end
if minetest.get_modpath("mobs_butterfly") then
table.insert(follow, "mobs_butterfly:butterfly")
end
if minetest.get_modpath("mobs_fish") then
table.insert(follow, "mobs_fish:tropical")
table.insert(follow, "mobs_fish:clownfish")
end
if minetest.get_modpath("mobs_better_rat") then
table.insert(follow, "mobs_better_rat:rat")
end
if minetest.get_modpath("mobs_bat") then
table.insert(follow, "mobs_bat:bat")
end
if minetest.get_modpath("mobs_birds") then
table.insert(follow, "mobs_birds:bird_sm")
end
mobs:register_mob("mobs_doomed:owl", {
type = "animal",
passive = true,
hp_min = 12,
@ -16,10 +59,15 @@ mobs:register_mob("dmobs:owl", {
walk_velocity = 0,
run_velocity = 0,
jump = false,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
},
water_damage = 2,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
view_range = 1,
follow=follow,
do_custom = function(self)
local daytime = minetest.get_timeofday()*24000
if daytime <=6000 then
@ -34,13 +82,17 @@ mobs:register_mob("dmobs:owl", {
})
end
end,
on_rightclick = function(self, clicker)
if mobs:feed_tame(self, clicker, 8, true, true) then return end
if mobs:protect(self, clicker) then return end
mobs:capture_mob(self, clicker, 0, 50, 5, false, nil)
end,
animation = {
speed_normal = 1,
walk_start = 1,
walk_end = 50,
},
})
mobs:register_egg("dmobs:owl", "Owl", "default_tree.png", 1)
mobs:register_egg("mobs_doomed:owl", "Owl", "default_tree.png", 1)

View File

@ -1,6 +1,6 @@
mobs:register_mob("dmobs:panda", {
mobs:register_mob("mobs_doomed:panda", {
type = "animal",
passive = false,
reach = 1,
@ -26,6 +26,7 @@ mobs:register_mob("dmobs:panda", {
},
water_damage = 0,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
fall_damage = 1,
fall_speed = -10,
@ -34,7 +35,10 @@ mobs:register_mob("dmobs:panda", {
replace_rate = 10,
replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "ethereal:bamboo"},
replace_with = "air",
follow = {"default:papyrus"},
follow = {
{"default:papyrus"},
{"default:apple"}
},
view_range = 14,
animation = {
speed_normal = 6,
@ -60,4 +64,4 @@ mobs:register_mob("dmobs:panda", {
})
mobs:register_egg("dmobs:panda", "Panda", "default_papyrus.png", 1)
mobs:register_egg("mobs_doomed:panda", "Panda", "default_papyrus.png", 1)

View File

@ -1,4 +1,4 @@
mobs:register_mob("dmobs:pig", {
mobs:register_mob("mobs_doomed:pig", {
type = "animal",
passive = true,
reach = 4,
@ -41,8 +41,13 @@ mobs:register_mob("dmobs:pig", {
end,
water_damage = 0,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
follow = {"default:apple"},
follow = {
{"default:apple"},
{"default:leaves"},
{"mobs:meat_raw"},
},
view_range = 14,
animation = {
speed_normal = 10,
@ -66,4 +71,4 @@ mobs:register_mob("dmobs:pig", {
})
mobs:register_egg("dmobs:pig", "flying Pig", "wool_pink.png", 1)
mobs:register_egg("mobs_doomed:pig", "flying Pig", "wool_pink.png", 1)

View File

@ -40,8 +40,12 @@ local pigdef = {
end,
water_damage = 0,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
follow = {"default:apple"},
follow = {
{"default:apple"},
{"default:leaves"},
},
view_range = 14,
animation = {
speed_normal = 10,
@ -64,12 +68,12 @@ local pigdef = {
end,
}
if dmobs.destructive then
if mobs_doomed.destructive then
pigdef.sounds.explode = "tnt_explode"
pigdef.attack_type = "explode"
end
mobs:register_mob("dmobs:pig_evil", pigdef)
mobs:register_mob("mobs_doomed:pig_evil", pigdef)
mobs:register_egg("dmobs:pig_evil", "Kamikaze Pig", "wool_pink.png", 1)
mobs:register_egg("mobs_doomed:pig_evil", "Kamikaze Pig", "wool_pink.png", 1)

View File

@ -1,6 +1,19 @@
--Rat
mobs:register_mob("dmobs:rat", {
local followf = {}
table.insert(followf, "group:food_cheese")
-- detect common minetest famous mobs
if minetest.get_modpath("farming") then
table.insert(followf, "farming:wheat")
end
if minetest.get_modpath("mobs_animal") then
table.insert(followf, "mobs_animal:muttom_raw")
table.insert(followf, "mobs:meat_raw")
end
mobs:register_mob("mobs_doomed:rat", {
type = "monster",
reach = 2,
damage = 2,
@ -26,13 +39,14 @@ mobs:register_mob("dmobs:rat", {
},
water_damage = 0,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
fall_damage = 1,
fear_height = 5,
replace_rate = 10,
replace_what = {"farming:wheat_5", "farming:wheat_4", "farming:wheat_2", "farming:wheat_3"},
replace_with = "air",
follow = {"mobs_animal:cheese"},
follow = followf,
view_range = 14,
animation = {
speed_normal = 10,
@ -49,4 +63,4 @@ mobs:register_mob("dmobs:rat", {
})
mobs:register_egg("dmobs:rat", "Giant Rat", "wool_grey.png", 1)
mobs:register_egg("mobs_doomed:rat", "Giant Rat", "wool_grey.png", 1)

View File

@ -1,7 +1,13 @@
--skeleton
local dropsf = {}
mobs:register_mob("dmobs:skeleton", {
-- detect common minetest famous mobs
if minetest.get_modpath("bones") then
dropsf = {name = "bones:bones", chance = 5, min = 3, max = 6}
end
mobs:register_mob("mobs_doomed:skeleton", {
type = "monster",
reach = 3,
damage = 2,
@ -21,11 +27,10 @@ mobs:register_mob("dmobs:skeleton", {
walk_velocity = 1,
run_velocity = 2.5,
jump = true,
drops = {
{name = "bones:bones", chance = 5, min = 3, max = 6},
},
drops = dropsf,
water_damage = 0,
lava_damage = 2,
fire_damage = 1,
light_damage = 1,
fall_damage = 0,
fear_height = 10,
@ -45,4 +50,4 @@ mobs:register_mob("dmobs:skeleton", {
})
mobs:register_egg("dmobs:skeleton", "Skeleton", "default_dirt.png", 1)
mobs:register_egg("mobs_doomed:skeleton", "Skeleton", "default_dirt.png", 1)

View File

@ -1,5 +1,16 @@
mobs:register_mob("dmobs:tortoise", {
local dropstor
dropstor = {{name = "default:stick", chance = 1, min = 1, max = 1},}
if minetest.get_modpath("farming") then
dropstor = {
{name = "default:stick", chance = 1, min = 1, max = 1},
{name = "farming:string", chance = 2, min = 0, max = 1},
}
end
mobs:register_mob("mobs_doomed:tortoise", {
type = "animal",
passive = false,
reach = 1,
@ -22,16 +33,18 @@ mobs:register_mob("dmobs:tortoise", {
jump = false,
jump_height = 0.5,
floats = true,
drops = {
{name = "default:stick", chance = 1, min = 1, max = 1},
},
drops = dropstor,
water_damage = 0,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
fall_damage = 1,
fall_speed = -10,
fear_height = 4,
follow = {"default:papyrus"},
follow = {
{"default:papyrus"},
{"default:leaves"}
},
view_range = 14,
animation = {
speed_normal = 6,
@ -50,9 +63,9 @@ mobs:register_mob("dmobs:tortoise", {
return
end
mobs:capture_mob(self, clicker, 30, 50, 80, false, nil)
mobs:capture_mob(self, clicker, 0, 50, 80, false, nil)
end,
})
mobs:register_egg("dmobs:tortoise", "Tortoise", "default_grass.png", 1)
mobs:register_egg("mobs_doomed:tortoise", "Tortoise", "default_grass.png", 1)

View File

@ -1,6 +1,6 @@
-- Treeman
mobs:register_mob("dmobs:treeman", {
mobs:register_mob("mobs_doomed:treeman", {
type = "monster",
reach = 3,
damage = 2,
@ -25,7 +25,8 @@ mobs:register_mob("dmobs:treeman", {
{name = "default:tree", chance = 5, min = 3, max = 6},
},
water_damage = 0,
lava_damage = 2,
lava_damage = 4,
fire_damage = 3,
light_damage = 0,
fall_damage = 1,
fear_height = 10,
@ -45,4 +46,4 @@ mobs:register_mob("dmobs:treeman", {
})
mobs:register_egg("dmobs:treeman", "Treeman", "default_tree.png", 1)
mobs:register_egg("mobs_doomed:treeman", "Treeman", "default_tree.png", 1)

View File

@ -1,5 +1,5 @@
--Wasps!
mobs:register_mob("dmobs:wasp", {
mobs:register_mob("mobs_doomed:wasp", {
type = "monster",
reach = 1,
damage = 2,
@ -27,6 +27,7 @@ mobs:register_mob("dmobs:wasp", {
jump = true,
water_damage = 2,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
view_range = 14,
animation = {
@ -44,15 +45,15 @@ mobs:register_mob("dmobs:wasp", {
})
mobs:register_egg("dmobs:wasp", "Wasp", "dmobs_wasp_bg.png", 1)
mobs:register_egg("mobs_doomed:wasp", "Wasp", "dmobs_wasp_bg.png", 1)
mobs:register_mob("dmobs:wasp_leader", {
mobs:register_mob("mobs_doomed:wasp_leader", {
type = "monster",
reach = 1,
damage = 2,
attack_type = "shoot",
shoot_interval = 1,
arrow = "dmobs:sting",
arrow = "mobs_doomed:sting",
shoot_offset = 0,
hp_min = 82,
hp_max = 122,
@ -82,12 +83,13 @@ mobs:register_mob("dmobs:wasp_leader", {
do_custom = function(self)
if math.random(1, 500) >= 500 then
local pos = self.object:get_pos()
minetest.add_entity(pos, "dmobs:wasp")
if not pos then return end
minetest.add_entity(pos, "mobs_doomed:wasp")
end
end,
replace_rate = 700,
replace_what = {"air"},
replace_with = "dmobs:hive",
replace_with = "mobs_doomed:hive",
water_damage = 2,
lava_damage = 2,
light_damage = 0,
@ -107,4 +109,4 @@ mobs:register_mob("dmobs:wasp_leader", {
})
mobs:register_egg("dmobs:wasp_leader", "King of Sting", "dmobs_wasp_bg.png", 1)
mobs:register_egg("mobs_doomed:wasp_leader", "King of Sting", "dmobs_wasp_bg.png", 1)

View File

@ -1,4 +1,4 @@
mobs:register_mob("dmobs:whale", {
mobs:register_mob("mobs_doomed:whale", {
type = "animal",
passive = false,
reach = 1,
@ -26,6 +26,7 @@ mobs:register_mob("dmobs:whale", {
fly_in = "default:water_source",
water_damage = 0,
lava_damage = 2,
fire_damage = 2,
light_damage = 0,
follow = {"fishing:fish_cooked"},
view_range = 14,
@ -59,4 +60,4 @@ mobs:register_mob("dmobs:whale", {
})
mobs:register_egg("dmobs:whale", "Whale", "default_water.png", 1)
mobs:register_egg("mobs_doomed:whale", "Whale", "default_water.png", 1)

View File

@ -1 +1,4 @@
name = dmobs
name = mobs_doomed
depends = default, mobs, wool, farming
optional_depends = bones, ethereal, caverealms, mobs_animal, player_api
description = MOBS for more monsters like dragons, orcs, ogres, elephans, etc

View File

@ -2,21 +2,21 @@
--wasps nest
minetest.register_node("dmobs:hive", {
minetest.register_node("mobs_doomed:hive", {
description = "Wasp Nest",
tiles = {"dmobs_hive.png"},
groups = {crumbly=1, oddly_breakable_by_hand=1, falling_node=1, flammable=1},
on_destruct = function(pos, oldnode)
minetest.add_entity(pos, "dmobs:wasp")
minetest.add_entity(pos, "dmobs:wasp")
minetest.add_entity(pos, "dmobs:wasp")
minetest.add_entity(pos, "dmobs:wasp")
minetest.add_entity(pos, "mobs_doomed:wasp")
minetest.add_entity(pos, "mobs_doomed:wasp")
minetest.add_entity(pos, "mobs_doomed:wasp")
minetest.add_entity(pos, "mobs_doomed:wasp")
end,
})
--golem
minetest.register_node("dmobs:golemstone", {
minetest.register_node("mobs_doomed:golemstone", {
description = "golem stone",
tiles = {"dmobs_golem_stone.png",},
groups = {cracky=1},
@ -25,7 +25,7 @@ minetest.register_node("dmobs:golemstone", {
local node2 = minetest.get_node({x=pos.x, y=pos.y-2, z=pos.z}).name
local node3 = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name
if node1 == "default:stone" and node2 == "default:stone" and node3 == "air" then
minetest.add_entity(pos, "dmobs:golem_friendly")
minetest.add_entity(pos, "mobs_doomed:golem_friendly")
minetest.remove_node({x=pos.x, y=pos.y-1, z=pos.z})
minetest.remove_node({x=pos.x, y=pos.y-2, z=pos.z})
minetest.remove_node({x=pos.x, y=pos.y, z=pos.z})

BIN
screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 KiB

BIN
screenshot_red_dragon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 KiB

15
settingtypes.txt Normal file
View File

@ -0,0 +1,15 @@
# if enabled will spawn most new common animals from this mod
mobs_doomed.regulars (Enable most common new animals) bool true
# Timer for the egg mechanics, default 100
mobs_doomed.eggtimer (Spawn timer eggs Mobs) int 100
# if enabled be destructive for structure nodes each fireball or explotion from mobs
mobs_doomed.destructive (Fire balls will be destructive) bool true
# If disabled only a common dragon will be spawned
mobs_doomed.dragons (Enable all the dragons not only common) bool true
# if enabled will load a mobs very ugly and stupid.. nyancat.. a pig that fly and leve arciris
mobs_doomed.allow_nyanc (Enable the stupid NyanCat mob fliying pig) bool false

View File

@ -1,7 +1,7 @@
-- spawn.lua rewritten, using this latest function frim mobs_redo :
--
--mobs:spawn({
-- name = "dmobs:dragon",
-- name = "mobs_doomed:dragon",
-- nodes = {"air"},
-- neighbor = {"default:stone"},
-- min_light = 10,
@ -22,67 +22,69 @@
--local cr = minetest.get_modpath("caverealms")
--local nodes, neighbor = {}, {}
if dmobs.regulars then
if mobs_doomed.regulars then
-- friendlies
-- nodes = {"darkage:marble"}
-- neighbor = {"darkage:slate"}
mobs:spawn({name = "dmobs:nyan", nodes = {"air"}, neighbor = {"group:leaves"},
min_light = 10, max_light = 15, interval = 300, chance = 64000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:nyan", nodes = {"air"}, neighbor = {"ethereal:mushroom", "nyanland:meseleaves"},
min_light = 10, max_light = 15, interval = 300, chance = 16000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:hedgehog", nodes = {"group:flora", "ethereal:prairie_dirt"},
if mobs_doomed.allow_nyanc then
mobs:spawn({name = "mobs_doomed:nyan", nodes = {"air"}, neighbor = {"group:leaves"},
min_light = 10, max_light = 15, interval = 300, chance = 64000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "mobs_doomed:nyan", nodes = {"air"}, neighbor = {"ethereal:mushroom", "nyanland:meseleaves"},
min_light = 10, max_light = 15, interval = 300, chance = 16000, active_object_count = 2, min_height = 0, max_height = 2000})
end
mobs:spawn({name = "mobs_doomed:hedgehog", nodes = {"group:flora", "ethereal:prairie_dirt"},
neighbor = {}, min_light = 0, max_light = 8, interval = 300, chance = 8000, active_object_count = 3, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:whale", nodes = {"default:water_source"}, neighbor = {"group:sand"},
mobs:spawn({name = "mobs_doomed:whale", nodes = {"default:water_source"}, neighbor = {"group:sand"},
min_light = 0, max_light = 15, interval = 300, chance = 16000, active_object_count = 2, min_height = -100, max_height = 0})
mobs:spawn({name = "dmobs:owl", nodes = {"group:tree"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:owl", nodes = {"group:tree"}, neighbor = {},
min_light = 0, max_light = 7, interval = 300, chance = 16000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:gnorm", nodes = {"default:dirt_with_grass", "ethereal:bamboo_dirt"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:gnorm", nodes = {"default:dirt_with_grass", "ethereal:bamboo_dirt"}, neighbor = {},
min_light = 10, max_light = 15, interval = 300, chance = 32000, active_object_count = 2, min_height = -100, max_height = 0})
mobs:spawn({name = "dmobs:tortoise", nodes = {"default:water_source", "group:sand"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:tortoise", nodes = {"default:water_source", "group:sand"}, neighbor = {},
min_light = 5, max_light = 10, interval = 300, chance = 8000, active_object_count = 2, min_height = -100, max_height = 500})
mobs:spawn({name = "dmobs:elephant", nodes = {"default:dirt_with_dry_grass", "ethereal:grove_dirt"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:elephant", nodes = {"default:dirt_with_dry_grass", "ethereal:grove_dirt"}, neighbor = {},
min_light = 10, max_light = 15, interval = 300, chance = 16000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:pig", nodes = {"default:dirt_with_grass", "ethereal:prairie_dirt", "nyanland:cloudstone"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:pig", nodes = {"default:dirt_with_grass", "ethereal:prairie_dirt", "nyanland:cloudstone"}, neighbor = {},
min_light = 10, max_light = 15, interval = 300, chance = 32000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:panda", nodes = {"default:dirt_with_grass", "ethereal:bamboo_dirt"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:panda", nodes = {"default:dirt_with_grass", "ethereal:bamboo_dirt"}, neighbor = {},
min_light = 10, max_light = 15, interval = 300, chance = 32000, active_object_count = 2, min_height = 0, max_height = 2000})
-- baddies
mobs:spawn({name = "dmobs:wasp", nodes = {"air"}, neighbor = {"group:leaves"}, min_light = 10, max_light = 15, interval = 300, chance = 32000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:wasp", nodes = {"dmobs:hive"}, neighbor = {}, min_light = 10, max_light = 15, interval = 300, chance = 16000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:wasp_leader", nodes = {"group:leaves", "dmobs:hive"}, neighbor = {}, min_light = 10, max_light = 15, interval = 300, chance = 64000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "mobs_doomed:wasp", nodes = {"air"}, neighbor = {"group:leaves"}, min_light = 10, max_light = 15, interval = 300, chance = 32000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "mobs_doomed:wasp", nodes = {"mobs_doomed:hive"}, neighbor = {}, min_light = 10, max_light = 15, interval = 300, chance = 16000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "mobs_doomed:wasp_leader", nodes = {"group:leaves", "mobs_doomed:hive"}, neighbor = {}, min_light = 10, max_light = 15, interval = 300, chance = 64000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:golem", nodes = {"group:stone"}, neighbor = {}, min_light = 0,
mobs:spawn({name = "mobs_doomed:golem", nodes = {"group:stone"}, neighbor = {}, min_light = 0,
max_light = 7, interval = 300, chance = 16000, active_object_count = 2, min_height = -32000, max_height = 100})
mobs:spawn({name = "dmobs:pig_evil", nodes = {"group:leave", "ethereal:bamboo_leaves"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:pig_evil", nodes = {"group:leave", "ethereal:bamboo_leaves"}, neighbor = {},
min_light = 10, max_light = 15, interval = 300, chance = 64000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:fox", nodes = {"group:leaves"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:fox", nodes = {"group:leaves"}, neighbor = {},
min_light = 0, max_light = 10, interval = 300, chance = 32000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:rat", nodes = {"group:stone", "group:sand"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:rat", nodes = {"group:stone", "group:sand"}, neighbor = {},
min_light = 0, max_light = 10, interval = 300, chance = 32000, active_object_count = 2, min_height = -30000, max_height = 100})
mobs:spawn({name = "dmobs:treeman", nodes = {"group:leaves"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:treeman", nodes = {"group:leaves"}, neighbor = {},
min_light = 7, max_light = 15, interval = 300, chance = 16000, active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:skeleton", nodes = {"group:stone","caverealms:stone_with_salt","default:desert_sand"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:skeleton", nodes = {"group:stone","caverealms:stone_with_salt","default:desert_sand"}, neighbor = {},
min_light = 0, max_light = 10, interval = 300, chance = 16000, active_object_count = 2, min_height = -31000, max_height = -1000})
-- Orcs and ogres spawn more often when dragons are disabled
if not dmobs.dragons then
mobs:spawn({name = "dmobs:orc",
if not mobs_doomed.dragons then
mobs:spawn({name = "mobs_doomed:orc",
nodes = {"default:snow_block", "default:permafrost_with_moss", "default:permafrost_with_stone", "ethereal:cold_dirt"},
neighbor = {}, min_light = 0, max_light = 10, interval = 300, chance = 6000,
active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:ogre",
mobs:spawn({name = "mobs_doomed:ogre",
nodes = {"default:snow_block", "default:permafrost_with_moss", "default:permafrost_with_stone", "ethereal:cold_dirt"},
neighbor = {}, min_light = 0, max_light = 10, interval = 300, chance = 16000,
active_object_count = 2, min_height = 0, max_height = 2000})
else
mobs:spawn({name = "dmobs:orc",
mobs:spawn({name = "mobs_doomed:orc",
nodes = {"default:snow_block", "default:permafrost_with_moss", "default:permafrost_with_stone", "ethereal:cold_dirt"},
neighbor = {}, min_light = 0, max_light = 10, interval = 300, chance = 8000,
active_object_count = 2, min_height = 0, max_height = 2000})
mobs:spawn({name = "dmobs:ogre",
mobs:spawn({name = "mobs_doomed:ogre",
nodes = {"default:snow_block", "default:permafrost_with_moss", "default:permafrost_with_stone", "ethereal:cold_dirt"},
neighbor = {}, min_light = 0, max_light = 10, interval = 300, chance = 32000,
active_object_count = 2, min_height = 0, max_height = 2000})
@ -95,24 +97,24 @@ end
-------------
-- Generic dragon always spawn, the others only if enabled
mobs:spawn({name = "dmobs:dragon", nodes = {"group:leaves"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:dragon", nodes = {"group:leaves"}, neighbor = {},
min_light = 5, max_light = 15, interval = 300, chance = 16000, active_object_count = 2, min_height = 0, max_height = 30000})
if dmobs.dragons then
mobs:spawn({name = "dmobs:dragon1", nodes = {"ethereal:fiery_dirt", "default:desert_sand"}, neighbor = {},
if mobs_doomed.dragons then
mobs:spawn({name = "mobs_doomed:dragon1", nodes = {"ethereal:fiery_dirt", "default:desert_sand"}, neighbor = {},
min_light = 5, max_light = 15, interval = 300, chance = 24000, active_object_count = 2, min_height = 0, max_height = 30000})
mobs:spawn({name = "dmobs:dragon2", nodes = {"ethereal:crystal_dirt", "default:dirt_with_dry_grass"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:dragon2", nodes = {"ethereal:crystal_dirt", "default:dirt_with_dry_grass"}, neighbor = {},
min_light = 5, max_light = 15, interval = 300, chance = 24000, active_object_count = 2, min_height = 0, max_height = 30000})
mobs:spawn({name = "dmobs:dragon3", nodes = {"ethereal:jungle_dirt", "default:jungleleaves"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:dragon3", nodes = {"ethereal:jungle_dirt", "default:jungleleaves"}, neighbor = {},
min_light = 0, max_light = 10, interval = 300, chance = 24000, active_object_count = 2, min_height = 0, max_height = 30000})
mobs:spawn({name = "dmobs:dragon4",
mobs:spawn({name = "mobs_doomed:dragon4",
nodes = {"default:snow_block", "default:permafrost_with_moss", "default:permafrost_with_stone", "ethereal:cold_dirt"}, neighbor = {},
min_light = 5, max_light = 15, interval = 300, chance = 24000, active_object_count = 2, min_height = 0, max_height = 30000})
mobs:spawn({name = "dmobs:waterdragon", nodes = {"default:water_source"}, neighbor = {"air"},
mobs:spawn({name = "mobs_doomed:waterdragon", nodes = {"default:water_source"}, neighbor = {"air"},
min_light = 0, max_light = 15, interval = 300, chance = 32000, active_object_count = 2, min_height = -10, max_height = 100})
mobs:spawn({name = "dmobs:wyvern", nodes = {"group:leaves"}, neighbor = {},
mobs:spawn({name = "mobs_doomed:wyvern", nodes = {"group:leaves"}, neighbor = {},
min_light = 0, max_light = 10, interval = 300, chance = 32000, active_object_count = 2, min_height = 0, max_height = 30000})
mobs:spawn({name = "dmobs:dragon_great",
mobs:spawn({name = "mobs_doomed:dragon_great",
nodes = {"ethereal:jungle_dirt", "default:jungleleaves", "default:lava_source", "caverealms:glow_mese",
"caverealms:glow_amethyst", "caverealms:glow_crystal", "caverealms:glow_emerald","cavereals:glow_ruby"}, neighbor = {},
min_light = 0, max_light = 15, interval = 300, chance = 32000, active_object_count = 2, min_height = -30000, max_height = 30000})

1
textures/nyancat.png Symbolic link
View File

@ -0,0 +1 @@
dmobs_nyancat.png