修正前
my ($V,@L);
修正後
my ($V,$L,@L);
修正前
@L = (&get_oceanliner($I),&get_departure);
修正後
@L = &get_oceanliner($I);
$L = &get_departure;
修正前
foreach $V (@L) {
修正後
foreach $V (@L,@$L) {
library/aboard.cgi: sub aboard_after
修正前
&say('船に乗り遅れました。','aboard_before') if !$I->{Si}{go};
修正後
&say('船に乗り遅れました。','aboard_before') if !$I->{Si}{go} && !$I->{ab};
修正前
&say('既に予約がいっぱいです。','aboard_before') if $I->{Si}{pg} >= $I->{Si}{ct};
修正後
&say('既に予約がいっぱいです。','aboard_before') if $I->{Si}{pg} >= $I->{Si}{ct} && !$I->{ab};
library/aboard.cgi: sub get_oceanliner
修正前
my ($L,%L,$K,$V);
修正後
my (@L,%L,$K,$V);
修正前
push(@$L,$K) if $V->{nw} eq $S->{pl};
修正後
push(@L,[$K]) if $V->{nw} eq $S->{pl};
修正前
return $L;
修正後
return @L;
library/bag.cgi: sub bag
修正前
if ($set::mif{Xx}) {
$Ii->{Sp} = $set::uop ? $Ii->{sp} : int($Ii->{sp} / $Ii->{qn});
$t1 .= &decorate_item($Ii);
}
else {
$Ii->{Sp} = $set::uop ? $Ii->{sp} * $Ii->{qn} : $Ii->{sp};
$t1 .= &decorate_item($Ii,2);
}
修正後
$t1 .= &decorate_item($Ii,'',1);
library/bank.cgi: sub bank_before
修正前
$t2 .= &decorate_item($Ii);
修正後
$t2 .= &decorate_item($Ii,'',1);
library/base.cgi: sub item_class_check
修正前
return 'M' if $Si->{cl} =~ /(Fd|Mt|Ig|Pi|Wd|Lt|Ct|Jw)/;
修正後
return 'M' if $Si->{cl} =~ /(Fd|Mt|Ig|Pi|Wd|Lt|Ct|Jw|Op|Gm)/;
library/base.cgi: sub get_item
追加
map { $K[$i]{Ql}{$_} = 1 } split(/,/,$K[$i]{ql});
if ($K[$i]{db}) {
($K[$i]{db},$K[$i]{Mdb}) = split(/\//,$K[$i]{db});
$K[$i]{Mdb} ||= $K[$i]{db};
$K[$i]{db} = &get_durability($S,$K[$i]{eq}) if $K[$i]{eq};
}
library/base.cgi: sub set_item
追加
next if !$S->{Bg}[$i]{qn};
$S->{Bg}[$i]{db} = join ('/',$S->{Bg}[$i]{db},$S->{Bg}[$i]{Mdb}) if $S->{Bg}[$i]{Mdb};
library/base.cgi: sub sort_item
修正前
@{$S->{Bg}} = sort { $SO{$a->{cl}} <=> $SO{$b->{cl}} || $a->{id} cmp $b->{id} || $b->{qn} <=> $a->{qn} } @{$S->{Bg}};
修正後
@{$S->{Bg}} = sort { length($b->{eq}) <=> length($a->{eq}) || $SO{$a->{cl}} <=> $SO{$b->{cl}} || $a->{id} cmp $b->{id} || $b->{qn} <=> $a->{qn} } @{$S->{Bg}};
library/base.cgi: sub decorate_item
追加
$V = "<span class=reserve>予\約された</span>".$V if $Si->{rs};
$V .= " [$Si->{db}]" if $Si->{db};
library/base.cgi: sub decorate_item
追加 my $T = shift; # Buy, Blackmarket = 1, Market = 2 my $F = shift; # Change the sales price indication method = 1 追加 $Z = 0 if $Si->{cl} eq 'Cu'; if ($F && $Y) { $T = 2 if !$set::mif{Xx}; $F = $set::uop <=> $set::mif{Xx}; $Y = int($Y / $W) if $F == -1; $Y *= $W if $F == 1; }library/base.cgi: sub set_equipment
追加
$S->{$E}{ql} = $L[2]; # Quality
map { $S->{$E}{ql}{$_} = 1 } split(/,/,$L[2]); # Quality
library/base.cgi:
サブルーチンを追加
# Sub Set Equipment #
sub set_equipment {
my $S = shift;
my $Si = shift;
my $e;
$e = ref $Si ? $Si->{eq} : $Si;
$Si = $S->{ucfirst $Si} if !ref $Si;
$S->{$e} = join('/',@{$Si}{nm,cl,ql,ef,db,im,gd,pl,cr});
}
# Sub Broken Item #
sub broken_item {
my $S = shift;
my $Si = shift;
my $F = shift; # Message Flag
my ($e,$E,$M);
$M = $S->{id} eq $I->{id} ? 1 : 0;
&M("$Si->{nm}が破損しました。") if $F == 1 || $Si->{Ql}{Rp};
&M("$Si->{nm}を使い切りました。") if $F == 2 && !$Si->{Ql}{Rp};
$e = $Si->{eq};
$E = ucfirst $e;
if ($Si->{Ql}{Rp}) {
&M("$Si->{nm}は修理が必要です。") if $F;
$Si->{ql} .= ',Br';
$Si->{eq} = '';
$Si->{db} = 0;
}
else {
&change_status($S,'bg',-$Si->{wt});
$Si->{qn} = 0;
}
return 1 if !$e;
$S->{$e} = '';
undef %{$S->{$E}};
&reload_data($e) if $M;
return 1;
}
# Sub Used Item #
sub used_item {
my $Si = shift;
my $K = shift;
$K ||= 'bp';
return if !$Si->{Mdb};
return if $Si->{Ql}{Vs};
$Si->{$K} = int($Si->{bp} * $Si->{db} / $Si->{Mdb});
}
# Sub Get Durability #
sub get_durability {
my $S = shift;
my $E = shift;
return (split(/\//,$S->{$E}))[4]; # Durability
}
library/berry.cgi: sub berry
置換 全ての$set::wvtを$set::pvtに置換する。library/butcher.cgi: sub butcher_after
追加
require "$set::itm_dir/corpse.cgi";
require "$set::lib_dir/experience.cgi";
require "$set::lib_dir/break.cgi";
追加
&change_status($I,'hy',-2,1) if !$I->{Sk}{Bc};
$Ip->{id} = '';
last if &break_check($I,'rh',1,'Cp');
削除
require "$set::lib_dir/break.cgi";
$I->{Rh}{ql}{Cp} ? &break_check($I,'rh') : &break_check($I,'sb');
&reload_data('ex') if $I->{Sk}{Bc};
library/buy.cgi: sub buy_before
修正前
$Ui->{sp} ||= $Ui->{bp} * $Ui->{qn} + $set::lip if $U->{Sk}{Vm};
修正後
if ($U->{Sk}{Vm}) {
$Ui->{sp} ||= $Ui->{bp};
$Ui->{sp} *= $Ui->{qn} if !$set::uop;
$Ui->{sp} += $set::lip;
}
library/buy.cgi: sub buy_before
修正前
if ($set::mif{Xx}) {
$Ui->{Sp} = $set::uop ? $Ui->{sp} : int($Ui->{sp} / $Ui->{qn});
$t1 .= &decorate_item($Ui,1);
$t1 .= qq|</td>\n<td class=r>|;
$t1 .= qq|<input type=textbox name=t-$i-$Ui->{id}-$Ui->{sp} class=textbox size=5 value=1>|;
}
else {
$Ui->{Sp} = $set::uop ? $Ui->{sp} * $Ui->{qn} : $Ui->{sp};
$t1 .= &decorate_item($Ui,2);
}
修正後
$t1 .= &decorate_item($Ui,1,1);
if ($set::mif{Xx}) {
$t1 .= qq|</td>\n<td class=r>|;
$t1 .= qq|<input type=textbox name=t-$i-$Ui->{id}-$Ui->{sp} class=textbox size=5 value=1>|;
}
library/capture.cgi: sub capture_after
修正前
$Ii->{qn} = 0;
修正後
$Ii->{qn} -= 1;
library/church.cgi: sub church_before
修正前
&header(CSS=>'sub');
修正後
&header(CSS=>'sub',JavaScript=>'OpenWindow');
追加
<tt>蘇生するには $V2 $set::mny 必要です。</tt><br>$set::but{OK} $set::but{CLOSE}</div>
<input type=button class=button onClick="OpenWindow('$set::cem_htm','cemetery',1024,768)" value="$set::lab{pt}墓地">
library/church.cgi: sub church_before
修正前
my ($V1,$V2);
修正後
my ($V1,$V2,$V3,$t1,$t2);
追加
$V2 = $set::rvm * $I->{lv};
$V3 = $set::ccu * (int($I->{lv} / $set::gde) + 1);
$t1 = "<input type=radio class=radio name=tp value=Ij> 怪我を治療する<br>\n" if $set::ccu;
$t2 = "<tt>怪我を治療するには $V3 $set::mny 必要です。</tt><br>\n" if $set::ccu;
追加
<input type=radio class=radio name=tp value=Cs checked> 呪いを解く<br>
$t1
<input type=radio class=radio name=tp value=Dd> キャラクターを蘇生する<br>
<br>
<div class=r><tt>呪いを解くには $V1 $set::mny 必要です。</tt><br>
$t2
<tt>蘇生するには $V2 $set::mny 必要です。</tt><br>$set::but{OK} $set::but{CLOSE}</div>
library/church.cgi: sub church_after
追加
if ($F{tp} eq 'Dd') {
&say("$set::cnd{'Dd'}[1]していません",'church_before') if $I->{da} ne 'Dd';
$V = $set::rvm * $I->{lv};
&M("$Ui->{Im}生還しました。");
&change_condition($I,'da');
&reload_data('revive',' ');
}
elsif ($F{tp} eq 'Ij') {
&say("負傷していません",'church_before') if !$I->{ij};
$V = $set::ccu * (int($I->{lv} / $set::gde) + 1);
&M("悲鳴をあげる程の荒療治によって$I->{Ij}が治りました。");
&change_status($I,'hy',-3,1);
&reload_data('hy');
&change_condition($I,'ij');
}
library/compose.cgi: sub compose
修正前
if ($I->{Sk}{Cu}) { $t2 .= qq|<option value="preparation=Cu">治療の準備をする</option>\n| }
if ($I->{Sk}{Ph}) { $t2 .= qq|<option value="drug=Ph">調剤する</option>\n| }
修正後
if ($I->{Sk}{Ph}) { $t2 .= qq|<option value="drug=Ph">調剤する</option>\n| }
if ($I->{Sk}{Cu}) { $t2 .= qq|<option value="preparation=Cu">治療の準備をする</option>\n| }
library/compose.cgi: sub compose
修正前
$t1 .= &decorate_item($Ii);
修正後
$t1 .= &decorate_item($Ii,'',1);
library/compose.cgi: sub compose
修正前
if ($I->{Sk}{By}) { $t2 .= qq|<option value="bread=By">パンを焼く</option>\n| }
if ($I->{Sk}{Sm}) { $t2 .= qq|<option value="smokedfood=Sm">燻製を作る</option>\n| }
library/compose.cgi: sub compose_before
修正前
next unless &creativity_check($I,$Ii);
$Ii->{gf} =~ s/tc=/T/;
$t1 .= qq|
library/compose.cgi: sub compose_after
追加
&M("$Ui->{Im}$Ui->{dt}{nm}を作成しました。");
&add_durability($Ui->{dt});
library/compose.cgi: sub compose_after
修正前
&change_status($I,'hy',-1,1);
修正後
&change_status($I,'hy',-$set::cph,1);
library/compose.cgi: sub creativity_check
追加 my ($K,$V,$T); 追加 ($S->{$K} < $V); $T = $V if $K eq 'tc'; 追加 return $T if $T; return 1;library/compose.cgi:
サブルーチンを追加
# Sub Add Durability #
sub add_durability {
my $Si = shift;
require "$set::dat_dir/durability.cgi";
return if $Si->{db} || !$DB{$Si->{cl}};
map { $Si->{Ql}{$_} = 1 } split(/,/,$Si->{ql});
$Si->{db} = $Si->{Ql}{Th} ? $DB{Th}:
$Si->{Ql}{Dh} && $Si->{cl} eq 'Sw' ? $DB{Ts}:
$DB{$Si->{cl}};
$Si->{db} = join('/',($Si->{db}) x 2);
}
library/consumption.cgi: sub consumption_check
追加
my $V = shift;
$V ||= 1;
削除
if (!$Si->{db}) {
$V ||= 1;
削除
elsif ($Si->{Ql}{Vs}) {
$V ||= 1;
移動
$Si->{nm} = $FI{$Si->{id}}{nm};
$Si->{cl} = $FI{$Si->{id}}{cl};
$Si->{id} = $FI{$Si->{id}}{id};
$Si->{im} = $FI{$Si->{id}}{im};
$Si->{bp} = $FI{$Si->{id}}{bp};
$Si->{db} = $FI{$Si->{id}}{db};
$Si->{id} = $FI{$Si->{id}}{id};
削除
$Si->{bp} = $FI{$Si->{id}}{bp};
修正前
$Si->{db} = $FI{$Si->{id}}{db};
修正後
$Si->{db} = 0;
修正前
# Case:装備中の物:ダイスにより判定 #
elsif ($Si->{eq}) {
if (&roll_dice($Si->{db}) == 1) {
&M("$Si->{nm}が壊れました。");
if ($Si->{Ql}{Rp}) {
$Si->{ql} .= ',Br';
&M("$Si->{nm}は修理が必要です。");
}
else {
&change_status($I,'bg',-$Si->{wt});
$Si->{qn} = 0;
}
$I->{$Si->{eq}} = '';
&reload_data($Si->{eq});
}
}
修正後
# Case:装備中の物:耐久力を1ずつ減らす #
elsif ($Si->{eq}) {
$Si->{db} -= $V;
if ($Si->{db} <= 0) {
&broken_item($I,$Si,1);
}
else {
&set_equipment($I,$Si);
}
}
削除
# Case:ダイスによって壊れるか判定する物 #
elsif (index($Si->{db},'D') >= 0) {
if (&roll_dice($Si->{db}) == 1) {
&M("$Si->{nm}が壊れました。");
&change_status($I,'bg',-$Si->{wt});
$Si->{qn}--;
}
}
修正前
# Case:耐久力が1ずつ減少する物 #
else {
$V ||= 1;
$Si->{db} -= $V;
if ($Si->{db} <= 0) {
&M("$Si->{nm}を使い切りました。");
&change_status($I,'bg',-$Si->{wt});
$Si->{qn}--;
}
}
修正後
# Case:耐久力が1ずつ減少する物 #
else {
$Si->{db} -= $V;
if ($Si->{db} <= 0) {
&broken_item($I,$Si,2);
}
}
library/contact.cgi: sub contact_before
修正前
$U->{Li} = &login_check($U,1) ? '○' : $U->{vp} ? '▲' : '●';
修正後
$U->{Li} = &login_check($U,1) ? '○':
$U->{rw} >= $set::sps ? '▼':
$U->{vp} ? '▲':
'●';
library/contact.cgi: sub contact_before
修正前
my $t1;
修正後
my ($t1,$t2,@L);
追加
&say("$I->{Pl}{nm}には誰もいません・・・。",'CLOSE') if !$#{$I->{Pp}};
@L = sort { $b->{Sk}{Cz} cmp $a->{Sk}{Cz} || $a->{jb} cmp $b->{jb} }
map { &get_user('U',$_,'unlocked') } @{$I->{Pp}};
修正前
foreach (@{$I->{Pp}}) {
next if $_ eq $I->{id};
$U = &get_user('A',$_,'unlocked');
next if !$U;
修正後
foreach $U (@L) {
next if $U->{id} eq $I->{id};
next if !$U;
追加
$t2 = $U->{Sk}{Cz} ? ' class=citizen' : '';
&condition_initial($U,'da');
追加
$t1 .= qq|<option value="$U->{id}"$t2>$U->{Li} $U->{Id}: $U->{nm}($U->{jb})【$U->{Da}{in}】 R:$U->{rt}</option>\n|;
b2.1用に修正したsub.cssを転送する
library/date.cgi:
サブルーチンを追加
# Get Day #
sub get_day {
my $V = shift;
my ($dy,$mt,$yr) = (localtime($V))[3,4,5];
$ENV{'TZ'} = "JST-9";
$yr += 1900;
return sprintf("%04d/%02d/%02d",$yr,$mt+1,$dy);
}
library/dungeon.cgi: dungeon_before
修正前
<div class=r><tt>$set::lab{vt}を $set::dvt 消費します。</tt></div>
修正後
<div class=r><tt>探索に$set::lab{vt}を $set::dvt 消費します。</tt></div>
<div class=r><tt>戦闘する度に$set::lab{vt}を $set::dfv 消費します。</tt></div>
library/dungeon.cgi: dungeon_fight
追加
my ($F,$i);
if ($I->{vt} < $set::dfv) {
&say("戦闘するだけの$set::lab{vt}が残っていません。<br>$DD{nm}を脱出しました・・・。",'CLOSE');
}
追加
&dungeon_data('set');
&change_status($I,'vt',-$set::dfv);
修正前
&reload_gage(['lf','hl','ap','hy'],'V');
修正後
&reload_gage([@set::gva],'V');
library/dungeon.cgi: enter_check
修正前
my ($V,$W,$X);
修正後
my ($e,$E,$F);
追加
return if !$DD{Li};
return if $I->{Sk}{Nv}; # 暗視スキル
修正前
# 灯りチェック #
foreach $V ('rh','sb','lh') {
&get_equipment($I,$V);
$X = ucfirst $V;
$W = 1 if $I->{$X}{ql}{Li};
}
修正後
# 灯りチェック #
foreach $e ('rh','sb','lh') {
&get_equipment($I,$e);
$E = ucfirst $e;
$F = 1 if $I->{$E}{ql}{Li};
}
削除
$W = 1 if $I->{Sk}{Nv}; # 暗視スキル
修正前
&say("明かりを灯すアイテムを装備していません",'CLOSE') if !$W;
修正後
&say("明かりを灯すアイテムを装備していません",'CLOSE') if !$F;
修正前
&break_check($I,'lh');
&set_item($I);
修正後
&set_item($I) if &break_check($I,'lh');
library/dye.cgi: sub dye
置換 全ての$set::wvtを$set::pvtに置換する。library/equip.cgi: sub equip_check
削除
&get_equipment($I,$E) if $E eq 'rh';
修正前
# 両手用装備チェック
elsif ($T eq 'D' && $I->{$E}) {
修正後
# 両手用装備チェック
elsif ($T eq 'D' && ($I->{rh} || $I->{sb})) {
修正前
# 両手用装備をしている
if ($I->{Rh}{ql}{Dh}) { return 1 }
修正後
&get_equipment($I,'rh');
&get_equipment($I,'sb');
# 両手用装備をしている(右手)
if ($I->{Rh}{ql}{Dh}) { return 1 }
# 両手用装備をしている(補助)
elsif ($I->{Sb}{ql}{Dh}) { return 1 }
library/equip.cgi: sub fitting_room
修正前
$I->{$E} = "$Si->{nm}/$Si->{cl}/$Si->{ql}/$Si->{ef}/$Si->{db}/$Si->{im}/$Si->{gd}/$Si->{pl}/$Si->{cr}";
$Si->{sp} = $Si->{rs} = '';
$Si->{eq} = $E;
修正後
$Si->{sp} = $Si->{rs} = '';
$Si->{eq} = $E;
&set_equipment($I,$Si);
library/feed.cgi: sub feed_after
修正前
$Ip = $I->{Pt}->[$F{pt}];
修正後
$Ip = $I->{Pt}[$F{pt}];
追加
&change_status($Ip,'lf',$Ii->{Ef},1,$Ip->{lx}) if $Ip->{lf} < $Ip->{lx};
&change_status($I,'bg',-($Ii->{wt} * $Ii->{qn}));
追加
&set_pet($I);
&set_user($I);
library/feed.cgi: sub favorite_check
追加
return 1 if $Si->{Ql}{Ad};
foreach (@{$Sp->{Fd}}) {
library/fight.cgi: sub fight_player
修正前
&partner('',"<img src=$set::mim_dir/envGd.gif><br><br>$I->{Pl}{nm}での戦闘は禁止されています") if $I->{Pl}{ev}{Gd} && !$U->{vp};
修正後
&partner('',"<img src=$set::mim_dir/envGd.gif><br><br>$I->{Pl}{nm}での戦闘は禁止されています") if $I->{Pl}{ev}{Gd} && !$U->{vp} && $U->{rw} < $set::sps;
修正前
&change_status($U,'vp',-1) if $I->{Pl}{ev}{Gd};
修正後
&change_status($U,'vp',-1) if $I->{Pl}{ev}{Gd} && $U->{rw} < $set::sps;
追加
# 装備品の耐久力減少 #
&destruction_check($I);
&destruction_check($U);
# 荷物チェック + 奪取 #
library/fight.cgi: sub fight_creature
移動
$I->{Nm} = $I->{nm};
$U->{Nm} = $U->{nm};
&prepare_companion($I);
&protector_check($I);
&dex_bonus;
$I->{Nm} = $I->{nm};
$U->{Nm} = $U->{nm};
追加
&destruction_check($I);
&baggage_check($I) if ref $I->{BI};
追加
&set_pet($I) if $I->{Co};
return $I->{da} eq 'Dd' ? 0 : 1;
library/fight.cgi: sub fight_creature
削除
&M("$set::lab{lf}が低下している為、探索を中断しました。") && return 0 if $I->{lf} <= 10 && !$F{dg};
library/fight.cgi: sub fight_creature
修正前
&experience($I,$U->{ex} - ($I->{lv} - 1) * 2);
修正後
&experience($I,$U->{ex} - ($I->{lv} - $U->{lv}) * 5);
library/fight.cgi: sub first_battle
修正前
&throw_weapon($A,$D,"は$A->{Rh}{nm}を投げた!",1);
修正後
&concrete_battle($A,$D,"は$A->{Rh}{nm}を投げた!",2);
library/fight.cgi: sub concrete_battle
追加
$ADM += &roll_dice($A->{WP}) + $A->{AB};
$ADM += $A->{tc} if $F == 2;
&M("$A->{Nm}$M",1);
追加
$ADM < 1 && $F == 2 ? "$D->{Nm}は素早く身をかわした。":
$ADM < 1 ? "$D->{Nm}は攻撃を回避した!":
library/fight.cgi: sub concrete_battle
追加
$A->{Mg} = [split(/,/,$A->{mg})] if !@{$A->{Mg}};
$A->{MG} = shift @{$A->{Mg}};
library/fight.cgi: sub concrete_battle
削除
$ADM += $A->{tc} if $F == 2;
library/fight.cgi: sub concrete_battle
削除
&destruction_check($D,'lg');
削除
&destruction_check($D,'lh') if $D->{SH};
&destruction_check($D,'bd') if !$MSG;
&destruction_check($A,'rh') if $ADM >= $set::wbd;
library/fight.cgi: sub concrete_battle
修正前
$ADM = $D->{Me}{dt} ? int($D->{lf} / 2):
修正後
$ADM = $A->{Me}{hl} ? 0:
$D->{Me}{dt} ? int($D->{lf} / 2):
修正前
$M = $D->{Me}{dt} ? "$D->{Nm}の$set::lab{lf}が半減した!":
修正後
$M = $A->{Me}{hl} ? "":
$D->{Me}{dt} ? "$D->{Nm}の$set::lab{lf}が半減した!":
修正前
&M($M);
修正後
&M($M) if $M;
library/fight.cgi: sub weapon_check
修正前
if (($S->{Sk}{Nj} || $S->{Sk}{Jg}) && $S->{Rh}{cl} eq 'Th') { $S->{AB} = $set::skb }
修正後
if (($S->{Sk}{Nj} || $S->{Sk}{Jg}) && $S->{Rh}{ql} eq 'Th') { $S->{AB} = $set::skb }
library/fight.cgi: sub magic_effect
追加
&M("$A->{Nm}のLIFが$A->{in}回復した!");
$A->{Me}{hl} = 1;
library/fight.cgi: sub winner
追加
$O->{Nm} = $O->{nm};
$S->{Rw} = int(($S->{rt} - $O->{rt}) / 4);
if ($S->{Rw} > 0) {
&change_status($S,'rw',$S->{Rw});
&reload_data('rw') if $S->{id} eq $F{id};
}
library/fight.cgi: sub fight_money
修正前
$V = $V * (1 + ($O->{lv} - 1) / 1.5);
修正後
$V = $V * (1 + ($O->{lv} - 1) / 10);
library/fight.cgi: sub helmet_roll
削除
&destruction_check($D,'hd');
library/fight.cgi: sub destruction_check
丸ごと差し替え
sub destruction_check {
my $S = shift;
my ($e,$E);
&get_equipment($S,'rh'); # 右手装備を戻す
return if $S->{Op}{Ub};
foreach $e (keys %set::eqp) {
$E = ucfirst($e);
next if $S->{$e} eq '';
next if $e eq 'sb' && $S->{WO} < 5;
next if $e eq 'rh' && $S->{$E}{nm} eq '';
next if $e eq 'lh' && $S->{$E}{cl} ne 'Sh';
next if $e eq 'hd' && $S->{$E}{cl} ne 'Hm';
next if $e eq 'bd' && $S->{$E}{cl} ne 'Ar';
next if $e eq 'fg' && $S->{$E}{cl} ne 'Rg';
next if $e eq 'nk' && $S->{$E}{cl} ne 'Ac';
if (--$S->{$E}{db} <= 0) {
&M("$S->{Nm}の$S->{$E}{nm}が壊れた!");
$S->{BI}{$e} = 1;
}
else {
&set_equipment($S,$e);
}
}
}
library/fight.cgi: sub knock_weapon
修正前
return if $D->{Op}{Nk};
修正後
return if $D->{Op}{Nk} && $D->{Op}{gd} * $set::gde >= $D->{lv};
library/fight.cgi: sub knock_weapon
修正前
$A->{bonus} += $A->{Ak}{Sd} ? $set::sSd : 0;
修正後
$A->{bonus} += $A->{Sk}{Sd} ? $set::sSd : 0;
library/fight.cgi: sub baggage_check
丸ごと差し替え
# Sub Baggage Check #
sub baggage_check {
my $S = shift;
my $Si;
my $i;
$I->{ST} &&= @{$S->{Bg}};
$I->{ST} &&= &roll_dice($I->{ST});
if ($S->{SI}) {
push (@{$S->{Bg}},$S->{SI});
&change_status($S,'bg',$S->{SI}{wt});
&M("$S->{Nm}は$S->{SI}{nm}を盗んだ!<br>");
}
foreach $Si (@{$S->{Bg}}) {
$i++;
next if !$Si->{eq} && $I->{ST} != $i;
# 盗む対象が盗難防止になっておらず、壊れていない場合
if ($I->{ST} == $i && !$Si->{Ql}{Sc} && !$S->{BI}{$Si->{eq}}) {
# アイテムを盗む
$S->{$Si->{eq}} = '';
$Si->{eq} = '';
$I->{SI} = {%$Si};
&change_status($S,'bg',-$Si->{wt});
&change_status($S,'hy',-$set::shy);
$I->{ST} = $Si->{qn} = 0;
next;
}
# 壊れた装備品
&broken_item($S,$Si) if $S->{BI}{$Si->{eq}};
}
}
library/fight.cgi: sub throw_weapon
削除
サブルーチンを丸ごと削除
library/find.cgi: sub found
追加
last if $S->{vt} < $V1;
&M("$set::lab{lf}が低下している為、探索を中断しました。") && last if $S->{lf} <= 10 && $V5;
library/forest.cgi: sub forest
修正前
<div class=r><tt>$set::lab{vt}を $set::wvt 消費します。</tt></div>
修正後
<div class=r><tt>採取は$set::lab{vt}を $set::pvt 消費します。</tt></div>
<div class=r><tt>それ以外は$set::lab{vt}を $set::wvt 消費します。</tt></div>
library/friends.cgi: sub friends_before
修正前
foreach (split(/,/,$I->{fr})) {
修正後
foreach (@FR) {
library/friends.cgi: sub friends_after
追加
@FR = map { $_->[0] }
grep { $F{ud} ne $_->[1] }
grep { $F{$_->[1]} }
map { [$_,(split(/\//))] } @FR;
library/look.cgi: sub look
修正前
if ($Ii->{ef} && $Ii->{cl} !~ /(Gd|Gm|Tp)/) {
if ($Ii->{cl} eq 'Fd') {
&nutritive_value($Ii);
}
else {
&get_effect($Ii);
}
&M("効果は$Ii->{Ef}です。",1);
修正後
if ($Ii->{ef} && $Ii->{cl} !~ /(Gd|Gm|Tp|Tm)/) {
$Ii->{cl} eq 'Fd' ? &nutritive_value($Ii):
$Ii->{cl} eq 'Op' ? &option_info($Ii):
&get_effect($Ii);
&M("効果は$Ii->{Ef}です。",1) if $Ii->{cl} ne 'Op';
library/look.cgi:
サブルーチンを追加
# Sub Option Info #
sub option_info {
my $Si = shift;
my ($K,$V);
foreach (split(/,/,$Si->{ef})) {
($K,$V) = split(/=/);
$Si->{Ef} .= $OPT{$K};
}
&M($Si->{Ef},1);
}
library/lumberjacking.cgi: sub lumberjacking
追加
my $Y;
修正前
&say("伐採道具を装備していません",'forest') if !$I->{Rh}{ql}{Lj} && !$I->{Sb}{ql}{Lj};
修正後
$Y = $I->{Rh}{ql}{Lj} ? 'Rh' : $I->{Sb}{ql}{Lj} ? 'Sb' : 0;
&say("伐採道具を装備していません",'forest') if !$Y;
&say("$I->{$Y}{Im}$I->{$Y}{nm}の耐久力は残り$I->{$Y}{db}です",'forest') if $I->{$Y}{db} < $F{do};
修正前
$I->{Rh}{ql}{Lj} ? &break_check($I,'rh') : &break_check($I,'sb');
修正後
&break_check($I,'rh',$F{do},'Lj');
library/main.cgi: sub main
追加
<option value="backup_before">データのバックアップ</option>
<option value="jobchange_before">転職する</option>
library/main.cgi: sub oceanliner_monitor
修正前
foreach $D (split(/<>/,$V)) {
修正後
foreach $D (split(/,/,$V)) {
library/map.cgi: sub map
修正前
push(@{$V{$U->{pl}}},[$U->{id},$U->{nm},$U->{sx}]) if $Z eq 'on' || $Z eq 'only' && grep { (split /\//)[0] eq $U->{id} } @FR;
修正後
push(@{$V{$U->{pl}}},[$U->{id},$U->{nm},$U->{sx}.'f']) if $Z eq 'on' || $Z eq 'only' && grep { (split /\//)[0] eq $U->{id} } @FR;
library/market.cgi: sub market
修正前
my $t1;
修正後
my ($t1,$t2);
追加
if ($I->{Pl}{bm}) {
$t1 = qq|<input type=radio name=md class=radio value="blackmarket_before">\n|;
$t1 .= qq|闇市で買物をする<br>\n|;
$t1 .= qq|<input type=radio name=md class=radio value="sell_before">\n|;
$t1 .= qq|闇市でアイテムを売る<br>\n|;
}
if (!$I->{Pl}{nc}) {
$t2 = qq|<div class=words><input type=checkbox name=cu class=radio> 職人街で買物をする</div>\n|;
}
追加
$t2
$t1
library/mine.cgi: sub mine_after
修正前
my $V;
修正後
my ($V,$Y);
修正前
&say("採掘できる道具を装備していません",'CLOSE') if !$I->{Rh}{ql}{Mn} && !$I->{Sb}{ql}{Mn};
&say("明かりを灯すアイテムを装備していません",'CLOSE') if !$I->{Lh}{ql}{Li};
修正後
$Y = $I->{Rh}{ql}{Mn} ? 'Rh' : $I->{Sb}{ql}{Mn} ? 'Sb' : 0;
&say("採掘できる道具を装備していません",'CLOSE') if !$Y;
&say("$I->{$Y}{Im}$I->{$Y}{nm}の耐久力は残り$I->{$Y}{db}です",'mine_before') if $I->{$Y}{db} < $F{do};
&say("明かりを灯すアイテムを装備していません",'CLOSE') if !$I->{Lh}{ql}{Li};
&say("$I->{Lh}{Im}$I->{Lh}{nm}の耐久力は残り$I->{Lh}{db}です",'mine_before') if $I->{Lh}{db} < $F{do};
修正前
$I->{Rh}{ql}{Mn} ? &break_check($I,'rh') : &break_check($I,'sb');
&break_check($I,'lh');
修正後
&break_check($I,'rh',$F{do},'Mn');
&break_check($I,'lh',$F{do});
library/new.cgi: sub new_after
修正前
$I->{pc} = 2; # パック技能
修正後
$I->{pc} = $set::bpc; # パック技能
修正前
chmod($set::pms,"$set::Udt_dir/$I->{id}.cgi");
修正後
index($I->{id},'_') ? chmod($set::pms,"$set::Udt_dir/$I->{id}.cgi"):
chmod($set::pms,"$set::npc_dir/$I->{id}.cgi");
library/option.cgi: sub option_before
追加
next if $Ii->{cl} ne 'Fd' && $Ii->{cl} ne 'Op';
next if $Ii->{cl} eq 'Fd' && $Ii->{Ql}{Rf} && !$I->{Sk}{Wb};
next if $Ii->{cl} eq 'Fd' && $Ii->{Ql}{Fe} && !$I->{Sk}{Wb};
next if $Ii->{cl} eq 'Op' && $Ii->{gd} * $set::gde < $I->{lv};
library/pet.cgi: sub pet
修正前
# 腹の具合が0なら死亡
if (!$Ip->{hg}) { $Ip->{ls} = 0; last }
修正後
# 腹の具合が0なら死亡
if (!$Ip->{hg}) { $Ip->{hx} = 0; last }
修正前
$Ip->{hg} = 0;
$Ip->{ls} = -1;
$saveflag = 1;
$confidence = $stomach = $Ip->{ls};
修正後
$Ip->{hg} = 0;
$Ip->{hx} = -1;
$saveflag = 1;
$confidence = $stomach = $Ip->{hx};
修正前
$age = '死後' . &get_passage($Ip->{up},$set::pyt) . '年';
$confidence = $stomach = $Ip->{ls};
修正後
$age = '死後' . &get_passage($Ip->{up},$set::pyt) . '年';
$confidence = $stomach = $Ip->{hx};
追加
<option value="companion">冒険に連れて行く</option>
<option value="burial_before">埋葬する</option>
library/playerlist.cgi: sub playerlist
修正前
$U->{Li} = &login_check($U,1) ? '○' : $U->{vp} ? '▲' : '●';
修正後
$U->{Li} = &login_check($U,1) ? '○':
$U->{rw} >= $set::sps ? '▼':
$U->{vp} ? '▲':
'●';
library/playerlist.cgi: sub playerlist
修正前
my ($t1,$t2,@T);
修正後
my ($t1,$t2,$F,@T);
追加
&get_resident($I);
$F = $set::uop <=> $set::mif{Xx};
追加
$t2 .= "=$Ui->{sp}$set::mny" if $F == 1 && $Ui->{qn} > 1;
$Ui->{sp} *= $Ui->{qn} if $F == 1 && $Ui->{qn} > 1;
$t2 = "[$t2=$Ui->{sp}$set::mny]" if $set::mif{Xx};
library/playerlist.cgi: sub sales_information
追加 my (@N,@L,@T,$T); 追加 @N = &get_allusersID(1); @L = &get_allusersID(); 追加 foreach (@N,@L) { 修正前 $Ui->{Id} = $U->{id}; 修正後 $Ui->{Id} = index($U->{id},'_') ? $U->{id} : 'NPC';library/playerlist.cgi: sub sales_information
修正前
my ($t1,$t2);
修正後
my ($t1,$t2,$t3,$F);
追加
$F = $set::uop <=> $set::mif{Xx};
foreach $T (@T) {
修正前
$T->{sp} = $set::mif{Xx} && !$set::uop ? int($T->{sp} / $T->{qn}) :
!$set::mif{Xx} && $set::uop ? $T->{sp} * $T->{qn} : $T->{sp};
修正後
$T->{Sp} = $T->{sp} * $T->{qn} if $F == 1;
$T->{sp} = int($T->{sp} / $T->{qn}) if $F == -1;
修正前
$t1 .= "<tr><td nowrap>$T->{nm}</td><td>$T->{gd}</td><td nowrap align=right>$T->{sp} $set::mny</td><td nowrap>$T->{Id}</td><td nowrap>$T->{Nm}</td><td width=100%>$T->{Pl}</td></tr>\n";<tt>修正後</tt>
修正後
$t3 = "<td nowrap align=right>$T->{Sp} $set::mny</td>" if $F == 1;
$t1 .= "<tr><td nowrap>$T->{nm}</td><td>$T->{gd}</td><td nowrap align=right>$T->{sp} $set::mny</td>$t3<td nowrap>$T->{Id}</td><td nowrap>$T->{Nm}</td><td width=100%>$T->{Pl}</td></tr>\n";
追加
$t3 = $F == 1 ? "<th nowrap>単価</th>" : '';
$t2 = &header(CSS=>'list',GetTag=>1);
修正前
<tr><th nowrap>商品名</th><th>G</th><th nowrap>金額</th><th nowrap>ID</th><th nowrap>販売者</th><th width=100%>所在地</th></tr>
修正後
<tr><th nowrap>商品名</th><th>G</th>$t3<th nowrap>金額</th><th nowrap>ID</th><th nowrap>販売者</th><th width=100%>所在地</th></tr>
library/price.cgi: sub price_before
追加
&used_item($Ii);
$Ii->{Sp} = $Ii->{bp} + $set::lip;
追加
&used_item($Ii);
$Ii->{Sp} = $Ii->{bp} * $Ii->{qn} + $set::lip;
library/price.cgi: sub price_after
修正前
$Ii->{Bp} = $set::uop ? $Ii->{bp} : $Ii->{bp} * $Ii->{qn};
修正後
$Ii->{Bp} = $Ii->{bp};
&used_item($Ii,'Bp');
$Ii->{Bp} = $set::uop ? $Ii->{Bp} : $Ii->{Bp} * $Ii->{qn};
library/purchase.cgi: sub purchase_item
追加
if ($U->{Sk}{Vm}) {
$Ui->{sp} ||= $Ui->{bp};
$Ui->{sp} *= $Ui->{qn} if !$set::uop;
$Ui->{sp} += $set::lip;
}
$keychck = $T == 2 ? "$i-$Ui->{id}-$Ui->{sp}" : "$Ui->{id}_$Ui->{gd}";
library/purchase.cgi: sub purchase_pet
修正前
if ($F{$keytext} =~ /\D/) {
$T == 2 && &M("$Ui->{nm}:数値以外は使用出来ません") && next;
&say("$Ui->{nm}:数値以外は使用出来ません",$R);
}
修正後
if ($F{$keytext} =~ /\D/) {
$T == 2 && &M("$Up->{nm}:数値以外は使用出来ません") && next;
&say("$Up->{nm}:数値以外は使用出来ません",$R);
}
library/release.cgi: sub release
修正前
if (!$Ip->{hg}) { &M("$Ip->{Nm}の死骸を山に捨てました。") }
else { &M("$Ip->{Nm}を野に放しました。") }
修正後
if (!$Ip->{hg}) {
&M("$Ip->{Nm}の死骸を山に捨てました。");
# 屠殺も捕獲も持っていない
if (!$I->{Sk}{Bc} && !$I->{Sk}{Cc}) {
&change_status($I,'hy',-($Ip->{ls} * 2),1);
&reload_gage('hy','V');
}
}
else { &M("$Ip->{Nm}を野に放しました。") }
修正前
&say($I->{M},'pet');
修正後
&inner_HTML;
&say($I->{M},'pet','Reload');
library/river.cgi: sub river
修正前
elsif ($Ii->{cl} eq 'Ev' || $Ii->{cl} eq 'Fv') {
修正後
elsif ($Ii->{Ql}{Vs}) {
library/sell.cgi: sub sell_before
追加
&used_item($Ii);
$Ii->{Sp} = $Ii->{bp} * $Ii->{qn};
library/sell.cgi: sub sell_after
追加
next if !$F{$i};
&used_item($Ii);
library/sell.cgi: sub sell_after
修正前
if (&item_class_check($Ii) ne 'M') {}
修正後
if ($Ii->{Ql}{Dk} || &item_class_check($Ii) ne 'M') {}
library/shopping.cgi:
修正前
require "$set::dat_dir/market_item_catalog.cgi";
require "$set::itm_dir/market_sale_item.cgi";
修正後
if ($F{cu}) {
require "$set::dat_dir/craftunion_item_catalog.cgi";
require "$set::itm_dir/craftunion_sale_item.cgi";
}
else {
require "$set::dat_dir/market_item_catalog.cgi";
require "$set::itm_dir/market_sale_item.cgi";
}
library/shopping.cgi: sub shopping_before
追加
&spot_check($I,'Mk');
$IC{$I->{pl}} = $IC{all} if exists $IC{all};
$I->{Sp}{Mk}{nm} = '職人街' if $F{cu};
追加
<input type=hidden name=ps value="$F{ps}">
<input type=hidden name=cu value="$F{cu}">
library/shopping.cgi: sub shopping_after
追加
&set_code;
$IC{$I->{pl}} = $IC{all} if exists $IC{all};
修正前
&say($I->{M},'shopping_before','Reload');
修正後
&say($I->{M},'shopping_before','Reload','cu');
library/top.cgi: sub top
修正前
my $t1;
修正後
my ($t1,$t2);
追加
$t1 = &login_players if $set::now;
$t2 = $set::rcv * 1000 / 60 / 60;
修正前
<td width=50%>
修正後
<td width=25%>
修正前
<div class=words>
<a class=back href=$set::htm_dir/manual/ target=_blank>マニュアル</a><br>
<a class=back href=$set::htm_dir/statistics.html target=_blank>参加者の統計</a>
</div>
</td>
<td>
修正後
</td>
<td width=25%>
<div class=label>設定</div>
<div class=words>
<span class=monospace>
最大人数:$set::mxp人<br>
自動削除:$set::ddy日<br>
自然蘇生:$set::rvv時間<br>
$set::lab{vt} 回復:$t2時間/MAX<br>
$set::lab{hl} 減少:$set::lgh/LOGIN
</span>
</div>
<br>
<div class=label>リンク</div>
<div class=words>
<a class=back href=$set::rtn>ホーム</a><br>
<a class=back href=$set::htm_dir/manual/ target=_blank>マニュアル</a><br>
<a class=back href=$set::htm_dir/statistics.html target=_blank>参加者の統計</a>
</div>
</td>
<td rowspan=2>
library/use.cgi: sub use
追加
elsif ($Ii->{cl} eq 'Tm') { &unearth_treasure($I,$Ii) }
elsif ($Ii->{cl} eq 'Md') { &medicine($I,$Ii) }
library/use.cgi: sub type_expendable
追加
if ($Si->{cp}) { &compulsory_check($I,$Si,'消費') or return }
if ($Si->{ql} =~ /R\d/ && !&fresh_check($Si)) {
library/water.cgi: sub water
修正前
$I->{Bg}[$F{wt}]{db} = $FI{$FI{$Ii->{id}}{id}}{db};
修正後
$Ii->{db} = $FI{$FI{$Ii->{id}}{id}}{db};
修正前
$V = $I->{Bg}[$F{wt}]{wt};
$I->{Bg}[$F{wt}] = $FI{$Ii->{id}};
$I->{Bg}[$F{wt}]{wt} = $V;
修正後
foreach ('cl','nm','im','db','id') {
$Ii->{$_} = $FI{$Ii->{id}}{$_};
}
set.cgi
修正 # 時間 Time ########################################## # $rcv = 9; # VITが0.1回復するのに必要な秒数 $rvv = 12; # 死亡回復に必要な時間 追加 # プレイヤーデータ設定 Player's Data ################# # $bpc = 2; # 初期パック技能 $fcp = 500; # イメージ画像変更料金 $jcm = 500; # 転職料金 $jcr = 0; # 転職した時にLEVELと経験値をリセットする(yes=1,no=0) $jcl = 3; # 転職可能な最高LEVEL 追加 # ペット Pet ######################################### # $pcx = 100; # ペット墓地最大登録数 修正 # 手紙 Mail ########################################## # $mmn = 2; # 郵便料金(近) $mmf = 5; # 郵便料金(遠) 修正 # 森 Forest ########################################## # $wvt = 5; # 森での活動で消費するVIT(狩り・伐採) 追加 # 森 Forest ########################################## # $pvt = 3; # 森での活動で消費するVIT(採取) 追加 # 教会 Church ######################################## # $ccu = 200; # 教会での治療費(n * Grade) 使用しない場合n=0 修正 [Missing Link版仕様] # 市場 Market ######################################## # %mpc = (Mk=>1,Fm=>1, # 市場,農場,闇市,対人での購入でパックスキルを超えてのパックを許可する(yes=1,no=0) Bm=>1,Xx=>1); %mif = (Mk=>1,Fm=>1, # 市場,農場,闇市,対人での購入で購入個数を指定出来るようにする(yes=1,no=0) Bm=>1,Xx=>0); 追加 # ダンジョン Dungeon ################################# # $dfv = 3; # ダンジョンの戦闘で消費するVIT 修正 # 作成 Compose ####################################### # 追加 # 作成 Compose ####################################### # $cph = 10; # 作成失敗時のHAP低下値 追加 # 戦闘 Fight ######################################### # $elt = 24; # 戦闘相手の履歴にあってもn時間経過していれば戦闘可能にする(yes=時間,no=0) 修正 # 戦闘 Fight ######################################### # $skb = 2; # 武器スキルによる攻撃力ボーナス $fam = 4; # 攻撃者戦闘金制度{yes=n倍,no=0} $fdm = 4; # 迎撃者戦闘金制度{yes=n倍,no=0} $fbg = 1; # 勝敗に関係なく双方とも戦闘金を受け取る(yes=1,no=0) $lhy = 5; # 敗戦時のHAP低下値 $dhy = 25; # 死亡時のHAP低下値 削除 # 戦闘 Fight ######################################### # $far = 4; # 自動で賞金首に懸賞金が付くようにする(yes=金額,no=0) $wbd = 7; # ダメージn以上で武器が壊れるかチェックする 修正 # グレードデータ Grade Data ############################## # @grd = (0,0,1,2,3,4,5,6,7); 修正 # プラスデータ Plus Data ############################## # @pls = (0,1,2,3,4,5,6,7,8,9); 修正 # ラベルデータ Label Data ############################ # 'wm' => '戦闘金', 追加 # ラベルデータ Label Data ############################ # 'lb' => 'レベルアップボーナス', 追加 # パス Path ########################################## # $cem_htm = './cemetery.html'; # cemetery.html 追加 # パス Path ########################################## # $mtn = 0; # メンテナンス中にする(yes=1,no=0)sos3.cgi
修正
$version = 'b2.1';
追加
require "$set::dat_dir/skill.cgi";
if ($set::mtn) { &error('ただいまメンテナンス中につきしばらくお待ちください。') }
ダミー用のhtmlファイルを追加
cemetery.htmlメインファイルの差し替え
master.cgi sos3.cgi set.cgijavascriptファイルの差し替え
javascript/GetCookie.js javascript/MapInformation.js javascript/MapProgram.js javascript/Reload.jsCSSファイルの差し替え
sub.cssマニュアルファイルの差し替え
manual/animal.html manual/armor.html manual/item01.html manual/item02.html manual/item03.html manual/job.html manual/menu.html manual/skill.html manual/status.html manual/weapon.htmlライブラリファイルの追加
library/bruial.cgi library/jobchange.cgi library/purchase.cgiデータファイルの追加
data/craftunion_item_catalog.cgi data/durability.cgi data/pet_cemetery.cgi item/craftunion_sale_item.cgi item/monster_isl.cgi item/smokedfood.cgi place/isl.cgiデータファイルの差し替え
data/classchange.cgi data/find_monster_catalog.cgi data/farm_livestock_catalog.cgi data/forest_berry_catalog.cgi data/itemdata.cgi data/itemdictionary.cgi data/market_item_catalog.cgi data/place.cgi data/sort.cgi item/arms.cgi item/bread.cgi item/clothes.cgi item/crops.cgi item/dish_other.cgi item/dish_sandwich.cgi item/dish_soup.cgi item/dish_sweets.cgi item/drug.cgi item/farm_sale_item.cgi item/farm_sale_livestock.cgi item/forest_berry.cgi item/leathercraft.cgi item/market_sale_item.cgi item/monster_gho.cgi item/preparation.cgi item/product.cgi item/roastedfood.cgi item/vessel.cgi item/woodwork.cgiメイン画像の追加
mainimage/mf.gif mainimage/place16.gif mainimage/wf.gifアイテム画像の追加
itemimage/abrasive.gif itemimage/acerola.gif itemimage/brokenarmor.gif itemimage/cat.gif itemimage/charcoal.gif itemimage/ham.gif itemimage/mask.gif itemimage/resin.gif itemimage/turtleback.gif itemimage/turtlearmor.gif itemimage/turtleboots.gif itemimage/turtlehelmet.gif itemimage/waterbottle.gif itemimage/watertank_empty.gif itemimage/watertank_full.gif itemimage/whetstone.gifアイテム画像名の変更
itemimage/basterdsword.gif → itemimage/bastardsword.gif itemimage/kniteshield.gif → itemimage/knightsword.gifパーミッション
data/pet_cemetery.cgi → 606 (もしくは600か666) place/isl.cgi → 606 (もしくは600か666) sos3.cgi → 705 (もしくは700か755) master.cgi → 705 (もしくは700か755) その他のcgiファイルは604 (もしくは644) 画像とhtmlとcssとjsは変更不要
Copyright 2000-2007 Missing Link All Rights Reserved.