Class Card#

class Card: Object#

Card记录了FreeKill所有卡牌的基础信息。

它包含了ID、所属包、牌名、花色、点数等等

id: integer#

标志某一张卡牌唯一的数字,从1开始。若此牌是虚拟牌,则其id为0。服务器启动时为卡牌赋予ID。

package: Package#

卡牌所属的扩展包

name: string#

卡牌的名字

suit: integer#

卡牌的花色(四色及无花色)

number: integer#

卡牌的点数(0到K)

trueName: string#

卡牌的真名,一般用于分辨杀。

color: integer#

卡牌的颜色(分为黑色、红色、无色)

type: integer#

卡牌的种类(基本牌、锦囊牌、装备牌)

sub_type: integer#

卡牌的子种类(例如延时锦囊牌、武器、防具等)

area: integer#

卡牌所在区域(例如手牌区,判定区,装备区,牌堆,弃牌堆···)

mark: table<string, integer>#

当前拥有的所有标记,用烂了

subcards: integer[]#

子卡ID表

fake_subcards: integer[]#

伪子卡ID表,用于活墨类转化和飞刀判定

skillName: string#

虚拟牌的技能名 for virtual cards

skillNames: string[]#

虚拟牌的技能名们(一张虚拟牌可能有多个技能名,如芳魂、龙胆、朱雀羽扇)

skill: CardSkill#

技能(用于实现卡牌效果)

special_skills: string[]?#

衍生技能,如重铸

is_damage_card: boolean#

是否为会造成伤害的牌

multiple_targets: boolean#

是否为指定多个目标的牌

stackable_delayed: boolean#

是否为可堆叠的延时锦囊牌

is_passive: boolean?#

是否只能在响应时使用或打出

is_derived: boolean?#

判断是否为衍生牌

virt_id: integer#

虚拟牌的特殊id,默认为0

extra_data: table?#

保存其他信息的键值表,如“合纵”、“应变”、“赠予”等

Spade: integer#

黑桃

Club: integer#

梅花

Heart: integer#

红桃

Diamond: integer#

方块

NoSuit: integer#

无花色

Black: integer#

黑色

Red: integer#

红色

NoColor: integer#

无色

TypeBasic: integer#

基本牌

TypeTrick: integer#

锦囊牌

TypeEquip: integer#

装备牌

SubtypeNone: integer#

无子类型

SubtypeDelayedTrick: integer#

延时锦囊牌

SubtypeWeapon: integer#

武器牌

SubtypeArmor: integer#

防具牌

SubtypeDefensiveRide: integer#

防御坐骑牌

SubtypeOffensiveRide: integer#

进攻坐骑牌

SubtypeTreasure: integer#

宝物牌

Unknown: integer#

未知区域

PlayerHand: integer#

手牌区

PlayerEquip: integer#

装备区

PlayerJudge: integer#

判定区

PlayerSpecial: integer#

武将牌上/旁

Processing: integer#

处理区

DrawPile: integer#

牌堆

DiscardPile: integer#

弃牌堆

Void: integer#

移出游戏区

clone(self: Card, suit?: integer, number?: integer): Card#

克隆特定卡牌并赋予花色与点数。

会将skill/special_skills/equip_skill继承到克隆牌中。

Parameters:
  • suit? (integer) -- 克隆后的牌的花色

  • number? (integer) -- 克隆后的牌的点数

Returns:

_1 (Card) -- 产品

isVirtual(self: Card): boolean#

检测是否为虚拟或转化卡牌,如果其ID为0,则为虚拟或转化卡牌。

isRuleVirtual(self: Card): boolean#

检测是否为虚拟卡牌,如果其子卡数量为0,则为虚拟卡牌。

isConverted(self: Card): boolean#

检测是否为转化卡牌,如果其子卡数量不为0,则为转化卡牌。

getEffectiveId(self: Card): integer?#

获取卡牌的ID。

如果牌是虚拟牌,则返回其第一张子卡的id,没有子卡就返回nil

addSubcard(self: Card, card: integer | Card)#

将一张子卡牌加入某张牌中(是addSubcards的基础函数,常用addSubcards)。

Parameters:

card (integer | Card) -- 要加入的子卡

addSubcards(self: Card, cards: Card[] | integer[])#

将一批子卡牌加入某张牌中(常用于将这批牌弃置/交给某个角色···)。

Parameters:

cards (Card[] | integer[]) -- 要加入的子卡列表

addFakeSubcard(self: Card, card: integer | Card)#

将一张子卡加入某张牌的虚拟子卡,用于活墨类转化和飞刀判定

Parameters:

card (integer | Card) -- 要加入的虚拟子卡

addFakeSubcards(self: Card, cards: Card[] | integer[])#

将一批子卡加入某张牌的虚拟子卡,用于活墨类转化和飞刀判定

Parameters:

cards (Card[] | integer[]) -- 要加入的虚拟子卡列表

clearSubcards(self: Card)#

清空加入某张牌中的子卡牌。

matchPattern(self: Card, pattern: any): boolean#

判断此牌能否符合一个卡牌规则。

getSuitString(self: Card, symbol?: boolean): string#

获取卡牌花色并返回花色文字描述(如``spade``黑桃、``heart``红桃、``club``梅花、``diamond``方块)或者符号(如♠♥♣♦,带颜色)。

Parameters:

symbol? (boolean) -- 是否以符号形式显示

Returns:

_1 (string) -- 描述花色的字符串

getColorString(self: Card): string#

获取卡牌颜色并返回点数颜色描述(例如``black``黑色/``red``红色/``nocolor``无色)。

Returns:

_1 (string) -- 描述颜色的字符串

getTypeString(self: Card): string#

