Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
dmobs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Illuna-Minetest
dmobs
Commits
451b5244
Commit
451b5244
authored
Dec 14, 2016
by
Tai Kedzierski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
separate out eggs defs
parent
83fb50d1
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
135 additions
and
135 deletions
+135
-135
dragons/eggs.lua
dragons/eggs.lua
+132
-0
dragons/main.lua
dragons/main.lua
+0
-134
init.lua
init.lua
+3
-1
No files found.
dragons/eggs.lua
0 → 100644
View file @
451b5244
-- eggs from mobs_dragon --------------------------------------------------------------------------
local
dragonpairs
=
{
fire
=
{
colour
=
"red"
,
nest
=
"default:lava_source"
},
lightning
=
{
colour
=
"black"
,
nest
=
"default:obsidian"
},
poison
=
{
colour
=
"green"
,
nest
=
"default:cactus"
},
ice
=
{
colour
=
"black"
,
nest
=
"default:ice"
},
great
=
{
colour
=
"great"
,
nest
=
""
},
}
local
function
egg_transform
(
pos
,
node
,
clicker
,
item
,
_
)
local
wield_item
=
clicker
:
get_wielded_item
():
get_name
()
if
wield_item
==
"dmobs:dragon_gem"
then
local
p
=
{
x
=
pos
.
x
,
y
=
pos
.
y
-
1
,
z
=
pos
.
z
}
local
corner_name
for
x1
=
-
1
,
1
do
for
z1
=
-
1
,
1
do
p
.
x
=
pos
.
x
+
x1
p
.
z
=
pos
.
z
+
z1
local
nestfloor_name
=
minetest
.
get_node
(
p
).
name
if
x1
==
-
1
and
z1
==
-
1
then
corner_name
=
minetest
.
get_node
(
p
).
name
elseif
x1
==
0
and
z1
==
0
then
-- special case in centre
-- must be obsidian
if
nestfloor_name
~=
"default:obsidian"
then
return
end
else
-- else ring must all be of the same type
if
nestfloor_name
~=
corner_name
then
return
end
end
end
end
local
dragon_type
for
element
,
details
in
pairs
(
dragonpairs
)
do
if
corner_name
==
details
.
nest
then
dragon_type
=
element
break
end
end
minetest
.
chat_send_player
(
clicker
:
get_player_name
(),
" ... something seems to be happening .... come back later?"
)
minetest
.
after
(
100
,
function
(
pos
,
dragon
,
pname
)
minetest
.
set_node
(
pos
,
{
name
=
"dmobs:dragon_egg_"
..
dragon_type
})
end
,
pos
)
item
:
take_item
()
end
end
local
function
egghatch
(
pos
,
node
,
clicker
,
item
,
_
)
local
wield_item
=
clicker
:
get_wielded_item
():
get_name
()
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
minetest
.
chat_send_player
(
clicker
:
get_player_name
(),
" ... it ... swallowed the gem..."
)
minetest
.
after
(
100
,
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
ent
=
minetest
.
add_entity
(
pos
,
"dmobs:dragon_"
..
details
.
colour
)
minetest
.
sound_play
(
"dmobs_chirrup"
,{
pos
=
pos
,
max_hear_distance
=
20
})
local
obj
=
ent
:
get_luaentity
()
if
eggnode
~=
"dmobs:dragon_egg_great"
then
ent
:
set_properties
({
textures
=
{
"dmobs_dragon_young.png"
},
visual_size
=
{
x
=
1
,
y
=
1
},
})
end
obj
.
tamed
=
true
obj
.
owner
=
clicker
:
get_player_name
()
end
,
pos
,
clicker
:
get_player_name
()
)
item
:
take_item
()
break
end
end
-- for loop
end
-- Egg form dfinitions -----------------------------------------
local
base_egg
=
{
-- base template for all dragon eggs
description
=
"Dragon Egg"
,
drawtype
=
"mesh"
,
mesh
=
"egg.b3d"
,
tiles
=
{
"dmobs_egg.png"
},
paramtype
=
"light"
,
sunlight_propagates
=
true
,
is_ground_content
=
false
,
groups
=
{
fleshy
=
3
,
dig_immediate
=
3
},
sounds
=
default
.
node_sound_leaves_defaults
(),
on_rightclick
=
egg_transform
,
}
minetest
.
register_node
(
"dmobs:egg"
,
dmobs
.
deepclone
(
base_egg
)
)
-- clone, to not affect the base template
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
)
)
base_egg
.
tiles
=
{
"dmobs_egg2.png"
}
minetest
.
register_node
(
"dmobs:dragon_egg_lightning"
,
dmobs
.
deepclone
(
base_egg
)
)
base_egg
.
tiles
=
{
"dmobs_egg3.png"
}
minetest
.
register_node
(
"dmobs:dragon_egg_poison"
,
dmobs
.
deepclone
(
base_egg
)
)
base_egg
.
tiles
=
{
"dmobs_egg4.png"
}
minetest
.
register_node
(
"dmobs:dragon_egg_ice"
,
dmobs
.
deepclone
(
base_egg
)
)
base_egg
.
groups
.
not_in_creative_inventory
=
nil
--base_egg.tiles = {"dmobs_dragon_egg_great.png"} -- non existent
base_egg
.
tiles
=
{
"dmobs_fire.png"
}
base_egg
.
description
=
"Great Dragon Egg"
minetest
.
register_node
(
"dmobs:dragon_egg_great"
,
dmobs
.
deepclone
(
base_egg
)
)
dragons/main.lua
View file @
451b5244
...
...
@@ -61,140 +61,6 @@ dmobs.dragon.do_custom = function(self, dtime)
return
true
end
-- eggs from mobs_dragon --------------------------------------------------------------------------
local
function
egg_transform
(
pos
,
node
,
clicker
,
item
,
_
)
local
wield_item
=
clicker
:
get_wielded_item
():
get_name
()
if
wield_item
==
"dmobs:dragon_gem"
then
local
p
=
{
x
=
pos
.
x
,
y
=
pos
.
y
-
1
,
z
=
pos
.
z
}
local
corner_name
for
x1
=
-
1
,
1
do
for
z1
=
-
1
,
1
do
p
.
x
=
pos
.
x
+
x1
p
.
z
=
pos
.
z
+
z1
local
nestfloor_name
=
minetest
.
get_node
(
p
).
name
if
x1
==
-
1
and
z1
==
-
1
then
corner_name
=
minetest
.
get_node
(
p
).
name
elseif
x1
==
0
and
z1
==
0
then
-- special case in centre
-- must be obsidian
if
nestfloor_name
~=
"default:obsidian"
then
return
end
else
-- else ring must all be of the same type
if
nestfloor_name
~=
corner_name
then
return
end
end
end
end
local
dragon_type
if
corner_name
==
"default:lava_source"
then
dragon_type
=
"fire"
elseif
corner_name
==
"default:obsidian"
then
dragon_type
=
"lightning"
elseif
corner_name
==
"default:cactus"
then
dragon_type
=
"poison"
elseif
corner_name
==
"default:ice"
then
dragon_type
=
"ice"
end
minetest
.
chat_send_player
(
clicker
:
get_player_name
(),
" ... something seems to be happening .... come back later?"
)
minetest
.
after
(
100
,
function
(
pos
,
dragon
,
pname
)
minetest
.
set_node
(
pos
,
{
name
=
"dmobs:dragon_egg_"
..
dragon_type
})
end
,
pos
)
item
:
take_item
()
end
end
local
dragonpairs
=
{
fire
=
"red"
,
lightning
=
"black"
,
poison
=
"green"
,
ice
=
"black"
,
great
=
"great"
,
}
local
function
egghatch
(
pos
,
node
,
clicker
,
item
,
_
)
local
wield_item
=
clicker
:
get_wielded_item
():
get_name
()
local
eggnode
=
minetest
.
get_node
(
pos
).
name
for
nature
,
colour
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
minetest
.
chat_send_player
(
clicker
:
get_player_name
(),
" ... let the hatching... begin..."
)
minetest
.
after
(
100
,
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
ent
=
minetest
.
add_entity
(
pos
,
"dmobs:dragon_"
..
colour
)
minetest
.
sound_play
(
"dmobs_chirrup"
,{
pos
=
pos
,
max_hear_distance
=
20
})
local
obj
=
ent
:
get_luaentity
()
ent
:
set_properties
({
textures
=
{
"dmobs_dragon_young.png"
},
visual_size
=
{
x
=
1
,
y
=
1
},
})
obj
.
tamed
=
true
obj
.
owner
=
clicker
:
get_player_name
()
end
,
pos
,
clicker
:
get_player_name
()
)
item
:
take_item
()
end
end
-- for loop
end
local
base_egg
=
{
-- base template for all dragon eggs
description
=
"Dragon Egg"
,
drawtype
=
"mesh"
,
mesh
=
"egg.b3d"
,
tiles
=
{
"dmobs_egg.png"
},
paramtype
=
"light"
,
sunlight_propagates
=
true
,
is_ground_content
=
false
,
groups
=
{
fleshy
=
3
,
dig_immediate
=
3
},
sounds
=
default
.
node_sound_leaves_defaults
(),
on_rightclick
=
egg_transform
,
}
minetest
.
register_node
(
"dmobs:egg"
,
dmobs
.
deepclone
(
base_egg
)
)
-- clone, to not affect the base template
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
)
)
base_egg
.
tiles
=
{
"dmobs_egg2.png"
}
minetest
.
register_node
(
"dmobs:dragon_egg_lightning"
,
dmobs
.
deepclone
(
base_egg
)
)
base_egg
.
tiles
=
{
"dmobs_egg3.png"
}
minetest
.
register_node
(
"dmobs:dragon_egg_poison"
,
dmobs
.
deepclone
(
base_egg
)
)
base_egg
.
tiles
=
{
"dmobs_egg4.png"
}
minetest
.
register_node
(
"dmobs:dragon_egg_ice"
,
dmobs
.
deepclone
(
base_egg
)
)
base_egg
.
groups
.
not_in_creative_inventory
=
nil
--base_egg.tiles = {"dmobs_dragon_egg_great.png"}
base_egg
.
tiles
=
{
"dmobs_fire.png"
}
base_egg
.
description
=
"Great Dragon Egg"
minetest
.
register_node
(
"dmobs:dragon_egg_great"
,
dmobs
.
deepclone
(
base_egg
)
)
--items and tools
...
...
init.lua
View file @
451b5244
...
...
@@ -79,11 +79,13 @@ else
loadmob
(
"dragon4"
,
"/dragons/"
)
loadmob
(
"water_dragon"
,
"/dragons/"
)
loadmob
(
"wyvern"
,
"/dragons/"
)
dofile
(
minetest
.
get_modpath
(
"dmobs"
)
..
"/dragons/eggs.lua"
)
dofile
(
minetest
.
get_modpath
(
"dmobs"
)
..
"/arrows/dragonfire.lua"
)
dofile
(
minetest
.
get_modpath
(
"dmobs"
)
..
"/arrows/dragonarrows.lua"
)
end
--
A
rrow definitions
--
General a
rrow definitions
if
dmobs
.
destructive
==
true
then
dofile
(
minetest
.
get_modpath
(
"dmobs"
)
..
"/arrows/fire_explosive.lua"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment