This commit is contained in:
Spmario233 2024-05-23 23:06:29 +08:00
parent bc888bd7ed
commit 3bac323759
7 changed files with 179 additions and 6 deletions

View File

@ -112,6 +112,12 @@ const characters = {
hp: 3,
skills: ["jsrgruzong", "jsrgdaoren"],
},
jsrg_chenfan: {
sex: "male",
group: "qun",
hp: 3,
skills: ["jsrggangfen", "jsrgdangren"],
},
};
export default characters;

View File

@ -5,6 +5,10 @@ const dynamicTranslates = {
if (player.storage.jsrgshichong) return '转换技。当你使用牌指定其他角色为唯一目标后,阴:你可以获得目标角色一张手牌;<span class="bluetext">阳:目标角色可以交给你一张手牌</span>。';
return '转换技。当你使用牌指定其他角色为唯一目标后,<span class="bluetext">阴:你可以获得目标角色一张手牌</span>;阳:目标角色可以交给你一张手牌。';
},
jsrgdangren(player) {
if (player.storage.jsrgdangren) return '转换技。阴:当你需要对自己使用【桃】时,你可以视为使用之。<span class="bluetext">阳:当你可以对其他角色使用【桃】时,你须视为使用之。</span>';
return '转换技。<span class="bluetext">阴:当你需要对自己使用【桃】时,你可以视为使用之。</span>阳:当你可以对其他角色使用【桃】时,你须视为使用之。';
},
};
export default dynamicTranslates;

View File

@ -11,8 +11,9 @@ const characterIntro = {
jsrg_guojia: "初平元年二月,郭嘉拜见袁绍,闻曹操怒斥众诸侯,乃对曰:“董卓于汴水或有埋伏,慎之!”曹操未从,果败于徐荣。三月,曹操与郭嘉论天下事:“使孤成大业者,必此人也。”郭嘉从破袁绍,讨谭、尚,连战数克,计定辽东。时年三十八,征乌桓归途郭嘉因劳染疾,命悬之际竟意外饮下柳皮醋水而愈。建安十三年,曹操屯兵赤壁,郭嘉识破连环之计,议上中下三策,可胜刘备。尚未献策,曹操便决意采纳上策,“奉孝之才,足胜孤百倍,卿言上策,如何不取?”由此,赤壁战后曹操尽得天下。",
jsrg_zhugeliang: "建兴六年春,汉丞相诸葛亮使赵云、邓芝为先锋,马谡为副将拒箕谷,牵制曹真主力。自率三十万大军攻祁山,三郡叛魏应亮,关中响震。曹叡命张郃拒亮,亮使定军山降将姜维与郃战于街亭,张郃久攻不下。后曹真强攻赵云军,赵云死战,坚守箕谷,马谡、邓芝当场战死忠勇殉国。……既克张郃,曹真溃逃,曹叡弃守长安,迁都邺城。十月,司马懿击退孙权,回援曹真。而后三年,丞相所到之处,无不望风而降,皆箪食壶浆,以迎汉军。尽收豫、徐、兖、并之地,建兴十年春,司马懿父子三人死于诸葛武侯火计,同年,孙权上表称臣,至此四海清平,大汉一统。而后诸葛亮荐蒋琬为丞相,姜维为大将军,自回隆中归隐,后主挽留再三,皆不受。魏延亦辞官相随,侍奉左右。后主时有不决之事,便往隆中拜访相父,均未得面,童子答曰外出云游,遗数锦囊,拆而视之,皆治国之良策也。",
jsrg_yuanshao: "太祖圣武皇帝,汝南汝阳人也,姓袁,讳绍,字本初。太祖于黎阳梦有一神授一宝刀,及觉,果在卧所,铭日思召。解之曰:思召,绍字也。 ……灵帝崩,少帝继位。卓议欲废立,太祖拒之,卓案剑吆曰:“竖子敢然!天下之事,岂不在我/我欲为之,谁敢不从!”绍勃然曰:“天下健者,岂惟董乎!”横剑径出。世人方知太祖贤名非以权势取之。实乃英雄气也。初平元年,太祖于勃海起兵,其从弟后将军术等十余位诸侯同时俱起,兴兵讨董。是时,豪杰既多附招,州郡蜂起,莫不以袁氏为名。……太祖既得冀州,尝出猎白登山,见一白鹿口含宝剑而来,获之,剑名中兴。或曰:汉失其鹿,陈逐而获之。建安五年,太祖与曹操战于官渡,曹操欲夜袭乌巢,恰有流星如火,光长十余丈照于曹营,昼有云如坏山,当营而陨, 不及地尺而散,吏士皆以为不详,太祖并兵俱攻大破之,操自军破后,头风病发,六年夏五月死。",
jsrg_yangqiu: "阳球(?-179年字方正渔阳泉州今天津市武清县人。阳球出身世代豪门能击剑习弓马好申不害、韩非之学。以杀人复仇知名。初举孝谦补尚书侍郎。后出任高唐令辟于司徙刘宠府中举高第。当时九江郡治阴陵今安徽定远西北贼起三府推举阳球有理奸之才遂出任九江太守。阳球上任后设下方略将凶贼全部歼灭又收捕郡中奸吏尽杀之。升任平原相因治事严苦征诣廷尉罪当免官。但灵帝以其在九江时有功任命其为议郎升任将作大匠坐事论。不久任尚书令奏请罢鸿都文学书奏不省。光和二年179年升任司隶校尉遂奏收中常侍王甫等人阳球亲自拷问五毒备极王甫父子皆死于杖下。既杀王甫阳球还欲诛杀曹节等人使权门屏气京师震畏。不久曹节谮毁阳球使其转任卫尉。其冬阳球与司徙刘郃等欲诛宦官反为所诬遂被收缚洛阳狱诛死。",
jsrg_zhanghuan: "张奂104-181年字然明又名张焕。敦煌渊泉今甘肃省瓜州县后以功移籍弘农郡今河南灵宝书法家张芝的父亲。中国东汉经学家、军事家、文学家“凉州三明”之一。早年师从太尉朱宠研习《欧阳尚书》自行删减《牟氏章句》。汉桓帝时举贤良出身对策第一授议郎历任安定都尉、武威太守、度辽将军、护匈奴中郎将等职。多次赢得对外战争招抚外族促进边境和平功勋卓著。汉灵帝即位迁大司农受到宦官集团利用讨伐大将军窦武。事后上疏为窦武等人申冤。累迁太常卿辞官归乡授课著书不再出仕。光和四年181年张奂去世时年七十八。",
yangqiu: "阳球(?-179年字方正渔阳泉州今天津市武清县人。阳球出身世代豪门能击剑习弓马好申不害、韩非之学。以杀人复仇知名。初举孝谦补尚书侍郎。后出任高唐令辟于司徙刘宠府中举高第。当时九江郡治阴陵今安徽定远西北贼起三府推举阳球有理奸之才遂出任九江太守。阳球上任后设下方略将凶贼全部歼灭又收捕郡中奸吏尽杀之。升任平原相因治事严苦征诣廷尉罪当免官。但灵帝以其在九江时有功任命其为议郎升任将作大匠坐事论。不久任尚书令奏请罢鸿都文学书奏不省。光和二年179年升任司隶校尉遂奏收中常侍王甫等人阳球亲自拷问五毒备极王甫父子皆死于杖下。既杀王甫阳球还欲诛杀曹节等人使权门屏气京师震畏。不久曹节谮毁阳球使其转任卫尉。其冬阳球与司徙刘郃等欲诛宦官反为所诬遂被收缚洛阳狱诛死。",
zhanghuan: "张奂104-181年字然明又名张焕。敦煌渊泉今甘肃省瓜州县后以功移籍弘农郡今河南灵宝书法家张芝的父亲。中国东汉经学家、军事家、文学家“凉州三明”之一。早年师从太尉朱宠研习《欧阳尚书》自行删减《牟氏章句》。汉桓帝时举贤良出身对策第一授议郎历任安定都尉、武威太守、度辽将军、护匈奴中郎将等职。多次赢得对外战争招抚外族促进边境和平功勋卓著。汉灵帝即位迁大司农受到宦官集团利用讨伐大将军窦武。事后上疏为窦武等人申冤。累迁太常卿辞官归乡授课著书不再出仕。光和四年181年张奂去世时年七十八。",
chenfan: "陈蕃(?-168年字仲举。汝南平舆今河南省平舆北人。东汉时期名臣与窦武、刘淑合称“三君”。陈蕃年少时有大志举孝廉授郎中。因母去世辞官居丧。后由太尉李固荐举为乐安太守。因得罪大将军梁冀由太守降为县令。为了零陵桂阳的流民山匪得罪皇帝身边的人被外放为豫章太守。后升任大鸿胪。延熹六年163年陈蕃被征为尚书仆射转太中大夫。延熹八年165年陈藩代杨秉为太尉次年被免官。永康元年167年汉桓帝去世窦皇后临朝以陈蕃为太傅管理尚书事宜。次年汉灵帝即位陈藩与大将军窦武谋诛宦官事泄宦官曹节劫持汉灵帝与窦太后诛杀窦武又率宫中卫士包围了陈蕃陈蕃率学士80人抵抗被害年七十余。",
};
export default characterIntro;

