Piearesquare!
Before Width: | Height: | Size: 661 B After Width: | Height: | Size: 844 B |
Before Width: | Height: | Size: 584 B After Width: | Height: | Size: 702 B |
Before Width: | Height: | Size: 681 B After Width: | Height: | Size: 773 B |
Before Width: | Height: | Size: 681 B After Width: | Height: | Size: 733 B |
|
@ -502,43 +502,21 @@ void content_craftitem_init()
|
|||
lists::add("craftguide",i);
|
||||
lists::add("creative",i);
|
||||
|
||||
i = CONTENT_CRAFTITEM_PUMPKIN_PIE_RAW;
|
||||
i = CONTENT_CRAFTITEM_PUMPKIN_PIE_SLICE;
|
||||
f = &g_content_craftitem_features[i];
|
||||
f->content = CONTENT_CRAFTITEM_PUMPKIN_PIE_RAW;
|
||||
f->texture = "pumpkin_pie_raw.png";
|
||||
f->name = "pumpkin_pie_raw";
|
||||
f->description = "Raw Pumpkin Pie";
|
||||
f->cook_result = std::string("CraftItem pumpkin_pie 1");
|
||||
f->edible = 3;
|
||||
crafting::set1over1Recipe(CONTENT_CRAFTITEM_PUMPKINSLICE,CONTENT_CRAFTITEM_DOUGH,CONTENT_CRAFTITEM_PUMPKIN_PIE_RAW);
|
||||
lists::add("craftguide",i);
|
||||
|
||||
i = CONTENT_CRAFTITEM_PUMPKIN_PIE;
|
||||
f = &g_content_craftitem_features[i];
|
||||
f->content = CONTENT_CRAFTITEM_PUMPKIN_PIE;
|
||||
f->texture = "pumpkin_pie.png";
|
||||
f->name = "pumpkin_pie";
|
||||
f->description = "Pumpkin Pie";
|
||||
f->content = CONTENT_CRAFTITEM_PUMPKIN_PIE_SLICE;
|
||||
f->texture = "pumpkin_pie_slice.png";
|
||||
f->name = "pumpkin_pie_slice";
|
||||
f->description = "Pumpkin Pie Slice";
|
||||
f->edible = 6;
|
||||
lists::add("creative",i);
|
||||
|
||||
i = CONTENT_CRAFTITEM_APPLE_PIE_RAW;
|
||||
f = &g_content_craftitem_features[i];
|
||||
f->content = CONTENT_CRAFTITEM_APPLE_PIE_RAW;
|
||||
f->texture = "apple_pie_raw.png";
|
||||
f->name = "apple_pie_raw";
|
||||
f->description = "Raw Apple Pie";
|
||||
f->cook_result = std::string("CraftItem apple_pie 1");
|
||||
f->edible = 3;
|
||||
crafting::set1over1Recipe(CONTENT_CRAFTITEM_APPLE,CONTENT_CRAFTITEM_DOUGH,CONTENT_CRAFTITEM_APPLE_PIE_RAW);
|
||||
lists::add("craftguide",i);
|
||||
|
||||
i = CONTENT_CRAFTITEM_APPLE_PIE;
|
||||
i = CONTENT_CRAFTITEM_APPLE_PIE_SLICE;
|
||||
f = &g_content_craftitem_features[i];
|
||||
f->content = CONTENT_CRAFTITEM_APPLE_PIE;
|
||||
f->texture = "apple_pie.png";
|
||||
f->name = "apple_pie";
|
||||
f->description = "Apple Pie";
|
||||
f->content = CONTENT_CRAFTITEM_APPLE_PIE_SLICE;
|
||||
f->texture = "apple_pie_slice.png";
|
||||
f->name = "apple_pie_slice";
|
||||
f->description = "Apple Pie Slice";
|
||||
f->edible = 6;
|
||||
lists::add("creative",i);
|
||||
|
||||
|
|
|
@ -83,10 +83,8 @@ CraftItemFeatures & content_craftitem_features(std::string subname);
|
|||
#define CONTENT_CRAFTITEM_ROTTEN_FRUIT (CONTENT_CRAFTITEM_MASK | 0x2D)
|
||||
#define CONTENT_CRAFTITEM_MUSH (CONTENT_CRAFTITEM_MASK | 0x2E)
|
||||
#define CONTENT_CRAFTITEM_PUMPKINSLICE (CONTENT_CRAFTITEM_MASK | 0x2F)
|
||||
#define CONTENT_CRAFTITEM_PUMPKIN_PIE_RAW (CONTENT_CRAFTITEM_MASK | 0x30)
|
||||
#define CONTENT_CRAFTITEM_PUMPKIN_PIE (CONTENT_CRAFTITEM_MASK | 0x31)
|
||||
#define CONTENT_CRAFTITEM_APPLE_PIE_RAW (CONTENT_CRAFTITEM_MASK | 0x32)
|
||||
#define CONTENT_CRAFTITEM_APPLE_PIE (CONTENT_CRAFTITEM_MASK | 0x33)
|
||||
#define CONTENT_CRAFTITEM_PUMPKIN_PIE_SLICE (CONTENT_CRAFTITEM_MASK | 0x32)
|
||||
#define CONTENT_CRAFTITEM_APPLE_PIE_SLICE (CONTENT_CRAFTITEM_MASK | 0x33)
|
||||
#define CONTENT_CRAFTITEM_MELONSLICE (CONTENT_CRAFTITEM_MASK | 0x34)
|
||||
#define CONTENT_CRAFTITEM_WHEAT (CONTENT_CRAFTITEM_MASK | 0x35)
|
||||
#define CONTENT_CRAFTITEM_FLOUR (CONTENT_CRAFTITEM_MASK | 0x36)
|
||||
|
|
|
@ -835,6 +835,118 @@ static void content_mapnode_nodebox_book(ContentFeatures *f)
|
|||
));
|
||||
}
|
||||
|
||||
static void content_mapnode_nodebox_pie(ContentFeatures *f)
|
||||
{
|
||||
f->setNodeBox(core::aabbox3d<f32>(
|
||||
(-4.0 / 16.0)*BS,
|
||||
-0.5*BS,
|
||||
(-4.0 / 16.0)*BS,
|
||||
|
||||
(4.0 / 16.0)*BS,
|
||||
(-6.0 / 16.0)*BS,
|
||||
(4.0 / 16.0)*BS
|
||||
));
|
||||
|
||||
f->addNodeBox(core::aabbox3d<f32>(
|
||||
(-5.0 / 16.0)*BS,
|
||||
(-6.0 / 16.0)*BS,
|
||||
(-5.0 / 16.0)*BS,
|
||||
|
||||
(5.0 / 16.0)*BS,
|
||||
(-5.0 / 16.0)*BS,
|
||||
(5.0 / 16.0)*BS
|
||||
));
|
||||
}
|
||||
|
||||
static void content_mapnode_nodebox_pie_3(ContentFeatures *f)
|
||||
{
|
||||
f->setNodeBox(core::aabbox3d<f32>(
|
||||
(-4.0 / 16.0)*BS,
|
||||
-0.5*BS,
|
||||
(-4.0 / 16.0)*BS,
|
||||
|
||||
0,
|
||||
(-6.0 / 16.0)*BS,
|
||||
(4.0 / 16.0)*BS
|
||||
));
|
||||
|
||||
f->addNodeBox(core::aabbox3d<f32>(
|
||||
(-5.0 / 16.0)*BS,
|
||||
(-6.0 / 16.0)*BS,
|
||||
(-5.0 / 16.0)*BS,
|
||||
|
||||
0,
|
||||
(-5.0 / 16.0)*BS,
|
||||
(5.0 / 16.0)*BS
|
||||
));
|
||||
|
||||
f->addNodeBox(core::aabbox3d<f32>(
|
||||
0,
|
||||
-0.5*BS,
|
||||
0,
|
||||
|
||||
(4.0 / 16.0)*BS,
|
||||
(-6.0 / 16.0)*BS,
|
||||
(4.0 / 16.0)*BS
|
||||
));
|
||||
|
||||
f->addNodeBox(core::aabbox3d<f32>(
|
||||
0,
|
||||
(-6.0 / 16.0)*BS,
|
||||
0,
|
||||
|
||||
(5.0 / 16.0)*BS,
|
||||
(-5.0 / 16.0)*BS,
|
||||
(5.0 / 16.0)*BS
|
||||
));
|
||||
}
|
||||
|
||||
static void content_mapnode_nodebox_pie_2(ContentFeatures *f)
|
||||
{
|
||||
f->setNodeBox(core::aabbox3d<f32>(
|
||||
(-4.0 / 16.0)*BS,
|
||||
-0.5*BS,
|
||||
(-4.0 / 16.0)*BS,
|
||||
|
||||
0,
|
||||
(-6.0 / 16.0)*BS,
|
||||
(4.0 / 16.0)*BS
|
||||
));
|
||||
|
||||
f->addNodeBox(core::aabbox3d<f32>(
|
||||
(-5.0 / 16.0)*BS,
|
||||
(-6.0 / 16.0)*BS,
|
||||
(-5.0 / 16.0)*BS,
|
||||
|
||||
0,
|
||||
(-5.0 / 16.0)*BS,
|
||||
(5.0 / 16.0)*BS
|
||||
));
|
||||
}
|
||||
|
||||
static void content_mapnode_nodebox_pie_1(ContentFeatures *f)
|
||||
{
|
||||
f->setNodeBox(core::aabbox3d<f32>(
|
||||
(-4.0 / 16.0)*BS,
|
||||
-0.5*BS,
|
||||
(-4.0 / 16.0)*BS,
|
||||
|
||||
0,
|
||||
(-6.0 / 16.0)*BS,
|
||||
0
|
||||
));
|
||||
|
||||
f->addNodeBox(core::aabbox3d<f32>(
|
||||
(-5.0 / 16.0)*BS,
|
||||
(-6.0 / 16.0)*BS,
|
||||
(-5.0 / 16.0)*BS,
|
||||
|
||||
0,
|
||||
(-5.0 / 16.0)*BS,
|
||||
0
|
||||
));
|
||||
}
|
||||
|
||||
/*
|
||||
A conversion table for backwards compatibility.
|
||||
Maps <=v19 content types to current ones.
|
||||
|
@ -3003,6 +3115,226 @@ void content_mapnode_init()
|
|||
f->hardness = 0.4;
|
||||
lists::add("creative",i);
|
||||
|
||||
i = CONTENT_APPLE_PIE_RAW;
|
||||
f = &content_features(i);
|
||||
f->description = std::string("Raw Apple Pie");
|
||||
f->setTexture(0, "apple_pie_raw.png");
|
||||
f->setTexture(1, "apple_pie_raw.png");
|
||||
f->setTexture(2, "apple_pie_raw.png");
|
||||
f->setTexture(3, "apple_pie_raw.png");
|
||||
f->setTexture(4, "apple_pie_raw.png");
|
||||
f->setTexture(5, "apple_pie_raw.png");
|
||||
f->draw_type = CDT_NODEBOX;
|
||||
f->param_type = CPT_LIGHT;
|
||||
f->flammable = true;
|
||||
f->walkable = true;
|
||||
f->light_propagates = true;
|
||||
f->sunlight_propagates = true;
|
||||
f->solidness = 0; // drawn separately, makes no faces
|
||||
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
|
||||
f->cook_result = std::string("MaterialItem2")+itos(CONTENT_APPLE_PIE)+" 1";
|
||||
content_mapnode_nodebox_pie(f);
|
||||
f->setInventoryTextureNodeBox(i, "apple_pie_raw.png", "apple_pie_raw.png", "apple_pie_raw.png");
|
||||
f->type = CMT_DIRT;
|
||||
f->hardness = 0.4;
|
||||
lists::add("creative",i);
|
||||
|
||||
i = CONTENT_APPLE_PIE;
|
||||
f = &content_features(i);
|
||||
f->description = std::string("Apple Pie");
|
||||
f->setTexture(0, "apple_pie.png");
|
||||
f->setTexture(1, "apple_pie.png");
|
||||
f->setTexture(2, "apple_pie.png");
|
||||
f->setTexture(3, "apple_pie.png");
|
||||
f->setTexture(4, "apple_pie.png");
|
||||
f->setTexture(5, "apple_pie.png");
|
||||
f->draw_type = CDT_NODEBOX;
|
||||
f->param_type = CPT_LIGHT;
|
||||
f->flammable = true;
|
||||
f->walkable = true;
|
||||
f->light_propagates = true;
|
||||
f->sunlight_propagates = true;
|
||||
f->solidness = 0; // drawn separately, makes no faces
|
||||
content_mapnode_nodebox_pie(f);
|
||||
f->setInventoryTextureNodeBox(i, "apple_pie.png", "apple_pie.png", "apple_pie.png");
|
||||
f->dug_item = std::string("CraftItem apple_pie_slice 1");
|
||||
f->ondig_replace_node=CONTENT_APPLE_PIE_3;
|
||||
f->type = CMT_DIRT;
|
||||
f->hardness = 0.4;
|
||||
lists::add("creative",i);
|
||||
|
||||
i = CONTENT_APPLE_PIE_3;
|
||||
f = &content_features(i);
|
||||
f->setTexture(0, "apple_pie.png");
|
||||
f->setTexture(1, "apple_pie.png");
|
||||
f->setTexture(2, "apple_pie.png^[transformR90");
|
||||
f->setTexture(3, "apple_pie.png");
|
||||
f->setTexture(4, "apple_pie.png");
|
||||
f->setTexture(5, "apple_pie.png^[transformR270");
|
||||
f->draw_type = CDT_NODEBOX;
|
||||
f->param_type = CPT_LIGHT;
|
||||
f->flammable = true;
|
||||
f->walkable = true;
|
||||
f->light_propagates = true;
|
||||
f->sunlight_propagates = true;
|
||||
f->solidness = 0; // drawn separately, makes no faces
|
||||
content_mapnode_nodebox_pie_3(f);
|
||||
f->dug_item = std::string("CraftItem apple_pie_slice 1");
|
||||
f->ondig_replace_node=CONTENT_APPLE_PIE_2;
|
||||
f->type = CMT_DIRT;
|
||||
f->hardness = 0.4;
|
||||
|
||||
i = CONTENT_APPLE_PIE_2;
|
||||
f = &content_features(i);
|
||||
f->setTexture(0, "apple_pie.png");
|
||||
f->setTexture(1, "apple_pie.png");
|
||||
f->setTexture(2, "apple_pie.png^[transformFY");
|
||||
f->setTexture(3, "apple_pie.png");
|
||||
f->setTexture(4, "apple_pie.png");
|
||||
f->setTexture(5, "apple_pie.png");
|
||||
f->draw_type = CDT_NODEBOX;
|
||||
f->param_type = CPT_LIGHT;
|
||||
f->flammable = true;
|
||||
f->walkable = true;
|
||||
f->light_propagates = true;
|
||||
f->sunlight_propagates = true;
|
||||
f->solidness = 0; // drawn separately, makes no faces
|
||||
content_mapnode_nodebox_pie_2(f);
|
||||
f->dug_item = std::string("CraftItem apple_pie_slice 1");
|
||||
f->ondig_replace_node=CONTENT_APPLE_PIE_1;
|
||||
f->type = CMT_DIRT;
|
||||
f->hardness = 0.4;
|
||||
|
||||
i = CONTENT_APPLE_PIE_1;
|
||||
f = &content_features(i);
|
||||
f->setTexture(0, "apple_pie.png");
|
||||
f->setTexture(1, "apple_pie.png");
|
||||
f->setTexture(2, "apple_pie.png^[transformFY");
|
||||
f->setTexture(3, "apple_pie.png");
|
||||
f->setTexture(4, "apple_pie.png^[transformFY");
|
||||
f->setTexture(5, "apple_pie.png");
|
||||
f->draw_type = CDT_NODEBOX;
|
||||
f->param_type = CPT_LIGHT;
|
||||
f->flammable = true;
|
||||
f->walkable = true;
|
||||
f->light_propagates = true;
|
||||
f->sunlight_propagates = true;
|
||||
f->solidness = 0; // drawn separately, makes no faces
|
||||
content_mapnode_nodebox_pie_1(f);
|
||||
f->dug_item = std::string("CraftItem apple_pie_slice 1");
|
||||
f->type = CMT_DIRT;
|
||||
f->hardness = 0.4;
|
||||
|
||||
i = CONTENT_PUMPKIN_PIE_RAW;
|
||||
f = &content_features(i);
|
||||
f->description = std::string("Raw Pumpkin Pie");
|
||||
f->setTexture(0, "pumpkin_pie_raw.png");
|
||||
f->setTexture(1, "pumpkin_pie_raw.png");
|
||||
f->setTexture(2, "pumpkin_pie_raw.png");
|
||||
f->setTexture(3, "pumpkin_pie_raw.png");
|
||||
f->setTexture(4, "pumpkin_pie_raw.png");
|
||||
f->setTexture(5, "pumpkin_pie_raw.png");
|
||||
f->draw_type = CDT_NODEBOX;
|
||||
f->param_type = CPT_LIGHT;
|
||||
f->flammable = true;
|
||||
f->walkable = true;
|
||||
f->light_propagates = true;
|
||||
f->sunlight_propagates = true;
|
||||
f->solidness = 0; // drawn separately, makes no faces
|
||||
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
|
||||
f->cook_result = std::string("MaterialItem2")+itos(CONTENT_PUMPKIN_PIE)+" 1";
|
||||
content_mapnode_nodebox_pie(f);
|
||||
f->setInventoryTextureNodeBox(i, "pumpkin_pie_raw.png", "pumpkin_pie_raw.png", "pumpkin_pie_raw.png");
|
||||
f->type = CMT_DIRT;
|
||||
f->hardness = 0.4;
|
||||
lists::add("creative",i);
|
||||
|
||||
i = CONTENT_PUMPKIN_PIE;
|
||||
f = &content_features(i);
|
||||
f->description = std::string("Pumpkin Pie");
|
||||
f->setTexture(0, "pumpkin_pie.png");
|
||||
f->setTexture(1, "pumpkin_pie.png");
|
||||
f->setTexture(2, "pumpkin_pie.png");
|
||||
f->setTexture(3, "pumpkin_pie.png");
|
||||
f->setTexture(4, "pumpkin_pie.png");
|
||||
f->setTexture(5, "pumpkin_pie.png");
|
||||
f->draw_type = CDT_NODEBOX;
|
||||
f->param_type = CPT_LIGHT;
|
||||
f->flammable = true;
|
||||
f->walkable = true;
|
||||
f->light_propagates = true;
|
||||
f->sunlight_propagates = true;
|
||||
f->solidness = 0; // drawn separately, makes no faces
|
||||
content_mapnode_nodebox_pie(f);
|
||||
f->setInventoryTextureNodeBox(i, "pumpkin_pie.png", "pumpkin_pie.png", "pumpkin_pie.png");
|
||||
f->dug_item = std::string("CraftItem pumpkin_pie_slice 1");
|
||||
f->ondig_replace_node=CONTENT_PUMPKIN_PIE_3;
|
||||
f->type = CMT_DIRT;
|
||||
f->hardness = 0.4;
|
||||
lists::add("creative",i);
|
||||
|
||||
i = CONTENT_PUMPKIN_PIE_3;
|
||||
f = &content_features(i);
|
||||
f->setTexture(0, "pumpkin_pie.png");
|
||||
f->setTexture(1, "pumpkin_pie.png");
|
||||
f->setTexture(2, "pumpkin_pie.png^[transformR90");
|
||||
f->setTexture(3, "pumpkin_pie.png");
|
||||
f->setTexture(4, "pumpkin_pie.png");
|
||||
f->setTexture(5, "pumpkin_pie.png^[transformR270");
|
||||
f->draw_type = CDT_NODEBOX;
|
||||
f->param_type = CPT_LIGHT;
|
||||
f->flammable = true;
|
||||
f->walkable = true;
|
||||
f->light_propagates = true;
|
||||
f->sunlight_propagates = true;
|
||||
f->solidness = 0; // drawn separately, makes no faces
|
||||
content_mapnode_nodebox_pie_3(f);
|
||||
f->dug_item = std::string("CraftItem pumpkin_pie_slice 1");
|
||||
f->ondig_replace_node=CONTENT_PUMPKIN_PIE_2;
|
||||
f->type = CMT_DIRT;
|
||||
f->hardness = 0.4;
|
||||
|
||||
i = CONTENT_PUMPKIN_PIE_2;
|
||||
f = &content_features(i);
|
||||
f->setTexture(0, "pumpkin_pie.png");
|
||||
f->setTexture(1, "pumpkin_pie.png");
|
||||
f->setTexture(2, "pumpkin_pie.png^[transformFY");
|
||||
f->setTexture(3, "pumpkin_pie.png");
|
||||
f->setTexture(4, "pumpkin_pie.png");
|
||||
f->setTexture(5, "pumpkin_pie.png");
|
||||
f->draw_type = CDT_NODEBOX;
|
||||
f->param_type = CPT_LIGHT;
|
||||
f->flammable = true;
|
||||
f->walkable = true;
|
||||
f->light_propagates = true;
|
||||
f->sunlight_propagates = true;
|
||||
f->solidness = 0; // drawn separately, makes no faces
|
||||
content_mapnode_nodebox_pie_2(f);
|
||||
f->dug_item = std::string("CraftItem pumpkin_pie_slice 1");
|
||||
f->ondig_replace_node=CONTENT_PUMPKIN_PIE_1;
|
||||
f->type = CMT_DIRT;
|
||||
f->hardness = 0.4;
|
||||
|
||||
i = CONTENT_PUMPKIN_PIE_1;
|
||||
f = &content_features(i);
|
||||
f->setTexture(0, "pumpkin_pie.png");
|
||||
f->setTexture(1, "pumpkin_pie.png");
|
||||
f->setTexture(2, "pumpkin_pie.png^[transformFY");
|
||||
f->setTexture(3, "pumpkin_pie.png");
|
||||
f->setTexture(4, "pumpkin_pie.png^[transformFY");
|
||||
f->setTexture(5, "pumpkin_pie.png");
|
||||
f->draw_type = CDT_NODEBOX;
|
||||
f->param_type = CPT_LIGHT;
|
||||
f->flammable = true;
|
||||
f->walkable = true;
|
||||
f->light_propagates = true;
|
||||
f->sunlight_propagates = true;
|
||||
f->solidness = 0; // drawn separately, makes no faces
|
||||
content_mapnode_nodebox_pie_1(f);
|
||||
f->dug_item = std::string("CraftItem pumpkin_pie_slice 1");
|
||||
f->type = CMT_DIRT;
|
||||
f->hardness = 0.4;
|
||||
|
||||
i = CONTENT_FARM_WHEAT_1;
|
||||
f = &content_features(i);
|
||||
f->description = std::string("Wheat");
|
||||
|
|
|
@ -232,7 +232,7 @@ MapNode mapnode_translate_to_internal(MapNode n_from, u8 version);
|
|||
#define CONTENT_SEEDS_BEETROOT 0x923
|
||||
#define CONTENT_SEEDS_GRAPE 0x924
|
||||
#define CONTENT_SEEDS_COTTON 0x925
|
||||
// FREE 926-92F
|
||||
// FREE 925-930
|
||||
#define CONTENT_FARM_WHEAT_1 0x930
|
||||
#define CONTENT_FARM_WHEAT_2 0x931
|
||||
#define CONTENT_FARM_WHEAT_3 0x932
|
||||
|
@ -269,7 +269,17 @@ MapNode mapnode_translate_to_internal(MapNode n_from, u8 version);
|
|||
#define CONTENT_FARM_TRELLIS_GRAPE_2 0x951
|
||||
#define CONTENT_FARM_TRELLIS_GRAPE_3 0x952
|
||||
#define CONTENT_FARM_TRELLIS_GRAPE 0x953
|
||||
// FREE 954-9FA
|
||||
#define CONTENT_APPLE_PIE_RAW 0x954
|
||||
#define CONTENT_APPLE_PIE 0x955
|
||||
#define CONTENT_APPLE_PIE_3 0x956
|
||||
#define CONTENT_APPLE_PIE_2 0x957
|
||||
#define CONTENT_APPLE_PIE_1 0x958
|
||||
#define CONTENT_PUMPKIN_PIE_RAW 0x959
|
||||
#define CONTENT_PUMPKIN_PIE 0x95A
|
||||
#define CONTENT_PUMPKIN_PIE_3 0x95B
|
||||
#define CONTENT_PUMPKIN_PIE_2 0x95C
|
||||
#define CONTENT_PUMPKIN_PIE_1 0x95D
|
||||
// FREE 95E-9FA
|
||||
#define CONTENT_DEAD_VINE 0x9FB
|
||||
#define CONTENT_TRELLIS_DEAD_VINE 0x9FC
|
||||
#define CONTENT_FARM_PUMPKIN_JACK 0x9FD
|
||||
|
|