natural_20 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +99 -0
  9. data/Rakefile +6 -0
  10. data/bin/compute_lights +19 -0
  11. data/bin/console +19 -0
  12. data/bin/nat20 +135 -0
  13. data/bin/nat20.cmd +3 -0
  14. data/bin/nat20author +104 -0
  15. data/bin/setup +8 -0
  16. data/char_classes/fighter.yml +45 -0
  17. data/char_classes/rogue.yml +54 -0
  18. data/characters/halfling_rogue.yml +46 -0
  19. data/characters/high_elf_fighter.yml +49 -0
  20. data/fixtures/battle_sim.yml +58 -0
  21. data/fixtures/battle_sim_2.yml +30 -0
  22. data/fixtures/battle_sim_3.yml +26 -0
  23. data/fixtures/battle_sim_4.yml +26 -0
  24. data/fixtures/battle_sim_objects.yml +101 -0
  25. data/fixtures/corridors.yml +24 -0
  26. data/fixtures/elf_rogue.yml +39 -0
  27. data/fixtures/halfling_rogue.yml +41 -0
  28. data/fixtures/high_elf_fighter.yml +49 -0
  29. data/fixtures/human_fighter.yml +48 -0
  30. data/fixtures/path_finding_test.yml +11 -0
  31. data/fixtures/path_finding_test_2.yml +15 -0
  32. data/fixtures/path_finding_test_3.yml +26 -0
  33. data/fixtures/thin_walls.yml +53 -0
  34. data/fixtures/traps.yml +25 -0
  35. data/game.yml +20 -0
  36. data/items/equipment.yml +101 -0
  37. data/items/objects.yml +73 -0
  38. data/items/weapons.yml +297 -0
  39. data/lib/natural_20.rb +68 -0
  40. data/lib/natural_20/actions/action.rb +40 -0
  41. data/lib/natural_20/actions/attack_action.rb +372 -0
  42. data/lib/natural_20/actions/concerns/action_damage.rb +14 -0
  43. data/lib/natural_20/actions/dash_action.rb +46 -0
  44. data/lib/natural_20/actions/disengage_action.rb +53 -0
  45. data/lib/natural_20/actions/dodge_action.rb +45 -0
  46. data/lib/natural_20/actions/escape_grapple_action.rb +97 -0
  47. data/lib/natural_20/actions/first_aid_action.rb +109 -0
  48. data/lib/natural_20/actions/grapple_action.rb +185 -0
  49. data/lib/natural_20/actions/ground_interact_action.rb +74 -0
  50. data/lib/natural_20/actions/help_action.rb +56 -0
  51. data/lib/natural_20/actions/hide_action.rb +53 -0
  52. data/lib/natural_20/actions/interact_action.rb +91 -0
  53. data/lib/natural_20/actions/inventory_action.rb +23 -0
  54. data/lib/natural_20/actions/look_action.rb +63 -0
  55. data/lib/natural_20/actions/move_action.rb +254 -0
  56. data/lib/natural_20/actions/multiattack_action.rb +41 -0
  57. data/lib/natural_20/actions/prone_action.rb +38 -0
  58. data/lib/natural_20/actions/short_rest_action.rb +53 -0
  59. data/lib/natural_20/actions/shove_action.rb +142 -0
  60. data/lib/natural_20/actions/stand_action.rb +47 -0
  61. data/lib/natural_20/actions/use_item_action.rb +57 -0
  62. data/lib/natural_20/ai_controller/path_compute.rb +140 -0
  63. data/lib/natural_20/ai_controller/standard.rb +288 -0
  64. data/lib/natural_20/battle.rb +544 -0
  65. data/lib/natural_20/battle_map.rb +843 -0
  66. data/lib/natural_20/cli/builder/fighter_builder.rb +104 -0
  67. data/lib/natural_20/cli/builder/rogue_builder.rb +62 -0
  68. data/lib/natural_20/cli/character_builder.rb +210 -0
  69. data/lib/natural_20/cli/commandline_ui.rb +612 -0
  70. data/lib/natural_20/cli/inventory_ui.rb +136 -0
  71. data/lib/natural_20/cli/map_renderer.rb +165 -0
  72. data/lib/natural_20/concerns/container.rb +32 -0
  73. data/lib/natural_20/concerns/entity.rb +1213 -0
  74. data/lib/natural_20/concerns/evaluator/entity_state_evaluator.rb +59 -0
  75. data/lib/natural_20/concerns/fighter_actions/second_wind_action.rb +51 -0
  76. data/lib/natural_20/concerns/fighter_class.rb +35 -0
  77. data/lib/natural_20/concerns/health_flavor.rb +27 -0
  78. data/lib/natural_20/concerns/lootable.rb +94 -0
  79. data/lib/natural_20/concerns/movement_helper.rb +195 -0
  80. data/lib/natural_20/concerns/multiattack.rb +54 -0
  81. data/lib/natural_20/concerns/navigation.rb +87 -0
  82. data/lib/natural_20/concerns/notable.rb +37 -0
  83. data/lib/natural_20/concerns/rogue_class.rb +26 -0
  84. data/lib/natural_20/controller.rb +11 -0
  85. data/lib/natural_20/die_roll.rb +331 -0
  86. data/lib/natural_20/event_manager.rb +288 -0
  87. data/lib/natural_20/item_library/base_item.rb +27 -0
  88. data/lib/natural_20/item_library/chest.rb +230 -0
  89. data/lib/natural_20/item_library/door_object.rb +189 -0
  90. data/lib/natural_20/item_library/ground.rb +124 -0
  91. data/lib/natural_20/item_library/healing_potion.rb +51 -0
  92. data/lib/natural_20/item_library/object.rb +153 -0
  93. data/lib/natural_20/item_library/pit_trap.rb +69 -0
  94. data/lib/natural_20/item_library/stone_wall.rb +18 -0
  95. data/lib/natural_20/npc.rb +173 -0
  96. data/lib/natural_20/player_character.rb +414 -0
  97. data/lib/natural_20/session.rb +168 -0
  98. data/lib/natural_20/utils/cover.rb +35 -0
  99. data/lib/natural_20/utils/ray_tracer.rb +90 -0
  100. data/lib/natural_20/utils/static_light_builder.rb +72 -0
  101. data/lib/natural_20/utils/weapons.rb +78 -0
  102. data/lib/natural_20/version.rb +4 -0
  103. data/locales/en.yml +304 -0
  104. data/maps/game_map.yml +168 -0
  105. data/natural_20.gemspec +46 -0
  106. data/npcs/goblin.yml +64 -0
  107. data/npcs/human_guard.yml +48 -0
  108. data/npcs/ogre.yml +61 -0
  109. data/npcs/owlbear.yml +55 -0
  110. data/npcs/wolf.yml +46 -0
  111. data/races/elf.yml +44 -0
  112. data/races/halfling.yml +22 -0
  113. data/races/human.yml +13 -0
  114. metadata +373 -0
@@ -0,0 +1,46 @@
1
+ require_relative "lib/natural_20/version"
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "natural_20"
5
+ spec.version = Natural20::VERSION
6
+ spec.authors = ["Joseph Dayo"]
7
+ spec.email = ["joseph.dayo@gmail.com"]
8
+
9
+ spec.summary = %q{A ruby based engine for building text based RPGs based on DnD 5th Edition rules}
10
+ spec.description = %q{A ruby based engine for building text based RPGs based on DnD 5th Edition rules}
11
+ spec.homepage = "https://github.com/jedld/natural_20.git"
12
+ spec.license = "MIT"
13
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
14
+
15
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = "https://github.com/jedld/natural_20.git"
19
+
20
+ # Specify which files should be added to the gem when it is released.
21
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
+ spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
23
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
24
+ end
25
+ spec.bindir = "bin"
26
+ spec.executables = ['nat20', 'nat20author', 'nat20.cmd']
27
+ spec.require_paths = ["lib"]
28
+
29
+ spec.add_development_dependency "bundler"
30
+ spec.add_development_dependency "solargraph"
31
+ spec.add_development_dependency "rspec"
32
+ spec.add_development_dependency "rubocop"
33
+ spec.add_development_dependency "rubocop-rspec"
34
+ spec.add_development_dependency "rubocop-rake"
35
+ spec.add_dependency "tty-table"
36
+ spec.add_dependency "tty-prompt"
37
+ spec.add_dependency "activesupport"
38
+ spec.add_dependency "random_name_generator"
39
+ spec.add_dependency "colorize"
40
+ spec.add_dependency "pqueue"
41
+ spec.add_dependency "i18n"
42
+ spec.add_dependency "bond"
43
+ if RUBY_ENGINE == "ruby"
44
+ spec.add_dependency "pry-byebug"
45
+ end
46
+ end
data/npcs/goblin.yml ADDED
@@ -0,0 +1,64 @@
1
+ ---
2
+ kind: Goblin
3
+ description: Goblins are small, black-hearted humanoids that lair in despoiled dungeons
4
+ and other dismal settings. Individually weak, they gather in large numbers to torment
5
+ other creatures.
6
+ size: small
7
+ race:
8
+ - humanoid
9
+ - goblinoid
10
+ alignment: neutral_evil
11
+ default_ac: 15
12
+ max_hp: 7
13
+ hp_die: 2d6
14
+ speed: 30
15
+ passive_perception: 9
16
+ darkvision: 60
17
+ token:
18
+ - g
19
+ color: green
20
+ ability:
21
+ str: 8
22
+ dex: 14
23
+ con: 10
24
+ int: 10
25
+ wis: 8
26
+ cha: 8
27
+ skills:
28
+ stealth: 6
29
+ languages:
30
+ - common
31
+ - goblin
32
+ cr: 0.25
33
+ xp: 50
34
+ proficiency_bonus: 2
35
+ attributes:
36
+ - nimble_escape
37
+ actions:
38
+ - name: Scimitar
39
+ type: melee_attack
40
+ if: equipped:scimitar
41
+ range: 5
42
+ targets: 1
43
+ attack: 4
44
+ damage: 5
45
+ damage_die: 1d6+2
46
+ damage_type: slashing
47
+ - name: Shortbow
48
+ type: ranged_attack
49
+ if: equipped:shortbow
50
+ range: 80
51
+ range_max: 320
52
+ targets: 1
53
+ attack: 4
54
+ damage: 5
55
+ damage_die: 1d6
56
+ damage_mod: 2
57
+ damage_type: piercing
58
+ ammo: arrows
59
+ equipped:
60
+ - scimitar
61
+ - shortbow
62
+ default_inventory:
63
+ - type: arrows
64
+ qty: 20
@@ -0,0 +1,48 @@
1
+ ---
2
+ kind: Guard
3
+ description: Generic guards present in towns and in the service of nobles
4
+ size: medium
5
+ race:
6
+ - humanoid
7
+ - human
8
+ alignment: neutral_evil
9
+ default_ac: 16
10
+ max_hp: 11
11
+ hp_die: 2d8 + 2
12
+ speed: 30
13
+ passive_perception: 12
14
+ token:
15
+ - Î
16
+ color: magenta
17
+ ability:
18
+ str: 13
19
+ dex: 12
20
+ con: 12
21
+ int: 10
22
+ wis: 11
23
+ cha: 10
24
+ skills:
25
+ perception: 2
26
+ languages:
27
+ - common
28
+ cr: 0.125
29
+ xp: 25
30
+ proficiency_bonus: 2
31
+ actions:
32
+ - name: spear
33
+ type: melee_attack
34
+ if: equipped:spear
35
+ range: 5
36
+ targets: 1
37
+ attack: 3
38
+ damage: 5
39
+ damage_die: 1d6+1
40
+ damage_type: piercing
41
+ equipped:
42
+ - spear
43
+ - chain_shirt
44
+ default_inventory:
45
+ - type: shield
46
+ qty: 1
47
+ - type: spear
48
+ qty: 1
data/npcs/ogre.yml ADDED
@@ -0,0 +1,61 @@
1
+ ---
2
+ kind: Ogre
3
+ description: Ogres are hulking giants notorious for their quick tempers. When its
4
+ rage is incited, an ogre lashes out in a frustrated tantrum until it runs out of
5
+ objects or creatures to smash.
6
+ size: large
7
+ race:
8
+ - giant
9
+ alignment: chaotic_evil
10
+ default_ac: 11
11
+ max_hp: 59
12
+ hp_die: 7d10+21
13
+ speed: 40
14
+ passive_perception: 9
15
+ darkvision: 60
16
+ token:
17
+ - O┐
18
+ - └┘
19
+ color: green
20
+ ability:
21
+ str: 19
22
+ dex: 8
23
+ con: 16
24
+ int: 5
25
+ wis: 7
26
+ cha: 7
27
+ skills:
28
+ stealth: 6
29
+ languages:
30
+ - common
31
+ - giant
32
+ cr: 2
33
+ xp: 250
34
+ proficiency_bonus: 2
35
+ attributes: []
36
+ actions:
37
+ - name: Greatclub
38
+ type: melee_attack
39
+ if: equipped:greatclub
40
+ range: 5
41
+ targets: 1
42
+ attack: 6
43
+ damage: 13
44
+ damage_die: 2d8+4
45
+ damage_type: slashing
46
+ - name: Javelin
47
+ type: ranged_attack
48
+ range: 30
49
+ range_max: 120
50
+ targets: 1
51
+ attack: 6
52
+ damage: 5
53
+ damage_die: 2d6+4
54
+ damage_mod: 2
55
+ damage_type: piercing
56
+ ammo: javelin
57
+ equipped:
58
+ - greatclub
59
+ default_inventory:
60
+ - type: javelin
61
+ qty: 1
data/npcs/owlbear.yml ADDED
@@ -0,0 +1,55 @@
1
+ ---
2
+ kind: Owlbear
3
+ description: A monstrous cross between giant owl and bear, an owlbear’s reputation for ferocity and aggression makes it one of the most feared predators of the wild.
4
+ size: large
5
+ race:
6
+ - monstrosity
7
+ alignment: unaligned
8
+ default_ac: 13
9
+ max_hp: 59
10
+ hp_die: 7d10+21
11
+ speed: 40
12
+ passive_perception: 13
13
+ darkvision: 60
14
+ token:
15
+ - \/
16
+ - └┘
17
+ color: light_magenta
18
+ ability:
19
+ str: 20
20
+ dex: 12
21
+ con: 17
22
+ int: 3
23
+ wis: 12
24
+ cha: 7
25
+ skills:
26
+ perceiption: 3
27
+ languages:
28
+ cr: 3
29
+ xp: 700
30
+ proficiency_bonus: 2
31
+ attributes:
32
+ - keen_sight_and_smell
33
+ - multiattack
34
+ multiattack:
35
+ - beak,claws
36
+ actions:
37
+ - name: beak
38
+ type: melee_attack
39
+ range: 5
40
+ targets: 1
41
+ attack: 7
42
+ damage: 10
43
+ damage_die: 1d10+5
44
+ damage_type: piercing
45
+ multiattack_group: 1
46
+ - name: claws
47
+ type: melee_attack
48
+ range: 5
49
+ targets: 1
50
+ attack: 7
51
+ damage: 14
52
+ damage_die: 2d8+5
53
+ damage_type: piercing
54
+ multiattack_group: 1
55
+ default_inventory: []
data/npcs/wolf.yml ADDED
@@ -0,0 +1,46 @@
1
+ ---
2
+ kind: Wolf
3
+ description: It's a wolf
4
+ size: medium
5
+ race:
6
+ - beast
7
+ alignment: unaligned
8
+ default_ac: 13
9
+ max_hp: 11
10
+ hp_die: 2d8+2
11
+ speed: 40
12
+ passive_perception: 13
13
+ token:
14
+ - <
15
+ color: magenta
16
+ ability:
17
+ str: 12
18
+ dex: 15
19
+ con: 12
20
+ int: 3
21
+ wis: 12
22
+ cha: 6
23
+ skills:
24
+ stealth: 4
25
+ perception: 3
26
+ languages:
27
+ - wolf
28
+ cr: 0.25
29
+ xp: 50
30
+ proficiency_bonus: 2
31
+ attributes:
32
+ - pack_tactics
33
+ actions:
34
+ - name: Bite
35
+ type: melee_attack
36
+ range: 5
37
+ targets: 1
38
+ attack: 4
39
+ damage: 7
40
+ damage_die: 2d4+2
41
+ damage_type: piercing
42
+ on_hit:
43
+ - save_dc: strength:11
44
+ if: !target:object
45
+ flavor_fail: wolf.lunge
46
+ fail: status:prone
data/races/elf.yml ADDED
@@ -0,0 +1,44 @@
1
+ base_speed: 30
2
+ size: medium
3
+ darkvision: 60
4
+ attribute_bonus:
5
+ dex: 2
6
+ skills:
7
+ - perception
8
+ languages:
9
+ - common
10
+ - elvish
11
+ race_features:
12
+ - fey_ancestry
13
+ - trance
14
+ subrace:
15
+ high_elf:
16
+ language_choice: 1
17
+ attribute_bonus:
18
+ int: 1
19
+ weapon_proficiencies:
20
+ - longsword
21
+ - shortsword
22
+ - shortbow
23
+ - longbow
24
+ wood_elf:
25
+ base_speed: 35
26
+ attribute_bonus:
27
+ wis: 1
28
+ race_features:
29
+ - mask_of_the_wild
30
+ weapon_proficiencies:
31
+ - longsword
32
+ - shortsword
33
+ - shortbow
34
+ - longbow
35
+ dark_elf:
36
+ darkvision: 120
37
+ attribute_bonus:
38
+ cha: 1
39
+ race_features:
40
+ - sunlight_sensitivity
41
+ weapon_proficiencies:
42
+ - rapiers
43
+ - shortsword
44
+ - hand_crossbow
@@ -0,0 +1,22 @@
1
+ base_speed: 25
2
+ size: small
3
+ languages:
4
+ - common
5
+ - halfling
6
+ attribute_bonus:
7
+ dex: 2
8
+ race_features:
9
+ - brave
10
+ - lucky
11
+ - halfling_nimbleness
12
+ subrace:
13
+ lightfoot:
14
+ attribute_bonus:
15
+ cha: 1
16
+ race_features:
17
+ - naturally_stealthy
18
+ stout:
19
+ attribute_bonus:
20
+ con: 1
21
+ race_features:
22
+ - stout_resilience
data/races/human.yml ADDED
@@ -0,0 +1,13 @@
1
+ base_speed: 30
2
+ size: medium
3
+ languages:
4
+ - common
5
+ attribute_bonus:
6
+ dex: 1
7
+ con: 1
8
+ wis: 1
9
+ cha: 1
10
+ int: 1
11
+ str: 1
12
+ language_choice: 1
13
+
metadata ADDED
@@ -0,0 +1,373 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: natural_20
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Joseph Dayo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-02-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: solargraph
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: tty-table
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: tty-prompt
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: activesupport
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: random_name_generator
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: colorize
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: pqueue
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: i18n
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: bond
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: pry-byebug
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ description: A ruby based engine for building text based RPGs based on DnD 5th Edition
224
+ rules
225
+ email:
226
+ - joseph.dayo@gmail.com
227
+ executables:
228
+ - nat20
229
+ - nat20author
230
+ - nat20.cmd
231
+ extensions: []
232
+ extra_rdoc_files: []
233
+ files:
234
+ - ".gitignore"
235
+ - ".rspec"
236
+ - ".travis.yml"
237
+ - CODE_OF_CONDUCT.md
238
+ - Gemfile
239
+ - LICENSE.txt
240
+ - README.md
241
+ - Rakefile
242
+ - bin/compute_lights
243
+ - bin/console
244
+ - bin/nat20
245
+ - bin/nat20.cmd
246
+ - bin/nat20author
247
+ - bin/setup
248
+ - char_classes/fighter.yml
249
+ - char_classes/rogue.yml
250
+ - characters/halfling_rogue.yml
251
+ - characters/high_elf_fighter.yml
252
+ - fixtures/battle_sim.yml
253
+ - fixtures/battle_sim_2.yml
254
+ - fixtures/battle_sim_3.yml
255
+ - fixtures/battle_sim_4.yml
256
+ - fixtures/battle_sim_objects.yml
257
+ - fixtures/corridors.yml
258
+ - fixtures/elf_rogue.yml
259
+ - fixtures/halfling_rogue.yml
260
+ - fixtures/high_elf_fighter.yml
261
+ - fixtures/human_fighter.yml
262
+ - fixtures/path_finding_test.yml
263
+ - fixtures/path_finding_test_2.yml
264
+ - fixtures/path_finding_test_3.yml
265
+ - fixtures/thin_walls.yml
266
+ - fixtures/traps.yml
267
+ - game.yml
268
+ - items/equipment.yml
269
+ - items/objects.yml
270
+ - items/weapons.yml
271
+ - lib/natural_20.rb
272
+ - lib/natural_20/actions/action.rb
273
+ - lib/natural_20/actions/attack_action.rb
274
+ - lib/natural_20/actions/concerns/action_damage.rb
275
+ - lib/natural_20/actions/dash_action.rb
276
+ - lib/natural_20/actions/disengage_action.rb
277
+ - lib/natural_20/actions/dodge_action.rb
278
+ - lib/natural_20/actions/escape_grapple_action.rb
279
+ - lib/natural_20/actions/first_aid_action.rb
280
+ - lib/natural_20/actions/grapple_action.rb
281
+ - lib/natural_20/actions/ground_interact_action.rb
282
+ - lib/natural_20/actions/help_action.rb
283
+ - lib/natural_20/actions/hide_action.rb
284
+ - lib/natural_20/actions/interact_action.rb
285
+ - lib/natural_20/actions/inventory_action.rb
286
+ - lib/natural_20/actions/look_action.rb
287
+ - lib/natural_20/actions/move_action.rb
288
+ - lib/natural_20/actions/multiattack_action.rb
289
+ - lib/natural_20/actions/prone_action.rb
290
+ - lib/natural_20/actions/short_rest_action.rb
291
+ - lib/natural_20/actions/shove_action.rb
292
+ - lib/natural_20/actions/stand_action.rb
293
+ - lib/natural_20/actions/use_item_action.rb
294
+ - lib/natural_20/ai_controller/path_compute.rb
295
+ - lib/natural_20/ai_controller/standard.rb
296
+ - lib/natural_20/battle.rb
297
+ - lib/natural_20/battle_map.rb
298
+ - lib/natural_20/cli/builder/fighter_builder.rb
299
+ - lib/natural_20/cli/builder/rogue_builder.rb
300
+ - lib/natural_20/cli/character_builder.rb
301
+ - lib/natural_20/cli/commandline_ui.rb
302
+ - lib/natural_20/cli/inventory_ui.rb
303
+ - lib/natural_20/cli/map_renderer.rb
304
+ - lib/natural_20/concerns/container.rb
305
+ - lib/natural_20/concerns/entity.rb
306
+ - lib/natural_20/concerns/evaluator/entity_state_evaluator.rb
307
+ - lib/natural_20/concerns/fighter_actions/second_wind_action.rb
308
+ - lib/natural_20/concerns/fighter_class.rb
309
+ - lib/natural_20/concerns/health_flavor.rb
310
+ - lib/natural_20/concerns/lootable.rb
311
+ - lib/natural_20/concerns/movement_helper.rb
312
+ - lib/natural_20/concerns/multiattack.rb
313
+ - lib/natural_20/concerns/navigation.rb
314
+ - lib/natural_20/concerns/notable.rb
315
+ - lib/natural_20/concerns/rogue_class.rb
316
+ - lib/natural_20/controller.rb
317
+ - lib/natural_20/die_roll.rb
318
+ - lib/natural_20/event_manager.rb
319
+ - lib/natural_20/item_library/base_item.rb
320
+ - lib/natural_20/item_library/chest.rb
321
+ - lib/natural_20/item_library/door_object.rb
322
+ - lib/natural_20/item_library/ground.rb
323
+ - lib/natural_20/item_library/healing_potion.rb
324
+ - lib/natural_20/item_library/object.rb
325
+ - lib/natural_20/item_library/pit_trap.rb
326
+ - lib/natural_20/item_library/stone_wall.rb
327
+ - lib/natural_20/npc.rb
328
+ - lib/natural_20/player_character.rb
329
+ - lib/natural_20/session.rb
330
+ - lib/natural_20/utils/cover.rb
331
+ - lib/natural_20/utils/ray_tracer.rb
332
+ - lib/natural_20/utils/static_light_builder.rb
333
+ - lib/natural_20/utils/weapons.rb
334
+ - lib/natural_20/version.rb
335
+ - locales/en.yml
336
+ - maps/game_map.yml
337
+ - natural_20.gemspec
338
+ - npcs/goblin.yml
339
+ - npcs/human_guard.yml
340
+ - npcs/ogre.yml
341
+ - npcs/owlbear.yml
342
+ - npcs/wolf.yml
343
+ - races/elf.yml
344
+ - races/halfling.yml
345
+ - races/human.yml
346
+ homepage: https://github.com/jedld/natural_20.git
347
+ licenses:
348
+ - MIT
349
+ metadata:
350
+ allowed_push_host: https://rubygems.org
351
+ homepage_uri: https://github.com/jedld/natural_20.git
352
+ source_code_uri: https://github.com/jedld/natural_20.git
353
+ post_install_message:
354
+ rdoc_options: []
355
+ require_paths:
356
+ - lib
357
+ required_ruby_version: !ruby/object:Gem::Requirement
358
+ requirements:
359
+ - - ">="
360
+ - !ruby/object:Gem::Version
361
+ version: 2.5.0
362
+ required_rubygems_version: !ruby/object:Gem::Requirement
363
+ requirements:
364
+ - - ">="
365
+ - !ruby/object:Gem::Version
366
+ version: '0'
367
+ requirements: []
368
+ rubygems_version: 3.0.8
369
+ signing_key:
370
+ specification_version: 4
371
+ summary: A ruby based engine for building text based RPGs based on DnD 5th Edition
372
+ rules
373
+ test_files: []