This commit is contained in:
parent
3bac323759
commit
146045c907
|
@ -118,6 +118,12 @@ const characters = {
|
|||
hp: 3,
|
||||
skills: ["jsrggangfen", "jsrgdangren"],
|
||||
},
|
||||
jsrg_zhangju: {
|
||||
sex: "male",
|
||||
group: "qun",
|
||||
hp: 4,
|
||||
skills: ["jsrgqiluan", "jsrgxiangjia"],
|
||||
},
|
||||
};
|
||||
|
||||
export default characters;
|
||||
|
|
|
@ -14,6 +14,7 @@ const characterIntro = {
|
|||
yangqiu: "阳球(?-179年),字方正,渔阳泉州(今天津市武清县)人。阳球出身世代豪门,能击剑,习弓马,好申不害、韩非之学。以杀人复仇知名。初举孝谦,补尚书侍郎。后出任高唐令,辟于司徙刘宠府中,举高第。当时九江郡(治阴陵,今安徽定远西北)贼起,三府推举阳球有理奸之才,遂出任九江太守。阳球上任后,设下方略,将凶贼全部歼灭,又收捕郡中奸吏尽杀之。升任平原相,因治事严苦,征诣廷尉,罪当免官。但灵帝以其在九江时有功,任命其为议郎,升任将作大匠,坐事论。不久,任尚书令,奏请罢鸿都文学,书奏不省。光和二年(179年),升任司隶校尉,遂奏收中常侍王甫等人,阳球亲自拷问,五毒备极,王甫父子皆死于杖下。既杀王甫,阳球还欲诛杀曹节等人,使权门屏气,京师震畏。不久,曹节谮毁阳球,使其转任卫尉。其冬,阳球与司徙刘郃等欲诛宦官,反为所诬,遂被收缚洛阳狱,诛死。",
|
||||
zhanghuan: "张奂(104-181年),字然明,又名张焕。敦煌渊泉今甘肃省瓜州县)人,后以功移籍弘农郡(今河南灵宝),书法家张芝的父亲。中国东汉经学家、军事家、文学家,“凉州三明”之一。早年师从太尉朱宠,研习《欧阳尚书》,自行删减《牟氏章句》。汉桓帝时,举贤良出身,对策第一,授议郎,历任安定都尉、武威太守、度辽将军、护匈奴中郎将等职。多次赢得对外战争,招抚外族,促进边境和平,功勋卓著。汉灵帝即位,迁大司农,受到宦官集团利用,讨伐大将军窦武。事后,上疏为窦武等人申冤。累迁太常卿,辞官归乡,授课著书,不再出仕。光和四年(181年),张奂去世,时年七十八。",
|
||||
chenfan: "陈蕃(?-168年),字仲举。汝南平舆(今河南省平舆北)人。东汉时期名臣,与窦武、刘淑合称“三君”。陈蕃年少时有大志,举孝廉,授郎中。因母去世,辞官居丧。后由太尉李固荐举为乐安太守。因得罪大将军梁冀,由太守降为县令。为了零陵桂阳的流民山匪得罪皇帝身边的人,被外放为豫章太守。后升任大鸿胪。延熹六年(163年),陈蕃被征为尚书仆射,转太中大夫。延熹八年(165年),陈藩代杨秉为太尉,次年,被免官。永康元年(167年),汉桓帝去世,窦皇后临朝,以陈蕃为太傅,管理尚书事宜。次年,汉灵帝即位,陈藩与大将军窦武谋诛宦官,事泄,宦官曹节劫持汉灵帝与窦太后,诛杀窦武,又率宫中卫士包围了陈蕃,陈蕃率学士80人抵抗,被害,年七十余。",
|
||||
zhangju: "张举(生卒年不详),渔阳人,与张纯同郡,是东汉末年起义军将领,曾在汉朝担任泰山太守。中平四年(187年),张举受张纯挑唆,联合乌桓起兵攻打郡县,部众到达了十多万;张举自称天子,张纯自称弥天将军安定王,声称自己将取代汉朝。刘虞担任幽州牧后,用怀柔之策说服乌桓罢兵,并悬赏求购张举、张纯;两人逃出塞外,后来张纯被门客王政所杀,张举则下落不明。",
|
||||
};
|
||||
|
||||
export default characterIntro;
|
||||
|
|
|
@ -3,6 +3,148 @@ import { lib, game, ui, get, ai, _status } from "../../noname.js";
|
|||
/** @type { importCharacterConfig['skill'] } */
|
||||
const skills = {
|
||||
//江山如故·衰
|
||||
//张举
|
||||
jsrgqiluan: {
|
||||
usable: 2,
|
||||
enable: "chooseToUse",
|
||||
hiddenCard(player, name) {
|
||||
return (name === "sha" || name === "shan") && (player.getStat("skill").jsrgqiluan || 0) < 2 && player.countCards("he") > 0;
|
||||
},
|
||||
filter(event, player) {
|
||||
return (event.filterCard({ name: "sha", isCard: true }, player, event) || event.filterCard({ name: "shan", isCard: true }, player, event)) && player.hasCard(card => lib.filter.cardDiscardable(card, player, "jsrgqiluan"));
|
||||
},
|
||||
chooseButton: {
|
||||
dialog(event, player) {
|
||||
const vcards = [];
|
||||
if (event.filterCard({ name: "sha", isCard: true }, player, event)) vcards.push("sha");
|
||||
if (event.filterCard({ name: "shan", isCard: true }, player, event)) vcards.push("shan");
|
||||
return ui.create.dialog("起乱", [vcards, "vcard"], "hidden");
|
||||
},
|
||||
backup(links, player) {
|
||||
return {
|
||||
viewAs: { name: links[0][2], isCard: true },
|
||||
filterCard: () => false,
|
||||
selectCard: -1,
|
||||
popname: true,
|
||||
async precontent(event, trigger, player) {
|
||||
delete event.result.skill;
|
||||
const stat = player.getStat("skill");
|
||||
if (!stat.jsrgqiluan) stat.jsrgqiluan = 0;
|
||||
stat.jsrgqiluan++;
|
||||
const evt = event.getParent();
|
||||
player.logSkill("jsrgqiluan");
|
||||
const { cards, targets } = await player
|
||||
.chooseCardTarget({
|
||||
prompt: "弃置任意张牌并选择等量角色",
|
||||
position: "he",
|
||||
filterCard: card => lib.filter.cardDiscardable(card, player, "jsrgqiluan"),
|
||||
filterTarget: lib.filter.notMe,
|
||||
selectCard: [1, Infinity],
|
||||
selectTarget: [1, Infinity],
|
||||
filterOk() {
|
||||
return ui.selected.cards.length === ui.selected.targets.length;
|
||||
},
|
||||
forced: true,
|
||||
})
|
||||
.forResult();
|
||||
player.line(targets);
|
||||
targets.sortBySeat();
|
||||
const cardsNum = cards.length;
|
||||
await player.discard(cards);
|
||||
let hasSomeoneUsed = false;
|
||||
for (const target of targets) {
|
||||
const cardName = event.result.card.name;
|
||||
const chooseToRespondEvent = target.chooseToRespond("是否替" + get.translation(player) + "打出一张" + get.translation(cardName) + "?", {name: cardName});
|
||||
chooseToRespondEvent.set("ai", () => {
|
||||
const event = _status.event;
|
||||
return get.attitude(event.player, event.source) - 2;
|
||||
});
|
||||
chooseToRespondEvent.set("source", player);
|
||||
chooseToRespondEvent.set("skillwarn", "替" + get.translation(player) + "打出一张" + get.translation(cardName));
|
||||
chooseToRespondEvent.noOrdering = true;
|
||||
chooseToRespondEvent.autochoose = (cardName === "sha" ? lib.filter.autoRespondSha : lib.filter.autoRespondShan);
|
||||
const { bool, card, cards } = (await chooseToRespondEvent).result;
|
||||
if(bool){
|
||||
hasSomeoneUsed = true;
|
||||
event.result.card = card;
|
||||
event.result.cards = cards;
|
||||
event.result._apply_args = { throw: false };
|
||||
target.addExpose(0.2)
|
||||
await player.draw(cardsNum)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!hasSomeoneUsed){
|
||||
evt.goto(0);
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
prompt(links, player) {
|
||||
return `请选择【${get.translation(links[0][2])}】的目标`;
|
||||
},
|
||||
},
|
||||
//技能收益太低,不写AI了
|
||||
},
|
||||
jsrgxiangjia: {
|
||||
enable: "phaseUse",
|
||||
usable: 1,
|
||||
filter(event, player) {
|
||||
return player.getEquips(1).length > 0;
|
||||
},
|
||||
viewAs: {
|
||||
name: "jiedao",
|
||||
isCard: true,
|
||||
},
|
||||
filterCard: () => false,
|
||||
selectCard: -1,
|
||||
onuse(result, player) {
|
||||
player.addTempSkill("jsrgxiangjia_effect");
|
||||
},
|
||||
//技能收益太低,先不写AI了
|
||||
subSkill: {
|
||||
effect: {
|
||||
charlotte: true,
|
||||
filter(event, player) {
|
||||
const card = get.autoViewAs({ name: "jiedao", isCard: true });
|
||||
return (
|
||||
event.skill === "jsrgxiangjia" &&
|
||||
event.targets.some(current => {
|
||||
return current.isIn() && current.canUse(card, player);
|
||||
})
|
||||
);
|
||||
},
|
||||
popup: false,
|
||||
async content(event, trigger, player) {
|
||||
const card = get.autoViewAs({ name: "jiedao", isCard: true });
|
||||
for (const target of trigger.targets) {
|
||||
if (target.isIn() && target.canUse(card, player)) {
|
||||
const result = await target
|
||||
.chooseTarget(`是否对${get.translation(player)}使用【借刀杀人】?`, `操作提示:直接选择${get.translation(player)}使用【杀】的目标角色`, (card, player, target) => {
|
||||
const source = get.event("source");
|
||||
return lib.card.jiedao.filterAddedTarget(card, player, target, source);
|
||||
})
|
||||
.set("source", player)
|
||||
.set("ai", target => {
|
||||
const player = get.player(),
|
||||
card = get.autoViewAs({ name: "jiedao", isCard: true });
|
||||
const source = get.event("source");
|
||||
let eff = get.effect(source, card, player, player);
|
||||
_status.event.preTarget = source;
|
||||
eff += get.effect(target, card, player, player);
|
||||
delete _status.event.preTarget;
|
||||
return eff;
|
||||
})
|
||||
.forResult();
|
||||
if (result.bool) {
|
||||
await target.useCard(get.autoViewAs({ name: "jiedao", isCard: true }), [player, result.targets[0]]);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//陈蕃
|
||||
jsrggangfen: {
|
||||
trigger: { global: "useCardToPlayer" },
|
||||
|
@ -84,14 +226,17 @@ const skills = {
|
|||
return false;
|
||||
},
|
||||
selectCard: -1,
|
||||
check(){
|
||||
check() {
|
||||
const player = get.player();
|
||||
if (player.isDying()) return true;
|
||||
return game.countPlayer(current => {
|
||||
return current.hp <= 2 && get.attitude(player, current) > 0;
|
||||
}) > game.countPlayer(current => {
|
||||
return current.hp <= 2 && get.attitude(player, current) <= 0;
|
||||
})
|
||||
return (
|
||||
game.countPlayer(current => {
|
||||
return current.hp <= 2 && get.attitude(player, current) > 0;
|
||||
}) >
|
||||
game.countPlayer(current => {
|
||||
return current.hp <= 2 && get.attitude(player, current) <= 0;
|
||||
})
|
||||
);
|
||||
},
|
||||
prompt: "视为对自己使用【桃】",
|
||||
async precontent(event, trigger, player) {
|
||||
|
@ -105,10 +250,10 @@ const skills = {
|
|||
mark: true,
|
||||
marktext: "☯",
|
||||
intro: {
|
||||
content(storage){
|
||||
if (storage) return '当你可以对其他角色使用【桃】时,你须视为使用之。';
|
||||
return '当你需要对自己使用【桃】时,你可以视为使用之';
|
||||
}
|
||||
content(storage) {
|
||||
if (storage) return "当你可以对其他角色使用【桃】时,你须视为使用之。";
|
||||
return "当你需要对自己使用【桃】时,你可以视为使用之";
|
||||
},
|
||||
},
|
||||
group: "jsrgdangren_save",
|
||||
subSkill: {
|
||||
|
@ -153,7 +298,7 @@ const skills = {
|
|||
};
|
||||
trigger.untrigger();
|
||||
trigger.set("responded", true);
|
||||
player.changeZhuanhuanji("jsrgdangren")
|
||||
player.changeZhuanhuanji("jsrgdangren");
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -3,7 +3,7 @@ const characterSort = {
|
|||
jiangshanrugu_cheng: ["jsrg_sunce", "jsrg_xuyou", "jsrg_lvbu", "jsrg_zhanghe", "jsrg_zoushi", "jsrg_guanyu", "jsrg_chendeng", "jsrg_zhenji", "jsrg_zhangliao", "jsrg_xugong", "jsrg_chunyuqiong"],
|
||||
jiangshanrugu_zhuan: ["jsrg_guojia", "jsrg_zhangfei", "jsrg_machao", "jsrg_lougui", "jsrg_zhangren", "jsrg_huangzhong", "jsrg_xiahourong", "jsrg_sunshangxiang", "jsrg_pangtong", "jsrg_hansui", "jsrg_zhangchu", "jsrg_xiahouen", "jsrg_fanjiangzhangda"],
|
||||
jiangshanrugu_he: ["jsrg_zhugeliang", "jsrg_jiangwei", "jsrg_luxun", "jsrg_zhaoyun", "jsrg_simayi", "jsrg_guoxun", "jsrg_sunlubansunluyu", "jsrg_caofang", "jsrg_sunjun", "jsrg_liuyong", "jsrg_weiwenzhugezhi", "jsrg_zhangxuan", "jsrg_gaoxiang", "jsrg_guozhao"],
|
||||
jiangshanrugu_shuai: ["jsrg_yuanshao", "jsrg_caojiewangfu", "jsrg_songhuanghou", "jsrg_zhangjiao", "jsrg_dongzhuo", "jsrg_yangqiu", "jsrg_zhanghuan", "jsrg_liubiao", "jsrg_yl_luzhi"],
|
||||
jiangshanrugu_shuai: ["jsrg_yuanshao", "jsrg_caojiewangfu", "jsrg_songhuanghou", "jsrg_zhangjiao", "jsrg_dongzhuo", "jsrg_yangqiu", "jsrg_zhanghuan", "jsrg_liubiao", "jsrg_yl_luzhi", "jsrg_chenfan", "jsrg_zhangju"],
|
||||
};
|
||||
|
||||
const characterSortTranslate = {
|
||||
|
|
|
@ -427,6 +427,12 @@ const translates = {
|
|||
jsrggangfen_info: "当手牌数大于你的角色使用【杀】指定其他角色为目标时,你可以成为此【杀】的额外目标,并令所有其他角色也选择是否如此做。然后使用者展示其手牌,若其黑色手牌数小于目标数,则取消此【杀】的所有目标。",
|
||||
jsrgdangren: "当仁",
|
||||
jsrgdangren_info: "转换技。阴:当你需要对自己使用【桃】时,你可以视为使用之。阳:当你可以对其他角色使用【桃】时,你须视为使用之。",
|
||||
jsrg_zhangju: "衰张举",
|
||||
jsrg_zhangju_prefix: "衰",
|
||||
jsrgqiluan: "起乱",
|
||||
jsrgqiluan_info: "每回合限两次。当你需要使用【杀】或【闪】时,你可以弃置任意张牌,并令至多等两名其他角色选择是否代替你使用之。若有角色响应,则你摸等同与你弃置牌数的牌。",
|
||||
jsrgxiangjia: "相假",
|
||||
jsrgxiangjia_info: "出牌阶段限一次。若你的装备区内有武器牌,则你可以视为使用一张【借刀杀人】。然后此牌的目标角色可以视为对你使用一张【借刀杀人】。",
|
||||
};
|
||||
|
||||
export default translates;
|
||||
|
|
|
@ -1633,6 +1633,7 @@ window.noname_character_rank = {
|
|||
"dc_kongrong",
|
||||
"jsrg_zhangjiao",
|
||||
"jsrg_chenfan",
|
||||
"jsrg_zhangju",
|
||||
],
|
||||
c: [
|
||||
"xiahoudun",
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 63 KiB |
|
@ -3538,6 +3538,9 @@ export const Content = {
|
|||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
delete event.openskilldialog;
|
||||
}
|
||||
} else if (event.isOnline()) {
|
||||
event.send();
|
||||
} else {
|
||||
|
@ -3755,6 +3758,9 @@ export const Content = {
|
|||
if (event.prompt2) event.dialog.addText(event.prompt2);
|
||||
}
|
||||
}
|
||||
else{
|
||||
delete event.openskilldialog;
|
||||
}
|
||||
} else if (event.isOnline()) {
|
||||
event.send();
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue