This commit is contained in:
parent
bc888bd7ed
commit
3bac323759
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 |
Loading…
Reference in New Issue