Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
3cdd7997d6 | |||
7999bc1d7b | |||
291a3e420e |
@ -17,7 +17,7 @@ ICollect-Alpha 是一个使用 [Carpet 脚本](https://github.com/gnembon/fabric
|
||||
3. 每10分钟会有一个投票环节,投票为一人一票,不记名,投票后不可撤销。所有玩家都可以把票投给一个自己怀疑是狼人的玩家,票数最高者出局。可以投弃权票,如果票数最高者有多人得票数相同,或票数最高者得票数不严格多于弃权票数量,则该轮投票无人出局。
|
||||
4. 如果好人阵营没能在规定时间内完成收集任务,则坏人阵营获胜。反之,如果好人阵营成功完成6个物品的收集,则好人阵营获胜。
|
||||
5. 每个玩家只有一条生命,被杀死、票死或者因为环境而死的玩家将变成旁观者模式。在准备阶段内死亡不会变成旁观者,而是会正常复活。
|
||||
6. 游戏过程中,玩家获得持续的生命回复II和伤害吸收III(每20秒更新一次状态效果为30秒)。
|
||||
6. 游戏过程中,玩家获得持续的生命回复II和伤害吸收III(每10秒更新一次状态效果为20秒)。
|
||||
|
||||
【望远镜的特殊能力】
|
||||
|
||||
@ -26,7 +26,7 @@ ICollect-Alpha 是一个使用 [Carpet 脚本](https://github.com/gnembon/fabric
|
||||
3. 建筑烟花:发射在其下方生成道路的烟花火箭(道路建筑材料为 _石化橡木台阶_)。
|
||||
|
||||
【指令使用】
|
||||
1. `/ica`:列出物品收集目标和时限信息
|
||||
1. `/ica`:列出物品收集目标、时限和玩家信息
|
||||
2. `/ica submit <slot>`:递交一个目标要求的物品
|
||||
3. `/ica me`:查看自己的身份
|
||||
4. `/ica seed`:查看地图种子
|
||||
|
@ -2,6 +2,7 @@ __config() -> {
|
||||
'scope' -> 'global',
|
||||
'command_permission' -> 'ops',
|
||||
'commands' -> {
|
||||
'' -> 'cmdList',
|
||||
'list' -> 'cmdList',
|
||||
'confirm' -> 'cmdStart',
|
||||
'reset' -> 'cmdResetClear'
|
||||
@ -9,9 +10,8 @@ __config() -> {
|
||||
};
|
||||
|
||||
import('ica-libs', 'shuffleList', 'countCareer', 'playerListNbt'
|
||||
, 'findVoteMax', 'resetVotes', 'getFirstUnsetGoal', 'useIcaInstead'
|
||||
, 'startedReject');
|
||||
import('ica-i18n', 'getLocaleKey');
|
||||
, 'findVoteMax', 'resetVotes', 'getFirstUnsetGoal');
|
||||
import('ica-i18n', 'getLocaleKey', 'useIcaInstead', 'startedReject');
|
||||
|
||||
__on_start() -> (
|
||||
if(nbt_storage('ica:data'):'Goals' == null, (
|
||||
@ -108,7 +108,7 @@ endGameTitle(p, m, s) -> (
|
||||
endTimeout(iv) -> (
|
||||
endGameTitle(getPigPlayers(), getLocaleKey('pig.timeout.title')
|
||||
, str(getLocaleKey('pig.timeout.subtitle'), iv));
|
||||
endGameTitle(getWolfPlayers(), getLocaleKey('wolf.timeout.subtitle')
|
||||
endGameTitle(getWolfPlayers(), getLocaleKey('wolf.timeout.title')
|
||||
, str(getLocaleKey('wolf.timeout.subtitle'), iv));
|
||||
endCleanup();
|
||||
);
|
||||
@ -264,7 +264,7 @@ cmdStart() -> (
|
||||
builder_n = countCareer('builder') + hunter_n;
|
||||
firework_hunter_n = countCareer('firework_hunter') + builder_n;
|
||||
if(firework_hunter_n > length(participants_list), (
|
||||
print(format(getLocaleKey('reject.leckplayer')));
|
||||
print(getLocaleKey('reject.leckplayer'));
|
||||
return(false);
|
||||
));
|
||||
|
||||
@ -303,5 +303,5 @@ cmdStart() -> (
|
||||
|
||||
cmdList() -> (
|
||||
useIcaInstead();
|
||||
run('/ica');
|
||||
run('/ica list');
|
||||
);
|
||||
|
@ -10,11 +10,13 @@ __config() -> {
|
||||
},
|
||||
};
|
||||
|
||||
import('ica-i18n', 'getLocaleKey');
|
||||
|
||||
getStatus() -> (
|
||||
if(global_enabled, (
|
||||
print('effect-applier: on')
|
||||
print(getLocaleKey('effect-applier.on'));
|
||||
), (
|
||||
print('effect-applier: off')
|
||||
print(getLocaleKey('effect-applier.off'));
|
||||
))
|
||||
);
|
||||
|
||||
|
151
src/ica-i18n.sc
151
src/ica-i18n.sc
@ -7,7 +7,7 @@ __config() -> {
|
||||
},
|
||||
};
|
||||
|
||||
global_TranslateKeysEnUS = {
|
||||
global_TranslateKeysEnCN = {
|
||||
'pig.timeout.title' -> 'Timeout!',
|
||||
'pig.timeout.subtitle' -> 'You didn\'t complete %d goals in time',
|
||||
'wolf.timeout.title' -> 'You won!',
|
||||
@ -137,16 +137,157 @@ global_TranslateKeysEnUS = {
|
||||
|
||||
'misc.clipboard' -> 'Click To Copy',
|
||||
|
||||
'license.header' -> 'ICollect-Alpha, Copyright (C) 2023 方而静\nICollect-Alpha comes with ABSOLUTELY NO WARRANTY;\nfor details type \'/ica-loader show w\'.\nThis is free software, and you are welcome to redistribute it\nunder certain conditions; type \'/ica-loader show c\' for details.'
|
||||
'effect-applier.on' -> 'effect-applier status: enabled.',
|
||||
'effect-applier.off' -> 'effect-applier status: disabled.',
|
||||
|
||||
'license.header' -> 'ICollect-Alpha, Copyright (C) 2023 %s\nICollect-Alpha comes with ABSOLUTELY NO WARRANTY;\nfor details type \'/ica-loader show w\'.\nThis is free software, and you are welcome to redistribute it\nunder certain conditions; type \'/ica-loader show c\' for details.'
|
||||
};
|
||||
|
||||
global_TranslateKeysZhHans = {
|
||||
'pig.timeout.title' -> '超时!',
|
||||
'pig.timeout.subtitle' -> '第 %d 个收集目标超时',
|
||||
'wolf.timeout.title' -> '取得胜利!',
|
||||
'wolf.timeout.subtitle' -> '他们的收集任务失败了,做得好',
|
||||
|
||||
'pig.complete.title' -> '恭喜!',
|
||||
'pig.complete.subtitle' -> '全部目标物品已集齐',
|
||||
'wolf.complete.title' -> '失败',
|
||||
'wolf.complete.subtitle' -> '他们已完成全部收集任务',
|
||||
|
||||
'submit.ddl.1' -> '[注意] 提交将在 1 分钟内结束。',
|
||||
'submit.ddl.2' -> '[注意] 提交将在 %d 秒钟内结束。',
|
||||
'submit.ddl.3' -> '[注意] 提交将在 %d 秒钟内结束。',
|
||||
'submit.success' -> '提交成功。',
|
||||
'submit.missing.before' -> '未找到',
|
||||
'submit.missing.after' -> '。',
|
||||
'submit.already.before' -> '重复提交',
|
||||
'submit.already.after' -> '。',
|
||||
|
||||
'election.kill' -> '%s 已被票出。',
|
||||
'election.ddl' -> '[注意] 本轮投票将在 1 分钟内结束。',
|
||||
'election.result.nobody' -> '无人被票出',
|
||||
'election.result.kill' -> '[注意] 你已被票出!你将在 10 秒内出局。',
|
||||
'election.new' -> '新一轮投票已开始。',
|
||||
'election.result' -> '票选结果:%s。',
|
||||
|
||||
'hint.instead.before' -> '请使用命令 ',
|
||||
'hint.instead.after' -> '。',
|
||||
'hint.allset.before' -> '全部目标已设置,你可以使用命令 ',
|
||||
'hint.allset.after' -> ' 开始游戏',
|
||||
|
||||
'goal.set.before' -> '目标 %d 已设置为 ',
|
||||
'goal.set.after' -> '。',
|
||||
|
||||
'bossbar.prepare.title' -> '准备阶段',
|
||||
'bossbar.time.title' -> '收集中',
|
||||
'bossbar.progress.title' -> '收集进度',
|
||||
|
||||
'career.display.title' -> '身份职业配置为:',
|
||||
'career.display.wolf' -> ' - 狼人:%d 个玩家。',
|
||||
'career.display.hunter' -> ' - 火球猎人:%d 个玩家。',
|
||||
'career.display.firework_hunter' -> ' - 烟花猎人:%d 个玩家。',
|
||||
'career.display.builder' -> ' - 建筑师:%d 个玩家。',
|
||||
'career.display.piggy' -> ' - 平民:其余全部玩家。',
|
||||
'career.set' -> '%s已设为 %d 个玩家。',
|
||||
|
||||
'career.title.bystander' -> '旁观者',
|
||||
'career.title.piggy' -> '平民',
|
||||
'career.title.hunter' -> '火球猎人',
|
||||
'career.title.firework_hunter' -> '烟花猎人',
|
||||
'career.title.builder' -> '建筑师',
|
||||
'career.title.wolf' -> '狼人',
|
||||
|
||||
'career.help.bystander' -> '你只能旁观。',
|
||||
'career.help.piggy' -> '完成全部收集任务以取得胜利!',
|
||||
'career.help.hunter' -> '保护平民,找出并杀死狼人,完成全部收集任务。',
|
||||
'career.help.firework_hunter' -> '保护平民,找出并杀死狼人,完成全部收集任务。',
|
||||
'career.help.builder' -> '建筑防御并完成全部收集任务。',
|
||||
'career.help.wolf' -> '隐藏自己的身份,阻止他们完成收集目标。',
|
||||
|
||||
'career.whoami' -> '你是%s:%s',
|
||||
|
||||
'ablity.title.voter' -> '投票',
|
||||
'ablity.title.flyer' -> '飞行',
|
||||
'ablity.title.fireball_spyglasser' -> '火球',
|
||||
'ablity.title.firework_spyglasser' -> '烟花',
|
||||
'ablity.title.build_spyglasser' -> '筑路',
|
||||
'ablity.title.coordinator' -> '追踪',
|
||||
|
||||
'ablity.help.voter' -> '你可以投票。',
|
||||
'ablity.help.flyer' -> '你可以使用鞘翅飞行。',
|
||||
'ablity.help.fireball_spyglasser' -> '你可以使用望远镜发射恶魂火球(准备阶段除外)。',
|
||||
'ablity.help.firework_spyglasser' -> '你可以使用望远镜发射烟花火箭(准备阶段除外)。',
|
||||
'ablity.help.build_spyglasser' -> '你可以使用望远镜建筑道路(准备阶段除外)。',
|
||||
'ablity.help.coordinator' -> '你可以定位其他玩家。',
|
||||
|
||||
'ablity.format' -> '[能力] %s:%s',
|
||||
|
||||
'reject.pending.before' -> '游戏还未开始,请使用命令 ',
|
||||
'reject.pending.after' -> ' 以开始游戏。',
|
||||
'reject.started.before' -> '游戏已开始,请使用命令 ',
|
||||
'reject.started.after' -> ' 以中断游戏。',
|
||||
'reject.leckplayer' -> '在线玩家数不足,游戏无法开始。',
|
||||
'reject.goal.missing' -> '第 %d 个收集目标尚未设置。',
|
||||
'reject.goal.enough.before' -> '全部目标已设置,请使用命令 ',
|
||||
'reject.goal.enough.after' -> ' 修改目标。',
|
||||
'reject.spyglass' -> '冷却中,距离可再次使用剩余 %.2f 秒。',
|
||||
'reject.unable' -> '你没有此能力。',
|
||||
'reject.bystand' -> '你只能旁观。',
|
||||
'reject.reparing.submit' -> '请在准备阶段结束后提交。',
|
||||
'reject.reparing.switch' -> '请在准备阶段结束后切换。',
|
||||
|
||||
'list.title.pending' -> '等待游戏开始:',
|
||||
'list.title.collecting' -> '收集阶段剩余 %d 秒,%d 个任务已完成:',
|
||||
'list.title.preparing' -> '准备阶段剩余 %d 秒:',
|
||||
'list.item.unset' -> '未设置',
|
||||
'list.item.submit' -> '[点此提交]',
|
||||
'list.marker.0' -> ' - ',
|
||||
'list.marker.1' -> ' + ',
|
||||
'list.item.id' -> '#%d:',
|
||||
|
||||
'vote.title' -> '共有 %d 个玩家:',
|
||||
'vote.deceased' -> '[已死亡]',
|
||||
'vote.amount.1' -> '[%02d票] ',
|
||||
'vote.amount.2' -> '[%02d票] ',
|
||||
'vote.footer' -> '当前得票数最多的玩家:',
|
||||
'vote.nobody' -> '(无)',
|
||||
'vote.abstain' -> '(弃权)',
|
||||
'vote.button.vote' -> '[点此投票]',
|
||||
'vote.button.abstain' -> '[点此弃权]',
|
||||
'vote.marker' -> ' - ',
|
||||
'vote.already' -> '你已投过票了。',
|
||||
'vote.notfound' -> '未找到玩家 %s。',
|
||||
'vote.success' -> '投票成功。',
|
||||
|
||||
'locate.notfound' -> '未找到玩家 %s。',
|
||||
'locate.offline' -> '玩家 %s 不在线。',
|
||||
|
||||
'seed.title' -> '地图种子:',
|
||||
|
||||
'ps.wolf' -> '[狼人]',
|
||||
'ps.button.locate' -> '[点此定位]',
|
||||
'ps.marker' -> ' - ',
|
||||
'ps.me' -> '[你]',
|
||||
'ps.offline' -> '[离线]',
|
||||
'ps.title' -> '共有 %d 个玩家:',
|
||||
|
||||
'misc.clipboard' -> '点此复制',
|
||||
|
||||
'effect-applier.on' -> '状态效果广播器:已启用。',
|
||||
'effect-applier.off' -> '状态效果广播器:已禁用。',
|
||||
|
||||
'license.header' -> 'ICollect-Alpha,版权所有 (C) 2023 %s\nICollect-Alpha 绝对不附带任何保证;\n请输入 \'/ica-loader show w\' 查看详情。\n这是自由软件,你可以在特定条款下重分发它。\n请输入 \'/ica-loader show c\' 查看详情。'
|
||||
};
|
||||
|
||||
global_TranslateKeysEnabled = global_TranslateKeysZhHans;
|
||||
|
||||
getLocaleKey(keyid) -> (
|
||||
if(has(global_TranslateKeysEnUS:keyid), global_TranslateKeysEnUS:keyid, 'tkey:' + keyid)
|
||||
if(has(global_TranslateKeysEnabled:keyid), global_TranslateKeysEnabled:keyid, 'tkey:' + keyid)
|
||||
);
|
||||
|
||||
useIcaInstead() -> (
|
||||
print(format('d ' + getLocaleKey('hint.instead.before')
|
||||
, 'mb /ica', '?/ica'
|
||||
, 'mb /ica list', '?/ica list'
|
||||
, 'd ' + getLocaleKey('hint.instead.after')));
|
||||
);
|
||||
|
||||
@ -163,5 +304,5 @@ pendingReject() -> (
|
||||
);
|
||||
|
||||
cmdDump() -> (
|
||||
write_file('ica-i18n-keys.json', 'shared_json', global_TranslateKeysEnUS);
|
||||
write_file('ica-i18n-table', 'shared_json', global_TranslateKeysEnabled);
|
||||
);
|
||||
|
@ -19,7 +19,7 @@ CopyrightInfo() -> (
|
||||
);
|
||||
|
||||
cmdLoad() -> (
|
||||
print(getLocaleKey('license.header'));
|
||||
print(str(getLocaleKey('license.header'), '方而静'));
|
||||
run('script load ica-admin');
|
||||
run('script load ica-effect-applier');
|
||||
run('script load ica-spyglass');
|
||||
|
@ -2,6 +2,7 @@ __config() -> {
|
||||
'scope' -> 'global',
|
||||
'command_permission' -> 'ops',
|
||||
'commands' -> {
|
||||
'' -> 'cmdList',
|
||||
'list' -> 'cmdList',
|
||||
'set <slot> <item>' -> 'cmdSet',
|
||||
'add <item>' -> 'cmdSetAppend',
|
||||
@ -23,7 +24,7 @@ import('ica-libs', 'countCareer', 'getFirstUnsetGoal');
|
||||
|
||||
cmdList() -> (
|
||||
useIcaInstead();
|
||||
run('/ica');
|
||||
run('/ica list');
|
||||
);
|
||||
|
||||
cmdSet(slot_id, goal_item_tuple) -> (
|
||||
|
@ -17,16 +17,16 @@ __config() -> {
|
||||
};
|
||||
|
||||
import('ica-libs', 'listContain', 'countVotes', 'findVoteMax', 'countAbstainVotes');
|
||||
import('ica-i18n', 'getLocaleKey');
|
||||
import('ica-i18n', 'getLocaleKey', 'pendingReject');
|
||||
|
||||
cmdInfo() -> (
|
||||
if(!nbt_storage('ica:data'):'Started', (
|
||||
print(format(getLocaleKey('reject.pending')));
|
||||
pendingReject();
|
||||
return(false)
|
||||
));
|
||||
cand_names = parse_nbt(nbt_storage('ica:voting'):'Candidates');
|
||||
cand_n = length(cand_names);
|
||||
print(str(getLocaleKey('vote.title', cand_n)));
|
||||
print(str(getLocaleKey('vote.title'), cand_n));
|
||||
for(cand_names, (
|
||||
p = player(_);
|
||||
v_cnt = countVotes(_);
|
||||
@ -57,7 +57,7 @@ cmdInfo() -> (
|
||||
|
||||
beforeVoteChecks() -> (
|
||||
if(!nbt_storage('ica:data'):'Started', (
|
||||
print(format(getLocaleKey('reject.pending')));
|
||||
pendingReject();
|
||||
return(false)
|
||||
));
|
||||
myself = player();
|
||||
|
14
src/ica.sc
14
src/ica.sc
@ -1,6 +1,6 @@
|
||||
__config() -> {
|
||||
'commands' -> {
|
||||
'' -> 'cmdList',
|
||||
'' -> 'cmdAllInfo',
|
||||
'list' -> 'cmdList',
|
||||
'submit <slot>' -> 'cmdSubmit',
|
||||
'refill' -> 'cmdRefill',
|
||||
@ -273,7 +273,19 @@ cmdListPalyer() -> (
|
||||
&& query(p, 'has_scoreboard_tag', 'ica.wolf'), (
|
||||
put(fcomp, null, ' ' + getLocaleKey('ps.wolf'));
|
||||
));
|
||||
if(me != p && query(me, 'has_scoreboard_tag', 'ica.coordinator')
|
||||
&& !query(p, 'has_scoreboard_tag', 'ica.deceased'), (
|
||||
put(fcomp, null, 'mb ' + getLocaleKey('ps.button.locate'));
|
||||
put(fcomp, null, '!/ica locate ' + _);
|
||||
));
|
||||
));
|
||||
print(format(fcomp));
|
||||
));
|
||||
);
|
||||
|
||||
cmdAllInfo() -> (
|
||||
if(nbt_storage('ica:data'):'Started', (
|
||||
cmdListPalyer();
|
||||
));
|
||||
cmdList();
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user