secminhr bf36952e73 Card update
Add SP card for Guo and Rabbit
2018-08-28 10:01:49 +00:00

181 lines
7.1 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import java.util.*
abstract class AggressiveCard: Card {
override fun startSkill() {
println(activeString)
owner.enemy.attackingCard = this
owner.enemy.effectBuffer = this.effects
owner.enemy.effectBuffer.forEach { it.apply() }
}
override fun toString(): String {
return "${this.id}. ${this.name}"
}
}
abstract class DefensiveCard: Card {
class NotInPassiveContextException: Exception()
override fun startSkill() {
if(owner.effectBuffer.isEmpty()) {
throw NotInPassiveContextException()
}
println(activeString)
this.effects.forEach { it.apply() }
}
override fun toString(): String {
return "${this.id}. ${this.name}"
}
}
abstract class GeneralCard: Card {
override fun startSkill() {
println(activeString)
this.effects.forEach { it.apply() }
}
override fun toString(): String {
return "${this.id}. ${this.name}"
}
}
//ordinary card
class AttackCard(override val owner: Character): AggressiveCard() {
override val name = "攻擊"
override val id = 1
override val effects: Array<Effect> = arrayOf(Damage(owner.enemy, decreaseLife = 2))
override val activeString = "$owner 攻擊 ${owner.enemy}"
}
class DefendCard(override val owner: Character): DefensiveCard() {
override val name = "防禦"
override val id = 2
override val effects: Array<Effect> = arrayOf(Defense(owner))
override val activeString = "$owner 防禦成功"
}
class HealCard(override val owner: Character): GeneralCard() {
override val name = "治癒"
override val id = 3
override val effects: Array<Effect> = arrayOf(Heal(owner, increaseLife = 2))
override val activeString = "$owner 回復2點生命"
}
class SupplyCard(override val owner: Character): GeneralCard() {
override val name = "補給"
override val id = 4
override val effects: Array<Effect> = arrayOf(DrawFromDeck(owner, numberOfCards = 2))
override val activeString = "$owner 增加2張手牌"
}
class RobbingCard(override val owner: Character): AggressiveCard() {
override val name = "強奪"
override val id = 5
override val effects: Array<Effect> = arrayOf(ChooseFromCharacterHand(owner, owner.enemy))
override val activeString = "$owner 正在對 ${owner.enemy} 行搶"
}
class SurpriceCard(override val owner: Character): AggressiveCard() {
override val name = "奇襲"
override val id = 6
override val effects: Array<Effect> = arrayOf(Damage(owner.enemy, decreaseLife = 2),
LoseCard(owner.enemy))
override val activeString = "$owner 發動奇襲"
}
class AwareCard(override val owner: Character): DefensiveCard() {
override val name = "洞悉"
override val id = 7
override val effects: Array<Effect> = arrayOf(DrawFromDeck(owner, numberOfCards = 2), Defense(owner))
override val activeString = "$owner 洞悉了 ${owner.enemy} 的攻擊並抽取2張手牌"
}
class PlanCard(override val owner: Character): GeneralCard() {
override val name = "妙策"
override val id = 8
override val effects: Array<Effect> = arrayOf(ChooseFromDeck(owner))
override val activeString = "$owner 有個妙策"
}
class SweepCard(override val owner: Character): AggressiveCard() {
override val name = "掃射"
override val id = 9
private val damage = Random().nextInt(6)
override val effects: Array<Effect>
get() = arrayOf(Damage(owner.enemy, decreaseLife = damage))
override val activeString = "$owner${owner.enemy} 進行掃射,威力是 $damage"
}
class BlessCard(override val owner: Character): GeneralCard() {
override val name = "加護"
override val id = 10
override val effects: Array<Effect> = arrayOf(Heal(owner, increaseLife = 3), SolvePoison(owner))
override val activeString = "$owner 獲得加護身上的毒素一掃而空並回復3點生命"
}
class PoisonCard(override val owner: Character): GeneralCard() {
override val name = "劇毒"
override val id = 11
override val effects: Array<Effect> = arrayOf(Poison(owner.enemy))
override val activeString = "$owner 在食物下毒,${owner.enemy} 中毒了"
}
class ChaosCard(override val owner: Character): AggressiveCard() {
override val name = "狂亂"
override val id = 12
override val effects: Array<Effect> = arrayOf(Heal(owner, increaseLife = 3),
Damage(owner.enemy, decreaseLife = 3))
override val activeString = "$owner 進入狂亂模式,回復三點生命,並對 ${owner.enemy} 造成三點傷害"
}
class ReverseCard(override val owner: Character): DefensiveCard() {
override val name = "反制"
override val id = 13
override val effects: Array<Effect> = arrayOf(Reverse(owner), Defense(owner))
override val activeString = "$owner 反制了 ${owner.enemy} 的攻擊,反彈了其效果"
}
//SP card
//Guo's card
class SpaceZipperDoor(override val owner: Character): DefensiveCard() {
override val name = "空間之鍊(門)"
override val id = 101
override val activeString = "$owner 使出了空間之鍊(門)"
override val effects: Array<Effect> = arrayOf(Copy(owner), Defense(owner))
}
class SpaceZipperShell(override val owner: Character): GeneralCard() {
override val name = "空間之鍊(殼)"
override val id = 102
override val activeString = "$owner 使出了空間之鍊(殼)"
override val effects: Array<Effect> = arrayOf(BecomeInvincible(owner, turns = 2))
}
class SpaceZipperDestroy(override val owner: Character): AggressiveCard() {
override val name = "空間之鍊(滅)"
override val id = 103
override val activeString = "$owner 使出了空間之鍊(滅)"
override val effects: Array<Effect> = arrayOf(Damage(owner.enemy, decreaseLife = 5),
LoseCard(owner.enemy, num = 2))
}
//Rabbit's card
class NoScienceSlash(override val owner: Character): Card {
override val name = "科學無用論(高速砍擊)"
override val id = 201
override val activeString = "$owner 使用了科學無用論(高速砍擊)"
override val effects: Array<Effect> = arrayOf(UndefendableDamage(owner.enemy, decreaseLife = 3))
override fun startSkill() {
effects.forEach { it.apply() }
}
override fun toString() = "$id. $name"
}
class NoSciencePowerIncrease(override val owner: Character): GeneralCard() {
override val name = "科學無用論(力量增幅)"
override val id = 202
override val activeString = "$owner 使用了科學無用論(力量增幅)"
override val effects: Array<Effect> = arrayOf(ChangeDamageAddition(owner.enemy, num = 1, turns = 3))
}
class NoScienceFinal(override val owner: Character): Card {
override val name = "科學無用論(終焉一擊)"
override val id = 203
override val activeString = "$owner 使用了科學無用論(終焉一擊)"
override val effects: Array<Effect> = arrayOf(UndefendableDamage(owner.enemy, decreaseLife = 5))
override fun startSkill() {
effects.forEach { it.apply() }
}
override fun toString() = "$id. $name"
}