Skip to content

Commit a9a78b2

Browse files
authored
Merge pull request #3103 from xiyang141/PR-Branch
寒冰剑藤甲
2 parents fd7a89f + e3fc88f commit a9a78b2

File tree

7 files changed

+261
-28
lines changed

7 files changed

+261
-28
lines changed

character/newjiang/character.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
11
const characters = {
2+
yj_hanbing: {
3+
sex: "female",
4+
group: "qun",
5+
hp: 3,
6+
skills: ["bingling"],
7+
names: "null|null",
8+
},
9+
yj_tengjia: {
10+
sex: "male",
11+
group: "qun",
12+
hp: 4,
13+
skills: ["renjia", "yj_yanyu"],
14+
names: "null|null",
15+
},
216
yj_puyuan: {
317
sex: "male",
418
group: "shu",
519
hp: 4,
620
skills: ["biancai", "cuiren", "shenfeng"],
721
},
8-
22+
923
v_sunce: {
1024
sex: "male",
1125
group: "wu",

character/newjiang/intro.js

Lines changed: 23 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

character/newjiang/skill.js

Lines changed: 210 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,206 @@ import { lib, game, ui, get, ai, _status } from "../../noname.js";
22

33
/** @type { importCharacterConfig['skill'] } */
44
const skills = {
5+
bingling: {
6+
trigger: { player: ["useCardToPlayer"] },
7+
filter(event, player) {
8+
return get.name(event.card) == "sha" && event.target.countDiscardableCards("he") >= 2;
9+
},
10+
logTarget: "target",
11+
async cost(event, trigger, player) {
12+
const target = trigger.target;
13+
event.result = await player.discardPlayerCard(target, "hej", get.prompt2("bingling"), 2).set("chooseonly", true).forResult();
14+
},
15+
async content(event, trigger, player) {
16+
const next = trigger.target.discard(event.cards);
17+
next.set("discarder", player);
18+
await next;
19+
if (event.cards.length > 1) {
20+
const card = event.cards[0],
21+
cardx = event.cards[1];
22+
let num = 0;
23+
if (get.type2(card, false) == get.type2(cardx, false)) {
24+
await player.gain(event.cards, "gain2");
25+
num++;
26+
}
27+
if (get.suit(card, false) == get.suit(cardx, false)) {
28+
await player.recover();
29+
num++;
30+
}
31+
if (get.cardNameLength(card, false) == get.cardNameLength(cardx, false)) {
32+
await player.draw(get.cardNameLength(card));
33+
num++;
34+
}
35+
if (get.number(card, false) == get.number(cardx, false)) {
36+
await trigger.target.loseHp(trigger.target.getHp());
37+
num++;
38+
}
39+
if (num == 0) {
40+
await player.damage(1, "fire", "nosource");
41+
}
42+
}
43+
},
44+
},
45+
renjia: {
46+
trigger: {
47+
player: ["damageBegin3", "damageAfter"],
48+
source: ["damageSource"],
49+
},
50+
forced: true,
51+
filter(event, player, triggername) {
52+
if (triggername == "damageBegin3") {
53+
if (!event.hasNature()) {
54+
return player.getRoundHistory("damage", evt => !evt.hasNature()).indexOf(event) < 2;
55+
}
56+
return event.hasNature("fire");
57+
}
58+
return event.hasNatrue();
59+
},
60+
async content(event, trigger, player) {
61+
if (event.triggername == "damageBegin3") {
62+
if (trigger.hasNature("fire")) {
63+
trigger.num++;
64+
} else {
65+
trigger.num--;
66+
}
67+
} else if (trigger.hasNature()) {
68+
await player.draw();
69+
}
70+
},
71+
group: ["renjia_gain"],
72+
subSkill: {
73+
gain: {
74+
trigger: { player: ["expandEquipBegin", "enableEquipBegin"] },
75+
forced: true,
76+
init(player, skill) {
77+
player.disableEquip(2);
78+
},
79+
onremove(player, skill) {
80+
player.enableEquip(2);
81+
},
82+
filter(event, player) {
83+
return event.slots.includes("equip2");
84+
},
85+
async content(event, trigger, player) {
86+
trigger.slots.remove("equip2");
87+
if (trigger.slots.length == 0) {
88+
trigger.cancel();
89+
}
90+
},
91+
},
92+
},
93+
ai: {
94+
effect: {
95+
target(card, player, target) {
96+
if (get.tag(card, "fireDamage")) {
97+
return [1, 0, 1, -3];
98+
}
99+
if (!get.natureList(card).length && target.getRoundHistory("damage", evt => evt.hasNature()).length < 2) {
100+
return [1, -1];
101+
}
102+
},
103+
},
104+
},
105+
},
106+
yj_yanyu: {
107+
enable: ["phaseUse"],
108+
limited: true,
109+
lose: false,
110+
discard: false,
111+
selectCard: 2,
112+
check(card) {
113+
if (ui.selected.cards.some(cardx => get.suit(cardx) == get.suit(card))) {
114+
return 0;
115+
}
116+
return 1;
117+
},
118+
filterCard: () => true,
119+
filter(event, player) {
120+
return player.countCards("h") >= 2;
121+
},
122+
filterTarget(card, player, target) {
123+
return target != player;
124+
},
125+
async content(event, trigger, player) {
126+
player.awakenSkill(event.name);
127+
await player.showCards(event.cards);
128+
const card = get.cardPile2("tengjia"),
129+
suits = event.cards.map(card => get.suit(card));
130+
if (card && event.targets[0].canEquip("tengjia", true)) {
131+
await event.targets[0].equip(card);
132+
} else {
133+
player.popup("杯具");
134+
}
135+
player.addSkill("yj_yanyu_use");
136+
const targets = game.filterPlayer(curr => curr != event.targets[0]);
137+
targets.forEach(curr => {
138+
curr.markAuto("yj_yanyu_fire", suits);
139+
const list = curr.getStorage("yj_yanyu_source");
140+
list.add(player);
141+
curr.setStorage("yj_yanyu_source", list);
142+
curr.addSkill("yj_yanyu_fire");
143+
});
144+
},
145+
subSkill: {
146+
use: {
147+
forced: true,
148+
charlotte: true,
149+
trigger: { global: ["useCardAfter"] },
150+
filter(event, player) {
151+
if (!event.player.getStorage("yj_yanyu_source").includes(player)) {
152+
return false;
153+
}
154+
const suits = event.cards.map(card => get.suit(card, false));
155+
return event.player.getStorage("yj_yanyu_fire").some(suit => suits.includes(suit)) && ["basic", "trick", "equip"].includes(get.type2(event.card, false));
156+
},
157+
async content(event, trigger, player) {
158+
await player.draw();
159+
},
160+
},
161+
fire: {
162+
marktext: "焰",
163+
charlotte: true,
164+
intro: {
165+
name: "焰狱",
166+
mark(dialog, storage, player) {
167+
const str = get.translation(storage).split("、"),
168+
sources = get.translation(player.getStorage("yj_yanyu_source")).split("、");
169+
dialog.addText(`${str}花色的手牌遵循:基本牌:火杀,锦囊牌:火攻,装备牌:铁索连环且使用后${sources}摸一张牌`);
170+
},
171+
},
172+
mod: {
173+
cardname(card, player, name) {
174+
const suits = player.getStorage("yj_yanyu_fire"),
175+
suit = get.suit(card);
176+
if (!suits.includes(suit)) {
177+
return;
178+
}
179+
if (get.type(name, null, false) == "basic") {
180+
return "sha";
181+
} else if (get.type2(name, false) == "trick") {
182+
return "huogong";
183+
} else if (get.type(name, null, false) == "equip") {
184+
return "tiesuo";
185+
}
186+
},
187+
cardnature(card, player) {
188+
const suits = player.getStorage("yj_yanyu_fire"),
189+
suit = get.suit(card, false);
190+
if (suits.includes(suit) && get.type(card, null, false) == "basic") {
191+
return "fire";
192+
}
193+
},
194+
},
195+
},
196+
},
197+
ai: {
198+
order: 10,
199+
result: {
200+
player: 1,
201+
target: -1,
202+
},
203+
},
204+
},
5205
biancai: {
6206
trigger: {
7207
global: ["phaseBegin"],
@@ -214,7 +414,10 @@ const skills = {
214414
game.initCharacterList();
215415
}
216416
_status.characterlist.map(character => {
217-
const names = get.characterSurname(character).map(info => info.join("")).concat([get.rawName(character)]),
417+
const names = get
418+
.characterSurname(character)
419+
.map(info => info.join(""))
420+
.concat([get.rawName(character)]),
218421
skills = get.character(character, 3);
219422
names.forEach(name => {
220423
if (bingzhuSkill[name]) {
@@ -275,10 +478,12 @@ const skills = {
275478
}
276479
}
277480
if (target != player) {
278-
await player.draw(target.getSkills(null, false, false).filter(skill => {
279-
const info = get.info(skill);
280-
return info && !info.charlotte && get.skillInfoTranslation(skill, target).length;
281-
}).length);
481+
await player.draw(
482+
target.getSkills(null, false, false).filter(skill => {
483+
const info = get.info(skill);
484+
return info && !info.charlotte && get.skillInfoTranslation(skill, target).length;
485+
}).length
486+
);
282487
}
283488
},
284489
},

character/newjiang/sort.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const characterSort = {
33
yijiang_2022: ["yj_huangzhong", "lukai", "kebineng", "zhugeshang", "liwan", "wuanguo", "hanlong", "yj_sufei", "yj_qiaozhou"],
44
yijiang_2023: ["yj_majun", "mp_liuling", "yj_weiyan", "xiahoumao", "chenshi", "sunli", "feiyao"],
55
yijiang_2024: ["fj_peixiu", "new_yj_dongzhuo", "mp_wangrong", "yj_zhoubuyi", "linghuyu", "yj_simafu", "yj_xuangongzhu", "xukun", "xunyuxunyou", "yj_sb_guojia", "mp_xiangxiu"],
6-
yijiang_2025: ["wufu", "yao_yuanshu", "yj_zhanghuan", "yj_zhangyan", "yj_puyuan", "v_sunce"],
6+
yijiang_2025: ["wufu", "yao_yuanshu", "yj_zhanghuan", "yj_zhangyan", "yj_puyuan", "v_sunce", "yj_hanbing", "yj_tengjia"],
77
};
88

99
const characterSortTranslate = {

character/newjiang/translate.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,14 @@ const translates = {
233233
pyhuanling_info: "出牌阶段开始时或当你受到伤害后,你可以重铸一张牌,然后获得场上、弃牌堆或牌堆一张花色相同的装备牌,并从随机出现该装备的三个兵主技能选择其中一个令一名角色获得。若该角色不为你,你摸X张牌(X为其技能数)。",
234234
pyshenduan: "神锻",
235235
pyshenduan_info: "锁定技,每个副类别每回合限一次,你使用一张装备牌后,根据副类别执行对应效果:武器:视为使用一张【杀】;防具:增加1点体力上限并回复1点体力;进攻马:弃置每名其他角色各一张牌;防御马:摸一张牌且本局手牌上限+1。",
236+
yj_hanbing: "寒冰剑少女",
237+
bingling: "冰伶",
238+
bingling_info: "当你使用【杀】指定目标时,你可弃置目标角色两张牌。若这两张牌类别/花色/牌名字数/点数相同,则你获得这两张牌/回复1点体力/摸X张牌/令其失去所有体力(X为其中一张牌的牌名字数);若皆不同,则你受到1点无来源的火焰伤害。",
239+
yj_tengjia: "藤甲男孩",
240+
renjia: "韧甲",
241+
renjia_info: "锁定技,你没有防具区;你每轮前两次受到的非属性伤害-1,受到的火焰伤害+1,且你造成或受到属性伤害后摸一张牌。",
242+
yj_yanyu: "焰狱",
243+
yj_yanyu_info: "限定技。出牌阶段,你可以展示两张手牌然后选择一名其他角色A,将牌堆中的一张【藤甲】置入其防具区内(顶替原装备),若如此做,你与所有其他不为A的角色手牌中与这两张牌花色相同的基本牌视为火【杀】、锦囊牌视为【火攻】、装备牌视为【铁索连环】,且这些牌被使用后你摸一张牌。",
236244
};
237245

238246
export default translates;

character/rank.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ window.noname_character_rank = {
9393
"eu_yuejin",
9494
],
9595
a: [
96+
"yj_hanbing",
97+
"yj_tengjia",
9698
"yj_puyuan",
9799
"scl_jiaxu",
98100
"linglie",

character/replace.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ window.noname_character_replace = {
107107
guotufengji: ["guotufengji", "re_guotufengji"],
108108
guozhao: ["ol_guozhao", "guozhao", "xin_guozhao", "jsrg_guozhao", "std_guozhao", "pe_guozhao"],
109109
guyong: ["guyong", "re_guyong", "xin_guyong", "tw_guyong"],
110+
yj_hanbing: [],
110111
handang: ["handang", "xin_handang", "re_handang", "sb_handang", "tw_handang", "old_handang"],
111112
hanfu: ["hanfu", "ol_hanfu", "clan_hanfu"],
112113
hanhaoshihuan: ["hanhaoshihuan", "re_hanhaoshihuan"],
@@ -243,6 +244,7 @@ window.noname_character_replace = {
243244
taishici: ["taishici", "re_taishici", "ol_sb_taishici", "sp_taishici", "re_sp_taishici", "pot_taishici", "star_taishici", "zc26_taishici"],
244245
taoqian: ["ol_taoqian", "re_taoqian", "taoqian", "std_taoqian"],
245246
tengfanglan: ["tengfanglan", "dc_tengfanglan"],
247+
yj_tengjia: [],
246248
tianfeng: ["dc_tianfeng", "tianfeng", "mb_tianfeng", "std_tianfeng"],
247249
tianyu: ["tianyu", "tw_tianyu"],
248250
tongyuan: ["tongyuan", "xia_tongyuan"],

0 commit comments

Comments
 (0)