gemwarrior 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 47d78c5c7f253648b1a60c476360477a02c301ac
4
- data.tar.gz: 3e3a6d4bf69a3d9e97326a5e9436233fc4211a09
3
+ metadata.gz: 5f01219fe323d1a74d0205758b61084bbea01e4e
4
+ data.tar.gz: 1dc551158da4ddcb6737c7daa15c33e151eaf5a3
5
5
  SHA512:
6
- metadata.gz: 37567688543f4b502781c1e8178269428031240afb4a9217b50e6f68c4475838a8b6b81c3f7365bbee5170aafc2f78d7c3986af6b7229137ffb267c99707808d
7
- data.tar.gz: fc5d9729554cb7464e68e159c81e2cf288438949d43d20271d8ff9dc8086ec1d09be5a62a9a2baa43616d19e7f4ed1c6cbcf1bd3eab03249b327ed6399e50dfb
6
+ metadata.gz: 0099d78162db97ca70e0fc6760f103ee720667262a763c5a294d1c1fb505b2ac26827601673304c7eadb72674a1e2b28a0e5f0f0a1b4fdf77ca87aa22e962922
7
+ data.tar.gz: a9a84abd388aca04244c7afd9d558ac27ba460b4d2ba62505e12f1df3936791108e15d7f67aef06aaf9ebd1f6ec3dfa33a4a11bb870b4f4e5a1499e3ad74632c
data/README.md CHANGED
@@ -1,50 +1,55 @@
1
- ```
2
- /-+-+-+ +-+-+-+-+-+-+-\
3
- |G|E|M| |W|A|R|R|I|O|R|
4
- \-+-+-+ +-+-+-+-+-+-+-/
5
- ```
6
- <small>logo courtesy of [ascii generator](http://www.network-science.de/ascii/)</small>
7
-
8
- **Gem Warrior** is a text adventure that takes place in the land of **Jool**, where randomized fortune is just as likely as *mayhem*.
9
-
10
- You take up the mantle of **1.upto(rand(5..10)) {print rand(65..90).chr}**, a gifted young acolyte who has been tasked by the queen herself, **Ruby**, to venture off into the unknown to recapture a **Shiny Thing<sup>tm</sup>** that holds great power within its crystallized boundaries. Unfortunately, it was stolen recently by a crazed madperson named **Emerald**, bent on using its frightening power for **Evil**. You are **Good**, obviously, and the rightful caretaker of such power, but he will not give it up willingly, and has cursed all the creatures of the land into doing his bidding, which is largely tearing you limb from limb.
11
-
12
- Start in your poor, super lame cottage, where you live alone, subsisting off the sale of polished rocks you scavenge all day for in the neighboring caves. Once tasked with your quest, travel throughout the land of Jool, eventually reaching the sky tower that Emerald resides in with his stolen goods, laughing to himself, occasionally.
13
-
14
- As you travel you will discover sights and sounds of the land, all of which are new to you because you don't really get out much. Visit towns with merchants willing to trade coin for wares they bought off of other adventurers who didn't last the previous attempts at thwartion. Sleep in makeshift huts to regain your health and magic points (or the ground, if that's all that's available), which are conveniently located in your peripheral vision (i.e. the console window). Eventually, if you're skilled (and I actually code it in), you'll reach **Emerald's Sky Tower**, part him from his **ShinyThing<sup>tm</sup>**, and then do what is "right".
15
-
16
- ## How to Get to Jool
17
-
18
- 1. `gem install gemwarrior`
19
- 2. `gemwarrior`
20
-
21
- Run the two commands above and you'll be whisked away to Jool, ready to start or continue your quest to defeat Emerald and take back the coveted Shiny Thing(tm) that you will bring back to Queen Ruby (or will you...?).
22
-
23
- ## In Progress, Yanno
24
-
25
- This is in super-hyper-turbo-edition pre-pre-pre-alpha right now, but a working console prompt, some commands (type `h` for a list), and a few locations exist already. Each time you start the game a new hero will be created with a randomized name, but you can change that with `> change name`.
26
-
27
- `> c` - character check for visual identity
28
- `> i [object]` - check your inventory (or an individual item within)
29
- `> r` - take a load off
30
- `> l [object]` - look at current location and items
31
- `> t [object]` - take an item from a location
32
- `> g [direction]` - go in a direction, if possible
33
- `> w` - list all the locations available in the world
34
- `> m` - list all the monsters available in the world
35
- `> ch [attribute]` - change some things about yourself
36
- `> q` - quit this nonsense
37
-
38
- To come:
39
-
40
- * ~~Ability to move between locations!~~
41
- * More locations to move between!
42
- * Monsters!
43
- * Ability to fight those monsters!
44
- * ~~Items you can pick up!~~
45
- * Quests!
46
- * Towns!
47
- * Merchants!
48
- * Sound FX!
49
- * Music!
50
- * Epic Length (whereby "Epic" I mean "maybe 30 minutes"?)!
1
+ ```
2
+ /-+-+-+ +-+-+-+-+-+-+-\
3
+ |G|E|M| |W|A|R|R|I|O|R|
4
+ \-+-+-+ +-+-+-+-+-+-+-/
5
+ ```
6
+ <small>logo courtesy of [ascii generator](http://www.network-science.de/ascii/)</small>
7
+
8
+ [![Gem Version](https://badge.fury.io/rb/gemwarrior.svg)](http://badge.fury.io/rb/gemwarrior)
9
+
10
+ **Gem Warrior** is a text adventure that takes place in the land of **Jool**, where randomized fortune is just as likely as *mayhem*.
11
+
12
+ You take up the mantle of **1.upto(rand(5..10)) {print rand(65..90).chr}**, a gifted young acolyte who has been tasked by the queen herself, **Ruby**, to venture off into the unknown to recapture a **Shiny Thing<sup>tm</sup>** that holds great power within its crystallized boundaries. Unfortunately, it was stolen recently by a crazed madperson named **Emerald**, bent on using its frightening power for **Evil**. You are **Good**, obviously, and the rightful caretaker of such power, but he will not give it up willingly, and has cursed all the creatures of the land into doing his bidding, which is largely tearing you limb from limb.
13
+
14
+ Start in your poor, super lame cottage, where you live alone, subsisting off the sale of polished rocks you scavenge all day for in the neighboring caves. Once tasked with your quest, travel throughout the land of Jool, eventually reaching the sky tower that Emerald resides in with his stolen goods, laughing to himself, occasionally.
15
+
16
+ As you travel you will discover sights and sounds of the land, all of which are new to you because you don't really get out much. Visit towns with merchants willing to trade coin for wares they bought off of other adventurers who didn't last the previous attempts at thwartion. Sleep in makeshift huts to regain your health and magic points (or the ground, if that's all that's available), which are conveniently located in your peripheral vision (i.e. the console window). Eventually, if you're skilled (and I actually code it in), you'll reach **Emerald's Sky Tower**, part him from his **ShinyThing<sup>tm</sup>**, and then do what is "right".
17
+
18
+ ## How to Get to Jool
19
+
20
+ 1. `gem install gemwarrior`
21
+ 2. `gemwarrior`
22
+
23
+ Run the two commands above and you'll be whisked away to Jool, ready to start or continue your quest to defeat Emerald and take back the coveted Shiny Thing(tm) that you will bring back to Queen Ruby (or will you...?).
24
+
25
+ ## In Progress, Yanno
26
+
27
+ This is in super-hyper-turbo-edition pre-pre-pre-alpha right now, but a working console prompt, some commands (type `h` for a list), and a few locations exist already. Each time you start the game a new hero will be created with a randomized name, but you can change that with `> change name`.
28
+
29
+ `> c` - character check for visual identity
30
+ `> i [object]` - check your inventory (or an individual item within)
31
+ `> r` - take a load off (future: replenish stamina)
32
+ `> l [object]` - look at current location and its items and monsters
33
+ `> t [object]` - take an item from a location
34
+ `> e [object]` - equip an item in your inventory as a weapon
35
+ `> a [monster]` - attack a monster
36
+ `> g [direction]` - go in a direction, if possible
37
+ `> w` - list all the locations available in the world
38
+ `> m` - list all the monsters available in the world
39
+ `> ch [attribute]` - change some things about yourself
40
+ `> q` - quit this nonsense
41
+
42
+ To come:
43
+
44
+ * ~~Ability to move between locations!~~
45
+ * More locations to move between!
46
+ * ~~Monsters!~~
47
+ * ~~Ability to fight those monsters!~~
48
+ * Monsters to fight back!
49
+ * ~~Items you can pick up!~~
50
+ * Quests!
51
+ * Towns!
52
+ * Merchants!
53
+ * Sound FX!
54
+ * Music!
55
+ * Epic Length (whereby "Epic" I mean "maybe 30 minutes"?)!
@@ -4,100 +4,134 @@
4
4
  module Gemwarrior
5
5
  module Entities
6
6
  module Monsters
7
- MOB_ID_ALEXANDRAT = 0
8
- MOB_NAME_ALEXANDRAT = 'Alexandrat'
9
- MOB_DESC_ALEXANDRAT = 'Tiny, but fierce, color-changing rodent.'
10
- MOB_LEVEL_ALEXANDRAT = 1
7
+ MOB_ID_ALEXANDRAT = 0
8
+ MOB_NAME_ALEXANDRAT = 'alexandrat'
9
+ MOB_DESC_ALEXANDRAT = 'Tiny, but fierce, color-changing rodent.'
10
+ MOB_LEVEL_ALEXANDRAT = 1
11
+ MOB_DEXTERITY_ALEXANDRAT = 4
12
+ MOB_BATTLECRY_ALEXANDRAT = 'Bitey, bitey!'
11
13
 
12
- MOB_ID_AMBEROO = 1
13
- MOB_NAME_AMBEROO = 'Amberoo'
14
- MOB_DESC_AMBEROO = 'Fossilized and jumping around like an adorably dangerous threat from the past.'
15
- MOB_LEVEL_AMBEROO = 1
14
+ MOB_ID_AMBEROO = 1
15
+ MOB_NAME_AMBEROO = 'amberoo'
16
+ MOB_DESC_AMBEROO = 'Fossilized and jumping around like an adorably dangerous threat from the past.'
17
+ MOB_LEVEL_AMBEROO = 1
18
+ MOB_DEXTERITY_AMBEROO = 5
19
+ MOB_BATTLECRY_AMBEROO = 'I\'m hoppin\' mad!'
16
20
 
17
- MOB_ID_AMETHYSTLE = 2
18
- MOB_NAME_AMETHYSTLE = 'Amethystle'
19
- MOB_DESC_AMETHYSTLE = 'Sober and contemplative, it moves with purplish tentacles swaying in the breeze.'
20
- MOB_LEVEL_AMETHYSTLE = 2
21
+ MOB_ID_AMETHYSTLE = 2
22
+ MOB_NAME_AMETHYSTLE = 'amethystle'
23
+ MOB_DESC_AMETHYSTLE = 'Sober and contemplative, it moves with purplish tentacles swaying in the breeze.'
24
+ MOB_LEVEL_AMETHYSTLE = 2
25
+ MOB_DEXTERITY_AMETHYSTLE = 1
26
+ MOB_BATTLECRY_AMETHYSTLE = 'You\'ve found yourself in quite the thorny issue!'
21
27
 
22
- MOB_ID_AQUAMARINE = 3
23
- MOB_NAME_AQUAMARINE = 'Aquamarine'
24
- MOB_DESC_AQUAMARINE = 'It is but one of the few, the proud, the underwater.'
25
- MOB_LEVEL_AQUAMARINE = 3
28
+ MOB_ID_AQUAMARINE = 3
29
+ MOB_NAME_AQUAMARINE = 'aquamarine'
30
+ MOB_DESC_AQUAMARINE = 'It is but one of the few, the proud, the underwater.'
31
+ MOB_LEVEL_AQUAMARINE = 3
32
+ MOB_DEXTERITY_AQUAMARINE = 6
33
+ MOB_BATTLECRY_AQUAMARINE = 'Attention! You are about to get smashed!'
26
34
 
27
- MOB_ID_APATIGER = 4
28
- MOB_NAME_APATIGER = 'Apatiger'
29
- MOB_DESC_APATIGER = 'Apathetic about most everything as it lazes around, save for eating you.'
30
- MOB_LEVEL_APATIGER = 4
35
+ MOB_ID_APATIGER = 4
36
+ MOB_NAME_APATIGER = 'apatiger'
37
+ MOB_DESC_APATIGER = 'Apathetic about most everything as it lazes around, save for eating you.'
38
+ MOB_LEVEL_APATIGER = 4
39
+ MOB_DEXTERITY_APATIGER = 5
40
+ MOB_BATTLECRY_APATIGER = 'Gggggggggrrrrrrrrrrrrrrrrooooooooooowwwwwwwwwwwwlllllllll!'
31
41
 
32
- MOB_ID_BLOODSTORM = 5
33
- MOB_NAME_BLOODSTORM = 'Bloodstorm'
34
- MOB_DESC_BLOODSTORM = 'A literal swirling, maniacal vortex of human hemoglobin.'
35
- MOB_LEVEL_BLOODSTORM = 5
42
+ MOB_ID_BLOODSTORM = 5
43
+ MOB_NAME_BLOODSTORM = 'bloodstorm'
44
+ MOB_DESC_BLOODSTORM = 'A literal swirling, maniacal vortex of human hemoglobin.'
45
+ MOB_LEVEL_BLOODSTORM = 5
46
+ MOB_DEXTERITY_BLOODSTORM = 7
47
+ MOB_BATTLECRY_BLOODSTORM = '/swirls'
36
48
 
37
- MOB_ID_CITRINAGA = 6
38
- MOB_NAME_CITRINAGA = 'Citrinaga'
39
- MOB_DESC_CITRINAGA = 'Refreshing in its shiny, gleaming effectiveness at ending your life.'
40
- MOB_LEVEL_CITRINAGA = 4
49
+ MOB_ID_CITRINAGA = 6
50
+ MOB_NAME_CITRINAGA = 'citrinaga'
51
+ MOB_DESC_CITRINAGA = 'Refreshing in its shiny, gleaming effectiveness at ending your life.'
52
+ MOB_LEVEL_CITRINAGA = 4
53
+ MOB_DEXTERITY_CITRINAGA = 3
54
+ MOB_BATTLECRY_CITRINAGA = 'Slice and dice so nice!'
41
55
 
42
- MOB_ID_CORALIZ = 7
43
- MOB_NAME_CORALIZ = 'Coraliz'
44
- MOB_DESC_CORALIZ = 'Small blue lizard that slithers around, nipping at your ankles.'
45
- MOB_LEVEL_CORALIZ = 3
56
+ MOB_ID_CORALIZ = 7
57
+ MOB_NAME_CORALIZ = 'coraliz'
58
+ MOB_DESC_CORALIZ = 'Small blue lizard that slithers around, nipping at your ankles.'
59
+ MOB_LEVEL_CORALIZ = 3
60
+ MOB_DEXTERITY_CORALIZ = 6
61
+ MOB_BATTLECRY_CORALIZ = 'Where am I? You\'ll never guess!'
46
62
 
47
- MOB_ID_CUBICAT = 8
48
- MOB_NAME_CUBICAT = 'Cubicat'
49
- MOB_DESC_CUBICAT = 'Perfectly geometrically cubed feline, fresh from its woven enclosure, claws at the ready.'
50
- MOB_LEVEL_CUBICAT = 4
63
+ MOB_ID_CUBICAT = 8
64
+ MOB_NAME_CUBICAT = 'cubicat'
65
+ MOB_DESC_CUBICAT = 'Perfectly geometrically cubed feline, fresh from its woven enclosure, claws at the ready.'
66
+ MOB_LEVEL_CUBICAT = 4
67
+ MOB_DEXTERITY_CUBICAT = 6
68
+ MOB_BATTLECRY_CUBICAT = 'I don\'t really care, as long as you die!'
51
69
 
52
- MOB_ID_DIAMAN = 9
53
- MOB_NAME_DIAMAN = 'Diaman'
54
- MOB_DESC_DIAMAN = 'Crystalline structure in the form of a man, lumbering toward you, with outstretched, edged pincers.'
55
- MOB_LEVEL_DIAMAN = 6
70
+ MOB_ID_DIAMAN = 9
71
+ MOB_NAME_DIAMAN = 'diaman'
72
+ MOB_DESC_DIAMAN = 'Crystalline structure in the form of a man, lumbering toward you, with outstretched, edged pincers.'
73
+ MOB_LEVEL_DIAMAN = 6
74
+ MOB_DEXTERITY_DIAMAN = 10
75
+ MOB_BATTLECRY_DIAMAN = 'Precious human, prepare to be lost to the annals of time!'
56
76
  end
57
77
 
58
78
  module Items
59
- ITEM_ID_STONE = 0
60
- ITEM_NAME_STONE = 'stone'
61
- ITEM_DESC_STONE = 'A small, sharp mega pebble, suitable for tossing in amusement, and perhaps combat.'
62
- ITEM_ID_BED = 1
63
- ITEM_NAME_BED = 'bed'
64
- ITEM_DESC_BED = 'The place where you sleep when you\'re not adventuring.'
65
- ITEM_ID_STALACTITE = 2
66
- ITEM_NAME_STALACTITE = 'stalactite'
67
- ITEM_DESC_STALACTITE = 'Long protrusion of cave adornment, broken off and fallen to the ground, where the stalagmites sneer at it from.'
68
- ITEM_ID_FEATHER = 3
69
- ITEM_NAME_FEATHER = 'feather'
70
- ITEM_DESC_FEATHER = 'Soft and tender, unlike the craven bird that probably shed it.'
71
- ITEM_ID_GUN = 4
72
- ITEM_NAME_GUN = 'gun'
73
- ITEM_DESC_GUN = 'Pew pew goes this firearm, you suspect.'
79
+ ITEM_ID_STONE = 0
80
+ ITEM_NAME_STONE = 'stone'
81
+ ITEM_DESC_STONE = 'A small, sharp mega pebble, suitable for tossing in amusement, and perhaps combat.'
82
+ ITEM_ATK_LO_STONE = 1
83
+ ITEM_ATK_HI_STONE = 3
84
+
85
+ ITEM_ID_BED = 1
86
+ ITEM_NAME_BED = 'bed'
87
+ ITEM_DESC_BED = 'The place where you sleep when you\'re not adventuring.'
88
+ ITEM_ATK_LO_BED = nil
89
+ ITEM_ATK_HI_BED = nil
90
+
91
+ ITEM_ID_STALACTITE = 2
92
+ ITEM_NAME_STALACTITE = 'stalactite'
93
+ ITEM_DESC_STALACTITE = 'Long protrusion of cave adornment, broken off and fallen to the ground, where the stalagmites sneer at it from.'
94
+ ITEM_ATK_LO_STALACTITE = 1
95
+ ITEM_ATK_HI_STALACTITE = 3
96
+
97
+ ITEM_ID_FEATHER = 3
98
+ ITEM_NAME_FEATHER = 'feather'
99
+ ITEM_DESC_FEATHER = 'Soft and tender, unlike the craven bird that probably shed it.'
100
+ ITEM_ATK_LO_FEATHER = nil
101
+ ITEM_ATK_HI_FEATHER = nil
102
+
103
+ ITEM_ID_GUN = 4
104
+ ITEM_NAME_GUN = 'gun'
105
+ ITEM_DESC_GUN = 'Pew pew goes this firearm, you suspect.'
106
+ ITEM_ATK_LO_GUN = 3
107
+ ITEM_ATK_HI_GUN = 5
74
108
  end
75
109
 
76
110
  module Locations
77
- LOC_ID_HOME = 0
78
- LOC_NAME_HOME = 'Home'
79
- LOC_DESC_HOME = 'The little, unimportant, decrepit hut that you live in.'
80
- LOC_CONNECTIONS_HOME = {:north => 4, :east => 1, :south => nil, :west => 3}
111
+ LOC_ID_HOME = 0
112
+ LOC_NAME_HOME = 'Home'
113
+ LOC_DESC_HOME = 'The little, unimportant, decrepit hut that you live in.'
114
+ LOC_CONNECTIONS_HOME = {:north => 4, :east => 1, :south => nil, :west => 3}
81
115
 
82
- LOC_ID_CAVE_ENTRANCE = 1
83
- LOC_NAME_CAVE_ENTRANCE = 'Cave (Entrance)'
84
- LOC_DESC_CAVE_ENTRANCE = 'A nearby, dank cavern\'s entrance, surely filled with stacktites, stonemites, and rocksites.'
116
+ LOC_ID_CAVE_ENTRANCE = 1
117
+ LOC_NAME_CAVE_ENTRANCE = 'Cave (Entrance)'
118
+ LOC_DESC_CAVE_ENTRANCE = 'A nearby, dank cavern\'s entrance, surely filled with stacktites, stonemites, and rocksites.'
85
119
  LOC_CONNECTIONS_CAVE_ENTRANCE = {:north => nil, :east => 2, :south => nil, :west => 0}
86
120
 
87
- LOC_ID_CAVE_ROOM1 = 2
88
- LOC_NAME_CAVE_ROOM1 = 'Cave (Room1)'
89
- LOC_DESC_CAVE_ROOM1 = 'Now inside the first cavernous room, you confirm that there are stacktites, stonemites, rocksites, and even one or two pebblejites.'
90
- LOC_CONNECTIONS_CAVE_ROOM1 = {:north => nil, :east => nil, :south => nil, :west => 1}
121
+ LOC_ID_CAVE_ROOM1 = 2
122
+ LOC_NAME_CAVE_ROOM1 = 'Cave (Room1)'
123
+ LOC_DESC_CAVE_ROOM1 = 'Now inside the first cavernous room, you confirm that there are stacktites, stonemites, rocksites, and even one or two pebblejites.'
124
+ LOC_CONNECTIONS_CAVE_ROOM1 = {:north => nil, :east => nil, :south => nil, :west => 1}
91
125
 
92
- LOC_ID_FOREST = 3
93
- LOC_NAME_FOREST = 'Forest'
94
- LOC_DESC_FOREST = 'Trees exist here, in droves.'
95
- LOC_CONNECTIONS_FOREST = {:north => nil, :east => 0, :south => nil, :west => nil}
126
+ LOC_ID_FOREST = 3
127
+ LOC_NAME_FOREST = 'Forest'
128
+ LOC_DESC_FOREST = 'Trees exist here, in droves.'
129
+ LOC_CONNECTIONS_FOREST = {:north => nil, :east => 0, :south => nil, :west => nil}
96
130
 
97
- LOC_ID_SKYTOWER = 4
98
- LOC_NAME_SKYTOWER = 'Emerald\'s Sky Tower'
99
- LOC_DESC_SKYTOWER = 'The craziest guy that ever existed is around here somewhere amongst the cloud floors, snow walls, and ethereal vibe.'
100
- LOC_CONNECTIONS_SKYTOWER = {:north => nil, :east => nil, :south => 0, :west => nil}
131
+ LOC_ID_SKYTOWER = 4
132
+ LOC_NAME_SKYTOWER = 'Emerald\'s Sky Tower'
133
+ LOC_DESC_SKYTOWER = 'The craziest guy that ever existed is around here somewhere amongst the cloud floors, snow walls, and ethereal vibe.'
134
+ LOC_CONNECTIONS_SKYTOWER = {:north => nil, :east => nil, :south => 0, :west => nil}
101
135
  end
102
136
  end
103
137
  end
@@ -14,20 +14,23 @@ module Gemwarrior
14
14
  CHANGE_PARAMS = 'Options: name'
15
15
 
16
16
  ## ERRORS
17
- ERROR_COMMAND_INVALID = 'That\'s not something the game yet understands.'
18
- ERROR_LIST_PARAM_MISSING = 'You can\'t just "list". You gotta choose something to list.'
19
- ERROR_CHANGE_PARAM_MISSING = 'Ch-ch-changes...aren\'t happening because you didn\'t specify what to change.'
20
- ERROR_CHANGE_PARAM_INVALID = 'You can\'t change that...yet.'
21
- ERROR_GO_PARAM_MISSING = 'Just wander aimlessly? A direction would be nice.'
22
- ERROR_TAKE_PARAM_MISSING = 'You can\'t just "take". You gotta choose something to take.'
23
- ERROR_DROP_PARAM_MISSING = 'You can\'t just "drop". You gotta choose something to drop.'
17
+ ERROR_COMMAND_INVALID = 'That\'s not something the game yet understands.'
18
+ ERROR_LIST_PARAM_MISSING = 'You can\'t just "list". You gotta choose something to list.'
19
+ ERROR_CHANGE_PARAM_MISSING = 'Ch-ch-changes...aren\'t happening because you didn\'t specify what to change.'
20
+ ERROR_CHANGE_PARAM_INVALID = 'You can\'t change that...yet.'
21
+ ERROR_GO_PARAM_MISSING = 'Just wander aimlessly? A direction would be nice.'
22
+ ERROR_ATTACK_PARAM_MISSING = 'You can\'t just "attack". You gotta choose something to attack.'
23
+ ERROR_TAKE_PARAM_MISSING = 'You can\'t just "take". You gotta choose something to take.'
24
+ ERROR_DROP_PARAM_MISSING = 'You can\'t just "drop". You gotta choose something to drop.'
25
+ ERROR_EQUIP_PARAM_MISSING = 'You can\'t just "equip". You gotta choose something to equip.'
26
+ ERROR_UNEQUIP_PARAM_MISSING = 'You can\'t just "unequip". You gotta choose something to unequip.'
24
27
 
25
28
  attr_accessor :world, :commands, :aliases, :descriptions
26
29
 
27
30
  def initialize(world)
28
31
  self.world = world
29
- self.commands = %w(character inventory list rest look take drop go change help quit exit quit! exit!)
30
- self.aliases = %w(c i ls r l t d g ch h q x qq xx)
32
+ self.commands = %w(character inventory list rest look take drop equip unequip go attack change help quit exit quit! exit!)
33
+ self.aliases = %w(c i ls r l t d e ue g a ch h q x qq xx)
31
34
  self.descriptions = [
32
35
  'Display character information',
33
36
  'Look in your inventory',
@@ -36,7 +39,10 @@ module Gemwarrior
36
39
  'Look around your current location',
37
40
  'Take item',
38
41
  'Drop item',
42
+ 'Equip item',
43
+ 'Unequip item',
39
44
  'Go in a direction',
45
+ 'Attack a monster',
40
46
  'Change something',
41
47
  'This help menu',
42
48
  'Quit w/ confirmation',
@@ -95,12 +101,30 @@ module Gemwarrior
95
101
  else
96
102
  world.player.inventory.remove_item(param)
97
103
  end
104
+ when 'equip', 'e'
105
+ if param.nil?
106
+ ERROR_EQUIP_PARAM_MISSING
107
+ else
108
+ world.player.inventory.equip_item(param)
109
+ end
110
+ when 'unequip', 'ue'
111
+ if param.nil?
112
+ ERROR_UNEQUIP_PARAM_MISSING
113
+ else
114
+ world.player.inventory.unequip_item(param)
115
+ end
98
116
  when 'go', 'g'
99
117
  if param.nil?
100
118
  ERROR_GO_PARAM_MISSING
101
119
  else
102
120
  world.player.go(world.locations, param)
103
121
  end
122
+ when 'attack', 'a'
123
+ if param.nil?
124
+ ERROR_ATTACK_PARAM_MISSING
125
+ else
126
+ world.player.attack(param)
127
+ end
104
128
  when 'change', 'ch'
105
129
  if param.nil?
106
130
  puts ERROR_CHANGE_PARAM_MISSING
@@ -11,15 +11,19 @@ module Gemwarrior
11
11
  class Game
12
12
  # CONSTANTS
13
13
  ## PLAYER DEFAULTS
14
- PLYR_LEVEL_DEFAULT = 1
15
- PLYR_XP_DEFAULT = 0
16
- PLYR_HP_CUR_DEFAULT = 10
17
- PLYR_HP_MAX_DEFAULT = 10
18
- PLYR_STAM_CUR_DEFAULT = 20
19
- PLYR_STAM_MAX_DEFAULT = 20
20
- PLYR_ATK_LO_DEFAULT = 1
21
- PLYR_ATK_HI_DEFAULT = 2
22
- PLYR_ROX_DEFAULT = 0
14
+ PLYR_LEVEL_DEFAULT = 1
15
+ PLYR_XP_DEFAULT = 0
16
+ PLYR_HP_CUR_DEFAULT = 10
17
+ PLYR_HP_MAX_DEFAULT = 10
18
+ PLYR_STAM_CUR_DEFAULT = 20
19
+ PLYR_STAM_MAX_DEFAULT = 20
20
+ PLYR_ATK_LO_DEFAULT = 1
21
+ PLYR_ATK_HI_DEFAULT = 2
22
+ PLYR_DEFENSE_DEFAULT = 5
23
+ PLYR_DEXTERITY_DEFAULT = 5
24
+ PLYR_INVENTORY_DEFAULT = Inventory.new
25
+ PLYR_ROX_DEFAULT = 0
26
+ PLYR_CUR_LOC_ID_DEFAULT = 0
23
27
 
24
28
  attr_accessor :world, :eval, :repl
25
29
 
@@ -35,9 +39,11 @@ module Gemwarrior
35
39
  PLYR_STAM_MAX_DEFAULT,
36
40
  PLYR_ATK_LO_DEFAULT,
37
41
  PLYR_ATK_HI_DEFAULT,
38
- Inventory.new,
42
+ PLYR_DEFENSE_DEFAULT,
43
+ PLYR_DEXTERITY_DEFAULT,
44
+ PLYR_INVENTORY_DEFAULT,
39
45
  PLYR_ROX_DEFAULT,
40
- world.loc_by_id(0)
46
+ world.loc_by_id(PLYR_CUR_LOC_ID_DEFAULT)
41
47
  )
42
48
 
43
49
  # create the console
@@ -5,16 +5,21 @@ module Gemwarrior
5
5
  class Inventory
6
6
  # CONSTANTS
7
7
  ## ERRORS
8
- ERROR_INVENTORY_EMPTY = '...and find you currently have diddly-squat, which is nothing.'
9
- ERROR_ITEM_REMOVE_INVALID = 'Your inventory does not contain that item, so you can\'t drop it.'
10
- ERROR_ITEM_ADD_UNTAKEABLE = 'That would be great if you could take that thing, wouldn\'t it? Well, it\'s not so great for you right now.'
11
- ERROR_ITEM_ADD_INVALID = 'That item doesn\'t exist here.'
12
- ERROR_ITEM_DESCRIBE_INVALID = 'You don\'t possess that.'
8
+ ERROR_INVENTORY_EMPTY = '...and find you currently have diddly-squat, which is nothing.'
9
+ ERROR_ITEM_REMOVE_INVALID = 'Your inventory does not contain that item, so you can\'t drop it.'
10
+ ERROR_ITEM_ADD_UNTAKEABLE = 'That would be great if you could take that thing, wouldn\'t it? Well, it\'s not so great for you right now.'
11
+ ERROR_ITEM_ADD_INVALID = 'That item doesn\'t exist here.'
12
+ ERROR_ITEM_DESCRIBE_INVALID = 'You don\'t possess that.'
13
+ ERROR_ITEM_EQUIP_INVALID = 'You don\'t have anything called that to equip.'
14
+ ERROR_ITEM_EQUIP_NONWEAPON = 'That can\'t be equipped as a weapon.'
15
+ ERROR_ITEM_UNEQUIP_INVALID = 'You don\'t have anything called that to unequip.'
16
+ ERROR_ITEM_UNEQUIP_NONWEAPON = 'That can\'t be unequipped.'
13
17
 
14
- attr_accessor :inventory
18
+ attr_accessor :inventory, :weapon
15
19
 
16
- def initialize(inventory = [])
20
+ def initialize(inventory = [], weapon = nil)
17
21
  self.inventory = inventory
22
+ self.weapon = weapon
18
23
  end
19
24
 
20
25
  def list_contents
@@ -22,7 +27,7 @@ module Gemwarrior
22
27
  if inventory.empty?
23
28
  return contents_text << ERROR_INVENTORY_EMPTY
24
29
  else
25
- return contents_text << ": #{inventory.map(&:name).join ', '}"
30
+ return contents_text << ": #{inventory.map(&:name).join ', '}\n"
26
31
  end
27
32
  end
28
33
 
@@ -37,7 +42,43 @@ module Gemwarrior
37
42
  ERROR_ITEM_DESCRIBE_INVALID
38
43
  end
39
44
  end
40
-
45
+
46
+ def equip_item(item_name)
47
+ if inventory.map(&:name).include?(item_name)
48
+ inventory.each do |i|
49
+ if i.name.eql?(item_name)
50
+ if i.equippable
51
+ i.equipped = true
52
+ self.weapon = i
53
+ return "#{i.name} has been equipped"
54
+ else
55
+ ERROR_ITEM_EQUIP_NONWEAPON
56
+ end
57
+ end
58
+ end
59
+ else
60
+ ERROR_ITEM_EQUIP_INVALID
61
+ end
62
+ end
63
+
64
+ def unequip_item(item_name)
65
+ if inventory.map(&:name).include?(item_name)
66
+ inventory.each do |i|
67
+ if i.name.eql?(item_name)
68
+ if i.equippable
69
+ i.equipped = false
70
+ self.weapon = nil
71
+ return "#{i.name} has been unequipped"
72
+ else
73
+ ERROR_ITEM_UNEQUIP_NONWEAPON
74
+ end
75
+ end
76
+ end
77
+ else
78
+ ERROR_ITEM_UNEQUIP_INVALID
79
+ end
80
+ end
81
+
41
82
  def add_item(cur_loc, item_name)
42
83
  cur_loc.items.each do |i|
43
84
  if i.name.eql?(item_name)
@@ -3,22 +3,28 @@
3
3
 
4
4
  module Gemwarrior
5
5
  class Item
6
- attr_accessor :id, :name, :description, :takeable
6
+ attr_accessor :id, :name, :description,
7
+ :atk_lo, :atk_hi, :takeable, :equippable, :equipped
7
8
 
8
9
  def initialize(
9
10
  id,
10
11
  name,
11
12
  description,
12
- takeable
13
+ atk_lo,
14
+ atk_hi,
15
+ takeable,
16
+ equippable,
17
+ equipped = false
13
18
  )
14
19
  self.id = id
15
20
  self.name = name
16
21
  self.description = description
22
+ self.atk_lo = atk_lo
23
+ self.atk_hi = atk_hi
17
24
  self.takeable = takeable
25
+ self.equippable = equippable
26
+ self.equipped = equipped
18
27
  end
19
-
20
- def is_takeable?
21
- takeable
22
- end
28
+
23
29
  end
24
30
  end
@@ -74,10 +74,28 @@ module Gemwarrior
74
74
  end
75
75
  end
76
76
 
77
+ def remove_monster(name)
78
+ if has_monster_to_attack?(name)
79
+ monsters_abounding.reject! { |monster| monster.name == name }
80
+ end
81
+ end
82
+
77
83
  def has_loc_to_the?(direction)
78
84
  locs_connected[direction.to_sym]
79
85
  end
80
86
 
87
+ def has_monster_to_attack?(name)
88
+ monsters_abounding.map(&:name).include?(name.downcase)
89
+ end
90
+
91
+ def monster_by_name(name)
92
+ monsters_abounding.each do |m|
93
+ if m.name.eql?(name)
94
+ return m
95
+ end
96
+ end
97
+ end
98
+
81
99
  private
82
100
 
83
101
  def checked_for_monsters?
@@ -117,7 +135,7 @@ module Gemwarrior
117
135
  end
118
136
 
119
137
  def populate_monsters
120
- checked_for_monsters = true
138
+ self.checked_for_monsters = true
121
139
  if has_monster?
122
140
  self.monsters_abounding = []
123
141
  return monsters_abounding.push(monsters_available[rand(0..monsters_available.length-1)])
@@ -5,7 +5,7 @@ require_relative 'creature'
5
5
 
6
6
  module Gemwarrior
7
7
  class Monster < Creature
8
- attr_accessor :xp, :atk_hi, :atk_lo, :rox
8
+ attr_accessor :xp, :atk_hi, :atk_lo, :dexterity, :rox, :xp_to_give, :battlecry
9
9
 
10
10
  def initialize(
11
11
  id,
@@ -19,8 +19,11 @@ module Gemwarrior
19
19
  hp_max,
20
20
  atk_lo,
21
21
  atk_hi,
22
+ dexterity,
22
23
  inventory,
23
- rox
24
+ rox,
25
+ xp_to_give,
26
+ battlecry
24
27
  )
25
28
  self.id = id
26
29
  self.name = name
@@ -35,9 +38,17 @@ module Gemwarrior
35
38
 
36
39
  self.atk_lo = atk_lo
37
40
  self.atk_hi = atk_hi
41
+ self.dexterity = dexterity
38
42
 
39
43
  self.inventory = inventory
40
44
  self.rox = rox
45
+ self.xp_to_give = xp_to_give
46
+
47
+ self.battlecry = battlecry
48
+ end
49
+
50
+ def take_damage(dmg)
51
+ self.hp_cur = hp_cur.to_i - dmg.to_i
41
52
  end
42
53
 
43
54
  end
@@ -19,9 +19,12 @@ module Gemwarrior
19
19
  PLYR_DESC_DEFAULT = 'Picked to do battle against a wizened madman for a shiny something or other for world-saving purposes, you\'re actually fairly able, as long as you\'ve had breakfast first.'
20
20
 
21
21
  ## ERRORS
22
- ERROR_GO_PARAM_INVALID = 'The place in that direction is far, far, FAR too dangerous. You should try a different way.'
22
+ ERROR_GO_PARAM_INVALID = 'The place in that direction is far, far, FAR too dangerous. You should try a different way.'
23
+ ERROR_ATTACK_PARAM_INVALID = 'That monster doesn\'t exist here or can\'t be attacked.'
24
+ ERROR_ATTACK_OPTION_INVALID = 'That won\'t do anything against the monster.'
23
25
 
24
- attr_accessor :xp, :stam_cur, :stam_max, :atk_hi, :atk_lo, :rox, :cur_loc
26
+ attr_accessor :xp, :stam_cur, :stam_max, :atk_hi, :atk_lo,
27
+ :defense, :dexterity, :rox, :cur_loc
25
28
 
26
29
  def initialize(
27
30
  level,
@@ -32,6 +35,8 @@ module Gemwarrior
32
35
  stam_max,
33
36
  atk_lo,
34
37
  atk_hi,
38
+ defense,
39
+ dexterity,
35
40
  inventory,
36
41
  rox,
37
42
  cur_loc
@@ -48,7 +53,9 @@ module Gemwarrior
48
53
 
49
54
  self.atk_lo = atk_lo
50
55
  self.atk_hi = atk_hi
51
-
56
+ self.defense = defense
57
+ self.dexterity = dexterity
58
+
52
59
  self.inventory = inventory
53
60
  self.rox = rox
54
61
 
@@ -57,7 +64,25 @@ module Gemwarrior
57
64
 
58
65
  def check_self
59
66
  print_char_pic
60
- return "You check yourself. Currently breathing, wearing clothing, and with a few specific characteristics: face is #{@face}, hands are #{@hands}, and general mood is #{@mood}.\n"
67
+
68
+ cur_weapon_name = ''
69
+ if inventory.weapon.nil?
70
+ cur_weapon_name = '(unarmed)'
71
+ else
72
+ cur_weapon_name = inventory.weapon.name
73
+ self.atk_lo = inventory.weapon.atk_lo
74
+ self.atk_hi = inventory.weapon.atk_hi
75
+ end
76
+
77
+ self_text = "You check yourself. Currently breathing, wearing clothing, and with a few other specific characteristics: face is #{face}, hands are #{hands}, and general mood is #{mood}.\n\n"
78
+ self_text << "NAME: #{name}\n"
79
+ self_text << "WPN : #{cur_weapon_name}\n"
80
+ self_text << "LVL : #{level}\n"
81
+ self_text << "XP : #{xp}\n"
82
+ self_text << "ATK : #{atk_lo}-#{atk_hi}\n"
83
+ self_text << "DEF : #{defense}\n"
84
+ self_text << "DEX : #{dexterity}\n"
85
+
61
86
  end
62
87
 
63
88
  def rest
@@ -132,7 +157,102 @@ module Gemwarrior
132
157
  end
133
158
  end
134
159
 
160
+ def attack(monster_name)
161
+ if cur_loc.has_monster_to_attack?(monster_name)
162
+ puts "You decide to attack the #{monster_name}"
163
+ monster = cur_loc.monster_by_name(monster_name)
164
+ puts "#{monster.name} cries out: #{monster.battlecry}"
165
+
166
+ loop do
167
+ if (monster.hp_cur <= 0)
168
+ puts "You have defeated #{monster.name}!"
169
+ puts "You have received #{monster.xp_to_give} XP!"
170
+ puts "You have gained #{monster.rox} barterable rox!"
171
+ update_player_stats(monster)
172
+ cur_loc.remove_monster(monster.name)
173
+ return
174
+ elsif (hp_cur <= 0)
175
+ puts "You are dead, slain by the #{monster.name}!"
176
+ return
177
+ end
178
+
179
+ puts "\nYour options are 'fight', 'look', and 'run'."
180
+ puts "P :: #{hp_cur} HP\n"
181
+ puts "E :: #{monster.hp_cur} HP\n"
182
+
183
+ if ((monster.hp_cur.to_f / monster.hp_max.to_f) < 0.10)
184
+ puts "#{monster.name} is almost dead!\n"
185
+ end
186
+
187
+ puts 'What do you do?'
188
+ cmd = gets.chomp
189
+
190
+ case cmd
191
+ when 'fight', 'f'
192
+ puts "You attack #{monster.name}#{inventory.weapon}!"
193
+ dmg = calculate_mob_damage
194
+ if dmg > 0
195
+ puts "You wound it for #{dmg} point(s)!"
196
+ monster.take_damage(dmg)
197
+ else
198
+ puts "You miss entirely!"
199
+ end
200
+ when 'look', 'l'
201
+ puts "#{monster.name}: #{monster.description}"
202
+ puts "Its got some distinguishing features, too: face is #{monster.face}, hands are #{monster.hands}, and its general mood is #{monster.mood}."
203
+ when 'run', 'r'
204
+ escape = calculate_escape(monster)
205
+ if escape
206
+ monster.hp_cur = monster.hp_max
207
+ puts "You successfully elude #{monster.name}!"
208
+ return
209
+ else
210
+ puts "You were not able to run away! :-("
211
+ end
212
+ else
213
+ puts ERROR_ATTACK_OPTION_INVALID
214
+ end
215
+ end
216
+ else
217
+ ERROR_ATTACK_PARAM_INVALID
218
+ end
219
+ end
220
+
221
+ def cur_weapon_name
222
+ unless inventory.weapon.nil?
223
+ return " with your #{inventory.weapon.name}"
224
+ end
225
+ end
226
+
227
+ def calculate_mob_damage
228
+ miss = rand(0..100)
229
+ if (miss < 15)
230
+ 0
231
+ else
232
+ rand(atk_lo..atk_hi)
233
+ end
234
+ end
235
+
236
+ def calculate_escape(monster)
237
+ if (dexterity > monster.dexterity)
238
+ return true
239
+ else
240
+ dex_diff = monster.dexterity - dexterity
241
+ rand_dex = rand(0..dex_diff)
242
+ if rand_dex % 2 > 0
243
+ return true
244
+ else
245
+ return false
246
+ end
247
+ end
248
+ end
249
+
135
250
  private
251
+
252
+ def update_player_stats(monster)
253
+ self.xp = xp + monster.xp_to_give
254
+ self.rox = rox + monster.rox
255
+ end
136
256
 
137
257
  def print_traveling_text
138
258
  loc = Thread.new do
@@ -76,10 +76,11 @@ module Gemwarrior
76
76
  end
77
77
 
78
78
  def prompt
79
- prompt_template = "\n[LV:%3s][XP:%3s][HP:%3s|%-3s][STM:%2s|%-2s] -- [%s @ %s]"
79
+ prompt_template = "\n[LV:%3s][XP:%3s][ROX:%3s] -- [HP:%3s|%-3s][STM:%2s|%-2s] -- [%s @ %s]"
80
80
  prompt_vars_arr = [
81
81
  world.player.level,
82
82
  world.player.xp,
83
+ world.player.rox,
83
84
  world.player.hp_cur,
84
85
  world.player.hp_max,
85
86
  world.player.stam_cur,
@@ -2,5 +2,5 @@
2
2
  # Version of Gem Warrior
3
3
 
4
4
  module Gemwarrior
5
- VERSION = "0.3.3"
5
+ VERSION = "0.4.0"
6
6
  end
@@ -82,8 +82,11 @@ module Gemwarrior
82
82
  MOB_LEVEL_ALEXANDRAT * 5,
83
83
  MOB_LEVEL_ALEXANDRAT * 2,
84
84
  MOB_LEVEL_ALEXANDRAT * 2,
85
+ MOB_DEXTERITY_ALEXANDRAT,
85
86
  Inventory.new,
86
- rand(0..10)
87
+ rand(0..10),
88
+ MOB_LEVEL_ALEXANDRAT * rand(1..2),
89
+ MOB_BATTLECRY_ALEXANDRAT
87
90
  )
88
91
  )
89
92
  monsters.push(Monster.new(
@@ -98,8 +101,11 @@ module Gemwarrior
98
101
  MOB_LEVEL_AMBEROO * 5,
99
102
  MOB_LEVEL_AMBEROO * 2,
100
103
  MOB_LEVEL_AMBEROO * 2,
104
+ MOB_DEXTERITY_AMBEROO,
101
105
  Inventory.new,
102
- rand(0..10)
106
+ rand(0..10),
107
+ MOB_LEVEL_AMBEROO * rand(1..2),
108
+ MOB_BATTLECRY_AMBEROO
103
109
  )
104
110
  )
105
111
  monsters.push(Monster.new(
@@ -114,24 +120,11 @@ module Gemwarrior
114
120
  MOB_LEVEL_AMETHYSTLE * 5,
115
121
  MOB_LEVEL_AMETHYSTLE * 2,
116
122
  MOB_LEVEL_AMETHYSTLE * 2,
123
+ MOB_DEXTERITY_AMETHYSTLE,
117
124
  Inventory.new,
118
- rand(0..10)
119
- )
120
- )
121
- monsters.push(Monster.new(
122
- MOB_ID_AQUAMARINE,
123
- MOB_NAME_AQUAMARINE,
124
- MOB_DESC_AQUAMARINE,
125
- 'strained',
126
- 'hairy',
127
- 'tempered',
128
- MOB_LEVEL_AQUAMARINE,
129
- MOB_LEVEL_AQUAMARINE * 5,
130
- MOB_LEVEL_AQUAMARINE * 5,
131
- MOB_LEVEL_AQUAMARINE * 2,
132
- MOB_LEVEL_AQUAMARINE * 2,
133
- Inventory.new,
134
- rand(0..10)
125
+ rand(0..10),
126
+ MOB_LEVEL_AMETHYSTLE * rand(1..2),
127
+ MOB_BATTLECRY_AMETHYSTLE
135
128
  )
136
129
  )
137
130
  monsters.push(Monster.new(
@@ -146,8 +139,30 @@ module Gemwarrior
146
139
  MOB_LEVEL_APATIGER * 5,
147
140
  MOB_LEVEL_APATIGER * 2,
148
141
  MOB_LEVEL_APATIGER * 2,
142
+ MOB_DEXTERITY_APATIGER,
143
+ Inventory.new,
144
+ rand(0..10),
145
+ MOB_LEVEL_APATIGER * rand(1..2),
146
+ MOB_BATTLECRY_APATIGER
147
+ )
148
+ )
149
+ monsters.push(Monster.new(
150
+ MOB_ID_AQUAMARINE,
151
+ MOB_NAME_AQUAMARINE,
152
+ MOB_DESC_AQUAMARINE,
153
+ 'strained',
154
+ 'hairy',
155
+ 'tempered',
156
+ MOB_LEVEL_AQUAMARINE,
157
+ MOB_LEVEL_AQUAMARINE * 5,
158
+ MOB_LEVEL_AQUAMARINE * 5,
159
+ MOB_LEVEL_AQUAMARINE * 2,
160
+ MOB_LEVEL_AQUAMARINE * 2,
161
+ MOB_DEXTERITY_AQUAMARINE,
149
162
  Inventory.new,
150
- rand(0..10)
163
+ rand(0..10),
164
+ MOB_LEVEL_AQUAMARINE * rand(1..2),
165
+ MOB_BATTLECRY_AQUAMARINE
151
166
  )
152
167
  )
153
168
  monsters.push(Monster.new(
@@ -162,8 +177,11 @@ module Gemwarrior
162
177
  MOB_LEVEL_BLOODSTORM * 5,
163
178
  MOB_LEVEL_BLOODSTORM * 2,
164
179
  MOB_LEVEL_BLOODSTORM * 2,
180
+ MOB_DEXTERITY_BLOODSTORM,
165
181
  Inventory.new,
166
- rand(0..10)
182
+ rand(0..10),
183
+ MOB_LEVEL_BLOODSTORM * rand(2..3),
184
+ MOB_BATTLECRY_BLOODSTORM
167
185
  )
168
186
  )
169
187
  monsters.push(Monster.new(
@@ -178,8 +196,11 @@ module Gemwarrior
178
196
  MOB_LEVEL_CITRINAGA * 5,
179
197
  MOB_LEVEL_CITRINAGA * 2,
180
198
  MOB_LEVEL_CITRINAGA * 2,
199
+ MOB_DEXTERITY_CITRINAGA,
181
200
  Inventory.new,
182
- rand(0..10)
201
+ rand(0..10),
202
+ MOB_LEVEL_CITRINAGA * rand(2..3),
203
+ MOB_BATTLECRY_CITRINAGA
183
204
  )
184
205
  )
185
206
  monsters.push(Monster.new(
@@ -194,8 +215,11 @@ module Gemwarrior
194
215
  MOB_LEVEL_CORALIZ * 5,
195
216
  MOB_LEVEL_CORALIZ * 2,
196
217
  MOB_LEVEL_CORALIZ * 2,
218
+ MOB_DEXTERITY_CORALIZ,
197
219
  Inventory.new,
198
- rand(0..10)
220
+ rand(0..10),
221
+ MOB_LEVEL_CORALIZ * rand(2..3),
222
+ MOB_BATTLECRY_CORALIZ
199
223
  )
200
224
  )
201
225
  monsters.push(Monster.new(
@@ -210,8 +234,11 @@ module Gemwarrior
210
234
  MOB_LEVEL_CUBICAT * 5,
211
235
  MOB_LEVEL_CUBICAT * 2,
212
236
  MOB_LEVEL_CUBICAT * 2,
237
+ MOB_DEXTERITY_CUBICAT,
213
238
  Inventory.new,
214
- rand(0..10)
239
+ rand(0..10),
240
+ MOB_LEVEL_CUBICAT * rand(3..4),
241
+ MOB_BATTLECRY_CUBICAT
215
242
  )
216
243
  )
217
244
  monsters.push(Monster.new(
@@ -226,8 +253,11 @@ module Gemwarrior
226
253
  MOB_LEVEL_DIAMAN * 5,
227
254
  MOB_LEVEL_DIAMAN * 2,
228
255
  MOB_LEVEL_DIAMAN * 2,
256
+ MOB_DEXTERITY_DIAMAN,
229
257
  Inventory.new,
230
- rand(0..10)
258
+ rand(0..10),
259
+ MOB_LEVEL_DIAMAN * rand(3..5),
260
+ MOB_BATTLECRY_DIAMAN
231
261
  )
232
262
  )
233
263
  end
@@ -238,6 +268,9 @@ module Gemwarrior
238
268
  ITEM_ID_STONE,
239
269
  ITEM_NAME_STONE,
240
270
  ITEM_DESC_STONE,
271
+ ITEM_ATK_LO_STONE,
272
+ ITEM_ATK_HI_STONE,
273
+ true,
241
274
  true
242
275
  )
243
276
  )
@@ -245,6 +278,9 @@ module Gemwarrior
245
278
  ITEM_ID_BED,
246
279
  ITEM_NAME_BED,
247
280
  ITEM_DESC_BED,
281
+ ITEM_ATK_LO_BED,
282
+ ITEM_ATK_HI_BED,
283
+ false,
248
284
  false
249
285
  )
250
286
  )
@@ -252,6 +288,9 @@ module Gemwarrior
252
288
  ITEM_ID_STALACTITE,
253
289
  ITEM_NAME_STALACTITE,
254
290
  ITEM_DESC_STALACTITE,
291
+ ITEM_ATK_LO_STALACTITE,
292
+ ITEM_ATK_HI_STALACTITE,
293
+ true,
255
294
  true
256
295
  )
257
296
  )
@@ -259,13 +298,19 @@ module Gemwarrior
259
298
  ITEM_ID_FEATHER,
260
299
  ITEM_NAME_FEATHER,
261
300
  ITEM_DESC_FEATHER,
262
- true
301
+ ITEM_ATK_LO_FEATHER,
302
+ ITEM_ATK_HI_FEATHER,
303
+ true,
304
+ false
263
305
  )
264
306
  )
265
307
  items.push(Item.new(
266
308
  ITEM_ID_GUN,
267
309
  ITEM_NAME_GUN,
268
310
  ITEM_DESC_GUN,
311
+ ITEM_ATK_LO_GUN,
312
+ ITEM_ATK_HI_GUN,
313
+ true,
269
314
  true
270
315
  )
271
316
  )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemwarrior
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Chadwick