greyhawkweather 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestGreyhawkweather < Test::Unit::TestCase
4
+
5
+ def setup
6
+ end
7
+
8
+ def test_truth
9
+ assert true
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ require 'stringio'
2
+ require 'test/unit'
3
+ require File.dirname(__FILE__) + '/../lib/greyhawkweather'
@@ -0,0 +1,36 @@
1
+ require 'test/unit'
2
+
3
+ require 'rollers/riggedroller'
4
+
5
+ require 'month'
6
+
7
+ class TestMonth < Test::Unit::TestCase
8
+
9
+ def setup
10
+ @null_temp_range = TemperatureRange.new(0, [0, 0], [0, 0])
11
+ @null_sky_conditions = SkyConditions.new((0..0), (0..0), (0..0))
12
+ end
13
+
14
+ def test_uses_sky_condition_data_to_determine_current_conditions
15
+ month = Month.new(@null_temp_range, SkyConditions.new((0..34), (35..65), (66..100)))
16
+ assert_equal(:clear, month.sky_conditions(RiggedRoller.new(25)))
17
+ assert_equal(:partly_cloudy, month.sky_conditions(RiggedRoller.new(50)))
18
+ assert_equal(:cloudy, month.sky_conditions(RiggedRoller.new(75)))
19
+ end
20
+
21
+ def test_uses_temp_range_data_to_determine_current_conditions
22
+ month = Month.new(TemperatureRange.new(10, [8, 2], [20, 5]), @null_sky_conditions)
23
+ assert_equal((0..17), month.temp_range(RiggedRoller.new(5)))
24
+ end
25
+
26
+ def test_handles_record_high
27
+ month = Month.new(TemperatureRange.new(10, [8, 2], [20, 5]), @null_sky_conditions)
28
+ assert_equal((14..23), month.temp_range(RiggedRoller.new(1), :high))
29
+ end
30
+
31
+ def test_determines_precipitation
32
+ month = Month.new(@null_temp_range, @null_sky_conditions, 50)
33
+ assert_equal(true, month.has_precipitation(RiggedRoller.new(10)))
34
+ assert_equal(false, month.has_precipitation(RiggedRoller.new(70)))
35
+ end
36
+ end
@@ -0,0 +1,26 @@
1
+ require 'test/unit'
2
+
3
+ require 'precipitationinfo'
4
+ require 'precipitation'
5
+
6
+ require 'rollers/riggedroller'
7
+
8
+ class TestPrecipitation < Test::Unit::TestCase
9
+ def test_has_rainbow
10
+ precip = Precipitation.new(PrecipitationInfo.create_from_data({ :name => "foo", :chance_of_rainbow => 30}),
11
+ RiggedRoller.new(10))
12
+ assert_equal(true, precip.rainbow?)
13
+ end
14
+
15
+ def test_no_rainbow
16
+ precip = Precipitation.new(PrecipitationInfo.create_from_data({ :name => "foo", :chance_of_rainbow => 30}),
17
+ RiggedRoller.new(40))
18
+ assert_equal(false, precip.rainbow?)
19
+ end
20
+
21
+ def test_no_rainbow_if_no_chance_of_it
22
+ precip = Precipitation.new(PrecipitationInfo.create_from_data({ :name => "foo", :chance_of_rainbow => 0}),
23
+ RiggedRoller.new(0))
24
+ assert_equal(false, precip.rainbow?)
25
+ end
26
+ end
@@ -0,0 +1,93 @@
1
+ require 'test/unit'
2
+
3
+ require 'rollers/riggedroller'
4
+
5
+ require 'precipitationoccurance'
6
+ require 'precipitationinfo'
7
+
8
+ class TestPrecipitationOccurance < Test::Unit::TestCase
9
+ def test_returns_array_of_precipitation
10
+ precip_occur = PrecipitationOccurance.new({ (0..20) => create_precip_info({ :name => :light_snowstorm}),
11
+ (21..100) => create_precip_info({ :name => :light_rainstorm})})
12
+ assert_instance_of(Array, precip_occur.type(RiggedRoller.new(13)))
13
+ assert_instance_of(Precipitation, precip_occur.type(RiggedRoller.new(13))[0])
14
+ end
15
+
16
+ def test_determines_precipitation
17
+ precip_occur = PrecipitationOccurance.new({ (0..20) => create_precip_info({ :name => :light_snowstorm}),
18
+ (21..100) => create_precip_info({ :name => :light_rainstorm})})
19
+ assert_equal(:light_snowstorm, precip_occur.type(RiggedRoller.new(13))[0].name)
20
+ assert_equal(:light_rainstorm, precip_occur.type(RiggedRoller.new(57))[0].name)
21
+ end
22
+
23
+ def test_load_from_file
24
+ precip_occur = PrecipitationOccurance.load("data/precipitationoccurance.yml")
25
+ assert_equal("Sleetstorm", precip_occur.type(RiggedRoller.new(22))[0].name)
26
+ end
27
+
28
+ def test_default_value_is_null_precipitation
29
+ precip_occur = PrecipitationOccurance.new()
30
+ assert_equal(NullPrecipitationInfo.new().name, precip_occur.type(RiggedRoller.new(13))[0].name)
31
+ end
32
+
33
+ def test_checks_for_and_computes_continuing_precipitation
34
+ precip_occur = PrecipitationOccurance.new({ (0..20) => create_precip_info({ :name => :light_snowstorm, :chance_to_continue => 10}),
35
+ (21..100) => create_precip_info({ :name => :light_rainstorm, :chance_to_continue => 10})})
36
+ assert_equal([:light_rainstorm, :light_snowstorm, :light_rainstorm, :light_rainstorm],
37
+ precip_occur.type(RiggedRoller.new(35, 5, 1, 5, 10, 5, 5, 100)).map{ |p| p.name })
38
+ end
39
+
40
+ def test_no_reroll_if_temp_range_is_ok
41
+ precip_occur = PrecipitationOccurance.new({ (0..20) => create_precip_info({ :name => :cold, :min_temp => 0}),
42
+ (21..100) => create_precip_info({ :name => :warm, :min_temp => 30})})
43
+ assert_equal([:warm], precip_occur.type(RiggedRoller.new(35, 10), 40..50).map{ |p| p.name })
44
+ end
45
+
46
+ def test_reroll_if_temp_is_too_low
47
+ precip_occur = PrecipitationOccurance.new({ (0..20) => create_precip_info({ :name => :cold, :min_temp => 0}),
48
+ (21..100) => create_precip_info({ :name => :warm, :min_temp => 30})})
49
+ assert_equal(:cold, precip_occur.type(RiggedRoller.new(35, 10), 10..20)[0].name)
50
+ end
51
+
52
+ def test_reroll_if_temp_is_too_high
53
+ precip_occur = PrecipitationOccurance.new({ (0..20) => create_precip_info({ :name => :cold, :max_temp => 30}),
54
+ (21..100) => create_precip_info({ :name => :warm, :max_temp => 50})})
55
+ assert_equal(:warm, precip_occur.type(RiggedRoller.new(10, 35), 40..60)[0].name)
56
+ end
57
+
58
+ def test_rerolls_once_only_for_bad_weather
59
+ precip_occur = PrecipitationOccurance.new({ (0..20) => create_precip_info({ :name => :cold, :max_temp => 30})})
60
+ assert_equal(Precipitation.new(NullPrecipitationInfo.new(), nil).name,
61
+ precip_occur.type(RiggedRoller.new(10, 10), 60..70)[0].name)
62
+ end
63
+
64
+ def test_checks_temp_ranges_for_continuing_weather
65
+ precip_occur = PrecipitationOccurance.new({ (0..20) => create_precip_info({ :name => :cold,
66
+ :chance_to_continue => 10,
67
+ :max_temp => 20}),
68
+ (21..100) => create_precip_info({ :name => :hot,
69
+ :chance_to_continue => 10,
70
+ :min_temp => 40})})
71
+ assert_equal([:hot, :hot],
72
+ precip_occur.type(RiggedRoller.new(35, 5, 1, 20), 30..50).map{ |p| p.name })
73
+ end
74
+
75
+ def test_checks_terrain_for_precipitation
76
+ precip_occur = PrecipitationOccurance.new({ (0..20) => create_precip_info({ :name => :not, :not_allowed_in => [:desert]})})
77
+ assert_equal(NullPrecipitationInfo.new().name, precip_occur.type(RiggedRoller.new(10), nil, :desert).first.name)
78
+ end
79
+
80
+ def test_checks_terrain_for_continuin_weather
81
+ precip_occur = PrecipitationOccurance.new({ (0..20) => create_precip_info({ :name => :cold,
82
+ :chance_to_continue => 10,
83
+ :not_allowed_in => [:desert]}),
84
+ (21..100) => create_precip_info({ :name => :hot,
85
+ :chance_to_continue => 10 })})
86
+ assert_equal(:hot, precip_occur.type(RiggedRoller.new(35, 5, 1, 20), nil, :desert)[1].name)
87
+ end
88
+
89
+ private
90
+ def create_precip_info(hash)
91
+ PrecipitationInfo.create_from_data(hash)
92
+ end
93
+ end
@@ -0,0 +1,61 @@
1
+ require 'test/unit'
2
+
3
+ require 'singledayweather'
4
+ require 'month'
5
+
6
+ require 'rollers/avgroller'
7
+ require 'rollers/riggedroller'
8
+
9
+ class TestWeather < Test::Unit::TestCase
10
+ def test_temp_range_is_calcuated_by_appropriate_die_rolls
11
+ assert_equal(5..24, SingleDayWeather.new(create_month, AvgRoller.new).temperature_range)
12
+ end
13
+
14
+ def test_determines_sky_conditions
15
+ assert_equal(:partly_cloudy, SingleDayWeather.new(create_month, AvgRoller.new).sky_conditions)
16
+ assert_equal(:clear, SingleDayWeather.new(create_month, RiggedRoller.new(14)).sky_conditions)
17
+ end
18
+
19
+ def test_determines_precipitation
20
+ assert_equal("precip",
21
+ SingleDayWeather.new(create_month, RiggedRoller.new(10),
22
+ PrecipitationOccurance.new({ 0..100 => PrecipitationInfo.new("precip")})).
23
+ precipitation[0].name)
24
+ assert_equal(NullPrecipitationInfo.new().name,
25
+ SingleDayWeather.new(create_month, RiggedRoller.new(70),
26
+ PrecipitationOccurance.new({ 0..100 => PrecipitationInfo.new("precip")})).
27
+ precipitation[0].name)
28
+ end
29
+
30
+ def test_deals_with_record_highs
31
+ assert_equal(24..36, SingleDayWeather.new(create_month, RiggedRoller.new(1),
32
+ PrecipitationOccurance.new(),
33
+ :high).temperature_range)
34
+ end
35
+
36
+ def test_determines_wind
37
+ assert_equal("9SE", SingleDayWeather.new(create_month, AvgRoller.new).wind.to_s)
38
+ end
39
+
40
+ def test_checks_for_temp_ranges_on_weather
41
+ assert_equal(NullPrecipitationInfo.new().name,
42
+ SingleDayWeather.new(create_month, RiggedRoller.new(10),
43
+ PrecipitationOccurance.new({ 0..100 => PrecipitationInfo.create_from_data({ :name => "precip",
44
+ :min_temp => 100})})).
45
+ precipitation[0].name)
46
+ end
47
+
48
+ def test_checks_for_terrain_on_precipitation
49
+ assert_equal(NullPrecipitationInfo.new().name,
50
+ SingleDayWeather.new(create_month, RiggedRoller.new(10),
51
+ PrecipitationOccurance.new({ 0..100 =>
52
+ PrecipitationInfo.create_from_data({ :name => "precip",
53
+ :not_allowed_in => [:desert]})}), nil, :desert).
54
+ precipitation[0].name)
55
+ end
56
+
57
+ private
58
+ def create_month
59
+ Month.new(TemperatureRange.new(13, [10,6], [8,4]), SkyConditions.new((01..23), (24..50), (51..100)), 50)
60
+ end
61
+ end
@@ -0,0 +1,23 @@
1
+ require 'test/unit'
2
+
3
+ require 'rollers/riggedroller'
4
+
5
+ require 'skyconditions'
6
+
7
+ class TestSkyConditions < Test::Unit::TestCase
8
+ def test_pick_from_ranges
9
+ conditions = SkyConditions.new((01..23), (24..50), (51..100))
10
+ assert_equal(:clear, conditions.condition(RiggedRoller.new(01)))
11
+ assert_equal(:clear, conditions.condition(RiggedRoller.new(23)))
12
+ assert_equal(:partly_cloudy, conditions.condition(RiggedRoller.new(24)))
13
+ assert_equal(:partly_cloudy, conditions.condition(RiggedRoller.new(50)))
14
+ assert_equal(:cloudy, conditions.condition(RiggedRoller.new(51)))
15
+ assert_equal(:cloudy, conditions.condition(RiggedRoller.new(99)))
16
+ assert_equal(:cloudy, conditions.condition(RiggedRoller.new(100)))
17
+ end
18
+
19
+ def test_zero_equals_hundred
20
+ conditions = SkyConditions.new((01..23), (24..50), (51..100))
21
+ assert_equal(:cloudy, conditions.condition(RiggedRoller.new(0)))
22
+ end
23
+ end
@@ -0,0 +1,30 @@
1
+ require 'test/unit'
2
+
3
+ require 'rollers/avgroller'
4
+
5
+ require 'temperaturerange'
6
+
7
+ class TestTemperaratureRange < Test::Unit::TestCase
8
+ def test_uses_die_roller_for_range_construction
9
+ temp = TemperatureRange.new(10, [8, 4], [10, 4])
10
+ assert_equal((1..18), temp.range(AvgRoller.new))
11
+ end
12
+
13
+ def test_handles_record_high
14
+ temp = TemperatureRange.new(10, [8, 2], [8, 2])
15
+ assert_equal(14..26, temp.range(AvgRoller.new, :high))
16
+ assert_equal(24..36, temp.range(AvgRoller.new, [:high,:high]))
17
+ end
18
+
19
+ def test_handles_record_low
20
+ temp = TemperatureRange.new(10, [8, 2], [8, 2])
21
+ assert_equal(-6..6, temp.range(AvgRoller.new, :low))
22
+ assert_equal(-16..-4, temp.range(AvgRoller.new, [:low,:low]))
23
+ end
24
+
25
+ def test_handles_mix_of_records
26
+ temp = TemperatureRange.new(10, [8, 2], [8, 2])
27
+ assert_equal(4..16, temp.range(AvgRoller.new, [:high,:low]))
28
+ assert_equal(14..26, temp.range(AvgRoller.new, [:high,:low,:high]))
29
+ end
30
+ end
@@ -0,0 +1,59 @@
1
+ require 'test/unit'
2
+
3
+ require 'WeatherGenerator'
4
+ require 'BaselineData'
5
+
6
+ require 'rollers/avgroller'
7
+ require 'rollers/riggedroller'
8
+
9
+ class TestBaselineData < BaselineData
10
+ def initialize (all_data)
11
+ @all_data = all_data
12
+ end
13
+ end
14
+
15
+ class TestWeatherGenerator < Test::Unit::TestCase
16
+ def setup
17
+ @testbaseline = TestBaselineData.new [{ :temp_range => TemperatureRange.new(10, [4, 0], [4, 0]),
18
+ :sky_conditions => { :clear => (0..0), :partly => (0..0), :cloudy => (0..0) },
19
+ :precipitation_chance => 40 },
20
+ { :temp_range => TemperatureRange.new(100, [4, 0], [4, 0]),
21
+ :sky_conditions => { :clear => (0..0), :partly => (0..0), :cloudy => (0..0) },
22
+ :precipitation_chance => 70 }]
23
+ @testprecipchart = PrecipitationOccurance.new({ 0..25 => PrecipitationInfo.create_from_data({ :name => "Rain", :not_allowed_in => [:desert]}),
24
+ 26..50 => PrecipitationInfo.create_from_data({ :name => "Snow"}),
25
+ 51..75 => PrecipitationInfo.create_from_data({ :name => "Hail"}),
26
+ 76..100 => PrecipitationInfo.create_from_data({ :name => "Smog"})})
27
+ end
28
+
29
+ def test_generator_creates_num_days_of_weather
30
+ generator = WeatherGenerator.new @testbaseline, @testprecipchart, 1, 1, AvgRoller.new
31
+ assert_equal(1, generator.days.length, "Should have only generated 1 day of weeather")
32
+
33
+ generator = WeatherGenerator.new @testbaseline, @testprecipchart, 1, 13, AvgRoller.new
34
+ assert_equal(13, generator.days.length, "Should have generated 13 day of weeather")
35
+ end
36
+
37
+ def test_generated_days_cross_month_boundaries
38
+ generator = WeatherGenerator.new @testbaseline, @testprecipchart, 1, 31, RiggedRoller.new(1)
39
+ unique_ranges = generator.days.collect{ |d| d.temperature_range}.uniq
40
+ assert_equal(2, unique_ranges.length, "Not all ranges should be the same")
41
+ assert_equal(28, generator.days.select{ |d| d.temperature_range.begin < 50 }.length, "should have 28 items from the first month")
42
+ assert_equal(3, generator.days.select{ |d| d.temperature_range.begin > 50 }.length, "Should have 3 items from the first month")
43
+ end
44
+
45
+ def test_months_wrap_around_if_past_end_of_year
46
+ generator = WeatherGenerator.new @testbaseline, @testprecipchart, 2, 29, RiggedRoller.new(1)
47
+ assert_equal(true, generator.days.last.temperature_range.begin < 50, "Last one should be first month")
48
+ end
49
+
50
+ def test_checks_for_record_high_low
51
+ generator = WeatherGenerator.new @testbaseline, @testprecipchart, 1, 1, RiggedRoller.new(1)
52
+ assert_equal(-3..-1, generator.days.first.temperature_range, "Extreme record low")
53
+ end
54
+
55
+ def test_uses_terrain_for_precipitation_check
56
+ generator = WeatherGenerator.new @testbaseline, @testprecipchart, 1, 1, RiggedRoller.new(1), :desert
57
+ assert_equal(NullPrecipitationInfo.new.name, generator.days.first.precipitation.first.name)
58
+ end
59
+ end
data/test/test_wind.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'test/unit'
2
+
3
+ require 'rollers/avgroller'
4
+
5
+ require 'wind'
6
+
7
+ class TestWind < Test::Unit::TestCase
8
+ def test_default_wind_calculation
9
+ assert_equal("9SE", Wind.new(AvgRoller.new).to_s)
10
+ end
11
+ end
data/todo.org ADDED
@@ -0,0 +1,48 @@
1
+ * Release #1
2
+ Minimum features needed to let me use the tool in my own game
3
+ ** DONE determine base temp given the month
4
+ ** DONE calc date's temp range given date
5
+ ** DONE Need a good way to store/define the baseline data - hardcoded in the baselinedata file is ugly!
6
+ ** DONE add a readme file to make github happy.
7
+ ** DONE get weather for multiple days
8
+ ** DONE remove current 'day' parameter
9
+ ** DONE add numdays parameter
10
+ ** DONE get weather from beginning of month for that many days
11
+ ** DONE handle getting number of days overlapping with another month
12
+ ** DONE need to calc current weather condition (sunny/partly-cloudy/cloudy)
13
+ ** DONE determine if there is precip for a date
14
+ ** DONE add to baseline and add acceptance test.
15
+ ** DONE determine if there is record high/low
16
+ ** DONE wind speed / direction
17
+ ** DONE determine what sort of precip it is
18
+ *** DONE just baseline data of precip
19
+ *** DONE refactor to have array of precip
20
+ *** DONE refactor to have null precip
21
+ *** DONE new Precipitation class seprate from PrecipitationInfo. New class embodies the actual precipitation
22
+ *** DONE determine continuing precip
23
+ *** DONE determine rainbow
24
+ ** DONE standardize output like my sheets
25
+ ** DONE check for requirements on precip
26
+ *** DONE temp range
27
+ *** DONE terrain
28
+ ** need to calc diff in base temp caused by latitude
29
+ ** duration of record high/low
30
+
31
+ ** determine windspeed from precipitation
32
+
33
+ * fix infinite loop in weather generation (probaly only a problem in tests)
34
+ * need to calc diff in sun-rise/-set time caused by longitude
35
+ * need to calc diff in base temp caused by altitude
36
+ * phase of moons for date
37
+ * sunrise/sunset times for date
38
+ * modify weather given terrain
39
+ * interpret special precipitation (based upon terrain)
40
+ * report wind chill temp
41
+ * report high wind effect table
42
+ * report affects of precip (duration etc.)
43
+ * humidity
44
+ * arbitrary start day
45
+ * greyhawk calendar festivals
46
+ * DONE rearrange code a bit (helper classes in subdirectories etc.)
47
+ * precipitation occurance chart should not be publically a ranged hash?
48
+ * ranged hash sorting is bad stuff (and not yet complete!)
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,210 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: greyhawkweather
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
11
+ platform: ruby
12
+ authors:
13
+ - Mark Simpson
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain:
17
+ - |
18
+ -----BEGIN CERTIFICATE-----
19
+ MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMRMwEQYDVQQDDAp2ZXJk
20
+ YW1tZWx0MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
21
+ b20wHhcNMTAxMjI5MjAxNjI3WhcNMTExMjI5MjAxNjI3WjBBMRMwEQYDVQQDDAp2
22
+ ZXJkYW1tZWx0MRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
23
+ FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQQsRTtwd0rN0X
24
+ ffw6plu3tUBiGXpRGWOlIZq6xjyAjjvmwMWnmwU5juNBlPJZzYiMmCIC821s3fgb
25
+ TM69f/cgqeevyI/h4Soxl2Le8NVGSeyvaZSNM8s1n9EQ5kN7VogYD0DbB4kHlfCM
26
+ JgD72juXiAKXnsXH8NvcBXCkoPiq7CjDJCmrqilTu1atELmP5RJ/Vm+Nt2odVDF5
27
+ t2x2ANmLVOZn59BTvHNXYbwrCIs82W4SwOSF4wL/I5ElH7dzr8PZN1yNBZPHtxpe
28
+ +4eTt6c4+DSP+rCOjLxBQxGPemY54zVawVtg4LjE/oOaAri99hz1Nl+PLgXg+oEP
29
+ veV2pcnDAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
30
+ BBTJ6wHlTv0Ievjg5o1zGil1w639SjANBgkqhkiG9w0BAQUFAAOCAQEAfXKfM9vA
31
+ u1ukuGjhd4mej3Daw8bnaX2URwy5/4ogP5+9rK+WTni5UpS09ksvN/I/PWnfwNWE
32
+ kzV0tl0DvQMpz+obpw02pt1uEzAHyPOYDGrgRweVaJbvrH2G3xAkSBwfkaDlzSrk
33
+ KomP5Nct1Nnkmg0mAAGjvS/ib3GbEANt8qSP6hfn6vEXMUnhnCmo69dbdqDwVDOJ
34
+ FVV9Kd1o7T8NmmDdn+G26uPPAX5EeJtyB1rV6pSPkQW99opIKcz6iEPNkAtVniwM
35
+ AM5LT+EO74YD568fpYjJUw+T4/TsPJBWyU/f21QoaRXI+x3VNSEqDZEf67Lsp2Ew
36
+ rPnJW2hNpPLFrA==
37
+ -----END CERTIFICATE-----
38
+
39
+ date: 2010-12-29 00:00:00 -05:00
40
+ default_executable:
41
+ dependencies:
42
+ - !ruby/object:Gem::Dependency
43
+ name: rangehash
44
+ prerelease: false
45
+ requirement: &id001 !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ hash: 29
51
+ segments:
52
+ - 0
53
+ - 0
54
+ - 1
55
+ version: 0.0.1
56
+ type: :runtime
57
+ version_requirements: *id001
58
+ - !ruby/object:Gem::Dependency
59
+ name: rubyforge
60
+ prerelease: false
61
+ requirement: &id002 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ hash: 7
67
+ segments:
68
+ - 2
69
+ - 0
70
+ - 4
71
+ version: 2.0.4
72
+ type: :development
73
+ version_requirements: *id002
74
+ - !ruby/object:Gem::Dependency
75
+ name: gemcutter
76
+ prerelease: false
77
+ requirement: &id003 !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ hash: 5
83
+ segments:
84
+ - 0
85
+ - 6
86
+ - 1
87
+ version: 0.6.1
88
+ type: :development
89
+ version_requirements: *id003
90
+ - !ruby/object:Gem::Dependency
91
+ name: hoe
92
+ prerelease: false
93
+ requirement: &id004 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ hash: 27
99
+ segments:
100
+ - 2
101
+ - 5
102
+ - 0
103
+ version: 2.5.0
104
+ type: :development
105
+ version_requirements: *id004
106
+ description: |-
107
+ This program will assist in the generation of randomized weather for
108
+ the Greyhawk AD&D Campaign setting. It uses data from the Greyhawk
109
+ Boxed set (circa 1983) for AD&D 1e.
110
+
111
+ The todo.org file lists the "stories" for this project in prioritzed
112
+ order. If a story is marked DONE then it is in theory working.
113
+ email:
114
+ - verdammelt@gmail.com
115
+ executables:
116
+ - greyweathergen
117
+ extensions: []
118
+
119
+ extra_rdoc_files:
120
+ - History.txt
121
+ - Manifest.txt
122
+ - PostInstall.txt
123
+ files:
124
+ - History.txt
125
+ - Manifest.txt
126
+ - PostInstall.txt
127
+ - README.rdoc
128
+ - Rakefile
129
+ - bin/greyweathergen
130
+ - data/baselinedata.yml
131
+ - data/precipitationoccurance.yml
132
+ - lib/baselinedata.rb
133
+ - lib/greyhawkweather.rb
134
+ - lib/greyhawkweathergenerator.rb
135
+ - lib/month.rb
136
+ - lib/precipitation.rb
137
+ - lib/precipitationinfo.rb
138
+ - lib/precipitationoccurance.rb
139
+ - lib/singledayweather.rb
140
+ - lib/skyconditions.rb
141
+ - lib/temperaturerange.rb
142
+ - lib/util/dieroller.rb
143
+ - lib/weathergenerator.rb
144
+ - lib/wind.rb
145
+ - script/console
146
+ - script/destroy
147
+ - script/generate
148
+ - test/rollers/avgroller.rb
149
+ - test/rollers/riggedroller.rb
150
+ - test/test_acceptance.rb
151
+ - test/test_dieroller.rb
152
+ - test/test_greyhawkweather.rb
153
+ - test/test_helper.rb
154
+ - test/test_month.rb
155
+ - test/test_precipitation.rb
156
+ - test/test_precipitation_occurance.rb
157
+ - test/test_singledayweather.rb
158
+ - test/test_sky_conditions.rb
159
+ - test/test_temperature_range.rb
160
+ - test/test_weather_generator.rb
161
+ - test/test_wind.rb
162
+ - todo.org
163
+ has_rdoc: true
164
+ homepage: http://github.com/verdammelt/Greyhawk-Weather
165
+ licenses: []
166
+
167
+ post_install_message: PostInstall.txt
168
+ rdoc_options:
169
+ - --main
170
+ - README.rdoc
171
+ require_paths:
172
+ - lib
173
+ required_ruby_version: !ruby/object:Gem::Requirement
174
+ none: false
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ hash: 3
179
+ segments:
180
+ - 0
181
+ version: "0"
182
+ required_rubygems_version: !ruby/object:Gem::Requirement
183
+ none: false
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ hash: 3
188
+ segments:
189
+ - 0
190
+ version: "0"
191
+ requirements: []
192
+
193
+ rubyforge_project: greyhawkweather
194
+ rubygems_version: 1.3.7
195
+ signing_key:
196
+ specification_version: 3
197
+ summary: This program will assist in the generation of randomized weather for the Greyhawk AD&D Campaign setting
198
+ test_files:
199
+ - test/test_acceptance.rb
200
+ - test/test_dieroller.rb
201
+ - test/test_greyhawkweather.rb
202
+ - test/test_helper.rb
203
+ - test/test_month.rb
204
+ - test/test_precipitation.rb
205
+ - test/test_precipitation_occurance.rb
206
+ - test/test_singledayweather.rb
207
+ - test/test_sky_conditions.rb
208
+ - test/test_temperature_range.rb
209
+ - test/test_weather_generator.rb
210
+ - test/test_wind.rb