diff --git a/_core/lib/ar2e/convert.pl b/_core/lib/ar2e/convert.pl index 13cc04605..5941022a0 100644 --- a/_core/lib/ar2e/convert.pl +++ b/_core/lib/ar2e/convert.pl @@ -3,24 +3,11 @@ #use warnings; use utf8; use open ":utf8"; -use LWP::UserAgent; use JSON::PP; require $set::data_class; require $set::data_races; -sub urlDataGet { - my $url = shift; - my $ua = LWP::UserAgent->new; - my $res = $ua->get($url); - if ($res->is_success) { - return $res->decoded_content; - } - else { - return undef; - } -} - sub dataConvert { my $set_url = shift; my $file; diff --git a/_core/lib/ar2e/view-chara.pl b/_core/lib/ar2e/view-chara.pl index f92d2120b..a48c839c3 100644 --- a/_core/lib/ar2e/view-chara.pl +++ b/_core/lib/ar2e/view-chara.pl @@ -571,10 +571,11 @@ () } ### バックアップ -------------------------------------------------- +my $selectedLogName; if($::in{id}){ - my($selected, $list) = getLogList($set::char_dir, $main::file); + ($selectedLogName, my $list) = getLogList($set::char_dir, $main::file); $SHEET->param(LogList => $list); - $SHEET->param(selectedLogName => $selected); + $SHEET->param(selectedLogName => $selectedLogName); if($pc{yourAuthor} || $pc{protect} eq 'password'){ $SHEET->param(viewLogNaming => 1); } @@ -589,7 +590,10 @@ () $SHEET->param(titleName => '非公開データ'); } else { - $SHEET->param(titleName => removeTags removeRuby($pc{characterName}||"“$pc{aka}”")); + $SHEET->param(titleName => + (removeTags removeRuby($pc{characterName}||"“$pc{aka}”")) . + ($::in{log} ? " 【".($selectedLogName||$pc{updateTime})."】" : '') + ); } ### OGP -------------------------------------------------- @@ -614,6 +618,9 @@ () } else { if($pc{logId}){ + if(!$pc{forbiddenMode}){ + push(@menu, { TEXT => '出力' , TYPE => "onclick", VALUE => "downloadListOn()", }); + } push(@menu, { TEXT => '過去ログ', TYPE => "onclick", VALUE => 'loglistOn()', }); if($pc{reqdPassword}){ push(@menu, { TEXT => '復元', TYPE => "onclick", VALUE => "editOn()", }); } else { push(@menu, { TEXT => '復元', TYPE => "href" , VALUE => "./?mode=edit&id=$::in{id}&log=$pc{logId}", }); } diff --git a/_core/lib/blp/convert.pl b/_core/lib/blp/convert.pl index fab2e05d0..63aed42a0 100644 --- a/_core/lib/blp/convert.pl +++ b/_core/lib/blp/convert.pl @@ -3,21 +3,8 @@ #use warnings; use utf8; use open ":utf8"; -use LWP::UserAgent; use JSON::PP; -sub urlDataGet { - my $url = shift; - my $ua = LWP::UserAgent->new; - my $res = $ua->get($url); - if ($res->is_success) { - return $res->decoded_content; - } - else { - return undef; - } -} - sub dataConvert { my $set_url = shift; my $file; diff --git a/_core/lib/blp/view-chara.pl b/_core/lib/blp/view-chara.pl index 1845e1cfa..858814b61 100644 --- a/_core/lib/blp/view-chara.pl +++ b/_core/lib/blp/view-chara.pl @@ -373,10 +373,11 @@ sub textCost { $SHEET->param(History => \@history); ### バックアップ -------------------------------------------------- +my $selectedLogName; if($::in{id}){ - my($selected, $list) = getLogList($set::char_dir, $main::file); + ($selectedLogName, my $list) = getLogList($set::char_dir, $main::file); $SHEET->param(LogList => $list); - $SHEET->param(selectedLogName => $selected); + $SHEET->param(selectedLogName => $selectedLogName); if($pc{yourAuthor} || $pc{protect} eq 'password'){ $SHEET->param(viewLogNaming => 1); } @@ -388,7 +389,10 @@ sub textCost { $SHEET->param(titleName => '非公開データ'); } else { - $SHEET->param(titleName => removeTags removeRuby($pc{characterName}||"“$pc{aka}”")); + $SHEET->param(titleName => + (removeTags removeRuby($pc{characterName}||"“$pc{aka}”")) . + ($::in{log} ? " 【".($selectedLogName||$pc{updateTime})."】" : '') + ); } ### OGP -------------------------------------------------- @@ -413,6 +417,9 @@ sub textCost { } else { if($pc{logId}){ + if(!$pc{forbiddenMode}){ + push(@menu, { TEXT => '出力' , TYPE => "onclick", VALUE => "downloadListOn()", }); + } push(@menu, { TEXT => '過去ログ', TYPE => "onclick", VALUE => 'loglistOn()', }); if($pc{reqdPassword}){ push(@menu, { TEXT => '復元', TYPE => "onclick", VALUE => "editOn()", }); } else { push(@menu, { TEXT => '復元', TYPE => "href" , VALUE => "./?mode=edit&id=$::in{id}&log=$pc{logId}", }); } diff --git a/_core/lib/dx3/convert.pl b/_core/lib/dx3/convert.pl index a00bd7759..1f4ac3b96 100644 --- a/_core/lib/dx3/convert.pl +++ b/_core/lib/dx3/convert.pl @@ -3,21 +3,8 @@ #use warnings; use utf8; use open ":utf8"; -use LWP::UserAgent; use JSON::PP; -sub urlDataGet { - my $url = shift; - my $ua = LWP::UserAgent->new; - my $res = $ua->get($url); - if ($res->is_success) { - return $res->decoded_content; - } - else { - return undef; - } -} - sub dataConvert { my $set_url = shift; my $file; diff --git a/_core/lib/dx3/data-syndrome.pl b/_core/lib/dx3/data-syndrome.pl index 51b0fb5a1..04ff95daa 100644 --- a/_core/lib/dx3/data-syndrome.pl +++ b/_core/lib/dx3/data-syndrome.pl @@ -78,6 +78,7 @@ package data; ['自傷',16], ['恐怖',17], ['憎悪',18], + ['改変',30], ); 1; \ No newline at end of file diff --git a/_core/lib/dx3/view-chara.pl b/_core/lib/dx3/view-chara.pl index 774c692f0..519ea68a4 100644 --- a/_core/lib/dx3/view-chara.pl +++ b/_core/lib/dx3/view-chara.pl @@ -606,10 +606,11 @@ sub textType { $SHEET->param(History => \@history); ### バックアップ -------------------------------------------------- +my $selectedLogName; if($::in{id}){ - my($selected, $list) = getLogList($set::char_dir, $main::file); + ($selectedLogName, my $list) = getLogList($set::char_dir, $main::file); $SHEET->param(LogList => $list); - $SHEET->param(selectedLogName => $selected); + $SHEET->param(selectedLogName => $selectedLogName); if($pc{yourAuthor} || $pc{protect} eq 'password'){ $SHEET->param(viewLogNaming => 1); } @@ -621,7 +622,10 @@ sub textType { $SHEET->param(titleName => '非公開データ'); } else { - $SHEET->param(titleName => removeTags removeRuby($pc{characterName}||"“$pc{aka}”")); + $SHEET->param(titleName => + (removeTags removeRuby($pc{characterName}||"“$pc{aka}”")) . + ($::in{log} ? " 【".($selectedLogName||$pc{updateTime})."】" : '') + ); } ### 種族名 -------------------------------------------------- @@ -650,6 +654,9 @@ sub textType { } else { if($pc{logId}){ + if(!$pc{forbiddenMode}){ + push(@menu, { TEXT => '出力' , TYPE => "onclick", VALUE => "downloadListOn()", }); + } push(@menu, { TEXT => '過去ログ', TYPE => "onclick", VALUE => 'loglistOn()', }); if($pc{reqdPassword}){ push(@menu, { TEXT => '復元', TYPE => "onclick", VALUE => "editOn()", }); } else { push(@menu, { TEXT => '復元', TYPE => "href" , VALUE => "./?mode=edit&id=$::in{id}&log=$pc{logId}", }); } diff --git a/_core/lib/edit.js b/_core/lib/edit.js index 1aeb0c7fb..da9c5c253 100644 --- a/_core/lib/edit.js +++ b/_core/lib/edit.js @@ -291,6 +291,7 @@ function setDefaultStatus(statusArray){ tbody.innerHTML = ''; for(let item of statusArray){ for (const key in item) { + if(key === 'メモ'){ continue } const row = document.createElement('tr'); row.innerHTML = `
: |説明文2行目 項目名を記入しないか、半角スペースで埋めると上と結合します。[>]項目名:以降のテキストがすべて折り畳みになります。>の代わりに↓VvVvのいずれかの文字をもちいると、デフォルトで展開状態となります(例: [v]項目名)。[---]:(ハイフンは3つ以上任意)//:記述した行を非表示にします。
diff --git a/_core/lib/gc/convert.pl b/_core/lib/gc/convert.pl
index d4f4cec77..3c1d64ef6 100644
--- a/_core/lib/gc/convert.pl
+++ b/_core/lib/gc/convert.pl
@@ -3,23 +3,10 @@
#use warnings;
use utf8;
use open ":utf8";
-use LWP::UserAgent;
use JSON::PP;
require $set::data_class;
-sub urlDataGet {
- my $url = shift;
- my $ua = LWP::UserAgent->new;
- my $res = $ua->get($url);
- if ($res->is_success) {
- return $res->decoded_content;
- }
- else {
- return undef;
- }
-}
-
sub dataConvert {
my $set_url = shift;
my $file;
diff --git a/_core/lib/gc/view-chara.pl b/_core/lib/gc/view-chara.pl
index acd4a9ae2..43779f012 100644
--- a/_core/lib/gc/view-chara.pl
+++ b/_core/lib/gc/view-chara.pl
@@ -645,10 +645,11 @@ sub stylizeDuration {
$SHEET->param(historyMoneyTotal => commify $pc{historyMoneyTotal} );
### バックアップ --------------------------------------------------
+my $selectedLogName;
if($::in{id}){
- my($selected, $list) = getLogList($set::char_dir, $main::file);
+ ($selectedLogName, my $list) = getLogList($set::char_dir, $main::file);
$SHEET->param(LogList => $list);
- $SHEET->param(selectedLogName => $selected);
+ $SHEET->param(selectedLogName => $selectedLogName);
if($pc{yourAuthor} || $pc{protect} eq 'password'){
$SHEET->param(viewLogNaming => 1);
}
@@ -663,7 +664,10 @@ sub stylizeDuration {
$SHEET->param(titleName => '非公開データ');
}
else {
- $SHEET->param(titleName => removeTags removeRuby($pc{characterName}||"“$pc{aka}”"));
+ $SHEET->param(titleName =>
+ (removeTags removeRuby($pc{characterName}||"“$pc{aka}”")) .
+ ($::in{log} ? " 【".($selectedLogName||$pc{updateTime})."】" : '')
+ );
}
### OGP --------------------------------------------------
@@ -688,6 +692,9 @@ sub stylizeDuration {
}
else {
if($pc{logId}){
+ if(!$pc{forbiddenMode}){
+ push(@menu, { TEXT => '出力' , TYPE => "onclick", VALUE => "downloadListOn()", });
+ }
push(@menu, { TEXT => '過去ログ', TYPE => "onclick", VALUE => 'loglistOn()', });
if($pc{reqdPassword}){ push(@menu, { TEXT => '復元', TYPE => "onclick", VALUE => "editOn()", }); }
else { push(@menu, { TEXT => '復元', TYPE => "href" , VALUE => "./?mode=edit&id=$::in{id}&log=$pc{logId}", }); }
diff --git a/_core/lib/gc/view-country.pl b/_core/lib/gc/view-country.pl
index 93c418c5b..1af074f7b 100644
--- a/_core/lib/gc/view-country.pl
+++ b/_core/lib/gc/view-country.pl
@@ -256,10 +256,11 @@
$SHEET->param(historyCountsTotal => commify $pc{countsTotal} );
### バックアップ --------------------------------------------------
+my $selectedLogName;
if($::in{id}){
- my($selected, $list) = getLogList($set::char_dir, $main::file);
+ ($selectedLogName, my $list) = getLogList($set::char_dir, $main::file);
$SHEET->param(LogList => $list);
- $SHEET->param(selectedLogName => $selected);
+ $SHEET->param(selectedLogName => $selectedLogName);
if($pc{yourAuthor} || $pc{protect} eq 'password'){
$SHEET->param(viewLogNaming => 1);
}
@@ -274,7 +275,10 @@
$SHEET->param(titleName => '非公開データ');
}
else {
- $SHEET->param(titleName => removeTags removeRuby($pc{countryName}));
+ $SHEET->param(titleName =>
+ (removeTags removeRuby $pc{countryName}) .
+ ($::in{log} ? " 【".($selectedLogName||$pc{updateTime})."】" : '')
+ );
}
### OGP --------------------------------------------------
@@ -297,6 +301,9 @@
}
else {
if($pc{logId}){
+ if(!$pc{forbiddenMode}){
+ push(@menu, { TEXT => '出力' , TYPE => "onclick", VALUE => "downloadListOn()", });
+ }
push(@menu, { TEXT => '過去ログ', TYPE => "onclick", VALUE => 'loglistOn()', });
if($pc{reqdPassword}){ push(@menu, { TEXT => '復元', TYPE => "onclick", VALUE => "editOn()", }); }
else { push(@menu, { TEXT => '復元', TYPE => "href" , VALUE => "./?mode=edit&id=$::in{id}&log=$pc{logId}", }); }
diff --git a/_core/lib/gs/convert.pl b/_core/lib/gs/convert.pl
index 04552ba22..b664733f1 100644
--- a/_core/lib/gs/convert.pl
+++ b/_core/lib/gs/convert.pl
@@ -3,23 +3,10 @@
#use warnings;
use utf8;
use open ":utf8";
-use LWP::UserAgent;
use JSON::PP;
require $set::data_class;
-sub urlDataGet {
- my $url = shift;
- my $ua = LWP::UserAgent->new;
- my $res = $ua->get($url);
- if ($res->is_success) {
- return $res->decoded_content;
- }
- else {
- return undef;
- }
-}
-
sub dataConvert {
my $set_url = shift;
my $file;
diff --git a/_core/lib/gs/view-chara.pl b/_core/lib/gs/view-chara.pl
index 18a2be24c..677414fcf 100644
--- a/_core/lib/gs/view-chara.pl
+++ b/_core/lib/gs/view-chara.pl
@@ -617,10 +617,11 @@ ()
}
### バックアップ --------------------------------------------------
+my $selectedLogName;
if($::in{id}){
- my($selected, $list) = getLogList($set::char_dir, $main::file);
+ ($selectedLogName, my $list) = getLogList($set::char_dir, $main::file);
$SHEET->param(LogList => $list);
- $SHEET->param(selectedLogName => $selected);
+ $SHEET->param(selectedLogName => $selectedLogName);
if($pc{yourAuthor} || $pc{protect} eq 'password'){
$SHEET->param(viewLogNaming => 1);
}
@@ -632,7 +633,10 @@ ()
$SHEET->param(titleName => '非公開データ');
}
else {
- $SHEET->param(titleName => removeTags removeRuby($pc{characterName}||"“$pc{aka}”"));
+ $SHEET->param(titleName =>
+ (removeTags removeRuby($pc{characterName}||"“$pc{aka}”")) .
+ ($::in{log} ? " 【".($selectedLogName||$pc{updateTime})."】" : '')
+ );
}
### OGP --------------------------------------------------
@@ -657,6 +661,9 @@ ()
}
else {
if($pc{logId}){
+ if(!$pc{forbiddenMode}){
+ push(@menu, { TEXT => '出力' , TYPE => "onclick", VALUE => "downloadListOn()", });
+ }
push(@menu, { TEXT => '過去ログ', TYPE => "onclick", VALUE => 'loglistOn()', });
if($pc{reqdPassword}){ push(@menu, { TEXT => '復元', TYPE => "onclick", VALUE => "editOn()", }); }
else { push(@menu, { TEXT => '復元', TYPE => "href" , VALUE => "./?mode=edit&id=$::in{id}&log=$pc{logId}", }); }
diff --git a/_core/lib/junction.pl b/_core/lib/junction.pl
index d040e9978..38805c3b8 100644
--- a/_core/lib/junction.pl
+++ b/_core/lib/junction.pl
@@ -4,13 +4,21 @@
use utf8;
use Encode;
-our $ver = "1.26.100";
+our $ver = "1.27.007";
our %in;
for (param()){ $in{$_} = param($_); }
my $mode = $in{mode};
+#if ( $mode eq 'register'
+# || $mode eq 'option'
+# || $mode eq 'passchange'
+# || $mode eq 'reset'
+#){
+# error('ユーザーID関連機能メンテナンス中:2025// :~');
+#}
+
if($mode eq 'register'){
if($in{id}) { require $set::lib_register; } #登録処理
else { require $set::lib_form; } #新規登録フォーム
diff --git a/_core/lib/kiz/convert.pl b/_core/lib/kiz/convert.pl
index 8a0ae669e..c3abc3cc9 100644
--- a/_core/lib/kiz/convert.pl
+++ b/_core/lib/kiz/convert.pl
@@ -3,21 +3,8 @@
#use warnings;
use utf8;
use open ":utf8";
-use LWP::UserAgent;
use JSON::PP;
-sub urlDataGet {
- my $url = shift;
- my $ua = LWP::UserAgent->new;
- my $res = $ua->get($url);
- if ($res->is_success) {
- return $res->decoded_content;
- }
- else {
- return undef;
- }
-}
-
sub dataConvert {
my $set_url = shift;
my $file;
diff --git a/_core/lib/kiz/view-chara.pl b/_core/lib/kiz/view-chara.pl
index bda1ced6d..bb0cfcae0 100644
--- a/_core/lib/kiz/view-chara.pl
+++ b/_core/lib/kiz/view-chara.pl
@@ -380,10 +380,11 @@ sub textTarget {
$SHEET->param(History => \@history);
### バックアップ --------------------------------------------------
+my $selectedLogName;
if($::in{id}){
- my($selected, $list) = getLogList($set::char_dir, $main::file);
+ ($selectedLogName, my $list) = getLogList($set::char_dir, $main::file);
$SHEET->param(LogList => $list);
- $SHEET->param(selectedLogName => $selected);
+ $SHEET->param(selectedLogName => $selectedLogName);
if($pc{yourAuthor} || $pc{protect} eq 'password'){
$SHEET->param(viewLogNaming => 1);
}
@@ -395,7 +396,10 @@ sub textTarget {
$SHEET->param(titleName => '非公開データ');
}
else {
- $SHEET->param(titleName => removeTags removeRuby($pc{characterName}||"“$pc{aka}”"));
+ $SHEET->param(titleName =>
+ (removeTags removeRuby($pc{characterName}||"“$pc{aka}”")) .
+ ($::in{log} ? " 【".($selectedLogName||$pc{updateTime})."】" : '')
+ );
}
### OGP --------------------------------------------------
@@ -420,6 +424,9 @@ sub textTarget {
}
else {
if($pc{logId}){
+ if(!$pc{forbiddenMode}){
+ push(@menu, { TEXT => '出力' , TYPE => "onclick", VALUE => "downloadListOn()", });
+ }
push(@menu, { TEXT => '過去ログ', TYPE => "onclick", VALUE => 'loglistOn()', });
if($pc{reqdPassword}){ push(@menu, { TEXT => '復元', TYPE => "onclick", VALUE => "editOn()", }); }
else { push(@menu, { TEXT => '復元', TYPE => "href" , VALUE => "./?mode=edit&id=$::in{id}&log=$pc{logId}", }); }
diff --git a/_core/lib/ms/config-default.pl b/_core/lib/ms/config-default.pl
index fb6461be6..8b7f87652 100644
--- a/_core/lib/ms/config-default.pl
+++ b/_core/lib/ms/config-default.pl
@@ -128,6 +128,8 @@ package set;
our $lib_palette_sub = $::core_dir . '/lib/ms/palette-sub.pl';
# 一覧
our $lib_list_char = $::core_dir . '/lib/ms/list-chara.pl';
+ # JS固定値
+ our $lib_js_consts = $::core_dir . '/lib/ms/js-consts.pl';
# JSON出力
our $lib_json = $::core_dir . '/lib/json.pl';
our $lib_json_sub = $::core_dir . '/lib/ms/json-sub.pl';
@@ -135,6 +137,7 @@ package set;
our $lib_convert = $::core_dir . '/lib/ms/convert.pl';
# 各種データ
+ our $data_magi = $::core_dir . '/lib/ms/data-magi.pl';
# HTMLテンプレート
our $skin_tmpl = $::core_dir . '/skin/ms/index.html'; # 一覧/登録フォーム等の大枠
diff --git a/_core/lib/ms/convert.pl b/_core/lib/ms/convert.pl
index 8a0ae669e..c3abc3cc9 100644
--- a/_core/lib/ms/convert.pl
+++ b/_core/lib/ms/convert.pl
@@ -3,21 +3,8 @@
#use warnings;
use utf8;
use open ":utf8";
-use LWP::UserAgent;
use JSON::PP;
-sub urlDataGet {
- my $url = shift;
- my $ua = LWP::UserAgent->new;
- my $res = $ua->get($url);
- if ($res->is_success) {
- return $res->decoded_content;
- }
- else {
- return undef;
- }
-}
-
sub dataConvert {
my $set_url = shift;
my $file;
diff --git a/_core/lib/ms/data-magi.pl b/_core/lib/ms/data-magi.pl
new file mode 100644
index 000000000..77f870de4
--- /dev/null
+++ b/_core/lib/ms/data-magi.pl
@@ -0,0 +1,266 @@
+#################### データ ####################
+use strict;
+use utf8;
+
+package data;
+
+### PC用マギ --------------------------------------------------
+my @pcMagi = (
+ {
+ name => '一騎当千',
+ timing => 'メイン',
+ target => '単体',
+ cond => '3~10',
+ note => '[モブ]のみ対象にできる。対象に[1D+5]点のダメージを与える。ダメージの適用後、[マリョク]を1上げる。',
+ },
+ {
+ name => '英雄',
+ timing => 'メイン',
+ target => '単体',
+ cond => '9~12',
+ note => '対象に[お前の【社会】×2]点のダメージを与える。シナリオに3回使える。',
+ },
+ {
+ name => '回生の妙薬',
+ timing => '開始/終了',
+ target => '単体',
+ cond => '1~5',
+ note => '[ノックアウト]しているキャラクターのみ対象にできる。対象の[ノックアウト]を回復し、【耐久値】を最大値にする。セッションに1回使える。',
+ },
+ {
+ name => '全力全壊',
+ timing => 'メイン',
+ target => '単体',
+ cond => '3・6・9・12',
+ note => '対象に[2D]点のダメージを与える。ダメージの適用後、[マリョク]を2上げる。',
+ },
+ {
+ name => '狙撃',
+ timing => 'メイン',
+ target => '単体',
+ cond => '1・3・5・7・9・11',
+ note => '対象に[3+マリョク]点のダメージを与える。',
+ },
+ {
+ name => 'ブレス',
+ timing => 'メイン',
+ target => '1~2体',
+ cond => '1~6',
+ note => '対象に5回のダメージを与える。ダメージの適用後、[マリョク]を1上げる。',
+ },
+ {
+ name => '怪力無双',
+ timing => 'サブ',
+ target => '自身',
+ cond => '1~6',
+ note => '[手番]が終わるまで《マギ》で与えるダメージを[お前の【身体】]点増やす。',
+ },
+ {
+ name => '死に損ない',
+ timing => 'サブ',
+ target => '自身',
+ cond => '2・5・7・10',
+ note => 'お前の【耐久値】を[マリョク+5]点回復する。効果の適用後、[マリョク]を1上げる。',
+ },
+ {
+ name => '以心伝心',
+ timing => 'ダメージ増加',
+ target => '単体',
+ cond => '2・4・6・8・10・12',
+ note => '対象が与えるダメージを5回増やす。ラウンドに1回使える。',
+ },
+ {
+ name => '祝福の風',
+ timing => 'ダメージ増加',
+ target => '単体',
+ cond => '1・3・5・7・9・11',
+ note => '対象が与えるダメージを[お前の【異質】]点増やす。効果の適用後、[マリョク]を1下げる。ラウンドに1回使える。',
+ },
+ {
+ name => '心血の刃',
+ timing => 'ダメージ増加',
+ target => '単体',
+ cond => '2~7',
+ note => 'お前の【耐久値】を任意の点数減らす(最大でお前の【身体】点まで)。対象が与えるダメージを[減らした【耐久値】]点増やす。ラウンドに2回使える。',
+ },
+ {
+ name => '守護者',
+ timing => '効果参照',
+ target => '単体',
+ cond => '2・4・6・8・10・12',
+ note => 'ダメージ適用の直前に使用する。対象に与えられるダメージを、代わりにお前が受ける。その際、お前が受けるダメージを3回減らす。自身不可。',
+ },
+ {
+ name => '結界',
+ timing => 'ダメージ減少',
+ target => '単体',
+ cond => '1~6',
+ note => '対象に与えられるダメージを[お前の【異質】]点減らす。効果の適用後、[マリョク]を1下げる。ラウンドに1回使える。',
+ },
+ {
+ name => '破壊の指',
+ timing => '開始',
+ target => '効果参照',
+ cond => '7~12',
+ note => 'お前はエリアの[特性]を1つ選択する。選んだ[特性]を即座にエリアから取り除く。また、ラウンド終了までお前が《マギ》で与えるダメージを5点増やす。エリアに[特性]がない場合は使用できない。',
+ },
+ {
+ name => 'いたずら',
+ timing => '効果参照',
+ target => '効果参照',
+ cond => 'なし',
+ note => '[行動フェイズ]なら任意のタイミング、[ロケアクション]なら[ラウンドの終了]で使用する。[マリョク]をリセット(P150)する。セッションに3回使える。',
+ },
+ {
+ name => '浄化の音',
+ timing => '効果参照',
+ target => '効果参照',
+ cond => 'なし',
+ note => '[行動フェイズ]なら任意のタイミング、[ロケアクション]なら[【イニシアチブ】の確認]で使用する。[マリョク]の出目を[4]か[7]に変更する。セッションに3回まで使用可能。',
+ },
+ {
+ name => 'トリックスター',
+ timing => '効果参照',
+ target => '単体(クラン)',
+ cond => '6~12',
+ note => '[【イニシアチブ】の決定]のダイスロールの直後に使用する。対象とお前の【イニシアチブ】を入れ替える。',
+ },
+ {
+ name => '福招き',
+ timing => '効果参照',
+ target => '単体',
+ cond => '3~9',
+ note => '対象がダイスロールした直後に使用する。そのダイスロールをもう1度やり直す。シナリオに2回使える。',
+ },
+ {
+ name => 'まきもどし',
+ timing => '効果参照',
+ target => '自身',
+ cond => '1~7',
+ note => 'お前がダイスロールした直後に使用する。そのダイスロールをもう1度やり直す。セッションに3回使える。',
+ },
+ {
+ name => '駿足',
+ timing => '常時',
+ target => '自身',
+ cond => 'なし',
+ note => 'お前の【イニシアチブ】は[1D+2]で決定する。',
+ },
+ {
+ name => '頑鉄',
+ timing => '常時',
+ target => '自身',
+ cond => 'なし',
+ note => 'お前の【耐久値】に+3し、受けるダメージを常に2回減少する。お前の【イニシアチブ】は[1D-2]で決定する(最低1)。',
+ },
+);
+
+our %pcMagiData;
+our @pcMagiNames;
+foreach my $data (@pcMagi){
+ my $name = $data->{name};
+ delete $data->{name};
+ $pcMagiData{$name} = $data;
+ push(@pcMagiNames, $name);
+}
+
+### クラン用マギ --------------------------------------------------
+my @clanMagi = (
+ {
+ name => 'スクランブル!',
+ timing => '終了',
+ target => '単体',
+ cond => '8~12',
+ note => '[マリョク]を7下げる。クラン全員がそれぞれ1Dをロールする(この効果には[ノックアウト]でも例外的に参加できる)。ロールしたダイスの[出目]を合計したダメージを対象に与える。このダメージには[ダメージ増加]の《マギ》を使用できない。セッションに1回使える。',
+ },
+ {
+ name => '諦め悪いんで',
+ timing => '終了',
+ target => 'クラン全員',
+ cond => '1~6',
+ note => 'クラン全員の【耐久値】を[1D+マリョク]点回復する。セッションに1回使える。',
+ },
+ {
+ name => '悪名高き',
+ timing => '効果参照',
+ target => '単体(クラン)',
+ cond => 'なし',
+ note => '【社会】が指定された[判定]の直前に使う。代わりに【身体】か【異質】でロールできる。あるいは「判定に【社会】を使用できない」というアクシデント表の効果を無視する。セッションに3回使える。',
+ },
+ {
+ name => 'エース',
+ timing => '効果参照',
+ target => '単体(クラン)',
+ cond => 'なし',
+ note => '「【イニシアチブ】の確認」(P188)で使用する。対象は【イニシアチブ】に関係なく次に[手番]を得る。すでに[手番]を行ったキャラクターは対象にできない。セッションに1回使える。',
+ },
+ {
+ name => '同志たち',
+ timing => '効果参照',
+ target => '単体(クラン)',
+ cond => 'なし',
+ note => '対象が[ノックアウト]になった直後に使用する。対象の[ノックアウト]を回復し、【耐久値】を15点にする。セッションに2回使える',
+ },
+ {
+ name => '特別部署',
+ timing => '効果参照',
+ target => '単体(クラン)',
+ cond => 'なし',
+ note => '【身体】が指定された[判定]の直前に使う。代わりに【異質】か【社会】でロールできる。あるいは「判定に【身体】を使用できない」というアクシデント表の効果を無視する。セッションに3回使える。',
+ },
+ {
+ name => '人気グループ',
+ timing => '効果参照',
+ target => '単体(クラン)',
+ cond => '3~10',
+ note => '[住民][店員][警備員]などの[特性]があるエリアのみ使える。ダイスロールした直後に使用する。ロールしたダイス1個の出目を2下げる。[ロケアクション]中は効果を発揮しない。セッションに3回使える。',
+ },
+ {
+ name => 'プランB',
+ timing => '効果参照',
+ target => '単体(クラン)',
+ cond => '1・3・5・7・9・11',
+ note => '対象がダイスロールした直後に使う。そのダイスロールをもう1度やり直す。セッションに3回使える。',
+ },
+ {
+ name => 'アレ出しとこうか',
+ timing => '開始',
+ target => 'クラン全員',
+ cond => 'なし',
+ note => '[ロケアクション]が終わるまで、クラン全員が攻撃で与えるダメージを3回増やす。セッションに1回使える。',
+ },
+ {
+ name => 'クラン体操第一',
+ timing => '開始',
+ target => 'クラン全員',
+ cond => 'なし',
+ note => '[ロケアクション]が終わるまで、クラン全員が受けるダメージを3回減らす。セッションに1回使える。',
+ },
+ {
+ name => '戦闘集団',
+ timing => '常時',
+ target => 'クラン全員',
+ cond => 'なし',
+ note => '対象が攻撃で与えるダメージを常に2回増やす。',
+ },
+ {
+ name => 'スポーツチーム',
+ timing => '常時',
+ target => 'クラン全員',
+ cond => 'なし',
+ note => '対象の【イニシアチブ】は[1D+1]で決定する。ほかの《マギ》で【イニシアチブ】の決め方が変わっているPCは、この《マギ》の効果を受けない。',
+ },
+);
+
+our %clanMagiData;
+our @clanMagiNames;
+foreach my $data (@clanMagi){
+ my $name = $data->{name};
+ delete $data->{name};
+ $clanMagiData{$name} = $data;
+ push(@clanMagiNames, $name);
+}
+
+
+
+1;
\ No newline at end of file
diff --git a/_core/lib/ms/edit-chara.js b/_core/lib/ms/edit-chara.js
index 620cb933c..b44f47e09 100644
--- a/_core/lib/ms/edit-chara.js
+++ b/_core/lib/ms/edit-chara.js
@@ -99,9 +99,18 @@ function delAttribute(){
function checkMagi() {
let count = 0;
for (let num = 1; num <= 4; num++){
- if(form['magi'+num+'Name'].value){ count++ }
+ const magi = form[`magi${num}`].value;
+ if(magi){
+ count++;
+ }
+ const hasData = SET.pcMagiData.hasOwnProperty(magi) || null;
+ for (let type of ['timing','target','cond','note']){
+ document.querySelector(`#magi${num} .text-${type}`).textContent = hasData ? SET.pcMagiData[magi][type] : '';
+ form[`magi${num}${ucfirst(type)}`].classList.toggle('hidden', hasData);
+ }
+ document.querySelector(`#magi${num} .changed-name`).classList.toggle('hidden', !form[`magi${num}NC`].checked);
}
- document.getElementById('magi').querySelector('.annotate').textContent
+ document.getElementById('magi').querySelector('.annotate.caution').textContent
= (count < 1) ? 'マギを1つ記入してください' : '';
}
diff --git a/_core/lib/ms/edit-chara.pl b/_core/lib/ms/edit-chara.pl
index 73899c537..0cd1b9f00 100644
--- a/_core/lib/ms/edit-chara.pl
+++ b/_core/lib/ms/edit-chara.pl
@@ -8,6 +8,7 @@
my $LOGIN_ID = $::LOGIN_ID;
### 読込前処理 #######################################################################################
+require $set::data_magi;
require $set::lib_palette_sub;
### データ読み込み ###################################################################################
@@ -94,6 +95,7 @@
+