mission_game 1.1.1 → 1.1.2

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 (9) hide show
  1. checksums.yaml +4 -4
  2. data/lib/enemy.rb +49 -53
  3. data/lib/main.rb +148 -142
  4. data/lib/neworleans.rb +144 -149
  5. data/lib/player.rb +122 -121
  6. data/lib/story.rb +41 -45
  7. data/lib/ui.rb +269 -259
  8. data/mission_game.rb +41 -43
  9. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d57529ce9115a3acd92942159df8ccca05d7bd534d6054f28c35fb66f2df873f
4
- data.tar.gz: a768a71daa75d1869d1a0d1f47c8dcc4c85e99cc6857a2a1c5b4b229451b3b54
3
+ metadata.gz: d4a63e6356c3aebf135e66163c4c73f53b776539a7e72023a3c6369bfab7bc99
4
+ data.tar.gz: ef1708f5f705150abbabfb40a57430036904f4afdbd5c8b6569639767944695e
5
5
  SHA512:
6
- metadata.gz: 7097ef7f3fcba5a253e77d6a4e9f589b3422f570dced7f537c91f206df32278cc1120bc806094d9299a68bc227ccadf9990aaa8afb9913103bd879ed1d27ff31
7
- data.tar.gz: 42cd40c3cae6b11292d368d8a13bea2d897d148dc0b65420783e69a547fc99f2cc3791bd4717841790060d713ad9f941b605bbd0de97d18ac671afc7988489d9
6
+ metadata.gz: 6afa74551ab65060d42055b034d6796fd4f8a1703e720010e07dfa7f09e6a3b48421865a0bb6408e4c03c31f93833770f572a650786527b9439b83ba5d0455c8
7
+ data.tar.gz: a53e29573583e890460fd6803001161c7ac589dfb570a70c80bd40fc85589eaa0201b48693a713f7d1f1df7a8309611b0751b5ade68c3367f4a3227f73286e5f
data/lib/enemy.rb CHANGED
@@ -4,66 +4,62 @@
4
4
  #
5
5
 
6
6
  module MISSIONGAME
7
+ ENEMY_CATALOG = [
8
+ [name: 'Lucien Castle', lives: 3, bonus: 0, str: 3, points: 1],
9
+ [name: 'Klaus Mikaelson', lives: 8, bonus: 8, str: 4, points: 10],
10
+ [name: 'Damon Salvatore', lives: 5, bonus: 0, str: 4, points: 7],
11
+ [name: 'Mikael', lives: 3, bonus: 2, str: 4, points: 6],
12
+ [name: 'Taylor Lockwood', lives: 4, bonus: 0, str: 4, points: 2],
13
+ [name: 'Marcel Gerard', lives: 7, bonus: 3, str: 5, points: 5],
14
+ [name: 'Dahlia', lives: 2, bonus: 6, str: 1, points: 2],
15
+ [name: 'The Hollow', lives: 5, bonus: 0, str: 4, points: 3],
16
+ [name: 'Celeste Dubois', lives: 3, bonus: 10, str: 2, points: 5]
17
+ ]
7
18
 
8
- ENEMY_CATALOG = [
9
- [:name => "Lucien Castle", :lives => 3, :bonus => 0, :str => 3, :points => 1],
10
- [:name => "Klaus Mikaelson", :lives => 8, :bonus => 8, :str => 4, :points => 10],
11
- [:name => "Damon Salvatore", :lives => 5, :bonus => 0, :str => 4, :points => 7],
12
- [:name => "Mikael", :lives => 3, :bonus => 2, :str => 4, :points => 6],
13
- [:name => "Taylor Lockwood", :lives => 4, :bonus => 0, :str => 4, :points => 2],
14
- [:name => "Marcel Gerard", :lives => 7, :bonus => 3, :str => 5, :points => 5],
15
- [:name => "Dahlia", :lives => 2, :bonus => 6, :str => 1, :points => 2],
16
- [:name => "The Hollow", :lives => 5, :bonus => 0, :str => 4, :points => 3],
17
- [:name => "Celeste Dubois", :lives => 3, :bonus => 10, :str => 2, :points => 5]
18
- ]
19
+ PLAYER_DEAD = 'PLAYER_DEAD'
19
20
 
