gemwarrior 0.11.5 → 0.12.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.
- checksums.yaml +4 -4
- data/data/default_world.yaml +68 -68
- data/lib/gemwarrior/entities/items/bookcase.rb +2 -2
- data/lib/gemwarrior/entities/location.rb +48 -19
- data/lib/gemwarrior/entities/monsters/bosses/jaspern.rb +1 -1
- data/lib/gemwarrior/entities/player.rb +3 -2
- data/lib/gemwarrior/evaluator.rb +1 -1
- data/lib/gemwarrior/game.rb +4 -1
- data/lib/gemwarrior/game_assets.rb +24 -0
- data/lib/gemwarrior/inventory.rb +59 -24
- data/lib/gemwarrior/version.rb +1 -1
- data/lib/gemwarrior/world.rb +1 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca163fbb7cece3ec0bc218816843eaadab24bb3d
|
4
|
+
data.tar.gz: 9a9d951320df240ee8fdbd6fb6e5c9d328bda03c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79b84db6709a927ef8d510b5a05d627693bab51b90867c2620af5cf17ace03d5a82945c704bc6250fa81ec6f1ac877f614d6f673b663de7e14ed0c6ab2cb0624
|
7
|
+
data.tar.gz: 6394216a50f001837169412e2b21fe6ea0b3ab5fd5828a7f4b4f4dc5620a96f20231c22958b42ff853ec6478c79e713bbad0203bb1a233cb1422577288da115f
|
data/data/default_world.yaml
CHANGED
@@ -8,7 +8,7 @@ locations:
|
|
8
8
|
:x: 5
|
9
9
|
:y: 0
|
10
10
|
:z: 0
|
11
|
-
|
11
|
+
paths:
|
12
12
|
:north: true
|
13
13
|
:east: true
|
14
14
|
:south: false
|
@@ -79,7 +79,7 @@ locations:
|
|
79
79
|
:x: 6
|
80
80
|
:y: 0
|
81
81
|
:z: 0
|
82
|
-
|
82
|
+
paths:
|
83
83
|
:north: false
|
84
84
|
:east: true
|
85
85
|
:south: false
|
@@ -102,7 +102,7 @@ locations:
|
|
102
102
|
:x: 7
|
103
103
|
:y: 0
|
104
104
|
:z: 0
|
105
|
-
|
105
|
+
paths:
|
106
106
|
:north: true
|
107
107
|
:east: true
|
108
108
|
:south: false
|
@@ -152,7 +152,7 @@ locations:
|
|
152
152
|
:x: 7
|
153
153
|
:y: 1
|
154
154
|
:z: 0
|
155
|
-
|
155
|
+
paths:
|
156
156
|
:north: false
|
157
157
|
:east: true
|
158
158
|
:south: true
|
@@ -175,7 +175,7 @@ locations:
|
|
175
175
|
:x: 8
|
176
176
|
:y: 1
|
177
177
|
:z: 0
|
178
|
-
|
178
|
+
paths:
|
179
179
|
:north: false
|
180
180
|
:east: false
|
181
181
|
:south: true
|
@@ -212,7 +212,7 @@ locations:
|
|
212
212
|
:x: 8
|
213
213
|
:y: 1
|
214
214
|
:z: -1
|
215
|
-
|
215
|
+
paths:
|
216
216
|
:north: true
|
217
217
|
:east: false
|
218
218
|
:south: false
|
@@ -236,7 +236,7 @@ locations:
|
|
236
236
|
:x: 8
|
237
237
|
:y: 2
|
238
238
|
:z: -1
|
239
|
-
|
239
|
+
paths:
|
240
240
|
:north: true
|
241
241
|
:east: false
|
242
242
|
:south: true
|
@@ -260,7 +260,7 @@ locations:
|
|
260
260
|
:x: 8
|
261
261
|
:y: 3
|
262
262
|
:z: -1
|
263
|
-
|
263
|
+
paths:
|
264
264
|
:north: true
|
265
265
|
:east: false
|
266
266
|
:south: true
|
@@ -284,7 +284,7 @@ locations:
|
|
284
284
|
:x: 8
|
285
285
|
:y: 4
|
286
286
|
:z: -1
|
287
|
-
|
287
|
+
paths:
|
288
288
|
:north: false
|
289
289
|
:east: false
|
290
290
|
:south: true
|
@@ -308,7 +308,7 @@ locations:
|
|
308
308
|
:x: 7
|
309
309
|
:y: 4
|
310
310
|
:z: -1
|
311
|
-
|
311
|
+
paths:
|
312
312
|
:north: false
|
313
313
|
:east: true
|
314
314
|
:south: false
|
@@ -332,7 +332,7 @@ locations:
|
|
332
332
|
:x: 6
|
333
333
|
:y: 4
|
334
334
|
:z: -1
|
335
|
-
|
335
|
+
paths:
|
336
336
|
:north: true
|
337
337
|
:east: true
|
338
338
|
:south: false
|
@@ -356,7 +356,7 @@ locations:
|
|
356
356
|
:x: 6
|
357
357
|
:y: 5
|
358
358
|
:z: -1
|
359
|
-
|
359
|
+
paths:
|
360
360
|
:north: false
|
361
361
|
:east: false
|
362
362
|
:south: true
|
@@ -380,7 +380,7 @@ locations:
|
|
380
380
|
:x: 5
|
381
381
|
:y: 5
|
382
382
|
:z: -1
|
383
|
-
|
383
|
+
paths:
|
384
384
|
:north: true
|
385
385
|
:east: true
|
386
386
|
:south: false
|
@@ -404,7 +404,7 @@ locations:
|
|
404
404
|
:x: 4
|
405
405
|
:y: 5
|
406
406
|
:z: -1
|
407
|
-
|
407
|
+
paths:
|
408
408
|
:north: false
|
409
409
|
:east: true
|
410
410
|
:south: false
|
@@ -441,7 +441,7 @@ locations:
|
|
441
441
|
:x: 5
|
442
442
|
:y: 6
|
443
443
|
:z: -1
|
444
|
-
|
444
|
+
paths:
|
445
445
|
:north: true
|
446
446
|
:east: false
|
447
447
|
:south: true
|
@@ -465,7 +465,7 @@ locations:
|
|
465
465
|
:x: 5
|
466
466
|
:y: 7
|
467
467
|
:z: -1
|
468
|
-
|
468
|
+
paths:
|
469
469
|
:north: false
|
470
470
|
:east: false
|
471
471
|
:south: true
|
@@ -501,7 +501,7 @@ locations:
|
|
501
501
|
:x: 5
|
502
502
|
:y: 7
|
503
503
|
:z: 0
|
504
|
-
|
504
|
+
paths:
|
505
505
|
:north: true
|
506
506
|
:east: false
|
507
507
|
:south: false
|
@@ -524,7 +524,7 @@ locations:
|
|
524
524
|
:x: 4
|
525
525
|
:y: 7
|
526
526
|
:z: 0
|
527
|
-
|
527
|
+
paths:
|
528
528
|
:north: true
|
529
529
|
:east: true
|
530
530
|
:south: false
|
@@ -547,7 +547,7 @@ locations:
|
|
547
547
|
:x: 3
|
548
548
|
:y: 7
|
549
549
|
:z: 0
|
550
|
-
|
550
|
+
paths:
|
551
551
|
:north: true
|
552
552
|
:east: true
|
553
553
|
:south: false
|
@@ -570,7 +570,7 @@ locations:
|
|
570
570
|
:x: 2
|
571
571
|
:y: 7
|
572
572
|
:z: 0
|
573
|
-
|
573
|
+
paths:
|
574
574
|
:north: true
|
575
575
|
:east: true
|
576
576
|
:south: false
|
@@ -593,7 +593,7 @@ locations:
|
|
593
593
|
:x: 1
|
594
594
|
:y: 7
|
595
595
|
:z: 0
|
596
|
-
|
596
|
+
paths:
|
597
597
|
:north: true
|
598
598
|
:east: true
|
599
599
|
:south: false
|
@@ -616,7 +616,7 @@ locations:
|
|
616
616
|
:x: 1
|
617
617
|
:y: 8
|
618
618
|
:z: 0
|
619
|
-
|
619
|
+
paths:
|
620
620
|
:north: false
|
621
621
|
:east: true
|
622
622
|
:south: true
|
@@ -651,7 +651,7 @@ locations:
|
|
651
651
|
:x: 2
|
652
652
|
:y: 8
|
653
653
|
:z: 0
|
654
|
-
|
654
|
+
paths:
|
655
655
|
:north: false
|
656
656
|
:east: true
|
657
657
|
:south: true
|
@@ -674,7 +674,7 @@ locations:
|
|
674
674
|
:x: 3
|
675
675
|
:y: 8
|
676
676
|
:z: 0
|
677
|
-
|
677
|
+
paths:
|
678
678
|
:north: false
|
679
679
|
:east: true
|
680
680
|
:south: true
|
@@ -697,7 +697,7 @@ locations:
|
|
697
697
|
:x: 4
|
698
698
|
:y: 8
|
699
699
|
:z: 0
|
700
|
-
|
700
|
+
paths:
|
701
701
|
:north: false
|
702
702
|
:east: true
|
703
703
|
:south: true
|
@@ -720,7 +720,7 @@ locations:
|
|
720
720
|
:x: 5
|
721
721
|
:y: 8
|
722
722
|
:z: 0
|
723
|
-
|
723
|
+
paths:
|
724
724
|
:north: false
|
725
725
|
:east: false
|
726
726
|
:south: true
|
@@ -742,7 +742,7 @@ locations:
|
|
742
742
|
:x: 8
|
743
743
|
:y: 0
|
744
744
|
:z: 0
|
745
|
-
|
745
|
+
paths:
|
746
746
|
:north: true
|
747
747
|
:east: false
|
748
748
|
:south: false
|
@@ -777,7 +777,7 @@ locations:
|
|
777
777
|
:x: 4
|
778
778
|
:y: 0
|
779
779
|
:z: 0
|
780
|
-
|
780
|
+
paths:
|
781
781
|
:north: true
|
782
782
|
:east: true
|
783
783
|
:south: false
|
@@ -812,7 +812,7 @@ locations:
|
|
812
812
|
:x: 4
|
813
813
|
:y: 1
|
814
814
|
:z: 0
|
815
|
-
|
815
|
+
paths:
|
816
816
|
:north: false
|
817
817
|
:east: false
|
818
818
|
:south: true
|
@@ -835,7 +835,7 @@ locations:
|
|
835
835
|
:x: 3
|
836
836
|
:y: 1
|
837
837
|
:z: 0
|
838
|
-
|
838
|
+
paths:
|
839
839
|
:north: false
|
840
840
|
:east: true
|
841
841
|
:south: true
|
@@ -870,7 +870,7 @@ locations:
|
|
870
870
|
:x: 3
|
871
871
|
:y: 0
|
872
872
|
:z: 0
|
873
|
-
|
873
|
+
paths:
|
874
874
|
:north: true
|
875
875
|
:east: false
|
876
876
|
:south: false
|
@@ -904,7 +904,7 @@ locations:
|
|
904
904
|
:x: 2
|
905
905
|
:y: 0
|
906
906
|
:z: 0
|
907
|
-
|
907
|
+
paths:
|
908
908
|
:north: true
|
909
909
|
:east: true
|
910
910
|
:south: false
|
@@ -926,7 +926,7 @@ locations:
|
|
926
926
|
:x: 2
|
927
927
|
:y: 1
|
928
928
|
:z: 0
|
929
|
-
|
929
|
+
paths:
|
930
930
|
:north: false
|
931
931
|
:east: false
|
932
932
|
:south: true
|
@@ -948,7 +948,7 @@ locations:
|
|
948
948
|
:x: 1
|
949
949
|
:y: 1
|
950
950
|
:z: 0
|
951
|
-
|
951
|
+
paths:
|
952
952
|
:north: true
|
953
953
|
:east: true
|
954
954
|
:south: true
|
@@ -970,7 +970,7 @@ locations:
|
|
970
970
|
:x: 1
|
971
971
|
:y: 0
|
972
972
|
:z: 0
|
973
|
-
|
973
|
+
paths:
|
974
974
|
:north: true
|
975
975
|
:east: true
|
976
976
|
:south: false
|
@@ -992,7 +992,7 @@ locations:
|
|
992
992
|
:x: 0
|
993
993
|
:y: 1
|
994
994
|
:z: 0
|
995
|
-
|
995
|
+
paths:
|
996
996
|
:north: true
|
997
997
|
:east: true
|
998
998
|
:south: false
|
@@ -1026,7 +1026,7 @@ locations:
|
|
1026
1026
|
:x: 0
|
1027
1027
|
:y: 2
|
1028
1028
|
:z: 0
|
1029
|
-
|
1029
|
+
paths:
|
1030
1030
|
:north: false
|
1031
1031
|
:east: true
|
1032
1032
|
:south: true
|
@@ -1048,7 +1048,7 @@ locations:
|
|
1048
1048
|
:x: 1
|
1049
1049
|
:y: 2
|
1050
1050
|
:z: 0
|
1051
|
-
|
1051
|
+
paths:
|
1052
1052
|
:north: false
|
1053
1053
|
:east: false
|
1054
1054
|
:south: true
|
@@ -1070,7 +1070,7 @@ locations:
|
|
1070
1070
|
:x: 5
|
1071
1071
|
:y: 1
|
1072
1072
|
:z: 0
|
1073
|
-
|
1073
|
+
paths:
|
1074
1074
|
:north: true
|
1075
1075
|
:east: false
|
1076
1076
|
:south: true
|
@@ -1092,7 +1092,7 @@ locations:
|
|
1092
1092
|
:x: 5
|
1093
1093
|
:y: 2
|
1094
1094
|
:z: 0
|
1095
|
-
|
1095
|
+
paths:
|
1096
1096
|
:north: true
|
1097
1097
|
:east: false
|
1098
1098
|
:south: true
|
@@ -1115,7 +1115,7 @@ locations:
|
|
1115
1115
|
:x: 5
|
1116
1116
|
:y: 3
|
1117
1117
|
:z: 0
|
1118
|
-
|
1118
|
+
paths:
|
1119
1119
|
:north: false
|
1120
1120
|
:east: true
|
1121
1121
|
:south: true
|
@@ -1139,7 +1139,7 @@ locations:
|
|
1139
1139
|
:x: 6
|
1140
1140
|
:y: 3
|
1141
1141
|
:z: 0
|
1142
|
-
|
1142
|
+
paths:
|
1143
1143
|
:north: true
|
1144
1144
|
:east: true
|
1145
1145
|
:south: false
|
@@ -1163,7 +1163,7 @@ locations:
|
|
1163
1163
|
:x: 7
|
1164
1164
|
:y: 3
|
1165
1165
|
:z: 0
|
1166
|
-
|
1166
|
+
paths:
|
1167
1167
|
:north: false
|
1168
1168
|
:east: true
|
1169
1169
|
:south: false
|
@@ -1202,7 +1202,7 @@ locations:
|
|
1202
1202
|
:x: 8
|
1203
1203
|
:y: 3
|
1204
1204
|
:z: 0
|
1205
|
-
|
1205
|
+
paths:
|
1206
1206
|
:north: false
|
1207
1207
|
:east: false
|
1208
1208
|
:south: false
|
@@ -1234,7 +1234,7 @@ locations:
|
|
1234
1234
|
:x: 4
|
1235
1235
|
:y: 3
|
1236
1236
|
:z: 0
|
1237
|
-
|
1237
|
+
paths:
|
1238
1238
|
:north: true
|
1239
1239
|
:east: true
|
1240
1240
|
:south: false
|
@@ -1257,7 +1257,7 @@ locations:
|
|
1257
1257
|
:x: 3
|
1258
1258
|
:y: 3
|
1259
1259
|
:z: 0
|
1260
|
-
|
1260
|
+
paths:
|
1261
1261
|
:north: false
|
1262
1262
|
:east: true
|
1263
1263
|
:south: false
|
@@ -1277,7 +1277,7 @@ locations:
|
|
1277
1277
|
:x: 4
|
1278
1278
|
:y: 4
|
1279
1279
|
:z: 0
|
1280
|
-
|
1280
|
+
paths:
|
1281
1281
|
:north: false
|
1282
1282
|
:east: false
|
1283
1283
|
:south: true
|
@@ -1300,7 +1300,7 @@ locations:
|
|
1300
1300
|
:x: 4
|
1301
1301
|
:y: 5
|
1302
1302
|
:z: 0
|
1303
|
-
|
1303
|
+
paths:
|
1304
1304
|
:north: false
|
1305
1305
|
:east: false
|
1306
1306
|
:south: true
|
@@ -1323,7 +1323,7 @@ locations:
|
|
1323
1323
|
:x: 6
|
1324
1324
|
:y: 4
|
1325
1325
|
:z: 0
|
1326
|
-
|
1326
|
+
paths:
|
1327
1327
|
:north: true
|
1328
1328
|
:east: false
|
1329
1329
|
:south: true
|
@@ -1346,7 +1346,7 @@ locations:
|
|
1346
1346
|
:x: 6
|
1347
1347
|
:y: 5
|
1348
1348
|
:z: 0
|
1349
|
-
|
1349
|
+
paths:
|
1350
1350
|
:north: false
|
1351
1351
|
:east: true
|
1352
1352
|
:south: true
|
@@ -1369,7 +1369,7 @@ locations:
|
|
1369
1369
|
:x: 7
|
1370
1370
|
:y: 5
|
1371
1371
|
:z: 0
|
1372
|
-
|
1372
|
+
paths:
|
1373
1373
|
:north: true
|
1374
1374
|
:east: false
|
1375
1375
|
:south: false
|
@@ -1392,7 +1392,7 @@ locations:
|
|
1392
1392
|
:x: 7
|
1393
1393
|
:y: 6
|
1394
1394
|
:z: 0
|
1395
|
-
|
1395
|
+
paths:
|
1396
1396
|
:north: true
|
1397
1397
|
:east: false
|
1398
1398
|
:south: true
|
@@ -1415,7 +1415,7 @@ locations:
|
|
1415
1415
|
:x: 7
|
1416
1416
|
:y: 7
|
1417
1417
|
:z: 0
|
1418
|
-
|
1418
|
+
paths:
|
1419
1419
|
:north: true
|
1420
1420
|
:east: true
|
1421
1421
|
:south: true
|
@@ -1449,7 +1449,7 @@ locations:
|
|
1449
1449
|
:x: 8
|
1450
1450
|
:y: 7
|
1451
1451
|
:z: 0
|
1452
|
-
|
1452
|
+
paths:
|
1453
1453
|
:north: true
|
1454
1454
|
:east: false
|
1455
1455
|
:south: false
|
@@ -1498,7 +1498,7 @@ locations:
|
|
1498
1498
|
:x: 8
|
1499
1499
|
:y: 8
|
1500
1500
|
:z: 0
|
1501
|
-
|
1501
|
+
paths:
|
1502
1502
|
:north: false
|
1503
1503
|
:east: false
|
1504
1504
|
:south: true
|
@@ -1556,7 +1556,7 @@ locations:
|
|
1556
1556
|
:x: 7
|
1557
1557
|
:y: 8
|
1558
1558
|
:z: 0
|
1559
|
-
|
1559
|
+
paths:
|
1560
1560
|
:north: false
|
1561
1561
|
:east: true
|
1562
1562
|
:south: true
|
@@ -1590,7 +1590,7 @@ locations:
|
|
1590
1590
|
:x: 3
|
1591
1591
|
:y: 5
|
1592
1592
|
:z: 0
|
1593
|
-
|
1593
|
+
paths:
|
1594
1594
|
:north: false
|
1595
1595
|
:east: true
|
1596
1596
|
:south: false
|
@@ -1664,7 +1664,7 @@ locations:
|
|
1664
1664
|
:x: 8
|
1665
1665
|
:y: 6
|
1666
1666
|
:z: 1
|
1667
|
-
|
1667
|
+
paths:
|
1668
1668
|
:north: true
|
1669
1669
|
:east: true
|
1670
1670
|
:south: false
|
@@ -1699,7 +1699,7 @@ locations:
|
|
1699
1699
|
:x: 8
|
1700
1700
|
:y: 7
|
1701
1701
|
:z: 1
|
1702
|
-
|
1702
|
+
paths:
|
1703
1703
|
:north: false
|
1704
1704
|
:east: false
|
1705
1705
|
:south: true
|
@@ -1763,7 +1763,7 @@ locations:
|
|
1763
1763
|
:x: 7
|
1764
1764
|
:y: 6
|
1765
1765
|
:z: 1
|
1766
|
-
|
1766
|
+
paths:
|
1767
1767
|
:north: true
|
1768
1768
|
:east: true
|
1769
1769
|
:south: false
|
@@ -1797,7 +1797,7 @@ locations:
|
|
1797
1797
|
:x: 7
|
1798
1798
|
:y: 7
|
1799
1799
|
:z: 1
|
1800
|
-
|
1800
|
+
paths:
|
1801
1801
|
:north: true
|
1802
1802
|
:east: false
|
1803
1803
|
:south: true
|
@@ -1820,7 +1820,7 @@ locations:
|
|
1820
1820
|
:x: 7
|
1821
1821
|
:y: 8
|
1822
1822
|
:z: 1
|
1823
|
-
|
1823
|
+
paths:
|
1824
1824
|
:north: false
|
1825
1825
|
:east: true
|
1826
1826
|
:south: true
|
@@ -1856,7 +1856,7 @@ locations:
|
|
1856
1856
|
:x: 8
|
1857
1857
|
:y: 8
|
1858
1858
|
:z: 1
|
1859
|
-
|
1859
|
+
paths:
|
1860
1860
|
:north: false
|
1861
1861
|
:east: true
|
1862
1862
|
:south: false
|
@@ -1893,7 +1893,7 @@ locations:
|
|
1893
1893
|
:x: 8
|
1894
1894
|
:y: 9
|
1895
1895
|
:z: 1
|
1896
|
-
|
1896
|
+
paths:
|
1897
1897
|
:north: false
|
1898
1898
|
:east: false
|
1899
1899
|
:south: true
|
@@ -1928,7 +1928,7 @@ locations:
|
|
1928
1928
|
:x: 9
|
1929
1929
|
:y: 8
|
1930
1930
|
:z: 1
|
1931
|
-
|
1931
|
+
paths:
|
1932
1932
|
:north: false
|
1933
1933
|
:east: false
|
1934
1934
|
:south: true
|
@@ -1963,7 +1963,7 @@ locations:
|
|
1963
1963
|
:x: 9
|
1964
1964
|
:y: 7
|
1965
1965
|
:z: 1
|
1966
|
-
|
1966
|
+
paths:
|
1967
1967
|
:north: true
|
1968
1968
|
:east: false
|
1969
1969
|
:south: true
|
@@ -1986,7 +1986,7 @@ locations:
|
|
1986
1986
|
:x: 9
|
1987
1987
|
:y: 6
|
1988
1988
|
:z: 1
|
1989
|
-
|
1989
|
+
paths:
|
1990
1990
|
:north: true
|
1991
1991
|
:east: false
|
1992
1992
|
:south: false
|
@@ -2033,7 +2033,7 @@ locations:
|
|
2033
2033
|
:x: 5
|
2034
2034
|
:y: 5
|
2035
2035
|
:z: 2
|
2036
|
-
|
2036
|
+
paths:
|
2037
2037
|
:north: false
|
2038
2038
|
:east: false
|
2039
2039
|
:south: false
|
@@ -19,7 +19,7 @@ module Gemwarrior
|
|
19
19
|
def use(world)
|
20
20
|
forest_southwest = world.location_by_name('forest-southwest')
|
21
21
|
|
22
|
-
if forest_southwest.
|
22
|
+
if forest_southwest.paths[:west].eql? false
|
23
23
|
if !self.used
|
24
24
|
puts 'Many books look interesting, including one specific volume entitled "Use Me Again to Attempt Unlocking the Way", by Not Very Subtle.'
|
25
25
|
puts
|
@@ -33,7 +33,7 @@ module Gemwarrior
|
|
33
33
|
|
34
34
|
case answer
|
35
35
|
when 'mineral'
|
36
|
-
forest_southwest.
|
36
|
+
forest_southwest.paths[:west] = true
|
37
37
|
puts
|
38
38
|
Animation.run(phrase: OPEN_TEXT)
|
39
39
|
puts
|
@@ -13,7 +13,7 @@ module Gemwarrior
|
|
13
13
|
ERROR_ITEM_REMOVE_INVALID = 'That item cannot be removed as it does not exist here.'
|
14
14
|
|
15
15
|
attr_accessor :coords,
|
16
|
-
:
|
16
|
+
:paths,
|
17
17
|
:danger_level,
|
18
18
|
:monster_level_range,
|
19
19
|
:items,
|
@@ -21,6 +21,19 @@ module Gemwarrior
|
|
21
21
|
:bosses_abounding,
|
22
22
|
:checked_for_monsters
|
23
23
|
|
24
|
+
def initialize(options)
|
25
|
+
self.name = options.fetch(:name)
|
26
|
+
self.description = options.fetch(:description)
|
27
|
+
self.coords = options.fetch(:coords)
|
28
|
+
self.paths = options.fetch(:paths)
|
29
|
+
self.danger_level = options.fetch(:danger_level)
|
30
|
+
self.monster_level_range = options.fetch(:monster_level_range)
|
31
|
+
self.items = options.fetch(:items)
|
32
|
+
self.monsters_abounding = options.fetch(:monsters_abounding)
|
33
|
+
self.bosses_abounding = options.fetch[:bosses_abounding]
|
34
|
+
self.checked_for_monsters = false
|
35
|
+
end
|
36
|
+
|
24
37
|
def describe
|
25
38
|
desc_text = name.ljust(30).upcase.colorize(:green)
|
26
39
|
desc_text << coords.values.to_a.to_s.colorize(:white)
|
@@ -40,19 +53,6 @@ module Gemwarrior
|
|
40
53
|
desc_text
|
41
54
|
end
|
42
55
|
|
43
|
-
def initialize(options)
|
44
|
-
self.name = options.fetch(:name)
|
45
|
-
self.description = options.fetch(:description)
|
46
|
-
self.coords = options.fetch(:coords)
|
47
|
-
self.locs_connected = options.fetch(:locs_connected)
|
48
|
-
self.danger_level = options.fetch(:danger_level)
|
49
|
-
self.monster_level_range = options.fetch(:monster_level_range)
|
50
|
-
self.items = options.fetch(:items)
|
51
|
-
self.monsters_abounding = options.fetch(:monsters_abounding)
|
52
|
-
self.bosses_abounding = options.fetch[:bosses_abounding]
|
53
|
-
self.checked_for_monsters = false
|
54
|
-
end
|
55
|
-
|
56
56
|
def contains_item?(item_name)
|
57
57
|
self.items.map{|i| i.name.downcase}.include?(item_name.downcase)
|
58
58
|
end
|
@@ -66,7 +66,7 @@ module Gemwarrior
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def add_item(item_name_to_add)
|
69
|
-
all_items = GameItems.data
|
69
|
+
all_items = GameItems.data | GameWeapons.data | GameArmor.data
|
70
70
|
all_items.each do |game_item|
|
71
71
|
if game_item.name.eql?(item_name_to_add)
|
72
72
|
self.items.push(game_item)
|
@@ -78,7 +78,7 @@ module Gemwarrior
|
|
78
78
|
|
79
79
|
def remove_item(item_name)
|
80
80
|
if contains_item?(item_name)
|
81
|
-
items.
|
81
|
+
self.items.delete_at(items.index(items.find { |i| i.name.downcase == item_name.downcase }))
|
82
82
|
else
|
83
83
|
ERROR_ITEM_REMOVE_INVALID
|
84
84
|
end
|
@@ -100,7 +100,7 @@ module Gemwarrior
|
|
100
100
|
when 'w'
|
101
101
|
direction = 'west'
|
102
102
|
end
|
103
|
-
|
103
|
+
paths[direction.to_sym]
|
104
104
|
end
|
105
105
|
|
106
106
|
def monster_by_name(monster_name)
|
@@ -132,7 +132,36 @@ module Gemwarrior
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def list_items
|
135
|
-
items.
|
135
|
+
if items.empty?
|
136
|
+
[]
|
137
|
+
else
|
138
|
+
item_hash = {}
|
139
|
+
self.items.map(&:name).each do |i|
|
140
|
+
i_sym = i.to_sym
|
141
|
+
if item_hash.keys.include? i_sym
|
142
|
+
item_hash[i_sym] += 1
|
143
|
+
else
|
144
|
+
item_hash[i_sym] = 1
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
if item_hash.length == 1
|
149
|
+
item_hash.each do |i, q|
|
150
|
+
q > 1 ? "#{q} #{i}s" : i
|
151
|
+
end
|
152
|
+
else
|
153
|
+
item_arr = []
|
154
|
+
item_hash.each do |i, q|
|
155
|
+
if q > 1
|
156
|
+
item_arr.push("#{i.to_s.colorize(:yellow)}#{'s'.colorize(:yellow)} x#{q}")
|
157
|
+
else
|
158
|
+
item_arr.push(i)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
return item_arr
|
163
|
+
end
|
164
|
+
end
|
136
165
|
end
|
137
166
|
|
138
167
|
def list_monsters
|
@@ -145,7 +174,7 @@ module Gemwarrior
|
|
145
174
|
|
146
175
|
def list_paths
|
147
176
|
valid_paths = []
|
148
|
-
|
177
|
+
self.paths.each do |key, value|
|
149
178
|
if value
|
150
179
|
valid_paths.push(key.to_s)
|
151
180
|
end
|
@@ -49,7 +49,7 @@ module Gemwarrior
|
|
49
49
|
|
50
50
|
# unlock northward travel
|
51
51
|
river_bridge.description = 'The path northward on this well-constructed bridge is no longer blocked after your brutal scuffle with Jaspern, and yet the flowing river below seems unperturbed.'
|
52
|
-
river_bridge.
|
52
|
+
river_bridge.paths[:north] = true
|
53
53
|
return
|
54
54
|
end
|
55
55
|
|
@@ -76,9 +76,10 @@ module Gemwarrior
|
|
76
76
|
|
77
77
|
abilities = ''
|
78
78
|
if special_abilities.empty?
|
79
|
-
abilities =
|
79
|
+
abilities = " none...yet(?)\n"
|
80
80
|
else
|
81
81
|
special_abilities.each do |sp|
|
82
|
+
abilities << "\n"
|
82
83
|
abilities << " #{Formatting.upstyle(sp.to_s).ljust(15).colorize(:yellow)}: #{PlayerLevels.get_ability_description(sp)}\n"
|
83
84
|
end
|
84
85
|
end
|
@@ -96,7 +97,7 @@ module Gemwarrior
|
|
96
97
|
self_text << " (#{net_defense} w/ #{armor_slot})".colorize(:yellow) unless net_defense.nil?
|
97
98
|
self_text << "\n"
|
98
99
|
self_text << "DEXTERITY : #{self.dexterity}\n"
|
99
|
-
self_text << "ABILITIES
|
100
|
+
self_text << "ABILITIES :"
|
100
101
|
self_text << "#{abilities}"
|
101
102
|
|
102
103
|
if GameOptions.data['debug_mode']
|
data/lib/gemwarrior/evaluator.rb
CHANGED
data/lib/gemwarrior/game.rb
CHANGED
@@ -4,6 +4,9 @@
|
|
4
4
|
require 'colorize'
|
5
5
|
require 'matrext'
|
6
6
|
|
7
|
+
require_relative 'entities/armor/iron_helmet'
|
8
|
+
require_relative 'entities/items/herb'
|
9
|
+
require_relative 'entities/weapons/dagger'
|
7
10
|
require_relative 'misc/animation'
|
8
11
|
require_relative 'misc/audio'
|
9
12
|
require_relative 'misc/formatting'
|
@@ -18,7 +21,7 @@ module Gemwarrior
|
|
18
21
|
class Game
|
19
22
|
# CONSTANTS
|
20
23
|
INVENTORY_DEFAULT = Inventory.new
|
21
|
-
INVENTORY_DEBUG = Inventory.new([Herb.new])
|
24
|
+
INVENTORY_DEBUG = Inventory.new([Herb.new, Herb.new, Herb.new])
|
22
25
|
ROX_DEFAULT = 0
|
23
26
|
ROX_DEBUG = 300
|
24
27
|
|
@@ -17,6 +17,10 @@ module Gemwarrior
|
|
17
17
|
def self.data
|
18
18
|
@@data ||= []
|
19
19
|
end
|
20
|
+
|
21
|
+
def self.get(name)
|
22
|
+
self.data.find { |i| i.name.downcase == name.downcase }
|
23
|
+
end
|
20
24
|
end
|
21
25
|
|
22
26
|
module GameCreatures
|
@@ -28,6 +32,10 @@ module Gemwarrior
|
|
28
32
|
def self.data
|
29
33
|
@@data ||= []
|
30
34
|
end
|
35
|
+
|
36
|
+
def self.get(name)
|
37
|
+
self.data.find { |i| i.name.downcase == name.downcase }
|
38
|
+
end
|
31
39
|
end
|
32
40
|
|
33
41
|
module GameItems
|
@@ -39,6 +47,10 @@ module Gemwarrior
|
|
39
47
|
def self.data
|
40
48
|
@@data ||= []
|
41
49
|
end
|
50
|
+
|
51
|
+
def self.get(name)
|
52
|
+
self.data.find { |i| i.name.downcase == name.downcase }
|
53
|
+
end
|
42
54
|
end
|
43
55
|
|
44
56
|
module GameMonsters
|
@@ -50,6 +62,10 @@ module Gemwarrior
|
|
50
62
|
def self.data
|
51
63
|
@@data ||= []
|
52
64
|
end
|
65
|
+
|
66
|
+
def self.get(name)
|
67
|
+
self.data.find { |i| i.name.downcase == name.downcase }
|
68
|
+
end
|
53
69
|
end
|
54
70
|
|
55
71
|
module GamePeople
|
@@ -61,6 +77,10 @@ module Gemwarrior
|
|
61
77
|
def self.data
|
62
78
|
@@data ||= []
|
63
79
|
end
|
80
|
+
|
81
|
+
def self.get(name)
|
82
|
+
self.data.find { |i| i.name.downcase == name.downcase }
|
83
|
+
end
|
64
84
|
end
|
65
85
|
|
66
86
|
module GameWeapons
|
@@ -72,5 +92,9 @@ module Gemwarrior
|
|
72
92
|
def self.data
|
73
93
|
@@data ||= []
|
74
94
|
end
|
95
|
+
|
96
|
+
def self.get(name)
|
97
|
+
self.data.find { |i| i.name.downcase == name.downcase }
|
98
|
+
end
|
75
99
|
end
|
76
100
|
end
|
data/lib/gemwarrior/inventory.rb
CHANGED
@@ -14,6 +14,7 @@ module Gemwarrior
|
|
14
14
|
ERROR_ITEM_EQUIP_NONARMAMENT = 'That item cannot be equipped.'
|
15
15
|
ERROR_ITEM_UNEQUIP_INVALID = 'You do not possess anything called that to unequip.'
|
16
16
|
ERROR_ITEM_UNEQUIP_NONARMAMENT = 'That item cannot be unequipped.'
|
17
|
+
VOWELS = 'aeiou'
|
17
18
|
|
18
19
|
attr_accessor :items,
|
19
20
|
:weapon,
|
@@ -29,8 +30,50 @@ module Gemwarrior
|
|
29
30
|
self.items.nil? || self.items.empty?
|
30
31
|
end
|
31
32
|
|
33
|
+
def contents
|
34
|
+
is_empty? ? nil : list_contents
|
35
|
+
end
|
36
|
+
|
32
37
|
def list_contents
|
33
|
-
is_empty?
|
38
|
+
if is_empty?
|
39
|
+
'You possess nothing.'
|
40
|
+
else
|
41
|
+
item_hash = {}
|
42
|
+
self.items.map(&:name).each do |i|
|
43
|
+
i_sym = i.to_sym
|
44
|
+
if item_hash.keys.include? i_sym
|
45
|
+
item_hash[i_sym] += 1
|
46
|
+
else
|
47
|
+
item_hash[i_sym] = 1
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
if item_hash.length == 1
|
52
|
+
item_hash.each do |i, q|
|
53
|
+
if q > 1
|
54
|
+
return "You have #{q} #{i.to_s.colorize(:yellow)}#{'s'.colorize(:yellow)}."
|
55
|
+
else
|
56
|
+
article = VOWELS.include?(i[0]) ? 'an' : 'a'
|
57
|
+
return "You have #{article} #{i.to_s.colorize(:yellow)}."
|
58
|
+
end
|
59
|
+
end
|
60
|
+
else
|
61
|
+
item_list_text = 'You have '
|
62
|
+
item_arr = []
|
63
|
+
item_hash.each do |i, q|
|
64
|
+
if q > 1
|
65
|
+
item_arr.push("#{q} #{i.to_s.colorize(:yellow)}#{'s'.colorize(:yellow)}")
|
66
|
+
else
|
67
|
+
article = VOWELS.include?(i[0]) ? 'an' : 'a'
|
68
|
+
item_arr.push("#{article} #{i.to_s.colorize(:yellow)}")
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
item_arr[-1].replace("and #{item_arr[-1]}.")
|
73
|
+
|
74
|
+
return item_list_text << item_arr.join(', ')
|
75
|
+
end
|
76
|
+
end
|
34
77
|
end
|
35
78
|
|
36
79
|
def contains_item?(item_name)
|
@@ -77,10 +120,10 @@ module Gemwarrior
|
|
77
120
|
i.equipped = true
|
78
121
|
if i.is_weapon
|
79
122
|
self.weapon = i
|
80
|
-
return "The #{i.name} has taken charge, and been equipped."
|
123
|
+
return "The #{i.name.colorize(:yellow)} has taken charge, and been equipped."
|
81
124
|
elsif i.is_armor
|
82
125
|
self.armor = i
|
83
|
-
return "The #{i.name} has fortified, and has been equipped."
|
126
|
+
return "The #{i.name.colorize(:yellow)} has fortified, and has been equipped."
|
84
127
|
end
|
85
128
|
else
|
86
129
|
return ERROR_ITEM_EQUIP_NONARMAMENT
|
@@ -100,10 +143,10 @@ module Gemwarrior
|
|
100
143
|
i.equipped = false
|
101
144
|
if i.is_weapon
|
102
145
|
self.weapon = nil
|
103
|
-
return "The #{i.name} has been demoted to unequipped."
|
146
|
+
return "The #{i.name.colorize(:yellow)} has been demoted to unequipped."
|
104
147
|
elsif i.is_armor
|
105
148
|
self.armor = nil
|
106
|
-
return "The #{i.name} has been demoted to unequipped."
|
149
|
+
return "The #{i.name.colorize(:yellow)} has been demoted to unequipped."
|
107
150
|
end
|
108
151
|
else
|
109
152
|
return ERROR_ITEM_UNEQUIP_NONARMAMENT
|
@@ -128,7 +171,7 @@ module Gemwarrior
|
|
128
171
|
# stats
|
129
172
|
player.items_taken += 1
|
130
173
|
|
131
|
-
return "Added #{item_name} to your increasing collection of bits of tid
|
174
|
+
return "#{"Added".colorize(:green)} #{item_name.colorize(:yellow)} #{"to your increasing collection of bits of tid".colorize(:green)}."
|
132
175
|
else
|
133
176
|
return ERROR_ITEM_ADD_UNTAKEABLE.colorize(:red)
|
134
177
|
end
|
@@ -138,29 +181,21 @@ module Gemwarrior
|
|
138
181
|
ERROR_ITEM_ADD_INVALID.colorize(:red)
|
139
182
|
end
|
140
183
|
|
184
|
+
def drop_item(item_name, cur_loc)
|
185
|
+
if contains_item?(item_name)
|
186
|
+
remove_item(item_name)
|
187
|
+
cur_loc.add_item(item_name)
|
188
|
+
"You dropped #{item_name.colorize(:yellow)}."
|
189
|
+
else
|
190
|
+
ERROR_ITEM_REMOVE_INVALID
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
141
194
|
def remove_item(item_name)
|
142
195
|
self.items.delete_at(self.items.map(&:name).index(item_name) || self.items.length)
|
143
196
|
unless self.weapon.nil?
|
144
197
|
self.weapon = nil if self.weapon.name.eql?(item_name)
|
145
198
|
end
|
146
199
|
end
|
147
|
-
|
148
|
-
def drop_item(item_name)
|
149
|
-
if contains_item?(item_name)
|
150
|
-
print "Are you sure you want to permanently throw away #{item_name}? (y/n) "
|
151
|
-
answer = gets.chomp.downcase
|
152
|
-
|
153
|
-
case answer
|
154
|
-
when 'y', 'yes'
|
155
|
-
remove_item(item_name)
|
156
|
-
|
157
|
-
return "The #{item_name} has been thrown on the ground, but far out of reach, and you're much too lazy to go get it now, so it's as good as gone."
|
158
|
-
else
|
159
|
-
return "You decide to keep #{item_name} for now."
|
160
|
-
end
|
161
|
-
else
|
162
|
-
ERROR_ITEM_REMOVE_INVALID
|
163
|
-
end
|
164
|
-
end
|
165
200
|
end
|
166
201
|
end
|
data/lib/gemwarrior/version.rb
CHANGED
data/lib/gemwarrior/world.rb
CHANGED
@@ -5,7 +5,6 @@ require_relative 'game_options'
|
|
5
5
|
require_relative 'game_assets'
|
6
6
|
require_relative 'inventory'
|
7
7
|
require_relative 'entities/item'
|
8
|
-
require_relative 'entities/items/herb'
|
9
8
|
require_relative 'entities/location'
|
10
9
|
require_relative 'entities/player'
|
11
10
|
|
@@ -218,7 +217,7 @@ module Gemwarrior
|
|
218
217
|
z: floor.nil? ? self.player.cur_coords[:z] : floor.to_i
|
219
218
|
}
|
220
219
|
if self.player.cur_coords.eql?(cur_map_coords)
|
221
|
-
print '
|
220
|
+
print "|#{'O'.colorize(:cyan)}|"
|
222
221
|
elsif location_by_coords(cur_map_coords)
|
223
222
|
print '|X|'
|
224
223
|
else
|
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.
|
4
|
+
version: 0.12.0
|
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-09-
|
11
|
+
date: 2015-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: os
|