diff --git a/data/json/furniture_and_terrain/furniture-fungal.json b/data/json/furniture_and_terrain/furniture-fungal.json index 9230b5ee032ef..ea0529048d104 100644 --- a/data/json/furniture_and_terrain/furniture-fungal.json +++ b/data/json/furniture_and_terrain/furniture-fungal.json @@ -48,5 +48,18 @@ "required_str": -1, "flags": [ "TRANSPARENT", "CONTAINER", "SEALED", "ALLOW_FIELD_EFFECT", "FLAMMABLE_ASH", "FUNGUS", "MOUNTABLE", "SHORT" ], "bash": { "str_min": 6, "str_max": 20, "sound": "poof.", "sound_fail": "poof." } + }, + { + "type": "furniture", + "id": "f_fungal_tangle", + "name": "fungal tangle", + "description": "Thick, ropy tendrils of fungus have risen from the ground and gathered into an impenetrable clump.", + "looks_like": "mon_fungal_wall", + "symbol": "&", + "bgcolor": "light_gray", + "move_cost_mod": -1, + "required_str": -1, + "flags": [ "FLAMMABLE_ASH", "FUNGUS" ], + "bash": { "str_min": 26, "str_max": 50, "sound": "poof.", "sound_fail": "squelch." } } ] diff --git a/data/json/mapgen/fungal/fungal_bloom.json b/data/json/mapgen/fungal/fungal_bloom.json new file mode 100644 index 0000000000000..0d2d775f95df6 --- /dev/null +++ b/data/json/mapgen/fungal/fungal_bloom.json @@ -0,0 +1,64 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "fungal_bloom" ], + "weight": 100, + "object": { + "rows": [ + " .............. ", + " .................... ", + " ......,,,,,,,,,,...... ", + " ....,,,,,,,,,,,,,,.... ", + " ...,,,,,_____,,,,,,... ", + "...,,,,__________,,,,...", + "...,,,____________,,,...", + "..,,,,_____________,,,..", + "..,,,______________,,,..", + "..,,,______________,,,..", + "..,,________________,,..", + "..,,________Y_______,,..", + "..,,_______X________,,..", + "..,,________________,,..", + "..,,,______________,,,..", + "..,,,______________,,,..", + "..,,,,_____________,,,..", + "...,,,____________,,,...", + "...,,,,__________,,,,...", + " ...,,,,,_____,,,,,,... ", + " ....,,,,,,,,,,,,,,.... ", + " ......,,,,,,,,,,...... ", + " .................... ", + " .............. " + ], + "terrain": { + " ": [ [ "t_grass_dead", 4 ], "t_dirtmound", [ "t_grass", 2 ], "t_fungus" ], + ".": [ [ "t_grass_dead", 2 ], "t_fungus" ], + ",": [ [ "t_grass_dead", 3 ], [ "t_fungus", 7 ], "t_fungus_mound", "t_shrub_fungal" ], + "_": [ + [ "t_fungus", 25 ], + [ "t_fungus_mound", 3 ], + [ "t_tree_fungal", 4 ], + [ "t_tree_fungal_young", 3 ], + [ "t_shrub_fungal", 5 ] + ], + "X": "t_marloss", + "Y": "t_fungus_mound" + }, + "furniture": { + " ": [ + [ "f_null", 18 ], + [ "f_boulder_small", 3 ], + [ "f_boulder_medium", 2 ], + "f_boulder_large", + [ "f_flower_fungal", 2 ], + "f_fungal_mass" + ], + ".": [ [ "f_null", 36 ], [ "f_flower_fungal", 8 ], [ "f_fungal_mass", 3 ], "f_fungal_clump" ], + ",": [ [ "f_null", 24 ], [ "f_fungal_mass", 2 ], [ "f_flower_fungal", 5 ], "f_fungal_clump" ], + "_": [ [ "f_null", 20 ], [ "f_flower_fungal", 4 ], [ "f_fungal_mass", 2 ], "f_fungal_clump" ] + }, + "monster": { "Y": { "monster": "mon_fungaloid_queen" } } + } + } +] diff --git a/data/json/mapgen/fungal/fungal_flowers.json b/data/json/mapgen/fungal/fungal_flowers.json new file mode 100644 index 0000000000000..1337b5c5dd41c --- /dev/null +++ b/data/json/mapgen/fungal/fungal_flowers.json @@ -0,0 +1,58 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "fungal_flowers" ], + "weight": 100, + "object": { + "rows": [ + " .............. ", + " .................... ", + " ......,,,,,,,,,,...... ", + " ....,,,,,,,,,,,,,,.... ", + " ...,,,,,_____,,,,,,... ", + "...,,,,__________,,,,...", + "...,,,____________,,,...", + "..,,,,_____________,,,..", + "..,,,______________,,,..", + "..,,,______________,,,..", + "..,,________________,,..", + "..,,________Y_______,,..", + "..,,_______X________,,..", + "..,,________________,,..", + "..,,,______________,,,..", + "..,,,______________,,,..", + "..,,,,_____________,,,..", + "...,,,____________,,,...", + "...,,,,__________,,,,...", + " ...,,,,,_____,,,,,,... ", + " ....,,,,,,,,,,,,,,.... ", + " ......,,,,,,,,,,...... ", + " .................... ", + " .............. " + ], + "terrain": { + " ": [ [ "t_grass_dead", 2 ], [ "t_grass", 3 ], "t_fungus" ], + ".": [ "t_grass_dead", "t_grass", "t_fungus" ], + ",": [ [ "t_grass_dead", 3 ], [ "t_fungus", 7 ], "t_fungus_mound", "t_shrub_fungal" ], + "_": [ + [ "t_fungus", 25 ], + [ "t_fungus_mound", 3 ], + [ "t_tree_fungal", 2 ], + [ "t_tree_fungal_young", 2 ], + [ "t_shrub_fungal", 3 ] + ], + "X": "t_marloss", + "Y": "t_fungus_mound" + }, + "furniture": { + " ": [ [ "f_null", 20 ], [ "f_boulder_small", 3 ], [ "f_flower_fungal", 3 ], "f_fungal_mass" ], + ".": [ [ "f_null", 36 ], [ "f_flower_fungal", 8 ], [ "f_fungal_mass", 3 ], "f_fungal_clump" ], + ",": [ [ "f_null", 24 ], [ "f_fungal_mass", 2 ], [ "f_flower_fungal", 5 ], "f_fungal_clump" ], + "_": [ [ "f_null", 20 ], [ "f_flower_fungal", 8 ], [ "f_fungal_mass", 2 ], "f_fungal_clump" ], + "X": "f_flower_marloss" + }, + "monster": { "Y": { "monster": "mon_fungaloid_seeder" } } + } + } +] diff --git a/data/json/mapgen/fungal/fungal_tower.json b/data/json/mapgen/fungal/fungal_tower.json new file mode 100644 index 0000000000000..b272281f09a3d --- /dev/null +++ b/data/json/mapgen/fungal/fungal_tower.json @@ -0,0 +1,60 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "fungal_tower" ], + "weight": 100, + "object": { + "rows": [ + " .............. ", + " .........&&......... ", + " ......,,,&,,,,,,...... ", + " ....,,,,,&,&,,,,,,.... ", + " ...,,,,,&&__&,,,,,,... ", + "...,,,,&&&___&___,,,,...", + "...,,,&&____&_____,,&...", + "..,,,,_&&&&&___&__&&,,..", + "..&&,_&__&__&&&_&&_,,,..", + "..,,&_&_&_______&__,,,..", + "..,,_&_&&_X_____&__&&,..", + "..,&&&_&______&&&&&&,,..", + ".&&,&__&Y__X__&_&___,,..", + "..&,&__&&_____&_&_&_,,..", + "..&&&&__&&&&&&___&&,,,..", + "..,&,&&_______&____,,,..", + "..,&,,&____&&&___&&&,,..", + "...&,,&&__&____&&_,,,...", + "..&,,,,&&&_&&&&__,,,,...", + " ...,,,,,&__&_,,,,,,... ", + " ....,,,&&,,,&,,,,,.... ", + " ......&,,,,,,&&,...... ", + " ..............&&.... ", + " .............. " + ], + "terrain": { + " ": [ [ "t_grass_dead", 4 ], "t_dirtmound", "t_grass", "t_fungus" ], + ".": [ [ "t_grass_dead", 2 ], "t_fungus" ], + ",": [ [ "t_grass_dead", 3 ], [ "t_fungus", 7 ], "t_fungus_mound" ], + "_": [ [ "t_fungus", 25 ], "t_fungus_mound", [ "t_tree_fungal", 3 ], [ "t_tree_fungal_young", 2 ] ], + "&": "t_fungus_mound", + "X": "t_fungus_mound", + "Y": "t_fungus_mound" + }, + "furniture": { + " ": [ + [ "f_null", 18 ], + [ "f_boulder_small", 3 ], + [ "f_boulder_medium", 2 ], + "f_boulder_large", + [ "f_flower_fungal", 2 ], + "f_fungal_mass" + ], + ".": [ [ "f_null", 18 ], [ "f_flower_fungal", 4 ], [ "f_fungal_mass", 3 ], "f_fungal_clump" ], + ",": [ [ "f_null", 12 ], [ "f_fungal_mass", 2 ], "f_flower_fungal", "f_fungal_clump" ], + "_": [ [ "f_null", 10 ], [ "f_fungal_mass", 2 ], "f_fungal_clump" ], + "&": [ [ "f_fungal_tangle", 8 ], "f_fungal_clump", "f_fungal_mass" ] + }, + "monster": { "X": { "monster": "mon_fungaloid_tower" }, "Y": { "monster": "mon_fungaloid_queen" } } + } + } +] diff --git a/data/json/monsters/monsters.json b/data/json/monsters/monsters.json index b187f431bcd6a..d1fa060df7449 100644 --- a/data/json/monsters/monsters.json +++ b/data/json/monsters/monsters.json @@ -1409,19 +1409,22 @@ "id": "mon_fungal_wall", "type": "MONSTER", "name": "fungal wall", - "description": "A veritable wall of fungus, grown as a natural defense by the fungal spire. New spores erupt from the surface every few seconds.", + "description": "A veritable wall of fungus, grown as a natural defense by the fungal spire. New spores erupt from the surface every few seconds, and tendrils constrict around it, pulling new mass into its shape. They move with an inexorable strength that could snap limbs.", "default_faction": "fungus", "species": [ "FUNGUS" ], "diff": 2, "volume": "875000 ml", "weight": 200000, - "hp": 10, + "hp": 20, "speed": 100, "material": [ "veggy" ], "symbol": "T", "color": "dark_gray", "aggression": 100, "morale": 100, + "melee_skill": 1, + "melee_dice": 2, + "melee_dice_sides": 10, "melee_cut": 0, "armor_bash": 10, "armor_cut": 10, diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_fungal.json b/data/json/overmap/overmap_terrain/overmap_terrain_fungal.json new file mode 100644 index 0000000000000..4198541232351 --- /dev/null +++ b/data/json/overmap/overmap_terrain/overmap_terrain_fungal.json @@ -0,0 +1,32 @@ +[ + { + "type": "overmap_terrain", + "id": "fungal_tower", + "name": "fungal tower", + "sym": "T", + "color": "yellow", + "see_cost": 3, + "extras": "marloss", + "flags": [ "NO_ROTATE", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "fungal_bloom", + "name": "fungal bloom", + "sym": "T", + "color": "light_gray", + "see_cost": 2, + "extras": "marloss", + "flags": [ "NO_ROTATE", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "fungal_flowers", + "name": "fungal flowers", + "sym": "T", + "color": "cyan", + "see_cost": 5, + "extras": "marloss", + "flags": [ "NO_ROTATE", "RISK_HIGH" ] + } +] diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_hardcoded.json b/data/json/overmap/overmap_terrain/overmap_terrain_hardcoded.json index fd3d2d7512586..cedd5730f7584 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain_hardcoded.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain_hardcoded.json @@ -209,36 +209,6 @@ "extras": "field", "flags": [ "NO_ROTATE", "RISK_HIGH" ] }, - { - "type": "overmap_terrain", - "id": "fungal_bloom", - "name": "fungal bloom", - "sym": "T", - "color": "light_gray", - "see_cost": 2, - "extras": "marloss", - "flags": [ "NO_ROTATE", "RISK_HIGH" ] - }, - { - "type": "overmap_terrain", - "id": "fungal_tower", - "name": "fungal tower", - "sym": "T", - "color": "yellow", - "see_cost": 3, - "extras": "marloss", - "flags": [ "NO_ROTATE", "RISK_HIGH" ] - }, - { - "type": "overmap_terrain", - "id": "fungal_flowers", - "name": "fungal flowers", - "sym": "T", - "color": "cyan", - "see_cost": 5, - "extras": "marloss", - "flags": [ "NO_ROTATE", "RISK_HIGH" ] - }, { "type": "overmap_terrain", "id": "spider_pit", diff --git a/src/mapgen_functions.cpp b/src/mapgen_functions.cpp index a7a22e79a85de..18643be30e0f1 100644 --- a/src/mapgen_functions.cpp +++ b/src/mapgen_functions.cpp @@ -46,9 +46,6 @@ const mtype_id mon_ant_queen( "mon_ant_queen" ); const mtype_id mon_bat( "mon_bat" ); const mtype_id mon_bee( "mon_bee" ); const mtype_id mon_beekeeper( "mon_beekeeper" ); -const mtype_id mon_fungaloid_queen( "mon_fungaloid_queen" ); -const mtype_id mon_fungaloid_seeder( "mon_fungaloid_seeder" ); -const mtype_id mon_fungaloid_tower( "mon_fungaloid_tower" ); const mtype_id mon_rat_king( "mon_rat_king" ); const mtype_id mon_sewer_rat( "mon_sewer_rat" ); const mtype_id mon_spider_widow_giant( "mon_spider_widow_giant" ); @@ -102,9 +99,6 @@ building_gen_pointer get_mapgen_cfunction( const std::string &ident ) { "forest_trail_four_way", &mapgen_forest_trail_four_way }, { "hive", &mapgen_hive }, { "spider_pit", &mapgen_spider_pit }, - { "fungal_bloom", &mapgen_fungal_bloom }, - { "fungal_tower", &mapgen_fungal_tower }, - { "fungal_flowers", &mapgen_fungal_flowers }, { "road_straight", &mapgen_road }, { "road_curved", &mapgen_road }, { "road_end", &mapgen_road }, @@ -513,85 +507,6 @@ void mapgen_spider_pit( mapgendata &dat ) } } -void mapgen_fungal_bloom( mapgendata &dat ) -{ - map *const m = &dat.m; - for( int i = 0; i < SEEX * 2; i++ ) { - for( int j = 0; j < SEEY * 2; j++ ) { - if( one_in( rl_dist( point( i, j ), point( 12, 12 ) ) * 4 ) ) { - m->ter_set( point( i, j ), t_marloss ); - } else if( one_in( 10 ) ) { - if( one_in( 3 ) ) { - m->ter_set( point( i, j ), t_tree_fungal ); - } else { - m->ter_set( point( i, j ), t_tree_fungal_young ); - } - - } else if( one_in( 5 ) ) { - m->ter_set( point( i, j ), t_shrub_fungal ); - } else if( one_in( 10 ) ) { - m->ter_set( point( i, j ), t_fungus_mound ); - } else { - m->ter_set( point( i, j ), t_fungus ); - } - } - } - square( m, t_fungus, SEEX - 2, SEEY - 2, SEEX + 2, SEEY + 2 ); - m->add_spawn( mon_fungaloid_queen, 1, point( 12, 12 ) ); -} - -void mapgen_fungal_tower( mapgendata &dat ) -{ - map *const m = &dat.m; - for( int i = 0; i < SEEX * 2; i++ ) { - for( int j = 0; j < SEEY * 2; j++ ) { - if( one_in( 8 ) ) { - if( one_in( 3 ) ) { - m->ter_set( point( i, j ), t_tree_fungal ); - } else { - m->ter_set( point( i, j ), t_tree_fungal_young ); - } - - } else if( one_in( 10 ) ) { - m->ter_set( point( i, j ), t_fungus_mound ); - } else { - m->ter_set( point( i, j ), t_fungus ); - } - } - } - square( m, t_fungus, SEEX - 2, SEEY - 2, SEEX + 2, SEEY + 2 ); - m->add_spawn( mon_fungaloid_tower, 1, point( 12, 12 ) ); -} - -void mapgen_fungal_flowers( mapgendata &dat ) -{ - map *const m = &dat.m; - for( int i = 0; i < SEEX * 2; i++ ) { - for( int j = 0; j < SEEY * 2; j++ ) { - if( one_in( rl_dist( point( i, j ), point( 12, 12 ) ) * 6 ) ) { - m->ter_set( point( i, j ), t_fungus ); - m->furn_set( point( i, j ), f_flower_marloss ); - } else if( one_in( 10 ) ) { - if( one_in( 3 ) ) { - m->ter_set( point( i, j ), t_fungus_mound ); - } else { - m->ter_set( point( i, j ), t_tree_fungal_young ); - } - - } else if( one_in( 5 ) ) { - m->ter_set( point( i, j ), t_fungus ); - m->furn_set( point( i, j ), f_flower_fungal ); - } else if( one_in( 10 ) ) { - m->ter_set( point( i, j ), t_shrub_fungal ); - } else { - m->ter_set( point( i, j ), t_fungus ); - } - } - } - square( m, t_fungus, SEEX - 2, SEEY - 2, SEEX + 2, SEEY + 2 ); - m->add_spawn( mon_fungaloid_seeder, 1, point( 12, 12 ) ); -} - int terrain_type_to_nesw_array( oter_id terrain_type, bool array[4] ) { // count and mark which directions the road goes