获取卡牌类型并返回类型描述(例如``basic``基本牌/``trick``锦囊牌/``equip``装备牌)。

getNumberStr(self: Card, num?: integer): string#

获取卡牌点数并返回点数文字描述(仅限A/J/Q/K/X)。

Parameters:

num? (integer) -- 当你只想翻译点数为文字时(优先检查,请注意)

strToNumber(self: Card, str: integer): number#

根据点数文字描述返回数字。

Parameters:

str (integer) -- 只能翻译文字为点数

getSuitCompletedString(self: Card, symbol: boolean): string#

获取卡牌的完整点数(花色+点数),如(黑桃A/♠A)。

Parameters:

symbol (boolean) -- 是否以符号形式显示花色

Returns:

_1 (string) -- 完整点数(字符串)

isCommonTrick(self: Card): boolean#

判断卡牌是否为普通锦囊牌

addMark(self: Card, mark: string, count: integer)#

为卡牌赋予Mark。

mark name and UI: 'xxx': invisible mark '@mark': mark with extra data (maybe string or number) '@@mark': mark without data

Parameters:
  • mark (string) -- 标记

  • count (integer) -- 为标记赋予的数量

removeMark(self: Card, mark: string, count: integer)#

为卡牌移除Mark。

Parameters:
  • mark (string) -- 标记

  • count (integer) -- 为标记删除的数量

setMark(self: Card, mark: string, count: any)#

为卡牌设置Mark为指定值。设置为0时会清空标记。若需要通知其他玩家,请使用Room:setCardMark

  • @开头的为可见标记,其余为隐藏标记。

Parameters:
  • mark (string) -- 标记名词

  • count (any) -- 标记值

getMark(self: Card, mark: string): any#

获取卡牌对应Mark的数量。

Parameters:

mark (string) -- 标记

getMarkNames(self: Card): table#

获取卡牌有哪些Mark。

hasMark(self: Card, mark: string, suffixes?: string[]): [any, integer] | nil#

检索角色是否拥有指定Mark,考虑后缀(字符串find)。返回检索到的的第一个标记值与标记名

Parameters:
  • mark (string) -- 标记名

  • suffixes? (string[]) -- 后缀,默认为```MarkEnum.CardTempMarkSuffix```

Returns:

_1 ([any, integer] | nil) -- 返回一个表,包含标记值与标记名,或nil

compareSuitWith(self: Card, anotherCard: Card, diff?: boolean): boolean#

比较两张卡牌的花色是否相同(无花色牌不与其他任何牌相同)

Parameters:
  • anotherCard (Card) -- 另一张卡牌

  • diff? (boolean) -- 比较二者不同

Returns:

_1 (boolean) -- 返回比较结果

compareColorWith(self: Card, anotherCard: Card, diff?: boolean): boolean#

比较两张卡牌的颜色是否相同(无颜色牌不与其他任何牌相同)

Parameters:
  • anotherCard (Card) -- 另一张卡牌

  • diff? (boolean) -- 比较二者不同

Returns:

_1 (boolean) -- 返回比较结果

compareNumberWith(self: Card, anotherCard: Card, diff?: boolean): boolean#

比较两张卡牌的点数是否相同

Parameters:
  • anotherCard (Card) -- 另一张卡牌

  • diff? (boolean) -- 比较二者不同

Returns:

_1 (boolean) -- 返回比较结果

toLogString(self: Card): string#

for sendLog 获取卡牌的文字信息并准备作为log发送。

getIdList(self: Card, c?: integer | Card | Card[] | integer[]): integer[]#

静态方法。传入下列类型之一的参数,返回id列表。

getTableMark(self: Card, mark: string): table#

获得卡牌的标记并初始化为表

Parameters:

mark (string) -- 标记

getFixedTargets(self: Card, player: Player, extra_data?: UseExtraData): Player[] | nil#

获得使用此牌的固定目标,仅有不能自由选择目标的牌会有固定目标。即桃、无中、装备、AOE等

Parameters:
  • player (Player) -- 使用者

  • extra_data? (UseExtraData) -- 额外数据

Returns:

_1 (Player[] | nil) -- 返回固定目标角色列表。若此牌可以选择目标,返回空值

getAvailableTargets(
    self: Card,
    player: Player,
    extra_data?: table | UseExtraData
): Player[]#

获得使用一张牌的所有合法目标角色表。用于判断一张必须使用的牌能否使用

eg.杀返回攻击范围内***所有***角色,桃返回自己,濒死桃返回目标濒死角色,借刀杀人***返回目标角色不返回子目标***

Parameters:
  • player (Player) -- 使用者

  • extra_data? (table | UseExtraData) -- askForUseCard中的extra_data

Returns:

_1 (Player[]) -- 返回目标角色表

getDefaultTarget(
    self: Card,
    player: Player,
    extra_data?: table | UseExtraData
): Player[]#

获得使用一张牌的一个可能的指定方式。

用于判断一张必须使用的牌能否使用,或给一张必须使用的牌添加默认目标。

eg.杀返回攻击范围内***一个***合法目标,借刀杀人返回***一对***角色,南蛮入侵返回***所有***其他角色

Parameters:
  • player (Player) -- 使用者

  • extra_data? (table | UseExtraData) -- askForUseCard中的extra_data

Returns:

_1 (Player[]) -- 目标角色表。返回空表表示无合法目标

setVSPattern(
    self: Card,
    skillName?: string,
    player?: Player,
    pattern?: string
)#

给卡牌赋予skillname,并赋予pattern(适用于转化技在合法性判断时未确定实体牌的情况)

matchVSPattern(self: Card, pattern: any): boolean#

判断此牌能否符合一个卡牌规则(适用于转化技在合法性判断时未确定实体牌的情况)