20
- PLAYER_DEAD = "PLAYER_DEAD"
21
+ class Enemy
22
+ attr_accessor :name
23
+ attr_accessor :lives
24
+ attr_accessor :bonus
25
+ attr_accessor :str
26
+ attr_accessor :int
27
+ attr_accessor :points
21
28
 
22
- class Enemy
29
+ def initialize(args = nil)
30
+ # Pick a random enemy
31
+ selected_enemy = ENEMY_CATALOG.sample[0]
32
+ @name = selected_enemy[:name]
33
+ @lives = selected_enemy[:lives] + rand(0..3)
34
+ @bonus = selected_enemy[:bonus] + rand(0..3)
35
+ @str = selected_enemy[:str]
36
+ @points = selected_enemy[:points]
37
+ @int = rand(2..6)
38
+ end
23
39
 
24
- attr_accessor :name
25
- attr_accessor :lives
26
- attr_accessor :bonus
27
- attr_accessor :str
28
- attr_accessor :int
29
- attr_accessor :points
30
-
31
- def initialize(args = nil)
32
- # Pick a random enemy
33
- selected_enemy = ENEMY_CATALOG.sample[0]
34
- @name = selected_enemy[:name]
35
- @lives = selected_enemy[:lives] + rand(0..3)
36
- @bonus = selected_enemy[:bonus] + rand(0..3)
37
- @str = selected_enemy[:str]
38
- @points = selected_enemy[:points]
39
- @int = rand(2..6)
40
- end
41
-
42
- # Enemy attacks player
43
- def attack(args)
44
- enemy = self
45
- player = args[:player]
46
-
47
- # Does the enemy even hit the player?
48
- str_diff = (enemy.str - player.str) * 2
49
- hit_chance = rand(1...100) + str_diff
40
+ # Enemy attacks player
41
+ def attack(args)
42
+ enemy = self
43
+ player = args[:player]
44
+
45
+ # Does the enemy even hit the player?
46
+ str_diff = (enemy.str - player.str) * 2
47
+ hit_chance = rand(1...100) + str_diff
50
48
 
51
- if (hit_chance > 30)
52
- # Determine value of the attack
53
- attack_value = rand(1...player.str)
54
- print enemy.name.light_red + " hits you for " + attack_value.to_s.light_yellow + " damage(s)!\n"
55
- if attack_value > player.lives
56
- return PLAYER_DEAD
49
+ if (hit_chance > 30)
50
+ # Determine value of the attack
51
+ attack_value = rand(1...player.str)
52
+ print enemy.name.light_red + ' hits you for ' +
53
+ attack_value.to_s.light_yellow + " damage(s)!\n"
54
+ if attack_value > player.lives
55
+ return PLAYER_DEAD
56
+ else
57
+ return attack_value
58
+ end
57
59
  else
58
- return attack_value
60
+ print enemy.name.light_red + " sees you as an easy prey!\n"
59
61
  end
60
- else
61
- print enemy.name.light_red + " sees you as an easy prey!\n"
62
+ return true
62
63
  end
63
- return true
64
64
  end
65
-
66
-
67
- end
68
-
69
65
  end
