|
|
|
|
@@ -63,6 +63,7 @@ if self.Energy < cost then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
self.Energy = self.Energy - cost
|
|
|
|
|
self.ActiveKillReward = c.rewardOnKill or 0
|
|
|
|
|
self:ResolveCardEffects(cardId, slot, c, false, cost)
|
|
|
|
|
if c.kind == "Attack" then
|
|
|
|
|
self.TurnAttackCardsPlayed = (self.TurnAttackCardsPlayed or 0) + 1
|
|
|
|
|
@@ -81,6 +82,9 @@ end
|
|
|
|
|
if c.cardPlayedRandomDamage ~= nil and c.cardPlayedRandomDamage > 0 then
|
|
|
|
|
self:DealDirectDamageToRandomMonster(c.cardPlayedRandomDamage)
|
|
|
|
|
end
|
|
|
|
|
if self.ActiveKillReward ~= nil and self.ActiveKillReward <= 0 then
|
|
|
|
|
self.ActiveKillReward = 0
|
|
|
|
|
end
|
|
|
|
|
table.remove(self.Hand, slot)
|
|
|
|
|
if c.exhaust == true then
|
|
|
|
|
if self.ExhaustPile == nil then self.ExhaustPile = {} end
|
|
|
|
|
@@ -235,7 +239,7 @@ end`, [
|
|
|
|
|
{ Type: 'any', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'touchPoint' },
|
|
|
|
|
]),
|
|
|
|
|
method('Toast', `log(message)`, [{ Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'message' }]),
|
|
|
|
|
method('DealDamageToTarget', `local m = self.Monsters[self.TargetIndex]
|
|
|
|
|
method('DealDamageToTarget', `local m = self.Monsters[self.TargetIndex]
|
|
|
|
|
if m == nil or m.alive ~= true then
|
|
|
|
|
m = nil
|
|
|
|
|
for i = 1, #self.Monsters do
|
|
|
|
|
@@ -243,7 +247,7 @@ if m == nil or m.alive ~= true then
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if m == nil then
|
|
|
|
|
return
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
local dmg = amount
|
|
|
|
|
if m.vuln > 0 then
|
|
|
|
|
@@ -262,13 +266,16 @@ if dmg > 0 then
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
self:MonsterHitMotion(m.slot)
|
|
|
|
|
local killed = false
|
|
|
|
|
if m.hp <= 0 then
|
|
|
|
|
m.hp = 0
|
|
|
|
|
self:KillMonster(m.slot)
|
|
|
|
|
end`, [
|
|
|
|
|
killed = true
|
|
|
|
|
end
|
|
|
|
|
return killed`, [
|
|
|
|
|
{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' },
|
|
|
|
|
{ Type: 'boolean', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'pierce' },
|
|
|
|
|
]),
|
|
|
|
|
], 0, 'boolean'),
|
|
|
|
|
method('DealDirectDamageToTarget', `local m = self.Monsters[self.TargetIndex]
|
|
|
|
|
if m == nil or m.alive ~= true then
|
|
|
|
|
m = nil
|
|
|
|
|
@@ -277,17 +284,20 @@ if m == nil or m.alive ~= true then
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if m == nil then
|
|
|
|
|
return
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
m.hp = m.hp - amount
|
|
|
|
|
self:ShowDmgPop(m.slot, amount)
|
|
|
|
|
self:MonsterHitMotion(m.slot)
|
|
|
|
|
local killed = false
|
|
|
|
|
if m.hp <= 0 then
|
|
|
|
|
m.hp = 0
|
|
|
|
|
self:KillMonster(m.slot)
|
|
|
|
|
end`, [
|
|
|
|
|
killed = true
|
|
|
|
|
end
|
|
|
|
|
return killed`, [
|
|
|
|
|
{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' },
|
|
|
|
|
]),
|
|
|
|
|
], 0, 'boolean'),
|
|
|
|
|
method('DealDirectDamageToRandomMonster', `local alive = {}
|
|
|
|
|
for i = 1, #self.Monsters do
|
|
|
|
|
local m = self.Monsters[i]
|
|
|
|
|
@@ -296,21 +306,24 @@ for i = 1, #self.Monsters do
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if #alive <= 0 then
|
|
|
|
|
return
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
local m = alive[math.random(1, #alive)]
|
|
|
|
|
if m == nil then
|
|
|
|
|
return
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
m.hp = m.hp - amount
|
|
|
|
|
self:ShowDmgPop(m.slot, amount)
|
|
|
|
|
self:MonsterHitMotion(m.slot)
|
|
|
|
|
local killed = false
|
|
|
|
|
if m.hp <= 0 then
|
|
|
|
|
m.hp = 0
|
|
|
|
|
self:KillMonster(m.slot)
|
|
|
|
|
end`, [
|
|
|
|
|
killed = true
|
|
|
|
|
end
|
|
|
|
|
return killed`, [
|
|
|
|
|
{ Type: 'number', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'amount' },
|
|
|
|
|
]),
|
|
|
|
|
], 0, 'boolean'),
|
|
|
|
|
method('PlayAttackFx', `local m = self.Monsters[targetIndex]
|
|
|
|
|
if m == nil or m.alive ~= true or m.entity == nil or not isvalid(m.entity) then
|
|
|
|
|
self:DealDamageToTarget(damage, pierce)
|
|
|
|
|
@@ -339,7 +352,11 @@ _TimerService:SetTimerOnce(function()
|
|
|
|
|
if mt ~= nil and mt.alive == true and mt.vuln > 0 then
|
|
|
|
|
shown = math.floor(damage * 1.5)
|
|
|
|
|
end
|
|
|
|
|
self:DealDamageToTarget(damage, pierce)
|
|
|
|
|
local killed = self:DealDamageToTarget(damage, pierce)
|
|
|
|
|
if killed == true and self.ActiveKillReward ~= nil and self.ActiveKillReward > 0 then
|
|
|
|
|
self.BonusRewardScreens = (self.BonusRewardScreens or 0) + self.ActiveKillReward
|
|
|
|
|
end
|
|
|
|
|
self.ActiveKillReward = 0
|
|
|
|
|
self:ShowDmgPop(targetIndex, shown)
|
|
|
|
|
self:RenderCombat()
|
|
|
|
|
self:CheckCombatEnd()
|
|
|
|
|
@@ -363,6 +380,7 @@ end
|
|
|
|
|
_TimerService:SetTimerOnce(function()
|
|
|
|
|
if fx ~= nil then fx.Enable = false end
|
|
|
|
|
self.FxBusy = false
|
|
|
|
|
local killCount = 0
|
|
|
|
|
for i = 1, #self.Monsters do
|
|
|
|
|
local m = self.Monsters[i]
|
|
|
|
|
if m ~= nil and m.alive == true then
|
|
|
|
|
@@ -387,9 +405,14 @@ _TimerService:SetTimerOnce(function()
|
|
|
|
|
if m.hp <= 0 then
|
|
|
|
|
m.hp = 0
|
|
|
|
|
self:KillMonster(m.slot)
|
|
|
|
|
killCount = killCount + 1
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if killCount > 0 and self.ActiveKillReward ~= nil and self.ActiveKillReward > 0 then
|
|
|
|
|
self.BonusRewardScreens = (self.BonusRewardScreens or 0) + (killCount * self.ActiveKillReward)
|
|
|
|
|
end
|
|
|
|
|
self.ActiveKillReward = 0
|
|
|
|
|
self:RenderCombat()
|
|
|
|
|
self:CheckCombatEnd()
|
|
|
|
|
end, 0.35)`, [
|
|
|
|
|
|