gemwarrior 0.3.2 → 0.3.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.
- checksums.yaml +4 -4
- data/gemwarrior.gemspec +35 -33
- data/lib/gemwarrior/defaults.rb +1 -1
- data/lib/gemwarrior/evaluator.rb +5 -5
- data/lib/gemwarrior/location.rb +24 -5
- data/lib/gemwarrior/player.rb +1 -1
- data/lib/gemwarrior/repl.rb +7 -5
- data/lib/gemwarrior/version.rb +1 -1
- data/lib/gemwarrior/wordlist.rb +84 -0
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47d78c5c7f253648b1a60c476360477a02c301ac
|
4
|
+
data.tar.gz: 3e3a6d4bf69a3d9e97326a5e9436233fc4211a09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37567688543f4b502781c1e8178269428031240afb4a9217b50e6f68c4475838a8b6b81c3f7365bbee5170aafc2f78d7c3986af6b7229137ffb267c99707808d
|
7
|
+
data.tar.gz: fc5d9729554cb7464e68e159c81e2cf288438949d43d20271d8ff9dc8086ec1d09be5a62a9a2baa43616d19e7f4ed1c6cbcf1bd3eab03249b327ed6399e50dfb
|
data/gemwarrior.gemspec
CHANGED
@@ -1,33 +1,35 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'gemwarrior/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = 'gemwarrior'
|
8
|
-
spec.version = Gemwarrior::VERSION
|
9
|
-
spec.platform = Gem::Platform::RUBY
|
10
|
-
spec.authors = ['Michael Chadwick']
|
11
|
-
spec.email = 'mike@codana.me'
|
12
|
-
spec.homepage = 'http://rubygems.org/gems/gemwarrior'
|
13
|
-
spec.summary = 'RPG as RubyGem'
|
14
|
-
spec.description = 'A fun role-playing game in the form of a RubyGem!'
|
15
|
-
|
16
|
-
spec.files = `git ls-files`.split("\n")
|
17
|
-
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
-
spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
19
|
-
spec.require_paths = ['lib']
|
20
|
-
spec.license = 'MIT'
|
21
|
-
|
22
|
-
spec.add_runtime_dependency 'os', '~> 0.9', '>= 0.9.6'
|
23
|
-
spec.add_runtime_dependency 'matrext', '~> 0.2'
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
spec.
|
29
|
-
|
30
|
-
spec.add_development_dependency '
|
31
|
-
spec.add_development_dependency '
|
32
|
-
spec.add_development_dependency '
|
33
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'gemwarrior/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'gemwarrior'
|
8
|
+
spec.version = Gemwarrior::VERSION
|
9
|
+
spec.platform = Gem::Platform::RUBY
|
10
|
+
spec.authors = ['Michael Chadwick']
|
11
|
+
spec.email = 'mike@codana.me'
|
12
|
+
spec.homepage = 'http://rubygems.org/gems/gemwarrior'
|
13
|
+
spec.summary = 'RPG as RubyGem'
|
14
|
+
spec.description = 'A fun role-playing game in the form of a RubyGem!'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split("\n")
|
17
|
+
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
spec.license = 'MIT'
|
21
|
+
|
22
|
+
spec.add_runtime_dependency 'os', '~> 0.9', '>= 0.9.6'
|
23
|
+
spec.add_runtime_dependency 'matrext', '~> 0.2'
|
24
|
+
spec.add_runtime_dependency 'http', '~> 0.8.10'
|
25
|
+
spec.add_runtime_dependency 'json', '~> 1.8.2'
|
26
|
+
|
27
|
+
#spec.add_runtime_dependency 'feep', '~> 0.0.9'
|
28
|
+
#spec.add_runtime_dependency 'wordnik', '~> 4.12'
|
29
|
+
|
30
|
+
spec.add_development_dependency 'pry-byebug', '~> 3.0'
|
31
|
+
spec.add_development_dependency 'bundler', '~> 1.8'
|
32
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
33
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
34
|
+
spec.add_development_dependency 'rubocop', '~> 0.29'
|
35
|
+
end
|
data/lib/gemwarrior/defaults.rb
CHANGED
@@ -70,7 +70,7 @@ module Gemwarrior
|
|
70
70
|
ITEM_DESC_FEATHER = 'Soft and tender, unlike the craven bird that probably shed it.'
|
71
71
|
ITEM_ID_GUN = 4
|
72
72
|
ITEM_NAME_GUN = 'gun'
|
73
|
-
ITEM_DESC_GUN = 'Pew pew goes this firearm you
|
73
|
+
ITEM_DESC_GUN = 'Pew pew goes this firearm, you suspect.'
|
74
74
|
end
|
75
75
|
|
76
76
|
module Locations
|
data/lib/gemwarrior/evaluator.rb
CHANGED
@@ -57,7 +57,7 @@ module Gemwarrior
|
|
57
57
|
return ERROR_COMMAND_INVALID
|
58
58
|
end
|
59
59
|
|
60
|
-
command = tokens.first
|
60
|
+
command = tokens.first.downcase
|
61
61
|
param = tokens[1]
|
62
62
|
|
63
63
|
case command
|
@@ -79,7 +79,7 @@ module Gemwarrior
|
|
79
79
|
world.player.rest
|
80
80
|
when 'look', 'l'
|
81
81
|
if param
|
82
|
-
world.player.cur_loc.
|
82
|
+
world.player.cur_loc.describe_entity(param)
|
83
83
|
else
|
84
84
|
world.player.cur_loc.describe
|
85
85
|
end
|
@@ -117,8 +117,8 @@ module Gemwarrior
|
|
117
117
|
list_commands
|
118
118
|
when 'quit', 'exit', 'q', 'x'
|
119
119
|
puts "You sure you want to quit? (y/n): "
|
120
|
-
response = gets.chomp
|
121
|
-
if (response.
|
120
|
+
response = gets.chomp.downcase
|
121
|
+
if (response.eql?("y") || response.eql?("yes"))
|
122
122
|
puts QUIT_MESSAGE
|
123
123
|
exit(0)
|
124
124
|
else
|
@@ -151,7 +151,7 @@ module Gemwarrior
|
|
151
151
|
def input_valid?(input)
|
152
152
|
tokens = input.split
|
153
153
|
commands_and_aliases = commands | aliases
|
154
|
-
if commands_and_aliases.include?(tokens.first)
|
154
|
+
if commands_and_aliases.include?(tokens.first.downcase)
|
155
155
|
if tokens.size.between?(1,2)
|
156
156
|
return true
|
157
157
|
end
|
data/lib/gemwarrior/location.rb
CHANGED
@@ -11,7 +11,7 @@ module Gemwarrior
|
|
11
11
|
|
12
12
|
## ERRORS
|
13
13
|
ERROR_LOCATION_ITEM_REMOVE_INVALID = 'That item cannot be removed as it doesn\'t exist here.'
|
14
|
-
|
14
|
+
ERROR_LOCATION_DESCRIBE_ENTITY_INVALID = 'You don\'t see that here.'
|
15
15
|
|
16
16
|
attr_accessor :id, :name, :description, :locs_connected, :danger_level,
|
17
17
|
:items, :monsters_available, :monsters_abounding, :checked_for_monsters
|
@@ -41,19 +41,28 @@ module Gemwarrior
|
|
41
41
|
unless list_monsters.nil?
|
42
42
|
desc_text << list_monsters
|
43
43
|
end
|
44
|
+
desc_text << list_paths
|
44
45
|
|
45
46
|
return desc_text
|
46
47
|
end
|
47
48
|
|
48
|
-
def
|
49
|
-
if items.map(&:name).include?(
|
49
|
+
def describe_entity(entity_name)
|
50
|
+
if items.map(&:name).include?(entity_name)
|
50
51
|
items.each do |i|
|
51
|
-
if i.name.eql?(
|
52
|
+
if i.name.eql?(entity_name)
|
52
53
|
return "#{i.description}"
|
53
54
|
end
|
54
55
|
end
|
56
|
+
elsif
|
57
|
+
if monsters_abounding.map(&:name).include?(entity_name)
|
58
|
+
monsters_abounding.each do |m|
|
59
|
+
if m.name.eql?(entity_name)
|
60
|
+
return "#{m.description}"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
55
64
|
else
|
56
|
-
|
65
|
+
ERROR_LOCATION_DESCRIBE_ENTITY_INVALID
|
57
66
|
end
|
58
67
|
end
|
59
68
|
|
@@ -83,6 +92,16 @@ module Gemwarrior
|
|
83
92
|
return "\n >> Monster(s) abound: #{monsters_abounding.map(&:name).join(', ')}" if monsters_abounding.length > 0
|
84
93
|
end
|
85
94
|
|
95
|
+
def list_paths
|
96
|
+
valid_paths = []
|
97
|
+
locs_connected.each do |key, value|
|
98
|
+
unless value.nil?
|
99
|
+
valid_paths.push(key.to_s)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
return "\n >> Paths: #{valid_paths.join(', ')}"
|
103
|
+
end
|
104
|
+
|
86
105
|
def has_monster?
|
87
106
|
found = false
|
88
107
|
unless danger_level.eql?(:none)
|
data/lib/gemwarrior/player.rb
CHANGED
@@ -122,7 +122,7 @@ module Gemwarrior
|
|
122
122
|
unless direction.nil?
|
123
123
|
if can_move?(direction)
|
124
124
|
new_loc_id = cur_loc.locs_connected[direction.to_sym]
|
125
|
-
cur_loc = loc_by_id(locations, new_loc_id)
|
125
|
+
self.cur_loc = loc_by_id(locations, new_loc_id)
|
126
126
|
print_traveling_text
|
127
127
|
cur_loc.checked_for_monsters = false
|
128
128
|
cur_loc.describe
|
data/lib/gemwarrior/repl.rb
CHANGED
@@ -6,11 +6,13 @@ require 'os'
|
|
6
6
|
|
7
7
|
require_relative 'version'
|
8
8
|
require_relative 'evaluator'
|
9
|
+
require_relative 'wordlist'
|
9
10
|
|
10
11
|
module Gemwarrior
|
11
12
|
class Repl
|
12
13
|
# CONSTANTS
|
13
14
|
## MESSAGES
|
15
|
+
QUIT_MESSAGE = 'Temporal flux detected. Shutting down...'
|
14
16
|
SPLASH_MESSAGE = 'Welcome to Gem Warrior, where randomized fortune is just as likely as mayhem.'
|
15
17
|
|
16
18
|
attr_accessor :world, :eval
|
@@ -56,11 +58,11 @@ module Gemwarrior
|
|
56
58
|
end
|
57
59
|
|
58
60
|
def print_fortune
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
puts "* Remember: #{
|
61
|
+
noun1_values = WordList.new('noun-plural')
|
62
|
+
noun2_values = WordList.new('noun-plural')
|
63
|
+
noun3_values = WordList.new('noun-plural')
|
64
|
+
|
65
|
+
puts "* Remember: #{noun1_values.get_random_value} and #{noun2_values.get_random_value} are the key to #{noun3_values.get_random_value} *\n\n"
|
64
66
|
end
|
65
67
|
|
66
68
|
def setup_screen(initialCommand = nil)
|
data/lib/gemwarrior/version.rb
CHANGED
@@ -0,0 +1,84 @@
|
|
1
|
+
# lib/gemwarrior/wordlist.rb
|
2
|
+
# List of words for flavor text, hopefully randomized from Wordnik
|
3
|
+
|
4
|
+
require 'http'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
module Gemwarrior
|
8
|
+
class WordList
|
9
|
+
STATIC_NOUN_VALUES = ["abutments", "asterisms", "bains", "blebs", "blowholes", "chapes", "civility", "crocuses", "dancers", "deniers", "diastoles", "dinges", "dualism", "ebullitions", "extremities", "fingering", "gabardines", "gullets", "knops", "nooks", "payments", "phaetons", "scalawags", "snickers", "specters", "splats", "squiggles", "thalamuses", "wallets", "xylophones"]
|
10
|
+
|
11
|
+
attr_accessor :type, :limit, :words, :error
|
12
|
+
|
13
|
+
def initialize(type, limit = 10)
|
14
|
+
self.type = type
|
15
|
+
self.limit = limit
|
16
|
+
self.words = populate_words(type, limit)
|
17
|
+
self.error = nil
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_random_value
|
21
|
+
words[rand(0..limit)]
|
22
|
+
end
|
23
|
+
|
24
|
+
def list_words
|
25
|
+
words.join(',')
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def populate_words(type, limit = 10)
|
31
|
+
url = 'http://api.wordnik.com:80/v4/words.json/randomWords'
|
32
|
+
api_key = ENV['WORDNIK_API_KEY']
|
33
|
+
|
34
|
+
case type
|
35
|
+
when 'noun', 'noun-plural', 'adjective', 'verb'
|
36
|
+
else
|
37
|
+
return get_static_values
|
38
|
+
end
|
39
|
+
|
40
|
+
json_return = HTTP.get(
|
41
|
+
url,
|
42
|
+
:params => {
|
43
|
+
:hasDictionaryDef => true,
|
44
|
+
:includePartOfSpeech => type,
|
45
|
+
:minCorpusCount => 1,
|
46
|
+
:maxCorpusCount => -1,
|
47
|
+
:minDictionaryCount => 1,
|
48
|
+
:maxDictionaryCount => -1,
|
49
|
+
:minLength => 5,
|
50
|
+
:maxLength => 12,
|
51
|
+
:sortBy => 'alpha',
|
52
|
+
:sortOrder => 'asc',
|
53
|
+
:limit => limit,
|
54
|
+
:api_key => api_key
|
55
|
+
}
|
56
|
+
)
|
57
|
+
|
58
|
+
json_data = JSON.parse(json_return.to_s)
|
59
|
+
|
60
|
+
if json_data.include?('type') && json_data.include?('message')
|
61
|
+
error = "wordnik #{json_data['type']}: #{json_data['message']}"
|
62
|
+
return get_static_values
|
63
|
+
else
|
64
|
+
word_list = []
|
65
|
+
json_data.map {|j| word_list.push(j['word'])}
|
66
|
+
if word_list.length > 0
|
67
|
+
return word_list
|
68
|
+
else
|
69
|
+
error = 'Empty array from Wordnik'
|
70
|
+
return get_static_values
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def get_static_values
|
76
|
+
static_values = []
|
77
|
+
0.upto(10) do
|
78
|
+
static_values.push(STATIC_NOUN_VALUES[rand(0..STATIC_NOUN_VALUES.length-1)])
|
79
|
+
end
|
80
|
+
return static_values
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemwarrior
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Chadwick
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: os
|
@@ -44,6 +44,34 @@ dependencies:
|
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0.2'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: http
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.8.10
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.8.10
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: json
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 1.8.2
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 1.8.2
|
47
75
|
- !ruby/object:Gem::Dependency
|
48
76
|
name: pry-byebug
|
49
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,6 +169,7 @@ files:
|
|
141
169
|
- lib/gemwarrior/player.rb
|
142
170
|
- lib/gemwarrior/repl.rb
|
143
171
|
- lib/gemwarrior/version.rb
|
172
|
+
- lib/gemwarrior/wordlist.rb
|
144
173
|
- lib/gemwarrior/world.rb
|
145
174
|
- spec/rubywarrior_spec.rb
|
146
175
|
- spec/spec_helper.rb
|