Add files via upload
parent
c4895e2086
commit
7330794ecb
|
@ -0,0 +1,2 @@
|
|||
default
|
||||
aliveai
|
|
@ -0,0 +1 @@
|
|||
pyramids for aliveai
|
|
@ -0,0 +1,506 @@
|
|||
aliveai_pyramid={
|
||||
max_size=10,
|
||||
treasures={
|
||||
"default:diamond",
|
||||
"default:gold_ingot",
|
||||
"default:steel_ingot",
|
||||
"default:mese_crystal",
|
||||
"default:coalblock",
|
||||
"default:obsidian",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
aliveai.create_bot({
|
||||
attack_players=1,
|
||||
name="mummy",
|
||||
team="pyramid",
|
||||
texture="aliveai_pyramid_mummy.png",
|
||||
attacking=1,
|
||||
talking=0,
|
||||
light=-1,
|
||||
building=0,
|
||||
escape=0,
|
||||
type="monster",
|
||||
dmg=2,
|
||||
hp=100,
|
||||
name_color="",
|
||||
arm=2,
|
||||
smartfight=0,
|
||||
damage_by_blocks=0,
|
||||
spawn_on={"aliveai_pyramid:stone2"},
|
||||
on_punched=function(self,puncher)
|
||||
self.hp=self.hp_max
|
||||
end,
|
||||
on_load=function(self)
|
||||
self.move.speed=0.2
|
||||
end,
|
||||
spawn=function(self)
|
||||
self.move.speed=0.2
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
minetest.register_tool("aliveai_pyramid:spawner", {
|
||||
description = "pyramid spawner",
|
||||
range=15,
|
||||
groups={not_in_creative_inventory=1},
|
||||
inventory_image = "default_stick.png",
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if pointed_thing.type=="node" then
|
||||
aliveai_pyramid.gen(pointed_thing.above)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "aliveai_pyramid:spawn",
|
||||
wherein = "default:desert_sand",
|
||||
clust_scarcity = 20 * 20 * 20,
|
||||
clust_num_ores = 1,
|
||||
clust_size = 1,
|
||||
y_min = -1,
|
||||
y_max = 20,
|
||||
})
|
||||
|
||||
|
||||
minetest.register_node("aliveai_pyramid:spawn", {
|
||||
tiles = {"default_desert_sand.png"},
|
||||
groups = {not_in_creative_inventory=1},
|
||||
is_ground_content = false,
|
||||
})
|
||||
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"aliveai_pyramid:spawn"},
|
||||
neighbors={"air"},
|
||||
interval = 10,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
minetest.set_node(pos,{name="default:desert_sand"})
|
||||
if math.random(1,10)==1 then
|
||||
aliveai_pyramid.gen(pos)
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
aliveai_pyramid.settreasure=function(pos)
|
||||
minetest.place_node(pos, {name="default:chest"})
|
||||
local inv=minetest.get_meta(pos):get_inventory()
|
||||
local l=#aliveai_pyramid.treasures
|
||||
for i=1,32 do
|
||||
inv:set_stack("main",i, ItemStack(aliveai_pyramid.treasures[math.random(1,l)] .." " .. math.random(1,3)))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
aliveai_pyramid.paths=function(pos,cur,count,size)
|
||||
local d={1,-1}
|
||||
local a={x=0,y=0,z=0}
|
||||
if math.random(1,2)==1 then
|
||||
a.x=d[math.random(1,2)]
|
||||
else
|
||||
a.z=d[math.random(1,2)]
|
||||
end
|
||||
|
||||
|
||||
local len=math.random(1,size)
|
||||
local i=0
|
||||
local last=cur
|
||||
local w=math.random(1,2)
|
||||
local aa={}
|
||||
local awall=0
|
||||
local n
|
||||
while(count>1) do
|
||||
count=count-1
|
||||
i=i+1
|
||||
local t1={x=cur.x+(a.x*i),y=0,z=cur.z+(a.z*i)}
|
||||
if i>=len
|
||||
or (a.x~=0 and (
|
||||
(t1.x>size or t1.x<0)
|
||||
))
|
||||
or (a.z~=0 and (
|
||||
(t1.z>size or t1.z<0)
|
||||
))
|
||||
then
|
||||
i=0
|
||||
cur=last
|
||||
w=math.random(1,10)
|
||||
if a.x~=0 then
|
||||
a.x=0
|
||||
a.z=d[math.random(1,2)]
|
||||
else
|
||||
a.z=0
|
||||
a.x=d[math.random(1,2)]
|
||||
end
|
||||
len=math.random(1,size/2)
|
||||
else
|
||||
if awall>0 then
|
||||
awall=awall-1
|
||||
if awall<1 then n=nil end
|
||||
elseif math.random(1,20)==1 then
|
||||
n=math.random(1,3)
|
||||
awall=math.random(1,20)
|
||||
end
|
||||
|
||||
if not n then
|
||||
aa[t1.x .. " ".. t1.y .. " " ..t1.z]=0
|
||||
elseif n==1 then
|
||||
aa[t1.x .. " ".. t1.y .. " " ..t1.z]=1
|
||||
aa[t1.x .. " " .. (t1.y+5) .. " " .. t1.z]=1
|
||||
aa[t1.x .. " " .. (t1.y+6) .. " " .. t1.z]=1
|
||||
aa[t1.x .. " " .. (t1.y+7) .. " " .. t1.z]=1
|
||||
aa[t1.x .. " " .. (t1.y+8) .. " " .. t1.z]=1
|
||||
elseif n>1 then
|
||||
aa[t1.x .. " ".. t1.y .. " " ..t1.z]=0
|
||||
aa[t1.x .. " ".. (t1.y-1) .. " " ..t1.z]=n
|
||||
end
|
||||
|
||||
last=t1
|
||||
if a.x~=0 then
|
||||
if w==1 or w==2 then
|
||||
aa[t1.x .. " " .. t1.y .. " " .. (t1.z+1)]=0
|
||||
if n==1 then
|
||||
aa[t1.x .. " " .. t1.y .. " " .. (t1.z+2)]=1
|
||||
aa[t1.x .. " " .. (t1.y+5) .. " " .. (t1.z+1)]=1
|
||||
aa[t1.x .. " " .. (t1.y+6) .. " " .. (t1.z+1)]=1
|
||||
aa[t1.x .. " " .. (t1.y+7) .. " " .. (t1.z+1)]=1
|
||||
aa[t1.x .. " " .. (t1.y+8) .. " " .. (t1.z+1)]=1
|
||||
elseif n and n>1 then
|
||||
aa[t1.x .. " " .. (t1.y-1) .. " " .. (t1.z+1)]=n
|
||||
end
|
||||
end
|
||||
if w==1 or w==3 then
|
||||
aa[t1.x .. " " .. t1.y .. " " .. (t1.z-1)]=0
|
||||
if n==1 then
|
||||
aa[t1.x .. " " .. t1.y .. " " .. (t1.z-2)]=1
|
||||
aa[t1.x .. " " .. (t1.y+5) .. " " .. (t1.z-1)]=1
|
||||
aa[t1.x .. " " .. (t1.y+6) .. " " .. (t1.z-1)]=1
|
||||
aa[t1.x .. " " .. (t1.y+7) .. " " .. (t1.z-1)]=1
|
||||
aa[t1.x .. " " .. (t1.y+8) .. " " .. (t1.z-1)]=1
|
||||
elseif n and n>1 then
|
||||
aa[t1.x .. " " .. (t1.y-1) .. " " .. (t1.z-1)]=n
|
||||
end
|
||||
end
|
||||
else
|
||||
if w==1 or w==2 then
|
||||
aa[(t1.x+1) .. " " .. t1.y .. " " .. t1.z]=0
|
||||
if n==1 then
|
||||
aa[(t1.x+2) .. " " .. t1.y .. " " .. t1.z]=1
|
||||
aa[(t1.x+1) .. " " .. (t1.y+5) .. " " .. t1.z]=1
|
||||
aa[(t1.x+1) .. " " .. (t1.y+6) .. " " .. t1.z]=1
|
||||
aa[(t1.x+1) .. " " .. (t1.y+7) .. " " .. t1.z]=1
|
||||
aa[(t1.x+1) .. " " .. (t1.y+8) .. " " .. t1.z]=1
|
||||
elseif n and n>1 then
|
||||
aa[(t1.x+1) .. " " .. (t1.y-1) .. " " .. t1.z]=n
|
||||
end
|
||||
end
|
||||
if w==1 or w==2 then
|
||||
aa[(t1.x-1) .. " " .. t1.y .. " " .. t1.z]=0
|
||||
if n==1 then
|
||||
aa[(t1.x-2) .. " " .. t1.y .. " " .. t1.z]=1
|
||||
aa[(t1.x-1) .. " " .. (t1.y+5) .. " " .. t1.z]=1
|
||||
aa[(t1.x-1) .. " " .. (t1.y+6) .. " " .. t1.z]=1
|
||||
aa[(t1.x-1) .. " " .. (t1.y+7) .. " " .. t1.z]=1
|
||||
aa[(t1.x-1) .. " " .. (t1.y+8) .. " " .. t1.z]=1
|
||||
elseif n and n>1 then
|
||||
aa[(t1.x-1) .. " " .. (t1.y-1) .. " " .. t1.z]=n
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return aa
|
||||
end
|
||||
|
||||
|
||||
aliveai_pyramid.rooms=function(a,size)
|
||||
local m=3000
|
||||
for i=0,size/2,1 do
|
||||
local x1=math.random(1,size)
|
||||
local z1=math.random(1,size)
|
||||
local x2=0
|
||||
local z2=0
|
||||
if a[(x1+1) .. " " .. 0 .. " " .. z1] or a[(x1-1) .. " " .. 0 .. " " .. z1] or a[x1 .. " " .. 0 .. " " .. (z1+1)] or a[x1 .. " " .. 0 .. " " .. (z1-1)]
|
||||
or a[(x1+2) .. " " .. 0 .. " " .. z1] or a[(x1-2) .. " " .. 0 .. " " .. z1] or a[x1 .. " " .. 0 .. " " .. (z1+2)] or a[x1 .. " " .. 0 .. " " .. (z1-2)]
|
||||
then
|
||||
z2=size
|
||||
end
|
||||
while(z2<size and m>1) do
|
||||
m=m-1
|
||||
local x=x1+x2
|
||||
local z=z1+z2
|
||||
local t=x .. " " .. 0 .. " " .. z
|
||||
if not a[t] and not a[(x+3) .. " " .. 0 .. " " .. z] then
|
||||
if math.random(1,size)==1 then
|
||||
a[z .. " " .. 1 .. " " .. z]=4
|
||||
end
|
||||
a[t]=0
|
||||
x2=x2+1
|
||||
else
|
||||
x2=0
|
||||
z2=z2+1
|
||||
if a[x .. " " .. 0 .. " " .. z] or a[x .. " " .. 0 .. " " .. (z+3)] then
|
||||
z2=size
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return a
|
||||
end
|
||||
|
||||
aliveai_pyramid.set=function(pos,a,size,yy)
|
||||
local n
|
||||
local a2
|
||||
for y=yy,8,1 do
|
||||
for x=0,size,1 do
|
||||
for z=0,size,1 do
|
||||
a2=a[x .." " .. y .. " " .. z]
|
||||
|
||||
if y>0 and not a2 then
|
||||
a2=a[x .." " .. 0 .. " " .. z]
|
||||
end
|
||||
|
||||
if (a2==0 or a2==4) and y>-1 and y<5 then
|
||||
n="air"
|
||||
elseif a2==2 then
|
||||
n="aliveai_pyramid:stone1" --deep hole trap
|
||||
for i=-1,-50,-1 do
|
||||
minetest.set_node({x=pos.x+x,y=pos.y+y+i,z=pos.z+z},{name="air"})
|
||||
end
|
||||
if math.random(1,5)==1 then
|
||||
n="aliveai_pyramid:stone3"
|
||||
minetest.after(1, function(pos,x,y,z)
|
||||
minetest.get_node_timer({x=pos.x+x,y=pos.y+y,z=pos.z+z}):start(1)
|
||||
end,pos,x,y,z)
|
||||
end
|
||||
elseif a2==3 then
|
||||
n="aliveai_pyramid:stone1" --quicksand trap
|
||||
for i=-1,-10,-1 do
|
||||
local d="air"
|
||||
if i<-5 then
|
||||
d="aliveai_pyramid:quicksand"
|
||||
end
|
||||
minetest.set_node({x=pos.x+x,y=pos.y+y+i,z=pos.z+z},{name=d})
|
||||
end
|
||||
if math.random(1,5)==1 then
|
||||
n="aliveai_pyramid:stone3"
|
||||
minetest.after(1, function(pos,x,y,z)
|
||||
minetest.get_node_timer({x=pos.x+x,y=pos.y+y,z=pos.z+z}):start(1)
|
||||
end,pos,x,y,z)
|
||||
end
|
||||
elseif a2==1 then
|
||||
n="aliveai_pyramid:stone1" --falling trap
|
||||
else
|
||||
n="aliveai_pyramid:stone2"
|
||||
end
|
||||
minetest.set_node({x=pos.x+x,y=pos.y+y,z=pos.z+z},{name=n})
|
||||
if a2==4 then
|
||||
aliveai_pyramid.settreasure({x=pos.x+x,y=pos.y+y,z=pos.z+z})
|
||||
elseif a2==0 and y==1 and math.random(1,size)==1 then
|
||||
minetest.add_entity({x=pos.x+x,y=pos.y+y,z=pos.z+z}, "aliveai_pyramid:mummy")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
aliveai_pyramid.gen=function(pos)
|
||||
local size=math.random(3,aliveai_pyramid.max_size)*10
|
||||
|
||||
local test=0
|
||||
for y=-3,0,1 do
|
||||
for x=0,size,1 do
|
||||
for z=0,size,1 do
|
||||
local p={x=pos.x+x,y=pos.y+y,z=pos.z+z}
|
||||
if aliveai.def(p,"walkable") then
|
||||
test=test+1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if test<100*size then return end
|
||||
|
||||
print("aliveai: generating a pyramid [size " .. size .. "] (about" .. (( size*size*size)/2) .." will be affected), you can expect lags")
|
||||
|
||||
local start={
|
||||
{x=size/2,z=0},
|
||||
{x=size/2,z=size},
|
||||
{x=0,z=size/2},
|
||||
{x=size,z=size/2}
|
||||
}
|
||||
|
||||
local rstart=math.random(1,4)
|
||||
start=start[rstart]
|
||||
|
||||
local ostart={x=pos.x+start.x,y=pos.y,z=pos.z+start.z}
|
||||
|
||||
|
||||
local halfor=math.random(1,2)
|
||||
local cur=start
|
||||
local count=math.random(size,size*(size/halfor))
|
||||
local tsize=size
|
||||
local yy=-1
|
||||
|
||||
for i=0,8,1 do
|
||||
local a=aliveai_pyramid.paths(pos,cur,count,tsize)
|
||||
a=aliveai_pyramid.rooms(a,tsize)
|
||||
aliveai_pyramid.set(pos,a,tsize,yy)
|
||||
|
||||
for yo=0,8,1 do
|
||||
local m=(yo-9)
|
||||
for y=-1,yo,1 do
|
||||
for x=-8+y,tsize+(8-y),1 do
|
||||
for z=-8+y,tsize+(8-y),1 do
|
||||
if (x<=m or x>=tsize-m) or (z<=m or z>=tsize-m) then
|
||||
minetest.set_node({x=pos.x+x,y=pos.y+y,z=pos.z+z},{name="aliveai_pyramid:stone2"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
tsize=tsize-16
|
||||
pos={x=pos.x+8,y=pos.y+8,z=pos.z+8}
|
||||
yy=1
|
||||
local start={
|
||||
{x=tsize/2,z=0},
|
||||
{x=tsize/2,z=tsize},
|
||||
{x=0,z=tsize/2},
|
||||
{x=tsize,z=tsize/2}
|
||||
}
|
||||
start=start[math.random(1,4)]
|
||||
local halfor=math.random(1,2)
|
||||
local cur=start
|
||||
local count=math.random(tsize,tsize*(tsize/halfor))
|
||||
end
|
||||
|
||||
local x2=0
|
||||
local z2=0
|
||||
|
||||
if rstart==1 then
|
||||
z2=-1
|
||||
elseif rstart==2 then
|
||||
z2=1
|
||||
elseif rstart==3 then
|
||||
x2=-1
|
||||
else
|
||||
x2=1
|
||||
end
|
||||
|
||||
for y=0,3,1 do
|
||||
for i=0,9,1 do
|
||||
minetest.set_node({x=ostart.x+(i*x2),y=ostart.y+y,z=ostart.z+(i*z2)},{name="air"})
|
||||
end
|
||||
end
|
||||
print("Pyramid done")
|
||||
end
|
||||
|
||||
|
||||
minetest.register_node("aliveai_pyramid:stone3", {
|
||||
description = "Pyramid trigger stone",
|
||||
tiles = {"default_desert_sandstone_block.png"},
|
||||
groups = {falling_node=1,cracky=1,level=3},
|
||||
damage_per_second =1,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
is_ground_content = false,
|
||||
drop="aliveai_pyramid:stone2",
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
minetest.check_for_falling(pos)
|
||||
end,
|
||||
on_timer = function (pos, elapsed)
|
||||
for _, ob in ipairs(minetest.get_objects_inside_radius(pos,1.5)) do
|
||||
if aliveai.team(ob)~="pyramid" then
|
||||
minetest.set_node(pos,{name="aliveai_pyramid:stone1"})
|
||||
minetest.check_for_falling(pos)
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
|
||||
minetest.register_node("aliveai_pyramid:stone1", {
|
||||
description = "Pyramid falling stone",
|
||||
tiles = {"default_desert_sandstone_block.png"},
|
||||
groups = {falling_node=1,cracky=1,level=3},
|
||||
damage_per_second =1,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
is_ground_content = false,
|
||||
drop="aliveai_pyramid:stone2",
|
||||
on_punch = function(pos, node, puncher, pointed_thing)
|
||||
if math.random(1,10)==1 then
|
||||
minetest.remove_node(pos)
|
||||
minetest.check_for_falling(pos)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("aliveai_pyramid:stone2", {
|
||||
description = "Pyramid stone",
|
||||
tiles = {"default_desert_sandstone_block.png"},
|
||||
groups = {cracky=1,level=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
is_ground_content = false,
|
||||
})
|
||||
|
||||
minetest.register_node("aliveai_pyramid:quicksand", {
|
||||
description = "Quicksand",
|
||||
drawtype = "liquid",
|
||||
tiles = {"default_desert_sand.png"},
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
drowning = 1,
|
||||
liquidtype = "source",
|
||||
liquid_range = 0,
|
||||
liquid_alternative_flowing = "aliveai_pyramid:quicksand",
|
||||
liquid_alternative_source = "aliveai_pyramid:quicksand",
|
||||
liquid_viscosity = 15,
|
||||
post_effect_color = {a=255,r=0,g=0,b=0},
|
||||
groups = {liquid = 4,crumbly = 1, sand = 1},
|
||||
})
|
||||
|
||||
local dis={
|
||||
{"Blue pyramid diamond","000088"},
|
||||
{"White pyramid diamond","ffffff"},
|
||||
{"Yellow pyramid diamond","aaaa00"},
|
||||
{"Red pyramid diamond","aa0000"},
|
||||
{"Green pyramid diamond","00aa00"},
|
||||
{"Orange pyramid diamond","aa5511"},
|
||||
{"Purple pyramid diamond","550055"},
|
||||
{"Pink pyramid diamond","aa55aa"},
|
||||
{"black pyramid diamond","111111"},
|
||||
}
|
||||
|
||||
for i, d in ipairs(dis) do
|
||||
minetest.register_node("aliveai_pyramid:diamond" .. i, {
|
||||
description = d[1],
|
||||
tiles = {"default_sand.png^[colorize:#" .. d[2] .. "bb"},
|
||||
groups = {dig_immediate=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
is_ground_content = false,
|
||||
walkable=false,
|
||||
drawtype = "mesh",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
visual_scale = 0.2,
|
||||
wield_scale = {x=10, y=10, z=10},
|
||||
alpha = 20,
|
||||
selection_box = {type = "fixed",fixed={-0.2, -0.5, -0.2, 0.2, -0.2, 0.2}},
|
||||
mesh="aliveai_pyramid_diamond.obj",
|
||||
})
|
||||
table.insert(aliveai_pyramid.treasures,"aliveai_pyramid:diamond" .. i)
|
||||
end
|
|
@ -0,0 +1,57 @@
|
|||
# Blender v2.78 (sub 0) OBJ File: 'd.blend'
|
||||
# www.blender.org
|
||||
mtllib aliveai_pyramid_diamond.mtl
|
||||
o Cone
|
||||
v 0.000000 -1.371028 1.000000
|
||||
v 0.707107 -1.371028 0.707107
|
||||
v 1.000000 -1.371028 0.000000
|
||||
v 0.707107 -1.371027 -0.707106
|
||||
v -0.000000 -1.371027 -1.000000
|
||||
v 0.000000 -2.438345 -0.000000
|
||||
v -0.707107 -1.371027 -0.707106
|
||||
v -1.000000 -1.371028 0.000000
|
||||
v -0.707107 -1.371028 0.707107
|
||||
v -0.000000 -1.089645 0.605255
|
||||
v 0.427979 -1.089644 0.427980
|
||||
v 0.605254 -1.089644 0.000000
|
||||
v 0.427979 -1.089644 -0.427979
|
||||
v -0.000000 -1.089644 -0.605254
|
||||
v -0.427979 -1.089644 -0.427979
|
||||
v -0.605254 -1.089644 0.000000
|
||||
v -0.427979 -1.089644 0.427980
|
||||
vn 0.2893 -0.6545 0.6985
|
||||
vn 0.6985 -0.6545 0.2893
|
||||
vn 0.6985 -0.6545 -0.2893
|
||||
vn 0.2893 -0.6545 -0.6985
|
||||
vn -0.2893 -0.6545 -0.6985
|
||||
vn -0.6985 -0.6545 -0.2893
|
||||
vn -0.6985 -0.6545 0.2893
|
||||
vn -0.2893 -0.6545 0.6985
|
||||
vn 0.5644 0.7917 -0.2338
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn -0.5644 0.7917 0.2338
|
||||
vn 0.5644 0.7917 0.2338
|
||||
vn -0.5644 0.7917 -0.2338
|
||||
vn -0.2338 0.7917 -0.5644
|
||||
vn -0.2338 0.7917 0.5644
|
||||
vn 0.2338 0.7917 0.5644
|
||||
vn 0.2338 0.7917 -0.5644
|
||||
usemtl None
|
||||
s off
|
||||
f 1//1 6//1 2//1
|
||||
f 2//2 6//2 3//2
|
||||
f 3//3 6//3 4//3
|
||||
f 4//4 6//4 5//4
|
||||
f 5//5 6//5 7//5
|
||||
f 7//6 6//6 8//6
|
||||
f 8//7 6//7 9//7
|
||||
f 9//8 6//8 1//8
|
||||
f 3//9 4//9 13//9 12//9
|
||||
f 10//10 11//10 12//10 13//10 14//10 15//10 16//10 17//10
|
||||
f 8//11 9//11 17//11 16//11
|
||||
f 2//12 3//12 12//12 11//12
|
||||
f 7//13 8//13 16//13 15//13
|
||||
f 5//14 7//14 15//14 14//14
|
||||
f 9//15 1//15 10//15 17//15
|
||||
f 1//16 2//16 11//16 10//16
|
||||
f 4//17 5//17 14//17 13//17
|
Binary file not shown.
After Width: | Height: | Size: 8.2 KiB |
Loading…
Reference in New Issue