asciidoctor-p2e 0.2.2 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 372fd943b4bee5f8032c4c0cd15a33eeaf3bbbb4ef6109bf409403a9653972e2
4
- data.tar.gz: fdddc210c0e1fca87afe1b9c78b5e47f9f142bc53e1c3d6d267eb2cb8ef5ce3d
3
+ metadata.gz: a103cf94f96f6ae10dd251af9eb40aa7ad2f2ec45b1d01de2155b0d3cf7d013c
4
+ data.tar.gz: 71a7dbc42f3a8de6befa20b0a234dac79f13867afa36057497d24e8fcf1f9ef8
5
5
  SHA512:
6
- metadata.gz: 6c771f114b9153c1b019b2d7bbac31f19ebf2640c89d254e6248bfa68482b87f64e3cb6b8ee686b27f01adc94b5e29ecb008ef93bb6743a449a1087327c0306b
7
- data.tar.gz: 22797ca09304c323dc86179a2c2fb9afb436c8b5e5bd29be1c8e14b687267bd6ec05c68eaf955e685ace1357c7fe6d44164ea0f72d99b5471d2de19874ad310f
6
+ metadata.gz: 6dcb56644246651eb48fc1fc9309623fbaf2a3b582b3d58be4de5b6ebc1c88ff7daa18adb9b94e71a9c5f491de4afbfed5ef9612f3540833174fb7167e8d6a1e
7
+ data.tar.gz: c9ed56689d67652e6c68f3de7b20b74b32336fe786fbee7faa4842c6b8a158815edb36d409b92251fac84a262ddc053669f4c2b9bb21c3df04a2c15eb3a1cbec
data/README.adoc CHANGED
@@ -10,16 +10,17 @@ https://asciidoctor.org/[Asciidoctor]! asciidoctor-p2e is an
10
10
  https://docs.asciidoctor.org/asciidoctor/latest/extensions/[extension] for
11
11
  AsciiDoctor that makes it easier to create stylized content for the
12
12
  https://paizo.com/pathfinder[Pathfinder Second Edition roleplaying system].
13
- Your years of searching are at an end, for this extension supports NPC/Creature
14
- stat blocks, a stylized Table of Contents, decorated Sidebars, and
15
- Pathfinder-style headers. All of which will be demonstrated in cloying detail!
13
+ Your years of searching are at an end, for this extension supports creature
14
+ stat blocks, item stat blocks, hazard stat blocks, a stylized Table of
15
+ Contents, decorated Sidebars, and Pathfinder-style headers. All of which will
16
+ be demonstrated in cloying detail!
16
17
 
17
18
  You can find the git repo for this project in the mystical realm of SourceHut:
18
19
  https://git.sr.ht/~bosco/asciidoctor-p2e, a fantastic forge of free software
19
20
  also known to the old ones as
20
21
  https://drewdevault.com/2018/11/15/sr.ht-general-availability.html[Sir Hat].
21
22
 
22
- == Wielding (Usage)
23
+ == Usage
23
24
 
24
25
  This extension is archived in the scrolls of
25
26
  https://rubygems.org/gems/asciidoctor-p2e[RubyGems] and can be added to your
@@ -30,14 +31,27 @@ inventory with the `gem install asciidoctor-p2e` command. Once the
30
31
  NOTE: Images and assets will be installed/referenced in a `p2e` directory
31
32
  wherever your output is created.
32
33
 
33
- == Skills of Thine Enemies (Stat Blocks)
34
+ == Style
34
35
 
35
- A new block of type `stat` can be used to create a stat block from
36
- https://toml.io/en/[TOML input]. For example the following TOML:
36
+ Zero level headers will use a yellow outline Eczar font and first level headers
37
+ will use the Eczar font. This styling is from the
38
+ https://www.gmbinder.com/share/-LxQNtitjvBT2eCVkPt1[GM Binder Pathfinder 2nd
39
+ Edition Homebrew Template]. Fonts are included with `asciidoctor-p2e` and will
40
+ be installed in the `p2e` directory when your output is created. The body of
41
+ the document uses a parchment background.
42
+
43
+ As you can see on the left, if the Table of Contents is used (`:toc: left`) a
44
+ burnt parchment edge will be show with Pathfinder style header fonts for each
45
+ section.
46
+
47
+ == Enemies
48
+
49
+ A block of type `stat` can be used to create a creature stat block from
50
+ https://toml.io/en/[TOML input]. For example:
37
51
 
38
52
  [source, asciidoc]
39
53
  ----
40
- [stat]
54
+ [stat.center, type=creature]
41
55
  --
42
56
  name = "Hoo Man"
43
57
  level = "1"
@@ -83,9 +97,12 @@ text = """\
83
97
  --
84
98
  ----
85
99
 
86
- Will create the following stat block:
100
+ Notice that a role can be passed: in this case 'center'. If the block is floated
101
+ (left right) a 20px margin will be set on the opposite side. If a type is not
102
+ specified, 'creature' is assumed. The above listing creates the following stat
103
+ block:
87
104
 
88
- [stat]
105
+ [stat.center, type=creature]
89
106
  --
90
107
  name = "Hoo Man"
91
108
  level = "1"
@@ -130,21 +147,209 @@ text = """\
130
147
  """
131
148
  --
132
149
 
133
- == Mystical Script (Fonts)
150
+ == Treasure
134
151
 
135
- Zero level headers will use a yellow outline Eczar font and first level headers
136
- will use the Eczar font. This styling is from the
137
- https://www.gmbinder.com/share/-LxQNtitjvBT2eCVkPt1[GM Binder Pathfinder 2nd
138
- Edition Homebrew Template]. Fonts are included with `asciidoctor-p2e` and will
139
- be installed in the `p2e` directory when your output is created.
152
+ In a similar fashion to creature stat blocks, item stat blocks can be created:
140
153
 
141
- == Spellbook Passages (Table of Contents)
154
+ [source, asciidoctor]
155
+ ----
156
+ [stat.center, type=item]
157
+ --
158
+ name = "Pear of Silence"
159
+ level = "6+"
160
+ tags = ["uncommon"]
161
+ price = "100 gp" # optional
162
+ usage = "held in 1 hand"
163
+ bulk = "L"
164
+ description = """\
165
+ A cruel device famed to be designed by Roderick the Malevolent. A seemingly \
166
+ delicious fruit, when placed in someone's mouth it expands to render them \
167
+ unable to speak. A magical phrase that disables the effect is bound to the \
168
+ fruit at the time of creation (not that the victim would be able to utter \
169
+ it).\
170
+ """
142
171
 
143
- As you can see on the left, if the Table of Contents is used (`:toc: left`) a
144
- burnt parchment edge will be show with Pathfinder style header fonts for each
145
- section.
172
+ [hardness] # optional
173
+ hardness = "9"
174
+ hp = "10"
175
+ bp = "5"
176
+
177
+ [[activations]] # optional
178
+ actions = 1
179
+ actionText = "Interact" # optional
180
+ trigger = "The pear is placed inside someone's mouth" # optional
181
+ # effect is optional too
182
+ effect = """\
183
+ The pear rapidly expands, filling the victims mouth and rendering them \
184
+ unable to speak until the pear is destroyed or disabled.\
185
+ """
186
+
187
+ [[activations]]
188
+ actions = 2
189
+ actionText = "Interact"
190
+ trigger = """\
191
+ The magic phrase that disables the pear is spoken loudly at a distance of \
192
+ less than five feet from the pear.\
193
+ """
194
+ effect = """\
195
+ The pear resumes its normal shape and form. It can be spit out by the \
196
+ victim.\
197
+ """
198
+
199
+ [[types]] #optional
200
+ type = "lesser"
201
+ level = "6"
202
+ price = "100 gp" # optional
203
+ description = """\
204
+ Can be destroyed by the victim with a DC 20 Fortitude saving throw.\
205
+ """
206
+
207
+ [[types]]
208
+ type = "greater"
209
+ level = "10"
210
+ price = "200 gp"
211
+ description = """\
212
+ Can be destroyed by the victim with a DC 25 Fortitude saving throw.\
213
+ """
214
+
215
+ [[types]]
216
+ type = "major"
217
+ level = "12"
218
+ price = "300 gp"
219
+ description = """\
220
+ Can be destroyed by the victim with a DC 30 Fortitude saving throw.\
221
+ """
222
+ --
223
+ ----
224
+
225
+ The above block yields:
226
+
227
+ [stat.center, type=item]
228
+ --
229
+ name = "Pear of Silence"
230
+ level = "6+"
231
+ tags = ["uncommon"]
232
+ price = "100 gp" # optional
233
+ usage = "held in 1 hand"
234
+ bulk = "L"
235
+ description = """\
236
+ A cruel device famed to be designed by Roderick the Malevolent. A seemingly \
237
+ delicious fruit, when placed in someone's mouth it expands to render them \
238
+ unable to speak. A magical phrase that disables the effect is bound to the \
239
+ fruit at the time of creation (not that the victim would be able to utter \
240
+ it).\
241
+ """
242
+
243
+ [hardness] # optional
244
+ hardness = "9"
245
+ hp = "10"
246
+ bp = "5"
247
+
248
+ [[activations]] # optional
249
+ actions = 1
250
+ actionText = "Interact" # optional
251
+ trigger = "The pear is placed inside someone's mouth" # optional
252
+ # effect is optional too
253
+ effect = """\
254
+ The pear rapidly expands, filling the victims mouth and rendering them \
255
+ unable to speak until the pear is destroyed or disabled.\
256
+ """
257
+
258
+ [[activations]]
259
+ actions = 2
260
+ actionText = "Interact"
261
+ trigger = """\
262
+ The magic phrase that disables the pear is spoken loudly at a distance of \
263
+ less than five feet from the pear.\
264
+ """
265
+ effect = """\
266
+ The pear resumes its normal shape and form. It can be spit out by the \
267
+ victim.\
268
+ """
269
+
270
+ [[types]] #optional
271
+ type = "lesser"
272
+ level = "6"
273
+ price = "100 gp" # optional
274
+ description = """\
275
+ Can be destroyed by the victim with a DC 20 Fortitude saving throw.\
276
+ """
277
+
278
+ [[types]]
279
+ type = "greater"
280
+ level = "10"
281
+ price = "200 gp"
282
+ description = """\
283
+ Can be destroyed by the victim with a DC 25 Fortitude saving throw.\
284
+ """
285
+
286
+ [[types]]
287
+ type = "major"
288
+ level = "12"
289
+ price = "300 gp"
290
+ description = """\
291
+ Can be destroyed by the victim with a DC 30 Fortitude saving throw.\
292
+ """
293
+ --
294
+
295
+ == Traps
146
296
 
147
- == Cryptic Texts (Sidebars)
297
+ Hazard stat blocks can also be created:
298
+
299
+ [source, asciidoctor]
300
+ ----
301
+ [stat.center, type=hazard]
302
+ ====
303
+ name = "Bed Spike"
304
+ level = "1"
305
+ tags = ["mechanical", "trap"]
306
+ stealth = "DC 15 (or 0 if they look under the bed)"
307
+ description = """\
308
+ The support ropes for a bed are cut almost completely through. Under the bed \
309
+ are several sharpened wooded spikes. Typically the sheets are hung over the \
310
+ edge of the bed to disguise the spikes.\
311
+ """
312
+ disable = """\
313
+ Crafting DC 10 to remove the spikes. The bed will still not support weight \
314
+ but there will be no damage caused by falling through.\
315
+ """
316
+
317
+ [[triggers]]
318
+ name = "Fall Through"
319
+ text = """\
320
+ A creature lays on the bed, causing the ropes to snap and dealing 1D6 piercing
321
+ damage.\
322
+ """
323
+ ====
324
+ ----
325
+
326
+ The above block yields:
327
+
328
+ [stat.center, type=hazard]
329
+ ====
330
+ name = "Bed Spike"
331
+ level = "1"
332
+ tags = ["mechanical", "trap"]
333
+ stealth = "DC 15 (or 0 if they look under the bed)"
334
+ description = """\
335
+ The support ropes for a bed are cut almost completely through. Under the bed \
336
+ are several sharpened wooded spikes. Typically the sheets are hung over the \
337
+ edge of the bed to disguise the spikes.\
338
+ """
339
+ disable = """\
340
+ Crafting DC 10 to remove the spikes. The bed will still not support weight \
341
+ but there will be no damage caused by falling through.\
342
+ """
343
+
344
+ [[triggers]]
345
+ name = "Fall Through"
346
+ text = """\
347
+ A creature lays on the bed, causing the ropes to snap and dealing 1D6 piercing
348
+ damage.\
349
+ """
350
+ ====
351
+
352
+ == Cryptic Texts
148
353
 
149
354
  When a sidebar is used to display information the background will use a styling
150
355
  from https://pf2.easytool.es/[Pathfinder 2 easy Library].
@@ -154,15 +359,17 @@ regarding the functioning of dangerous items:
154
359
 
155
360
  .Wizard's Note
156
361
  ****
157
- Warning! Reading this note will curse you for all time with a constant stone in
158
- your shoe. No take backsies!
362
+ To Whom it May Concern,
363
+
364
+ Reading this note will curse you for all time with a constant stone in your
365
+ shoe. No take backs!
159
366
 
160
367
  Sincerely,
161
368
 
162
369
  Roderick the Malevolent
163
370
  ****
164
371
 
165
- == Adventurer's Log (Credits)
372
+ == Adventurer's Log
166
373
 
167
374
  * The layout, much of the styling, and the demonstration creature come from the
168
375
  https://slanguage.github.io/pf2monster/[Pathfinder 2E Monster Creator]
@@ -24,16 +24,23 @@
24
24
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
25
25
  }
26
26
 
27
- /* Statblocks */
27
+ /* Stat blocks */
28
28
  .statblock {
29
29
  width: 500px;
30
30
  border: 1px solid black;
31
- margin: 20px;
31
+ /* margin: 20px;*/
32
32
  padding: 20px;
33
33
  font-family: "Roboto", Geneva, sans-serif;
34
34
  font-size: 16px;
35
35
  line-height: 24px;
36
- display: inline-block;
36
+ display: block;
37
+ background: #f7f7f8;
38
+ }
39
+ .statblock.left {
40
+ margin-right: 20px;
41
+ }
42
+ .statblock.right {
43
+ margin-left: 20px;
37
44
  }
38
45
  .statblock-title {
39
46
  font-size: 23px;
@@ -44,7 +51,7 @@
44
51
  .statblock-name {
45
52
  float: left;
46
53
  }
47
- .statblock-creature {
54
+ .statblock-type {
48
55
  float: right;
49
56
  text-align: right;
50
57
  }
@@ -154,7 +161,28 @@
154
161
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAABHNCSVQICAgIfAhkiAAAA8BJREFUSImdlUlsHEUUht/rWrp6lp7unnHPjJ2MgxNWgyKWA6AEC5BsQUBRpCAOKBcIAoGPIG7ABS4sEgpwgguXnBIPxgbFCOUQcQBFiVgiDnC3PYsjHHdVLzNdXGxr0p6QOP/x1d/1Vb3X7xXADYSI1HPcDznjB27kGbTfgmdXIhXPOzXRGE8bY2N/M8YmbmRkjO2tV2sLlNK9twMyhsXKrvuRXSi+iYjIKDtQH/EXGWONrJFSWqv71XM5IY7U/eoPhJD6MAgiskK+8NIwHskGPMf9wLHttxBxO62EkIolrGml1Hyapuub8OqoX/2RMTa56fFzljUdSHlGax0MwkfK5a/cUuk9NIycCsOf/jcD/X7/H611ko1zxiZrI/4ipbQKAFAsFF5kjN1/vYc/UPer3xNCKlv8ilf+spgvnEBEwynab7uO8z4M/DPbGSgV7dcBQQVSLmnQbWGaM4h4XYYIIVVLiCelUk2p5HnKqGNy/uighxIyKkwxFUh5Vmsd5S3rOc75Q7gpYZqHAbAfRuGF7QOUbHu27LmfFXL5YzJUC1LKJQC4KoSYRkRjJ8A8LJVqbgTBt4wz32T8kcFbUUr3WEIcCqQ8I5VqUkoanPGDA4eY0hrCMIp+JnaxeLLieacQkBqIdj6Xe14p9V2g5DkEDCwhZrLloJTuEab5uFTqbBAETcbYHZzxgxlPQ5jmY0EQnJZKzXPO7uGMTwIAIKJhCfFUmqZdA3b2MAcAsVXDLBwAQGutt5YMwygwxu4cZot7yZVU65AQUuaU3Z3Z41oUJ5dJFMeXUq2vWpaYTvtpZ7m1OhMnyZ+OXZp1HefjbAm01jqK419W2q2jWut4tFpbMDk/lIWvb1z7uttdm6WEVmq+v2hy/uDWYpqm6yvt1rEwCi9QAIB/19c/B4B+GEa/xnH8e8m2X3NLpU8NRJqFx0lyabXTPqq1VnW/2jQ5fyLr2ZDBN521tTcAQdf8kTmT84e34TrdWOm0j6swPA8w0AVRFF3s9/vLpaL9suc4XxiGwbM5TZLkj5V265ler9dyHeedYj5/MnvzQMrT7W73lc1W1ohG3xLiCCISrbVabbePK6WWtj7YMYjyudwLlhBTg4MIACBOkisr7dazvV5vGQAgjKKLpmnexyi7dwA+1+p2TgzOkSiOftMaVi0hnm51O68GUs5lmVkZZdf7ZKIxnu4f36cnGuNpY3Tsr2GjGBH5aK02v398X1ob8ZuIKIZtCADAOb/rZuBB3fJjZBiG5bnuu4iY2w3gptrlc3zb+g/DZ3c9xGiesQAAAABJRU5ErkJggg==)
155
162
  }
156
163
 
157
- /* Headings and TOC */
164
+ /* Headings, TOC, dividers, and background */
165
+ body {
166
+ background: url("parchment.jpg");
167
+ background-repeat: repeat-y;
168
+ background-size: contain;
169
+ }
170
+ body.toc2 #header > h1:nth-last-child(2) {
171
+ border-bottom: none;
172
+ text-align: center;
173
+ }
174
+ body.toc2 #header > h1:nth-last-child(2)::after, .sect1 + .sect1::before {
175
+ content: "";
176
+ display: block;
177
+ height: 40px;
178
+ background-image: url("divider.png");
179
+ background-repeat: no-repeat;
180
+ background-position: center bottom;
181
+ background-size: cover;
182
+ }
183
+ .sect1 + .sect1 {
184
+ border-top: none;
185
+ }
158
186
  h1, h2, #toctitle, #toc a {
159
187
  font-family: 'Eczar', sans-serif !important;
160
188
  color:#4E0707 !important;
@@ -165,10 +193,10 @@ h1, #toctitle {
165
193
  text-shadow: 1px 1px 0 #EFCD98, -1px 1px 0 #EFCD98, 1px -1px 0 #EFCD98, -1px -1px 0 #EFCD98, 0px 1px 0 #EFCD98, 0px -1px 0 #EFCD98, -1px 0px 0 #EFCD98, 1px 0px 0 #EFCD98, 2px 2px 0 #EFCD98, -2px 2px 0 #EFCD98, 2px -2px 0 #EFCD98, -2px -2px 0 #EFCD98, 0px 2px 0 #EFCD98, 0px -2px 0 #EFCD98, -2px 0px 0 #EFCD98, 2px 0px 0 #EFCD98, 1px 2px 0 #EFCD98, -1px 2px 0 #EFCD98, 1px -2px 0 #EFCD98, -1px -2px 0 #EFCD98, 2px 1px 0 #EFCD98, -2px 1px 0 #EFCD98, 2px -1px 0 #EFCD98, -2px -1px 0 #EFCD98;
166
194
  }
167
195
  h1 {
168
- font-size: 7em;
196
+ font-size: 6em;
169
197
  }
170
198
  h2 {
171
- font-size: 5em;
199
+ font-size: 3.5em;
172
200
  }
173
201
  h3 {
174
202
  color:#02256E;
@@ -194,3 +222,30 @@ h3 {
194
222
  background-repeat: no-repeat;
195
223
  background-size: cover;
196
224
  }
225
+
226
+ /* Tables */
227
+ table {
228
+ background-color: #F5EFE0;
229
+ margin-bottom:0px;
230
+ }
231
+ table tr th {
232
+ background-color: #5E0000;
233
+ color: white !important;
234
+ padding-top:4px;
235
+ }
236
+ table tbody tr:nth-child(odd) {
237
+ background-color: #EDE3C8
238
+ }
239
+ table tbody, table th {
240
+ font-family: 'Roboto Condensed', sans-serif;
241
+ }
242
+ .tablefooter {
243
+ background-color:#E6D8B0 !important;
244
+ }
245
+ table.left {
246
+ margin-right: 35px;
247
+ }
248
+ table.right {
249
+ margin-left: 35px;
250
+ }
251
+
@@ -1,7 +1,7 @@
1
- <div class="statblock">
1
+ <div class="statblock <%= defined?(role) ? role : '' %>">
2
2
  <div class="statblock-title">
3
3
  <span class="statblock-name"><%= name %></span>
4
- <span class="statblock-creature"> CREATURE <%= level %></span>
4
+ <span class="statblock-type"> CREATURE <%= level %></span>
5
5
  </div>
6
6
  <div class="statblock-info-block">
7
7
  <div class="statblock-tags">
@@ -23,20 +23,33 @@ class P2EStatblockProcessor < Extensions::BlockProcessor
23
23
  use_dsl
24
24
 
25
25
  named :stat
26
- on_context :open
26
+ on_context :open, :example
27
27
  parse_content_as :raw
28
28
 
29
29
  def process parent, reader, attrs
30
30
  # parse TOML
31
31
  lines = reader.lines
32
- creature = Tomlrb.parse(lines * "\n")
32
+ data = Tomlrb.parse(lines * "\n")
33
+
34
+ # get/set attributes
35
+ if attrs.key?('type')
36
+ type = attrs['type']
37
+ else
38
+ type = 'creature'
39
+ end
40
+ if attrs.key?('role')
41
+ data['role'] = attrs['role']
42
+ end
33
43
 
34
44
  # create HTML from template
35
45
  extdir = ::File.join(::File.dirname __FILE__)
36
- template_name = 'statblock.html.erb'
37
- template = File.read("#{extdir}/#{template_name}")
38
- html = ERB.new(template).result_with_hash(creature)
46
+ templates = {
47
+ 'creature' => "#{extdir}/creatureblock.html.erb",
48
+ 'item' => "#{extdir}/itemblock.html.erb",
49
+ 'hazard' => "#{extdir}/hazardblock.html.erb"
50
+ }
51
+ template = File.read(templates[type])
52
+ html = ERB.new(template).result_with_hash(data)
39
53
  create_pass_block parent, html, attrs, subs: nil
40
54
  end
41
55
  end
42
-
@@ -0,0 +1,43 @@
1
+ <div class="statblock <%= defined?(role) ? role : '' %>">
2
+ <div class="statblock-title">
3
+ <span class="statblock-name"><%= name %></span>
4
+ <span class="statblock-type">HAZARD <%= level %></span>
5
+ </div>
6
+ <div class="statblock-info-block">
7
+ <div class="statblock-tags">
8
+ <% tags.each do |tag| %>
9
+ <% if tag == "uncommon" %>
10
+ <div class="statblock-tag-rarity-uncommon"><%= tag %></div>
11
+ <% elsif tag == "rare" %>
12
+ <div class="statblock-tag-rarity-rare"><%= tag %></div>
13
+ <% elsif tag == "unique" %>
14
+ <div class="statblock-tag-rarity-unique"><%= tag %></div>
15
+ <% else %>
16
+ <div class="statblock-tag-other"><%= tag %></div>
17
+ <% end %>
18
+ <% end %>
19
+ </div>
20
+ <div class="statblock-info-other">
21
+ <div class="statblock-info-line">
22
+ <span class="statblock-line-heavy">Stealth </span><%= stealth %>
23
+ </div>
24
+ <div class="statblock-info-line">
25
+ <span class="statblock-line-heavy">Description </span><%= description %>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ <div class="statblock-info-block">
30
+ <div class="statblock-info-line">
31
+ <span class="statblock-line-heavy">Disable </span><%= disable %>
32
+ </div>
33
+ <% if defined?(triggers) %>
34
+ <% triggers.each do |trigger| %>
35
+ <div class="statblock-info-line">
36
+ <span class="statblock-line-heavy"><%= trigger['name'] %></span>
37
+ <span class="statblock-reaction"></span>
38
+ <span class="statblock-line-heavy">Trigger </span><%= trigger['text'] %>
39
+ </div>
40
+ <% end %>
41
+ <% end %>
42
+ </div>
43
+ </div>
@@ -0,0 +1,86 @@
1
+ <div class="statblock <%= defined?(role) ? role : '' %>">
2
+ <div class="statblock-title">
3
+ <span class="statblock-name"><%= name %></span>
4
+ <span class="statblock-type">ITEM <%= level %></span>
5
+ </div>
6
+ <div class="statblock-info-block">
7
+ <div class="statblock-tags">
8
+ <% tags.each do |tag| %>
9
+ <% if tag == "uncommon" %>
10
+ <div class="statblock-tag-rarity-uncommon"><%= tag %></div>
11
+ <% elsif tag == "rare" %>
12
+ <div class="statblock-tag-rarity-rare"><%= tag %></div>
13
+ <% elsif tag == "unique" %>
14
+ <div class="statblock-tag-rarity-unique"><%= tag %></div>
15
+ <% else %>
16
+ <div class="statblock-tag-other"><%= tag %></div>
17
+ <% end %>
18
+ <% end %>
19
+ </div>
20
+ <div class="statblock-info-other">
21
+ <% if defined?(price) %>
22
+ <div class="statblock-info-line">
23
+ <span class="statblock-line-heavy">Price </span><%= price %>
24
+ </div>
25
+ <% end %>
26
+ <div class="statblock-info-line">
27
+ <span class="statblock-line-heavy">Usage </span><%= usage %>&#59;
28
+ <span class="statblock-line-heavy"> Bulk </span><%= bulk %>&#59;
29
+ </div>
30
+ </div>
31
+ <% if defined?(activations) %>
32
+ <div class="statblock-info-other">
33
+ <% activations.each do |activation| %>
34
+ <div class="statblock-info-line">
35
+ <span class="statblock-line-heavy"> Activate </span>
36
+ <% if activation['actions'] == 0 %>
37
+ <span class="statblock-free-action"></span>
38
+ <% elsif activation['actions'] == 1 %>
39
+ <span class="statblock-one-action"></span>
40
+ <% elsif activation['actions'] == 2 %>
41
+ <span class="statblock-two-actions"></span>
42
+ <% elsif activation['actions'] == 3 %>
43
+ <span class="statblock-three-actions"></span>
44
+ <% end %>
45
+ <% if activation.key?('actionText') %>
46
+ <%= activation['actionText'] %>
47
+ <% end %>
48
+ <% if activation.key?('frequency') %>
49
+ <span class="statblock-line-heavy"> Frequency </span><%= activation['frequency'] %>
50
+ <% end %>
51
+ <% if activation.key?('trigger') %>
52
+ <span class="statblock-line-heavy"> Trigger </span><%= activation['trigger'] %>
53
+ <% end %>
54
+ <% if activation.key?('effect') %>
55
+ <span class="statblock-line-heavy"> Effect </span><%= activation['effect'] %>
56
+ <% end %>
57
+ </div>
58
+ <% end %>
59
+ </div>
60
+ <% end %>
61
+ </div>
62
+ <div class="statblock-info-block">
63
+ <% if defined?(hardness) %>
64
+ <div class="statblock-info-line">
65
+ <span class="statblock-line-heavy">Hardness </span><%= hardness['hardness'] %>&#59;
66
+ <span class="statblock-line-heavy">HP </span><%= hardness['hp'] %>&#59;
67
+ <span class="statblock-line-heavy">BT </span><%= hardness['bt'] %>&#59;
68
+ </div>
69
+ <% end %>
70
+ <div><%= description %></div>
71
+ </div>
72
+ <% if defined?(types) %>
73
+ <% types.each do |type| %>
74
+ <div class="statblock-info-block">
75
+ <div class="statblock-info-line">
76
+ <span class="statblock-line-heavy">Type </span><em><%= type['type'] %></em>
77
+ <span class="statblock-line-heavy">Level </span><%= type['level'] %>
78
+ <% if type.key?('price') %>
79
+ <span class="statblock-line-heavy">Price </span><%= type['price'] %>
80
+ <% end %>
81
+ </div>
82
+ <div><%= type['description'] %></div>
83
+ </div>
84
+ <% end %>
85
+ <% end %>
86
+ </div>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoctor-p2e
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Tolboom
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-25 00:00:00.000000000 Z
11
+ date: 2021-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tomlrb
@@ -64,12 +64,16 @@ files:
64
64
  - lib/asciidoctor-p2e/assets/BXRovF3Pi-DLmzWCKvt80WrNWA.woff2
65
65
  - lib/asciidoctor-p2e/assets/BXRovF3Pi-DLmzWCKvt90Wo.woff2
66
66
  - lib/asciidoctor-p2e/assets/BXRovF3Pi-DLmzWCKvtz0WrNWA.woff2
67
+ - lib/asciidoctor-p2e/assets/divider.png
67
68
  - lib/asciidoctor-p2e/assets/p2e.css
69
+ - lib/asciidoctor-p2e/assets/parchment.jpg
68
70
  - lib/asciidoctor-p2e/assets/sidebar.png
69
71
  - lib/asciidoctor-p2e/assets/toc.png
72
+ - lib/asciidoctor-p2e/creatureblock.html.erb
70
73
  - lib/asciidoctor-p2e/docinfo.html
71
74
  - lib/asciidoctor-p2e/extension.rb
72
- - lib/asciidoctor-p2e/statblock.html.erb
75
+ - lib/asciidoctor-p2e/hazardblock.html.erb
76
+ - lib/asciidoctor-p2e/itemblock.html.erb
73
77
  homepage: https://bosco.srht.site/asciidoctor-p2e.html
74
78
  licenses:
75
79
  - GPL-3.0