2023-04-09 13:35:35 +08:00
|
|
|
|
-- SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
2023-05-19 07:45:08 +08:00
|
|
|
|
local extension = Package("test_p_0")
|
2023-07-16 19:18:43 +08:00
|
|
|
|
extension.extensionName = "test"
|
2023-02-15 19:54:35 +08:00
|
|
|
|
|
2023-02-15 21:20:40 +08:00
|
|
|
|
local cheat = fk.CreateActiveSkill{
|
|
|
|
|
name = "cheat",
|
|
|
|
|
anim_type = "drawcard",
|
2023-06-16 18:01:51 +08:00
|
|
|
|
prompt = "#cheat",
|
2023-12-09 21:57:47 +08:00
|
|
|
|
can_use = Util.TrueFunc,
|
|
|
|
|
card_filter = Util.FalseFunc,
|
2023-08-02 21:50:47 +08:00
|
|
|
|
target_num = 0,
|
2023-02-15 21:20:40 +08:00
|
|
|
|
on_use = function(self, room, effect)
|
|
|
|
|
local from = room:getPlayerById(effect.from)
|
2023-08-02 21:50:47 +08:00
|
|
|
|
local cardType = { 'basic', 'trick', 'equip' }
|
|
|
|
|
local cardTypeName = room:askForChoice(from, cardType, "cheat")
|
|
|
|
|
local card_types = {Card.TypeBasic, Card.TypeTrick, Card.TypeEquip}
|
|
|
|
|
cardType = card_types[table.indexOf(cardType, cardTypeName)]
|
2023-02-15 21:20:40 +08:00
|
|
|
|
|
|
|
|
|
local allCardIds = Fk:getAllCardIds()
|
|
|
|
|
local allCardMapper = {}
|
|
|
|
|
local allCardNames = {}
|
|
|
|
|
for _, id in ipairs(allCardIds) do
|
|
|
|
|
local card = Fk:getCardById(id)
|
|
|
|
|
if card.type == cardType then
|
|
|
|
|
if allCardMapper[card.name] == nil then
|
|
|
|
|
table.insert(allCardNames, card.name)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
allCardMapper[card.name] = allCardMapper[card.name] or {}
|
|
|
|
|
table.insert(allCardMapper[card.name], id)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if #allCardNames == 0 then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
2023-07-14 22:17:54 +08:00
|
|
|
|
local cardName = room:askForChoice(from, allCardNames, "cheat")
|
2023-08-27 21:22:03 +08:00
|
|
|
|
local toGain -- = room:printCard(cardName, Card.Heart, 1)
|
|
|
|
|
if #allCardMapper[cardName] > 0 then
|
|
|
|
|
toGain = allCardMapper[cardName][math.random(1, #allCardMapper[cardName])]
|
|
|
|
|
end
|
2023-02-15 21:20:40 +08:00
|
|
|
|
|
2023-08-11 03:19:59 +08:00
|
|
|
|
-- from:addToPile(self.name, toGain, true, self.name)
|
2023-07-14 22:17:54 +08:00
|
|
|
|
-- room:setCardMark(Fk:getCardById(toGain), "@@test_cheat-phase", 1)
|
|
|
|
|
-- room:setCardMark(Fk:getCardById(toGain), "@@test_cheat-inhand", 1)
|
2023-02-15 21:20:40 +08:00
|
|
|
|
room:obtainCard(effect.from, toGain, true, fk.ReasonPrey)
|
|
|
|
|
end
|
|
|
|
|
}
|
2023-02-15 19:54:35 +08:00
|
|
|
|
local test_filter = fk.CreateFilterSkill{
|
|
|
|
|
name = "test_filter",
|
|
|
|
|
card_filter = function(self, card)
|
2023-02-15 21:20:40 +08:00
|
|
|
|
return card.number > 11
|
2023-02-15 19:54:35 +08:00
|
|
|
|
end,
|
|
|
|
|
view_as = function(self, card)
|
2023-02-15 21:20:40 +08:00
|
|
|
|
return Fk:cloneCard("crossbow", card.suit, card.number)
|
2023-02-15 19:54:35 +08:00
|
|
|
|
end,
|
|
|
|
|
}
|
2023-06-04 19:39:20 +08:00
|
|
|
|
local control = fk.CreateActiveSkill{
|
|
|
|
|
name = "control",
|
2023-06-04 20:00:35 +08:00
|
|
|
|
anim_type = "control",
|
2023-12-09 21:57:47 +08:00
|
|
|
|
can_use = Util.TrueFunc,
|
|
|
|
|
card_filter = Util.FalseFunc,
|
2023-06-04 19:39:20 +08:00
|
|
|
|
card_num = 0,
|
|
|
|
|
target_filter = function(self, to_select)
|
|
|
|
|
return to_select ~= Self.id
|
|
|
|
|
end,
|
|
|
|
|
min_target_num = 1,
|
|
|
|
|
--interaction = function()return UI.Spin {
|
2023-04-30 00:52:39 +08:00
|
|
|
|
--choices = Fk.package_names,
|
2023-06-04 19:39:20 +08:00
|
|
|
|
--from=2,to=8,
|
2023-04-05 00:49:54 +08:00
|
|
|
|
-- default = "guanyu",
|
2023-06-04 19:39:20 +08:00
|
|
|
|
--}end,
|
2023-02-21 13:44:24 +08:00
|
|
|
|
on_use = function(self, room, effect)
|
|
|
|
|
--room:doSuperLightBox("packages/test/qml/Test.qml")
|
|
|
|
|
local from = room:getPlayerById(effect.from)
|
2023-12-06 21:07:35 +08:00
|
|
|
|
-- room:setPlayerMark(from, "@[test]test", {
|
|
|
|
|
-- all = {3, 1, 6, 9, 5, 11, 10, 2, 8, 7, 12, 4, 13},
|
|
|
|
|
-- ok = {10, 2},
|
|
|
|
|
-- })
|
2023-04-27 14:15:08 +08:00
|
|
|
|
-- room:swapSeat(from, to)
|
2023-06-04 19:39:20 +08:00
|
|
|
|
for _, pid in ipairs(effect.tos) do
|
|
|
|
|
local to = room:getPlayerById(pid)
|
2023-09-19 14:27:54 +08:00
|
|
|
|
-- p(room:askForPoxi(from, "test", {
|
|
|
|
|
-- { "你自己", from:getCardIds "h" },
|
|
|
|
|
-- { "对方", to:getCardIds "h" },
|
2023-10-27 22:19:30 +08:00
|
|
|
|
-- }, from.hp, false))
|
2023-09-19 14:27:54 +08:00
|
|
|
|
-- room:setPlayerMark(from, "@$a", {1,2,3})
|
|
|
|
|
-- room:setPlayerMark(from, "@$b", {'slash','duel','axe'})
|
2024-01-11 18:36:05 +08:00
|
|
|
|
--room:askForMiniGame({from}, "test", "test", { [from.id] = {"Helloworld"} })
|
|
|
|
|
--print(from.client_reply)
|
2023-06-04 19:39:20 +08:00
|
|
|
|
if to:getMark("mouxushengcontrolled") == 0 then
|
|
|
|
|
room:addPlayerMark(to, "mouxushengcontrolled")
|
|
|
|
|
from:control(to)
|
|
|
|
|
else
|
|
|
|
|
room:setPlayerMark(to, "mouxushengcontrolled", 0)
|
|
|
|
|
to:control(to)
|
|
|
|
|
end
|
2023-05-19 23:03:39 +08:00
|
|
|
|
end
|
2023-12-28 12:15:01 +08:00
|
|
|
|
-- local targets, cards = room:askForChooseCardsAndPlayers(from, 1, 3, effect.tos, 1, 3, nil, "选一下吧", self.name, true)
|
|
|
|
|
-- p(targets)
|
|
|
|
|
-- p(cards)
|
2023-06-04 19:39:20 +08:00
|
|
|
|
--local success, dat = room:askForUseViewAsSkill(from, "test_vs", nil, true)
|
|
|
|
|
--if success then
|
|
|
|
|
--local card = Fk.skills["test_vs"]:viewAs(dat.cards)
|
|
|
|
|
--room:useCard{
|
|
|
|
|
--from = from.id,
|
|
|
|
|
--tos = table.map(dat.targets, function(e) return {e} end),
|
|
|
|
|
--card = card,
|
|
|
|
|
--}
|
|
|
|
|
--end
|
2023-04-27 14:15:08 +08:00
|
|
|
|
-- from:pindian({to})
|
2023-03-01 21:41:16 +08:00
|
|
|
|
-- local result = room:askForCustomDialog(from, "simayi", "packages/test/qml/TestDialog.qml", "Hello, world. FROM LUA")
|
|
|
|
|
-- print(result)
|
|
|
|
|
|
|
|
|
|
-- room:fillAG(from, { 1, 43, 77 })
|
|
|
|
|
-- local id = room:askForAG(from, { 1, 43, 77 })
|
|
|
|
|
-- room:takeAG(from, id)
|
|
|
|
|
-- room:delay(2000)
|
|
|
|
|
-- room:closeAG(from)
|
2023-04-13 20:17:39 +08:00
|
|
|
|
-- local cards = room:askForCardsChosen(from, from, 2, 3, "hej", "")
|
|
|
|
|
-- from:addToPile(self.name, cards)
|
|
|
|
|
-- from.kingdom = "wei"
|
|
|
|
|
-- room:broadcastProperty(from, "kingdom")
|
2023-03-05 01:28:59 +08:00
|
|
|
|
-- p(cards)
|
2023-04-27 14:15:08 +08:00
|
|
|
|
-- room:useVirtualCard("slash", nil, from, room:getOtherPlayers(from), self.name, true)
|
2023-02-21 13:44:24 +08:00
|
|
|
|
end,
|
|
|
|
|
}
|
2023-09-19 14:27:54 +08:00
|
|
|
|
--[[
|
2024-01-11 18:36:05 +08:00
|
|
|
|
Fk:addMiniGame{
|
|
|
|
|
name = "test",
|
|
|
|
|
qml_path = "packages/test/qml/TestMini",
|
|
|
|
|
update_func = function(player, data)
|
|
|
|
|
player:doNotify("UpdateMiniGame", json.encode(data))
|
|
|
|
|
end
|
|
|
|
|
}
|
2023-09-19 14:27:54 +08:00
|
|
|
|
Fk:addPoxiMethod{
|
|
|
|
|
name = "test",
|
2023-10-27 22:19:30 +08:00
|
|
|
|
card_filter = function(to_select, selected, data, extra_data)
|
2023-09-19 14:27:54 +08:00
|
|
|
|
local s = Fk:getCardById(to_select).suit
|
|
|
|
|
for _, id in ipairs(selected) do
|
|
|
|
|
if Fk:getCardById(id).suit == s then return false end
|
|
|
|
|
end
|
|
|
|
|
return true
|
|
|
|
|
end,
|
2023-10-27 22:19:30 +08:00
|
|
|
|
feasible = function(selected, data, extra_data)
|
|
|
|
|
return #selected == 0 or #selected == 4 or #selected == extra_data
|
2023-09-19 14:27:54 +08:00
|
|
|
|
end,
|
|
|
|
|
prompt = "魄袭:选你们俩手牌总共四个花色,或者不选直接按确定按钮"
|
|
|
|
|
}
|
2023-12-06 21:07:35 +08:00
|
|
|
|
Fk:loadTranslationTable{['@[test]test']='割圆'}
|
|
|
|
|
Fk:addQmlMark{
|
|
|
|
|
name = "test",
|
|
|
|
|
how_to_show = function(name, value)
|
|
|
|
|
local all_points = value.all
|
|
|
|
|
local ok_points = value.ok
|
|
|
|
|
-- 若没有点亮的就不显示
|
|
|
|
|
if #ok_points == 0 then return "" end
|
|
|
|
|
-- 否则,显示相邻的,逻辑上要构成循环
|
|
|
|
|
local start_idx = table.indexOf(all_points, ok_points[1]) - 1
|
|
|
|
|
local end_idx = table.indexOf(all_points, ok_points[#ok_points]) + 1
|
|
|
|
|
if start_idx == 0 then start_idx = #all_points end
|
|
|
|
|
if end_idx == #all_points + 1 then end_idx = 1 end
|
|
|
|
|
if start_idx == end_idx then
|
|
|
|
|
return Card:getNumberStr(all_points[start_idx])
|
|
|
|
|
else
|
|
|
|
|
return Card:getNumberStr(all_points[start_idx]) .. Card:getNumberStr(all_points[end_idx])
|
|
|
|
|
end
|
|
|
|
|
end,
|
|
|
|
|
qml_path = "packages/test/qml/TestDialog"
|
|
|
|
|
}
|
2023-09-19 14:27:54 +08:00
|
|
|
|
--]]
|
2023-04-08 20:45:55 +08:00
|
|
|
|
local test_vs = fk.CreateViewAsSkill{
|
|
|
|
|
name = "test_vs",
|
2023-04-30 18:51:05 +08:00
|
|
|
|
pattern = "nullification",
|
2023-06-16 18:01:51 +08:00
|
|
|
|
prompt = "#test_vs",
|
2023-04-08 20:45:55 +08:00
|
|
|
|
card_filter = function(self, to_select, selected)
|
|
|
|
|
return #selected == 0
|
|
|
|
|
end,
|
2023-04-13 20:17:39 +08:00
|
|
|
|
interaction = function(self)
|
|
|
|
|
return UI.ComboBox {
|
|
|
|
|
choices = {
|
|
|
|
|
"ex_nihilo",
|
|
|
|
|
"duel",
|
|
|
|
|
"snatch",
|
|
|
|
|
"dismantlement",
|
|
|
|
|
"savage_assault",
|
|
|
|
|
"archery_attack",
|
2023-04-30 18:51:05 +08:00
|
|
|
|
"lightning",
|
|
|
|
|
"nullification",
|
2023-06-15 21:19:57 +08:00
|
|
|
|
},
|
|
|
|
|
detailed = true,
|
2023-04-08 20:45:55 +08:00
|
|
|
|
}
|
2023-04-13 20:17:39 +08:00
|
|
|
|
end,
|
2023-04-08 20:45:55 +08:00
|
|
|
|
view_as = function(self, cards)
|
|
|
|
|
if #cards ~= 1 then
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
if not self.interaction.data then return end
|
|
|
|
|
local c = Fk:cloneCard(self.interaction.data)
|
|
|
|
|
c.skillName = self.name
|
|
|
|
|
c:addSubcard(cards[1])
|
|
|
|
|
return c
|
|
|
|
|
end,
|
|
|
|
|
}
|
2023-04-22 14:10:06 +08:00
|
|
|
|
local test_trig = fk.CreateTriggerSkill{
|
|
|
|
|
name = "test_trig",
|
2023-06-04 19:39:20 +08:00
|
|
|
|
events = {fk.EventPhaseEnd},
|
|
|
|
|
can_trigger = function(self, event, target, player, data)
|
|
|
|
|
return target == player and player:hasSkill(self.name) and player.phase == Player.Discard
|
|
|
|
|
end,
|
|
|
|
|
on_cost = function(self, event, target, player, data)
|
|
|
|
|
local cards = player.room:askForDiscard(player, 1, 1, false, self.name, true, nil, "#test_trig-ask", true)
|
|
|
|
|
if #cards > 0 then
|
|
|
|
|
self.cost_data = cards
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
end,
|
2023-04-22 15:52:26 +08:00
|
|
|
|
on_use = function(self, event, target, player, data)
|
2023-06-04 19:39:20 +08:00
|
|
|
|
player.room:throwCard(self.cost_data, self.name, player, player)
|
|
|
|
|
end,
|
|
|
|
|
}
|
|
|
|
|
local damage_maker = fk.CreateActiveSkill{
|
|
|
|
|
name = "damage_maker",
|
2023-06-04 20:00:35 +08:00
|
|
|
|
anim_type = "offensive",
|
2023-08-02 21:50:47 +08:00
|
|
|
|
prompt = "#damage_maker",
|
2023-12-09 21:57:47 +08:00
|
|
|
|
can_use = Util.TrueFunc,
|
|
|
|
|
card_filter = Util.FalseFunc,
|
2023-06-04 19:39:20 +08:00
|
|
|
|
card_num = 0,
|
2023-08-02 21:50:47 +08:00
|
|
|
|
target_filter = function(self, to_select, selected)
|
|
|
|
|
if self.interaction.data == "revive" then return false end
|
|
|
|
|
return #selected < 2
|
2023-06-04 19:39:20 +08:00
|
|
|
|
end,
|
2023-08-02 21:50:47 +08:00
|
|
|
|
min_target_num = function(self)
|
|
|
|
|
return self.interaction.data == "revive" and 0 or 1
|
|
|
|
|
end,
|
|
|
|
|
max_target_num = function(self)
|
|
|
|
|
return self.interaction.data == "revive" and 0 or 2
|
|
|
|
|
end,
|
|
|
|
|
interaction = function() return UI.ComboBox {
|
|
|
|
|
choices = {"normal_damage", "thunder_damage", "fire_damage", "ice_damage", "lose_hp", "heal_hp", "lose_max_hp", "heal_max_hp", "revive"}
|
|
|
|
|
} end,
|
2023-06-04 19:39:20 +08:00
|
|
|
|
on_use = function(self, room, effect)
|
|
|
|
|
local from = room:getPlayerById(effect.from)
|
2023-08-02 21:50:47 +08:00
|
|
|
|
local victim = #effect.tos > 0 and room:getPlayerById(effect.tos[1])
|
|
|
|
|
local target = #effect.tos > 1 and room:getPlayerById(effect.tos[2])
|
2023-06-04 19:39:20 +08:00
|
|
|
|
local choice = self.interaction.data
|
2023-08-02 21:50:47 +08:00
|
|
|
|
local number
|
|
|
|
|
if choice ~= "revive" then
|
|
|
|
|
local choices = {}
|
|
|
|
|
for i = 1, 99 do
|
|
|
|
|
table.insert(choices, tostring(i))
|
|
|
|
|
end
|
|
|
|
|
number = tonumber(room:askForChoice(from, choices, self.name, nil))
|
2023-06-04 19:39:20 +08:00
|
|
|
|
end
|
2023-08-02 21:50:47 +08:00
|
|
|
|
if target then from = target end
|
2023-06-04 19:39:20 +08:00
|
|
|
|
if choice == "heal_hp" then
|
|
|
|
|
room:recover{
|
2023-08-02 21:50:47 +08:00
|
|
|
|
who = victim,
|
2023-06-04 19:39:20 +08:00
|
|
|
|
num = number,
|
|
|
|
|
recoverBy = from,
|
|
|
|
|
skillName = self.name
|
|
|
|
|
}
|
|
|
|
|
elseif choice == "heal_max_hp" then
|
2023-08-02 21:50:47 +08:00
|
|
|
|
room:changeMaxHp(victim, number)
|
2023-06-04 19:39:20 +08:00
|
|
|
|
elseif choice == "lose_max_hp" then
|
2023-08-02 21:50:47 +08:00
|
|
|
|
room:changeMaxHp(victim, -number)
|
2023-06-04 19:39:20 +08:00
|
|
|
|
elseif choice == "lose_hp" then
|
2023-08-02 21:50:47 +08:00
|
|
|
|
room:loseHp(victim, number, self.name)
|
|
|
|
|
elseif choice == "revive" then
|
|
|
|
|
local targets = table.map(table.filter(room.players, function(p) return p.dead end), function(p) return "seat#" .. tostring(p.seat) end)
|
|
|
|
|
if #targets > 0 then
|
|
|
|
|
targets = room:askForChoice(from, targets, self.name, "#revive-ask")
|
|
|
|
|
if targets then
|
|
|
|
|
target = tonumber(string.sub(targets, 6))
|
|
|
|
|
for _, p in ipairs(room.players) do
|
|
|
|
|
if p.seat == target then
|
|
|
|
|
room:revivePlayer(p, true)
|
|
|
|
|
break
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
2023-06-04 19:39:20 +08:00
|
|
|
|
else
|
2023-08-02 21:50:47 +08:00
|
|
|
|
local choices = {"normal_damage", "thunder_damage", "fire_damage", "ice_damage"}
|
2023-06-04 19:39:20 +08:00
|
|
|
|
room:damage({
|
|
|
|
|
from = from,
|
2023-08-02 21:50:47 +08:00
|
|
|
|
to = victim,
|
2023-06-04 19:39:20 +08:00
|
|
|
|
damage = number,
|
|
|
|
|
damageType = table.indexOf(choices, choice),
|
|
|
|
|
skillName = self.name
|
|
|
|
|
})
|
|
|
|
|
end
|
|
|
|
|
end,
|
|
|
|
|
}
|
|
|
|
|
local change_hero = fk.CreateActiveSkill{
|
|
|
|
|
name = "change_hero",
|
2023-12-09 21:57:47 +08:00
|
|
|
|
can_use = Util.TrueFunc,
|
|
|
|
|
card_filter = Util.FalseFunc,
|
2023-06-04 19:39:20 +08:00
|
|
|
|
card_num = 0,
|
|
|
|
|
target_filter = function(self, to_select, selected)
|
|
|
|
|
return #selected < 1
|
|
|
|
|
end,
|
|
|
|
|
target_num = 1,
|
2023-08-02 21:50:47 +08:00
|
|
|
|
interaction = function(self)
|
|
|
|
|
return UI.ComboBox {
|
|
|
|
|
choices = { "mainGeneral", "deputyGeneral"},
|
|
|
|
|
}
|
|
|
|
|
end,
|
2023-06-04 19:39:20 +08:00
|
|
|
|
on_use = function(self, room, effect)
|
|
|
|
|
local from = room:getPlayerById(effect.from)
|
|
|
|
|
local target = room:getPlayerById(effect.tos[1])
|
2023-08-02 21:50:47 +08:00
|
|
|
|
local choice = self.interaction.data
|
2023-09-27 21:02:22 +08:00
|
|
|
|
local generals = room:getNGenerals(8)
|
2023-06-04 19:39:20 +08:00
|
|
|
|
local general = room:askForGeneral(from, generals, 1)
|
|
|
|
|
if general == nil then
|
|
|
|
|
general = table.random(generals)
|
|
|
|
|
end
|
2023-09-27 21:02:22 +08:00
|
|
|
|
table.removeOne(generals, general)
|
2023-08-02 21:50:47 +08:00
|
|
|
|
room:changeHero(target, general, false, choice == "deputyGeneral", true)
|
2023-09-27 21:02:22 +08:00
|
|
|
|
room:returnToGeneralPile(generals)
|
2023-04-22 15:52:26 +08:00
|
|
|
|
end,
|
2023-04-22 14:10:06 +08:00
|
|
|
|
}
|
2023-06-11 16:53:27 +08:00
|
|
|
|
local test_zhenggong = fk.CreateTriggerSkill{
|
|
|
|
|
name = "test_zhenggong",
|
|
|
|
|
events = {fk.RoundStart},
|
|
|
|
|
frequency = Skill.Compulsory,
|
|
|
|
|
anim_type = "negative",
|
|
|
|
|
can_trigger = function(self, event, target, player, data)
|
|
|
|
|
return player:hasSkill(self.name) and player.room:getTag("RoundCount") == 1
|
|
|
|
|
end,
|
|
|
|
|
on_use = function(self, event, target, player, data)
|
|
|
|
|
player:gainAnExtraTurn()
|
|
|
|
|
end,
|
|
|
|
|
}
|
2023-08-13 02:25:04 +08:00
|
|
|
|
local test_feichu = fk.CreateActiveSkill{
|
|
|
|
|
name = "test_feichu",
|
2023-12-09 21:57:47 +08:00
|
|
|
|
can_use = Util.TrueFunc,
|
|
|
|
|
card_filter = Util.FalseFunc,
|
2023-08-13 02:25:04 +08:00
|
|
|
|
card_num = 0,
|
|
|
|
|
target_filter = function(self, to_select, selected)
|
|
|
|
|
return #selected < 1
|
|
|
|
|
end,
|
|
|
|
|
target_num = 1,
|
|
|
|
|
on_use = function(self, room, effect)
|
|
|
|
|
local from = room:getPlayerById(effect.from)
|
|
|
|
|
local eqipSlots = from:getAvailableEquipSlots()
|
|
|
|
|
table.insert(eqipSlots, Player.JudgeSlot)
|
|
|
|
|
room:abortPlayerArea(from, eqipSlots)
|
|
|
|
|
end,
|
|
|
|
|
}
|
2023-12-10 18:55:16 +08:00
|
|
|
|
|
2023-08-27 21:22:03 +08:00
|
|
|
|
local test2 = General(extension, "mouxusheng", "wu", 4, 4, General.Female)
|
|
|
|
|
test2.shield = 3
|
|
|
|
|
test2.hidden = true
|
2023-02-21 13:44:24 +08:00
|
|
|
|
test2:addSkill("rende")
|
2023-02-15 21:20:40 +08:00
|
|
|
|
test2:addSkill(cheat)
|
2023-06-04 19:39:20 +08:00
|
|
|
|
test2:addSkill(control)
|
2023-07-11 21:15:38 +08:00
|
|
|
|
--test2:addSkill(test_vs)
|
2023-06-04 19:39:20 +08:00
|
|
|
|
--test2:addSkill(test_trig)
|
|
|
|
|
test2:addSkill(damage_maker)
|
2023-06-11 16:53:27 +08:00
|
|
|
|
test2:addSkill(test_zhenggong)
|
2023-08-27 21:22:03 +08:00
|
|
|
|
test2:addSkill(change_hero)
|
|
|
|
|
-- test2:addSkill(test_feichu)
|
2023-02-15 19:54:35 +08:00
|
|
|
|
|
2023-07-16 19:18:43 +08:00
|
|
|
|
local shibing = General(extension, "blank_shibing", "qun", 5)
|
|
|
|
|
shibing.hidden = true
|
|
|
|
|
Fk:loadTranslationTable{
|
|
|
|
|
["blank_shibing"] = "男士兵",
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
local nvshibing = General(extension, "blank_nvshibing", "qun", 5, 5, General.Female)
|
|
|
|
|
Fk:loadTranslationTable{
|
|
|
|
|
["blank_nvshibing"] = "女士兵",
|
|
|
|
|
}
|
|
|
|
|
nvshibing.hidden = true
|
|
|
|
|
|
2023-02-15 19:54:35 +08:00
|
|
|
|
Fk:loadTranslationTable{
|
2023-05-19 07:45:08 +08:00
|
|
|
|
["test_p_0"] = "测试包",
|
2023-02-15 19:54:35 +08:00
|
|
|
|
["test"] = "测试",
|
|
|
|
|
["test_filter"] = "破军",
|
2023-02-15 21:20:40 +08:00
|
|
|
|
[":test_filter"] = "你的点数大于11的牌视为无中生有。",
|
2023-02-15 19:54:35 +08:00
|
|
|
|
["mouxusheng"] = "谋徐盛",
|
2023-06-04 20:00:35 +08:00
|
|
|
|
-- ["cheat"] = "小开",
|
2023-08-27 21:22:03 +08:00
|
|
|
|
[":cheat"] = "出牌阶段,你可获得想要的牌。",
|
2023-06-16 18:01:51 +08:00
|
|
|
|
["#cheat"] = "cheat:你可以获得一张想要的牌",
|
2023-08-27 21:22:03 +08:00
|
|
|
|
["$cheat"] = "喝啊!",
|
2023-07-14 22:17:54 +08:00
|
|
|
|
-- ["@@test_cheat-phase"] = "苦肉",
|
|
|
|
|
-- ["@@test_cheat-inhand"] = "连营",
|
2023-06-04 19:39:20 +08:00
|
|
|
|
--["#test_trig-ask"] = "你可弃置一张手牌",
|
|
|
|
|
["control"] = "控制",
|
2023-06-04 20:00:35 +08:00
|
|
|
|
[":control"] = "出牌阶段,你可以控制/解除控制若干名其他角色。",
|
2023-08-27 21:22:03 +08:00
|
|
|
|
["$control"] = "战将临阵,斩关刈城!",
|
2023-06-04 20:00:35 +08:00
|
|
|
|
|
|
|
|
|
["test_vs"] = "视为",
|
|
|
|
|
[":test_vs"] = "你可以将牌当包含无懈在内的某张锦囊使用。",
|
2023-06-16 10:58:28 +08:00
|
|
|
|
["#test_vs"] = "视为:你可以学习锦囊牌的用法",
|
2023-06-04 20:00:35 +08:00
|
|
|
|
|
|
|
|
|
["damage_maker"] = "制伤",
|
|
|
|
|
[":damage_maker"] = "出牌阶段,你可以进行一次伤害制造器。",
|
2023-08-02 21:50:47 +08:00
|
|
|
|
["#damage_maker"] = "制伤:选择一名小白鼠,可选另一名角色做伤害来源(默认谋徐盛)",
|
|
|
|
|
["#revive-ask"] = "复活一名角色!",
|
2023-08-27 21:22:03 +08:00
|
|
|
|
["$damage_maker"] = "区区数百魏军,看我一击灭之!",
|
|
|
|
|
|
|
|
|
|
["test_zhenggong"] = "迅测",
|
|
|
|
|
[":test_zhenggong"] = "锁定技,首轮开始时,你执行额外的回合。",
|
|
|
|
|
["$test_zhenggong"] = "今疑兵之计,已搓敌兵心胆,其安敢侵近!",
|
2023-06-04 20:00:35 +08:00
|
|
|
|
|
2023-06-04 19:39:20 +08:00
|
|
|
|
["change_hero"] = "变更",
|
2023-06-04 20:00:35 +08:00
|
|
|
|
[":change_hero"] = "出牌阶段,你可以变更一名角色武将牌。",
|
2023-08-27 21:22:03 +08:00
|
|
|
|
["$change_hero"] = "敌军色厉内荏,可筑假城以退敌!",
|
2023-06-11 16:53:27 +08:00
|
|
|
|
|
2023-08-27 21:22:03 +08:00
|
|
|
|
["~mouxusheng"] = "来世,愿再为我江东之臣……",
|
2023-02-15 19:54:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
2023-05-19 07:45:08 +08:00
|
|
|
|
return { extension }
|