After Width: | Height: | Size: 6.4 KiB |
|
@ -0,0 +1,12 @@
|
|||
# Blender MTL File: 'characteroxen.blend'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl Character
|
||||
Ns 96.078431
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.640000 0.640000 0.640000
|
||||
Ks 0.000000 0.000000 0.000000
|
||||
Ni 1.000000
|
||||
d 1.000000
|
||||
illum 1
|
||||
map_Kd /home/cg72/.cache/.fr-1NpCCr/epicnodedemo_game-master/mods/game/textures/default_obsidian.png
|
|
@ -0,0 +1,187 @@
|
|||
# Blender v2.66 (sub 1) OBJ File: 'characteroxen.blend'
|
||||
# www.blender.org
|
||||
mtllib horns.mtl
|
||||
o Player_Cube
|
||||
v 1.764651 10.230301 -2.104668
|
||||
v 1.767932 10.582121 -1.139558
|
||||
v 1.858858 11.191244 -2.455288
|
||||
v 1.862140 11.543064 -1.490178
|
||||
v 1.876035 11.525629 -2.030556
|
||||
v 1.815577 11.120611 -1.155704
|
||||
v 1.750755 10.247734 -1.564289
|
||||
v 1.811213 10.652750 -2.439142
|
||||
v 1.813395 10.886681 -1.797423
|
||||
v 2.768497 10.029202 -1.729846
|
||||
v 2.692274 10.386005 -0.769583
|
||||
v 2.891119 10.988369 -2.076512
|
||||
v 2.814896 11.345173 -1.116249
|
||||
v 2.873230 11.324955 -1.653553
|
||||
v 2.741015 10.924437 -0.784552
|
||||
v 2.710163 10.049417 -1.192543
|
||||
v 2.842378 10.449942 -2.061544
|
||||
v 5.153539 10.365211 -2.258484
|
||||
v 4.018229 10.024544 -1.689352
|
||||
v 3.968684 10.366405 -0.835896
|
||||
v 3.987385 10.878138 -2.033058
|
||||
v 3.937839 11.219999 -1.179601
|
||||
v 3.957525 11.189842 -1.663013
|
||||
v 3.945091 10.849581 -0.866999
|
||||
v 3.998544 10.054701 -1.205940
|
||||
v 4.010978 10.394962 -2.001955
|
||||
v 5.420657 10.582563 -1.737275
|
||||
v 5.009965 10.948978 -2.428342
|
||||
v 5.277081 11.166330 -1.907133
|
||||
v 5.119844 11.153929 -2.195750
|
||||
v 5.392920 10.910292 -1.736248
|
||||
v 5.310776 10.377613 -1.969867
|
||||
v 5.037700 10.621250 -2.429368
|
||||
v 6.016704 11.311415 -3.950320
|
||||
v 5.850567 10.847176 -3.222586
|
||||
v 6.114312 10.978712 -3.065877
|
||||
v 5.727164 11.153379 -3.271905
|
||||
v 5.990908 11.284912 -3.115195
|
||||
v 5.838684 11.269644 -3.201684
|
||||
v 6.096106 11.153505 -3.064692
|
||||
v 6.002790 10.862448 -3.136099
|
||||
v 5.745370 10.978588 -3.273089
|
||||
v -1.794954 10.917217 -1.752750
|
||||
v -1.792444 10.683289 -2.394467
|
||||
v -1.732334 10.278278 -1.519587
|
||||
v -1.797464 11.151148 -1.111031
|
||||
v -1.857574 11.556154 -1.985912
|
||||
v -1.843930 11.573593 -1.445528
|
||||
v -1.840155 11.221775 -2.410636
|
||||
v -1.749753 10.612661 -1.094864
|
||||
v -1.745978 10.260843 -2.059972
|
||||
v -2.749969 10.059607 -1.685613
|
||||
v -2.674238 10.416420 -0.725315
|
||||
v -2.872562 11.018759 -2.032336
|
||||
v -2.796832 11.375572 -1.072038
|
||||
v -2.854915 11.355347 -1.609368
|
||||
v -2.723046 10.954845 -0.740307
|
||||
v -2.691885 10.079832 -1.148283
|
||||
v -2.823755 10.480337 -2.017345
|
||||
v -5.134814 10.395290 -2.215350
|
||||
v -3.999719 10.054779 -1.645695
|
||||
v -3.950614 10.396645 -0.792217
|
||||
v -3.968833 10.908377 -1.989387
|
||||
v -3.919728 11.250242 -1.135907
|
||||
v -3.939187 11.220087 -1.619328
|
||||
v -3.927073 10.879824 -0.823308
|
||||
v -3.980261 10.084936 -1.162274
|
||||
v -3.992374 10.425200 -1.958295
|
||||
v -5.402200 10.612606 -1.694265
|
||||
v -4.991240 10.979078 -2.385142
|
||||
v -5.258627 11.196390 -1.864057
|
||||
v -5.101255 11.184011 -2.152601
|
||||
v -5.374510 10.940336 -1.693225
|
||||
v -5.292185 10.407669 -1.926806
|
||||
v -5.018930 10.651344 -2.386181
|
||||
v -5.997328 11.341375 -3.907584
|
||||
v -5.831462 10.877161 -3.179774
|
||||
v -6.095298 11.008657 -3.023187
|
||||
v -5.708079 11.183378 -3.229036
|
||||
v -5.971913 11.314877 -3.072448
|
||||
v -5.819648 11.299627 -3.158866
|
||||
v -6.077117 11.183456 -3.021993
|
||||
v -5.983728 10.892408 -3.093356
|
||||
v -5.726261 11.008583 -3.230228
|
||||
vt 0.250036 0.500000
|
||||
vt 0.500001 0.500000
|
||||
vt 0.500001 0.000071
|
||||
vt 0.250036 0.000071
|
||||
vt 0.250036 0.999929
|
||||
vt 0.500000 0.999929
|
||||
vt 0.000071 0.999929
|
||||
vt 0.000071 0.500000
|
||||
vt 0.000071 0.000071
|
||||
usemtl Character
|
||||
s off
|
||||
f 9/1 8/2 1/3 7/4
|
||||
f 5/5 3/6 8/2 9/1
|
||||
f 4/7 5/5 9/1 6/8
|
||||
f 6/8 9/1 7/4 2/9
|
||||
f 15/8 11/9 20/9 24/8
|
||||
f 13/7 15/8 24/8 22/7
|
||||
f 16/4 10/3 19/3 25/4
|
||||
f 11/9 16/4 25/4 20/9
|
||||
f 6/8 2/9 11/9 15/8
|
||||
f 3/6 5/5 14/5 12/6
|
||||
f 1/3 8/2 17/2 10/3
|
||||
f 5/5 4/7 13/7 14/5
|
||||
f 8/2 3/6 12/6 17/2
|
||||
f 2/9 7/4 16/4 11/9
|
||||
f 7/4 1/3 10/3 16/4
|
||||
f 4/7 6/8 15/8 13/7
|
||||
f 22/7 24/8 31/8 29/7
|
||||
f 25/4 19/3 18/3 32/4
|
||||
f 20/9 25/4 32/4 27/9
|
||||
f 26/2 21/6 28/6 33/2
|
||||
f 12/6 14/5 23/5 21/6
|
||||
f 10/3 17/2 26/2 19/3
|
||||
f 14/5 13/7 22/7 23/5
|
||||
f 17/2 12/6 21/6 26/2
|
||||
f 33/2 28/6 37/6 42/2
|
||||
f 30/5 29/7 38/7 39/5
|
||||
f 18/3 33/2 42/2 35/3
|
||||
f 28/6 30/5 39/5 37/6
|
||||
f 24/8 20/9 27/9 31/8
|
||||
f 21/6 23/5 30/5 28/6
|
||||
f 19/3 26/2 33/2 18/3
|
||||
f 23/5 22/7 29/7 30/5
|
||||
f 44/2 59/2 54/6 49/6
|
||||
f 47/5 56/5 55/7 48/7
|
||||
f 51/3 52/3 59/2 44/2
|
||||
f 49/6 54/6 56/5 47/5
|
||||
f 27/9 32/4 41/4 36/9
|
||||
f 32/4 18/3 35/3 41/4
|
||||
f 29/7 31/8 40/8 38/7
|
||||
f 31/8 27/9 36/9 40/8
|
||||
f 46/8 57/8 53/9 50/9
|
||||
f 53/9 62/9 67/4 58/4
|
||||
f 58/4 67/4 61/3 52/3
|
||||
f 55/7 64/7 66/8 57/8
|
||||
f 57/8 66/8 62/9 53/9
|
||||
f 46/8 50/9 45/4 43/1
|
||||
f 48/7 46/8 43/1 47/5
|
||||
f 47/5 43/1 44/2 49/6
|
||||
f 43/1 45/4 51/3 44/2
|
||||
f 35/3 42/2 34/3
|
||||
f 37/6 39/5 34/6
|
||||
f 40/8 36/9 34/8
|
||||
f 38/7 40/8 34/7
|
||||
f 39/5 38/7 34/5
|
||||
f 42/2 37/6 34/2
|
||||
f 36/9 41/4 34/9
|
||||
f 41/4 35/3 34/4
|
||||
f 50/9 53/9 58/4 45/4
|
||||
f 45/4 58/4 52/3 51/3
|
||||
f 48/7 55/7 57/8 46/8
|
||||
f 64/7 71/7 73/8 66/8
|
||||
f 67/4 74/4 60/3 61/3
|
||||
f 62/9 69/9 74/4 67/4
|
||||
f 68/2 75/2 70/6 63/6
|
||||
f 54/6 63/6 65/5 56/5
|
||||
f 52/3 61/3 68/2 59/2
|
||||
f 56/5 65/5 64/7 55/7
|
||||
f 59/2 68/2 63/6 54/6
|
||||
f 75/2 84/2 79/6 70/6
|
||||
f 72/5 81/5 80/7 71/7
|
||||
f 60/3 77/3 84/2 75/2
|
||||
f 70/6 79/6 81/5 72/5
|
||||
f 66/8 73/8 69/9 62/9
|
||||
f 63/6 70/6 72/5 65/5
|
||||
f 61/3 60/3 75/2 68/2
|
||||
f 65/5 72/5 71/7 64/7
|
||||
f 69/9 78/9 83/4 74/4
|
||||
f 74/4 83/4 77/3 60/3
|
||||
f 71/7 80/7 82/8 73/8
|
||||
f 73/8 82/8 78/9 69/9
|
||||
f 77/3 76/3 84/2
|
||||
f 79/6 76/6 81/5
|
||||
f 82/8 76/8 78/9
|
||||
f 80/7 76/7 82/8
|
||||
f 81/5 76/5 80/7
|
||||
f 84/2 76/2 79/6
|
||||
f 78/9 76/9 83/4
|
||||
f 83/4 76/4 77/3
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 716 B |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 698 B |
|
@ -6,6 +6,27 @@
|
|||
--------------------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------
|
||||
|
||||
function game.effects(pos, texture, spread, amount)
|
||||
if not pos.x or not pos.y or not pos.z or not texture then return end
|
||||
amount = amount or 50
|
||||
spread = spread or 0.5
|
||||
minetest.add_particlespawner({
|
||||
amount = amount,
|
||||
time = 1,
|
||||
minpos = {x = pos.x+spread, y = pos.y+spread, z = pos.z+spread},
|
||||
maxpos = {x = pos.x-spread, y = pos.y-spread, z = pos.z-spread},
|
||||
minvel = {x = 0, y = 1, z = 0},
|
||||
maxvel = {x = 0, y = 1, z = 0},
|
||||
minacc = {x = 0, y = 0, z = 0},
|
||||
maxacc = {x = 0, y = 0, z = 0},
|
||||
minexptime = 1.5,
|
||||
maxexptime = 1.5,
|
||||
minsize = 5,
|
||||
maxsize = 5,
|
||||
texture = texture,
|
||||
})
|
||||
end
|
||||
|
||||
function game.number_to_texturestring(num,color)
|
||||
if not color then
|
||||
color = "#ffffff:255"
|
||||
|
|
|
@ -30,4 +30,5 @@ dofile(game.runtimepath.."/mobs.lua")
|
|||
dofile(game.runtimepath.."/fishing.lua")
|
||||
dofile(game.runtimepath.."/fire.lua")
|
||||
dofile(game.runtimepath.."/stairs.lua")
|
||||
dofile(game.runtimepath.."/cmds.lua")
|
||||
dofile(game.runtimepath.."/cmds.lua")
|
||||
dofile(game.runtimepath.."/raid.lua")
|
|
@ -128,7 +128,12 @@ set_animation = function(self, type)
|
|||
x = self.animation.run_start,
|
||||
y = self.animation.run_end},
|
||||
self.animation.speed_run, 0)
|
||||
|
||||
self.animation.current = "run"
|
||||
else
|
||||
self.object:set_animation({
|
||||
x = self.animation.walk_start,
|
||||
y = self.animation.walk_end},
|
||||
self.animation.speed_normal, 0)
|
||||
self.animation.current = "run"
|
||||
end
|
||||
|
||||
|
@ -665,7 +670,7 @@ function day_docile(self)
|
|||
end
|
||||
|
||||
-- register mob function
|
||||
function mobs:register_mob(name, def)
|
||||
function mobs.register_mob(name, def)
|
||||
|
||||
minetest.register_entity(":"..name, {
|
||||
|
||||
|
@ -673,7 +678,10 @@ minetest.register_entity(":"..name, {
|
|||
name = name,
|
||||
aname = def.aname or name,
|
||||
lvl = def.lvl or 1,
|
||||
boss = def.boss or false,
|
||||
particles = def.particles or nil,
|
||||
type = def.type,
|
||||
exp = def.exp or 0,
|
||||
attack_type = def.attack_type,
|
||||
fly = def.fly,
|
||||
fly_in = def.fly_in or "air",
|
||||
|
@ -731,6 +739,7 @@ minetest.register_entity(":"..name, {
|
|||
env_damage_timer = 0, -- only used when state = "attack"
|
||||
tamed = false,
|
||||
pause_timer = 0,
|
||||
particle_timer = 0,
|
||||
horny = false,
|
||||
hornytimer = 0,
|
||||
child = false,
|
||||
|
@ -747,6 +756,14 @@ minetest.register_entity(":"..name, {
|
|||
|
||||
local pos = self.object:getpos()
|
||||
local yaw = self.object:getyaw() or 0
|
||||
self.particle_timer = self.particle_timer + dtime
|
||||
if self.particle_timer > 1 then
|
||||
if self.particles ~= nil then
|
||||
local p_pos = {x=pos.x, y=pos.y+self.particles.y_adj,z=pos.z}
|
||||
game.effects(p_pos, self.particles.texture, 1.5, 50)
|
||||
end
|
||||
self.particle_timer = 0
|
||||
end
|
||||
|
||||
self.nametag = "[lvl"..self.lvl.."] "..self.aname.."\n("..self.object:get_hp().." / "..self.hp_max..")"
|
||||
self.nametag_color = "#ffffff"
|
||||
|
@ -754,6 +771,7 @@ minetest.register_entity(":"..name, {
|
|||
|
||||
-- when lifetimer expires remove mob (except npc and tamed)
|
||||
if self.type ~= "npc"
|
||||
and not self.boss
|
||||
and not self.tamed
|
||||
and self.state ~= "attack" then
|
||||
|
||||
|
@ -1427,7 +1445,7 @@ minetest.register_entity(":"..name, {
|
|||
|
||||
pos.y = pos.y - 1
|
||||
|
||||
mobs:explosion(pos, 2, 0, 1, self.sounds.explode)
|
||||
mobs.explosion(pos, 2, 0, 1, self.sounds.explode)
|
||||
|
||||
self.object:remove()
|
||||
|
||||
|
@ -1458,6 +1476,7 @@ minetest.register_entity(":"..name, {
|
|||
y = 1 * self.walk_velocity,
|
||||
z = v.z
|
||||
})
|
||||
set_animation(self, "walk")
|
||||
|
||||
elseif me_y > p_y then
|
||||
|
||||
|
@ -1466,6 +1485,7 @@ minetest.register_entity(":"..name, {
|
|||
y = -1 * self.walk_velocity,
|
||||
z = v.z
|
||||
})
|
||||
set_animation(self, "walk")
|
||||
end
|
||||
else
|
||||
if me_y < p_y then
|
||||
|
@ -1475,6 +1495,7 @@ minetest.register_entity(":"..name, {
|
|||
y = 0.01,
|
||||
z = v.z
|
||||
})
|
||||
set_animation(self, "walk")
|
||||
|
||||
elseif me_y > p_y then
|
||||
|
||||
|
@ -1483,6 +1504,7 @@ minetest.register_entity(":"..name, {
|
|||
y = -0.01,
|
||||
z = v.z
|
||||
})
|
||||
set_animation(self, "walk")
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1649,7 +1671,7 @@ minetest.register_entity(":"..name, {
|
|||
return
|
||||
end
|
||||
|
||||
--local ent = minetest.add_entity(self.object:getpos(), "mobs:bar") --new bar for hp and shit
|
||||
--local ent = minetest.add_entity(self.object:getpos(), "mobs.bar") --new bar for hp and shit
|
||||
--server_tools.set_pvp(plname, "disabled")
|
||||
--if ent ~= nil then
|
||||
--ent:set_attach(self.object, "", {x = 0, y = 9, z = 0}, {x = 0, y = 0, z = 0})
|
||||
|
@ -1903,13 +1925,13 @@ minetest.register_entity(":"..name, {
|
|||
end,
|
||||
})
|
||||
|
||||
end -- END mobs:register_mob function
|
||||
end -- END mobs.register_mob function
|
||||
|
||||
-- global functions
|
||||
|
||||
mobs.spawning_mobs = {}
|
||||
|
||||
function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light,
|
||||
function mobs.spawn_specific(name, nodes, neighbors, min_light, max_light,
|
||||
interval, chance, active_object_count, min_height, max_height)
|
||||
|
||||
mobs.spawning_mobs[name] = true
|
||||
|
@ -1988,9 +2010,9 @@ function mobs:spawn_specific(name, nodes, neighbors, min_light, max_light,
|
|||
end
|
||||
|
||||
-- compatibility with older mob registration
|
||||
function mobs:register_spawn(name, nodes, max_light, min_light, chance, active_object_count, max_height)
|
||||
function mobs.register_spawn(name, nodes, max_light, min_light, chance, active_object_count, max_height)
|
||||
|
||||
mobs:spawn_specific(name, nodes, {"air"}, min_light, max_light, 30,
|
||||
mobs.spawn_specific(name, nodes, {"air"}, min_light, max_light, 30,
|
||||
chance, active_object_count, -31000, max_height)
|
||||
end
|
||||
|
||||
|
@ -2002,7 +2024,7 @@ local c_brick = minetest.get_content_id("game:obsidianbrick")
|
|||
local c_chest = minetest.get_content_id("game:chest_locked")
|
||||
|
||||
-- explosion (cannot break protected or unbreakable nodes)
|
||||
function mobs:explosion(pos, radius, fire, smoke, sound)
|
||||
function mobs.explosion(pos, radius, fire, smoke, sound)
|
||||
|
||||
radius = radius or 0
|
||||
fire = fire or 0
|
||||
|
@ -2100,7 +2122,7 @@ function mobs:explosion(pos, radius, fire, smoke, sound)
|
|||
end
|
||||
|
||||
-- register arrow for shoot attack
|
||||
function mobs:register_arrow(name, def)
|
||||
function mobs.register_arrow(name, def)
|
||||
|
||||
if not name or not def then return end -- errorcheck
|
||||
|
||||
|
@ -2193,7 +2215,7 @@ function mobs:register_arrow(name, def)
|
|||
end
|
||||
|
||||
-- Spawn Egg
|
||||
function mobs:register_egg(mob, desc, background, addegg)
|
||||
function mobs.register_egg(mob, desc, background, addegg)
|
||||
|
||||
local invimg = background
|
||||
|
||||
|
@ -2224,24 +2246,25 @@ function mobs:register_egg(mob, desc, background, addegg)
|
|||
ent.owner = placer:get_player_name()
|
||||
ent.tamed = true
|
||||
end
|
||||
if not ent.boss then
|
||||
ent.lvl = math.random(1,60)
|
||||
if minetest.is_singleplayer() then
|
||||
ent.lvl = math.random(game.stats.lvl["singleplayer"], game.stats.lvl["singleplayer"]+4)
|
||||
if ent.lvl < 1 then
|
||||
ent.lvl = 1
|
||||
elseif ent.lvl > 60 then
|
||||
ent.lvl = 60
|
||||
if minetest.is_singleplayer() then
|
||||
ent.lvl = math.random(game.stats.lvl["singleplayer"], game.stats.lvl["singleplayer"]+4)
|
||||
if ent.lvl < 1 then
|
||||
ent.lvl = 1
|
||||
elseif ent.lvl > 60 then
|
||||
ent.lvl = 60
|
||||
end
|
||||
end
|
||||
ent.hp_min = game.adjust_to_lvl(ent.hp_min, ent.lvl, ent.hp_max)
|
||||
ent.hp_max = game.adjust_to_lvl(ent.hp_max, ent.lvl, ent.hp_max)
|
||||
ent.damage = game.adjust_to_lvl(ent.damage, ent.lvl, ent.damage*4)
|
||||
ent.exp = game.adjust_to_lvl(10, ent.lvl, (10+(ent.lvl/10)))
|
||||
ent.visual_size = {x = 1+(ent.lvl/50), y = 1+(ent.lvl/50)}
|
||||
ent.run_velocity = ent.run_velocity+(ent.lvl/75)-0.2
|
||||
ent.collisionbox = {-0.3*((ent.lvl/25)+1), -0.01, -0.3*((ent.lvl/25)+1), 0.3*((ent.lvl/25)+1), 0.8*((ent.lvl/25)+1), 0.3*((ent.lvl/25)+1)}
|
||||
end
|
||||
ent.hp_min = game.adjust_to_lvl(ent.hp_min, ent.lvl, ent.hp_max)
|
||||
ent.hp_max = game.adjust_to_lvl(ent.hp_max, ent.lvl, ent.hp_max)
|
||||
ent.damage = game.adjust_to_lvl(ent.damage, ent.lvl, ent.damage*4)
|
||||
ent.exp = game.adjust_to_lvl(10, ent.lvl, (10+(ent.lvl/10)))
|
||||
ent.visual_size = {x = 1+(ent.lvl/50), y = 1+(ent.lvl/50)}
|
||||
ent.object:set_hp(math.random(ent.hp_min, ent.hp_max))
|
||||
ent.run_velocity = ent.run_velocity+(ent.lvl/75)-0.2
|
||||
ent.collisionbox = {-0.3*((ent.lvl/25)+1), -0.01, -0.3*((ent.lvl/25)+1), 0.3*((ent.lvl/25)+1), 0.8*((ent.lvl/25)+1), 0.3*((ent.lvl/25)+1)}
|
||||
|
||||
-- if not in creative then take item
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
itemstack:take_item()
|
||||
|
@ -2254,7 +2277,7 @@ function mobs:register_egg(mob, desc, background, addegg)
|
|||
end
|
||||
|
||||
-- capture critter (thanks to blert2112 for idea)
|
||||
function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso, force_take, replacewith)
|
||||
function mobs.capture_mob(self, clicker, chance_hand, chance_net, chance_lasso, force_take, replacewith)
|
||||
|
||||
if not self.child
|
||||
and clicker:is_player()
|
||||
|
@ -2297,7 +2320,7 @@ function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso,
|
|||
if tool:is_empty() then
|
||||
chance = chance_hand
|
||||
|
||||
elseif tool:get_name() == "mobs:net" then
|
||||
elseif tool:get_name() == "mobs.net" then
|
||||
|
||||
chance = chance_net
|
||||
|
||||
|
@ -2305,7 +2328,7 @@ function mobs:capture_mob(self, clicker, chance_hand, chance_net, chance_lasso,
|
|||
|
||||
clicker:set_wielded_item(tool)
|
||||
|
||||
elseif tool:get_name() == "mobs:magic_lasso" then
|
||||
elseif tool:get_name() == "mobs.magic_lasso" then
|
||||
|
||||
chance = chance_lasso
|
||||
|
||||
|
@ -2334,7 +2357,7 @@ local mob_obj = {}
|
|||
local mob_sta = {}
|
||||
|
||||
-- feeding, taming and breeding (thanks blert2112)
|
||||
function mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
||||
function mobs.feed_tame(self, clicker, feed_count, breed, tame)
|
||||
|
||||
if not self.follow then
|
||||
return false
|
||||
|
@ -2418,7 +2441,7 @@ function mobs:feed_tame(self, clicker, feed_count, breed, tame)
|
|||
local item = clicker:get_wielded_item()
|
||||
|
||||
-- if mob has been tamed you can name it with a nametag
|
||||
if item:get_name() == "mobs:nametag"
|
||||
if item:get_name() == "mobs.nametag"
|
||||
and clicker:get_player_name() == self.owner then
|
||||
|
||||
local name = clicker:get_player_name()
|
||||
|
@ -2483,7 +2506,7 @@ end)
|
|||
|
||||
-- Warthog by KrupnoPavel and Pinkysnow
|
||||
|
||||
mobs:register_mob("game:wartus", {
|
||||
mobs.register_mob("game:wartus", {
|
||||
type = "monster",
|
||||
aname = "Wartus beast",
|
||||
passive = false,
|
||||
|
@ -2529,14 +2552,14 @@ mobs:register_mob("game:wartus", {
|
|||
punch_end = 100,
|
||||
},
|
||||
on_rightclick = function(self, clicker)
|
||||
mobs:feed_tame(self, clicker, 8, true, true)
|
||||
mobs:capture_mob(self, clicker, 0, 5, 50, false, nil)
|
||||
mobs.feed_tame(self, clicker, 8, true, true)
|
||||
mobs.capture_mob(self, clicker, 0, 5, 50, false, nil)
|
||||
end,
|
||||
})
|
||||
|
||||
mobs:register_spawn("game:wartus", {"ethereal:mushroom_dirt", "default:dirt_with_dry_grass"}, 20, 10, 15000, 2, 31000)
|
||||
mobs.register_spawn("game:wartus", {"ethereal:mushroom_dirt", "default:dirt_with_dry_grass"}, 20, 10, 15000, 2, 31000)
|
||||
|
||||
mobs:register_egg("game:wartus", "Wartus", "default_snow.png", 1)
|
||||
mobs.register_egg("game:wartus", "Wartus", "default_snow.png", 1)
|
||||
|
||||
-- raw porkchop
|
||||
minetest.register_craftitem("game:pork_raw", {
|
||||
|
|
|
@ -175,7 +175,7 @@ function game.percent(player, stat_type, value)
|
|||
elseif stat_type == "exp" then
|
||||
local pl_c_lvl = game.stats.lvl[name]
|
||||
local pl_exp = game.stats.exp[name]*10
|
||||
local next_exp = ((8*pl_c_lvl) + game.exp_diff(pl_c_lvl))*(45 + (5*pl_c_lvl))
|
||||
local next_exp = math.floor((((8*pl_c_lvl) + game.exp_diff(pl_c_lvl))*(45 + (5*pl_c_lvl)))/100)*100
|
||||
return ((pl_exp/next_exp)*100)
|
||||
elseif stat_type == "hp" then
|
||||
if game.stats.hp[name] == "dead" then
|
||||
|
@ -310,10 +310,10 @@ function game.add_lvl(player, lvl)
|
|||
name = player:get_player_name()
|
||||
end
|
||||
if not game.stats.lvl[name] then return false, "Error "..name.." doesnt have any lvl yet!!!" end
|
||||
lvl = game.stats.lvl[name] + lvl
|
||||
if lvl > 60 then lvl = 60 end
|
||||
game.stats.lvl[name] = lvl
|
||||
game.stats.hp[name] = (game.adjust_to_lvl(20, game.stats.lvl[name],40)*(game.percent(player, "hp")/100))
|
||||
lvl = game.stats.lvl[name] + lvl
|
||||
if lvl > 60 then lvl = 60 end
|
||||
game.stats.lvl[name] = lvl
|
||||
game.stats.hp[name] = (game.adjust_to_lvl(20, game.stats.lvl[name],40)*(game.percent(player, "hp")/100))
|
||||
return true, name.." had lvl added!"
|
||||
end
|
||||
|
||||
|
@ -369,9 +369,10 @@ function game.is_next_lvl(name)
|
|||
local next_exp = math.floor((((8*pl_c_lvl) + game.exp_diff(pl_c_lvl))*(45 + (5*pl_c_lvl)))/100)*100
|
||||
if pl_exp >= next_exp then
|
||||
game.stats.total_exp[name] = game.stats.total_exp[name] + (next_exp/10)
|
||||
game.stats.exp[name] = pl_exp - next_exp
|
||||
game.stats.exp[name] = (pl_exp - next_exp)/10
|
||||
game.add_lvl(name, 1)
|
||||
game.is_next_lvl(name)
|
||||
minetest.chat_send_player(name, "You have leveled up!")
|
||||
return game.add_lvl(name, 1)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -469,8 +470,7 @@ end
|
|||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
game.timer = game.timer + dtime
|
||||
game.save_timer = game.save_timer + dtime
|
||||
|
||||
game.save_timer = game.save_timer + dtime
|
||||
if game.save_timer >= 60 then
|
||||
game.save_timer = 0
|
||||
minetest.log(game.save_stats())
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
--------------------------------------------------------------------------------------------
|
||||
------------------------------- EpicNode Game ver: 0.1 :D ----------------------------------
|
||||
--------------------------------------------------------------------------------------------
|
||||
--Mod by Pinkysnowman --
|
||||
--(c)2015 GNU LGPL v2.1 --
|
||||
--------------------------------------------------------------------------------------------
|
||||
--------------------------------------------------------------------------------------------
|
||||
|
||||
mobs.register_mob("game:ignitus", {
|
||||
type = "monster",
|
||||
boss = true,
|
||||
lvl = 60,
|
||||
exp = 2400,
|
||||
aname = "Ignitus",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
group_attack = false,
|
||||
reach = 8,
|
||||
damage = 0,
|
||||
hp_min = 60,
|
||||
hp_max = 60,
|
||||
armor = 100,
|
||||
collisionbox = {-01.0, -1, -01.0, 01.0, 3.8, 01.0}, --??????
|
||||
visual_size = {x = 1, y = 1},
|
||||
visual = "mesh",
|
||||
mesh = "ignitus.b3d",
|
||||
textures = {
|
||||
{"game_fireaxe.png", "ignitus.png", "ignitus_fire.png"},
|
||||
},
|
||||
particles = {y_adj=2.5,texture="ignitus_fire.png",},
|
||||
makes_footstep_sound = false,
|
||||
sounds = {
|
||||
--random = "mobs_pig",
|
||||
--attack = "mobs_pig_angry",
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 1,
|
||||
view_range = 18,
|
||||
drops = {
|
||||
{name = "",
|
||||
chance = 1, min = 1, max = 3},
|
||||
},
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
stand_start = 0,
|
||||
stand_end = 79,
|
||||
walk_start = 168,
|
||||
walk_end = 187,
|
||||
punch_start = 189,
|
||||
punch_end = 198,
|
||||
},
|
||||
})
|
||||
|
||||
mobs.register_egg("game:ignitus", "Ignitus", "ignitus_fire.png", 1)
|
||||
|
||||
print("Ignitus loaded")
|
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 716 B |