commit 81ec6e48b910d99f58a48432fcfa760b6281cd56 Author: Lars Mueller Date: Sat Apr 11 00:17:14 2020 +0200 Setup diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..4704e9d --- /dev/null +++ b/Readme.md @@ -0,0 +1,39 @@ +# Advanced Weapons + +Adds a variety of advanced weapons. + +## About + +Depends on `modlib` and `tnt`. +Written by LMD aka appguru(eu). Licensed under the GPLv3. + +## Features + +* Explosives + * Landmines + * Place them on full height blocks + * Walking on them triggers explosion + * Can be (un)buried by digging node below them + * Buried landmines are harder to spot & can't be easily picked up +* Special + * ~~Whips~~ temporarily cancelled as unfinished + * High range, average damage + * Causes bleeding & stunning (by chance) + * Right-click to "capture" player + * Drops their wielded item + * Player can't attack while captured + * Can be dragged around + * Unleashed as soon as RMB is released + * Futuristic Grappling Hook + * Throw to hook it somewhere + * Creates Force Beam + * Right-click ascent aid to (de)attach + * Go forwards/backwards on the beam + * Turrets + * Gatlin Gun + * High reload rate, low damage & range + * Turns slowly, so you can try dodging + * Only attacks owners opponents + * Destroying/digging the base destroys the turret +* Many more! + * Soon \ No newline at end of file diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..e7de6f2 --- /dev/null +++ b/init.lua @@ -0,0 +1,5 @@ +adv_weapons = {} +modlib.mod.extend("adv_weapons", "main") +modlib.mod.extend("adv_weapons", "mine") +modlib.mod.extend("adv_weapons", "special") +modlib.mod.extend("adv_weapons", "turret") \ No newline at end of file diff --git a/main.lua b/main.lua new file mode 100644 index 0000000..1f1bafe --- /dev/null +++ b/main.lua @@ -0,0 +1,44 @@ +adv_weapons.is_opponent = function(a, b) return a == b end + +players = {} +last_use = {} + +minetest.register_on_joinplayer(function(player) + players[player:get_player_name()] = {} + last_use[player:get_player_name()] = minetest.get_us_time() +end) + +minetest.register_globalstep(function() + for _, player in pairs(minetest.get_connected_players()) do + local controls = player:get_player_control_bits() + local rmb = controls >= math.pow(2, 8) + if rmb then + local wielded = minetest.registered_items[player:get_wielded_item():get_name()] + if wielded then + local action = wielded.on_place or wielded.on_secondary_use or wielded.on_rightclick + if not action then + local lmb = controls >= math.pow(2, 7) + if lmb then + action = wielded.on_punch or wielded.on_use + end + end + if action then + last_use[player:get_player_name()] = minetest.get_us_time() + end + end + end + end +end) + +minetest.register_on_leaveplayer(function(player) + players[player:get_player_name()] = nil + last_use[player:get_player_name()] = nil +end) + +function get_rotation(direction) + return {x = math.atan2(direction.y, math.sqrt(direction.z*direction.z+direction.x*direction.x)), y = -math.atan2(direction.x, direction.z), z = 0} +end + +function get_rotation_smooth(direction) + return {x = math.pi + math.atan2(direction.y, math.sqrt(direction.z*direction.z+direction.x*direction.x)), y = math.pi-math.atan2(direction.x, direction.z), z = 0} +end \ No newline at end of file diff --git a/media/adv_weapons_gatlin_barrel.obj b/media/adv_weapons_gatlin_barrel.obj new file mode 100644 index 0000000..6f85c63 --- /dev/null +++ b/media/adv_weapons_gatlin_barrel.obj @@ -0,0 +1,301 @@ +# Blender v2.82 (sub 7) OBJ File: '' +# www.blender.org +o mesh_turret_gatlin_gun +v 0.095460 0.030142 0.001832 +v 0.095460 -0.032358 0.001832 +v 0.157960 -0.032358 0.001832 +v 0.157960 0.030142 0.001832 +v 0.095460 -0.032358 0.814332 +v 0.095460 0.030142 0.814332 +v 0.157960 -0.032358 0.814332 +v 0.157960 0.030142 0.814332 +v 0.032960 -0.032358 0.001832 +v 0.032960 -0.094858 0.001832 +v 0.095460 -0.094858 0.001832 +v 0.032960 -0.094858 0.814332 +v 0.032960 -0.032358 0.814332 +v 0.095460 -0.094858 0.814332 +v 0.032960 0.092642 0.001832 +v 0.032960 0.030142 0.001832 +v 0.095460 0.092642 0.001832 +v 0.032960 0.030142 0.814332 +v 0.032960 0.092642 0.814332 +v 0.095460 0.092642 0.814332 +v -0.029540 0.030142 0.001832 +v -0.029540 -0.032358 0.001832 +v -0.029540 -0.032358 0.814332 +v -0.029540 0.030142 0.814332 +v -0.092040 -0.032358 0.001832 +v -0.092040 -0.094858 0.001832 +v -0.029540 -0.094858 0.001832 +v -0.092040 -0.094858 0.814332 +v -0.092040 -0.032358 0.814332 +v -0.029540 -0.094858 0.814332 +v -0.092040 0.092642 0.001832 +v -0.092040 0.030142 0.001832 +v -0.029540 0.092642 0.001832 +v -0.092040 0.030142 0.814332 +v -0.092040 0.092642 0.814332 +v -0.029540 0.092642 0.814332 +v -0.154540 0.030142 0.001832 +v -0.154540 -0.032358 0.001832 +v -0.154540 -0.032358 0.814332 +v -0.154540 0.030142 0.814332 +vt 0.200000 0.500000 +vt 0.240000 0.538462 +vt 0.200000 0.538462 +vt 0.040000 0.500000 +vt 0.000000 1.000000 +vt 0.000000 0.500000 +vt 0.480000 0.500000 +vt 0.520000 0.000000 +vt 0.520000 0.500000 +vt 0.200000 0.000000 +vt 0.160000 0.500000 +vt 0.160000 0.000000 +vt 0.400000 0.538462 +vt 0.360000 0.500000 +vt 0.400000 0.500000 +vt 0.640000 0.000000 +vt 0.680000 0.500000 +vt 0.640000 0.500000 +vt 0.080000 0.500000 +vt 0.040000 1.000000 +vt 0.040000 0.500000 +vt 0.160000 0.538462 +vt 0.200000 0.500000 +vt 0.200000 0.538462 +vt 0.200000 0.576923 +vt 0.160000 0.538462 +vt 0.200000 0.538462 +vt 0.280000 0.500000 +vt 0.320000 0.538462 +vt 0.280000 0.538462 +vt 0.280000 0.500000 +vt 0.320000 0.000000 +vt 0.320000 0.500000 +vt 0.440000 0.500000 +vt 0.480000 0.000000 +vt 0.480000 0.500000 +vt 0.160000 0.500000 +vt 0.120000 0.538462 +vt 0.120000 0.500000 +vt 0.200000 0.538462 +vt 0.240000 0.576923 +vt 0.200000 0.576923 +vt 0.800000 0.000000 +vt 0.840000 0.500000 +vt 0.800000 0.500000 +vt 0.720000 0.000000 +vt 0.760000 0.500000 +vt 0.720000 0.500000 +vt 0.520000 0.500000 +vt 0.560000 0.538462 +vt 0.520000 0.538462 +vt 1.000000 0.000000 +vt 0.960000 0.500000 +vt 0.960000 0.000000 +vt 0.080000 0.000000 +vt 0.040000 0.500000 +vt 0.040000 0.000000 +vt 0.440000 0.538462 +vt 0.480000 0.500000 +vt 0.480000 0.538462 +vt 0.600000 0.500000 +vt 0.560000 0.000000 +vt 0.600000 0.000000 +vt 0.120000 0.500000 +vt 0.160000 0.000000 +vt 0.160000 0.500000 +vt 0.000000 0.500000 +vt 0.040000 0.000000 +vt 0.040000 0.500000 +vt 0.240000 0.500000 +vt 0.280000 0.000000 +vt 0.280000 0.500000 +vt 0.200000 0.500000 +vt 0.240000 0.000000 +vt 0.240000 0.500000 +vt 0.160000 0.576923 +vt 0.120000 0.538462 +vt 0.160000 0.538462 +vt 0.960000 0.000000 +vt 0.920000 0.500000 +vt 0.920000 0.000000 +vt 0.400000 0.500000 +vt 0.440000 0.000000 +vt 0.440000 0.500000 +vt 0.240000 0.500000 +vt 0.280000 0.538462 +vt 0.240000 0.538462 +vt 0.120000 0.500000 +vt 0.080000 1.000000 +vt 0.080000 0.500000 +vt 0.600000 0.000000 +vt 0.640000 0.500000 +vt 0.600000 0.500000 +vt 0.920000 0.000000 +vt 0.880000 0.500000 +vt 0.880000 0.000000 +vt 0.680000 0.000000 +vt 0.720000 0.500000 +vt 0.680000 0.500000 +vt 0.360000 0.500000 +vt 0.400000 0.000000 +vt 0.400000 0.500000 +vt 0.320000 0.500000 +vt 0.360000 0.000000 +vt 0.360000 0.500000 +vt 0.520000 0.538462 +vt 0.480000 0.500000 +vt 0.520000 0.500000 +vt 0.400000 0.538462 +vt 0.440000 0.500000 +vt 0.440000 0.538462 +vt 0.080000 0.500000 +vt 0.120000 0.000000 +vt 0.120000 0.500000 +vt 0.560000 0.000000 +vt 0.520000 0.500000 +vt 0.520000 0.000000 +vt 0.840000 0.500000 +vt 0.880000 0.000000 +vt 0.880000 0.500000 +vt 0.360000 0.538462 +vt 0.320000 0.500000 +vt 0.360000 0.500000 +vt 0.760000 0.000000 +vt 0.800000 0.500000 +vt 0.760000 0.500000 +vt 0.240000 0.500000 +vt 0.040000 1.000000 +vt 0.480000 0.000000 +vt 0.200000 0.500000 +vt 0.360000 0.538462 +vt 0.680000 0.000000 +vt 0.080000 1.000000 +vt 0.160000 0.500000 +vt 0.160000 0.576923 +vt 0.320000 0.500000 +vt 0.280000 0.000000 +vt 0.440000 0.000000 +vt 0.160000 0.538462 +vt 0.240000 0.538462 +vt 0.840000 0.000000 +vt 0.760000 0.000000 +vt 0.560000 0.500000 +vt 1.000000 0.500000 +vt 0.080000 0.500000 +vt 0.440000 0.500000 +vt 0.560000 0.500000 +vt 0.120000 0.000000 +vt 0.000000 0.000000 +vt 0.240000 0.000000 +vt 0.200000 0.000000 +vt 0.120000 0.576923 +vt 0.960000 0.500000 +vt 0.400000 0.000000 +vt 0.280000 0.500000 +vt 0.120000 1.000000 +vt 0.640000 0.000000 +vt 0.920000 0.500000 +vt 0.720000 0.000000 +vt 0.360000 0.000000 +vt 0.320000 0.000000 +vt 0.480000 0.538462 +vt 0.080000 0.000000 +vt 0.560000 0.500000 +vt 0.840000 0.000000 +vt 0.320000 0.538462 +vt 0.800000 0.000000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 1/1/1 3/2/1 2/3/1 +f 16/4/2 13/5/2 9/6/2 +f 9/7/3 23/8/3 22/9/3 +f 24/10/4 22/11/4 23/12/4 +f 8/13/5 5/14/5 7/15/5 +f 35/16/6 33/17/6 31/18/6 +f 17/19/2 6/20/2 1/21/2 +f 9/22/1 11/23/1 10/24/1 +f 5/25/5 12/26/5 14/27/5 +f 15/28/1 1/29/1 16/30/1 +f 3/31/3 5/32/3 2/33/3 +f 11/34/3 12/35/3 10/36/3 +f 20/37/5 18/38/5 6/39/5 +f 21/40/1 9/41/1 22/42/1 +f 6/43/6 4/44/6 1/45/6 +f 24/46/6 16/47/6 21/48/6 +f 18/49/5 23/50/5 13/51/5 +f 4/52/2 7/53/2 3/54/2 +f 35/55/4 32/56/4 34/57/4 +f 25/58/1 27/59/1 26/60/1 +f 13/61/6 2/62/6 9/63/6 +f 2/64/4 6/65/4 1/66/4 +f 16/67/4 19/68/4 15/69/4 +f 26/70/4 29/71/4 25/72/4 +f 10/73/4 13/74/4 9/75/4 +f 23/76/5 28/77/5 30/78/5 +f 22/79/2 30/80/2 27/81/2 +f 1/82/3 18/83/3 16/84/3 +f 31/85/1 21/86/1 32/87/1 +f 33/88/2 24/89/2 21/90/2 +f 29/91/6 22/92/6 25/93/6 +f 2/94/2 14/95/2 11/96/2 +f 19/97/6 17/98/6 15/99/6 +f 21/100/3 34/101/3 32/102/3 +f 27/103/3 28/104/3 26/105/3 +f 36/106/5 34/107/5 24/108/5 +f 37/109/1 25/110/1 38/111/1 +f 38/112/4 40/113/4 37/114/4 +f 39/115/3 25/116/3 29/117/3 +f 32/118/2 29/119/2 25/120/2 +f 34/121/5 39/122/5 29/123/5 +f 40/124/6 32/125/6 37/126/6 +f 1/1/1 4/127/1 3/2/1 +f 16/4/2 18/128/2 13/5/2 +f 9/7/3 13/129/3 23/8/3 +f 24/10/4 21/130/4 22/11/4 +f 8/13/5 6/131/5 5/14/5 +f 35/16/6 36/132/6 33/17/6 +f 17/19/2 20/133/2 6/20/2 +f 9/22/1 2/134/1 11/23/1 +f 5/25/5 13/135/5 12/26/5 +f 15/28/1 17/136/1 1/29/1 +f 3/31/3 7/137/3 5/32/3 +f 11/34/3 14/138/3 12/35/3 +f 20/37/5 19/139/5 18/38/5 +f 21/40/1 16/140/1 9/41/1 +f 6/43/6 8/141/6 4/44/6 +f 24/46/6 18/142/6 16/47/6 +f 18/49/5 24/143/5 23/50/5 +f 4/52/2 8/144/2 7/53/2 +f 35/55/4 31/145/4 32/56/4 +f 25/58/1 22/146/1 27/59/1 +f 13/61/6 5/147/6 2/62/6 +f 2/64/4 5/148/4 6/65/4 +f 16/67/4 18/149/4 19/68/4 +f 26/70/4 28/150/4 29/71/4 +f 10/73/4 12/151/4 13/74/4 +f 23/76/5 29/152/5 28/77/5 +f 22/79/2 23/153/2 30/80/2 +f 1/82/3 6/154/3 18/83/3 +f 31/85/1 33/155/1 21/86/1 +f 33/88/2 36/156/2 24/89/2 +f 29/91/6 23/157/6 22/92/6 +f 2/94/2 5/158/2 14/95/2 +f 19/97/6 20/159/6 17/98/6 +f 21/100/3 24/160/3 34/101/3 +f 27/103/3 30/161/3 28/104/3 +f 36/106/5 35/162/5 34/107/5 +f 37/109/1 32/102/1 25/110/1 +f 38/112/4 39/163/4 40/113/4 +f 39/115/3 38/164/3 25/116/3 +f 32/118/2 34/165/2 29/119/2 +f 34/121/5 40/166/5 39/122/5 +f 40/124/6 34/167/6 32/125/6 diff --git a/media/adv_weapons_grappling_hook.obj b/media/adv_weapons_grappling_hook.obj new file mode 100644 index 0000000..4b2048a --- /dev/null +++ b/media/adv_weapons_grappling_hook.obj @@ -0,0 +1,826 @@ +# Blender v2.82 (sub 7) OBJ File: 'grappling.blend' +# www.blender.org +o mesh_grappling +v 0.312500 -0.312500 -0.062500 +v 0.312500 -0.312500 -0.000000 +v 0.312500 -0.250000 -0.000000 +v 0.312500 -0.250000 -0.062500 +v 0.375000 -0.312500 -0.062500 +v 0.375000 -0.250000 -0.062500 +v 0.312500 -0.250000 0.062500 +v 0.375000 -0.250000 0.062500 +v 0.312500 -0.312500 0.062500 +v 0.375000 -0.312500 0.062500 +v 0.250000 -0.375000 -0.062500 +v 0.250000 -0.312500 -0.000000 +v 0.250000 -0.312500 -0.062500 +v 0.312500 -0.375000 -0.062500 +v 0.250000 -0.250000 -0.000000 +v 0.250000 -0.250000 0.062500 +v 0.250000 -0.187500 0.062500 +v 0.250000 -0.187500 -0.000000 +v 0.312500 -0.187500 -0.000000 +v 0.250000 -0.375000 0.062500 +v 0.250000 -0.312500 0.062500 +v 0.312500 -0.375000 0.062500 +v 0.250000 -0.187500 0.125000 +v 0.312500 -0.187500 0.125000 +v 0.312500 -0.312500 0.125000 +v 0.187500 -0.312500 -0.000000 +v 0.187500 -0.250000 0.062500 +v 0.187500 -0.250000 -0.000000 +v 0.187500 -0.125000 0.062500 +v 0.250000 -0.125000 0.062500 +v 0.187500 -0.125000 0.125000 +v 0.250000 -0.125000 0.125000 +v 0.187500 -0.250000 0.125000 +v 0.187500 -0.312500 0.125000 +v 0.125000 -0.062500 0.062500 +v 0.187500 -0.062500 0.062500 +v 0.125000 -0.062500 0.125000 +v 0.187500 -0.062500 0.125000 +v 0.125000 -0.187500 0.062500 +v 0.125000 -0.187500 0.125000 +v 0.125000 -0.250000 0.062500 +v 0.125000 -0.250000 0.125000 +v 0.062500 -0.062500 0.062500 +v 0.062500 -0.000000 0.062500 +v 0.125000 -0.000000 0.062500 +v 0.062500 -0.000000 0.125000 +v 0.125000 -0.000000 0.125000 +v 0.062500 -0.062500 0.125000 +v 0.062500 -0.125000 0.062500 +v 0.062500 -0.125000 0.125000 +v 0.062500 -0.187500 0.062500 +v 0.062500 -0.187500 0.125000 +v 0.062500 0.062500 -0.500000 +v 0.062500 -0.062500 -0.500000 +v 0.062500 0.312500 -0.062500 +v 0.062500 0.375000 -0.062500 +v 0.062500 0.312500 0.000000 +v 0.062500 0.375000 0.062500 +v 0.062500 0.312500 0.062500 +v 0.062500 0.250000 0.000000 +v 0.062500 0.250000 0.062500 +v 0.062500 0.062500 0.062500 +v 0.062500 0.312500 0.125000 +v 0.062500 0.062500 0.125000 +v 0.062500 0.062500 0.187500 +v 0.062500 -0.062500 0.187500 +v -0.062500 0.062500 -0.500000 +v -0.062500 -0.062500 -0.500000 +v -0.062500 0.312500 -0.062500 +v -0.062500 0.312500 0.000000 +v -0.062500 0.375000 -0.062500 +v -0.062500 0.312500 0.062500 +v -0.062500 0.375000 0.062500 +v -0.062500 0.250000 0.000000 +v -0.062500 0.250000 0.062500 +v -0.062500 -0.000000 0.062500 +v -0.062500 0.062500 0.062500 +v -0.062500 -0.062500 0.062500 +v -0.062500 0.312500 0.125000 +v -0.062500 0.062500 0.125000 +v -0.062500 -0.000000 0.125000 +v -0.062500 -0.125000 0.062500 +v -0.062500 -0.062500 0.125000 +v -0.062500 -0.125000 0.125000 +v -0.062500 0.062500 0.187500 +v -0.062500 -0.062500 0.187500 +v -0.125000 -0.062500 0.062500 +v -0.125000 -0.062500 0.125000 +v -0.125000 -0.000000 0.125000 +v -0.125000 -0.000000 0.062500 +v -0.062500 -0.187500 0.062500 +v -0.125000 -0.187500 0.062500 +v -0.125000 -0.187500 0.125000 +v -0.062500 -0.187500 0.125000 +v -0.187500 -0.125000 0.062500 +v -0.187500 -0.125000 0.125000 +v -0.187500 -0.062500 0.125000 +v -0.187500 -0.062500 0.062500 +v -0.125000 -0.250000 0.062500 +v -0.187500 -0.250000 0.062500 +v -0.187500 -0.250000 0.125000 +v -0.125000 -0.250000 0.125000 +v -0.187500 -0.312500 -0.000000 +v -0.250000 -0.312500 -0.000000 +v -0.250000 -0.250000 -0.000000 +v -0.187500 -0.250000 -0.000000 +v -0.250000 -0.250000 0.062500 +v -0.250000 -0.312500 0.062500 +v -0.250000 -0.187500 0.062500 +v -0.250000 -0.187500 0.125000 +v -0.250000 -0.125000 0.125000 +v -0.250000 -0.125000 0.062500 +v -0.187500 -0.312500 0.125000 +v -0.312500 -0.375000 -0.062500 +v -0.312500 -0.312500 -0.000000 +v -0.312500 -0.312500 -0.062500 +v -0.250000 -0.375000 -0.062500 +v -0.250000 -0.312500 -0.062500 +v -0.312500 -0.250000 -0.000000 +v -0.312500 -0.250000 0.062500 +v -0.312500 -0.187500 -0.000000 +v -0.250000 -0.187500 -0.000000 +v -0.312500 -0.375000 0.062500 +v -0.312500 -0.312500 0.062500 +v -0.250000 -0.375000 0.062500 +v -0.312500 -0.187500 0.125000 +v -0.312500 -0.312500 0.125000 +v -0.375000 -0.312500 -0.062500 +v -0.375000 -0.250000 -0.062500 +v -0.312500 -0.250000 -0.062500 +v -0.375000 -0.312500 0.062500 +v -0.375000 -0.250000 0.062500 +vt 0.811688 0.906926 +vt 0.854978 0.950216 +vt 0.811688 0.950216 +vt 0.807359 0.859307 +vt 0.764069 0.902597 +vt 0.764069 0.859307 +vt 0.525974 0.718615 +vt 0.569264 0.718615 +vt 0.569264 0.761905 +vt 0.668831 0.902597 +vt 0.712121 0.859307 +vt 0.712121 0.902597 +vt 0.997835 0.002165 +vt 0.954545 0.045455 +vt 0.954545 0.002165 +vt 0.049784 0.954545 +vt 0.093074 0.997835 +vt 0.049784 0.997835 +vt 0.575758 0.528138 +vt 0.662338 0.614719 +vt 0.575758 0.614718 +vt 0.954545 0.049784 +vt 0.997835 0.093074 +vt 0.954545 0.093074 +vt 0.521645 0.805195 +vt 0.478355 0.761905 +vt 0.521645 0.718615 +vt 0.906926 0.764069 +vt 0.950216 0.807359 +vt 0.906926 0.807359 +vt 0.002165 0.997835 +vt 0.045455 0.954545 +vt 0.045455 0.997835 +vt 0.859307 0.859307 +vt 0.902597 0.902597 +vt 0.859307 0.902597 +vt 0.573593 0.906926 +vt 0.616883 0.950216 +vt 0.573593 0.950216 +vt 0.287879 0.766234 +vt 0.331169 0.852814 +vt 0.287879 0.852814 +vt 0.811688 0.859307 +vt 0.854978 0.902597 +vt 0.811688 0.902597 +vt 0.906926 0.573593 +vt 0.950216 0.616883 +vt 0.906926 0.616883 +vt 0.906926 0.525974 +vt 0.950216 0.569264 +vt 0.906926 0.569264 +vt 0.950216 0.664502 +vt 0.906926 0.621212 +vt 0.950216 0.621212 +vt 0.480520 0.709957 +vt 0.480520 0.666667 +vt 0.523810 0.666667 +vt 0.906926 0.759740 +vt 0.950216 0.716450 +vt 0.950216 0.759740 +vt 0.906926 0.290043 +vt 0.950216 0.290043 +vt 0.950216 0.333333 +vt 0.383117 0.906926 +vt 0.426407 0.950216 +vt 0.383117 0.950216 +vt 0.525974 0.906926 +vt 0.569264 0.950216 +vt 0.525974 0.950216 +vt 0.712121 0.906926 +vt 0.668831 0.950216 +vt 0.668831 0.906926 +vt 0.621212 0.718615 +vt 0.664502 0.718615 +vt 0.664502 0.761905 +vt 0.906926 0.194805 +vt 0.950216 0.281385 +vt 0.906926 0.281385 +vt 0.430736 0.900433 +vt 0.474026 0.813853 +vt 0.474026 0.900433 +vt 0.902597 0.757576 +vt 0.859307 0.714286 +vt 0.902597 0.670996 +vt 0.859307 0.766234 +vt 0.902597 0.766234 +vt 0.902597 0.809524 +vt 0.662338 0.666667 +vt 0.619048 0.709957 +vt 0.619048 0.666667 +vt 0.902597 0.662338 +vt 0.859307 0.662338 +vt 0.859307 0.619048 +vt 0.099567 0.932900 +vt 0.186147 0.543290 +vt 0.186147 0.932900 +vt 0.331169 0.948052 +vt 0.287879 0.948052 +vt 0.287879 0.904762 +vt 0.859307 0.480519 +vt 0.902597 0.480519 +vt 0.902597 0.523809 +vt 0.426407 0.900433 +vt 0.383117 0.813853 +vt 0.426407 0.813853 +vt 0.564935 0.067100 +vt 0.564935 0.110390 +vt 0.435065 0.110390 +vt 0.192641 0.900433 +vt 0.235931 0.813853 +vt 0.235931 0.900433 +vt 0.761905 0.796537 +vt 0.718615 0.839827 +vt 0.675325 0.796537 +vt 0.385281 0.805195 +vt 0.471861 0.718615 +vt 0.471862 0.805195 +vt 0.428571 0.666667 +vt 0.471861 0.623377 +vt 0.471861 0.709957 +vt 0.335498 0.766234 +vt 0.378788 0.852814 +vt 0.335498 0.852814 +vt 0.281385 0.805195 +vt 0.194805 0.718615 +vt 0.281385 0.718615 +vt 0.664502 0.900433 +vt 0.621212 0.813853 +vt 0.664502 0.813853 +vt 0.283550 0.900433 +vt 0.240260 0.813853 +vt 0.283550 0.813853 +vt 0.523810 0.614718 +vt 0.480520 0.571428 +vt 0.523810 0.571428 +vt 0.569264 0.900433 +vt 0.525974 0.813853 +vt 0.569264 0.813853 +vt 0.621212 0.906926 +vt 0.664502 0.950216 +vt 0.621212 0.950216 +vt 0.764069 0.906926 +vt 0.807359 0.950216 +vt 0.764069 0.950216 +vt 0.764069 0.064935 +vt 0.807359 0.108225 +vt 0.720779 0.108225 +vt 0.101732 0.067100 +vt 0.101732 0.110390 +vt 0.058442 0.110390 +vt 0.759740 0.950216 +vt 0.716450 0.906926 +vt 0.759740 0.906926 +vt 0.906926 0.668831 +vt 0.950216 0.712121 +vt 0.906926 0.712121 +vt 0.478355 0.906926 +vt 0.521645 0.950216 +vt 0.478355 0.950216 +vt 0.950216 0.950216 +vt 0.906926 0.906926 +vt 0.950216 0.906926 +vt 0.004329 0.543290 +vt 0.090909 0.932900 +vt 0.004329 0.932900 +vt 0.906926 0.478355 +vt 0.950216 0.521645 +vt 0.906926 0.521645 +vt 0.240260 0.906926 +vt 0.283550 0.950216 +vt 0.240260 0.950216 +vt 0.906926 0.902597 +vt 0.950216 0.859307 +vt 0.950216 0.902597 +vt 0.521645 0.900433 +vt 0.478355 0.813853 +vt 0.521645 0.813853 +vt 0.430736 0.906926 +vt 0.474026 0.950216 +vt 0.430736 0.950216 +vt 0.140693 0.997835 +vt 0.097403 0.954545 +vt 0.140693 0.954545 +vt 0.573593 0.900433 +vt 0.616883 0.813853 +vt 0.616883 0.900433 +vt 0.385281 0.614719 +vt 0.385281 0.571428 +vt 0.428571 0.571428 +vt 0.188312 0.954545 +vt 0.145022 0.997835 +vt 0.145022 0.954545 +vt 0.950216 0.811688 +vt 0.906926 0.854978 +vt 0.906926 0.811688 +vt 0.290043 0.660173 +vt 0.376623 0.530303 +vt 0.376623 0.660173 +vt 0.194805 0.532467 +vt 0.281385 0.705628 +vt 0.194805 0.705628 +vt 0.906926 0.099567 +vt 0.950216 0.186147 +vt 0.906926 0.186147 +vt 0.997836 0.097403 +vt 0.954545 0.140693 +vt 0.954545 0.097403 +vt 0.192641 0.954545 +vt 0.235931 0.997835 +vt 0.192641 0.997835 +vt 0.333333 0.714286 +vt 0.290043 0.670996 +vt 0.376623 0.670996 +vt 0.906926 0.385281 +vt 0.950216 0.385281 +vt 0.950216 0.428571 +vt 0.759740 0.859307 +vt 0.716450 0.902597 +vt 0.716450 0.859307 +vt 0.573593 0.718615 +vt 0.616883 0.805195 +vt 0.573593 0.805195 +vt 0.335498 0.861472 +vt 0.378788 0.861472 +vt 0.378788 0.904762 +vt 0.859307 0.950216 +vt 0.902597 0.906926 +vt 0.902597 0.950216 +vt 0.235931 0.950216 +vt 0.192641 0.906926 +vt 0.235931 0.906926 +vt 0.906926 0.004329 +vt 0.950216 0.047619 +vt 0.906926 0.090909 +vt 0.854978 0.906926 +vt 0.807359 0.902597 +vt 0.569264 0.805195 +vt 0.525974 0.805195 +vt 0.668831 0.859307 +vt 0.997835 0.045455 +vt 0.093074 0.954545 +vt 0.662338 0.528138 +vt 0.997835 0.049784 +vt 0.478355 0.805195 +vt 0.478355 0.718615 +vt 0.950216 0.764069 +vt 0.002165 0.954545 +vt 0.902597 0.859307 +vt 0.616883 0.906926 +vt 0.331169 0.766234 +vt 0.854978 0.859307 +vt 0.950216 0.573593 +vt 0.950216 0.525974 +vt 0.906926 0.664502 +vt 0.523810 0.623377 +vt 0.567100 0.623377 +vt 0.567100 0.709957 +vt 0.906926 0.716450 +vt 0.950216 0.376623 +vt 0.906926 0.376623 +vt 0.426407 0.906926 +vt 0.569264 0.906926 +vt 0.712121 0.950216 +vt 0.664502 0.805195 +vt 0.621212 0.805195 +vt 0.950216 0.194805 +vt 0.430736 0.813853 +vt 0.859307 0.757576 +vt 0.859307 0.670996 +vt 0.902597 0.852814 +vt 0.859307 0.852814 +vt 0.575758 0.623376 +vt 0.619048 0.623376 +vt 0.662338 0.623376 +vt 0.662338 0.709957 +vt 0.575758 0.666667 +vt 0.859307 0.575758 +vt 0.902597 0.575758 +vt 0.099567 0.543290 +vt 0.287879 0.861472 +vt 0.331169 0.861472 +vt 0.902597 0.567100 +vt 0.859307 0.567100 +vt 0.383117 0.900433 +vt 0.391775 0.153680 +vt 0.391775 0.196970 +vt 0.348485 0.196970 +vt 0.348485 0.110390 +vt 0.391775 0.110390 +vt 0.391775 0.067100 +vt 0.564935 0.023810 +vt 0.608225 0.067100 +vt 0.651515 0.023810 +vt 0.651515 0.067100 +vt 0.608225 0.110390 +vt 0.651515 0.110390 +vt 0.651515 0.500000 +vt 0.564935 0.500000 +vt 0.435065 0.153680 +vt 0.192641 0.813853 +vt 0.675325 0.493506 +vt 0.718615 0.493506 +vt 0.675325 0.536797 +vt 0.761905 0.493506 +vt 0.761905 0.536797 +vt 0.805195 0.536797 +vt 0.805195 0.580087 +vt 0.718615 0.580087 +vt 0.675325 0.580087 +vt 0.848485 0.580087 +vt 0.848485 0.623377 +vt 0.761905 0.623377 +vt 0.718615 0.623377 +vt 0.805195 0.623377 +vt 0.805195 0.709957 +vt 0.848485 0.709957 +vt 0.848485 0.753247 +vt 0.805195 0.753247 +vt 0.718615 0.753247 +vt 0.718615 0.709957 +vt 0.761905 0.709957 +vt 0.805195 0.796537 +vt 0.675325 0.753247 +vt 0.761905 0.839827 +vt 0.675325 0.839827 +vt 0.385281 0.718615 +vt 0.428571 0.623377 +vt 0.385281 0.709957 +vt 0.385281 0.666667 +vt 0.378788 0.766234 +vt 0.194805 0.805195 +vt 0.621212 0.900433 +vt 0.240260 0.900433 +vt 0.480520 0.614718 +vt 0.480520 0.528138 +vt 0.523810 0.528138 +vt 0.567100 0.571428 +vt 0.567100 0.614718 +vt 0.525974 0.900433 +vt 0.664502 0.906926 +vt 0.807359 0.906926 +vt 0.677489 0.454545 +vt 0.677489 0.367965 +vt 0.720779 0.367965 +vt 0.720779 0.324675 +vt 0.764069 0.324675 +vt 0.764069 0.281385 +vt 0.807359 0.281385 +vt 0.807359 0.194805 +vt 0.764069 0.194805 +vt 0.764069 0.151515 +vt 0.764069 0.411255 +vt 0.807359 0.367965 +vt 0.764069 0.454545 +vt 0.807359 0.411255 +vt 0.850649 0.324675 +vt 0.850649 0.367965 +vt 0.893939 0.281385 +vt 0.893939 0.324675 +vt 0.850649 0.281385 +vt 0.893939 0.151515 +vt 0.893939 0.194805 +vt 0.850649 0.194805 +vt 0.850649 0.151515 +vt 0.720779 0.151515 +vt 0.850649 0.108225 +vt 0.677489 0.108225 +vt 0.677489 0.021645 +vt 0.807359 0.064935 +vt 0.764069 0.021645 +vt 0.058442 0.067100 +vt 0.015152 0.067100 +vt 0.015152 0.023810 +vt 0.101732 0.023810 +vt 0.274892 0.067100 +vt 0.231602 0.110390 +vt 0.274892 0.110390 +vt 0.318182 0.110390 +vt 0.274892 0.153680 +vt 0.318182 0.196970 +vt 0.274892 0.196970 +vt 0.231602 0.153680 +vt 0.101732 0.500000 +vt 0.015152 0.500000 +vt 0.015152 0.110390 +vt 0.716450 0.950216 +vt 0.950216 0.668831 +vt 0.521645 0.906926 +vt 0.906926 0.950216 +vt 0.090909 0.543290 +vt 0.950216 0.478355 +vt 0.283550 0.906926 +vt 0.906926 0.859307 +vt 0.478355 0.900433 +vt 0.474026 0.906926 +vt 0.097403 0.997835 +vt 0.573593 0.813853 +vt 0.428571 0.528138 +vt 0.471861 0.528138 +vt 0.471861 0.614718 +vt 0.188312 0.997835 +vt 0.950216 0.854978 +vt 0.290043 0.530303 +vt 0.281385 0.532467 +vt 0.950216 0.099567 +vt 0.997836 0.140693 +vt 0.235931 0.954545 +vt 0.290043 0.714286 +vt 0.376623 0.757576 +vt 0.333333 0.757576 +vt 0.950216 0.471861 +vt 0.906926 0.471861 +vt 0.759740 0.902597 +vt 0.616883 0.718615 +vt 0.378788 0.948052 +vt 0.335498 0.948052 +vt 0.859307 0.906926 +vt 0.192641 0.950216 +vt 0.950216 0.004329 +vt 0.950216 0.090909 +vn 1.0000 -0.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 +s 1 +f 2/1/1 4/2/1 1/3/1 +f 1/4/2 6/5/2 5/6/2 +f 123/7/1 124/8/1 115/9/1 +f 9/10/3 8/11/3 7/12/3 +f 11/13/2 1/14/2 14/15/2 +f 12/16/4 1/17/4 13/18/4 +f 86/19/3 65/20/3 85/21/3 +f 16/22/1 18/23/1 15/24/1 +f 19/25/4 17/26/4 24/27/4 +f 20/28/3 9/29/3 21/30/3 +f 27/31/4 15/32/4 28/33/4 +f 31/34/4 30/35/4 29/36/4 +f 17/37/5 32/38/5 23/39/5 +f 5/40/5 8/41/5 10/42/5 +f 37/43/4 36/44/4 35/45/4 +f 29/46/5 38/47/5 31/48/5 +f 42/49/1 39/50/1 41/51/1 +f 33/52/6 41/53/6 27/54/6 +f 26/55/6 12/56/6 21/57/6 +f 46/58/4 45/59/4 44/60/4 +f 34/61/1 33/62/1 27/63/1 +f 35/64/5 47/65/5 37/66/5 +f 52/67/1 49/68/1 51/69/1 +f 40/70/6 51/71/6 39/72/6 +f 14/73/5 1/74/5 2/75/5 +f 84/76/6 49/77/6 50/78/6 +f 85/79/4 64/80/4 80/81/4 +f 6/82/4 3/83/4 8/84/4 +f 20/85/1 21/86/1 12/87/1 +f 119/88/2 122/89/2 105/90/2 +f 126/91/4 110/92/4 109/93/4 +f 67/94/4 62/95/4 53/96/4 +f 10/97/6 9/98/6 2/99/6 +f 117/100/5 118/101/5 104/102/5 +f 75/103/6 60/104/6 61/105/6 +f 64/106/5 62/107/5 61/108/5 +f 79/109/4 59/110/4 72/111/4 +f 29/112/2 17/113/2 27/114/2 +f 53/115/2 68/116/2 67/117/2 +f 7/118/5 19/119/5 24/120/5 +f 86/121/6 48/122/6 66/123/6 +f 73/124/4 56/125/4 71/126/4 +f 22/127/6 11/128/6 14/129/6 +f 70/130/6 55/131/6 57/132/6 +f 3/133/2 12/134/2 15/135/2 +f 69/136/2 56/137/2 55/138/2 +f 88/139/1 90/140/1 87/141/1 +f 89/142/4 76/143/4 90/144/4 +f 23/145/3 31/146/3 33/147/3 +f 80/148/1 77/149/1 76/150/1 +f 94/151/6 92/152/6 91/153/6 +f 91/154/5 84/155/5 94/156/5 +f 96/157/1 98/158/1 95/159/1 +f 97/160/4 87/161/4 98/162/4 +f 43/163/6 68/164/6 54/165/6 +f 102/166/6 100/167/6 99/168/6 +f 99/169/5 93/170/5 102/171/5 +f 107/172/4 106/173/4 105/174/4 +f 74/175/2 57/176/2 60/177/2 +f 110/178/1 112/179/1 109/180/1 +f 111/181/4 95/182/4 112/183/4 +f 72/184/3 58/185/3 73/186/3 +f 127/187/6 124/188/6 108/189/6 +f 114/190/2 118/191/2 117/192/2 +f 115/193/4 118/194/4 116/195/4 +f 61/196/2 77/197/2 75/198/2 +f 80/199/3 63/200/3 79/201/3 +f 125/202/6 114/203/6 117/204/6 +f 105/205/5 109/206/5 107/207/5 +f 123/208/3 108/209/3 124/210/3 +f 120/211/1 127/212/1 126/213/1 +f 103/214/5 106/215/5 100/216/5 +f 128/217/2 130/218/2 116/219/2 +f 131/220/1 129/221/1 128/222/1 +f 132/223/4 120/224/4 119/225/4 +f 116/226/5 119/227/5 115/228/5 +f 131/229/3 120/230/3 132/231/3 +f 128/232/6 115/233/6 131/234/6 +f 2/1/1 3/235/1 4/2/1 +f 1/4/2 4/236/2 6/5/2 +f 116/237/1 114/238/1 115/9/1 +f 114/238/1 123/7/1 115/9/1 +f 9/10/3 10/239/3 8/11/3 +f 11/13/2 13/240/2 1/14/2 +f 12/16/4 2/241/4 1/17/4 +f 86/19/3 66/242/3 65/20/3 +f 16/22/1 17/243/1 18/23/1 +f 18/244/4 17/26/4 19/25/4 +f 17/26/4 23/245/4 24/27/4 +f 20/28/3 22/246/3 9/29/3 +f 27/31/4 16/247/4 15/32/4 +f 31/34/4 32/248/4 30/35/4 +f 17/37/5 30/249/5 32/38/5 +f 5/40/5 6/250/5 8/41/5 +f 37/43/4 38/251/4 36/44/4 +f 29/46/5 36/252/5 38/47/5 +f 42/49/1 40/253/1 39/50/1 +f 33/52/6 42/254/6 41/53/6 +f 9/255/6 25/256/6 21/57/6 +f 25/256/6 34/257/6 21/57/6 +f 34/257/6 26/55/6 21/57/6 +f 46/58/4 47/258/4 45/59/4 +f 28/259/1 26/260/1 27/63/1 +f 26/260/1 34/61/1 27/63/1 +f 35/64/5 45/261/5 47/65/5 +f 52/67/1 50/262/1 49/68/1 +f 40/70/6 52/263/6 51/71/6 +f 9/264/5 22/265/5 2/75/5 +f 22/265/5 14/73/5 2/75/5 +f 84/76/6 82/266/6 49/77/6 +f 85/79/4 65/267/4 64/80/4 +f 4/268/4 3/83/4 6/82/4 +f 3/83/4 7/269/4 8/84/4 +f 13/270/1 11/271/1 12/87/1 +f 11/271/1 20/85/1 12/87/1 +f 103/272/2 104/273/2 105/90/2 +f 104/273/2 115/274/2 119/88/2 +f 119/88/2 121/275/2 122/89/2 +f 104/273/2 119/88/2 105/90/2 +f 105/90/2 106/276/2 103/272/2 +f 122/277/4 121/278/4 109/93/4 +f 121/278/4 126/91/4 109/93/4 +f 67/94/4 77/279/4 62/95/4 +f 1/280/6 5/281/6 2/99/6 +f 5/281/6 10/97/6 2/99/6 +f 108/282/5 125/283/5 104/102/5 +f 125/283/5 117/100/5 104/102/5 +f 75/103/6 74/284/6 60/104/6 +f 57/285/5 55/286/5 56/287/5 +f 56/287/5 58/288/5 57/285/5 +f 58/288/5 59/289/5 57/285/5 +f 59/289/5 63/290/5 61/108/5 +f 63/290/5 64/106/5 61/108/5 +f 64/106/5 65/291/5 46/292/5 +f 65/291/5 66/293/5 46/292/5 +f 66/293/5 48/294/5 46/292/5 +f 44/295/5 43/296/5 54/297/5 +f 44/295/5 54/297/5 53/298/5 +f 64/106/5 46/292/5 44/295/5 +f 61/108/5 60/299/5 57/285/5 +f 44/295/5 53/298/5 62/107/5 +f 61/108/5 57/285/5 59/289/5 +f 64/106/5 44/295/5 62/107/5 +f 79/109/4 63/300/4 59/110/4 +f 107/301/2 109/302/2 100/303/2 +f 109/302/2 112/304/2 95/305/2 +f 95/305/2 98/306/2 87/307/2 +f 109/302/2 95/305/2 100/303/2 +f 92/308/2 99/309/2 100/303/2 +f 87/307/2 90/310/2 76/311/2 +f 100/303/2 95/305/2 92/308/2 +f 95/305/2 87/307/2 92/308/2 +f 82/312/2 91/313/2 92/308/2 +f 87/307/2 76/311/2 78/314/2 +f 43/315/2 44/316/2 45/317/2 +f 92/308/2 87/307/2 82/312/2 +f 87/307/2 78/314/2 82/312/2 +f 43/315/2 45/317/2 35/318/2 +f 39/319/2 51/320/2 49/321/2 +f 49/321/2 82/312/2 78/314/2 +f 43/315/2 35/318/2 49/321/2 +f 35/318/2 36/322/2 29/112/2 +f 49/321/2 78/314/2 43/315/2 +f 27/114/2 41/323/2 39/319/2 +f 39/319/2 49/321/2 29/112/2 +f 29/112/2 49/321/2 35/318/2 +f 29/112/2 30/324/2 17/113/2 +f 17/113/2 16/325/2 27/114/2 +f 27/114/2 39/319/2 29/112/2 +f 53/115/2 54/326/2 68/116/2 +f 7/118/5 3/327/5 19/119/5 +f 24/120/5 25/328/5 7/118/5 +f 25/328/5 9/329/5 7/118/5 +f 86/121/6 83/330/6 48/122/6 +f 73/124/4 58/331/4 56/125/4 +f 22/127/6 20/332/6 11/128/6 +f 70/130/6 69/333/6 55/131/6 +f 3/133/2 2/334/2 12/134/2 +f 12/134/2 26/335/2 28/336/2 +f 15/135/2 18/337/2 19/338/2 +f 12/134/2 28/336/2 15/135/2 +f 19/338/2 3/133/2 15/135/2 +f 69/136/2 71/339/2 56/137/2 +f 88/139/1 89/340/1 90/140/1 +f 89/142/4 81/341/4 76/143/4 +f 127/342/3 113/343/3 101/344/3 +f 101/344/3 102/345/3 93/346/3 +f 93/346/3 94/347/3 84/348/3 +f 50/349/3 52/350/3 40/351/3 +f 101/344/3 93/346/3 110/352/3 +f 93/346/3 84/348/3 96/353/3 +f 101/344/3 110/352/3 127/342/3 +f 110/352/3 126/354/3 127/342/3 +f 96/353/3 111/355/3 110/352/3 +f 88/356/3 97/357/3 96/353/3 +f 81/358/3 89/359/3 88/356/3 +f 83/360/3 81/358/3 88/356/3 +f 96/353/3 110/352/3 93/346/3 +f 83/360/3 88/356/3 84/348/3 +f 88/356/3 96/353/3 84/348/3 +f 47/361/3 46/362/3 48/363/3 +f 48/363/3 83/360/3 84/348/3 +f 84/348/3 50/349/3 48/363/3 +f 37/364/3 47/361/3 48/363/3 +f 40/351/3 42/365/3 33/147/3 +f 48/363/3 50/349/3 37/364/3 +f 50/349/3 40/351/3 37/364/3 +f 31/146/3 38/366/3 37/364/3 +f 33/147/3 34/367/3 25/368/3 +f 37/364/3 40/351/3 31/146/3 +f 40/351/3 33/147/3 31/146/3 +f 23/145/3 32/369/3 31/146/3 +f 33/147/3 25/368/3 23/145/3 +f 25/368/3 24/370/3 23/145/3 +f 81/371/1 83/372/1 86/373/1 +f 86/373/1 85/374/1 81/371/1 +f 85/374/1 80/148/1 81/371/1 +f 80/148/1 79/375/1 75/376/1 +f 79/375/1 72/377/1 75/376/1 +f 72/377/1 73/378/1 70/379/1 +f 73/378/1 71/380/1 70/379/1 +f 71/380/1 69/381/1 70/379/1 +f 70/379/1 74/382/1 75/376/1 +f 77/149/1 67/383/1 76/150/1 +f 67/383/1 68/384/1 76/150/1 +f 70/379/1 75/376/1 72/377/1 +f 80/148/1 75/376/1 77/149/1 +f 76/150/1 81/371/1 80/148/1 +f 68/384/1 78/385/1 76/150/1 +f 94/151/6 93/386/6 92/152/6 +f 91/154/5 82/387/5 84/155/5 +f 96/157/1 97/388/1 98/158/1 +f 97/160/4 88/389/4 87/161/4 +f 43/163/6 78/390/6 68/164/6 +f 102/166/6 101/391/6 100/167/6 +f 99/169/5 92/392/5 93/170/5 +f 107/172/4 100/393/4 106/173/4 +f 74/175/2 70/394/2 57/176/2 +f 110/178/1 111/395/1 112/179/1 +f 111/181/4 96/396/4 95/182/4 +f 72/184/3 59/397/3 58/185/3 +f 104/398/6 103/399/6 108/189/6 +f 103/399/6 113/400/6 108/189/6 +f 113/400/6 127/187/6 108/189/6 +f 114/190/2 116/401/2 118/191/2 +f 115/193/4 104/402/4 118/194/4 +f 61/196/2 62/403/2 77/197/2 +f 80/199/3 64/404/3 63/200/3 +f 125/202/6 123/405/6 114/203/6 +f 105/205/5 122/406/5 109/206/5 +f 123/208/3 125/407/3 108/209/3 +f 120/211/1 124/408/1 127/212/1 +f 126/213/1 121/409/1 120/211/1 +f 121/409/1 119/410/1 120/211/1 +f 101/411/5 113/412/5 100/216/5 +f 113/412/5 103/214/5 100/216/5 +f 128/217/2 129/413/2 130/218/2 +f 131/220/1 132/414/1 129/221/1 +f 130/415/4 129/416/4 119/225/4 +f 129/416/4 132/223/4 119/225/4 +f 116/226/5 130/417/5 119/227/5 +f 131/229/3 124/418/3 120/230/3 +f 116/419/6 115/233/6 128/232/6 +f 115/233/6 124/420/6 131/234/6 diff --git a/media/adv_weapons_landmine.obj b/media/adv_weapons_landmine.obj new file mode 100644 index 0000000..040186f --- /dev/null +++ b/media/adv_weapons_landmine.obj @@ -0,0 +1,136 @@ +# Blender v2.82 (sub 7) OBJ File: '' +# www.blender.org +mtllib adv_weapons_landmine.mtl +o mesh_landmine +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.375000 -0.500000 +v 0.375000 -0.375000 -0.375000 +v 0.375000 -0.375000 0.375000 +v 0.500000 -0.500000 0.500000 +v 0.500000 -0.375000 0.500000 +v 0.375000 -0.250000 -0.375000 +v 0.375000 -0.250000 0.375000 +v 0.125000 -0.250000 -0.125000 +v 0.125000 -0.250000 0.125000 +v 0.125000 -0.125000 -0.125000 +v 0.125000 -0.125000 0.125000 +v -0.125000 -0.375000 -0.500000 +v -0.125000 -0.375000 -0.375000 +v -0.125000 -0.375000 0.375000 +v -0.125000 -0.375000 0.500000 +v -0.125000 -0.250000 -0.375000 +v -0.125000 -0.250000 -0.125000 +v -0.125000 -0.250000 0.125000 +v -0.125000 -0.250000 0.375000 +v -0.125000 -0.125000 -0.125000 +v -0.125000 -0.125000 0.125000 +v -0.375000 -0.375000 -0.375000 +v -0.375000 -0.375000 0.375000 +v -0.375000 -0.250000 -0.375000 +v -0.375000 -0.250000 0.375000 +v -0.500000 -0.375000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.375000 0.500000 +vt 0.500000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.500000 +vt 0.500000 0.500000 +vt 0.937500 0.750000 +vt 0.937500 0.875000 +vt 0.875000 0.875000 +vt 0.875000 0.750000 +vt 0.687500 0.875000 +vt 0.687500 0.562500 +vt 0.687500 0.375000 +vt 0.750000 0.375000 +vt 0.750000 0.875000 +vt 0.750000 0.875000 +vt 0.750000 0.750000 +vt 0.875000 0.750000 +vt 0.875000 0.875000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.750000 0.250000 +vt 0.750000 0.125000 +vt 0.625000 0.125000 +vt 0.625000 0.250000 +vt 0.500000 0.250000 +vt 0.500000 0.000000 +vt 0.875000 0.375000 +vt 0.500000 0.375000 +vt 0.437500 0.062500 +vt 0.312500 0.062500 +vt 0.312500 0.000000 +vt 0.500000 0.000000 +vt 0.500000 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.437500 +vt 0.437500 0.437500 +vt 0.875000 0.375000 +vt 0.937500 0.375000 +vt 0.937500 0.750000 +vt 0.875000 0.750000 +vt 0.875000 0.375000 +vt 0.875000 0.625000 +vt 0.875000 0.750000 +vt 0.812500 0.750000 +vt 0.812500 0.625000 +vt 0.812500 0.375000 +vt 0.062500 0.062500 +vt 0.062500 0.437500 +vt 0.000000 0.500000 +vt 0.000000 0.000000 +vt 0.937500 0.250000 +vt 1.000000 0.250000 +vt 1.000000 0.375000 +vt 0.937500 0.375000 +vt 0.750000 0.375000 +vt 0.812500 0.375000 +vt 0.812500 0.750000 +vt 0.750000 0.750000 +vt 1.000000 0.125000 +vt 0.937500 0.125000 +vt 0.937500 0.000000 +vt 1.000000 0.000000 +vt 0.937500 0.125000 +vt 1.000000 0.125000 +vt 0.562500 0.687500 +vt 0.562500 0.375000 +vt 0.625000 0.375000 +vt 0.625000 0.875000 +vt 0.562500 0.875000 +vt 0.937500 0.000000 +vt 0.937500 0.250000 +vt 0.937500 0.375000 +vt 0.687500 0.375000 +vt 0.625000 0.875000 +vt 0.500000 0.875000 +vt 0.500000 0.375000 +vt 0.562500 0.375000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 -0.0000 +usemtl Default_OBJ +s 1 +f 28/1/1 1/2/1 5/3/1 29/4/1 +f 12/5/2 22/6/2 19/7/2 10/8/2 +f 6/9/2 16/10/2 30/11/2 29/12/2 5/13/2 +f 21/14/3 22/15/3 12/16/3 11/17/3 +f 7/18/3 17/19/3 18/20/3 9/21/3 10/22/3 19/23/3 20/24/3 8/25/3 +f 20/24/3 19/23/3 18/20/3 17/19/3 25/26/3 26/27/3 +f 23/28/3 14/29/3 13/30/3 27/31/3 30/32/3 16/33/3 15/34/3 24/35/3 +f 3/36/4 7/37/4 8/38/4 4/39/4 +f 8/40/2 20/41/2 26/42/2 24/43/2 15/44/2 4/45/2 +f 13/30/3 14/29/3 3/46/3 4/47/3 15/34/3 16/33/3 6/48/3 2/49/3 +f 18/50/5 21/51/5 11/52/5 9/53/5 +f 24/54/6 26/55/6 25/56/6 23/57/6 +f 12/58/4 10/59/4 9/60/4 11/61/4 +f 19/62/6 22/63/6 21/51/6 18/50/6 +f 13/64/5 2/65/5 1/66/5 28/67/5 27/68/5 +f 7/18/5 3/69/5 14/70/5 23/71/5 25/26/5 17/19/5 +f 1/66/4 2/72/4 6/9/4 5/73/4 +f 27/68/6 28/74/6 29/75/6 30/76/6 diff --git a/media/adv_weapons_landmine_buried.obj b/media/adv_weapons_landmine_buried.obj new file mode 100644 index 0000000..cf10e45 --- /dev/null +++ b/media/adv_weapons_landmine_buried.obj @@ -0,0 +1,134 @@ +# Blender v2.82 (sub 7) OBJ File: '' +# www.blender.org +o mesh_landmine +v 0.500000 -0.775869 -0.500000 +v 0.500000 -0.650869 -0.500000 +v 0.375000 -0.650869 -0.375000 +v 0.375000 -0.650869 0.375000 +v 0.500000 -0.775869 0.500000 +v 0.500000 -0.650869 0.500000 +v 0.375000 -0.525869 -0.375000 +v 0.375000 -0.525869 0.375000 +v 0.125000 -0.525869 -0.125000 +v 0.125000 -0.525869 0.125000 +v 0.125000 -0.400869 -0.125000 +v 0.125000 -0.400869 0.125000 +v -0.125000 -0.650869 -0.500000 +v -0.125000 -0.650869 -0.375000 +v -0.125000 -0.650869 0.375000 +v -0.125000 -0.650869 0.500000 +v -0.125000 -0.525869 -0.375000 +v -0.125000 -0.525869 -0.125000 +v -0.125000 -0.525869 0.125000 +v -0.125000 -0.525869 0.375000 +v -0.125000 -0.400869 -0.125000 +v -0.125000 -0.400869 0.125000 +v -0.375000 -0.650869 -0.375000 +v -0.375000 -0.650869 0.375000 +v -0.375000 -0.525869 -0.375000 +v -0.375000 -0.525869 0.375000 +v -0.500000 -0.650869 -0.500000 +v -0.500000 -0.775869 -0.500000 +v -0.500000 -0.775869 0.500000 +v -0.500000 -0.650869 0.500000 +vt 0.500000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.500000 +vt 0.500000 0.500000 +vt 0.937500 0.750000 +vt 0.937500 0.875000 +vt 0.875000 0.875000 +vt 0.875000 0.750000 +vt 0.687500 0.875000 +vt 0.687500 0.562500 +vt 0.687500 0.375000 +vt 0.750000 0.375000 +vt 0.750000 0.875000 +vt 0.750000 0.875000 +vt 0.750000 0.750000 +vt 0.875000 0.750000 +vt 0.875000 0.875000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.750000 0.250000 +vt 0.750000 0.125000 +vt 0.625000 0.125000 +vt 0.625000 0.250000 +vt 0.500000 0.250000 +vt 0.500000 0.000000 +vt 0.875000 0.375000 +vt 0.500000 0.375000 +vt 0.437500 0.062500 +vt 0.312500 0.062500 +vt 0.312500 0.000000 +vt 0.500000 0.000000 +vt 0.500000 0.500000 +vt 0.312500 0.500000 +vt 0.312500 0.437500 +vt 0.437500 0.437500 +vt 0.875000 0.375000 +vt 0.937500 0.375000 +vt 0.937500 0.750000 +vt 0.875000 0.750000 +vt 0.875000 0.375000 +vt 0.875000 0.625000 +vt 0.875000 0.750000 +vt 0.812500 0.750000 +vt 0.812500 0.625000 +vt 0.812500 0.375000 +vt 0.062500 0.062500 +vt 0.062500 0.437500 +vt 0.000000 0.500000 +vt 0.000000 0.000000 +vt 0.937500 0.250000 +vt 1.000000 0.250000 +vt 1.000000 0.375000 +vt 0.937500 0.375000 +vt 0.750000 0.375000 +vt 0.812500 0.375000 +vt 0.812500 0.750000 +vt 0.750000 0.750000 +vt 1.000000 0.125000 +vt 0.937500 0.125000 +vt 0.937500 0.000000 +vt 1.000000 0.000000 +vt 0.937500 0.125000 +vt 1.000000 0.125000 +vt 0.562500 0.687500 +vt 0.562500 0.375000 +vt 0.625000 0.375000 +vt 0.625000 0.875000 +vt 0.562500 0.875000 +vt 0.937500 0.000000 +vt 0.937500 0.250000 +vt 0.937500 0.375000 +vt 0.687500 0.375000 +vt 0.625000 0.875000 +vt 0.500000 0.875000 +vt 0.500000 0.375000 +vt 0.562500 0.375000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 -0.0000 +s 1 +f 28/1/1 1/2/1 5/3/1 29/4/1 +f 12/5/2 22/6/2 19/7/2 10/8/2 +f 6/9/2 16/10/2 30/11/2 29/12/2 5/13/2 +f 21/14/3 22/15/3 12/16/3 11/17/3 +f 7/18/3 17/19/3 18/20/3 9/21/3 10/22/3 19/23/3 20/24/3 8/25/3 +f 20/24/3 19/23/3 18/20/3 17/19/3 25/26/3 26/27/3 +f 23/28/3 14/29/3 13/30/3 27/31/3 30/32/3 16/33/3 15/34/3 24/35/3 +f 3/36/4 7/37/4 8/38/4 4/39/4 +f 8/40/2 20/41/2 26/42/2 24/43/2 15/44/2 4/45/2 +f 13/30/3 14/29/3 3/46/3 4/47/3 15/34/3 16/33/3 6/48/3 2/49/3 +f 18/50/5 21/51/5 11/52/5 9/53/5 +f 24/54/6 26/55/6 25/56/6 23/57/6 +f 12/58/4 10/59/4 9/60/4 11/61/4 +f 19/62/6 22/63/6 21/51/6 18/50/6 +f 13/64/5 2/65/5 1/66/5 28/67/5 27/68/5 +f 7/18/5 3/69/5 14/70/5 23/71/5 25/26/5 17/19/5 +f 1/66/4 2/72/4 6/9/4 5/73/4 +f 27/68/6 28/74/6 29/75/6 30/76/6 diff --git a/media/adv_weapons_turret_base.mtl b/media/adv_weapons_turret_base.mtl new file mode 100644 index 0000000..8e756d5 --- /dev/null +++ b/media/adv_weapons_turret_base.mtl @@ -0,0 +1,12 @@ +# Blender MTL File: 'None' +# Material Count: 1 + +newmtl Default_OBJ +Ns 225.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 diff --git a/media/adv_weapons_turret_base.obj b/media/adv_weapons_turret_base.obj new file mode 100644 index 0000000..e3ae78b --- /dev/null +++ b/media/adv_weapons_turret_base.obj @@ -0,0 +1,572 @@ +# Blender v2.82 (sub 7) OBJ File: '' +# www.blender.org +o mesh_turret_new +v 0.300000 -0.490814 -0.300000 +v 0.300000 -0.490814 -0.450000 +v 0.450000 -0.490814 -0.300000 +v 0.450000 -0.490814 -0.450000 +v 0.300000 -0.490814 0.450000 +v 0.300000 -0.490814 0.300000 +v 0.450000 -0.490814 0.450000 +v 0.450000 -0.490814 0.300000 +v 0.300000 -0.190814 -0.300000 +v 0.300000 -0.190814 -0.450000 +v 0.450000 -0.190814 -0.300000 +v 0.300000 -0.190814 0.450000 +v 0.300000 -0.190814 0.300000 +v 0.450000 -0.190814 0.300000 +v 0.450000 -0.190814 -0.150000 +v 0.300000 -0.190814 -0.150000 +v 0.450000 -0.040814 -0.150000 +v 0.300000 -0.040814 -0.150000 +v 0.300000 -0.190814 0.150000 +v 0.450000 -0.190814 0.150000 +v 0.300000 -0.040814 0.150000 +v 0.450000 -0.040814 0.150000 +v 0.450000 0.109186 -0.450000 +v 0.300000 0.109186 -0.300000 +v 0.300000 0.109186 0.300000 +v 0.450000 0.109186 0.450000 +v 0.150000 -0.190814 -0.300000 +v 0.150000 -0.040814 -0.300000 +v 0.150000 -0.040814 -0.450000 +v 0.150000 -0.190814 -0.450000 +v 0.150000 -0.190814 -0.150000 +v 0.150000 -0.190814 -0.000000 +v 0.300000 -0.190814 -0.000000 +v 0.150000 -0.190814 0.150000 +v 0.150000 -0.190814 0.300000 +v 0.150000 -0.190814 0.450000 +v 0.150000 -0.040814 0.450000 +v 0.150000 -0.040814 0.300000 +v 0.150000 0.109186 -0.150000 +v 0.150000 0.109186 0.150000 +v 0.300000 0.259186 -0.300000 +v 0.150000 0.259186 -0.150000 +v 0.150000 0.259186 0.150000 +v 0.300000 0.259186 0.300000 +v 0.150000 0.409186 -0.150000 +v 0.150000 0.409186 0.150000 +v -0.150000 -0.190814 -0.150000 +v -0.150000 -0.190814 -0.300000 +v -0.150000 -0.040814 -0.300000 +v -0.150000 -0.190814 0.300000 +v -0.150000 -0.190814 0.150000 +v -0.150000 -0.040814 0.300000 +v -0.150000 -0.040814 -0.450000 +v -0.150000 0.109186 -0.450000 +v -0.150000 0.109186 -0.300000 +v -0.150000 0.109186 -0.150000 +v -0.150000 0.109186 0.150000 +v -0.150000 -0.040814 0.450000 +v -0.150000 0.109186 0.300000 +v -0.150000 0.109186 0.450000 +v -0.150000 0.259186 -0.300000 +v -0.150000 0.259186 -0.150000 +v -0.150000 0.259186 0.150000 +v -0.150000 0.259186 0.300000 +v -0.150000 0.409186 -0.150000 +v -0.150000 0.409186 0.150000 +v -0.300000 -0.190814 -0.300000 +v -0.300000 -0.190814 -0.450000 +v -0.150000 -0.190814 -0.450000 +v -0.300000 -0.190814 -0.150000 +v -0.300000 -0.040814 -0.150000 +v -0.300000 -0.190814 0.150000 +v -0.300000 -0.040814 0.150000 +v -0.300000 -0.190814 0.300000 +v -0.150000 -0.190814 0.450000 +v -0.300000 -0.190814 0.450000 +v -0.300000 0.109186 -0.300000 +v -0.300000 0.109186 0.300000 +v -0.300000 0.259186 -0.300000 +v -0.300000 0.259186 0.300000 +v -0.450000 -0.490814 -0.300000 +v -0.450000 -0.490814 -0.450000 +v -0.300000 -0.490814 -0.300000 +v -0.300000 -0.490814 -0.450000 +v -0.450000 -0.490814 0.450000 +v -0.450000 -0.490814 0.300000 +v -0.300000 -0.490814 0.450000 +v -0.300000 -0.490814 0.300000 +v -0.450000 -0.190814 -0.300000 +v -0.450000 -0.190814 0.300000 +v -0.450000 -0.190814 -0.150000 +v -0.450000 -0.040814 -0.150000 +v -0.450000 -0.040814 0.150000 +v -0.450000 -0.190814 0.150000 +v -0.450000 0.109186 -0.450000 +v -0.450000 0.109186 0.450000 +vt 1.000000 0.470588 +vt 0.941176 0.529412 +vt 0.941176 0.470588 +vt 0.941176 0.705882 +vt 0.882353 0.823529 +vt 0.882353 0.705882 +vt 0.529412 0.941176 +vt 0.470588 1.000000 +vt 0.470588 0.941176 +vt 0.882353 0.705882 +vt 0.823529 0.823529 +vt 0.823529 0.705882 +vt 0.705882 0.823529 +vt 0.647059 0.941176 +vt 0.647059 0.823529 +vt 0.882353 0.823529 +vt 0.941176 0.941176 +vt 0.882353 0.941177 +vt 0.647059 0.941176 +vt 0.588235 0.823529 +vt 0.647059 0.823529 +vt 0.058824 0.764706 +vt 0.000000 0.705882 +vt 0.235294 0.705882 +vt 0.117647 1.000000 +vt 0.058824 0.941177 +vt 0.117647 0.941176 +vt 0.705882 0.705882 +vt 0.529412 0.941176 +vt 0.588235 1.000000 +vt 0.529412 1.000000 +vt 0.529412 0.823529 +vt 0.470588 0.941176 +vt 0.470588 0.823529 +vt 0.588235 0.941176 +vt 0.529412 0.823529 +vt 0.588235 0.823529 +vt 0.882353 0.352941 +vt 0.941177 0.470588 +vt 0.882353 0.470588 +vt 1.000000 0.117647 +vt 0.941177 0.235294 +vt 0.941176 0.117647 +vt 0.117647 0.941176 +vt 0.176471 1.000000 +vt 0.117647 1.000000 +vt 0.470588 0.705882 +vt 0.470588 0.823529 +vt 0.411765 0.823529 +vt 0.941176 0.000000 +vt 1.000000 0.117647 +vt 0.941177 0.117647 +vt 0.117647 0.588235 +vt 0.176471 0.647059 +vt 0.117647 0.647059 +vt 0.411765 0.882353 +vt 0.411765 0.823529 +vt 0.470588 0.823529 +vt 0.000000 0.941176 +vt 0.058824 1.000000 +vt 0.000000 1.000000 +vt 0.647059 0.235294 +vt 0.705882 0.294118 +vt 0.588235 0.352941 +vt 0.882353 0.470588 +vt 0.823529 0.705882 +vt 0.823529 0.470588 +vt 0.882353 0.470588 +vt 0.941176 0.588235 +vt 0.882353 0.588235 +vt 0.352941 0.352941 +vt 0.352941 0.000000 +vt 0.411765 0.235294 +vt 0.352941 0.823529 +vt 0.411765 0.941177 +vt 0.352941 0.941177 +vt 0.235294 0.470588 +vt 0.235294 0.411765 +vt 0.294118 0.411765 +vt 0.882353 0.823529 +vt 0.823529 0.941176 +vt 0.823529 0.823529 +vt 0.352941 0.705882 +vt 0.235294 0.823529 +vt 0.235294 0.705882 +vt 0.941176 0.235294 +vt 1.000000 0.352941 +vt 0.941176 0.352941 +vt 0.235294 0.941176 +vt 0.294118 1.000000 +vt 0.235294 1.000000 +vt 0.823529 0.235294 +vt 0.882353 0.000000 +vt 0.882353 0.235294 +vt 0.058824 0.058824 +vt 0.000000 0.000000 +vt 0.352941 0.000000 +vt 1.000000 0.470588 +vt 0.941176 0.352941 +vt 1.000000 0.352941 +vt 0.176471 0.941176 +vt 0.235294 1.000000 +vt 0.176471 1.000000 +vt 0.823529 0.411765 +vt 0.823529 0.235294 +vt 0.882353 0.235294 +vt 0.764706 0.588235 +vt 0.764706 0.470588 +vt 0.823529 0.588235 +vt 0.764706 0.941176 +vt 0.823529 0.823529 +vt 0.823529 0.941176 +vt 0.470588 0.941176 +vt 0.411765 1.000000 +vt 0.411765 0.941176 +vt 0.882353 0.235294 +vt 0.941177 0.352941 +vt 0.882353 0.352941 +vt 0.941176 0.705882 +vt 0.882353 0.588235 +vt 0.941176 0.588235 +vt 0.411765 0.941176 +vt 0.352941 1.000000 +vt 0.352941 0.941176 +vt 0.000000 0.941177 +vt 0.058824 0.882353 +vt 0.176471 0.882353 +vt 0.882353 0.058824 +vt 0.882353 0.000000 +vt 0.941176 0.000000 +vt 0.764706 0.941176 +vt 0.705882 0.823529 +vt 0.764706 0.823529 +vt 0.352941 0.941176 +vt 0.235294 0.823529 +vt 0.352941 0.823529 +vt 0.588235 0.941176 +vt 0.647059 1.000000 +vt 0.588235 1.000000 +vt 0.588235 0.705882 +vt 0.705882 0.823529 +vt 0.588235 0.823529 +vt 0.352941 1.000000 +vt 0.294118 0.941177 +vt 0.352941 0.941176 +vt 0.588235 0.705882 +vt 0.470588 0.823529 +vt 0.470588 0.705882 +vt 0.529412 0.470588 +vt 0.588235 0.352941 +vt 0.588235 0.705882 +vt 0.352941 0.352941 +vt 0.000000 0.352941 +vt 0.294118 0.294118 +vt 1.000000 0.529412 +vt 0.941176 0.823529 +vt 0.529412 1.000000 +vt 0.882353 0.823529 +vt 0.705882 0.941176 +vt 0.941176 0.823529 +vt 0.588235 0.941177 +vt 0.000000 0.882353 +vt 0.235294 0.882353 +vt 0.176471 0.764706 +vt 0.058824 1.000000 +vt 0.705882 0.823529 +vt 0.588235 0.941176 +vt 0.529412 0.941176 +vt 0.529412 0.941176 +vt 0.941176 0.352941 +vt 1.000000 0.235294 +vt 0.176471 0.941176 +vt 0.352941 0.823529 +vt 0.352941 0.705882 +vt 1.000000 0.000000 +vt 0.176471 0.588235 +vt 0.470588 0.941177 +vt 0.411765 0.941176 +vt 0.058824 0.941176 +vt 0.588235 0.000000 +vt 0.823529 0.000000 +vt 0.705882 0.058824 +vt 0.823529 0.058824 +vt 0.705882 0.117647 +vt 0.647059 0.117647 +vt 0.588235 0.235294 +vt 0.705882 0.235294 +vt 0.823529 0.294118 +vt 0.823529 0.352941 +vt 0.882353 0.705882 +vt 0.941176 0.470588 +vt 0.470588 0.294118 +vt 0.588235 0.294118 +vt 0.588235 0.352941 +vt 0.588235 0.000000 +vt 0.470588 0.058824 +vt 0.588235 0.058824 +vt 0.470588 0.117647 +vt 0.411765 0.117647 +vt 0.470588 0.235294 +vt 0.411765 0.823529 +vt 0.117647 0.470588 +vt 0.058824 0.588235 +vt 0.058824 0.647059 +vt 0.117647 0.705882 +vt 0.058824 0.705882 +vt 0.000000 0.647059 +vt 0.000000 0.588235 +vt 0.058824 0.470588 +vt 0.000000 0.470588 +vt 0.000000 0.411765 +vt 0.058824 0.411765 +vt 0.117647 0.411765 +vt 0.058824 0.352941 +vt 0.117647 0.352941 +vt 0.235294 0.588235 +vt 0.235294 0.647059 +vt 0.294118 0.705882 +vt 0.235294 0.705882 +vt 0.352941 0.588235 +vt 0.352941 0.647059 +vt 0.294118 0.647059 +vt 0.294118 0.588235 +vt 0.352941 0.411765 +vt 0.352941 0.470588 +vt 0.294118 0.470588 +vt 0.235294 0.352941 +vt 0.294118 0.352941 +vt 0.882353 0.941176 +vt 0.352941 0.823529 +vt 1.000000 0.235294 +vt 0.294118 0.941176 +vt 0.823529 0.000000 +vt 0.352941 0.235294 +vt 0.294118 0.058824 +vt 0.294118 0.235294 +vt 0.058824 0.235294 +vt 0.000000 0.235294 +vt 0.941176 0.470588 +vt 0.235294 0.941176 +vt 0.882353 0.411765 +vt 0.882353 0.470588 +vt 0.823529 0.470588 +vt 0.705882 0.470588 +vt 0.705882 0.411765 +vt 0.588235 0.411765 +vt 0.588235 0.352941 +vt 0.823529 0.352941 +vt 0.823529 0.705882 +vt 0.588235 0.705882 +vt 0.705882 0.647059 +vt 0.588235 0.647059 +vt 0.705882 0.588235 +vt 0.764706 0.823529 +vt 0.470588 1.000000 +vt 0.941177 0.235294 +vt 0.882353 0.705882 +vt 0.411765 1.000000 +vt 0.235294 0.941176 +vt 0.941176 0.058824 +vt 0.941176 0.235294 +vt 0.882353 0.235294 +vt 0.705882 0.941176 +vt 0.235294 0.941176 +vt 0.647059 0.941176 +vt 0.705882 0.705882 +vt 0.294118 1.000000 +vt 0.588235 0.823529 +vt 0.352941 0.705882 +vt 0.352941 0.647059 +vt 0.470588 0.647059 +vt 0.470588 0.588235 +vt 0.529412 0.588235 +vt 0.470588 0.470588 +vt 0.470588 0.411765 +vt 0.352941 0.411765 +vt 0.352941 0.352941 +vt 0.058824 0.294118 +vn 0.0000 -1.0000 -0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +s 1 +f 1/1/1 4/2/1 3/3/1 +f 21/4/1 17/5/1 22/6/1 +f 5/7/1 8/8/1 7/9/1 +f 43/10/2 45/11/2 46/12/2 +f 66/13/3 62/14/3 63/15/3 +f 9/16/3 2/17/3 1/18/3 +f 49/19/1 29/20/1 28/21/1 +f 43/22/4 44/23/4 41/24/4 +f 17/25/5 16/26/5 15/27/5 +f 45/11/4 66/28/4 46/12/4 +f 21/29/6 20/30/6 19/31/6 +f 73/32/3 70/33/3 72/34/3 +f 58/35/1 38/36/1 37/37/1 +f 90/38/6 88/39/6 86/40/6 +f 65/41/6 42/42/6 62/43/6 +f 28/44/3 30/45/3 27/46/3 +f 39/47/3 31/48/3 32/49/3 +f 11/50/5 1/51/5 3/52/5 +f 34/53/1 33/54/1 19/55/1 +f 33/56/2 16/57/2 18/58/2 +f 37/59/3 35/60/3 36/61/3 +f 53/62/6 68/63/6 95/64/6 +f 41/65/2 25/66/2 24/67/2 +f 12/68/3 6/69/3 5/70/3 +f 23/71/2 26/72/2 17/73/2 +f 87/74/2 74/75/2 76/76/2 +f 47/77/1 70/78/1 67/79/1 +f 93/80/1 71/81/1 73/82/1 +f 57/83/1 39/84/1 40/85/1 +f 66/86/5 43/87/5 46/88/5 +f 48/89/2 53/90/2 49/91/2 +f 77/92/3 80/93/3 79/94/3 +f 25/95/4 26/96/4 23/97/4 +f 13/98/6 8/99/6 6/100/6 +f 75/101/2 52/102/2 58/103/2 +f 59/104/5 25/105/5 44/106/5 +f 58/107/5 37/108/5 60/109/5 +f 49/110/6 27/111/6 48/112/6 +f 81/113/1 84/114/1 83/115/1 +f 83/116/2 68/117/2 67/118/2 +f 67/119/5 81/120/5 83/121/5 +f 85/122/1 88/123/1 87/124/1 +f 80/125/4 63/126/4 62/127/4 +f 55/128/6 77/129/6 79/130/6 +f 52/131/5 35/132/5 38/133/5 +f 57/134/6 34/135/6 51/136/6 +f 71/137/5 91/138/5 70/139/5 +f 31/140/5 56/141/5 47/142/5 +f 93/143/6 72/144/6 94/145/6 +f 47/146/2 57/147/2 51/148/2 +f 93/149/3 96/150/3 95/151/3 +f 95/152/4 96/153/4 77/154/4 +f 1/1/1 2/155/1 4/2/1 +f 21/4/1 18/156/1 17/5/1 +f 5/7/1 6/157/1 8/8/1 +f 43/10/2 42/158/2 45/11/2 +f 66/13/3 65/159/3 62/14/3 +f 9/16/3 10/160/3 2/17/3 +f 49/19/1 53/161/1 29/20/1 +f 43/22/4 63/126/4 64/162/4 +f 41/24/4 61/163/4 42/164/4 +f 61/163/4 62/127/4 42/164/4 +f 43/22/4 64/162/4 44/23/4 +f 41/24/4 42/164/4 43/22/4 +f 17/25/5 18/165/5 16/26/5 +f 45/11/4 65/166/4 66/28/4 +f 21/29/6 22/167/6 20/30/6 +f 73/32/3 71/168/3 70/33/3 +f 58/35/1 52/169/1 38/36/1 +f 90/38/6 74/170/6 88/39/6 +f 65/41/6 45/171/6 42/42/6 +f 28/44/3 29/172/3 30/45/3 +f 32/49/3 34/173/3 40/174/3 +f 40/174/3 39/47/3 32/49/3 +f 11/50/5 9/175/5 1/51/5 +f 34/53/1 32/176/1 33/54/1 +f 18/58/2 21/177/2 33/56/2 +f 21/177/2 19/178/2 33/56/2 +f 37/59/3 38/179/3 35/60/3 +f 23/180/6 4/181/6 10/182/6 +f 4/181/6 2/183/6 10/182/6 +f 10/182/6 30/184/6 29/185/6 +f 95/64/6 54/186/6 53/62/6 +f 54/186/6 23/180/6 29/185/6 +f 53/62/6 54/186/6 29/185/6 +f 23/180/6 10/182/6 29/185/6 +f 53/62/6 69/187/6 68/63/6 +f 84/188/6 82/189/6 68/63/6 +f 82/189/6 95/64/6 68/63/6 +f 41/65/2 44/190/2 25/66/2 +f 12/68/3 13/191/3 6/69/3 +f 11/192/2 3/193/2 4/194/2 +f 26/72/2 7/195/2 14/196/2 +f 7/195/2 8/197/2 14/196/2 +f 14/196/2 20/198/2 22/199/2 +f 11/192/2 4/194/2 23/71/2 +f 17/73/2 15/200/2 11/192/2 +f 26/72/2 14/196/2 22/199/2 +f 17/73/2 11/192/2 23/71/2 +f 26/72/2 22/199/2 17/73/2 +f 87/74/2 88/201/2 74/75/2 +f 51/202/1 34/53/1 35/203/1 +f 34/53/1 19/55/1 13/204/1 +f 19/55/1 20/205/1 14/206/1 +f 13/204/1 12/207/1 36/208/1 +f 19/55/1 14/206/1 13/204/1 +f 34/53/1 13/204/1 35/203/1 +f 13/204/1 36/208/1 35/203/1 +f 50/209/1 75/210/1 76/211/1 +f 50/209/1 76/211/1 74/212/1 +f 51/202/1 35/203/1 50/209/1 +f 47/77/1 51/202/1 72/213/1 +f 51/202/1 50/209/1 74/212/1 +f 74/212/1 90/214/1 94/215/1 +f 51/202/1 74/212/1 72/213/1 +f 33/54/1 32/176/1 31/216/1 +f 16/217/1 33/54/1 31/216/1 +f 11/218/1 15/219/1 16/217/1 +f 30/220/1 10/221/1 9/222/1 +f 9/222/1 11/218/1 16/217/1 +f 16/217/1 31/216/1 27/223/1 +f 31/216/1 47/77/1 27/223/1 +f 30/220/1 9/222/1 27/223/1 +f 9/222/1 16/217/1 27/223/1 +f 68/224/1 69/225/1 48/226/1 +f 48/226/1 27/223/1 47/77/1 +f 74/212/1 94/215/1 72/213/1 +f 70/78/1 91/227/1 89/228/1 +f 70/78/1 89/228/1 67/79/1 +f 47/77/1 72/213/1 70/78/1 +f 68/224/1 48/226/1 67/79/1 +f 48/226/1 47/77/1 67/79/1 +f 93/80/1 92/229/1 71/81/1 +f 57/83/1 56/230/1 39/84/1 +f 66/86/5 63/231/5 43/87/5 +f 48/89/2 69/232/2 53/90/2 +f 77/92/3 78/233/3 80/93/3 +f 23/97/4 54/234/4 24/235/4 +f 54/234/4 55/236/4 24/235/4 +f 59/237/4 60/238/4 25/95/4 +f 60/238/4 26/96/4 25/95/4 +f 23/97/4 24/235/4 25/95/4 +f 13/98/6 14/239/6 8/99/6 +f 75/101/2 50/240/2 52/102/2 +f 44/106/5 64/241/5 59/104/5 +f 64/241/5 80/242/5 59/104/5 +f 80/242/5 78/243/5 59/104/5 +f 37/108/5 36/244/5 12/245/5 +f 12/245/5 5/246/5 7/247/5 +f 26/248/5 60/109/5 37/108/5 +f 60/109/5 96/249/5 58/107/5 +f 96/249/5 85/250/5 76/251/5 +f 85/250/5 87/252/5 76/251/5 +f 76/251/5 75/253/5 58/107/5 +f 12/245/5 7/247/5 26/248/5 +f 37/108/5 12/245/5 26/248/5 +f 96/249/5 76/251/5 58/107/5 +f 49/110/6 28/254/6 27/111/6 +f 81/113/1 82/255/1 84/114/1 +f 83/116/2 84/256/2 68/117/2 +f 67/119/5 89/257/5 81/120/5 +f 85/122/1 86/258/1 88/123/1 +f 61/163/4 79/259/4 62/127/4 +f 79/259/4 80/125/4 62/127/4 +f 80/125/4 64/162/4 63/126/4 +f 79/130/6 61/260/6 55/128/6 +f 61/260/6 41/261/6 55/128/6 +f 41/261/6 24/262/6 55/128/6 +f 52/131/5 50/263/5 35/132/5 +f 57/134/6 40/264/6 34/135/6 +f 71/137/5 92/265/5 91/138/5 +f 31/140/5 39/266/5 56/141/5 +f 93/143/6 73/267/6 72/144/6 +f 47/146/2 56/268/2 57/147/2 +f 82/269/3 81/270/3 89/271/3 +f 89/271/3 91/272/3 92/273/3 +f 93/149/3 94/274/3 90/275/3 +f 90/275/3 86/276/3 85/277/3 +f 95/151/3 82/269/3 89/271/3 +f 95/151/3 89/271/3 92/273/3 +f 90/275/3 85/277/3 96/150/3 +f 95/151/3 92/273/3 93/149/3 +f 93/149/3 90/275/3 96/150/3 +f 96/153/4 60/238/4 78/278/4 +f 60/238/4 59/237/4 78/278/4 +f 55/236/4 54/234/4 77/154/4 +f 54/234/4 95/152/4 77/154/4 +f 96/153/4 78/278/4 77/154/4 diff --git a/mine.lua b/mine.lua new file mode 100644 index 0000000..b5fb887 --- /dev/null +++ b/mine.lua @@ -0,0 +1,108 @@ +minetest.register_craft({ + output = 'adv_weapons:landmine_placed 3', + recipe = { + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', 'tnt:tnt', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'} + } +}) + + +local size = 0.99 -- in order to get rid of z fighting +local box = { + type = "fixed", + fixed = { + {-size/2, -0.5, -size/2, size/2, -0.5 + size * 3/8, size/2}, + }, +} + +function clear_meta(pos) + minetest.get_meta(pos):set_string("owner", "") +end + +function on_walk(player) + if is_opponent(player:get_player_name(), minetest.get_meta(player:get_pos()):get_string("owner")) then + minetest.remove_node(player:get_pos()) + tnt.boom(player:get_pos(), {radius = 3}) + clear_meta(player:get_pos()) + end +end + +local def = { + description = "Landmine", + drawtype = "mesh", + visual_scale = size, + mesh = "adv_weapons_landmine.obj", + tiles = {"adv_weapons_landmine.png"}, + selection_box = box, + collision_box = box, + sunlight_propagates = true, + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return + end + if pointed_thing.above.y <= pointed_thing.under.y then + return + end + local pointed_node = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name] + if pointed_node and pointed_node.collision_box and pointed_node.collision_box.type == "fixed" then + local is_high_enough = false + for _, box in pairs(pointed_node.collision_box.fixed) do + if box[5] == 0.5 then + is_high_enough = true + break + end + end + if not is_high_enough then + return + end + end + minetest.item_place(itemstack, placer, pointed_thing) + local meta = minetest.get_meta(pointed_thing.above) + meta:set_string("owner", placer:get_player_name()) + itemstack:take_item() + return itemstack + end, + on_blast = function(pos) + clear_meta(pos) + minetest.remove_node(pos) + tnt.boom(pos, {radius = 3}) + end, + on_punch = function(...) + clear_meta(...) + return unpack({minetest.node_dig(...)}) + end +} +local landmines = modlib.table.set({"adv_weapons:landmine_placed", "adv_weapons:landmine_buried"}) +-- landmines can be (un)buried by digging below them +minetest.register_on_dignode(function(pos, oldnode, _) + pos.y = pos.y + 1 + local nodename = minetest.get_node(pos).name + if nodename == "adv_weapons:landmine_placed" then + minetest.swap_node(pos, {name = "adv_weapons:landmine_buried"}) + pos.y = pos.y - 1 + minetest.set_node(pos, oldnode) + elseif nodename == "adv_weapons:landmine_buried" then + minetest.swap_node(pos, {name = "adv_weapons:landmine_placed"}) + minetest.spawn_falling_node(pos) + end +end) +minetest.register_node("adv_weapons:landmine_placed", def) +local b = box.fixed[1] +b[2] = b[2] - 0.4 +b[5] = b[5] - 0.4 +def = modlib.table.copy(def) +-- moving the box down +def.mesh = "adv_weapons_landmine_buried.obj" +def.groups = {not_in_creative_inventory = 1, falling_node = 1} +def.on_punch = def.on_blast +minetest.register_node("adv_weapons:landmine_buried", def) + +minetest.register_globalstep(function() + for _, player in pairs(minetest.get_connected_players()) do + local standing_on = minetest.get_node(player:get_pos()) + if landmines[standing_on.name] then + on_walk(player) + end + end +end) \ No newline at end of file diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..cb2f332 --- /dev/null +++ b/mod.conf @@ -0,0 +1,4 @@ +name = adv_weapons +description = Adds a variety of advanced weapons. +depends = modlib, tnt +optional_depends = player_api \ No newline at end of file diff --git a/special.lua b/special.lua new file mode 100644 index 0000000..bc2c180 --- /dev/null +++ b/special.lua @@ -0,0 +1,369 @@ +minetest.register_craft({ + output = 'adv_weapons:grappling_hook', + recipe = { + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'', 'default:mese_crystal', 'default:steel_ingot'}, + {'default:diamond', '', 'default:steel_ingot'} + } +}) + +function set_rotation(obj, size) + obj:set_rotation({x = math.atan2(size.y, math.sqrt(size.z*size.z+size.x*size.x)), y = -math.atan2(size.x, size.z), z = 0}) +end + +--[[minetest.register_tool("adv_weapons:whip", { + description = "Whip", + range = 7, + inventory_image = "adv_weapons_whip.png", + tool_capabilities = {bloody = 1, stunny = 1}, + on_use = function(itemstack, user, pointed_thing) + if pointed_thing and pointed_thing.type == "object" then + local victim = pointed_thing.ref + if user then + local time_since_last = (minetest.get_us_time() - last_use[user:get_player_name()]) / 1000000 + victim:punch(user, time_since_last, {bloody = 1, stunny = 1}) + itemstack:add_wear(1000) + end + end + itemstack:add_wear(100) + return itemstack + end, + on_secondary_use = function(itemstack, user, pointed_thing) + if pointed_thing and pointed_thing.type == "object" then + local victim = pointed_thing.ref + if victim:is_player() then + local wield_name = victim:get_wielded_item():get_name() + local wield_def = minetest.registered_items[wield_name] + if wield_name and wield_def and wield_def.on_drop then + victim:set_wielded_item(wield_def.on_drop(victim:get_wielded_item(), victim, {x=0, y=victim:get_properties().eye_height, z=0})) + end + end + itemstack:add_wear(2000) + end + itemstack:add_wear(100) + return itemstack + end +})]] + +local re = "aw_bs.png" +local rs = "blank.png" +minetest.register_entity("adv_weapons:beam", { + initial_properties = { + hp = 1, + visual = "cube", + visual_size = {x = 0, y = 0, z = 0}, + textures = {rs,rs,rs,rs,re,re}, + physical = false, + collide_with_objects = false, + collisionbox = {0,0,0,0,0,0}, + pointable = false, + infotext = "Rope", + glow = 14 + }, + on_activate = function(self, staticdata) + self.object:set_armor_groups({immortal = 1}) + if staticdata == "deleteme" then + self.object:remove() + return + end + if staticdata ~= "" then + local size = minetest.parse_json(staticdata) + adjust_rope(self.object, size) + end + end, + get_staticdata = function(self) + return "deleteme" + --return (self._size and minetest.write_json(self._size)) or "" + end, +}) + +function check_pos(pos) + local node = minetest.registered_nodes[minetest.get_node(pos).name] + return node and node.walkable ~= false +end + +function check_hooked(self) + local obj = self.object + local checked = {} + for _, offset in pairs({vector.multiply(vector.normalize(self._.last_velocity), 0.4), {x = 0, y = -0.2, z = 0}}) do + local hook_pos = vector.add(obj:get_pos(), offset) + local check = true + for _, pos in pairs(checked) do + if vector.equals(pos, hook_pos) then + check = false + break + end + end + if check then + if check_pos(hook_pos) then + return true + end + table.insert(checked, vector.floor(hook_pos)) + end + end +end + +local function remove_ascent_aid(self) + if self._owner then + local clicker = minetest.get_player_by_name(self._owner) + clicker:set_properties({visual_size = vector.new(1,1,1)}) + if player_api then + player_api.player_attached[clicker:get_player_name()] = nil + minetest.after(0.1, function() + player_api.set_animation(clicker, "stand", 30) + end) + end + end +end + +local gt = "adv_weapons_grappling_hook_texture.png" +minetest.register_entity("adv_weapons:grappling_hook", { + initial_properties = { + hp = 1, + visual = "mesh", + mesh = "adv_weapons_grappling_hook.obj", + visual_size = {x = 10, y = 10, z = 10}, + textures = {gt,gt,gt,gt,gt,gt}, + physical = true, + collide_with_objects = true, + collisionbox = {-0.2,-0.2,-0.2,0.2,0.2,0.2}, + infotext = "Grappling Hook" + }, + on_step = function(self, dtime) + local obj = self.object + if self._.last_velocity then + if self._.hooked then + if self._last_check < 0.5 then + self._last_check = self._last_check + dtime + elseif not check_hooked(self) then + if self._ascent_aid then + remove_ascent_aid(self._ascent_aid:get_luaentity()) + self._ascent_aid:remove() + self._ascent_aid = nil + end + if self._rope then + self._rope:remove() + self._rope = nil + end + self._.hooked = false + self._.last_velocity = obj:get_velocity() + obj:set_acceleration{x=0, y=-9.81, z=0} + end + return + end + local expected_vel = vector.add(self._.last_velocity, vector.multiply(obj:get_acceleration(), dtime)) + local thresh_diff = vector.length(vector.subtract(expected_vel, obj:get_velocity())) + if thresh_diff >= 0.05 and check_hooked(self) then + self._.hooked = true + self._last_check = 0 + obj:set_velocity{x=0, y=0, z=0} + obj:set_acceleration{x=0, y=0, z=0} + set_rotation(obj, self._.last_velocity) + if self._origin then + local end_pos = vector.add(obj:get_pos(), vector.multiply(vector.normalize(self._.last_velocity), -0.4)) + local d = vector.distance(end_pos, self._origin) + if d < 1 then + return + end + if d > 20 then + local dir = vector.normalize(vector.subtract(self._origin, end_pos)) + self._origin = vector.add(vector.multiply(dir, 20), end_pos) + end + local ascent_aid = minetest.add_entity(self._origin, "adv_weapons:ascent_aid") + self._ascent_aid = ascent_aid + local aid_dir = vector.subtract(end_pos, self._origin) + ascent_aid:get_luaentity()._direction = vector.normalize(aid_dir) + ascent_aid:get_luaentity()._origin = self._origin + ascent_aid:get_luaentity()._length = vector.length(aid_dir) + set_rotation(ascent_aid, vector.normalize(aid_dir)) + self._rope = spawn_rope(end_pos, self._origin) + end + return + end + end + -- slowdown (air resistance) + obj:set_velocity(vector.multiply(obj:get_velocity(), math.pow(0.99, dtime))) + local size = obj:get_velocity() + self._.last_velocity = obj:get_velocity() + -- rotate properly + set_rotation(obj, size) + end, + on_punch = function(self, clicker) + if self._.hooked then + local inv = clicker:get_inventory() + if inv:room_for_item("main", "adv_weapons:grappling_hook") then + inv:add_item("main", "adv_weapons:grappling_hook") + if self._ascent_aid then + remove_ascent_aid(self._ascent_aid:get_luaentity()) + self._ascent_aid:remove() + self._ascent_aid = nil + end + if self._rope then + self._rope:remove() + self._rope = nil + end + self.object:remove() + end + end + end, + on_activate = function(self, staticdata) + self.object:set_armor_groups({immortal = 1}) + self._ = self._ or {} + if staticdata ~= "" then + local parsed = minetest.parse_json(staticdata) + if parsed then + modlib.table.add_all(self._, parsed) + end + end + if self._.hooked then + self._last_check = 0 + end + end, + get_staticdata = function(self) + return minetest.write_json(self._) + end, +}) + +local aa_box = {-0.1,0.01,-0.1,0.1,0.1,0.1} +minetest.register_entity("adv_weapons:ascent_aid", { + initial_properties = { + hp = 1, + visual = "cube", + visual_size = {x = 0.4, y = 0.2, z = 0.4}, + textures = {gt,gt,gt,gt,gt,gt}, + collisionbox = aa_box, + selectionbox = {-0.2,-0.1,-0.2,0.2,0.1,0.2}, + physical = true, + infotext = "Ascent Aid" + }, + on_activate = function(self, staticdata) + self.object:set_armor_groups({immortal = 1}) + if staticdata == "deleteme" then + self.object:remove() + return + end + if staticdata ~= "" then + self._size = minetest.parse_json(staticdata) + adjust_rope(self.object, size) + end + end, + get_staticdata = function(self) + return "deleteme" + --return (self._size and minetest.write_json(self._size)) or "" + end, + on_rightclick = function(self, clicker) + if vector.distance(self.object:get_pos(), clicker:get_pos()) >= 1 then + return + end + if clicker:get_attach() == self.object then + clicker:set_detach() + self.object:set_properties({collisionbox = aa_box, selectionbox = {-0.2,-0.1,-0.2,0.2,0.1,0.2}}) + self._owner = nil + clicker:set_properties({visual_size = vector.new(1,1,1)}) + if player_api then + player_api.player_attached[clicker:get_player_name()] = nil + minetest.after(0.1, function() + player_api.set_animation(clicker, "stand", 30) + end) + end + return + end + clicker:set_attach(self.object, "", {x = 0, y = 12, z = 0}, {x = 180, y = 0, z = 0}) + --local box = modlib.table.copy(clicker:get_properties().collisionbox) + --box[2] = box[2] + 0.01 + --self.object:set_properties({collisionbox = box, selectionbox = {-0.2,-0.1,-0.2,0.2,0.1,0.2}}) + clicker:set_properties({visual_size = vector.divide(vector.new(1,1,1), {x = 0.4, y = 0.2, z = 0.4})}) + self._owner = clicker:get_player_name() + if player_api then + player_api.player_attached[clicker:get_player_name()] = true + minetest.after(0.1, function() + player_api.set_animation(clicker, "lay", 30) + end) + end + clicker:set_look_horizontal(self.object:get_yaw()) + end, + on_step = function(self, dtime) + local obj = self.object + obj:set_velocity(vector.multiply(obj:get_velocity(), math.pow(0.75, dtime))) + local speed = vector.length(obj:get_velocity()) + if speed < 0.1 then + obj:set_velocity(vector.new(0,0,0)) + end + local line_off + if self._origin then + local translated = vector.subtract(obj:get_pos(), self._origin) + line_off = math.min(self._length-0.1, math.max(0.1, vector.dot(translated, self._direction))) + local closest = vector.add(vector.multiply(self._direction, line_off), self._origin) + local diff = vector.length(vector.subtract(obj:get_pos(), closest)) + if diff >= 0.11 then + obj:set_velocity(vector.new(0,0,0)) + obj:set_pos(closest) + return + end + end + if speed > 5 then + return + end + if self._owner then + local clicker = minetest.get_player_by_name(self._owner) + clicker:set_properties({visual_size = vector.divide(vector.new(1,1,1), {x = 0.4, y = 0.2, z = 0.4})}) + local control = clicker:get_player_control() + local direction = self._direction--clicker:get_look_dir() + set_rotation(obj, direction) + local factor = 0 + if control.up and line_off < self._length - 0.2 then + factor = 1 + elseif control.down and line_off > 0.2 then + factor = -1 + end + obj:set_velocity(vector.add(obj:get_velocity(), vector.multiply(direction, factor*0.5))) + end + end +}) + +function adjust_rope(rope, size) + rope:get_luaentity()._size = size + local length = vector.length(size) + local segments = {} + for i=0, length*2 do + table.insert(segments, "0,"..(i*19).."=aw_bs.png") + end + local rs = "[combine:16x"..(#segments*19)..":"..table.concat(segments, ":") + segments = {} + for i=0, length*2 do + table.insert(segments, (i*19)..",0=aw_rs.png") + end + local rss = "[combine:"..(#segments*19).."x16:"..table.concat(segments, ":") + rope:set_properties({visual_size = {x = 0.1, y = 0.1, z = length}, textures = {rs, rs, rss, rss, re, re}}) + size = vector.normalize(size) + set_rotation(rope, size) +end + +function spawn_rope(origin, target) + local size = vector.subtract(target, origin) + local rope = minetest.add_entity(vector.add(origin, vector.divide(size, 2)), "adv_weapons:beam") + adjust_rope(rope, size) + return rope +end + +minetest.register_tool("adv_weapons:grappling_hook", { + description = "Grappling Hook", + range = 20, + inventory_image = "adv_weapons_grappling_hook.png", + on_use = function(itemstack, user, pointed_thing) + local pos = vector.add(user:get_pos(), vector.new(0,user:get_properties().eye_height,0)) + pos = vector.add(pos, vector.multiply(user:get_look_dir(), 0.5)) + local hook = minetest.add_entity(pos, "adv_weapons:grappling_hook") + hook:get_luaentity()._origin = vector.add(user:get_pos(), vector.new(0, 0.01, 0)) + hook:get_luaentity()._owner = user:get_player_name() + local velocity = vector.normalize(vector.add(user:get_look_dir(), vector.multiply( + vector.subtract({x = math.random(), y = math.random(), z = math.random()}, 0.5), 0.1))) + hook:set_velocity(vector.multiply(velocity, 10)) + hook:set_acceleration({x=0, y=-9.81, z=0}) + itemstack:take_item() + return itemstack + --[[if pointed_thing.under then + spawn_rope(user:get_pos(), pointed_thing.under) + end]] + end +}) \ No newline at end of file diff --git a/textures/adv_weapons_bullet.png b/textures/adv_weapons_bullet.png new file mode 100644 index 0000000..1318863 Binary files /dev/null and b/textures/adv_weapons_bullet.png differ diff --git a/textures/adv_weapons_crosshair.png b/textures/adv_weapons_crosshair.png new file mode 100644 index 0000000..784fd5a Binary files /dev/null and b/textures/adv_weapons_crosshair.png differ diff --git a/textures/adv_weapons_grappling_hook.png b/textures/adv_weapons_grappling_hook.png new file mode 100644 index 0000000..eb36578 Binary files /dev/null and b/textures/adv_weapons_grappling_hook.png differ diff --git a/textures/adv_weapons_grappling_hook_texture.png b/textures/adv_weapons_grappling_hook_texture.png new file mode 100644 index 0000000..45eb34e Binary files /dev/null and b/textures/adv_weapons_grappling_hook_texture.png differ diff --git a/textures/adv_weapons_landmine.png b/textures/adv_weapons_landmine.png new file mode 100644 index 0000000..a3e7575 Binary files /dev/null and b/textures/adv_weapons_landmine.png differ diff --git a/textures/adv_weapons_rope_end.png b/textures/adv_weapons_rope_end.png new file mode 100644 index 0000000..cd0404b Binary files /dev/null and b/textures/adv_weapons_rope_end.png differ diff --git a/textures/adv_weapons_rope_side.png b/textures/adv_weapons_rope_side.png new file mode 100644 index 0000000..ba36cea Binary files /dev/null and b/textures/adv_weapons_rope_side.png differ diff --git a/textures/adv_weapons_whip.png b/textures/adv_weapons_whip.png new file mode 100644 index 0000000..15134db Binary files /dev/null and b/textures/adv_weapons_whip.png differ diff --git a/textures/aw_bs.png b/textures/aw_bs.png new file mode 100644 index 0000000..ef9e22e Binary files /dev/null and b/textures/aw_bs.png differ diff --git a/textures/aw_rs.png b/textures/aw_rs.png new file mode 100644 index 0000000..071dc35 Binary files /dev/null and b/textures/aw_rs.png differ diff --git a/turret.lua b/turret.lua new file mode 100644 index 0000000..d72941f --- /dev/null +++ b/turret.lua @@ -0,0 +1,172 @@ +minetest.register_craft({ + output = 'adv_weapons:turret_base', + recipe = { + {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {'default:steel_ingot', '', 'default:steel_ingot'}, + {'default:steel_ingot', '', 'default:steel_ingot'} + } +}) + +minetest.register_craft({ + output = 'adv_weapons:gatlin_barrel', + recipe = { + {'default:steel_ingot', 'default:diamond', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:mese_crystal', 'default:steel_ingot'}, + {'default:steel_ingot', 'default:diamond', 'default:steel_ingot'} + } +}) + +local function target_player(self, player) + local player_pos = player:get_pos() + player_pos.y = player_pos.y + player:get_properties().eye_height + local eye_pos = vector.add(self.object:get_pos(), vector.multiply(vector.direction(self.object:get_pos(), player_pos), 0.75)) + if is_opponent(self._owner, player:get_player_name()) and player_pos.y >= self.object:get_pos().y + and minetest.line_of_sight(eye_pos, player_pos) then + local distance = vector.distance(self.object:get_pos(), player_pos) + if distance < 20 then + return distance + end + end + return false +end + +minetest.register_entity("adv_weapons:turret_gatlin_barrel", { + initial_properties = { + hp = 1, + visual = "mesh", + mesh = "adv_weapons_gatlin_barrel.obj", + visual_size = {x = 8, y = 8, z = 8}, + textures = {"adv_weapons_grappling_hook_texture.png"}, + physical = false, + collide_with_objects = false, + collisionbox = {0,0,0,0,0,0}, + pointable = false, + infotext = "Gatlin Barrel" + }, + on_activate = function(self, staticdata) + self.object:set_armor_groups({immortal = 1}) + self._dtime = 0 + self._owner = staticdata + end, + get_staticdata = function(self) + return self._owner + end, + on_step = function(self, dtime) + if minetest.get_node(self.object:get_pos()).name ~= "adv_weapons:turret_base" then + self.object:remove() + minetest.add_item(self.object:get_pos(), "adv_weapons:gatlin_barrel") + return + end + self._dtime = self._dtime + dtime + local target_ref + if self._target then + target_ref = minetest.get_player_by_name(self._target) + if not target_player(self, target_ref) then + target_ref = nil + end + end + if not target_ref then + local min_distance = math.huge + for _, player in pairs(minetest.get_connected_players()) do + local distance = target_player(self, player) + if distance then + if distance < min_distance then + min_distance = distance + target_ref = player + end + end + end + end + if target_ref then + local player_pos = target_ref:get_pos() + player_pos.y = player_pos.y + target_ref:get_properties().eye_height + self._target_rotation = get_rotation(vector.direction(self.object:get_pos(), player_pos)) + end + if self._target_rotation then + local total_diff = vector.subtract(self._target_rotation, self.object:get_rotation()) + total_diff = vector.apply(total_diff, function(c) + if math.abs(c) > math.pi then + return -(2*math.pi-c) + end + return c + end) + local diff = vector.length(total_diff) + if diff < 0.1 then -- time for SHOOT + if self._dtime > 0.5 then + local r = self.object:get_rotation() + local d = {} + -- x rotation + d.y = math.sin(r.x) + d.z = math.cos(r.x) + -- y rotation + d.x = -(d.z * math.sin(r.y)) + d.z = d.z * math.cos(r.y) + local start = vector.add(self.object:get_pos(), vector.multiply(d, 0.75)) + minetest.add_particle({ + pos = start, + velocity = vector.multiply(d, 10), + --acceleration = {x=0, y=0, z=0}, + expirationtime = 10, + size = 0.2, + collisiondetection = true, + collision_removal = true, + object_collision = true, + glow = 14, + texture = "adv_weapons_bullet.png", + }) + for thing in minetest.raycast(start, vector.add(start, vector.multiply(d, 20)), true, true) do + if thing.type ~= "object" then + break + end + thing.ref:punch(self.object, 1, {full_punch_interval=1, damage_groups = {fleshy=2}}, d) + end + self._dtime = 0 + end + end + if diff < 0.05 then + self.object:set_rotation(self._target_rotation) + else + local rotate = vector.add(self.object:get_rotation(), vector.multiply(total_diff, math.min(1, dtime*2))) + self.object:set_rotation(rotate) + end + end + end +}) + +-- HACK should use item instead +minetest.register_node("adv_weapons:gatlin_barrel", { + groups = {not_in_creative_inventory = 1}, + description = "Gatlin Barrel", + drawtype = "mesh", + mesh = "adv_weapons_gatlin_barrel.obj", + tiles = {"adv_weapons_grappling_hook_texture.png"}, + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return + end + if minetest.get_node(pointed_thing.under).name ~= "adv_weapons:turret_base" then + return + end + local above = vector.add(pointed_thing.under, {x=0, y=0.3, z=0}) + local ent = minetest.add_entity(above, "adv_weapons:turret_gatlin_barrel") + ent:get_luaentity()._owner = placer:get_player_name() + itemstack:take_item() + return itemstack + end +}) + +minetest.register_node("adv_weapons:turret_base", { + paramtype = "light", + sunlight_propagates = true, + groups = {cracky = 1, level = 3, falling_node = 1}, + --[[collisionbox = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + },]] + description = "Turret Base", + drawtype = "mesh", + mesh = "adv_weapons_turret_base.obj", + tiles = {"adv_weapons_grappling_hook_texture.png"} +}) \ No newline at end of file