diff --git a/README.md b/README.md
index 289d81e..61b8231 100644
--- a/README.md
+++ b/README.md
@@ -4,27 +4,15 @@
之所以叫作监狱包,是因为我们曾经踢足球时自称“监狱队”。
-所有设计均由 [@baisebaoma](https://github.com/baisebaoma) 实现!
+所有设计均由我,也就是 [@baisebaoma(反赌专家)](https://github.com/baisebaoma) 实现。
-## 目前已实现武将
+## 已实现武将
-### 神·简自豪 体力3
+### 群·简自豪 体力3
-转会:当你的体力值减少时,你可以变更势力。你无法变更为已经成为过的势力。锁定技,这个技能是为了告诉你下面这些提示。
-
-
-> 这个武将由熊俊博于2023年12月1日设计!
- 玩法提示
- 活过第一轮!
- 如果有防具,你就能安全、强大地偷牌。
- 你很脆,但你很强。寻求保护!
- 队友提示
- 优先将防具、【闪】、【桃】、【酒】交给他。
- 敌方提示
- 使用能增强【杀】的技能和武器,如【无双】、【青釭剑】。
- 优先拆除防具。
- 谨慎对待摸到的【诸葛连弩】。
+![群·简自豪](./image/generals/avatar/xjb__jianzihao.jpg "群·简自豪")
+> 该武将由玩家“导演片子怎么样了”设计。
开局:锁定技,当你的回合开始时,所有其他有牌且与你势力不同的武将需要交给你一张牌,并视为对你使用一张【杀】。
“从未如此美妙的开局!”——简自豪
@@ -33,13 +21,80 @@
走位:锁定技,当你的装备区没有牌时,其他角色计算与你的距离时,始终+1;当你的装备区有牌时,你计算与其他角色的距离时,始终-1。
-圣弩:锁定技,当【诸葛连弩】移至弃牌堆或其他角色的装备区时,你获得此【诸葛连弩】。
+圣弩:当【诸葛连弩】移至弃牌堆或其他角色的装备区时,你可以获得此【诸葛连弩】。
洗澡:限定技,当你处于濒死状态时,你可以将体力恢复至1,摸三张牌,然后翻面。
-### 蜀·侯国玉 体力0
-暂未设计技能,但已经可以当作头像。
+### 群·界简自豪 体力3
+
+![群·界简自豪](./image/generals/avatar/tym__jianzihao.jpg "群·界简自豪")
+
+> 该武将由玩家“导演片子怎么样了”设计,我优化。
+
+夺冠:出牌阶段限一次,你选择若干名武将。你对他们【顺手牵羊】,然后被他们【杀】。
+
“加入EDG,成为世界冠军!”
+
+三件:锁定技,出牌阶段开始时,如果你的装备区有且仅有3张牌,你视为使用一张【酒】、一张【桃】和一张【无中生有】。
+ “又陷入劣势了,等乌兹三件套吧!”——不知道哪个解说说的
+
+红颜:锁定技,你的♠牌视为♥牌。
+
+走位:锁定技,当你的装备区没有牌时,其他角色计算与你的距离时,始终+1;当你的装备区有牌时,你计算与其他角色的距离时,始终-1。
+
+洗澡:限定技,当你处于濒死状态且装备区有牌时,你可以弃掉所有装备区的牌、将体力恢复至1,然后每以此法弃掉一张牌,你摸一张牌。
+
+
+### 群·李元浩 体力3
+
+![群·李元浩](./image/generals/avatar/skl__liyuanhao.jpg "群·李元浩")
+
+> 该武将由玩家“拂却心尘”设计。
+
+虎啸:当你使用或打出一张【杀】时,你可以将牌堆顶的一张牌置于你的武将牌上,称为【啸】。
+
“我希望我的后辈们能够记住,在你踏上职业道路的这一刻开始,你的目标就只有,冠军。”——李元浩
+
+横刀:你可以将【啸】当作【酒】使用或打出。
+
“谁敢横刀立马……”——钱晨
+
+立马:你可以将【啸】当作【闪】使用或打出。
+
“……唯我虎大将军!”——钱晨
+
+二段:锁定技,当你的武将牌上有且仅有两张【啸】时,你选择失去一点体力或失去所有【啸】。
+
+三件:锁定技,当你的装备区有且仅有防具和防御马时,你造成的伤害-1。
+
虎三件,指【中娅沙漏】、【水银之靴】、【大天使之杖】。一些人持不同的观点,但【大天使之杖】没有什么争议。
+
+
+### 群·界李元浩 体力3
+
+![群·界李元浩](./image/generals/avatar/tym__liyuanhao.jpg "群·界李元浩")
+
+> 该武将由玩家“拂却心尘”设计,我优化。
+
+虎啸:当你使用或打出一张【杀】时,你可以将牌堆顶的一张牌置于你的武将牌上,称为【啸】。
+
“我希望我的后辈们能够记住,在你踏上职业道路的这一刻开始,你的目标就只有,冠军。”——李元浩
+
+横刀:你可以将【啸】当作【酒】使用或打出。
+
“谁敢横刀立马……”——钱晨
+
+立马:你可以将【啸】当作【闪】使用或打出。
+
“……唯我虎大将军!”——钱晨
+
+二段:锁定技,当你的武将牌上有且仅有两张【啸】时,你选择恢复一点体力或将所有【啸】纳入手牌。
+
+三件:锁定技,当你的装备区有且仅有武器和进攻马时,你造成的伤害+1。
+
虎三件,有时也可以指【卢登的激荡】、【虚空之杖】和【灭世者的死亡之帽】。
+
+
+### 群·高天亮 体力3
+
+(暂无肖像)
+
+> 该武将由玩家“导演片子怎么样了”设计。
+
+玉玉:当你受到伤害时,你可以摸三张牌,然后翻面。
+
## 想游玩我们的武将?
@@ -47,4 +102,4 @@
## 发现了 bug?
-请提交 PR 或 Issue、发送电子邮件给我。感谢!
+请提交 PR 或 Issue,或发送电子邮件至 [baisebaoma@foxmail.com](mailto:baisebaoma@foxmail.com)。感谢!
diff --git a/jianyu.lua b/jianyu.lua
index 7c98d42..632c1f3 100644
--- a/jianyu.lua
+++ b/jianyu.lua
@@ -384,18 +384,6 @@ Fk:loadTranslationTable{
["~tym__jianzihao"] = "好像又要倒下了……",
}
--- 侯国玉
-local tym__houguoyu = General(extension, "tym__houguoyu", "qun", 4, 4, General.Male)
-
-tym__houguoyu:addSkill("guose")
-tym__houguoyu:addSkill("qianxun")
-tym__houguoyu:addSkill("biyue")
-
-Fk:loadTranslationTable {
- ["tym__houguoyu"] = "侯国玉",
- ["houguoyu"] = "侯国玉",
-}
-
-- 尚李元浩
local skl__liyuanhao = General(extension, "skl__liyuanhao", "qun", 3, 3, General.Male)
@@ -422,6 +410,33 @@ local jy_huxiao = fk.CreateTriggerSkill{
end,
}
+-- 啸酒
+-- 注释里是为了测试改成无中生有。保留在这里以防你后面还需要测试。
+local jy_huxiao_analeptic = fk.CreateViewAsSkill{
+ name = "jy_huxiao_analeptic",
+ anim_type = "defensive",
+ pattern = "analeptic",
+ -- pattern = "ex_nihilo",
+ expand_pile = "skl__liyuanhao_xiao",
+ card_filter = function(self, to_select, selected)
+ if #selected == 1 then return false end
+ local xiaos = Self:getPile("skl__liyuanhao_xiao")
+ if #xiaos == 0 then return false end
+ return Self:getPileNameOfId(to_select) == "skl__liyuanhao_xiao"
+ end,
+ view_as = function(self, cards)
+ if #cards ~= 1 then
+ return nil
+ end
+ local c = Fk:cloneCard("analeptic")
+ -- local c = Fk:cloneCard("ex_nihilo")
+ c.skillName = self.name
+ -- print("克隆的牌c的参数:c.name ", c.name, " c.trueName ", c.trueName)
+ c:addSubcard(cards[1])
+ return c
+ end,
+}
+
-- 啸闪
local jy_huxiao_jink = fk.CreateViewAsSkill{
name = "jy_huxiao_jink",
@@ -429,7 +444,10 @@ local jy_huxiao_jink = fk.CreateViewAsSkill{
pattern = "jink",
expand_pile = "skl__liyuanhao_xiao",
card_filter = function(self, to_select, selected)
- return #selected == 0 and Self:getPileNameOfId(to_select) == "skl__liyuanhao_xiao"
+ if #selected == 1 then return false end
+ local xiaos = Self:getPile("skl__liyuanhao_xiao")
+ if #xiaos == 0 then return false end
+ return Self:getPileNameOfId(to_select) == "skl__liyuanhao_xiao"
end,
view_as = function(self, cards)
if #cards ~= 1 then
@@ -442,69 +460,150 @@ local jy_huxiao_jink = fk.CreateViewAsSkill{
end,
}
--- 啸酒
-local jy_huxiao_analeptic = fk.CreateViewAsSkill{
- name = "jy_huxiao_analeptic",
- anim_type = "defensive",
- pattern = "analeptic",
- expand_pile = "skl__liyuanhao_xiao",
- card_filter = function(self, to_select, selected)
- return #selected == 0 and Self:getPileNameOfId(to_select) == "skl__liyuanhao_xiao"
- end,
- view_as = function(self, cards)
- if #cards ~= 1 then
- return nil
- end
- local c = Fk:cloneCard("analeptic")
- c.skillName = self.name
- -- print("克隆的牌c的参数:c.name ", c.name, " c.trueName ", c.trueName)
- c:addSubcard(cards[1])
- return c
- end,
-}
-
-- 二段
-- 首先BeforeCardsMove判断一次是否有牌进/出你的特殊区,然后如果有,
--- 再在AfterCardsMove里判断是否这张牌是啸,而且导致啸的数量变成了2。
--- 天才!
--- 参考自周泰,界周泰
+-- 再在AfterCardsMove里判断是否这张牌是啸,而且啸的数量变成了2。
+-- 参考自周泰,界周泰,国战formation守成
local jy_erduanxiao = fk.CreateTriggerSkill{
name = "jy_erduanxiao",
anim_type = "negative",
events = {fk.BeforeCardsMove}, -- 理论上来说每次牌的移动只有同一个方向的
- frequency = Skill.Compulsory,
+ -- frequency = Skill.Compulsory,
mute = true,
+ -- can_trigger = function(self, event, target, player, data)
+ -- -- 只判断是否有牌进出了你的特殊区,而不判断它是否是啸(因为比较复杂,等确定有可能了之后再判断,节省资源)
+ -- if player:hasSkill(self) then -- 如果是有二段啸的武将
+ -- local xiaos = player:getPile("skl__liyuanhao_xiao")
+ -- player.is_xiao_changing = false -- 默认这次没有变化
+ -- if #xiaos == 1 or #xiaos == 3 then -- 如果啸是1或3
+ -- -- 1是可以触发的,3不知道为啥触发不了。难道viewas不会移动牌吗?
+ -- -- 我觉得有可能是这个原因。明天可以改成“用完牌之后”之类的。
+ -- if #xiaos == 3 then print("二段笑(一段)已经检测到#xiaos为", #xiaos) end
+ -- for _, move in ipairs(data) do -- 如果有一张牌是进入或者离开我的特殊区,那么这个函数可以触发
+ -- if (move.to == player.id and move.toArea == Card.PlayerSpecial) or
+ -- (move.from == player.id and move.fromArea == Card.PlayerSpecial) then
+ -- -- 去找一段代码,检测自己特殊区的牌离开的
+ -- print("二段笑(一段)已经检测有牌从特殊区变动", #xiaos)
+ -- -- 检测不到离开
+ -- if move.to == player.id and move.toArea == Card.PlayerSpecial then
+ -- print("二段笑(一段)已经检测有牌来到特殊区", #xiaos)
+ -- end
+ -- if move.from == player.id and move.fromArea == Card.PlayerSpecial then
+ -- print("二段笑(一段)已经检测有牌从特殊区离开", #xiaos)
+ -- end
+ -- return true
+ -- end
+ -- end
+ -- end
+ -- end
+ -- end,
+
+ -- -- 根据守成改的版本,现在可以3-2了,但是不能1-2
+ -- -- 我真的不知道为什么了。这样吧,把两个版本综合一下,写到下一个里面,这个就算完成了。以后再改。
+ -- can_trigger = function(self, event, target, player, data)
+ -- if not player:hasSkill(self) then return end -- 如果我自己没有这个技能,那就算了
+ -- local xiaos = player:getPile("skl__liyuanhao_xiao")
+ -- player.is_xiao_changing = false
+ -- for _, move in ipairs(data) do -- 第一层循环,不知道为啥
+ -- if move.from then -- 照着抄的,牌离开
+ -- print("有牌正打算离开")
+ -- if move.from == player.id then
+ -- print("有牌正打算从你家离开")
+ -- if #xiaos == 3 then
+ -- print("啸是3")
+ -- for _, info in ipairs(move.moveInfo) do -- 还有第二层循环。我自己的代码里没有第二层
+ -- if info.fromArea == Card.PlayerSpecial then
+ -- print("有牌正打算从你家特殊区离开")
+ -- return true
+ -- end
+ -- end
+ -- end
+ -- end
+ -- elseif move.to then -- 照着抄的,牌离开
+ -- print("有牌正打算来")
+ -- if move.to == player.id then
+ -- print("有牌正打算来你家")
+ -- if #xiaos == 1 then
+ -- print("啸是1")
+ -- for _, info in ipairs(move.moveInfo) do -- 还有第二层循环。我自己的代码里没有第二层
+ -- if info.toArea == Card.PlayerSpecial then
+ -- print("有牌正打算来你家特殊区")
+ -- return true
+ -- end
+ -- end
+ -- end
+ -- end
+ -- end
+ -- end
+ -- end, -- 每个参数的结尾都要逗号。can_trigger是一个参数
+
+
+
+ -- 测试通过。1-2,3-2都可以顺利触发。
+ -- 我猜想原因是1-2的时候可能有多张牌进出,而3-2的时候只会有一张牌出去。但我搞不懂这个数据结构,
+ -- 不知道为什么有一个是两层循环,有一个是一层循环。
can_trigger = function(self, event, target, player, data)
- -- 只判断是否有牌进出了你的特殊区,而不判断它是否是啸(因为比较复杂,等确定有可能了之后再判断,节省资源)
+ if not player:hasSkill(self) then return end -- 如果我自己没有这个技能,那就算了
+
local xiaos = player:getPile("skl__liyuanhao_xiao")
- player.is_xiao_changing = false -- 默认这次没有变化
- if player:hasSkill(self) and -- 如果是有二段啸的武将
- #xiaos == 1 or #xiaos == 3 then -- 如果啸是1和3
- for _, move in ipairs(data) do -- 如果有一张牌是进入或者离开我的特殊区,那么这个函数可以触发
- return (move.to == player.id and move.toArea == Card.PlayerSpecial) or
- (move.from == player.id and move.fromArea == Card.PlayerSpecial)
+ player.is_xiao_changing = false
+
+ -- 判断是否有牌出去
+ for _, move in ipairs(data) do -- 第一层循环,不知道为啥
+ if move.from then -- 照着抄的,牌离开
+ -- print("有牌正打算离开")
+ if move.from == player.id then
+ -- print("有牌正打算从你家离开")
+ if #xiaos == 3 then
+ -- print("啸是3")
+ for _, info in ipairs(move.moveInfo) do -- 还有第二层循环。我自己的代码里没有第二层
+ if info.fromArea == Card.PlayerSpecial then
+ -- print("有牌正打算从你家特殊区离开")
+ return true
+ end
+ end
+ end
+ end
end
end
- end,
- on_use = function(self, event, target, player, data)
+
+ -- 判断是否有牌进来
+ if #xiaos == 1 then -- 如果啸是1
+ for _, move in ipairs(data) do -- 如果有一张牌是进入或者离开我的特殊区,那么这个函数可以触发
+ if (move.to == player.id and move.toArea == Card.PlayerSpecial) or
+ (move.from == player.id and move.fromArea == Card.PlayerSpecial) then
+ -- 去找一段代码,检测自己特殊区的牌离开的
+ -- print("二段笑(一段)已经检测有牌从特殊区变动", #xiaos)
+ -- 检测不到离开
+ -- if move.to == player.id and move.toArea == Card.PlayerSpecial then
+ -- print("二段笑(一段)已经检测有牌来到特殊区", #xiaos)
+ -- end
+ return true
+ end
+ end
+ end
+ end, -- 每个参数的结尾都要逗号。can_trigger是一个参数
+
+ on_trigger = function(self, event, target, player, data)
-- 触发之后,设置变量,告诉下一个函数有没有可能在发生变化
player.is_xiao_changing = true
- -- print("jy_erduanxiao 已触发,现在player.is_xiao_changing的值是", player.is_xiao_changing)
+ -- print("二段笑(第一段) on_trigger已触发,现在是", player.is_xiao_changing, #player:getPile("skl__liyuanhao_xiao"))
end,
}
local jy_erduanxiao_trigger = fk.CreateTriggerSkill{
name = "#jy_erduanxiao_trigger",
events = {fk.AfterCardsMove},
+ anim_type = "masochism",
frequency = Skill.Compulsory,
can_trigger = function(self, event, target, player, data)
- return player:hasSkill(self) and -- 如果是有二段啸的武将
- #player:getPile("skl__liyuanhao_xiao") == 2 and -- 如果啸为2
+ if not player:hasSkill(self) then return false end
+ return #player:getPile("skl__liyuanhao_xiao") == 2 and -- 如果啸为2
player.is_xiao_changing -- 如果啸有可能在变化
end,
- on_use = function(self, event, target, player, data)
- -- print("jy_erduanxiao_trigger 已触发,现在player.is_xiao_changing的值是", player.is_xiao_changing)
+ on_trigger = function(self, event, target, player, data)
+ -- print("二段笑(第二段)已触发,", player.is_xiao_changing, #player:getPile("skl__liyuanhao_xiao"))
local room = player.room
local choice = room:askForChoice(player, {"#lose_xiao", "#lose_hp_1"}, self.name)
if choice == "#lose_xiao" then
@@ -546,10 +645,11 @@ local jy_husanjian = fk.CreateTriggerSkill{
data.damage = data.damage - 1
end,
}
+-- TODO: 加一个触发效果器
skl__liyuanhao:addSkill(jy_huxiao)
-skl__liyuanhao:addSkill(jy_huxiao_jink)
skl__liyuanhao:addSkill(jy_huxiao_analeptic)
+skl__liyuanhao:addSkill(jy_huxiao_jink)
skl__liyuanhao:addSkill(jy_erduanxiao)
skl__liyuanhao:addSkill(jy_husanjian)
@@ -561,57 +661,160 @@ Fk:loadTranslationTable {
[":jy_huxiao"] = [[当你使用或打出一张【杀】时,你可以将牌堆顶的一张牌置于你的武将牌上,称为【啸】。
“我希望我的后辈们能够记住,在你踏上职业道路的这一刻开始,你的目标就只有,冠军。”——李元浩]],
- ["jy_huxiao_jink"] = "横刀",
- [":jy_huxiao_jink"] = [[你可以将【啸】当作【闪】使用或打出。
+ ["jy_huxiao_analeptic"] = "横刀",
+ [":jy_huxiao_analeptic"] = [[你可以将【啸】当作【酒】使用或打出。
“谁敢横刀立马……”——钱晨]],
- ["jy_huxiao_analeptic"] = "立马",
- [":jy_huxiao_analeptic"] = [[你可以将【啸】当作【酒】使用或打出。
+ ["jy_huxiao_jink"] = "立马",
+ [":jy_huxiao_jink"] = [[你可以将【啸】当作【闪】使用或打出。
“……唯我虎大将军!”——钱晨]],
["jy_erduanxiao"] = "二段",
[":jy_erduanxiao"] = "锁定技,当你的武将牌上有且仅有两张【啸】时,你选择失去一点体力或失去所有【啸】。",
["#jy_erduanxiao_trigger"] = "二段",
["#lose_xiao"] = "失去所有【啸】",
- ["#lose_hp_1"] = "失去1点体力",
+ ["#lose_hp_1"] = "失去一点体力",
["jy_husanjian"] = "三件",
[":jy_husanjian"] = [[锁定技,当你的装备区有且仅有防具和防御马时,你造成的伤害-1。
-
虎三件,指【中娅沙漏】、【水银之靴】、【大天使之杖】、【永霜】、【兰德里的苦楚】里面的三件。不同的人有不同的观点,但【大天使之杖】定在其列。]],
+
虎三件,指【中娅沙漏】、【水银之靴】、【大天使之杖】。一些人持不同的观点,但【大天使之杖】没有什么争议。]],
}
-- 唐李元浩
local tym__liyuanhao = General(extension, "tym__liyuanhao", "qun", 3, 3, General.Male)
-
--- 二段
--- 首先BeforeCardsMove判断一次是否有牌进/出你的特殊区,然后如果有,
--- 再在AfterCardsMove里判断是否这张牌是啸,而且导致啸的数量变成了2。
--- 天才!
--- 参考自周泰,界周泰
-local jy_erduanxiao_2 = fk.CreateTriggerSkill{
- name = "jy_erduanxiao_2",
- anim_type = "offensive",
- events = {fk.BeforeCardsMove}, -- 理论上来说每次牌的移动只有同一个方向的
- frequency = Skill.Compulsory,
- mute = true,
-
+-- 界虎啸
+-- 参考自铁骑,屯田,脑洞包明哲,克己(原来克己已经监视了使用和打出了,不用写那么复杂)
+local jy_huxiao_2 = fk.CreateTriggerSkill{
+ name = "jy_huxiao_2",
+ anim_type = "special",
+ events = {fk.CardResponding, fk.TargetSpecified}, -- 包括了使用和打出
+ -- frequency = Skill.Compulsory,
can_trigger = function(self, event, target, player, data)
- -- 只判断是否有牌进出了你的特殊区,而不判断它是否是啸(因为比较复杂,等确定有可能了之后再判断,节省资源)
- local xiaos = player:getPile("skl__liyuanhao_xiao")
- player.is_xiao_changing = false -- 默认这次没有变化
- if player:hasSkill(self) and -- 如果是有二段啸的武将
- #xiaos == 1 or #xiaos == 3 then -- 如果啸是1和3
- for _, move in ipairs(data) do -- 如果有一张牌是进入或者离开我的特殊区,那么这个函数可以触发
- return (move.to == player.id and move.toArea == Card.PlayerSpecial) or
- (move.from == player.id and move.fromArea == Card.PlayerSpecial)
+ if player:hasSkill(self) and data.card.trueName == "slash" then
+ -- 使用是TS,打出是CR
+ if event == fk.TargetSpecified or event == fk.CardResponding then
+ return target == player
end
end
end,
on_use = function(self, event, target, player, data)
+ local room = player.room
+ local dummy = Fk:cloneCard("dilu")
+ dummy:addSubcards(room:getNCards(1))
+ player:addToPile("tym__liyuanhao_xiao", dummy, true, self.name)
+ end,
+}
+
+-- 界啸酒
+-- 注释里是为了测试改成无中生有。保留在这里以防你后面还需要测试。
+local jy_huxiao_analeptic_2 = fk.CreateViewAsSkill{
+ name = "jy_huxiao_analeptic_2",
+ anim_type = "defensive",
+ pattern = "analeptic",
+ -- pattern = "ex_nihilo",
+ expand_pile = "tym__liyuanhao_xiao",
+ card_filter = function(self, to_select, selected)
+ if #selected == 1 then return false end
+ local xiaos = Self:getPile("tym__liyuanhao_xiao")
+ if #xiaos == 0 then return false end
+ return Self:getPileNameOfId(to_select) == "tym__liyuanhao_xiao"
+ end,
+ view_as = function(self, cards)
+ if #cards ~= 1 then
+ return nil
+ end
+ local c = Fk:cloneCard("analeptic")
+ -- local c = Fk:cloneCard("ex_nihilo")
+ c.skillName = self.name
+ -- print("克隆的牌c的参数:c.name ", c.name, " c.trueName ", c.trueName)
+ c:addSubcard(cards[1])
+ return c
+ end,
+}
+
+-- 界啸闪
+local jy_huxiao_jink_2 = fk.CreateViewAsSkill{
+ name = "jy_huxiao_jink_2",
+ anim_type = "defensive",
+ pattern = "jink",
+ expand_pile = "tym__liyuanhao_xiao",
+ card_filter = function(self, to_select, selected)
+ if #selected == 1 then return false end
+ local xiaos = Self:getPile("tym__liyuanhao_xiao")
+ if #xiaos == 0 then return false end
+ return Self:getPileNameOfId(to_select) == "tym__liyuanhao_xiao"
+ end,
+ view_as = function(self, cards)
+ if #cards ~= 1 then
+ return nil
+ end
+ local c = Fk:cloneCard("jink")
+ c.skillName = self.name
+ c:addSubcard(cards[1])
+ return c
+ end,
+}
+
+
+-- 界二段
+-- 这里的jy_erduanxiao_2全部都是抄上面普通李元浩的,因为只有数值差异。如果上面的改了,这里也得改
+local jy_erduanxiao_2 = fk.CreateTriggerSkill{
+ name = "jy_erduanxiao_2",
+ anim_type = "negative",
+ events = {fk.BeforeCardsMove}, -- 理论上来说每次牌的移动只有同一个方向的
+ -- frequency = Skill.Compulsory,
+ mute = true,
+
+ -- 测试通过。1-2,3-2都可以顺利触发。
+ -- 我猜想原因是1-2的时候可能有多张牌进出,而3-2的时候只会有一张牌出去。但我搞不懂这个数据结构,
+ -- 不知道为什么有一个是两层循环,有一个是一层循环。
+ can_trigger = function(self, event, target, player, data)
+ if not player:hasSkill(self) then return end -- 如果我自己没有这个技能,那就算了
+
+ local xiaos = player:getPile("tym__liyuanhao_xiao")
+ player.is_xiao_changing = false
+
+ -- 判断是否有牌出去
+ for _, move in ipairs(data) do -- 第一层循环,不知道为啥
+ if move.from then -- 照着抄的,牌离开
+ -- print("有牌正打算离开")
+ if move.from == player.id then
+ -- print("有牌正打算从你家离开")
+ if #xiaos == 3 then
+ -- print("啸是3")
+ for _, info in ipairs(move.moveInfo) do -- 还有第二层循环。我自己的代码里没有第二层
+ if info.fromArea == Card.PlayerSpecial then
+ -- print("有牌正打算从你家特殊区离开")
+ return true
+ end
+ end
+ end
+ end
+ end
+ end
+
+ -- 判断是否有牌进来
+ if #xiaos == 1 then -- 如果啸是1
+ for _, move in ipairs(data) do -- 如果有一张牌是进入或者离开我的特殊区,那么这个函数可以触发
+ if (move.to == player.id and move.toArea == Card.PlayerSpecial) or
+ (move.from == player.id and move.fromArea == Card.PlayerSpecial) then
+ -- 去找一段代码,检测自己特殊区的牌离开的
+ -- print("二段笑(一段)已经检测有牌从特殊区变动", #xiaos)
+ -- 检测不到离开
+ -- if move.to == player.id and move.toArea == Card.PlayerSpecial then
+ -- print("二段笑(一段)已经检测有牌来到特殊区", #xiaos)
+ -- end
+ return true
+ end
+ end
+ end
+ end, -- 每个参数的结尾都要逗号。can_trigger是一个参数
+
+ on_trigger = function(self, event, target, player, data)
-- 触发之后,设置变量,告诉下一个函数有没有可能在发生变化
player.is_xiao_changing = true
- -- print("jy_erduanxiao 已触发,现在player.is_xiao_changing的值是", player.is_xiao_changing)
+ -- print("二段笑(第一段) on_trigger已触发,现在是", player.is_xiao_changing, #player:getPile("tym__liyuanhao_xiao"))
end,
}
@@ -621,29 +824,41 @@ local jy_erduanxiao_trigger_2 = fk.CreateTriggerSkill{
frequency = Skill.Compulsory,
can_trigger = function(self, event, target, player, data)
return player:hasSkill(self) and -- 如果是有二段啸的武将
- #player:getPile("skl__liyuanhao_xiao") == 2 and -- 如果啸为2
+ #player:getPile("tym__liyuanhao_xiao") == 2 and -- 如果啸为2
player.is_xiao_changing -- 如果啸有可能在变化
end,
- on_use = function(self, event, target, player, data)
+
+ on_cost = function(self, event, target, player, data)
-- print("jy_erduanxiao_trigger 已触发,现在player.is_xiao_changing的值是", player.is_xiao_changing)
local room = player.room
- local choice = room:askForChoice(player, {"#lose_xiao", "#lose_hp_1"}, self.name)
- if choice == "#lose_xiao" then
- player:drawcard(2) -- 把啸全部扔掉
- elseif choice == "#lose_hp_1" then
- room:recover({
+ -- 如果体力不是满的,两个选项都有;如果是满的,就黑掉【恢复体力】那个按钮。这个改动不需要改到标李元浩那边去,因为标李元浩是掉血。
+ if player.hp ~= player.maxHp then
+ self.choice = room:askForChoice(player, {"#lose_xiao_2", "#lose_hp_1_2"}, self.name)
+ else
+ self.choice = room:askForChoice(player, {"#lose_xiao_2"}, self.name, nil, nil, {"#lose_xiao_2", "#lose_hp_1_2"})
+ end
+ return true
+ end,
+
+ on_use = function(self, event, target, player, data)
+ if self.choice == "#lose_xiao_2" then
+ -- 将所有【啸】纳入自己的手牌
+ local xiaos = player:getPile("tym__liyuanhao_xiao")
+ player.room:moveCardTo(xiaos, Card.PlayerHand, player, fk.ReasonJustMove, self.name, "tym__liyuanhao_xiao", true, player.id)
+ elseif self.choice == "#lose_hp_1_2" then
+ -- 回复1点体力
+ player.room:recover({
who = player,
num = 1,
recoverBy = player,
skillName = self.name,
})
- player.is_xiao_changing = false
end
end,
}
jy_erduanxiao_2:addRelatedSkill(jy_erduanxiao_trigger_2)
--- 三件 已完成 测试通过
+-- 界三件 已完成 测试通过
local jy_husanjian_2 = fk.CreateTriggerSkill{
name = "jy_husanjian_2",
frequency = Skill.Compulsory,
@@ -657,45 +872,57 @@ local jy_husanjian_2 = fk.CreateTriggerSkill{
local defensive_ride = Fk:getCardById(player:getEquipment(Card.SubtypeDefensiveRide))
local offensive_ride = Fk:getCardById(player:getEquipment(Card.SubtypeOffensiveRide))
local treasure = Fk:getCardById(player:getEquipment(Card.Treasure))
- return not weapon and
- armor and
- defensive_ride and
- not offensive_ride and
+ return weapon and
+ not armor and
+ not defensive_ride and
+ offensive_ride and
not treasure
- -- 有且只有防具和+1马
+ -- 有且只有武器和-1马
end,
on_use = function(self, event, target, player, data)
local room = player.room
player:broadcastSkillInvoke(self.name)
- room:notifySkillInvoked(player, self.name, "masochism")
+ room:notifySkillInvoked(player, self.name, "offensive")
data.damage = data.damage + 1
end,
}
+-- TODO: 加一个触发效果器
-tym__liyuanhao:addSkill("jy_huxiao")
-tym__liyuanhao:addSkill("jy_huxiao_jink")
-tym__liyuanhao:addSkill("jy_huxiao_analeptic")
-
+-- 因为是两个不同的武将,两个武将的特殊区是不能通用的,所以必须分开写代码。
+tym__liyuanhao:addSkill(jy_huxiao_2)
+tym__liyuanhao:addSkill(jy_huxiao_analeptic_2)
+tym__liyuanhao:addSkill(jy_huxiao_jink_2)
tym__liyuanhao:addSkill(jy_erduanxiao_2)
tym__liyuanhao:addSkill(jy_husanjian_2)
-
-
Fk:loadTranslationTable {
["tym__liyuanhao"] = "界李元浩",
- ["skl__liyuanhao_xiao"] = "啸",
+ ["tym__liyuanhao_xiao"] = "啸",
+
+ ["jy_huxiao_2"] = "虎啸",
+ [":jy_huxiao_2"] = [[当你使用或打出一张【杀】时,你可以将牌堆顶的一张牌置于你的武将牌上,称为【啸】。
+
“我希望我的后辈们能够记住,在你踏上职业道路的这一刻开始,你的目标就只有,冠军。”——李元浩]],
+
+ ["jy_huxiao_analeptic_2"] = "横刀",
+ [":jy_huxiao_analeptic_2"] = [[你可以将【啸】当作【酒】使用或打出。
+
“谁敢横刀立马……”——钱晨]],
+
+ ["jy_huxiao_jink_2"] = "立马",
+ [":jy_huxiao_jink_2"] = [[你可以将【啸】当作【闪】使用或打出。
+
“……唯我虎大将军!”——钱晨]],
["jy_erduanxiao_2"] = "二段",
- [":jy_erduanxiao_2"] = "锁定技,当你的武将牌上有且仅有两张【啸】时,你选择恢复一点体力或摸两张牌。",
+ [":jy_erduanxiao_2"] = "锁定技,当你的武将牌上有且仅有两张【啸】时,你选择恢复一点体力或将所有【啸】纳入手牌。",
["#jy_erduanxiao_trigger_2"] = "二段",
- ["#lose_xiao_2"] = "摸两张牌",
- ["#lose_hp_1_2"] = "恢复1点体力",
+ ["#lose_xiao_2"] = "将所有【啸】纳入手牌",
+ ["#lose_hp_1_2"] = "恢复一点体力",
["jy_husanjian_2"] = "三件",
- [":jy_husanjian_2"] = [[锁定技,当你的装备区有且仅有防具和防御马时,你造成的伤害+1。
-
虎三件,指【中娅沙漏】、【水银之靴】、【大天使之杖】、【永霜】、【兰德里的苦楚】里面的三件。不同的人有不同的观点,但【大天使之杖】定在其列。]],
+ [":jy_husanjian_2"] = [[锁定技,当你的装备区有且仅有武器和进攻马时,你造成的伤害+1。
+
虎三件,有时也可以指【卢登的激荡】、【虚空之杖】和【灭世者的死亡之帽】。]],
}
+
-- 阿伟罗
-- local xjb__aweiluo = General(extension, "xjb__aweiluo", "qun", 3, 3, General.Male)
@@ -706,6 +933,19 @@ Fk:loadTranslationTable {
-- ["xjb__aweiluo"] = "阿伟罗",
-- }
+
+-- -- 侯国玉
+-- local tym__houguoyu = General(extension, "tym__houguoyu", "qun", 4, 4, General.Male)
+
+-- tym__houguoyu:addSkill("guose")
+-- tym__houguoyu:addSkill("biyue")
+
+-- Fk:loadTranslationTable {
+-- ["tym__houguoyu"] = "侯国玉",
+-- ["houguoyu"] = "侯国玉",
+-- }
+
+
-- 高天亮
-- 可能有bug:不是一次伤害,而是一滴伤害