トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

NPC強化

  • 青色は、改造箇所を示します。ファイル名: ルーチン名: 行番号 を示します。
  • 黒色文字は、「改造前の状態」を示します。
  • テキストボックスの中のプログラムを、該当の場所に上書きして下さい。

NPC強化 Ver 1.00 ★★☆☆☆☆☆☆

NPCキャラの能力を強化します。 具体的には、戦闘終了後に一時使用アイテムを復活させたり、レベルを勝敗によって自動調整したり(レベル経験値システムが導入されている場合)、死亡時に自動復活したりします。
※この 改造を取り入れる際には、併せて 【 改造者表示 】 の改造を取り入れて頂けると嬉しいです。(非強制)

履歴
2007/03/04 Wikiにて公開      
2003/08/18 Version 1.00 公開 


この改造によって追加される機能

○NPC管理の手間を軽減する改造(自動適用)

● 最初に設定した一時使用アイテムが消える事無く永久に使用出来ます。
● 死亡時に自動的に蘇生・体力回復します。(死亡時以外は通常通りです)
● ステラツィオの交換をされた場合、自動的にトレード設定をします。
● 装備品が失われなくなります。
● 勝敗によってレベルを自動調整します。(レベルシステムが導入されている場合/自動レベルアップには非対応)
● NPC質屋(Pb)の資金が不足(5000G未満)した時、資金を補充(+10000G)します。

○NPC追加機能(追加フラグを設定した場合に限り適用)

● 特殊スキル「Is」を追加した場合、ステラツィオをトレードされても、トレード前のステラツィオが失われません。
  これによって、特定のステラツィオ屋さん(任意のステラツィオを特定のステラツィオと交換する)が実装出来ます。
● 特殊スキル「Bg」を追加した場合、商品を販売したり戦闘で奪われても、鞄の中身が変わりません。
  これによって、NPCのインゴット屋や武器屋なども実装出来ます。
● 特殊フラグ「Cp」をアイテムに追加した物は、盗まれたり販売したりした時に失われなくなります。



共通改造ポイント

◆改造ポイント01 NPC用の動作を追加します。


sos2.cgi # Sub Get Partner # Line:2164
perl/subsos.cgi # Sub Get Partner # Line:83
shift(@_);



sos2.cgi # Sub Partner Out # Line:2179
perl/subsos.cgi # Sub Partner Out # Line:100
sub partnerout {



sos2.cgi # Sub Buy After # Line:1206
perl/bisiness.cgi # Sub Buy After # Line:152
push(@items,"$item△$sts"); $space--; $returnbag = 0;

◆改造ポイント02 フラグを設定します。


NPCのスキルに、NPCである事を示すフラグ「Ng」を追加します。
ステラツィオの状態を変えたくないキャラには、さらに「Is」を追加します。
鞄の状態を変えたくないキャラには、さらに「Bg」を追加します。
失わないアイテム(販売したり盗まれたりした時には、同じアイテムが増殖する)には、アイテムフラグ「Cp」を追加します。
※いずれのフラグも、NPC「Ng」のスキルを持つキャラに限って有効です。

本家版改造ポイント/人形版改造ポイントへ進む :改造ポイント3を実施

本家版改造ポイント

◆改造ポイント03 NPC用の動作(戦闘時)を追加します。


sos2.cgi # Sub Fight # Line:1653-1658
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/;


dollEx版改造ポイント

◆改造ポイント03 NPC用の動作(戦闘時)を追加します。


perl/fight.cgi # Sub Fight # Line:159-168
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/$_// } }