トップページ > 職業システム

職業システム

[概要]
[拡張案]
[思ったこと]

###################_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'}保存されるように調整して。
########################################################################################