From 3a45af7c9e4dc565217b0fdb9fb8539a548a60cf Mon Sep 17 00:00:00 2001 From: Alexsandro Percy Date: Sat, 4 Mar 2023 15:58:52 -0300 Subject: [PATCH] various fixes --- entities.lua | 2 ++ models/ap_airship_mesh.b3d | Bin 313466 -> 311282 bytes ...blimp_clover.png => ap_airship_clover.png} | Bin .../{blimp_jack.png => ap_airship_jack.png} | Bin .../{blimp_liz.png => ap_airship_liz.png} | Bin ..._star.png => ap_airship_shotting_star.png} | Bin .../{blimp_skull.png => ap_airship_skull.png} | Bin utilities.lua | 9 +++++++-- walk_map.lua | 8 ++++---- 9 files changed, 13 insertions(+), 6 deletions(-) rename textures/{blimp_clover.png => ap_airship_clover.png} (100%) rename textures/{blimp_jack.png => ap_airship_jack.png} (100%) rename textures/{blimp_liz.png => ap_airship_liz.png} (100%) rename textures/{blimp_shotting_star.png => ap_airship_shotting_star.png} (100%) rename textures/{blimp_skull.png => ap_airship_skull.png} (100%) diff --git a/entities.lua b/entities.lua index e2d9da2..bf0487f 100755 --- a/entities.lua +++ b/entities.lua @@ -185,6 +185,7 @@ minetest.register_entity('ap_airship:control_interactor',{ textures = {"ap_airship_alpha.png",}, }, dist_moved = 0, + max_hp = 65535, on_activate = function(self,std) self.sdata = minetest.deserialize(std) or {} @@ -217,6 +218,7 @@ minetest.register_entity('ap_airship:cabin_interactor',{ textures = {"ap_airship_alpha.png",}, }, dist_moved = 0, + max_hp = 65535, on_activate = function(self,std) self.sdata = minetest.deserialize(std) or {} diff --git a/models/ap_airship_mesh.b3d b/models/ap_airship_mesh.b3d index 10b8f4a614122d0b762f1fdef2e3c1f269d915c6..083862139e8664e591e44aeffa7ae62976d1f387 100755 GIT binary patch delta 500 zcmXZXJxCj29LMqJ|Kt)Wfi^~tJkgK_)H1n~t#?N)s0QU^gt@pAn=;KAp3zIV?Z|L1nD<;DvKGMRM$ z<J+k;&=0Nr|h0>^L!zwi6Ve$!|twHYBHXFZ{IB9u*r1B^982wFh5 zUO$0O=zy;K?ogwG(yA&*C?3UMt~^nRllbwA5~SW?Wqxd8Yz9hD2Hho9j#ExG2%kOW zxV1he>p`(FF!VRZm``=rjW%Wc3tAa&cf10g+QoNM@FijSa)-G;lWCp(Jf$1Z%8D2StB1lgKnvKdMbm zkSdW$F&k#LAjN$LOvQ_2#cLiQ4 zeRGYuvMt}J>RZ|}dvnkbLbROA-=tHkcs5t3wq(uGX1A8Pxz5pEd*qn2j!s3#ZPczT)0M`CN@K&R+;Z2_ zL9V0L?{6$(?Y@EeKBv}{BCV##(@AR_XJ*#!)oUty3)LpHklM{j8&Ai8)ZETcW3Ag& zy1*+@dziGJc2RT}D_f_spC=i20r##>M+bR2bz(L2$YEAo%?;LD_+-Vx{7h{HAVFkH=%{l+|E3N7tDw0 zJ{>jn($&!2(rWkNsIhi@7!!7>*XrKHZNF+5l<&iRVrt6%$ydSwT~@bvm)|wv*F+ag zifqV*>h-hXhQ^`F55jL1|6Td;RC~t|+{aQJp2%RXPGvg{sMXGIJLUrI z-v#^WOw@kAu{h;pM~hvP-&g`I`b}A2n6#C5Hw!LQ;HAf=_B&e0eBE`&exo|O)i+UV zax~VuujJ~(**e#`PfU<<>F+QH6%8SWX?dw*QlY_@Oi*JhnC`uF~4+E3jv@#C;U# zyIz%SuTRpv8HeM9I0O!Y0APO5el2Q{PI2HeX0qOH#HFyy) zUu~aC)mGTmXhf`ZVG-`yhP}z5{0g zbH*3Id2kN=Aaln3;3x1S7?3&ROW-01fy**y{44kc{0y$hobh#VEm5o&R}uUs1;(S` zKQIEuWX{+#T?h>bFbyzgoB-lM97vQo<5gu(l^5TOwYC=WWCiZIU6PV<30HCvgurFM zJk)R?Sxb+fJsOXF!3Y=w%tzv_px~dclmg# zR+8}~^d~?uSO%CE+h(ekXQ!oU6%CDPT6>(89r0SvL`v)}nP|NS$J-6+!Ct_;-Z~!1 zGmj$r3>*OsfH~tv@CEoB9FsZYX7D9w0xdFU+zP$|L2z8=jN8CTZ~~l?Ipc4@*NMUu z?FddwfpI4|13EyL%o+EB9?%WGl{w=-!5`pva6{&d2f<(9Ciq+CjEBKLU 0 then + if player:get_hp() >= 0 then self._passengers[i] = nil --clear the slot first do_attach(self, player, i) --attach else @@ -114,10 +114,10 @@ end -- attach passenger function ap_airship.attach_pax(self, player, slot) slot = slot or 0 + local name = player:get_player_name() --verify if is locked to non-owners if self._passengers_locked == true then - local name = player:get_player_name() local can_bypass = minetest.check_player_privs(player, {protection_bypass=true}) local is_shared = false if name == self.owner or can_bypass then is_shared = true end @@ -156,6 +156,11 @@ function ap_airship.attach_pax(self, player, slot) i = t[k] if self._passengers[i] == nil then do_attach(self, player, i) + if name == self.owner then + --put the owner on cabin directly + self._passengers_base_pos[i] = {x=0,y=-29,z=150} + self._passengers_base[i]:set_attach(self.object,'',self._passengers_base_pos[i],{x=0,y=0,z=0}) + end break end end diff --git a/walk_map.lua b/walk_map.lua index 0dad351..01a1116 100644 --- a/walk_map.lua +++ b/walk_map.lua @@ -42,12 +42,13 @@ local function is_obstacle_zone(pos, start_point, end_point) return retVal end - if pos.z < max_z and pos.z > min_z+mid_z and + local death_zone = 1.5 --to avoid the "slip" when colliding in y direction + if pos.z < max_z + death_zone and pos.z > min_z+mid_z and pos.x > min_x and pos.x < max_x then retVal.z = max_z + 1 return retVal end - if pos.z > min_z and pos.z <= min_z+mid_z and + if pos.z > min_z - death_zone and pos.z <= min_z+mid_z and pos.x > min_x and pos.x < max_x then retVal.z = min_z - 1 return retVal @@ -66,7 +67,6 @@ function ap_airship.cabin_map(pos, dpos) new_pos = is_obstacle_zone(new_pos, {x=12, z=140}, {x=2.5, z=130}) new_pos = is_obstacle_zone(new_pos, {x=-12, z=140}, {x=-2.5, z=130}) new_pos = is_obstacle_zone(new_pos, {x=12, z=127}, {x=2.5, z=117}) - new_pos = is_obstacle_zone(new_pos, {x=-12, z=127}, {x=-2.5, z=117}) --limit to the cabin new_pos.z = ap_airship.clamp(new_pos.z, 112, 164) @@ -120,7 +120,7 @@ function ap_airship.ladder_map(pos, dpos) local orig_pos = ap_airship.copy_vector(pos) local position = ap_airship.copy_vector(dpos) local new_pos = ap_airship.copy_vector(dpos) - new_pos.z = ap_airship.clamp(new_pos.z, 112, 118) + new_pos.z = ap_airship.clamp(new_pos.z, 112, 117) new_pos.x = ap_airship.clamp(new_pos.x, -8.42, -2) return new_pos