diff --git a/abms.lua b/abms.lua index b249e00..99bb43a 100644 --- a/abms.lua +++ b/abms.lua @@ -2,6 +2,10 @@ -- player surface damage and hunger local dps_delay = 3000000 +if fun_caves.DEBUG then + local dps_delay = 1000000 +end + local last_dps_check = 0 local cold_delay = 5 local monster_delay = 3 diff --git a/mobs.lua b/mobs.lua index 4eb9d69..2f88e15 100644 --- a/mobs.lua +++ b/mobs.lua @@ -252,20 +252,12 @@ for _, mob in pairs(mob_stats) do end end -local mob_check = {} for _, mob in pairs(mob_stats) do if minetest.registered_entities[mob.name] then minetest.registered_entities[mob.name].damage = mob.damage minetest.registered_entities[mob.name].hp_min = math.ceil(mob.hp * 0.5) minetest.registered_entities[mob.name].hp_max = math.ceil(mob.hp * 1.5) minetest.registered_entities[mob.name].armor = mob.armor - mob_check[mob.name] = true - end -end - -for name, mob in pairs(minetest.registered_entities) do - if not mob_check[name] then - print(name) end end @@ -303,6 +295,60 @@ if minetest.registered_entities["dmobs:fox"] then --mobs:register_spawn("fun_caves:fire_fox", {'default:dirt_with_grass'}, 20, -1, 1000, 5, 31000) end + +mobs:register_mob("fun_caves:star", { + description = "Star", + type = "monster", + passive = false, + attack_type = "dogfight", + attacks_monsters = true, + fly = true, + fly_in = 'fun_caves:vacuum', + reach = 2, + damage = 2, + hp_min = 10, + hp_max = 20, + armor = 100, + collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + visual = "mesh", + visual_size = {x = 5, y = 5}, + mesh = "star.x", + drawtype = "front", + textures = { + {"fun_caves_albino.png"}, + }, + makes_footstep_sound = false, + sounds = { + random = "mobs_bee", + }, + walk_velocity = 1, + run_velocity = 3, + jump = true, + view_range = 15, + floats = 0, + --drops = { + -- {name = "mobs:honey", chance = 2, min = 1, max = 2}, + --}, + water_damage = 0, + lava_damage = 0, + light_damage = 0, + fall_damage = 0, + lifetimer = 360, + do_custom = function(self) + if not fun_caves.custom_ready(self) then + return + end + + local pos = self.object:getpos() + local node = minetest.get_node_or_nil(pos) + if node and node.name then + self.fly_in = node.name + end + end +}) + +mobs:spawn_specific("fun_caves:star", {'default:stone', 'fun_caves:asteroid_water'}, {'fun_caves:vacuum'}, -1, 20, nil, 300, 2, 11168, 15168, nil) + if minetest.registered_entities["mobs:bee"] then local function bee_summon(self) if self.state ~= 'attack' then diff --git a/models/star.x b/models/star.x new file mode 100644 index 0000000..1cd35b2 --- /dev/null +++ b/models/star.x @@ -0,0 +1,132 @@ +xof 0303txt 0032 + +Frame Root { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000,-0.000000, 1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Frame Cube { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Mesh { // Cube mesh + 34; + -0.100000;-0.100000;-0.100000;, + -0.100000; 0.100000;-0.100000;, + 0.100000; 0.100000;-0.100000;, + 0.100000;-0.100000;-0.100000;, + -0.100000;-0.100000; 0.100000;, + -0.100000; 0.100000; 0.100000;, + 0.100000; 0.100000; 0.100000;, + 0.100000;-0.100000; 0.100000;, + -0.100000;-0.100000;-0.100000;, + -0.100000; 0.100000;-0.100000;, + 0.100000; 0.100000;-0.100000;, + 0.100000;-0.100000;-0.100000;, + -0.100000;-0.100000; 0.100000;, + -0.100000; 0.100000; 0.100000;, + 0.100000; 0.100000; 0.100000;, + 0.100000;-0.100000; 0.100000;, + -0.100000;-0.100000; 0.001563;, + -0.100000; 0.100000; 0.001563;, + 0.100000; 0.100000; 0.001563;, + 0.100000;-0.100000; 0.001563;, + -0.100000; 0.000000; 0.100000;, + -0.100000; 0.000000;-0.100000;, + 0.100000; 0.000000; 0.100000;, + 0.100000; 0.000000;-0.100000;, + -0.998266; 0.000422;-0.004041;, + 0.985912; 0.004690; 0.008512;, + 0.000000; 0.100000; 0.100000;, + 0.000000; 0.100000;-0.100000;, + 0.000000;-0.100000; 0.100000;, + 0.000000;-0.100000;-0.100000;, + 0.002391; 0.999240; 0.000504;, + 0.000000;-1.003160;-0.001113;, + -0.005045; 0.000661;-1.005413;, + -0.003414;-0.001039; 0.994975;; + 24; + 4;21,1,17,24;, + 4;27,2,18,30;, + 4;23,3,19,25;, + 4;29,0,16,31;, + 4;23,2,27,32;, + 4;20,5,26,33;, + 4;24,17,5,20;, + 4;30,18,6,26;, + 4;25,19,7,22;, + 4;31,16,4,28;, + 4;0,21,24,16;, + 4;2,23,25,18;, + 4;3,23,32,29;, + 4;4,20,33,28;, + 4;16,24,20,4;, + 4;18,25,22,6;, + 4;1,27,30,17;, + 4;3,29,31,19;, + 4;32,27,1,21;, + 4;33,26,6,22;, + 4;17,30,26,5;, + 4;19,31,28,7;, + 4;29,32,21,0;, + 4;28,33,22,7;; + MeshNormals { // Cube normals + 24; + -0.152150; 0.704271;-0.693436;, + 0.704077; 0.153905;-0.693245;, + 0.167733;-0.702472;-0.691664;, + -0.704082;-0.153861;-0.693250;, + 0.698267; 0.698267;-0.157624;, + -0.698642; 0.698642; 0.154272;, + -0.158289; 0.692673; 0.703668;, + 0.693239; 0.153169; 0.704243;, + 0.154613;-0.693082; 0.704083;, + -0.692979;-0.155542; 0.703979;, + -0.152796;-0.704200;-0.693366;, + 0.160490; 0.703330;-0.692510;, + 0.698155;-0.698155;-0.158618;, + -0.698816;-0.698816; 0.152688;, + -0.158924;-0.692602; 0.703595;, + 0.147438; 0.693851; 0.704864;, + -0.703667; 0.157558;-0.692841;, + 0.704082;-0.153861;-0.693250;, + -0.699104; 0.699104;-0.150022;, + 0.698058; 0.698058; 0.159468;, + -0.692843; 0.156766; 0.703841;, + 0.692979;-0.155542; 0.703979;, + -0.698997;-0.698997;-0.151019;, + 0.698238;-0.698238; 0.157888;; + 24; + 4;0,0,0,0;, + 4;1,1,1,1;, + 4;2,2,2,2;, + 4;3,3,3,3;, + 4;4,4,4,4;, + 4;5,5,5,5;, + 4;6,6,6,6;, + 4;7,7,7,7;, + 4;8,8,8,8;, + 4;9,9,9,9;, + 4;10,10,10,10;, + 4;11,11,11,11;, + 4;12,12,12,12;, + 4;13,13,13,13;, + 4;14,14,14,14;, + 4;15,15,15,15;, + 4;16,16,16,16;, + 4;17,17,17,17;, + 4;18,18,18,18;, + 4;19,19,19,19;, + 4;20,20,20,20;, + 4;21,21,21,21;, + 4;22,22,22,22;, + 4;23,23,23,23;; + } // End of Cube normals + } // End of Cube mesh + } // End of Cube +} // End of Root