texugo-engine 0.0.1

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,169 @@
1
+ module Inn
2
+ def rest
3
+ puts "It will be 15 gold to rest here. will you rest? (yes or no)"
4
+ puts "You have #{$player.gold}"
5
+ puts ''
6
+ response = gets.chomp.downcase
7
+ puts''
8
+ if response == 'yes' && $player.gold >= 15
9
+ $player.gold -= 15
10
+ sleep
11
+ elsif response == 'yes' && $player.gold < 15
12
+ puts 'You set your coin purse on the counter but the distinct lack of coins rustling'
13
+ puts 'makes your ears grow red with embarassment. You look at the innkeeper who is'
14
+ puts 'looking back at you with an impatient glare. If only you were better at'
15
+ puts 'managing your money.'
16
+ elsif response == 'no'
17
+ puts 'Have a good day.'
18
+ else
19
+ puts "'I don't know what you are trying to say'"
20
+ end
21
+ end
22
+ end
23
+
24
+ module Shop
25
+ def buy
26
+ puts inventory
27
+ puts ''
28
+ inventory = [self.weapons, self.items, self.spells, self.armour]
29
+ puts "You have #{$player.gold} gold"
30
+ puts 'What would you like to purchase?'
31
+ puts "('back' to return to shop)"
32
+ puts ''
33
+ puts '-'*10
34
+ puts 'items'.center(10)
35
+ puts '-'*10
36
+ self.items.each do |item|
37
+ puts item.to_s + ' - ' + Items_price[item].to_s + ' gold'
38
+ end
39
+ puts '-'*10
40
+ puts 'spells'.center(10)
41
+ puts '-'*10
42
+ self.spells.each do |spell|
43
+ puts spell.to_s + ' - ' + Spells_price[spell].to_s + ' gold'
44
+ end
45
+ puts '-'*10
46
+ puts 'weapons'.center(10)
47
+ puts '-'*10
48
+ self.weapons.each do |weapon|
49
+ puts "#{weapon.to_s.upcase} - #{Weapons_price[weapon].to_s} gold"
50
+ puts "Damage rating: #{Weapon_id[weapon].damage.to_s}"
51
+ end
52
+ puts '-'*10
53
+ puts 'armour'.center(10)
54
+ puts '-'*10
55
+ self.armour.each do |armour|
56
+ puts "#{armour.to_s.upcase} - #{Armour_price[armour].to_s} gold"
57
+ puts "Defense rating: #{Armour_id[armour].rating.to_s}"
58
+ puts "Armour type: #{Armour_id[armour].type.to_s}"
59
+ end
60
+ puts ''
61
+ purchase = ''
62
+ while true
63
+ purchase = gets.chomp
64
+ break if purchase == 'back'
65
+ if(self.items.include? purchase) || (self.weapons.include? purchase) || (self.spells.include? purchase) || (self.armour.include? purchase)
66
+ if self.items.include? purchase
67
+ if ($player.gold) >= (Items_price[purchase])
68
+ $player.inventory << purchase
69
+ $player.gold -= Items_price[purchase]
70
+ elsif $player.gold < Items_price[purchase]
71
+ puts 'Not enough gold'
72
+ end
73
+ end
74
+ if self.weapons.include? purchase
75
+ if $player.gold >= Weapons_price[purchase]
76
+ $player.inventory << Weapon_id[purchase]
77
+ $player.gold -= Weapons_price[purchase]
78
+ elsif $player.gold < Weapons_price[purchase]
79
+ puts 'Not enough gold'
80
+ end
81
+ end
82
+ if self.spells.include? purchase
83
+ if $player.gold >= Spells_price[purchase]
84
+ $player.spells << purchase
85
+ $player.gold -= Spells_price[purchase]
86
+ else
87
+ puts 'Not enough gold'
88
+ end
89
+ end
90
+ if self.armour.include? purchase
91
+ if $player.gold >= Armour_price[purchase]
92
+ $player.inventory << Armour_id[purchase]
93
+ $player.gold -= Armour_price[purchase]
94
+ else $player.gold < Armour_price[purchase]
95
+ puts 'Not enough gold'
96
+ end
97
+ end
98
+ puts ''
99
+ puts 'you have ' + $player.gold.to_s + ' left.'
100
+ puts ''
101
+ puts 'Would you like anything else?'
102
+ puts ''
103
+ else
104
+ puts 'No such item in inventory'
105
+ end
106
+ end
107
+ puts ''
108
+ puts $player.position[0].look
109
+ end
110
+
111
+ def sell
112
+ puts ''
113
+ puts 'what would you like to sell?'
114
+ puts "('back' to return to shop)"
115
+ puts''
116
+ sell = ''
117
+ while true
118
+ puts inventory
119
+ puts ''
120
+ loop = 0
121
+ sell = gets.chomp
122
+ break if sell == 'back'
123
+ if ($player.inventory.include? sell) && (Spellbook_id.has_key? sell)
124
+ $player.inventory.delete_at($player.inventory.index(sell))
125
+ $player.gold += (Spells_price[Spellbook_id[sell].spell]/2)
126
+ end
127
+ $player.inventory.each do |item|
128
+ if item == sell && ((Key_Items.has_key? sell) == false)
129
+ $player.inventory.delete_at($player.inventory.index(item))
130
+ $player.gold += (Items_price[item]/2)
131
+ puts "Your gold is now #{$player.gold}"
132
+ loop += 1
133
+ break
134
+ elsif (item.class == Weapon) || (item.class == Armour)
135
+ if item.name == sell
136
+ $player.inventory.delete_at($player.inventory.index(item))
137
+ $player.gold += (Weapons_price[item.name]/2) if item.class == Weapon
138
+ $player.gold += (Armour_price[item.name]/2) if item.class == Armour
139
+ puts "Your gold is now #{$player.gold}"
140
+ if item.class == Weapon
141
+ temp = []
142
+ $player.inventory.each do |item|
143
+ (temp << item) if (item == Weapon_id[sell])
144
+ end
145
+ $player.weapon.delete_at 0 if temp.length == 0
146
+ end
147
+ if item.class == Armour
148
+ temp = []
149
+ $player.inventory.each do |item|
150
+ (temp << item) if (item == Armour_id[sell])
151
+ end
152
+ $player.armour.delete_at $player.armour.index(item).to_i if temp.length == 0
153
+ end
154
+ loop += 1
155
+ break
156
+ end
157
+ elsif item == sell && (Key_Items.has_key? sell)
158
+ puts 'You cannot sell key items'
159
+ loop += 1
160
+ end
161
+ end
162
+ puts 'You do not have an item by that name' if loop == 0
163
+ puts ''
164
+ puts 'Would you like to sell anything else?'
165
+ end
166
+ puts ''
167
+ puts $player.position[0].look
168
+ end
169
+ end
@@ -0,0 +1,106 @@
1
+ class Ghoul
2
+ attr_accessor :name, :life , :strength , :experience
3
+
4
+ def initialize(name = self.class, life = 30,strength = 2, experience = 15)
5
+ @name = name
6
+ @life = life
7
+ @strength = strength
8
+ @experience = experience
9
+ end
10
+ end
11
+
12
+ class Human
13
+ attr_accessor :name, :life, :strength, :experience
14
+
15
+ def initialize(name = self.class, life = 70, strength = 4, experience = 30)
16
+ @name = name
17
+ @life = life
18
+ @strength = strength
19
+ @experience = experience
20
+ end
21
+ end
22
+
23
+
24
+ class Undead
25
+ attr_accessor :name, :life, :strength, :experience
26
+
27
+ def initialize(name = self.class, life = 250, strength = 12, experience = 350)
28
+ @name = name
29
+ @life = life
30
+ @strength = strength
31
+ @experience = experience
32
+ end
33
+ end
34
+
35
+ class Spector
36
+ attr_accessor :name, :life, :strength, :experience
37
+
38
+ def initialize(name = self.class, life = 15, strength = 5, experience = 50)
39
+ @name = name
40
+ @life = life
41
+ @strength = strength
42
+ @experience = experience
43
+ end
44
+ end
45
+
46
+ class Imp
47
+ attr_accessor :name, :life, :strength, :experience
48
+
49
+ def initialize(name = self.class, life = 80, strength = 5, experience = 80)
50
+ @name = name
51
+ @life = life
52
+ @strength = strength
53
+ @experience = experience
54
+ end
55
+ end
56
+
57
+ class Orc
58
+ attr_accessor :name, :life, :strength, :experience
59
+
60
+ def initialize(name = self.class, life = 80, strength = 6, experience = 100)
61
+ @name = name
62
+ @life = life
63
+ @strength = strength
64
+ @experience = experience
65
+ end
66
+ end
67
+
68
+ class Troll
69
+ attr_accessor :name, :life, :strength, :experience
70
+
71
+ def initialize(name = self.class, life = 100, strength = 8, experience = 100)
72
+ @name = name
73
+ @life = life
74
+ @strength = strength
75
+ @experience = experience
76
+ end
77
+ end
78
+
79
+ class Siren
80
+ attr_accessor :name, :life, :strength, :experience
81
+
82
+ def initialize(name = self.class, life = 150, strength = 10, experience = 200)
83
+ @name = name
84
+ @life = life
85
+ @strength = strength
86
+ @experience = experience
87
+ end
88
+ end
89
+
90
+ class Demon
91
+ attr_accessor :name, :life, :strength, :experience
92
+
93
+ def initialize (name = self.class, life = 200, strength = 12, experience = 300)
94
+ @name = name
95
+ @life = life
96
+ @strength = strength
97
+ @experience = experience
98
+ end
99
+ end
100
+
101
+ #Bosses
102
+
103
+
104
+ RestlessSpirit = Ghoul.new('Restless Spirit', 50, 4, 20)
105
+ Bal = Demon.new('Bal', 1500, 250000000000000000000000000000000000000000000000000000000000000000000000, 1000)
106
+
@@ -0,0 +1,160 @@
1
+ require_relative 'modules'
2
+ require_relative 'monsters'
3
+ require_relative 'characters'
4
+
5
+ class Northshre
6
+ attr_accessor :name, :locations, :visit, :fightchance, :monsters
7
+
8
+ def initialize(name = 'Northshire', locations = {'inn' => NorthshireInn, 'shop' => NorthshireShop, 'tavern' => NorthshireTavern, 'house' => NorthshireHouse}, visit = 0, fight_chance = 12, monsters = 1)
9
+ @name = name
10
+ @locations = locations
11
+ @visit = visit
12
+ @fightchance = fight_chance
13
+ @monsters = monsters
14
+ end
15
+
16
+ def introduction
17
+ puts "You come upon a small town. The buildings here, though seemingly in full"
18
+ puts "operation, have not been maintained well. You suspect this town doesnt get much"
19
+ puts "trade or travellers. The people of this town seem to move slugishly, as if it"
20
+ puts "were with great reluctance that they arive to wherever they are heading. The"
21
+ puts "town itself had a depressed air about it and you find yourself experiencing an"
22
+ puts "intense meloncholy merely by being there. You hope your time in this town will"
23
+ puts "be short as you set off to discover what the town holds"
24
+ end
25
+
26
+ def look
27
+ puts "The lack of care and maintanance of the buildings immediatly stand out to you,"
28
+ puts "but, inspite of this, their functions are easily recognizable. Along the"
29
+ puts "gravelled road is a row of buildings. Of those buildings you notice a shop and"
30
+ puts "a tavern right next to it. Further down the road is you notice an inn."
31
+ puts "(shop, tavern, inn)"
32
+ end
33
+
34
+ def monster
35
+ return Human.new("Mugger")
36
+ end
37
+ end
38
+
39
+ class Northshire_inn
40
+ attr_accessor :name, :commands
41
+
42
+ include Inn
43
+
44
+ def initialize(name = 'Northshire Inn', commands = ['leave', 'look', 'rest'])
45
+ @name = name
46
+ @commands = commands
47
+ end
48
+
49
+ def leave
50
+ $player.position.delete_at (0)
51
+ end
52
+
53
+ def introduction
54
+ puts 'You walk into the inn. The interior is just as bleak as the rest of the town.'
55
+ puts "You see the innkeeper - a sad looking man - who asks if you would like a room."
56
+ puts "(rest)"
57
+ end
58
+
59
+ def look
60
+ puts 'You see the innkeeper behind a wooden counter. Their is little light here, but'
61
+ puts 'enough to see that the walls are bare. There is nothing of any interest here.'
62
+ end
63
+ end
64
+
65
+ class Northshire_shop
66
+ attr_accessor :name, :commands ,:items, :weapons, :spells, :armour
67
+
68
+ include Shop
69
+
70
+ def initialize(name = 'Northshire Shop', commands = ['buy', 'sell','leave'], items = ['potion', 'mana'], weapons = ['club'], spells = ['holy', 'heal'], armour = ['hat', 'wicker shield', 'leather gloves', 'chain helmet'])
71
+ @name = name
72
+ @items = items
73
+ @weapons = weapons
74
+ @spells = spells
75
+ @armour = armour
76
+ @commands = commands
77
+ end
78
+
79
+ def introduction
80
+ puts 'A man sits behind the counter. He offers no welcome or assitance, but just'
81
+ puts 'looks as you stand there.'
82
+ end
83
+
84
+ def look
85
+ puts 'The shops interior matches the depressing nature of the whole town. There are'
86
+ puts 'not many items that you can see, and what you can see is not very impressive.'
87
+ puts '(buy or sell)'
88
+ end
89
+
90
+ def leave
91
+ $player.position.delete_at (0)
92
+ end
93
+ end
94
+
95
+ class Northshire_tavern
96
+ attr_accessor :name, :commands, :inventory
97
+
98
+ def initialize(name = 'Northshire Tavern', commands = ['leave', 'talk'], inventory = [Martin])
99
+ @name = name
100
+ @commands = commands
101
+ @inventory = inventory
102
+ end
103
+
104
+ def introduction
105
+ puts 'You walk into the tavern, noticing that there are very few patrons. The bar,'
106
+ puts 'behind which you see a rough looking man with sunken eyes, is splintered and'
107
+ puts 'faded. One man, off in the corner, stares at you.'
108
+ unless self.inventory.length == 0
109
+ puts self.inventory[0].name
110
+ end
111
+ end
112
+
113
+
114
+ def leave
115
+ $player.position.delete_at (0)
116
+ end
117
+
118
+ def talk
119
+ if self.inventory.include? (Martin)
120
+ $player.party << Martin
121
+ self.inventory.delete_at(self.inventory.index(Martin))
122
+ puts ''
123
+ puts 'Martin joins your party.'
124
+ else
125
+ puts 'There is no one here worth talking to'
126
+ end
127
+ end
128
+
129
+ end
130
+
131
+ class Northshire_house
132
+ attr_accessor :name, :commands, :visit
133
+
134
+ def initialize (name = 'Northshire House', commands = ['leave'], visit = 0)
135
+ @name = name
136
+ @commands = commands
137
+ @visit = visit
138
+ end
139
+
140
+ def introduction
141
+ unless ($player.party.include? Martin) || (self.visit != 0)
142
+ puts self.visit
143
+ self.leave
144
+ puts 'You cannot enter'
145
+ else
146
+ self.visit += 1 if self.visit == 0
147
+ puts 'you are here'
148
+ end
149
+ end
150
+
151
+ def leave
152
+ $player.position.delete_at (0)
153
+ end
154
+ end
155
+
156
+ NorthshireHouse = Northshire_house.new
157
+ NorthshireTavern = Northshire_tavern.new
158
+ NorthshireShop = Northshire_shop.new
159
+ NorthshireInn = Northshire_inn.new
160
+ Northshire = Northshre.new
@@ -0,0 +1,218 @@
1
+ require_relative 'player'
2
+ require_relative 'maps'
3
+ require_relative 'spells'
4
+ require_relative 'items'
5
+ require_relative 'armour'
6
+ require_relative 'weapons'
7
+ require_relative 'characters'
8
+ require_relative 'hamlet'
9
+ require_relative 'middleton'
10
+ require_relative 'denofshadows'
11
+ require_relative 'northshire'
12
+ require_relative 'ridgedale'
13
+ require_relative 'commands'
14
+ require_relative 'rand_fight'
15
+
16
+ require_relative 'books'
17
+
18
+ o = ''
19
+ while true
20
+ puts 'would you like to load?'
21
+ o = gets.chomp
22
+ if o == 'yes'
23
+ puts "Which character would you like to load?"
24
+ puts ''
25
+ Dir.glob("**/") do |dir|
26
+ str = dir
27
+ str = str.sub 'games/', ''
28
+ puts str.sub '/', ''
29
+ end
30
+ name = gets.chomp
31
+ if File.directory?("games/#{name}")
32
+ File.open("games/#{name}/#{name}") do |file|
33
+ $player = Marshal.load(file)
34
+ end
35
+
36
+ $player.party.each do |char|
37
+ File.open("games/#{$player.name}/#{char.name}") do |file|
38
+ char = Marshal.load(file)
39
+ end
40
+ end
41
+
42
+ $player.party.each do |char|
43
+ File.open("games/#{$player.name}/#{char.name}", "w+") do |file|
44
+ Marshal.dump(char, file)
45
+ end
46
+ end
47
+
48
+ $player.maps.each do |area|
49
+ File.open("games/#{$player.name}/#{area.name}") do |file|
50
+ area = Marshal.load(file)
51
+ end
52
+ end
53
+
54
+ $player.visited.each do |location|
55
+ location.each do |place|
56
+ File.open("games/#{$player.name}/#{place.name}") do |file|
57
+ place = Marshal.load(file)
58
+ end
59
+ end
60
+ end
61
+ puts ''
62
+ if $player.position.length > 0
63
+ puts "#{$player.position[0].name}"
64
+ puts ''
65
+ puts $player.position[0].look
66
+ end
67
+ break
68
+ else
69
+ puts 'Please enter a valid character'
70
+ end
71
+ elsif o == 'no'
72
+ puts ''
73
+ puts 'Please enter a name for your character.'
74
+ name = gets.chomp
75
+
76
+ def attribute_total(stats)
77
+ stats[:strength] + stats[:endurance] + stats[:agility] + stats[:intelligence]
78
+ end
79
+
80
+ player_attribute = {:strength => 0, :endurance => 0, :agility => 0, :intelligence => 0}
81
+ until attribute_total(player_attribute) == 20
82
+ puts ''
83
+ puts 'you have 20 points to distribute between strength, agility, intelligence'
84
+ puts 'and endurance'
85
+ puts ''
86
+ player_attribute.each do |attribute, value|
87
+ while true
88
+ puts ''
89
+ puts 'please enter a value for ' + attribute.to_s
90
+ puts ''
91
+ stat = gets.to_i
92
+ if (stat > 0 && stat <= 17)
93
+ player_attribute[attribute] = stat
94
+ break
95
+ end
96
+ puts 'please enter a number between 1 and 17' if (stat <= 0 || stat > 17)
97
+ end
98
+ end
99
+ puts 'You only have 20 points to distribute!!!' if attribute_total(player_attribute) > 20
100
+ puts 'Please distribute all of the points.' if attribute_total(player_attribute) < 20
101
+ end
102
+
103
+ $player = Player.new(name,player_attribute[:strength], player_attribute[:endurance], player_attribute[:agility], player_attribute[:intelligence])
104
+
105
+ $player.maps << Hamletmap
106
+ $player.area << Hamlet
107
+ $player.visited << Hamletloc
108
+ Dir.mkdir("games/#{$player.name}")
109
+ File.open("games/#{$player.name}/#{$player.name}", "w+") do |file|
110
+ Marshal.dump($player, file)
111
+ end
112
+ $player.maps.each do |area|
113
+ File.open("games/#{$player.name}/#{area.name}", "w+") do |file|
114
+ Marshal.dump(area.location, file)
115
+ end
116
+ end
117
+ $player.visited.each do |location|
118
+ location.each do |place|
119
+ File.open("games/#{$player.name}/#{place.name}", "w+") do |file|
120
+ Marshal.dump(place, file)
121
+ end
122
+ end
123
+ end
124
+ puts ''
125
+ puts ''
126
+ puts ''
127
+ puts 'You awake to find yourself in a deserted hamlet. The buildings here'
128
+ puts 'look as though it has been many years since anyone had lived here.'
129
+ puts 'You wonder how it is you came here and quickly realize that you cannot'
130
+ puts 'recall anything from before this moment. It is as if you have just awaken'
131
+ puts 'from a dreamless sleep that has lasted since your birth. As you try harder'
132
+ puts 'to recall any detail of your life before now, you feel the back of your'
133
+ puts 'right hand begin to burn. You look down at it to see that some sort of'
134
+ puts 'symbol has been carved in it. The circular scar contains within it several'
135
+ puts 'smaller designs that are all aligned. You rub your hand as the questions'
136
+ puts 'begin to pile up in your mind. You decide that standing here is not going'
137
+ puts 'to ease your mind and decide to explore the buildings.'
138
+ puts ''
139
+ puts ''
140
+ puts Hamlet.look
141
+ break
142
+ else
143
+ puts 'i dont know what you are trying to say'
144
+ end
145
+ end
146
+
147
+ k = ''
148
+
149
+
150
+ while true
151
+ while true
152
+ break if $player.life <= 0
153
+ position = $player.position[0]
154
+ puts 'you are standing outside' unless $player.position.length > 0
155
+ puts ''
156
+ k = gets.chomp
157
+ puts''
158
+ break if k == 'exit'
159
+ if ($player.position.length > 0) && (position.commands.include? k)
160
+ $player.position[0].send(k)
161
+ elsif ($player.position.length == 0) && (Commands_outside.include? k)
162
+ send(k)
163
+ else
164
+ puts 'please enter a valid command'
165
+ end
166
+ end
167
+ break if $player.life > 0
168
+ if $player.life <= 0
169
+ puts 'You Are Dead!!!!!!!'
170
+ puts ''
171
+ puts 'would you like to continue?'
172
+ j = ''
173
+ while true
174
+ j = gets.chomp
175
+ if j.downcase == 'yes'
176
+ File.open("games/#{$player.name}/#{$player.name}") do |file|
177
+ $player = Marshal.load(file)
178
+ end
179
+
180
+ $player.party.each do |char|
181
+ File.open("games/#{$player.name}/#{char.name}") do |file|
182
+ char = Marshal.load(file)
183
+ end
184
+ end
185
+
186
+ $player.party.each do |char|
187
+ File.open("games/#{$player.name}/#{char.name}", "w+") do |file|
188
+ Marshal.dump(char, file)
189
+ end
190
+ end
191
+
192
+ $player.maps.each do |area|
193
+ File.open("games/#{$player.name}/#{area.name}") do |file|
194
+ area = Marshal.load(file)
195
+ end
196
+ end
197
+
198
+ $player.visited.each do |location|
199
+ location.each do |place|
200
+ File.open("games/#{$player.name}/#{place.name}") do |file|
201
+ place = Marshal.load(file)
202
+ end
203
+ end
204
+ end
205
+ puts "You awake in the #{$player.position[0].name}" unless $player.position.length == 0
206
+ puts ''
207
+ puts $player.position[0].look unless $player.position.length == 0
208
+ break
209
+ elsif j.downcase == 'no'
210
+ break
211
+ else
212
+ puts 'I do not know that command'
213
+ end
214
+ end
215
+ end
216
+ break if $player.life <= 0
217
+ end
218
+ puts 'Game Over!!!!'