This commit is contained in:
Spmario233 2024-05-24 00:31:16 +08:00
parent 3bac323759
commit 146045c907
8 changed files with 177 additions and 12 deletions

View File

@ -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;

View File

@ -14,6 +14,7 @@ const characterIntro = {
yangqiu: "阳球(?-179年字方正渔阳泉州今天津市武清县人。阳球出身世代豪门能击剑习弓马好申不害、韩非之学。以杀人复仇知名。初举孝谦补尚书侍郎。后出任高唐令辟于司徙刘宠府中举高第。当时九江郡治阴陵今安徽定远西北贼起三府推举阳球有理奸之才遂出任九江太守。阳球上任后设下方略将凶贼全部歼灭又收捕郡中奸吏尽杀之。升任平原相因治事严苦征诣廷尉罪当免官。但灵帝以其在九江时有功任命其为议郎升任将作大匠坐事论。不久任尚书令奏请罢鸿都文学书奏不省。光和二年179年升任司隶校尉遂奏收中常侍王甫等人阳球亲自拷问五毒备极王甫父子皆死于杖下。既杀王甫阳球还欲诛杀曹节等人使权门屏气京师震畏。不久曹节谮毁阳球使其转任卫尉。其冬阳球与司徙刘郃等欲诛宦官反为所诬遂被收缚洛阳狱诛死。",
zhanghuan: "张奂104-181年字然明又名张焕。敦煌渊泉今甘肃省瓜州县后以功移籍弘农郡今河南灵宝书法家张芝的父亲。中国东汉经学家、军事家、文学家“凉州三明”之一。早年师从太尉朱宠研习《欧阳尚书》自行删减《牟氏章句》。汉桓帝时举贤良出身对策第一授议郎历任安定都尉、武威太守、度辽将军、护匈奴中郎将等职。多次赢得对外战争招抚外族促进边境和平功勋卓著。汉灵帝即位迁大司农受到宦官集团利用讨伐大将军窦武。事后上疏为窦武等人申冤。累迁太常卿辞官归乡授课著书不再出仕。光和四年181年张奂去世时年七十八。",
chenfan: "陈蕃(?-168年字仲举。汝南平舆今河南省平舆北人。东汉时期名臣与窦武、刘淑合称“三君”。陈蕃年少时有大志举孝廉授郎中。因母去世辞官居丧。后由太尉李固荐举为乐安太守。因得罪大将军梁冀由太守降为县令。为了零陵桂阳的流民山匪得罪皇帝身边的人被外放为豫章太守。后升任大鸿胪。延熹六年163年陈蕃被征为尚书仆射转太中大夫。延熹八年165年陈藩代杨秉为太尉次年被免官。永康元年167年汉桓帝去世窦皇后临朝以陈蕃为太傅管理尚书事宜。次年汉灵帝即位陈藩与大将军窦武谋诛宦官事泄宦官曹节劫持汉灵帝与窦太后诛杀窦武又率宫中卫士包围了陈蕃陈蕃率学士80人抵抗被害年七十余。",
zhangju: "张举生卒年不详渔阳人与张纯同郡是东汉末年起义军将领曾在汉朝担任泰山太守。中平四年187年张举受张纯挑唆联合乌桓起兵攻打郡县部众到达了十多万张举自称天子张纯自称弥天将军安定王声称自己将取代汉朝。刘虞担任幽州牧后用怀柔之策说服乌桓罢兵并悬赏求购张举、张纯两人逃出塞外后来张纯被门客王政所杀张举则下落不明。",
};
export default characterIntro;

View File

@ -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");
},
},
},

View File

@ -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 = {

View File

@ -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;

View File

@ -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

View File

@ -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 {