Ledger v3 · C# · Godot 4.7 Get started

Reach

Numbers an ability's instance brings.

✓ 4 plays, 71 steps, all passingFrom v2's cookbook

v2's cookbook, numbers an ability's instance brings (G298-G301): a reach of rank and gear, a blast whose radius and cooldown are the affixes rolled on the stone that grants it, and a strike that burns by the blade it came from. A stone and a blade are items, and what each was rolled with is its own, read through source: the game rolls a stone's affixes as it drops and a blade's fire as it is forged, and hands them to the new item as declared properties.

content/cookbook/reach.ledgerthe content
1# v2's cookbook, numbers an ability's instance brings (G298-G301): a reach of rank and gear, a blast whose radius and
2# cooldown are the affixes rolled on the stone that grants it, and a strike that burns by the blade it came from.
3# A stone and a blade are items, and what each was rolled with is its own, read through source: the game rolls a
4# stone's affixes as it drops and a blade's fire as it is forged, and hands them to the new item as declared properties.
5
6rate 60
7link team
8allegiance team
9stat MaxHealth
10stat Reach
11stat Fire
12pool Health max MaxHealth
13pool Wide
14pool Swift
15pool Flame
16damage Health
17pile Pack grants
18prop RollWide default 1 min 1 max 3
19prop RollSwift default 1 min 1 max 3
20prop RollFlame default 0 min 0 max 3
22archetype Team
24archetype Marksman
25 base MaxHealth 100
26 full Health
27 grants Loot
29archetype Dummy
30 base MaxHealth 100
31 full Health
33archetype Marker
35# ---- G298 longshot: 100 a rank, and the holder's reach on top ----
37effect LongshotRank
38 stack replace
39 var rank = 1
40 grants Longshot
42ability Longshot
43 target one enemy within 100 * grant.rank + holder.Reach
44 deal 10 to target
46effect Longbow
47 Reach + 150
49# ---- G299 G300 quake: 3 wide and 8 seconds round, or what the stone's affixes make them ----
51archetype QuakeStone
52 with Wide = 1
53 with Swift = 1
54 grants Quake
56# the stone drops into the pack with the affixes the game rolled
57ability Loot
58 takes RollSwift, RollWide
59 create QuakeStone with Wide = event.RollWide, Swift = event.RollSwift in holder.Pack
61ability Quake
62 target one
63 radius 3 * source.Wide
64 cooldown 8s / source.Swift
65 deal 20 to all enemies within radius of target
67# ---- G301 the flame blade: its strike burns by the blade's own roll, and a blade equipped replaces the last ----
69archetype Duelist
70 base MaxHealth 100
71 base Fire 3
72 full Health
73 grants Forge
75archetype Blade
76 with Flame = 0
78# the blade is forged with the fire the game rolled, its own pool
79ability Forge
80 takes RollFlame
81 create Blade with Flame = event.RollFlame in holder.Pack
83effect FlameBlade
84 stack replace
85 grants BladeStrike
87ability BladeStrike
88 target one
89 deal 8 * (1 + source.Flame) to target
content/cookbook/reach.playwhat it must do
1catalog reach.ledger
2row G298 LongshotRank Longbow Longshot Team Marksman Dummy
3row G299 Loot Quake Team Marksman Dummy Marker QuakeStone
4row G300 Loot Quake Marksman QuakeStone
5row G301 Forge FlameBlade BladeStrike Dummy Duelist Blade
6
7play G298 "At rank 1 the longshot reaches 100: a dummy 250 off is out of reach; a longbow's 150 brings it in; at rank 3 it reaches 300 without the bow"
8 make a Team
9 make b Team
10 make m Marksman with team = a at 0
11 make d Dummy with team = b at 250
12 apply LongshotRank to m
13 act m Longshot at d
14 expect refused OutOfReach need 100 have 250 from G298: "100 metres"; "250 metres"
15 apply Longbow to m
16 act m Longshot at d
17 expect done
18 expect d.Health = 90 from content: G298 gives no longshot damage; the content's 10 off its 100
19 save
20 remove Longbow from m
21 act m Longshot at d
22 expect refused OutOfReach need 100 have 250 from G298: "100 metres"; "250 metres"
23 apply LongshotRank to m with rank = 3
24 act m Longshot at d
25 expect done
27play G299 "A plain quake hits a dummy 2 from the spot, not one 5 off; a wide stone's reaches 6, and takes both"
28 make a Team
29 make b Team
30 make m Marksman with team = a at 0
31 make w Marksman with team = a at 0
32 make spot Marker at 10
33 make near Dummy with team = b at 12
34 make off Dummy with team = b at 15
35 act m Loot
36 act w Loot with RollWide = 2
37 act m Quake at spot
38 expect near.Health = 80 from G299: near.Health - "20 damage"
39 expect off.Health = 100 from G299: off.Health
40 save
41 act w Quake at spot
42 expect near.Health = 60 from G299: near.Health - "20 damage" - "20 damage"
43 expect off.Health = 80 from G299: off.Health - "20 damage"
45play G300 "A plain quake comes round in 8 seconds, a swift stone's in 4"
46 make a Team
47 make b Team
48 make m Marksman with team = a at 0
49 make s Marksman with team = a at 0
50 make spot Marker at 10
51 act m Loot
52 act s Loot with RollSwift = 2
53 act m Quake at spot
54 expect done
55 act s Quake at spot
56 expect done
57 advance 4s
58 expect s can Quake at spot
59 expect m cannot Quake at spot OnCooldown
60 save
61 advance 4s
62 expect m can Quake at spot
64play G301 "A blade rolled 1.5 strikes for 20, whatever fire its wielder has; equipping one rolled 0.5 replaces it, 12, kept through a save; put away, no strike; a plain blade's is 8"
65 make d Duelist
66 make t Dummy
67 act d Forge with RollFlame = 1.5
68 find b1 Blade
69 act d Forge with RollFlame = 0.5
70 find b2 Blade
71 make b3 Blade
72 apply FlameBlade to d from b1
73 act d BladeStrike at t
74 expect t.Health = 80 from G301: t.Health - "20 from"
75 apply FlameBlade to d from b2
76 expect d has FlameBlade 1 from b2 from G301: count "apply FlameBlade to d from b2"
77 save
78 act d BladeStrike at t
79 expect t.Health = 68 from G301: t.Health - "20 from" - "12 from"
80 remove FlameBlade from d
81 expect d cannot BladeStrike at t NotGranted
82 apply FlameBlade to d from b3
83 act d BladeStrike at t
84 expect t.Health = 60 from G301: t.Health - "20 from" - "12 from" - "8 from a plain blade"

Run it yourself

ledger check content/cookbook/reach.ledger content/cookbook/reach.play
ledger play content/cookbook/reach.play