Ledger v3 · C# · Godot 4.7 Get started

Caster

Numbers worked out from the caster's rank.

✓ 8 plays, 101 steps, all passingFrom v2's cookbook

v2's cookbook, numbers worked out from the caster (G275-G282). How far a caster has taken its line of skills is its Rank, and every recipe here reads it from whoever applied or cast: a proc's chance, a root's turns, a drum's beat, a hoard's height, a bolt's speed, how many wards a blow breaks and how much might a blessing is worth. A fighter's vigor starts at its own share, unless what made it says otherwise.

content/cookbook/caster.ledgerthe content
1# v2's cookbook, numbers worked out from the caster (G275-G282). How far a caster has taken its line of skills is its
2# Rank, and every recipe here reads it from whoever applied or cast: a proc's chance, a root's turns, a drum's beat, a
3# hoard's height, a bolt's speed, how many wards a blow breaks and how much might a blessing is worth. A fighter's
4# vigor starts at its own share, unless what made it says otherwise.
5
6rate 60
7stat MaxHealth
8stat MaxVigor
9stat Rank
10stat Grit
11stat Might
12pool Health max MaxHealth
13pool Vigor max MaxVigor
14damage Health
15link owner
16link victim
17tags Proc
18event TurnStarted Arrived
19turn TurnStarted
21archetype Archer
22 base MaxHealth 100
23 base MaxVigor 100
24 base Rank 4
25 base Grit 50
26 base Might 10
27 full Health
28 with Vigor = holder.MaxVigor * holder.Grit / 100
29 grants Barb Root Drum Hoarding QuickBolt Shatter Empower
31archetype Novice
32 base MaxHealth 100
33 base MaxVigor 100
34 base Rank 1
35 base Grit 100
36 base Might 10
37 full Health
38 with Vigor = holder.MaxVigor * holder.Grit / 100
39 grants Barb Root Drum Hoarding QuickBolt Shatter Empower Raise
41archetype Untrained
42 base MaxHealth 100
43 base MaxVigor 100
44 base Grit 100
45 base Might 10
46 full Health
47 with Vigor = holder.MaxVigor * holder.Grit / 100
48 grants Barb Shatter
50archetype Stump
51 base MaxHealth 500
52 base MaxVigor 100
53 base Might 20
54 full Health
55 with Vigor = 40
57# ---- G275 barbed: its chance to land is the caster's rank over four ----
59effect Barbed
60 lasts 10s
61 Might - 10%
63ability Barb
64 tags Proc
65 target one
66 if chance(holder.Rank / 4)
67 apply Barbed to target
69# ---- G276 a root for as many of its holder's turns as its caster's rank ----
71effect Rooted
72 lasts source.Rank turns
74ability Root
75 target one
76 apply Rooted to target
78# ---- G277 the quickening drum: 5 vigor every 4 less its drummer's rank of its holder's turns ----
80effect Quickening
81 var count = 0
82 after TurnStarted of holder
83 self.count += 1
84 if self.count >= 4 - source.Rank
85 gain Vigor 5
86 self.count = 0
88ability Drum
89 target one
90 apply Quickening to target
92# ---- G278 a hoard: 5 might a stack, as tall as the rank of whoever adds the stack ----
94effect Hoard
95 stack add max source.Rank
96 Might + 5
98ability Hoarding
99 target one
100 apply Hoard to target
102# ---- G279 a bolt flying 10 paces a second for each of its caster's ranks; landing, it empowers for 5 seconds ----
104effect BoltFlight
105 lasts 1s * distance(holder.owner, holder.victim) / (10 * holder.owner.Rank)
106 expire
107 raise Arrived of holder.victim by holder
109effect BoltHead
110 after Arrived by holder
111 apply Empowered to event.subject from holder.owner
112 destroy holder
114effect Empowered
115 lasts 5s
117archetype Bolt
118 has BoltFlight
119 has BoltHead
121ability QuickBolt
122 target one within 100
123 create Bolt with owner = holder, victim = target
125# ---- G280 shatter breaks as many of the target's ward charges as its striker's rank, one at least ----
127effect Warded
128 stack add max 5
130ability Shatter
131 target one
132 remove Warded max(1, holder.Rank) from target
134# ---- G281 empower: might of five times its caster's rank, for good ----
136effect Blessing
137 var might = 0
138 Might + self.might
140ability Empower
141 target self
142 apply Blessing with might = 5 * holder.Rank
144# ---- G282 a fighter's vigor starts at its own grit's share, unless what made it says how much ----
146archetype Revenant
147 base MaxHealth 100
148 base MaxVigor 100
149 base Grit 100
150 full Health
151 with Vigor = holder.MaxVigor * holder.Grit / 100
153ability Raise
154 target self
155 create Revenant with Vigor = 25
content/cookbook/caster.playwhat it must do
1catalog caster.ledger
2row G275 Barbed Barb Archer Untrained Stump
3row G276 Rooted Root Archer Novice Stump
4row G277 Quickening Drum Novice Stump
5row G278 Hoard Hoarding Archer Novice Stump
6row G279 BoltFlight BoltHead Empowered QuickBolt Archer Novice Stump Bolt
7row G280 Warded Shatter Archer Novice Untrained Stump
8row G281 Blessing Empower Archer Novice
9row G282 Raise Archer Novice Revenant
11play G275 "Barbed lands as often as its caster's rank over four: always from the rank-4 archer, never from an untrained hand"
12 make a Archer
13 make u Untrained
14 make s Stump
15 act a Barb at s
16 expect s has Barbed
17 expect s.Might = 18 from G275: s.Might * (1 + "-10% might")
18 save
19 remove Barbed from s
20 act u Barb at s
21 expect s lacks Barbed
23play G276 "A root lasts as many of its holder's turns as its caster's rank: four from the archer, one from the novice"
24 make a Archer
25 make n Novice
26 make s Stump
27 make t Stump
28 act a Root at s
29 act n Root at t
30 raise TurnStarted of s
31 raise TurnStarted of t
32 expect s has Rooted
33 expect t lacks Rooted
34 save
35 raise TurnStarted of s
36 raise TurnStarted of s
37 expect s has Rooted
38 raise TurnStarted of s
39 expect s lacks Rooted
41play G277 "The novice's drum beats every third of its holder's turns, 5 vigor a beat: two beats in six turns"
42 make n Novice
43 make s Stump
44 act n Drum at s
45 raise TurnStarted of s
46 raise TurnStarted of s
47 expect s.Vigor = 40 from G277: s.Vigor
48 raise TurnStarted of s
49 expect s.Vigor = 45 from content: G277 leaves open whether a beat lands at the start or end of its turn; the content's lands at the start of the third, adding 5 to the content's 40
50 save
51 raise TurnStarted of s
52 raise TurnStarted of s
53 raise TurnStarted of s
54 expect s.Vigor = 50 from content: G277 leaves open whether a beat lands at the start or end of its turn; the content's land at the start of turns 3 and 6: 40 + 5 + 5 = 50
56play G278 "A hoard is as tall as the rank of whoever adds to it: the archer stacks it four deep, 20 might; the novice adding to it is turned away"
57 make a Archer
58 make n Novice
59 make s Stump
60 act a Hoarding at s
61 act a Hoarding at s
62 act a Hoarding at s
63 act a Hoarding at s
64 act a Hoarding at s
65 expect s has Hoard 4 from G278: "four deep"
66 expect s.Might = 40 from G278: s.Might + "four deep" * "+5 might per stack"
67 save
68 act n Hoarding at s
69 expect s has Hoard 4 from content: G278 leaves open what happens when the stack is already above a new adder's cap; the content's only blocks adding, so the archer's 4 stand
70 make t Stump
71 act n Hoarding at t
72 act n Hoarding at t
73 expect t has Hoard 1 from G278: "one for the novice"
75play G279 "A quick bolt flies 10 paces a second for each of its caster's ranks: 20 paces in half a second from the archer, in two from the novice, and empowers what it lands on for 5 seconds"
76 make a Archer at 0
77 make n Novice at 0
78 make s Stump at 20
79 make t Stump at 20
80 act a QuickBolt at s
81 act n QuickBolt at t
82 advance 0.5s
83 expect s has Empowered
84 expect t lacks Empowered
85 save
86 advance 1.5s
87 expect t has Empowered
88 expect t remaining Empowered = 5s from content: G279 leaves open whether the arrival at the very end of the advance has resolved; the content's has, so the 5 seconds of Empowered have just begun
90play G280 "Shatter breaks as many of five wards as its striker's rank: the archer four, the novice one, and an untrained hand one, never none"
91 make a Archer
92 make n Novice
93 make u Untrained
94 make s Stump
95 make t Stump
96 make v Stump
97 apply Warded 5 to s
98 apply Warded 5 to t
99 apply Warded 5 to v
100 act a Shatter at s
101 expect s has Warded 1 from G280: "Warded 5 to s" - "breaks four"
102 act n Shatter at t
103 expect t has Warded 4 from G280: "Warded 5 to t" - "the novice one"
104 save
105 act u Shatter at v
106 expect v has Warded 4 from content: G280 leaves open what an attacker with no rank breaks; the content gives the untrained hand no rank, and G280's floor of one leaves 5 - 1 = 4
108play G281 "Empower is might of five times its caster's rank, for good: 20 for the archer, 5 for the novice"
109 make a Archer
110 make n Novice
111 act a Empower
112 act n Empower
113 expect a.Might = 30 from G281: a.Might + "expiring: 20"
114 expect n.Might = 15 from G281: n.Might + "5 for the novice"
115 save
116 advance 60s
117 expect a.Might = 30 from G281: a.Might + "expiring: 20"
119play G282 "A fighter's vigor starts at its grit's share: the archer's 50, the novice's 100; a revenant the novice raises starts at the 25 it was raised with"
120 make a Archer
121 make n Novice
122 expect a.Vigor = 50 from G282: "50 for the archer"
123 expect n.Vigor = 100 from G282: "100 for the novice"
124 act n Raise
125 find r Revenant
126 expect r.Vigor = 25 from G282: "25 for the revenant"

Run it yourself

ledger check content/cookbook/caster.ledger content/cookbook/caster.play
ledger play content/cookbook/caster.play