mirror of
https://github.com/Qsgs-Fans/FreeKill.git
synced 2024-11-16 11:42:45 +08:00
d1619672a2
大部分修改的地方都在代码里加了注释 --------- Co-authored-by: notify <notify-ctrl@qq.com> Co-authored-by: xxyheaven <1433191064@qq.com> Co-authored-by: YoumuKon <38815081+YoumuKon@users.noreply.github.com>
179 lines
4.9 KiB
Lua
179 lines
4.9 KiB
Lua
fk.ai_card.thunder__slash = fk.ai_card.slash
|
|
fk.ai_use_play.thunder__slash = fk.ai_use_play.slash
|
|
fk.ai_card.fire__slash = fk.ai_card.slash
|
|
fk.ai_use_play.fire__slash = fk.ai_use_play.slash
|
|
fk.ai_card.analeptic = {
|
|
intention = 60, -- 身份值
|
|
value = 5, -- 卡牌价值
|
|
priority = 3 -- 使用优先值
|
|
}
|
|
|
|
fk.ai_use_play["analeptic"] = function(self, card)
|
|
local cards = table.map(self.player:getCardIds("&he"), function(id)
|
|
return Fk:getCardById(id)
|
|
end)
|
|
self:sortValue(cards)
|
|
for _, sth in ipairs(self:getActives("slash")) do
|
|
local slash = nil
|
|
if sth:isInstanceOf(Card) then
|
|
if sth.skill:canUse(self.player, sth) and not self.player:prohibitUse(sth) then
|
|
slash = sth
|
|
end
|
|
else
|
|
local selected = {}
|
|
for _, c in ipairs(cards) do
|
|
if sth:cardFilter(c.id, selected) then
|
|
table.insert(selected, c.id)
|
|
end
|
|
end
|
|
local tc = sth:viewAs(selected)
|
|
if tc and tc:matchPattern("slash") and tc.skill:canUse(self.player, tc) and not self.player:prohibitUse(tc) then
|
|
slash = tc
|
|
end
|
|
end
|
|
if slash then
|
|
fk.ai_use_play.slash(self, slash)
|
|
if self.use_id then
|
|
self.use_id = card.id
|
|
self.use_tos = {}
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
fk.ai_card.iron_chain = {
|
|
intention = function(self, card, from)
|
|
if self.player.chained then
|
|
return -80
|
|
end
|
|
return 80
|
|
end, -- 身份值
|
|
value = 2, -- 卡牌价值
|
|
priority = 3 -- 使用优先值
|
|
}
|
|
|
|
fk.ai_use_play["iron_chain"] = function(self, card)
|
|
for _, p in ipairs(self.friends) do
|
|
if card.skill:targetFilter(p.id, self.use_tos, {}, card) and p.chained then
|
|
table.insert(self.use_tos, p.id)
|
|
end
|
|
end
|
|
self:sort(self.enemies)
|
|
for _, p in ipairs(self.enemies) do
|
|
if card.skill:targetFilter(p.id, self.use_tos, {}, card) and not p.chained then
|
|
table.insert(self.use_tos, p.id)
|
|
end
|
|
end
|
|
if #self.use_tos < 2 then
|
|
self.use_tos = {}
|
|
else
|
|
self.use_id = card.id
|
|
end
|
|
end
|
|
|
|
fk.ai_use_play["recast"] = function(self, card)
|
|
if self.command == "PlayCard" then
|
|
self.use_id = card.id
|
|
self.special_skill = "recast"
|
|
end
|
|
end
|
|
|
|
fk.ai_card.fire_attack = {
|
|
intention = 90, -- 身份值
|
|
value = 3, -- 卡牌价值
|
|
priority = 4 -- 使用优先值
|
|
}
|
|
|
|
fk.ai_use_play["fire_attack"] = function(self, card)
|
|
self:sort(self.enemies)
|
|
for _, p in ipairs(self.enemies) do
|
|
if card.skill:targetFilter(p.id, self.use_tos, {}, card) and #self.player:getCardIds("h") > 2 then
|
|
self.use_id = card.id
|
|
table.insert(self.use_tos, p.id)
|
|
end
|
|
end
|
|
end
|
|
|
|
fk.ai_discard["fire_attack_skill"] = function(self, min_num, num, include_equip, cancelable, pattern, prompt)
|
|
local use = self:eventData("UseCard")
|
|
for _, p in ipairs(TargetGroup:getRealTargets(use.tos)) do
|
|
if self:isEnemie(p) then
|
|
local cards = table.map(self.player:getCardIds("h"), function(id)
|
|
return Fk:getCardById(id)
|
|
end)
|
|
local exp = Exppattern:Parse(pattern)
|
|
cards = table.filter(cards, function(c)
|
|
return exp:match(c)
|
|
end)
|
|
if #cards > 0 then
|
|
self:sortValue(cards)
|
|
return { cards[1].id }
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
fk.ai_nullification.fire_attack = function(self, card, to, from, positive)
|
|
if positive then
|
|
if self:isFriend(to) and #to:getCardIds("h") > 0 and #from:getCardIds("h") > 0 then
|
|
if #self.avail_cards > 1 or self:isWeak(to) or to.id == self.player.id then
|
|
self.use_id = self.avail_cards[1]
|
|
end
|
|
end
|
|
else
|
|
if self:isEnemie(to) and #to:getCardIds("h") > 0 and #from:getCardIds("h") > 1 then
|
|
if #self.avail_cards > 1 or self:isWeak(to) then
|
|
self.use_id = self.avail_cards[1]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
fk.ai_card.fire_attack = {
|
|
intention = 120, -- 身份值
|
|
value = 2, -- 卡牌价值
|
|
priority = 2 -- 使用优先值
|
|
}
|
|
|
|
fk.ai_use_play["supply_shortage"] = function(self, card)
|
|
self:sort(self.enemies)
|
|
for _, p in ipairs(self.enemies) do
|
|
if card.skill:targetFilter(p.id, self.use_tos, {}, card) and not p.chained then
|
|
self.use_id = card.id
|
|
table.insert(self.use_tos, p.id)
|
|
end
|
|
end
|
|
end
|
|
|
|
fk.ai_nullification.supply_shortage = function(self, card, to, from, positive)
|
|
if positive then
|
|
if self:isFriend(to) then
|
|
if #self.avail_cards > 1 or self:isWeak(to) or to.id == self.player.id then
|
|
self.use_id = self.avail_cards[1]
|
|
end
|
|
end
|
|
else
|
|
if self:isEnemie(to) then
|
|
if #self.avail_cards > 1 or self:isWeak(to) then
|
|
self.use_id = self.avail_cards[1]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
fk.ai_card.supply_shortage = {
|
|
intention = 130, -- 身份值
|
|
value = 2, -- 卡牌价值
|
|
priority = 1 -- 使用优先值
|
|
}
|
|
|
|
fk.ai_skill_invoke["#fan_skill"] = function(self)
|
|
local use = self:eventData("UseCard")
|
|
for _, p in ipairs(TargetGroup:getRealTargets(use.tos)) do
|
|
if not self:isFriend(p) then
|
|
return true
|
|
end
|
|
end
|
|
end
|