stattr 0.0.7 → 0.1.0

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.
Files changed (2) hide show
  1. data/lib/stattr.rb +165 -78
  2. metadata +22 -42
data/lib/stattr.rb CHANGED
@@ -1,93 +1,180 @@
1
+ # Stattr includes some basic functions that could be used in a Tabletop RPG application
2
+ #
3
+ # @author Alex Jarvis
1
4
 
2
5
  module Stattr
3
- Normstats = ['STR', 'DEX', 'CHA', 'INT', 'WIS', 'CON']
4
-
5
- class Dice
6
+
7
+ # How many sides the most common die has - rewrite to fit your game.
8
+ #
9
+ DICE_SIDES = 6
10
+
11
+ # Represents a single instance of the result of a dice roll
12
+ #
13
+ class DiceRoll
14
+
15
+ # @attribute sides [Integer] The number of sides the dice in this roll have.
16
+ #
17
+ # @attribute count [Integer] The number of die being rolled.
18
+ #
6
19
  attr_accessor :sides, :count
7
- def initialize(sides=6, count=1)
20
+
21
+ # New instance of DiceRoll.
22
+ #
23
+ # @param [Integer] sides
24
+ #
25
+ # @param [Integer] count
26
+ #
27
+ # @return [Object] DiceRoll object
28
+ #
29
+ def initialize(sides=DICE_SIDES, count=1)
8
30
  @sides = sides
9
31
  @count = count
10
- end
11
-
12
- def self.roll(sides=6, count=1)
32
+ end #initialize
33
+
34
+ # Roll a new die.
35
+ #
36
+ # @param [Integer] sides
37
+ #
38
+ # @param [Integer] count
39
+ #
40
+ # @return [Object] DiceRoll object
41
+ #
42
+ def self.new_roll(sides = DICE_SIDES, count=1)
43
+ # make a new dice object, then roll it.
13
44
  new(sides, count).roll
14
- end
15
-
45
+ end #self.roll
46
+
47
+ # From 1 to count, that many [sides] sided die.
48
+ #
49
+ # @return [Integer] Gives each outcome to Roll.
50
+ #
16
51
  def rolls
17
52
  (1..count).map { |d| rand(sides) + 1 }
18
- end
19
-
53
+ end #rolls
54
+
55
+ # Adds the rolls from rolls together.
56
+ #
57
+ # @return [Integer] combined rolls
58
+ #
20
59
  def roll
21
60
  rolls.inject(0) { |total, d| total += d }
22
- end
23
- end
24
-
25
-
26
-
61
+ end #roll
62
+ end #DiceRoll
27
63
 
28
- #This iterates through the Stat list and turns each stat into a key. It then rolls 3 d6's to get the starting value for that stat.
29
- def statroll
30
- stathash = {}
31
- Normstats.each do |stat|
32
- stathash[stat] = modstat(Stattr::Dice.roll(6,3))
33
- end
34
- stathash
35
- end
64
+ # Represents the list of Statistics that a player has.
65
+ #
66
+ class StatList
36
67
 
68
+ # A list of all stats. Currently locked into D+D style stats.
69
+ #
70
+ attr_accessor :str, :dex, :cha, :con, :wis, :int
37
71
 
38
- #Classes
39
- # Extend these to increase the overall functionality of your app/game!
40
-
41
-
42
- class Statlist
43
- attr_accessor :str, :dex, :cha, :con, :wis, :int
44
- @@sides = 6
45
- @@dicenum = 3
46
- def initialize
47
- @str = modstat(Stattr::Dice.roll(@@sides, @@dicenum))
48
- @dex = modstat(Stattr::Dice.roll(@@sides, @@dicenum))
49
- @cha = modstat(Stattr::Dice.roll(@@sides, @@dicenum))
50
- @con = modstat(Stattr::Dice.roll(@@sides, @@dicenum))
51
- @wis = modstat(Stattr::Dice.roll(@@sides, @@dicenum))
52
- @int = modstat(Stattr::Dice.roll(@@sides, @@dicenum))
53
- end
54
- def modstat(r)
55
- modlist = []
56
- case r
57
- when 3
58
- modlist = [r, -4]
59
- when (4..5)
60
- modlist = [r, -3]
61
- when (6..7)
62
- modlist = [r, -2]
63
- when (8..9)
64
- modlist = [r, -1]
65
- when (10..11)
66
- modlist = [r, 0]
67
- when (12..13)
68
- modlist = [r, 1]
69
- when (14..15)
70
- modlist = [r, 2]
71
- when (16..17)
72
- modlist = [r, 3]
73
- when 18
74
- modlist = [r, 4]
75
- else
76
- puts "nothing"
77
- end
78
- modlist
79
- end
80
- end
81
-
82
- class Playerchar
83
- attr_accessor :stats, :name
84
-
85
- def initialize(name)
86
- @name = name
87
- @stats = Statlist.new
88
- end
89
- end
90
-
91
- end
72
+ # Create a new Statlist.
73
+ #
74
+ # @param [Array] str
75
+ #
76
+ # @param [Array] dex
77
+ #
78
+ # @param [Array] cha
79
+ #
80
+ # @param [Array] con
81
+ #
82
+ # @param [Array] wis
83
+ #
84
+ # @param [Array] int
85
+ #
86
+ def initialize(str=10, dex=10, cha=10, con=10, wis=10, int=10)
87
+ @str = modstat(str)
88
+ @dex = modstat(dex)
89
+ @cha = modstat(cha)
90
+ @con = modstat(con)
91
+ @wis = modstat(wis)
92
+ @int = modstat(int)
93
+ end #initialize
94
+
95
+ # Takes a given value of a stat and creates a D+D style modifier.
96
+ #
97
+ # @return [Array] modlist. [0] is the stat, [1] is the modifier.
98
+ #
99
+ def modstat(r)
100
+ modr = ((r-10)/2).to_int
101
+ modlist = [r, modr]
102
+ modlist
103
+ end #modstat
104
+ end #StatList
105
+
106
+ # CharacterSheet of a given PlayerCharacter.
107
+ #
108
+ class CharacterSheet
92
109
 
