From b5e66828d15b3b2f3248e269d3da678339bc5e35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Fri, 15 Nov 2024 04:57:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?util=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/fk_ex.lua | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lua/fk_ex.lua b/lua/fk_ex.lua index a9086cb..40a1e08 100644 --- a/lua/fk_ex.lua +++ b/lua/fk_ex.lua @@ -26,7 +26,7 @@ TrickCard, DelayedTrickCard = table.unpack(Trick) local Equip = require "core.card_type.equip" _, Weapon, Armor, DefensiveRide, OffensiveRide, Treasure = table.unpack(Equip) -local function readCommonSpecToSkill(skill, spec) +function fk.readCommonSpecToSkill(skill, spec) skill.mute = spec.mute skill.no_indicate = spec.no_indicate skill.anim_type = spec.anim_type @@ -57,8 +57,8 @@ local function readCommonSpecToSkill(skill, spec) end end -local function readUsableSpecToSkill(skill, spec) - readCommonSpecToSkill(skill, spec) +function fk.readUsableSpecToSkill(skill, spec) + fk.readCommonSpecToSkill(skill, spec) assert(spec.main_skill == nil or spec.main_skill:isInstanceOf(UsableSkill)) if type(spec.derived_piles) == "string" then skill.derived_piles = {spec.derived_piles} @@ -85,8 +85,8 @@ local function readUsableSpecToSkill(skill, spec) skill.times = spec.times or skill.times end -local function readStatusSpecToSkill(skill, spec) - readCommonSpecToSkill(skill, spec) +function fk.readStatusSpecToSkill(skill, spec) + fk.readCommonSpecToSkill(skill, spec) if spec.global then skill.global = spec.global end @@ -126,7 +126,7 @@ function fk.CreateTriggerSkill(spec) local frequency = spec.frequency or Skill.NotFrequent local skill = TriggerSkill:new(spec.name, frequency) - readUsableSpecToSkill(skill, spec) + fk.readUsableSpecToSkill(skill, spec) if type(spec.events) == "number" then table.insert(skill.events, spec.events) @@ -210,7 +210,7 @@ end function fk.CreateActiveSkill(spec) assert(type(spec.name) == "string") local skill = ActiveSkill:new(spec.name, spec.frequency or Skill.NotFrequent) - readUsableSpecToSkill(skill, spec) + fk.readUsableSpecToSkill(skill, spec) if spec.can_use then skill.canUse = function(curSkill, player, card, extra_data) @@ -263,7 +263,7 @@ function fk.CreateViewAsSkill(spec) assert(type(spec.view_as) == "function") local skill = ViewAsSkill:new(spec.name, spec.frequency or Skill.NotFrequent) - readUsableSpecToSkill(skill, spec) + fk.readUsableSpecToSkill(skill, spec) skill.viewAs = spec.view_as if spec.card_filter then @@ -318,7 +318,7 @@ function fk.CreateDistanceSkill(spec) assert(type(spec.correct_func) == "function" or type(spec.fixed_func) == "function") local skill = DistanceSkill:new(spec.name) - readStatusSpecToSkill(skill, spec) + fk.readStatusSpecToSkill(skill, spec) skill.getCorrect = spec.correct_func skill.getFixed = spec.fixed_func @@ -338,7 +338,7 @@ function fk.CreateProhibitSkill(spec) assert(type(spec.name) == "string") local skill = ProhibitSkill:new(spec.name) - readStatusSpecToSkill(skill, spec) + fk.readStatusSpecToSkill(skill, spec) skill.isProhibited = spec.is_prohibited or skill.isProhibited skill.prohibitUse = spec.prohibit_use or skill.prohibitUse skill.prohibitResponse = spec.prohibit_response or skill.prohibitResponse @@ -362,7 +362,7 @@ function fk.CreateAttackRangeSkill(spec) type(spec.within_func) == "function" or type(spec.without_func) == "function") local skill = AttackRangeSkill:new(spec.name) - readStatusSpecToSkill(skill, spec) + fk.readStatusSpecToSkill(skill, spec) if spec.correct_func then skill.getCorrect = spec.correct_func end @@ -391,7 +391,7 @@ function fk.CreateMaxCardsSkill(spec) assert(type(spec.correct_func) == "function" or type(spec.fixed_func) == "function" or type(spec.exclude_from) == "function") local skill = MaxCardsSkill:new(spec.name) - readStatusSpecToSkill(skill, spec) + fk.readStatusSpecToSkill(skill, spec) if spec.correct_func then skill.getCorrect = spec.correct_func end @@ -417,7 +417,7 @@ function fk.CreateTargetModSkill(spec) assert(type(spec.name) == "string") local skill = TargetModSkill:new(spec.name) - readStatusSpecToSkill(skill, spec) + fk.readStatusSpecToSkill(skill, spec) if spec.bypass_times then skill.bypassTimesCheck = spec.bypass_times end @@ -451,7 +451,7 @@ function fk.CreateFilterSkill(spec) assert(type(spec.name) == "string") local skill = FilterSkill:new(spec.name) - readStatusSpecToSkill(skill, spec) + fk.readStatusSpecToSkill(skill, spec) skill.cardFilter = spec.card_filter skill.viewAs = spec.view_as skill.equipSkillFilter = spec.equip_skill_filter @@ -468,7 +468,7 @@ function fk.CreateInvaliditySkill(spec) assert(type(spec.name) == "string") local skill = InvaliditySkill:new(spec.name) - readStatusSpecToSkill(skill, spec) + fk.readStatusSpecToSkill(skill, spec) skill.getInvalidity = spec.invalidity_func return skill @@ -483,7 +483,7 @@ function fk.CreateVisibilitySkill(spec) assert(type(spec.name) == "string") local skill = VisibilitySkill:new(spec.name) - readStatusSpecToSkill(skill, spec) + fk.readStatusSpecToSkill(skill, spec) if spec.card_visible then skill.cardVisible = spec.card_visible end if spec.role_visible then skill.roleVisible = spec.role_visible end -- Gitee From 1be1cb0729a5b2b9f43d4b1629843e867eafd1a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E5=A6=96=E6=A2=A6=E5=8E=A8?= <12796194+youmuKon-supreme@user.noreply.gitee.com> Date: Fri, 15 Nov 2024 05:20:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A5=B8=E9=9B=84=E5=92=8C=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- standard/ai/init.lua | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/standard/ai/init.lua b/standard/ai/init.lua index d574025..0c6c1f1 100644 --- a/standard/ai/init.lua +++ b/standard/ai/init.lua @@ -4,6 +4,23 @@ else require "packages.standard.ai.aux_skills" end +SmartAI:setSkillAI("jianxiong", { + think_skill_invoke = function(self, ai, skill_name, prompt) + ---@type DamageStruct + local dmg = ai.room.logic:getCurrentEvent().data[1] + local player = ai.player + local card = dmg.card + if not card or player.room:getCardArea(card) ~= Card.Processing then return false end + local val = ai:getBenefitOfEvents(function(logic) + logic:obtainCard(player, card, true, fk.ReasonJustMove) + end) + if val > 0 then + return true + end + return false + end, +}) + SmartAI:setSkillAI("ganglie", { think = function(self, ai) local cards = ai:getEnabledCards() @@ -56,6 +73,29 @@ SmartAI:setSkillAI("ganglie", { end, }) +SmartAI:setSkillAI("fankui", { + think_skill_invoke = function(self, ai, skill_name, prompt) + ---@type DamageStruct + local dmg = ai.room.logic:getCurrentEvent().data[1] + local player = ai.player + local from = dmg.from + if not from then return false end + local val = ai:getBenefitOfEvents(function(logic) + local flag = from == player and "e" or "he" + local cards = from:getCardIds(flag) + if #cards < 1 then + logic.benefit = -1 + return + end + logic:obtainCard(player, cards[1], false, fk.ReasonPrey) + end) + if val > 0 then + return true + end + return false + end, +}) + SmartAI:setSkillAI("tuxi", { think = function(self, ai) local player = ai.player -- Gitee