!Parts1
	 
		 
			 
			masimaro さんの配布されております、[ 装備使用回数制限 ]  と併用する場合には、下記修正を必ず実施して下さい。 
			[ 装備使用回数制限 ] は、非戦闘系の戦闘を想定していない為、この修正が必要となります。 
			# sub fight # 【 if ($pc 
			> 0) { 】の行を、【 
			if ($break == 0 || $pc > 0) { 】として下さい。 
			 
			ねる部屋 さんの配布されておりました、[ 戦闘に解説を付ける ]  と併用する場合には、下記修正を必ず実施して下さい。 
			[ 戦闘に解説を付ける ] の該当部分は、問題を孕んでいます。  
			battle.pl  sub bmsg  
			foreach $item (@items) {  
			 ($item,$sts,$price) = split(/△/,$item); 
			の所を、  
			 foreach $temp (@items) { 
			 
			 ($item,$sts,$price) = split(/△/,$temp); 
			 
			として下さい。 
			 
		 | 
	
!Parts2
sos2.cgi # Sub Get Partner # Line:2164
perl/subsos.cgi # Sub Get Partner # Line:83 
shift(@_); 
※ 街移動システム/エリア移動システムが未導入の場合、特に必要ありません。
※【 NPC強化 】改造を併せてお奨めします。  
!Parts3
sos2.cgi # Sub Fight # Line:1550
if ($plf eq $id) { push (@msg,"$pnmとは暫く戦えません"); return }
sos2.cgi # Sub Fight # Line:1572 
$uatk = $ak + $ab + $uw + $uo; $patk = $pak + $pab + $def_ab + $pw + $po;
 
sos2.cgi # Sub Fight # Line:1626
if (!$Bidice) { 
sos2.cgi # Sub Fight # Line:1649-1661 
if ($itemchance && $pitems[$Sidice]) {
			&splititem('i');
			($item,$sts,$price) = split(/△/,$pitems[$Sidice]);
			if ($sts !~ /Ns/) {
			if ($sts =~ s/Q[swat]//g) { $pab -= substr($sts,4,2); $pdb -= substr($sts,6,2) 
			}
			splice(@pitems,$Sidice,1); push(@items,"$item△$sts");
			$psp =~ s/Qb//g if $sts =~ /Bw/;
			$psp =~ s/Qk//g if $sts =~ /Kt/;
			$psp =~ s/Qx//g if $sts =~ /Ax/; 
			$psp =~ s/Qm//g if $sts =~ /Sw/;
			&joinitem('iI'); &fmsg('奪');
			}
			} 
sos2.cgi # Fight Message # Line:1727 
'奪',"$pnmから$itemを奪いました", 
!Parts4
sos2.cgi # ---------- USER DIRECTORY Line34 
$usrdir = 'userdata/'; # ユーザデータを格納するフォルダ 
 
※ 'NPC' の部分は任意に変更して下さい。
ファイル名を変更せず、デフォルト(ID4桁のみ)を使う場合は Null('')にして下さい。 
!Parts5
sos2.cgi # Sub Find Item # Line792 
if ($idt !~ /Gl/) { push(@items,"$inm△$idt"); &joinitem('i') } 
 
※ 出会いやすくしたり出会い難くするスキルを追加する場合は、
$runrd = int(rand(100) + 1); の行を改造します。
※ 複数回探索を取り入れている場合には、1つ目の return を last に書き換えて下さい。 
また、foreach のループの外にある &userout; は、if (!$find) { &userout; }として下さい。 
!Parts6
sos2.cgi # Sub Play Form # Line299
&find_item if $Fm{'mode'} eq 'find_item'; 
sos2.cgi # Sub Contact Form # Line329  
sub contact_form { 
sos2.cgi # Main Program # Line229
if ($Fm{'mode'} eq 'find_item') { &play_form } 
!Parts7
sos2.cgi # Sub Contact Action # Line685
			if ($psp =~ /(V[a-z])/) {
			$vflag = $1;
			&splititem('i'); 
			foreach (@items) {
			$right = 1 if (split(/△/))[1] =~ /$vflag/;
			}
			if (!$right) {
			&error("$pnmに会うためにはあるアイテムが必要です"); 
			} 
			} 
※ $method をGETに変更していると動作しなくなります。POST の設定に戻してください。
何らかの事情で GET にせざるを得ない場合は、if (!$post) { return } の行を削除すれば
動作はしますが、不正行為が行われやすくなります。 
sos2.cgi # Sub Contact Action # Line685  
&OKbuttoninform('on');
!Parts8
sos2.cgi # Sub Get Partner # Line:2164
perl/subsos.cgi # Sub Get Partner # Line:83 
shift(@_); 
 
※ 街移動システム/エリア移動システムが未導入の場合、特に必要ありません。
※【 NPC強化 】改造を併せてお奨めします。  
!Parts9
perl/fight.cgi # Sub Fight # Line:9
my($afgt_chk,$afck_msg) = &fight_check;
 perl/fight.cgi # Sub Fight # Line:33
$uatk = $ak + $ab + $def_ab + $uw + $uo; $patk = $pak + $pab + $pw + $po;
 
perl/fight.cgi # Sub Fight # Line:128
unless ($Bidice) { 
perl/fight.cgi # Sub Fight # Line:155-171 
if ($itemchance && $pitems[$Sidice]) {
			&splititem('i');
			($item,$sts,$price) = split(/△/,$pitems[$Sidice]); 
			if ($sts !~ /Ns/) {
			if ($sts =~ s/Q[swat]//g) { $pab -= substr($sts,4,2); $pdb -= substr($sts,6,2) 
			}
			splice(@pitems,$Sidice,1); push(@items,"$item△$sts");
			$psp =~ s/Qb//g if $sts =~ /Bw/;
			$psp =~ s/Qk//g if $sts =~ /Kt/;
			$psp =~ s/Qx//g if $sts =~ /Ax/; 
			$psp =~ s/Qm//g if $sts =~ /Sw/;
			$psp =~ s/Of// if $sts =~ /Of/; # 釣り竿の盗み処理
			#属性
			foreach (@element_ak) { if($sts =~ /$_/) { $psp =~ s/$_// } }
			foreach (@element_df) { if($sts =~ /$_/) { $psp =~ s/$_// } }
			&joinitem('iI'); &fmsg('奪');
			}
			} 
perl/fight.cgi # Fight Message # Line:237
'奪',"$pnmから$itemを奪いました", 
!Parts10
ini/filepath.cgi # ---------- USER DIRECTORY Line:19 
$usrdir = 'userdata/'; # ユーザデータを格納するフォルダ 
 
※ 'NPC' の部分は任意に変更して下さい。
ファイル名を変更せず、デフォルト(ID4桁のみ)を使う場合は Null('')にして下さい。 
!Parts11
perl/find.cgi # Sub Find Item # Line:45
require $itemcreatorpl; ($inm,$idt) = &item_ceator($inm,$idt); 
 
※ 出会いやすくしたり出会い難くするスキルを追加する場合は、
$runrd = int(rand(100) + 1); 
の行を改造します。 
!Parts12
perl/form.cgi # Sub Play Form # Line:14-19
			if ( $Fm{'mode'} eq 'find_item' ) {
			require $findpl; srand(time | $$);
			foreach(0 .. ($Fm{'it'} -1)) { undef @founditems; &find_item; } 
			}
			#鍛冶
			elsif ( $Fm{'mode'} eq 'smith_after' ) { require $smithpl; &smith_after; 
			} 
perl/form.cgi # Sub Contact Form # Line:61  
if ( $Fm{'mode'} eq 'find_partner' ) { require $anypl; &contact_check } 
sos2.cgi # Main Program # Line:36
elsif ($Fm{'mode'} eq 'find_item') { require $formpl; &play_form } 
!Parts13
perl/action.cgi # Sub Contact Action # Line:69
if ($psp =~ /(V[a-z])/ && $bg !~ /$1/) { &error("$pnmに会うためにはあるアイテムが必要です") 
			} 
perl/action.cgi # Sub Contact Action # Line:85
&OKbuttoninform('on'); 
!Parts14
ufs2.cgi # ------------ USER DIRECTORY Line39
dollEx 版は不要 
$usrdir = 'userdata/'; # ユーザデータを格納しているフォルダ 
※ 改造ポイント03に併せて下さい。 
ufs2.cgi # Sub Make From # Line576 
ufs/make.cgi # Sub Make From # Line:6
print qq|<tr><td>名前</td><td><input type=text name=name></td></tr>\n|; 
ufs2.cgi # Sub Made From # Line605
ufs/make.cgi # Sub Made From # Line:33
while (-e "$usrdir$id\.dat") { $id++; $id = sprintf("%04d",$id) } 
※ 必要に応じ、.dat を .cgi に修正して下さい(3箇所)
 
ufs2.cgi # Sub Make Free # Line620 
ufs/make.cgi # Sub Make Free # Line:46
print qq|<tr><td>名前</td><td><input type=text name=name></td></tr>\n|; 
ufs2.cgi # Sub Made Free # Line647
ufs/make.cgi # Sub Made Free # Line:73 
while (-e "$usrdir$id\.dat") { $id++; $id = sprintf("%04d",$id) } 
※ 必要に応じ、.dat を .cgi に修正して下さい(3箇所) 
!Parts15
NPCとの遭遇データを設定します。
itm.dat 任意の場所に追加 ( dollEx ver の場合は、dat/itm.cgi )
NPC名<>8桁のステータス+Ng<>出現割合<> として、NPCを設置するか、または
NPC名<>8桁のステータス+Ms<>出現割合<> として、モンスタを設置します。
NPC名
例えば「キメラ」の場合、「キメラ」と設定しても構いませんが、「鳥の様なモンスター」と設定しても面白いでしょう。 
ステータス(1〜4桁目)
 NPCのIDの数値部分4桁を設定します。
 実際のNPC-IDは、改造ポイント3で設定した $nghead+このID4桁 となります。
ステータス(5〜6桁目)
  戦闘系キャラ(Tf)の場合の、逃げる(またはNPCに逢い損ねる)確率を設定します。 
ステータス(7〜8桁目)
  非戦闘系キャラ(Tfが無い)の場合の、逃げる(またはNPCに逢い損ねる)確率を設定します。 
 Ms
 遭遇した場合、強制的に戦闘を開始します。Ng より優先されます。
Ng  
 Ms が設定されていない場合には、そのNPCとの遭遇画面となります。
出現割合には、そのNPCに出会う確率値を入れます。通常のアイテムと同様に設定して下さい。 
ufs2.cgi を使用して設定する事も可能です。  
この場合、次の様に設定して下さい。
アイテム名 ⇒ NPC名
買取価格  ⇒ ステータス 1〜4桁目
属性    ⇒ Ms 又は Ng
攻撃値   ⇒ ステータス 5〜6桁目
防御値   ⇒ ステータス 7〜8桁目
発見確率  ⇒ 出現割合 
!Parts16
NPCデータを作成します。
通常の「キャラクタを作る手順」で作成して構いません。
ufs2.cgi を使用して作成する場合には、NPCのチェックボックスをONにして作成して下さい。
この場合、自動的に キャラスキルフラグに Ng が追加されます。
!Parts17
sos2.cgi # Sub fight # Line:1662
perl/fight.cgi # Sub fight # Line:172
$bp = $bn = $pbp = $pbn = ''; $plf = $id; 
KIL0000 フラグを追加したNPCを「殺害」すると 0000 G入手出来る。
MNY0000 フラグを追加したNPCに「勝利」すると 0000 G入手出来る。
 いずれも、ゲーム内の所持金流通量を増加させるため、ゲームバランスの調整が難しくお奨めではありません。
最低限、乱用はさけ、また入手できる金額も抑えましょう。