Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dmobs
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Illuna-Minetest
dmobs
Commits
451b5244
Commit
451b5244
authored
8 years ago
by
Tai Kedzierski
Browse files
Options
Downloads
Patches
Plain Diff
separate out eggs defs
parent
83fb50d1
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
dragons/eggs.lua
+132
-0
132 additions, 0 deletions
dragons/eggs.lua
dragons/main.lua
+0
-134
0 additions, 134 deletions
dragons/main.lua
init.lua
+3
-1
3 additions, 1 deletion
init.lua
with
135 additions
and
135 deletions
dragons/eggs.lua
0 → 100644
+
132
−
0
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
)
)
This diff is collapsed.
Click to expand it.
dragons/main.lua
+
0
−
134
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
...
...
This diff is collapsed.
Click to expand it.
init.lua
+
3
−
1
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"
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment