natural_20 0.1.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.
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: []