Class GameEventWrappers#
-
class GameEventWrappers: (
MiscEventWrappers,
HpEventWrappers,
DeathEventWrappers,
MoveEventWrappers,
UseCardEventWrappers,
SkillEventWrappers,
JudgeEventWrappers,
PindianEventWrappers
)# 给Room.lua瘦身:一系列GameEvent的封装
-
class MiscEventWrappers:
Object# -
changeHero(
self:MiscEventWrappers,
player:ServerPlayer,
new_general:string,
full?:boolean,
isDeputy?:boolean,
sendLog?:boolean,
maxHpChange?:boolean,
kingdomChange?:boolean
)# 改变角色的武将
- Parameters:
player (
ServerPlayer) -- 要换将的玩家new_general (
string) -- 要变更的武将,若不存在则变身为孙策,孙策不存在变身为士兵full? (
boolean) -- 是否血量满状态变身,默认否isDeputy? (
boolean) -- 是否变的是副将sendLog? (
boolean) -- 是否发Log,默认否maxHpChange? (
boolean) -- 是否改变体力上限,默认改变kingdomChange? (
boolean) -- 是否改变势力(仅更改主将时变更),默认改变
-
changeKingdom(
self:MiscEventWrappers,
player:ServerPlayer,
kingdom:string,
sendLog?:boolean
)# - Parameters:
player (
ServerPlayer) -- 要变更势力的玩家kingdom (
string) -- 要变更的势力sendLog? (
boolean) -- 是否发Log
-
changeHero(
-
class HpEventWrappers:
Object# -
changeHp(
self:HpEventWrappers,
player:ServerPlayer,
num:integer,
reason?:string,
skillName?:string,
damageData?:DamageData
):boolean# 改变一名玩家的体力。
- Parameters:
player (
ServerPlayer) -- 玩家num (
integer) -- 变化量reason? (
string) -- 原因skillName? (
string) -- 技能名damageData? (
DamageData) -- 伤害数据
-
damage(self:
HpEventWrappers, damageData:DamageDataSpec):boolean# 根据伤害数据造成伤害。
-
loseHp(
self:HpEventWrappers,
player:ServerPlayer,
num:integer,
skillName?:string
):boolean# 令一名玩家失去体力。
- Parameters:
player (
ServerPlayer) -- 玩家num (
integer) -- 失去的数量skillName? (
string) -- 技能名
-
recover(
self:HpEventWrappers,
recoverDataSpec:RecoverDataSpec
):boolean# 根据回复数据回复体力。
- Returns:
_1 (
boolean) -- 是否成功回复体力
-
changeMaxHp(
self:HpEventWrappers,
player:ServerPlayer,
num:integer
):boolean# 改变一名玩家的体力上限。
- Parameters:
player (
ServerPlayer) -- 玩家num (
integer) -- 变化量
-
changeHp(
-
class DeathEventWrappers:
Object# -
enterDying(
self:DeathEventWrappers,
dyingDataSpec:DyingDataSpec
):boolean# 根据濒死数据让人进入濒死。
-
killPlayer(
self:DeathEventWrappers,
deathDataSpec:DeathDataSpec
):boolean# 根据死亡数据杀死角色。
-
revivePlayer(
self:DeathEventWrappers,
player:ServerPlayer,
sendLog?:boolean,
reason?:string
):boolean# 复活一个角色
- Parameters:
player (
ServerPlayer) -- 要复活的角色sendLog? (
boolean) -- 是否播放战报reason? (
string) -- 复活原因
-
enterDying(
-
class MoveEventWrappers:
Object# -
moveCards(self:
MoveEventWrappers, ...:CardsMoveInfo):boolean?# 传入一系列移牌信息,去实际移动这些牌
-
notifyMoveCards(
self:MoveEventWrappers,
players?:ServerPlayer[],
moveDatas:MoveCardsData[],
event_id?:integer
)# 向多名玩家告知一次移牌行为。
- Parameters:
players? (
ServerPlayer[]) -- 要被告知的玩家列表,默认为全员moveDatas (
MoveCardsData[]) -- 要告知的移牌信息列表event_id? (
integer) -- 当前事件id
-
obtainCard(
self:MoveEventWrappers,
player:ServerPlayer,
card:integer|Card|Card[] |integer[],
visible?:boolean,
reason?:integer,
proposer?:ServerPlayer,
skill_name?:string,
moveMark?:string|table,
visiblePlayers?:ServerPlayer|ServerPlayer[]
)# 让一名玩家获得一张牌
- Parameters:
player (
ServerPlayer) -- 要拿牌的玩家visible? (
boolean) -- 是否明着拿reason? (
integer) -- 卡牌移动的原因proposer? (
ServerPlayer) -- 移动操作者skill_name? (
string) -- 技能名moveMark? (
string|table) -- 移动后自动赋予标记,格式:{标记名(支持-inarea后缀,移出值代表区域后清除), 值}visiblePlayers? (
ServerPlayer|ServerPlayer[]) -- 控制移动对特定角色可见(在moveVisible为false时生效)
-
drawCards(
self:MoveEventWrappers,
player:ServerPlayer,
num:integer,
skillName?:string,
fromPlace?: "bottom" | "top",
moveMark?:string|table
):integer[]# 让玩家摸牌
- Parameters:
player (
ServerPlayer) -- 摸牌的玩家num (
integer) -- 摸牌数skillName? (
string) -- 技能名fromPlace? ("bottom" | "top") -- 摸牌的位置,默认牌堆顶
moveMark? (
string|table) -- 移动后自动赋予标记,格式:{标记名(支持-inarea后缀,移出值代表区域后清除), 值}
- Returns:
_1 (
integer[]) -- 摸到的牌
-
moveCardTo(
self:MoveEventWrappers,
card:integer|Card|Card[] |integer[],
to_place:integer,
target?:ServerPlayer,
reason?:integer,
skill_name?:string,
special_name?:string,
visible?:boolean,
proposer?:ServerPlayer,
moveMark?:string|table,
visiblePlayers?:ServerPlayer|ServerPlayer[]
)# 将一张或多张牌移动到某处
- Parameters:
to_place (
integer) -- 移动的目标位置target? (
ServerPlayer) -- 移动的目标角色reason? (
integer) -- 移动时使用的移牌原因skill_name? (
string) -- 技能名special_name? (
string) -- 私人牌堆名visible? (
boolean) -- 是否明置proposer? (
ServerPlayer) -- 移动操作者moveMark? (
string|table) -- 移动后自动赋予标记,格式:{标记名(支持-inarea后缀,移出值代表区域后清除), 值}visiblePlayers? (
ServerPlayer|ServerPlayer[]) -- 控制移动对特定角色可见(在moveVisible为false时生效)
-
throwCard(
self:MoveEventWrappers,
card_ids:integer|Card|Card[] |integer[],
skillName?:string,
who:ServerPlayer,
thrower?:ServerPlayer
)# 弃置一名角色的牌。
- Parameters:
skillName? (
string) -- 技能名who (
ServerPlayer) -- 被弃牌的人thrower? (
ServerPlayer) -- 弃别人牌的人
-
recastCard(
self:MoveEventWrappers,
card_ids:integer[],
who:ServerPlayer,
skillName?:string,
moveMark?:string|table
):integer[]# 重铸一名角色的牌。
- Parameters:
card_ids (
integer[]) -- 被重铸的牌who (
ServerPlayer) -- 重铸的角色skillName? (
string) -- 技能名,默认为“重铸”moveMark? (
string|table) -- 移动后自动赋予标记,格式:{标记名(支持-inarea后缀,移出值代表区域后清除), 值}
- Returns:
_1 (
integer[]) -- 摸到的牌
-
doYiji(
self:MoveEventWrappers,
list:table<integer,integer[]>,
proposer?:ServerPlayer,
skillName?:string,
moveMark?:string|table
):integer[]# 将一些卡牌同时分配给一些角色。
- Parameters:
list (
table<integer,integer[]>) -- 分配牌和角色的数据表,键为角色id,值为分配给其的牌id数组proposer? (
ServerPlayer) -- 操作者的。默认为空skillName? (
string) -- 技能名。默认为“分配”moveMark? (
string|table) -- 移动后自动赋予标记,格式:{标记名(支持-inarea后缀,移出值代表区域后清除), 值}
- Returns:
_1 (
integer[]) -- 返回成功分配的卡牌
-
moveCardIntoEquip(
self:MoveEventWrappers,
target:ServerPlayer,
cards:integer|Card|Card[] |integer[],
skillName?:string,
convert?:boolean,
proposer?:ServerPlayer
):integer[]# 将一张牌移动至某角色的装备区,若不合法则置入弃牌堆。
- Parameters:
target (
ServerPlayer) -- 接受牌的角色cards (
integer|Card|Card[] |integer[]) -- 移动的牌,这些牌同副类别不可相同skillName? (
string) -- 技能名convert? (
boolean) -- 是否可以替换装备(默认可以)proposer? (
ServerPlayer) -- 操作者
- Returns:
_1 (
integer[]) -- 成功置入装备区的牌
-
turnOverCardsFromDrawPile(
self:MoveEventWrappers,
player:ServerPlayer,
card_ids:integer[],
skillName:string,
moveVisible?:boolean,
visiblePlayers?:ServerPlayer[]
)# 从牌堆亮出一些牌移动到处理区
- Parameters:
player (
ServerPlayer) -- 进行操作的角色card_ids (
integer[]) -- 要亮出的牌,通常用getNCards获得skillName (
string) -- 技能名moveVisible? (
boolean) -- 是否正面向上移动visiblePlayers? (
ServerPlayer[]) -- 控制移动对特定角色可见(默认对自己可见,若想完全不可见则设为空表)
-
returnCardsToDrawPile(
self:MoveEventWrappers,
player:ServerPlayer,
cards:integer[],
skillName:string,
toPlace?: "bottom" | "top",
moveVisible?:boolean,
visiblePlayers?:ServerPlayer[]
)# 将处理区的卡牌返回牌堆
- Parameters:
player (
ServerPlayer) -- 进行操作的角色cards (
integer[]) -- 返回牌堆的卡牌skillName (
string) -- 技能名toPlace? ("bottom" | "top") -- 返回牌堆的位置,默认牌堆顶
moveVisible? (
boolean) -- 是否正面向上移动visiblePlayers? (
ServerPlayer[]) -- 控制移动对特定角色可见(默认对自己可见,若想完全不可见则设为空表)
-
swapCards(
self:MoveEventWrappers,
player:ServerPlayer,
card_data:any,
skillName:string,
toArea?:integer
)# 令两名角色交换特定的牌(FIXME:暂时只能正面朝上移动过)
- Parameters:
player (
ServerPlayer) -- 进行操作的角色card_data (
any) -- {{角色1, 角色1的卡牌}, {角色2, 角色2的卡牌}}skillName (
string) -- 技能名toArea? (
integer) -- 交换牌的目标区域,默认为手牌
-
swapAllCards(
self:MoveEventWrappers,
player:ServerPlayer,
targets:ServerPlayer[],
skillName:string,
flag?: "e" | "h" | "j"
)# 令两名角色交换一个区域内所有牌
- Parameters:
player (
ServerPlayer) -- 进行操作的角色targets (
ServerPlayer[]) -- 交换手牌的两名角色skillName (
string) -- 技能名flag? ("e" | "h" | "j") -- 交换的区域。默认是手牌
-
swapCardsWithPile(
self:MoveEventWrappers,
player:ServerPlayer,
cards1:integer[],
cards2:integer[],
skillName:string,
pile_name:string,
visible?:boolean,
proposer?:ServerPlayer
)# 将一名角色的卡牌与牌堆中的卡牌交换
- Parameters:
player (
ServerPlayer) -- 移动的目标cards1 (
integer[]) -- 将要放到牌堆的牌cards2 (
integer[]) -- 将要收为手牌的牌skillName (
string) -- 技能名pile_name (
string) -- 交换的私有牌堆名,特别的,为"Top"则为牌堆顶,"Bottom"则为牌堆底,"discardPile"则为弃牌堆visible? (
boolean) -- 是否明牌移动proposer? (
ServerPlayer) -- 移动的操作者(默认同player)
-
cancelMove(
self:MoveEventWrappers,
data:MoveCardsData[],
ids?:integer[],
func?: fun(move:MoveCardsData, info:MoveInfo):boolean
):integer[]# 取消一些牌的移动。请仅用于BeforeCardsMove时机
- Parameters:
ids? (
integer[]) -- 取消移动的牌的id列表,填nil则取消所有func? (fun(move:
MoveCardsData, info:MoveInfo):boolean) -- 筛选取消移动的函数,与ids取并集,填nil则取消所有
- Returns:
_1 (
integer[]) -- 成功取消移动的牌id列表
-
moveCards(self:
-
class UseCardEventWrappers:
Object# -
playCardEmotionAndSound(
self:UseCardEventWrappers,
player:ServerPlayer,
card:Card
)# 播放使用/打出卡牌的声音和特效
- Parameters:
player (
ServerPlayer) -- 使用者card (
Card) -- 使用的牌
-
useCard(
self:UseCardEventWrappers,
useCardData:UseCardDataSpec
):boolean# 根据卡牌使用数据,去实际使用这个卡牌。
- Parameters:
useCardData (
UseCardDataSpec) -- 使用数据
-
doCardUseEffect(self:
UseCardEventWrappers, useCardData:UseCardData)# 对卡牌使用数据进行生效
-
doCardEffect(
self:UseCardEventWrappers,
cardEffectData:CardEffectData
):boolean# 对卡牌效果数据进行生效
-
responseCard(
self:UseCardEventWrappers,
responseCardData:RespondCardDataSpec
):boolean# 对“打出牌”进行处理
-
useVirtualCard(
self:UseCardEventWrappers,
card_name:string,
subcards?:integer[],
from:ServerPlayer,
tos:ServerPlayer|ServerPlayer[],
skillName?:string,
extra?:boolean,
extra_data?:table
):UseCardDataSpec?# 令角色对某些目标使用虚拟卡牌,会检测使用和目标合法性。不合法则返回nil
- Parameters:
card_name (
string) -- 想要视为使用的牌名subcards? (
integer[]) -- 子卡,可以留空或者直接nilfrom (
ServerPlayer) -- 使用来源tos (
ServerPlayer|ServerPlayer[]) -- 目标角色(列表)skillName? (
string) -- 技能名extra? (
boolean) -- 是否不计入次数extra_data? (
table) -- 使用事件的extra_data
-
playCardEmotionAndSound(
-
class SkillEventWrappers:
Object# -
useSkill(
self:SkillEventWrappers,
player:ServerPlayer,
skill:Skill,
effect_cb: fun(),
skill_data?:SkillUseDataSpec
):SkillEffectData# 使用技能。先增加技能发动次数,再执行相应的函数。
- Parameters:
player (
ServerPlayer) -- 发动技能的玩家skill (
Skill) -- 发动的技能effect_cb (fun()) -- 实际要调用的函数
skill_data? (
SkillUseDataSpec) -- 技能的信息
-
handleAddLoseSkills(
self:SkillEventWrappers,
player:ServerPlayer,
skill_names:string|string[],
source_skill?:string|Skill,
sendlog?:boolean,
no_trigger?:boolean
)# 令一名玩家获得/失去技能。
skill_names 是字符串数组或者用管道符号(|)分割的字符串。
每个skill_name都是要获得的技能的名。如果在skill_name前面加上"-",那就是失去技能。
- Parameters:
player (
ServerPlayer) -- 玩家skill_names (
string|string[]) -- 要获得/失去的技能source_skill? (
string|Skill) -- 源技能sendlog? (
boolean) -- 是否发送战报,默认发送no_trigger? (
boolean) -- 是否不触发相关时机
-
useSkill(
-
class JudgeEventWrappers:
Object# -
judge(self:
JudgeEventWrappers, data:JudgeDataSpec):boolean# 根据判定数据进行判定。判定的结果直接保存在这个数据中。
-
changeJudge(self:
JudgeEventWrappers, params:RetrialParams)# 改变判定牌
-
retrial(
self:JudgeEventWrappers,
card:Card,
player:ServerPlayer,
judge:JudgeData,
skillName?:string,
exchange?:boolean
)# 改判。
- Parameters:
card (
Card) -- 改判的牌player (
ServerPlayer) -- 改判者judge (
JudgeData) -- 被改判的判定数据skillName? (
string) -- 技能名exchange? (
boolean) -- 是否替换原有判定牌(类似```鬼道```)
-
judge(self:
-
class PindianEventWrappers:
Object# -
pindian(
self:PindianEventWrappers,
pindianData:PindianDataSpec
):boolean# 根据拼点信息开始拼点。
-
changePindianNumber(
self:PindianEventWrappers,
pindianData:PindianData,
player:ServerPlayer,
number:integer,
skill_name:string
)# 加减拼点牌点数(最小为1,最大为13)。
- Parameters:
player (
ServerPlayer) -- 拼点角色number (
integer) -- 加减的点数skill_name (
string) -- 技能名
-
pindian(