View File

@ -3,6 +3,161 @@ import { lib, game, ui, get, ai, _status } from "../../noname.js";
/** @type { importCharacterConfig['skill'] } */
const skills = {
//江山如故·衰
//陈蕃
jsrggangfen: {
trigger: { global: "useCardToPlayer" },
filter(event, player) {
if (event.card.name !== "sha") return false;
if (event.player === player || event.player.countCards("h") <= player.countCards("h")) return false;
return !event.targets.includes(player) && lib.filter.targetEnabled(event.card, event.player, player);
},
logTarget: "player",
prompt2(event, player) {
return `你可以成为该角色使用的${get.translation(event.card)}的额外目标,并令所有其他角色也选择是否成为此牌的目标。然后该角色展示所有手牌,若其中的黑色牌数量小于此牌目标数,则此牌无效。`;
},
check(event, player) {
if (
event.targets.reduce((p, c) => {
return p + get.effect_use(c, event.card, event.player, player) > 0;
}, 0) >= 0
)
return false;
//绝对保守策略:队友数大于来源牌数才发动技能
return game.countPlayer(current => event.targets.includes(current) || get.attitude(current, player) > 0) > event.player.countCards("h");
},
async content(event, trigger, player) {
trigger.targets.add(player);
const source = trigger.player;
const targets = game
.filterPlayer(current => {
return current !== player && current !== source && !trigger.targets.includes(current) && lib.filter.targetEnabled(trigger.card, source, current);
})
.sortBySeat();
for (const target of targets) {
const bool = await target
.chooseBool(`是否也成为${get.translation(trigger.card)}的目标?`, `若最终目标数大于${get.translation(source)}手牌中的黑色牌数,则此牌无效。`)
.set("ai", () => get.event("choice"))
.set(
"choice",
(() => {
if (get.attitude(target, player) < 0) return false;
return game.countPlayer(current => trigger.targets.includes(current) || get.attitude(current, player) > 0) > trigger.player.countCards("h");
})()
)
.forResult("bool");
if (bool) {
target.addExpose(0.15);
target.chat("我也上!");
target.line(source);
trigger.targets.add(target);
game.log(target, "也成为了", trigger.card, "的目标");
await game.asyncDelayx();
}
}
await source.showHandcards();
const blackNum = source.countCards("h", card => get.color(card, source) === "black");
if (blackNum < trigger.targets.length) {
trigger.getParent().all_excluded = true;
trigger.targets.length = 0;
trigger.untrigger();
}
},
ai: {
expose: 0.2,
threaten: 4.5,
},
},
jsrgdangren: {
zhuanhuanji: true,
enable: "chooseToUse",
filter(event, player) {
if (player.storage.jsrgdangren) return false;
const card = get.autoViewAs({ name: "tao", isCard: true });
return event.filterCard(card, player, event) && event.filterTarget(card, player, player);
},
viewAs: { name: "tao", isCard: true },
filterTarget(card, player, target) {
return target === player;
},
selectTarget: -1,
filterCard() {
return false;
},
selectCard: -1,
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;
})
},
prompt: "视为对自己使用【桃】",
async precontent(event, trigger, player) {
player.logSkill("jsrgdangren");
player.changeZhuanhuanji("jsrgdangren");
delete event.result.skill;
},
hiddenCard(player, name) {
return name === "tao";
},
mark: true,
marktext: "☯",
intro: {
content(storage){
if (storage) return '当你可以对其他角色使用【桃】时,你须视为使用之。';
return '当你需要对自己使用【桃】时,你可以视为使用之';
}
},
group: "jsrgdangren_save",
subSkill: {
save: {
trigger: { player: "chooseToUseBegin" },
filter(event, player) {
if (event.responded || !player.storage.jsrgdangren) return false;
const card = get.autoViewAs({ name: "tao", isCard: true });
if (!event.filterCard(card, player, event)) return false;
const backup = _status.event;
_status.event = event;
const hasTarget = game.hasPlayer(current => {
return current !== player && event.filterTarget(card, player, current);
});
_status.event = backup;
return hasTarget;
},
async cost(event, trigger, player) {
const card = get.autoViewAs({ name: "tao", isCard: true });
const backup = _status.event;
_status.event = trigger;
const targets = game.filterPlayer(current => {
return current !== player && trigger.filterTarget(card, player, current);
});
_status.event = backup;
if (targets.length === 1) {
event.result = { bool: true, targets };
} else {
event.result = await player
.chooseTarget(true, "当仁:请选择【桃】的目标", (card, player, target) => {
return get.event("targets").includes(target);
})
.set("targets", targets)
.forResult();
}
},
async content(event, trigger, player) {
trigger.result = {
bool: true,
card: { name: "tao", isCard: true },
targets: event.targets,
};
trigger.untrigger();
trigger.set("responded", true);
player.changeZhuanhuanji("jsrgdangren")
},
},
},
},
//卢植
jsrgruzong: {
trigger: { player: "phaseEnd" },
@ -85,19 +240,19 @@ const skills = {
ai: {
order: 2,
result: {
player(player, target){
player(player, target) {
const targets = game.filterPlayer(current => {
return player.inRange(current) && target.inRange(current);
});
if (targets.length === 0) return false;
return targets.reduce((p, c)=>{
return targets.reduce((p, c) => {
let eff = get.damageEffect(c, player, player);
if (eff < 0 && current.hp <= 2) {
const att = get.attitude(player, current);
if (att > 0) eff *= Math.sqrt(att);
}
return p + eff;
}, 0)
}, 0);
},
},
},
@ -831,7 +986,7 @@ const skills = {
.then(() => {
allPlayers.forEach(target => {
target.unmarkAuto("jsrgzonghai_blocker", [id]);
if (target.getStorage("jsrgzonghai_blocker").length) target.removeSkill("jsrgzonghai_blocker");
if (!target.getStorage("jsrgzonghai_blocker").length) target.removeSkill("jsrgzonghai_blocker");
});
if (source.isIn()) {
targets.forEach(target => target.damage(source));

View File

@ -421,6 +421,12 @@ const translates = {
jsrgruzong_info: "回合结束时,若你本回合使用牌指定过的目标角色仅有一名,则你可以将手牌数摸至与其相同。若该角色为你自己,则你可以改为令任意名其他角色将手牌摸至与你相同(均至多摸五张)。",
jsrgdaoren: "蹈刃",
jsrgdaoren_info: "出牌阶段限一次,你可以将一张手牌交给一名其他角色,然后对你与其攻击范围内均包含的所有角色各造成1点伤害。",
jsrg_chenfan: "衰陈蕃",
jsrg_chenfan_prefix: "衰",
jsrggangfen: "刚忿",
jsrggangfen_info: "当手牌数大于你的角色使用【杀】指定其他角色为目标时,你可以成为此【杀】的额外目标,并令所有其他角色也选择是否如此做。然后使用者展示其手牌,若其黑色手牌数小于目标数,则取消此【杀】的所有目标。",
jsrgdangren: "当仁",
jsrgdangren_info: "转换技。阴:当你需要对自己使用【桃】时,你可以视为使用之。阳:当你可以对其他角色使用【桃】时,你须视为使用之。",
};
export default translates;

View File

@ -1632,6 +1632,7 @@ window.noname_character_rank = {
"old_guanyu",
"dc_kongrong",
"jsrg_zhangjiao",
"jsrg_chenfan",
],
c: [
"xiahoudun",

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB