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 = ` diff --git a/_core/lib/edit.pl b/_core/lib/edit.pl index e3fe703d1..bcd36a72f 100644 --- a/_core/lib/edit.pl +++ b/_core/lib/edit.pl @@ -40,6 +40,10 @@ %conv_data = %{ decode_json($data) }; $type = $conv_data{type}; } + elsif($::in{json}){ + %conv_data = %{ decode_json($::in{json}) }; + $type = $conv_data{type}; + } elsif($::in{backupJSON}){ %conv_data = %{ decode_json($::in{backupJSON} ) }; $type = $conv_data{type}; @@ -698,6 +702,7 @@ sub textRuleArea {       :      |説明文2行目 項目名を記入しないか、半角スペースで埋めると上と結合します。
折り畳み:行頭に[>]項目名:以降のテキストがすべて折り畳みになります。
     項目名を省略すると、自動的に「詳細」になります。
+      >の代わりにVvのいずれかの文字をもちいると、デフォルトで展開状態となります(例: [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 @@ +