View Source Document

World.pm

# Copyright (c)2000-2013, Chris Pressey, Cat's Eye Technologies.
# All rights reserved.
# Distributed under a BSD-style license; see file LICENSE for more info.

### BUILT-IN REGIONS

$::wmap =
[
  ['Marshy Fields',  'Cynhyrdunum',      'Muddy Coast',    'Cod Waters',  'Deep Waters' ],
  ['Fetid Swamp',    'Dark Forest',      'Dry Badlands',   'Rocky Coast', 'Bakers Bay' ],
  ['Barren Expanse', 'Heatherwood',      'Vast Plains',    'Bakersport',  'Bakers Lookout'],
  ['Alkali Flats',   'Chapparal Fields', 'Wooded Steppes', 'Pfefferhorn', 'Rugged Edge'],
];

require "$::universe/Dungeons.pm";
require "$::universe/Cities.pm";

%::reg =
(
  %::dungeons,
  %::cities,
  'Dark Forest' => Region->new('name' => 'Dark Forest',
                    'sizex' => 60,
                    'sizey' => 60,
                    'supplement' => Supplement->new(
                                    'title' => 'Dark Forest',
                                    'media' => 'music/dark_forest',
                                    ),
                    'msg' => "Night falls as the sun sets, and it is now dark.",
                    'outside' => $::sc{dark},
                    # 'border' => $Terrain::dense_forest,
                    'ambient' => $Terrain::forest_floor,
                    'terraind' => Distribution->new(
                            0.002 => $Terrain::forest_floor->enc(
  Encounter->new('actors' => [ $Actor::grizzly_bear ],
                 'message' => 'You spot a grizzly bear!',
                 'bribeable' => {
                    'berry'         => 25,
                    'ripe berry'    => 15,
                    'spirit berry'  => 5,
                    'healing berry' => 2,
                 }),
),
                            0.003 => $Terrain::giant_beehive->to_new('Giant Beehive'),
                            0.006 => $Terrain::concealed_stash,
                            0.012 => $Terrain::freshwater_pool,
                            0.025 => $Terrain::ancient_ruins,
                            0.033 => $Terrain::grassy_flat,
                            0.050 => $Terrain::marsh,
                            0.010 => $Terrain::giant_bluewood,
                            0.020 => $Terrain::whipper_tree,
                            0.200 => $Terrain::clump_of_trees
                           ),
                    'itemd' => Distribution->new(
                            0.0001 => $Item::quarterstaff->make($Adj::wood)->cursed(1),
                            0.0001 => $Item::quarterstaff->make($Adj::wood)->crude,
                            0.0002 => $Item::cloak->make($Adj::fur),
                            0.0002 => $Item::shoes->make($Adj::fur),
                            0.0002 => $Item::gloves->make($Adj::fur),
                            0.0002 => $Item::hat->make($Adj::fur),
                            0.0005 => $Item::exploding_tangerine->bunch(2),
                            0.0005 => $Item::exploding_tangerine->bunch(3),
                            0.0005 => $Item::exploding_tangerine->bunch(4),
                            0.0010 => $Item::healing_berry->bunch(3),
                            0.0010 => $Item::healing_berry->bunch(4),
                            0.0010 => $Item::healing_berry->bunch(5),
                            0.0012 => $Item::spirit_berry->bunch(3),
                            0.0012 => $Item::spirit_berry->bunch(4),
                            0.0012 => $Item::spirit_berry->bunch(5),
                            0.0040 => $Item::tangerine->bunch(2),
                            0.0040 => $Item::tangerine->bunch(3),
                            0.0040 => $Item::tangerine->bunch(4),
                            0.0060 => $Item::berry->bunch(3),
                            0.0060 => $Item::berry->bunch(4),
                            0.0060 => $Item::berry->bunch(5)
                           ),
                    'monsterd' => Distribution->new(
                            0.0005 => $Actor::dryad,
                            0.0006 => $Actor::treant,
                            0.0007 => $Actor::wood_nymph,
                            0.0008 => $Actor::grizzly_bear,
                            0.0009 => $Actor::sylvan_snake,
                            0.0010 => $Actor::wood_sprite,
                            0.0020 => $Actor::blue_spider,
                            0.0025 => $Actor::juggler_snake,
                            0.0042 => $Actor::forest_cat,
                           ),
  ),
  'Heatherwood' => Region->new('name' => 'Heatherwood',
                    'sizex' => 60,
                    'sizey' => 60, 
                    'supplement' => Supplement->new(
                                    'title' => 'Heatherwood',
                                    'media' => 'music/heatherwood',
                                    ),
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::forest_floor,
                    'genpattern' => 'accretion',
                    'terraind' => Distribution->new(
                            0.050 => $Terrain::grassy_flat,
                            0.050 => $Terrain::marsh,
                            0.100 => $Terrain::gully,
                            0.250 => $Terrain::forest_floor,
                            0.250 => $Terrain::low_hillside,
                            0.250 => $Terrain::clump_of_trees
                           ),
                    'itemd' => Distribution->new(
                            0.0002 => $Item::cloak->make($Adj::fur),
                            0.0002 => $Item::boots->make($Adj::fur),
                            0.0002 => $Item::leggings->make($Adj::fur)->fine,
                            0.0002 => $Item::jacket->make($Adj::fur),
                            0.0002 => $Item::belt->make($Adj::fur),
                            0.0002 => $Item::bracers->make($Adj::fur),
                            0.0002 => $Item::gauntlets->make($Adj::fur),
                            0.0002 => $Item::helmet->make($Adj::wood),
                           ),
                    'monsterd' => Distribution->new(
                            0.0010 => $Actor::blue_spider,
                            0.0025 => $Actor::human->class('cleric',1),
                            0.0010 => $Actor::human->class('cleric',2),
                            0.0005 => $Actor::human->class('cleric',3),
                            0.0050 => $Actor::forest_cat,
                           ),
  ),
  'Vast Plains' => Region->new('name' => 'Vast Plains',
                    'sizex' => 60,
                    'sizey' => 60, 
                    'supplement' => Supplement->new(
                                    'title' => 'Vast Plains',
                                    'media' => 'music/vast_plains',
                                    ),
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::grassy_flat, # plains
                    'terraind' => Distribution->new(
                            0.002 => $Terrain::descending_staircase->to_new('Dwarkling Hideout'),
                            0.020 => $Terrain::dirt_road,
                            0.030 => $Terrain::gully,
                            0.030 => $Terrain::low_hillside,
                            0.040 => $Terrain::clump_of_trees,
                            0.040 => $Terrain::small_farmhouse,
                            0.090 => $Terrain::fallow_field,
                            0.160 => $Terrain::cultivated_field,
                            0.010 => $Terrain::low_hillside->enc(
  Encounter->new('actors' => [ $Actor::scutter_skunk,
                               $Actor::scutter_skunk,
                               $Actor::scutter_skunk,
                             ],
                 'message' => 'You spot a pack of scutter skunks!',
                )),
                           ),
                    'itemd' => Distribution->new(
                            # flowers, herbs
                            0.0001 => $Item::menhir->magicked(+1),
                            0.0002 => $Item::boulder->fine,
                            0.0012 => $Item::hot_pepper->bunch(2),
                            0.0025 => $Item::pepper->bunch(2),
                            0.0025 => $Item::cabbage,
                            0.0025 => $Item::calook_root,
                            0.0030 => $Item::menhir,
                            0.0035 => $Item::sprig_of_mint,
                            0.0040 => $Item::jumpgrass->bunch(2),
                            0.0040 => $Item::jumpgrass->bunch(3),
                            0.0040 => $Item::jumpgrass->bunch(4),
                            0.0007 => $Item::boulder,
                            0.0012 => $Item::rock,
                            0.0010 => $Item::rock->bunch(2),
                            0.0025 => $Item::stone->bunch(2),
                            0.0025 => $Item::stone->bunch(3),
                            0.0025 => $Item::stone->bunch(4),
                            0.0100 => $Item::clump_of_grass->bunch(2),
                            0.0100 => $Item::clump_of_grass->bunch(3),
                            0.0100 => $Item::clump_of_grass->bunch(4),
                           ),
                    'monsterd' => Distribution->new(
                            0.0006 => $Actor::human->class('farmer',12),
                            0.0007 => $Actor::plains_nymph,
                            0.0008 => $Actor::juggler_snake,
                            0.0009 => $Actor::elf->class('farmer',2),
                            0.0015 => $Actor::human->class('farmer',3),
                            0.0040 => $Actor::scutter_skunk,
                           ),
  ),
  'Fetid Swamp' => Region->new('name' => 'Fetid Swamp',
                    'sizex' => 60,
                    'sizey' => 60, 
                    'supplement' => Supplement->new(
                                    'title' => 'Fetid Swamp',
                                    'media' => 'music/fetid_swamp',
                                    ),
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::marsh,
                    'genpattern' => 'recursive',
                    'terraind' => Distribution->new(
                            # swampland
                            # quicksand
                            # wetland
                            # pond
                            # mudflat
                            # tall reeds
                            # tall grass
                            0.2 => $Terrain::gully,
                            0.1 => $Terrain::freshwater_pool,
                            0.05 => $Terrain::barren_expanse,
                            0.2 => $Terrain::clump_of_trees,
                           ),
                    'itemd' => Distribution->new(
                            # herbs, lilypads
                            0.0001 => $Item::anklet->make($Adj::garlic)->ofstat('constitution',+1),
                            0.0001 => $Item::bracelet->make($Adj::marble)->ofstat('dexterity',+1),
                            0.0010 => $Item::mushroom_of_swiftness,
                            0.0030 => $Item::rope->camoflaged($Actor::wetland_viper),
                            0.0080 => $Item::clove_of_garlic,
                            0.0150 => $Item::mundane_mushroom,
                            0.0500 => $Item::jumpgrass,
                           ),
                    'monsterd' => Distribution->new(
                            0.0005 => $Actor::demifaery->class('necromancer',21)->strategy('TalentFight'),
                            0.0010 => $Actor::dwarf->class('necromancer',5)->strategy('TalentFlee'),
                            0.0008 => $Actor::swamp_hag,
                            0.0016 => $Actor::wetland_viper,
#                            0.0002 => $Actor::dwarf->ghast,
#                            0.0002 => $Actor::ursati->ghoul,
#                            0.0003 => $Actor::human->zombie,
#                            0.0003 => $Actor::gnome->zombie,
#                            0.0003 => $Actor::elf->zombie,
# purple catfish
# brown eel
                            0.0018 => $Actor::green_alligator,
                            0.0022 => $Actor::pond_spider,
                            0.0028 => $Actor::shadow_owl,
                           ),
                    'unique' =>
                    [
                      $Terrain::descending_staircase->to_new('Grumchik Stronghold'),
                      $Terrain::descending_staircase->to_new('Grumchik Stronghold'),
                      $Terrain::descending_staircase->to_new('Grumchik Stronghold'),
                      $Terrain::descending_staircase->to_new('Grumchik Stronghold'),
                      $Terrain::descending_staircase->to_new('Grumchik Stronghold'),
                      $Terrain::descending_staircase->to_new('Grumchik Stronghold'),
                      $Actor::dwarkling->class('mage',5)->ghost,
                    ],
  ),
  'Rocky Coast' => Region->new('name' => 'Rocky Coast',
                    'sizex' => 60,
                    'sizey' => 60,
                    'music' => 'rocky_coast',
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::low_hillside,
                    'genpattern' => 'coastline',
                    'coast_dir' => 'N/S',
                    'coast_begin' => 0,
                    'coast_end' => 30,
                    'terraind' => Distribution->new(
                            0.300 => $Terrain::clump_of_trees,
                           ),
                    'terrgrade' => Distribution->new(
                            1.000 => $Terrain::ocean,
                           ),
                    'terrgradw' => Distribution->new(
                            0.150 => $Terrain::clump_of_trees,
                            0.100 => $Terrain::gully,
                            0.050 => $Terrain::grassy_flat,
                            0.010 => $Terrain::grassy_flat->enc(
  Encounter->new('actors' => [ $Actor::human->class('thief',4),
                               $Actor::human->class('thief',3),
                               $Actor::elf->class('thief',3),
                               $Actor::human->class('thief',2),
                               $Actor::gnome->class('thief',2),
                               $Actor::human->class('thief',2),
                               $Actor::human->class('thief',1),
                               $Actor::dwarf->class('thief',1),
                               $Actor::gnome->class('thief',1),
                               $Actor::elf->class('thief',1),
                               $Actor::human->class('thief',1),
                             ],
                 'message' => 'You spot a large band of thieves!',
                 'bribeable' => {
                    'coin'          => 2000,
                    'gold coin'     => 200,
                    'silver coin'   => 800,
                 })),
                           ),
                    'itemd' => Distribution->new(
                            0.0012 => $Item::helmet->make($Adj::bronze),
                           ),
                    'monsterd' => Distribution->new(
                            0.0010 => $Actor::human->class('bard',2),
                            0.0010 => $Actor::elf->class('thief',2),
                            0.0010 => $Actor::gnome->class('cleric',2),
                            0.0010 => $Actor::dwarf->class('soldier',2),
                            0.0010 => $Actor::demifaery->class('mage',2),
                            0.0010 => $Actor::ursati->class('ranger',2),
                           ),
  ),
  'Alkali Flats' => Region->new('name' => 'Alkali Flats',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::alkali_flat,
                    'genpattern' => 'accretion',
                    'terraind' => Distribution->new(
                            0.100 => $Terrain::hardpan,
                            0.100 => $Terrain::barren_field,
                            0.180 => $Terrain::sandy_expanse,
                            0.050 => $Terrain::sand_dune,
                            0.050 => $Terrain::gully,
                            0.030 => $Terrain::low_hillside,
                            0.030 => $Terrain::clump_of_trees,
                           ),
                    'itemd' => Distribution->new(
                            0.0012 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.0020 => $Actor::blue_spider,
                           ),
  ),
  'Marshy Fields' => Region->new('name' => 'Marshy Fields',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::grassy_flat,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::clump_of_trees,
                            0.300 => $Terrain::marsh,
                            0.070 => $Terrain::gully,
                            0.080 => $Terrain::low_hillside,
                           ),
                    'itemd' => Distribution->new(
                            0.0012 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.0020 => $Actor::blue_spider,
                           ),
  ),
  'Barren Expanse' => Region->new('name' => 'Barren Expanse',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::barren_field,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::rocky_steppes,
                            0.070 => $Terrain::gully,
                            0.080 => $Terrain::low_hillside,
                           ),
                    'itemd' => Distribution->new(
                            0.0012 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.0020 => $Actor::blue_spider,
                           ),
  ),
  'Chapparal Fields' => Region->new('name' => 'Chapparal Fields',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::forest_floor,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::clump_of_trees
                           ),
                    'itemd' => Distribution->new(
                            0.0012 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.0020 => $Actor::blue_spider,   # lotsa nomads!!!
                           ),
  ),
  'Muddy Coast' => Region->new('name' => 'Muddy Coast',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::forest_floor,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::clump_of_trees
                           ),
                    'itemd' => Distribution->new(
                            0.0012 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.0020 => $Actor::blue_spider,
                           ),
  # should be coastline E/W
  ),
  'Dry Badlands' => Region->new('name' => 'Dry Badlands',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::forest_floor,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::clump_of_trees
                           ),
                    'itemd' => Distribution->new(
                            0.0012 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.0020 => $Actor::blue_spider,
                           ),
  ),
  'Wooded Steppes' => Region->new('name' => 'Wooded Steppes',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::forest_floor,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::clump_of_trees
                           ),
                    'itemd' => Distribution->new(
                            0.0012 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.0020 => $Actor::blue_spider,
                           ),
  ),
  'Pfefferhorn' => Region->new('name' => 'Pfefferhorn',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::forest_floor,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::clump_of_trees
                           ),
                    'itemd' => Distribution->new(
                            0.0012 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.0020 => $Actor::blue_spider,
                           ),
  ),
  'Bakers Lookout' => Region->new('name' => 'Bakers Lookout',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::forest_floor,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::clump_of_trees
                           ),
                    'itemd' => Distribution->new(
                            0.0012 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.0020 => $Actor::blue_spider,
                           ),
  ),
  'Rugged Edge' => Region->new('name' => 'Rugged Edge',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::forest_floor,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::clump_of_trees
                           ),
                    'itemd' => Distribution->new(
                            0.0012 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.0020 => $Actor::blue_spider,
                           ),
  # should be coastline e/w
  ),
  'Bakers Bay' => Region->new('name' => 'Bakers Bay',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::ocean,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::freshwater_pool
                           ),
                    'itemd' => Distribution->new(
                            0.000 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.000 => $Actor::blue_spider,
                           ),
  ),
  'Deep Waters' => Region->new('name' => 'Deep Waters',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::ocean,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::freshwater_pool
                           ),
                    'itemd' => Distribution->new(
                            0.000 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.000 => $Actor::blue_spider,
                           ),
  ),
  'Cod Waters' => Region->new('name' => 'Cod Waters',
                    'sizex' => 60,
                    'sizey' => 60,
                    'outside' => $::sc{dark},
                    'ambient' => $Terrain::ocean,
                    'terraind' => Distribution->new(
                            0.230 => $Terrain::freshwater_pool
                           ),
                    'itemd' => Distribution->new(
                            0.000 => $Item::hat->make($Adj::fur),
                           ),
                    'monsterd' => Distribution->new(
                            0.000 => $Actor::blue_spider,
                           ),
  ),


);

1;