110
+ # @attribute stats [Object] A StatList object
111
+ #
112
+ # @attribute name [String] The Player Character's name
113
+ #
114
+ attr_accessor :stats, :name
93
115
 
116
+ # new instance of CharacterSheet
117
+ #
118
+ # @param [String] name
119
+ #
120
+ def initialize(name) # :notnew:
121
+ @name = name
122
+ # creates StatList object with '10' as a default for each.
123
+ @stats = StatList.new(10,10,10,10,10,10)
124
+ end #initialize
125
+
126
+ # This is how you roll a brand new random character.
127
+ #
128
+ # @param [String] name
129
+ #
130
+ # @return [Object] New Charactersheet
131
+ #
132
+ def self.roll_char(name)
133
+ char = CharacterSheet.new(name)
134
+ char.stats = StatList.new(
135
+ DiceRoll.new_roll(DICE_SIDES, 3),
136
+ DiceRoll.new_roll(DICE_SIDES, 3),
137
+ DiceRoll.new_roll(DICE_SIDES, 3),
138
+ DiceRoll.new_roll(DICE_SIDES, 3),
139
+ DiceRoll.new_roll(DICE_SIDES, 3),
140
+ DiceRoll.new_roll(DICE_SIDES, 3)
141
+ )
142
+ char
143
+ end # self.roll_char
144
+ end #CharacterSheet
145
+
146
+ # Player class represents a human, who may have multiple character sheets.
147
+ #
148
+ class Player
149
+
150
+ # @attribute fname [String] The First Name of the Player
151
+ #
152
+ # @attribute lname [String] The last Name of the Player
153
+ #
154
+ # @attribute characters [Array] An array containing Charactersheet objects
155
+ #
156
+ attr_accessor :fname, :lname, :characters
157
+
158
+ # Create new Player object
159
+ #
160
+ # @param [String] fname
161
+ #
162
+ # @param [String] lname
163
+ #
164
+ def initialize(fname, lname)
165
+ @fname = fname
166
+ @lname = lname
167
+ @characters = []
168
+ end #initialize
169
+
170
+ # Creates a new randomly generated character associated with Player
171
+ #
172
+ # @param [String] name
173
+ #
174
+ def new_char(name)
175
+ new_char = CharacterSheet.roll_char(name)
176
+ self.characters << new_char
177
+ end #roll_char
178
+ end #Player
179
+
180
+ end #Stattr
metadata CHANGED
@@ -1,67 +1,47 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: stattr
3
- version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 7
10
- version: 0.0.7
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Alex Jarvis
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-05-07 00:00:00 -04:00
19
- default_executable:
12
+ date: 2012-05-24 00:00:00.000000000 Z
20
13
  dependencies: []
21
-
22
- description: Stattr is a Gem that includes a number of useful functions for rolling dice in a game like Dungeons and Dragons.
14
+ description: Stattr is a Gem that includes a number of useful functions for rolling
15
+ dice in a game like Dungeons and Dragons.
23
16
  email: alxjrvs@gmail.com
24
17
  executables: []
25
-
26
18
  extensions: []
27
-
28
19
  extra_rdoc_files: []
29
-
30
- files:
20
+ files:
31
21
  - lib/stattr.rb
32
- has_rdoc: true
33
22
  homepage: https://github.com/alxjrvs/Stattr
34
23
  licenses: []
35
-
36
24
  post_install_message:
37
25
  rdoc_options: []
38
-
39
- require_paths:
26
+ require_paths:
40
27
  - lib
41
- required_ruby_version: !ruby/object:Gem::Requirement
28
+ required_ruby_version: !ruby/object:Gem::Requirement
42
29
  none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- hash: 3
47
- segments:
48
- - 0
49
- version: "0"
50
- required_rubygems_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
35
  none: false
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- hash: 3
56
- segments:
57
- - 0
58
- version: "0"
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
59
40
  requirements: []
60
-
61
41
  rubyforge_project:
62
- rubygems_version: 1.3.7
42
+ rubygems_version: 1.8.24
63
43
  signing_key:
64
44
  specification_version: 3
65
45
  summary: Stattr; Because rolling dice is hard.
66
46
  test_files: []
67
-
47
+ has_rdoc: