トップページ > 職業システム
職業システム
[概要]
職業システム。登録時に職業を選べる。
LVUP時のST上昇率の変動
職業ごとにSTの上限を設定する
職業によって使える作戦が変化
職業によって装備できる武器が変化
これらの総称。職業がどうあるかによって、中身は変わる。
相変わらずバランス無視。行数は適当なので前後の処理を見て追加、修正を。
ほとんど動作確認すらしてないような気もする。
[拡張案]
転職システム→ebs_sub5.cgiとebs_sub3.cgiを書き換える
熟練度により職業の性能が上昇→これは武器と同じだから簡単
複数の職業を極めると上級職→職業履歴を保存しておく必要がある
特定の職業に就くには上限が必要→特定の武器を所持しているとか
[思ったこと]
分割してないebs4.cgiは扱いにくい。
あと今回のは説明が適当なのでわかりにくいかも。
###################_job.data#########################################################
%JOB_LIST=(
"a"=>"学級委員,3!3!3!3,50!50!50!50,1!1!1!1!1!1!1!1,1!1!1!1!1!1!1!1!1!1!1",
"b"=>"図書委員,-2!0!-1!0,30!30!30!30,1!1!1!1!1!1!1!1,1!1!1!1!1!1!1!1!1!1!1",
"c"=>"保健委員,5!5!3!3,50!50!30!30,0!1!0!1!1!0!0!1,1!0!1!1!0!0!0!1!1!0!1",
"d"=>"書記,3!3!7!7,30!30!50!50,1!0!1!0!1!0!1!0,1!1!1!0!1!0!1!0!1!0!1",
);
#補足
#"ID"=>"職業名,ST補正(AT!GU!SP!HIT),ST上限(AT!GU!SP!HIT),使用可能作戦,装備可能武器",
#ST補正は-9〜+9の範囲で(1につき10%)
#使用可能作戦(通常攻撃!突撃!防御!ヒットアンドアウェイ!狙撃!以下略)
#1→使用可能 0→使用不可
#装備可能武器(aではじまる武器!bではじまる武器!以下略)
#1→装備可能 0→装備不可
という内容で_job.data というファイルをlogフォルダ に作成する。
この内容だと、万能な学級委員、ステータスは低いけど多彩な作戦、武器が使える図書委員、攻防に秀でた保健委員、命中回避が高い書記って感じです。
########################################################################################
###################_hash.data#########################################################
"a"=>"ビームナギナタ,2500,65,2,40,5000,7,0,0",
を
"a"=>"ビームナギナタ,2500,65,2,40,5000,7,0,0,0",
のように修正する。
この武器だけではなく、全部の武器を修正する。
最後($Pl_W[8])が装備可能な武器の識別番号となる。
########################################################################################
###################ebs_sub1.cgi#########################################################
8行目 に
$JOB_DATA = '_job.data';
を追加する。
########################################################################################
###################ebs_sub3.cgi#########################################################
装備を表示している上あたりに
require "./$LOG_FOLDER/$JOB_DATA";
@JOB = split(/\,/,$JOB_LIST{"$PL_VALUES[44]"});
print"<span style=\"$STYL1\"> <b>職業</b> </span><b>".$JOB[0]."</b><br>";
を追加する。
########################################################################################
###################ebs_sub4.cgi#########################################################
10行目 あたりに
require "./$LOG_FOLDER/$JOB_DATA";
@PL_JOB = split(/\,/,$JOB_LIST{"$PL_VALUES[44]"});
@OPERATIONS = split(/!/,$PL_JOB[3]);
を追加する。
24行目 の
if($PL_VALUES[29] >= $R){
を
if($PL_VALUES[29] >= $R && $OPERATIONS[$c-1]){
に置き換える。
ここで職業ごとの使える作戦を制限している。
$PL_JOB[3] = "1!1!1!1!1!1!1!1";なら全部の作戦が使用可能。
$PL_JOB[3] = "1!0!1!0!1!1!1!0";なら突撃、ヒットアンドアウェイ、全段放出が使えない。
作戦の種類が多くないと、組み合わせが限られてしまうので面白くないと思う。
219行目 あたりに
require "./$LOG_FOLDER/$JOB_DATA";
@PL_JOB = split(/\,/,$JOB_LIST{"$PL_VALUES[44]"});
@VS_JOB = split(/\,/,$JOB_LIST{"$VS_VALUES[44]"});
@PL_JOB_WEAPON = split(/!/,$PL_JOB[4]);
@VS_JOB_WEAPON = split(/!/,$VS_JOB[4]);
235行目 あたりに
if(!$PL_JOB_WEAPON[$Pl_W[8]]){$Pl_AttPoint = 0; $Pl_W[3] = 0;}
if(!$VS_JOB_WEAPON[$Vs_W[8]]){$Vs_AttPoint = 0; $Pl_W[3] = 0;}
を追加する。
装備できない武器=攻撃力ゼロ(AT分も)、攻撃回数ゼロということで。
本当はココだけではなく、装備するとき、対戦相手を選ぶとき、そしてココと3箇所ともチェックした方がいいんだけどね……。
$PL_JOB[4] = "1!1!1!1!1!1!1!1!1!1!1";なら全部の武器が装備できる。
$PL_JOB[4] = "1!0!1!0!1!0!1!1!1!0!1";なら$Pl_W[8]が1 or 3 or 5 or 9の武器は装備できない。
$PL_JOB[4]は_job.dataで$Pl_W[8]は_hash.dataで設定できる。
433行目 (タイプごとの上昇確率を設定している次)に
my @LVUP_ST = split(/!/,$PL_JOB[1]);
$BoAt = $BoAt + ($LVUP_ST[0]);
$BoDe = $BoDe + ($LVUP_ST[1]);
$BoSp = $BoSp + ($LVUP_ST[2]);
$BoAg = $BoAg + ($LVUP_ST[3]);
を追加し、その次の行の
if (rand(22) < $BoAt && $PL_VALUES[19] < $StatusMax){print &BONUS('攻撃力');$PL_VALUES[19]++;}
if (rand(22) < $BoDe && $PL_VALUES[20] < $StatusMax){print &BONUS('防御力');$PL_VALUES[20]++;}
if (rand(22) < $BoSp && $PL_VALUES[21] < $StatusMax){print &BONUS('スピード');$PL_VALUES[21]++;}
if (rand(22) < $BoAg && $PL_VALUES[22] < $StatusMax){print &BONUS('命中力');$PL_VALUES[22]++;}
を
my @ST_MAX = split(/!/,$PL_JOB[2]);
if (rand(22) < $BoAt && $PL_VALUES[19] < $ST_MAX[0]){print &BONUS('攻撃力');$PL_VALUES[19]++;}
if (rand(22) < $BoDe && $PL_VALUES[20] < $ST_MAX[1]){print &BONUS('防御力');$PL_VALUES[20]++;}
if (rand(22) < $BoSp && $PL_VALUES[21] < $ST_MAX[2]){print &BONUS('スピード');$PL_VALUES[21]++;}
if (rand(22) < $BoAg && $PL_VALUES[22] < $ST_MAX[3]){print &BONUS('命中力');$PL_VALUES[22]++;}
に置き換える。
上限を職業ごとのものへと変えている。
というか、基本確率が20/22だと+9どころかもっと少ない数値でも……意味がないような。
逆に平均型の9/20だと-9とかにしちゃうと、ステータス上がらなくなっちゃう。
まあこの辺は各自で確率を調整してください。
########################################################################################
###################ebs_sub6.cgi#########################################################
65行目 あたりに
<tr><td class=td1>職業</td><td><select name=job $STYLE_L>
<option value=a>学級委員<br><option value=b>図書委員<br><option value=c>保健委員<br>
<option value=d>書記<br></select></td></tr>
と追加する。
ここで職業を選択している。
こうやって直に書くよりも、_job.dataから読み込んだ方が将来的には便利だと思う。
135行目 あたりに
<input type=hidden name=job value=$FORM{'job'}>
と追加する。
ついでにこの&KAKUNIN2()内でも、選択した職業を表示してあげると親切かもしれない。
155行目 の
$PL{"$FORM{'pname'}"} = ("1 $DATE $pwd $FORM{'msname'} $FORM{'type'} $FORM{'kuni'} 0 noComment 0 $FORM{'w'}!0 $FORM{'chara'} $FORM{'cl'} 0 $ST5 $ST5 $ST6 $ST6 $ST1 $ST2 $ST3 $ST4 0 0 0 $DATE $FORM{'msImg'} 1 0");
を
$PL{"$FORM{'pname'}"} = ("1 $DATE $pwd $FORM{'msname'} $FORM{'type'} $FORM{'kuni'} 0 noComment 0 $FORM{'w'}!0 $FORM{'chara'} $FORM{'cl'} 0 $ST5 $ST5 $ST6 $ST6 $ST1 $ST2 $ST3 $ST4 0 0 0 $DATE $FORM{'msImg'} 1 0 $FORM{'job'}");
に置き換える。
コピペしただけじゃうまくいかないかもしれないから、$PL_VALUES[44]に$FORM{'job'}保存されるように調整して。
########################################################################################
[PR]
犬