From 002116a8cbe7e54e0ca5f1aec5425fb3fbb36a93 Mon Sep 17 00:00:00 2001 From: PilzAdam Date: Sat, 15 Sep 2012 16:40:06 +0200 Subject: [PATCH] Addd sand monster --- init.lua | 69 +++++++++++++++++++++++++--- textures/mobs_sand_monster.png | Bin 0 -> 1016 bytes textures/mobs_sand_monster_back.png | Bin 0 -> 990 bytes 3 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 textures/mobs_sand_monster.png create mode 100644 textures/mobs_sand_monster_back.png diff --git a/init.lua b/init.lua index f78f58f..c4e1e75 100644 --- a/init.lua +++ b/init.lua @@ -11,6 +11,7 @@ function mobs:register_monster(name, def) view_range = def.view_range, walk_velocity = def.walk_velocity, run_velocity = def.run_velocity, + damage = def.damage, timer = 0, attack = {player=nil, dist=nil}, @@ -153,12 +154,28 @@ function mobs:register_monster(name, def) self.v_start = false if self.timer > 1 then self.timer = 0 - self.attack.player:punch(self.object, 1.0, { - full_punch_interval=1.0, - groupcaps={ - fleshy={times={[2]=1/1,[3]=1/2}}, - } - }, vec) + if damage > 3 then + self.attack.player:punch(self.object, 1.0, { + full_punch_interval=1.0, + groupcaps={ + fleshy={times={[1]=1/(damage-2),[2]=1/(damage-1),[3]=1/damage}}, + } + }, vec) + elseif damage > 2 then + self.attack.player:punch(self.object, 1.0, { + full_punch_interval=1.0, + groupcaps={ + fleshy={times={[2]=1/(damage-1),[3]=1/damage}}, + } + }, vec) + elseif damage > 1 then + self.attack.player:punch(self.object, 1.0, { + full_punch_interval=1.0, + groupcaps={ + fleshy={times={[3]=1/damage}}, + } + }, vec) + end end end end @@ -212,6 +229,7 @@ mobs:register_monster("mobs:dirt_monster", { view_range = 15, walk_velocity = 1, run_velocity = 3, + damage = 2, }) minetest.register_abm({ @@ -246,6 +264,7 @@ mobs:register_monster("mobs:stone_monster", { view_range = 10, walk_velocity = 0.5, run_velocity = 2, + damage = 3, }) minetest.register_abm({ @@ -271,3 +290,41 @@ minetest.register_abm({ minetest.env:add_entity(pos, "mobs:stone_monster") end }) + +mobs:register_monster("mobs:sand_monster", { + hp_max = 5, + physical = true, + collisionbox = {-0.4, -1, -0.4, 0.4, 1, 0.4}, + visual = "upright_sprite", + visual_size = {x=1, y=2}, + textures = {"mobs_sand_monster.png", "mobs_sand_monster_back.png"}, + makes_footstep_sound = true, + view_range = 15, + walk_velocity = 1.5, + run_velocity = 4, + damage = 1, +}) + +minetest.register_abm({ + nodenames = {"default:desert_sand"}, + neighbors = {"default:desert_sand", "default:desert_stone"}, + interval = 60, + chance = 5000, + action = function(pos, node) + pos.y = pos.y+1 + if not minetest.env:get_node_light(pos) then + return + end + if minetest.env:get_node_light(pos) > 3 then + return + end + if minetest.env:get_node(pos).name ~= "air" then + return + end + pos.y = pos.y+1 + if minetest.env:get_node(pos).name ~= "air" then + return + end + minetest.env:add_entity(pos, "mobs:sand_monster") + end +}) diff --git a/textures/mobs_sand_monster.png b/textures/mobs_sand_monster.png new file mode 100644 index 0000000000000000000000000000000000000000..a8dfa96d8396129da1f5578418e8c1aba3d406e2 GIT binary patch literal 1016 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyq{ z4kb6Hi(D}P000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000A1Nkl-LF5;^VZ0D zlf(U*qj6yOyTu}A(ZugtcXWB+a9If!s&T`OTldYS1a`h%SDR;uKz$TQDFIOSb6$P> zo|!A~=l2^bd5)%*&;)#wsE%6(R|=XsVzGz=mkSz{s*1e6zGWQ1&i1+*XD~!U({ea$ z!3e9@y7(rMmyWEkfFKG@+cLP?S!~{~_tq3Rb3gp~BYpJC$9kz0uCA2)_2b5wF=u7& zYBx7qn=q1{84EE{kNo8X&_r7`?0j<Z5r+Z@#hkkJ%Jo;%vQ%a17k*aC27{m!K z7kraQ3M(ra;wCA)a_cj5BCzw-U2UUMjU%prPBH0$tYcACR25Q+^3E?@)^L-Z|e6KQ?mxJootixE5HffY;$_@Jba@Bx!oU(boj%n0}d0tZhT$|c8OY4Rnby@p6+wBOJhbm*6YaR!@NVjWNWKr+W@ ztSk)*mU|O*A3z*<4`r`QQCdu4@l7JOinB8@)|DrBf)ztmMZ`KfJ;912&k|J?iLG)} z1riA{iJ0_MK#Y(t<-{228B5vC2{Cc-cnn79FFUd<15NlkAeqp0GbU!;=}VE5yvGL^ z9aKEGnxEl8bJ#Mt)+4mA_vGkQKvgjUnj*$oLS54zlpt{Qv_9cM_e#lVSP@&Lu=do% z*eV+06c!0p<@m7X-@iwQO~e=>f**TcTiY~cDFjWk9)NL^T;l~i07%LS4;;XacRoKk z6XS7~w>X3@b`x65Y+)n`R+UR#rPx z9$1Kz&4x&biE7wf%!8t9PIv%dLcof0I0|!l@N5YSd0=?)rT)bNk;q`Vn9l<)!NguK zJC_Fwk+!>iM}1(12SU~>c=@eQ%^zFu>MRcieanrtFHVuR``~>=5|96x@ZgP&FQ574 m{dWI7o#jDOM{eHUH2(p)w#a&F6Iamy0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyq{ z4kaa3GA(%k000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0009yNkl1OD6o#L3s_sXBB<)Ok7(sDAA`A>J+~`kGgjvZ%M`PUhgB%%+0X3o`_!nFV zu7pI;e;^LdBr%=N?R#%k9T#^@I;1-@BG#^`Q!jPix9TbQKgX}%ePDZEy>FM*=w*wC z`!kNGfxT~*i^#HtpSJJX>d51>5*$?1nwz)p%To#Le!XEX&rpTgaUi7xKsn5L>CJnx zP~ewuH%;>#OD&-eG5BB5?MI&49d z@wGlpoybd1RyaUWgSu@QUF|Jz;fH(cHXfHG1r-nx5Jg0|@%l&S_V`5tSJyh@oOHFK z8BUFeJzb3I5~2=bw^@jUn5Yix3$+VRfF;_hE0z#&Y8*`hM~BVwd+^)$o0d{ydKjtd z7Kfl-@ww8}iDa<0mZ82&;l~Ym+x8|jcOY41@wyU4rD!tnPFxS6NqAMq&kjN zP2{x?ce)rwh0H--WL*blxLiRLRUtMlZ5?Twz)6*;tG4s#)B~qT2sFV+A<+a_9U40D z#JZ-QM)vm`OpKx|xPCn+CYcjx5-1!ztSMJKqm}L?lSeg?$Yj4}FzPWZ74d@09B~%U zV${qtnHnpjg4IE%-ULt&O#|hiPfJ zDiT}cxC$f^Dv6lvOh84+S8`&E48&3Pb3#lUJeYzg!&Og~WnhVB7SK%T`#BS{{^LoJ zlbVJmz~rFfnQ?xO2lY|Q=-PnL!lQ@BX98x1C|HV!cZAuD;iv?Kg22{Ys5XvUwvPf(YLF+zl9+VJxFmXxIuEX{iW;=5eq6LgQ740 ziU${4Sjq$8`4@&y7KlVftHoj-EEpFA27~NU9xO%L-p*ZX0&_f2vO&R(H$Il1x8JsT z9*l;Lo9myQA#LxA_Y6%u_@m>&tDB!+_%D9E|BlV`pq@o;-Pw}A0gQUYEvL2VzyJUM M07*qoM6N<$f~WJfm;e9( literal 0 HcmV?d00001