data/lib/main.rb CHANGED
@@ -1,142 +1,148 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Written by Webster AVosa
4
-
5
- MISSIONGAME_VERSION = "1.00"
6
-
7
- # Create a new UI and New Orleans
8
- ui = MISSIONGAME::UI.new
9
- neworleans = MISSIONGAME::NewOrleans.new
10
-
11
- # Clear the screen and print welcome message
12
- ui.clear
13
- ui.welcome
14
-
15
- # Ask name
16
- name = ui.ask("What is your name?", /\w/)
17
-
18
- # Create a new player
19
- player = MISSIONGAME::Player.new({:name => name, :neworleans => neworleans})
20
-
21
- # Show intro story
22
- ui.new_line
23
- story = MISSIONGAME::Story.new
24
- ui.draw_frame({:text => story.intro})
25
-
26
-
27
- # MAIN INPUT LOOP
28
- running = 1
29
- while running
30
- ui.new_line
31
- # Get command from user
32
- cmd = ui.get_cmd
33
- case cmd
34
- when "~"
35
- binding.pry
36
- when "map", "m"
37
- map = neworleans.get_map({:player => player})
38
- ui.draw_frame({:text => map})
39
- when "version", "ver"
40
- ui.display_version
41
- when "clear", "cls"
42
- ui.clear
43
- when "name", "whoami"
44
- ui.display_name({:player => player})
45
- when "location", "loc", "where", "whereami"
46
- ui.show_location({:player => player})
47
- when "look", "what", "around"
48
- neworleans.check_area({:player => player, :ui => ui, :story => story})
49
- when "forward", "f"
50
- unless player.in_combat
51
- if !player.move({:direction => :up, :neworleans => neworleans, :ui => ui, :story => story})
52
- player.in_combat = 1
53
- end
54
- else
55
- ui.cannot_travel_combat
56
- end
57
- when "backward", "b"
58
- unless player.in_combat
59
- if !player.move({:direction => :down, :neworleans => neworleans, :ui => ui, :story => story})
60
- player.in_combat = 1
61
- end
62
- else
63
- ui.cannot_travel_combat
64
- end
65
- when "left", "l"
66
- unless player.in_combat
67
- if !player.move({:direction => :left, :neworleans => neworleans, :ui => ui, :story => story})
68
- player.in_combat = 1
69
- end
70
- else
71
- ui.cannot_travel_combat
72
- end
73
- when "right", "r"
74
- unless player.in_combat
75
- if !player.move({:direction => :right, :neworleans => neworleans, :ui => ui, :story => story})
76
- player.in_combat = 1
77
- end
78
- else
79
- ui.cannot_travel_combat
80
- end
81
- when "attack", "a"
82
- if player.in_combat
83
- retval = player.attack({:enemy => player.current_enemy, :ui => ui})
84
- if retval == MISSIONGAME::ENEMY_KILLED
85
- player.points += player.current_enemy.points
86
- # Remove enemy from map
87
- neworleans.the_map[player.y-1][player.x-1] = MISSIONGAME::MAP_KEY_GRASS
88
- # Take player out of combat
89
- player.current_enemy = nil
90
- player.in_combat = false
91
- end
92
- if retval.is_a? Numeric
93
- player.current_enemy.lives -= retval
94
- retval = player.current_enemy.attack({:player => player})
95
- if retval.is_a? Numeric
96
- player.lives -= retval
97
- end
98
- if retval == MISSIONGAME::PLAYER_DEAD
99
- player.dead = 1
100
- end
101
- end
102
- else
103
- ui.not_in_combat
104
- end
105
- when "player", "me", "info", "status", "i"
106
- ui.player_info({:player => player})
107
- when "enemy"
108
- if player.in_combat
109
- ui.enemy_info({:player => player})
110
- else
111
- ui.not_in_combat
112
- end
113
- when "points", "score"
114
- ui.points({:player => player})
115
- when "suicide"
116
- player.dead = 1
117
- when "help", "h", "?"
118
- ui.help
119
- when "quit", "q", "exit"
120
- ui.quit
121
- running = nil
122
- else
123
- ui.not_found
124
- end
125
- # Is player in combat but has no enemy? Assign one.
126
- if player.in_combat && !player.current_enemy
127
- enemy = MISSIONGAME::Enemy.new
128
- player.current_enemy = enemy
129
- ui.enemy_greet({:enemy => enemy})
130
- end
131
- # Player is dead!
132
- if player.dead == 1
133
- ui.player_dead({:story => story})
134
- exit
135
- end
136
- # If player has reached the Witch
137
- if player.x == MISSIONGAME::MAP_WIDTH && player.y == 1
138
- ui.draw_frame({:text => story.ending})
139
- ui.new_line
140
- running = false
141
- end
142
- end
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Written by Webster AVosa
4
+
5
+ MISSIONGAME_VERSION = '1.00'
6
+
7
+ # Create a new UI and New Orleans
8
+ ui = MISSIONGAME::UI.new
9
+ neworleans = MISSIONGAME::NewOrleans.new
10
+
11
+ # Clear the screen and print welcome message
12
+ ui.clear
13
+ ui.welcome
14
+
15
+ # Ask name
16
+ name = ui.ask('What is your name?', /\w/)
17
+
18
+ # Create a new player
19
+ player = MISSIONGAME::Player.new({ name: name, neworleans: neworleans })
20
+
21
+ # Show intro story
22
+ ui.new_line
23
+ story = MISSIONGAME::Story.new
24
+ ui.draw_frame({ text: story.intro })
25
+
26
+ # MAIN INPUT LOOP
27
+ running = 1
28
+ while running
29
+ ui.new_line
30
+
31
+ # Get command from user
32
+ cmd = ui.get_cmd
33
+ case cmd
34
+ when '~'
35
+ binding.pry
36
+ when 'map', 'm'
37
+ map = neworleans.get_map({ player: player })
38
+ ui.draw_frame({ text: map })
39
+ when 'version', 'ver'
40
+ ui.display_version
41
+ when 'clear', 'cls'
42
+ ui.clear
43
+ when 'name', 'whoami'
44
+ ui.display_name({ player: player })
45
+ when 'location', 'loc', 'where', 'whereami'
46
+ ui.show_location({ player: player })
47
+ when 'look', 'what', 'around'
48
+ neworleans.check_area({ player: player, ui: ui, story: story })
49
+ when 'forward', 'f'
50
+ unless player.in_combat
51
+ if !player.move(
52
+ { direction: :up, neworleans: neworleans, ui: ui, story: story }
53
+ )
54
+ player.in_combat = 1
55
+ end
56
+ else
57
+ ui.cannot_travel_combat
58
+ end
59
+ when 'backward', 'b'
60
+ unless player.in_combat
61
+ if !player.move(
62
+ { direction: :down, neworleans: neworleans, ui: ui, story: story }
63
+ )
64
+ player.in_combat = 1
65
+ end
66
+ else
67
+ ui.cannot_travel_combat
68
+ end
69
+ when 'left', 'l'
70
+ unless player.in_combat
71
+ if !player.move(
72
+ { direction: :left, neworleans: neworleans, ui: ui, story: story }
73
+ )
74
+ player.in_combat = 1
75
+ end
76
+ else
77
+ ui.cannot_travel_combat
78
+ end
79
+ when 'right', 'r'
80
+ unless player.in_combat
81
+ if !player.move(
82
+ { direction: :right, neworleans: neworleans, ui: ui, story: story }
83
+ )
84
+ player.in_combat = 1
85
+ end
86
+ else
87
+ ui.cannot_travel_combat
88
+ end
89
+ when 'attack', 'a'
90
+ if player.in_combat
91
+ retval = player.attack({ enemy: player.current_enemy, ui: ui })
92
+ if retval == MISSIONGAME::ENEMY_KILLED
93
+ player.points += player.current_enemy.points
94
+
95
+ # Remove enemy from map
96
+ neworleans.the_map[player.y - 1][player.x - 1] =
97
+ MISSIONGAME::MAP_KEY_GRASS
98
+
99
+ # Take player out of combat
100
+ player.current_enemy = nil
101
+ player.in_combat = false
102
+ end
103
+ if retval.is_a? Numeric
104
+ player.current_enemy.lives -= retval
105
+ retval = player.current_enemy.attack({ player: player })
106
+ player.lives -= retval if retval.is_a? Numeric
107
+ player.dead = 1 if retval == MISSIONGAME::PLAYER_DEAD
108
+ end
109
+ else
110
+ ui.not_in_combat
111
+ end
112
+ when 'player', 'me', 'info', 'status', 'i'
113
+ ui.player_info({ player: player })
114
+ when 'enemy'
115
+ player.in_combat ? ui.enemy_info({ player: player }) : ui.not_in_combat
116
+ when 'points', 'score'
117
+ ui.points({ player: player })
118
+ when 'suicide'
119
+ player.dead = 1
120
+ when 'help', 'h', '?'
121
+ ui.help
122
+ when 'quit', 'q', 'exit'
123
+ ui.quit
124
+ running = nil
125
+ else
126
+ ui.not_found
127
+ end
128
+
129
+ # Is player in combat but has no enemy? Assign one.
130
+ if player.in_combat && !player.current_enemy
131
+ enemy = MISSIONGAME::Enemy.new
132
+ player.current_enemy = enemy
133
+ ui.enemy_greet({ enemy: enemy })
134
+ end
135
+
136
+ # Player is dead!
137
+ if player.dead == 1
138
+ ui.player_dead({ story: story })
139
+ exit
140
+ end
141
+
142
+ # If player has reached the Witch
143
+ if player.x == MISSIONGAME::MAP_WIDTH && player.y == 1
144
+ ui.draw_frame({ text: story.ending })
145
+ ui.new_line
146
+ running = false
147
+ end
148
+ end