commit
ebacac8707
|
@ -135,7 +135,7 @@ function GameLogic:prepareForStart()
|
|||
end
|
||||
|
||||
for _, p in ipairs(room.alive_players) do
|
||||
room:handleAddLoseSkills(p, "zhiheng|mashu", nil, false)
|
||||
room:handleAddLoseSkills(p, "zhiheng|mashu|fankui", nil, false)
|
||||
end
|
||||
|
||||
self:addTriggerSkill(GameRule)
|
||||
|
|
|
@ -1475,12 +1475,13 @@ function Room:damage(damageStruct)
|
|||
assert(type(damageStruct.to) == "number")
|
||||
|
||||
local stages = {
|
||||
[fk.PreDamage] = damageStruct.from,
|
||||
[fk.DamageCaused] = damageStruct.from,
|
||||
[fk.DamageInflicted] = damageStruct.to,
|
||||
{fk.PreDamage, damageStruct.from},
|
||||
{fk.DamageCaused, damageStruct.from},
|
||||
{fk.DamageInflicted, damageStruct.to},
|
||||
}
|
||||
|
||||
for event, playerId in ipairs(stages) do
|
||||
for _, struct in ipairs(stages) do
|
||||
local event, playerId = table.unpack(struct)
|
||||
local player = playerId and self:getPlayerById(playerId) or nil
|
||||
if self.logic:trigger(event, player, damageStruct) or damageStruct.damage < 1 then
|
||||
return false
|
||||
|
@ -1500,12 +1501,13 @@ function Room:damage(damageStruct)
|
|||
end
|
||||
|
||||
stages = {
|
||||
[fk.Damage] = damageStruct.from,
|
||||
[fk.Damaged] = damageStruct.to,
|
||||
[fk.DamageFinished] = damageStruct.from,
|
||||
{fk.Damage, damageStruct.from},
|
||||
{fk.Damaged, damageStruct.to},
|
||||
{fk.DamageFinished, damageStruct.from},
|
||||
}
|
||||
|
||||
for event, playerId in ipairs(stages) do
|
||||
for _, struct in ipairs(stages) do
|
||||
local event, playerId = table.unpack(struct)
|
||||
local player = playerId and self:getPlayerById(playerId) or nil
|
||||
self.logic:trigger(event, player, damageStruct)
|
||||
end
|
||||
|
|
|
@ -16,9 +16,32 @@ Fk:loadTranslationTable{
|
|||
["caocao"] = "曹操",
|
||||
}
|
||||
|
||||
local fankui = fk.CreateTriggerSkill{
|
||||
name = "fankui",
|
||||
events = {fk.Damaged},
|
||||
frequency = Skill.NotFrequent,
|
||||
can_trigger = function(self, event, target, player, data)
|
||||
local room = target.room
|
||||
local from = room:getPlayerById(data.from)
|
||||
return from ~= nil and
|
||||
target == player and
|
||||
target:hasSkill(self.name)
|
||||
end,
|
||||
on_trigger = function(self, event, target, player, data)
|
||||
local room = player.room
|
||||
local from = room:getPlayerById(data.from)
|
||||
if (not from) or from:isNude() then return false end
|
||||
if room:askForSkillInvoke(player, self.name) then
|
||||
local card = room:askForCardChosen(player, from, "he", self.name)
|
||||
room:obtainCard(player.id, card, false, fk.ReasonPrey)
|
||||
end
|
||||
end
|
||||
}
|
||||
local simayi = General:new(extension, "simayi", "wei", 3)
|
||||
simayi:addSkill(fankui)
|
||||
Fk:loadTranslationTable{
|
||||
["simayi"] = "司马懿",
|
||||
["fankui"] = "反馈",
|
||||
}
|
||||
|
||||
local xiahoudun = General:new(extension, "xiahoudun", "wei", 4)
|
||||
|
|
|
@ -172,8 +172,8 @@ function moveCards(moves) {
|
|||
function setEmotion(id, emotion) {
|
||||
let path;
|
||||
if (OS === "Win") {
|
||||
// Windows: file:/C:/xxx/xxxx
|
||||
path = (SkinBank.PIXANIM_DIR + emotion).replace("file:/", "");
|
||||
// Windows: file:///C:/xxx/xxxx
|
||||
path = (SkinBank.PIXANIM_DIR + emotion).replace("file:///", "");
|
||||
} else {
|
||||
path = (SkinBank.PIXANIM_DIR + emotion).replace("file://", "");
|
||||
}
|
||||
|
|
|
@ -89,7 +89,12 @@ void QmlBackend::cd(const QString &path) {
|
|||
}
|
||||
|
||||
QStringList QmlBackend::ls(const QString &dir) {
|
||||
return QDir(QUrl(dir).path()).entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
|
||||
QString d = dir;
|
||||
#ifdef Q_OS_WIN
|
||||
if (d.startsWith("file:///"))
|
||||
d.replace(0, 8, "file://");
|
||||
#endif
|
||||
return QDir(QUrl(d).path()).entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
|
||||
}
|
||||
|
||||
QString QmlBackend::pwd() {
|
||||
|
|
Loading…
Reference in New Issue