Skip to content

Commit 3d87b60

Browse files
committed
templateAsOrigin
1 parent d7ef0a8 commit 3d87b60

4 files changed

Lines changed: 42 additions & 12 deletions

File tree

CHANGELOG.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
88
> Dictionary
99
> (P) - A premium version of that animation is available.
1010
11-
## [Unreleased]
11+
## [0.3.4] - Unreleased
12+
13+
### Added
14+
15+
- `templateAsOrigin` preset option for `ranged` animations. Allows to have the template to be the source of the animation, as opposed to the owner token. Allows for template animations detached from token location.
16+
17+
### Changed
18+
19+
- Inner Radiance Torrent (P) to use `templateAsOrigin`.
20+
21+
### Fixed
22+
23+
- Version 12 `.user => .author` deprecation warning.
1224

1325
## [0.3.3] - 2024-08-09
1426

animations/spells.json

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,8 @@
139139
"preset": "ranged",
140140
"file": "jb2a.ranged.beam.001.01.orange",
141141
"options": {
142-
"atLocation": {
143-
"offset": {
144-
"x": 0.5
145-
},
146-
"gridUnits": true
142+
"preset": {
143+
"templateAsOrigin": true
147144
}
148145
}
149146
}

src/storage/presets.ts

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ export const helpers = {
4646
seq.zIndex(options.zIndex)
4747
if (options?.scale)
4848
seq.scale(options.scale.min, options.scale.max)
49+
if (options?.spriteOffset)
50+
seq.spriteOffset(options.spriteOffset.offset, options.spriteOffset)
4951
if (options?.scaleToObject)
5052
seq.scaleToObject(options.scaleToObject.value, options.scaleToObject)
5153
if (options?.filter)
@@ -86,6 +88,8 @@ export const helpers = {
8688
seq.opacity(options.opacity)
8789
if (options?.size)
8890
seq.size(options.size.value, options.size)
91+
if (options?.moveTowards)
92+
seq.moveTowards(options.moveTowards.target, options.moveTowards)
8993

9094
// Property Animation
9195
if (options?.loopProperty)
@@ -109,11 +113,13 @@ export const helpers = {
109113
}
110114

111115
if (_item) {
112-
seq.origin(options?.id ?? _item.uuid)
116+
seq.origin(_item.uuid)
113117
seq.name(_item.name)
114-
} else if (options?.id) {
115-
seq.origin(options.id)
116118
}
119+
if (options?.id)
120+
seq.origin(options.id)
121+
if (options?.name)
122+
seq.name(options.name)
117123

118124
return seq
119125
},
@@ -125,9 +131,14 @@ export const helpers = {
125131

126132
type presetOptions<T> =
127133
| T extends 'onToken' ? ('target' | 'source' | 'both') :
128-
| T extends 'ranged' ? { bounce: { file: string, sound: SoundConfig } } :
134+
| T extends 'ranged' ? rangedOptions :
129135
| never
130136

137+
interface rangedOptions {
138+
bounce: { file: string, sound: SoundConfig }
139+
templateAsOrigin: true
140+
}
141+
131142
interface SoundConfig {
132143
file: string
133144
waitUntilFinished: number
@@ -138,6 +149,7 @@ export interface EffectOptions<T extends PresetKeys> {
138149
preset?: presetOptions<T>
139150
locally?: boolean
140151
id?: string
152+
name?: string
141153
randomizeMirrorX?: boolean
142154
randomizeMirrorY?: boolean
143155
remove?: string | string[]
@@ -171,6 +183,9 @@ export interface EffectOptions<T extends PresetKeys> {
171183
scaleToObject?: {
172184
value: number
173185
} & Parameters<EffectSection['scaleToObject']>[1]
186+
spriteOffset?: {
187+
offset: Parameters<EffectSection['spriteOffset']>[0]
188+
} & Parameters<EffectSection['spriteOffset']>[1]
174189
size?: {
175190
value: number
176191
} & Parameters<EffectSection['size']>[1]
@@ -181,6 +196,9 @@ export interface EffectOptions<T extends PresetKeys> {
181196
persist?: {
182197
value: boolean
183198
} & Parameters<EffectSection['persist']>[1]
199+
moveTowards?: {
200+
target: Parameters<EffectSection['moveTowards']>[0]
201+
} & Parameters<EffectSection['moveTowards']>[1]
184202
repeats?: {
185203
min: Parameters<EffectSection['repeats']>[0]
186204
delay: Parameters<EffectSection['repeats']>[1]
@@ -231,8 +249,11 @@ export const presets = {
231249
}
232250
} else {
233251
effect
234-
.atLocation(source, helpers.parseOffsetEmbedded(options?.atLocation, source, target))
235252
.file(file)
253+
.atLocation(
254+
options?.preset?.templateAsOrigin ? target : source,
255+
helpers.parseOffsetEmbedded(options?.atLocation, source, target),
256+
)
236257

237258
if (options?.sound) {
238259
const sound = seq.sound()

src/triggers/chatMessage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ function handleChatMessage(message: ChatMessagePF2e) {
2525
: (toolbelt ?? (
2626
message.target?.token
2727
? [message.target?.token]
28-
: Array.from(message.user.targets)
28+
: Array.from((message.author as UserPF2e).targets)
2929
))
3030

3131
if (targets.length === 0) return log('No targets founds in message, aborting.')

0 commit comments

Comments
 (0)