Casting - noonmaru/psychics GitHub Wiki
๊ฐ์
๋ณด๋ ๋ฐฉํฅ์ผ๋ก ํฌ์ฌ์ฒด๋ฅผ ๋ฐ์ฌํ๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ์์๋ก ์ฌ์ฉํ๋ ๋ฅ๋ ฅ์ ์ ํฉํฉ๋๋ค.
์ง์ ๋ ์์ดํ
์ AbilityConcept.wand
๋ก ์ค์ ํ ์ ์์ต๋๋ค.
์ฐธ์กฐ: Default properties
์์
Ability ํด๋์ค์ com.github.noonmaru.psychics.Ability
๊ฐ ์๋ com.github.noonmaru.psychics.ActiveAbility
๋ฅผ ์์ํ์ธ์.
์์ ํ์ onCast(target: Any?)
ํจ์๋ override
ํ์ธ์.
import com.github.noonmaru.psychics.AbilityConcept
import com.github.noonmaru.psychics.ActiveAbility
class MyAbility : ActiveAbility<AbilityConcept>() {
override fun onCast(event: PlayerEvent, action: WandAction, target: Any?) {
// ๋ฅ๋ ฅ ๋ฐ๋ ์ฝ๋
}
}
onCast
ํจ์๋ ์ฌ์ฉ์๊ฐ ์ง์ ๋ ์์ดํ
์ ํด๋ฆญ(์ข, ์ฐ ํฌํจ)ํ ๋ ํธ์ถ๋ฉ๋๋ค.
ํธ์ถํ๊ธฐ ์ด์ ์ test
ํจ์๋ก ๋ฐ๋ ์กฐ๊ฑด์ ํ
์คํธํฉ๋๋ค.
TestResult.SUCCESS
๊ฐ ๋ฐํ๋์ง ์์๊ฒฝ์ฐ ์ฌ์ฉ์์๊ฒ ์คํจ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ onCast
ํจ์๋ฅผ ์คํํ์ง ์์ต๋๋ค.
์ฑ๋๋ง
์ฌ์ฉ์๊ฐ ์์ดํ ์ ํด๋ฆญํ๊ณ ์ผ์ ์๊ฐ ๋ค์ onCast ๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ณดํต ์์ ์๊ฐ, ์ง์ค์๊ฐ ์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํฉ๋๋ค.
AbilityConcept.castingTicks
์์ฑ์ ํตํด ์ค์ ํ ์ ์์ต๋๋ค.
myfirstability.yml
display-name: myfirstpsychic health-bonus: 0.0 health-regen-per-tick: 0.0 mana: 0.0 mana-regen-per-tick: 0.0 mana-color: BLUE description: [] abilities: myfirstability: ability: .myability common: display-name: myability type: PASSIVE casting-ticks: 50 interruptible: false supply-items: [] description: []
๊ด๋ จ ํจ์
onChannel
= ์์ ํonCast
ํธ์ถ ์ ๊น์ง 1 tick๋ง๋ค ํธ์ถ๋ฉ๋๋ค.onInterrupt
= ์์ ๋์ค ๊ฐ์ ๋ก ์ทจ์๋์์๋ ํธ์ถ๋ฉ๋๋ค.
Targeter
targeter
๋ ActiveAbility
์์ ์์ ์๊ฐ ์ด์ ์ ๋ชฉํ๋ฅผ ์ง์ ํ๋ ํจ์์
๋๋ค.
๋ณดํต ์์ ์๊ฐ์ ์ค์ ํ์ฌ ๋ชฉํ์ ์ ํ๋๋ฅผ ๋ฎ์ถ๋๋ฐ ์ฌ์ฉํฉ๋๋ค.
๋ฐํ๋ ์ธ์คํด์ค๋ onCast
ํจ์๋ฅผ ํธ์ถํ ๋ target ์ธ์๋ก ์ ๋ฌํฉ๋๋ค.
์ ์ํ์ง ์์๊ฒฝ์ฐ null
์ด ์ ๋ฌ๋ฉ๋๋ค.
class MyAbility : ActiveAbility<AbilityConcept>() {
init {
targeter = {
esper.player.eyeLocation // ์์ ์ ์ฌ์ฉ์์ ๋จธ๋ฆฌ ์ขํ
}
}
override fun onCast(event: PlayerEvent, action: WandAction, target: Any?) {
// target = targeterํตํด ์ป์ด์จ Location
}
}