私的メモ帳。改造的な意味で。注意:ぐちゃぐちゃ。
といっても、初歩的な事なので「改造上級者」とかの方には意味ないと思う。
改造初心者だからこそ、タメになるんじゃないかって。
◆ルイーダの酒場にHP、MP回復量、福引券を表示させる。
既出かもしれない。けど、書いて置く。
自分で忘れないように。
まず、bar.cgiの@ちゅうもんに
my $p = qq|<table class="table1"><tr><th>名前</th><th>値段</th><tr>|;
に
my $p = qq|<table class="table1"><tr><th>名前</th><th>値段</th><th>HP回復量</th><th>MP回復量</th><th>福引券</th><tr>|;
を上書きしてぶち込む。
次に
$p .= qq|<tr onclick="text_set('@ちゅうもん>$foods[$i][0] ')"><td>$foods[$i][0]</td><td align="right">$foods[$i][1] G</td></tr>|;
に
$p .= qq|<tr onclick="text_set('@ちゅうもん>$foods[$i][0] ')"><td>$foods[$i][0]</td><td align="right">$foods[$i][1] G</td><td align="right">$foods[$i][2]</td><td align="right">$foods[$i][3]</td><td align="right">$foods[$i][4]</tr>|;
を上書きしてぶち込む。
これでおk。
◆スキルにランダムでセリフ表示。
[30, 0, '創符「ペインフロー」', sub{my @words = (qw/てすと テスト てすつっ てす/); my $word = $words[int(rand(@words))]; { $com .= qq|<span class="heal">$m「$word」</span>|; }
変えるところは(qw/てすと テスト てすつっ てす/);と$words[int(rand(@words))];だけでいい。
◆想起「テリブルスーヴニール」
パルプンテの応用って訳でもないけど、とりあえずメモに。
以下をサブルーチンにぶち込む。
#=================================================
# 想起「テリブルスーヴニール」
#=================================================
sub _satori {
$com .= qq|<br /><span style="color:#33CC33">$m「さあ、心に武器を持って!自分の心象と戦うが良いわ!」</span><br />|;
if (rand(4)<1) {
$com .= qq|<br /><font color=="#FF00FF">$m「貴方が動かないのなら私が動く」</font><br />|;
$com .= qq|<font size="2"><span class="die">火符</font></span><br />|;
&_damages($ms{$m}{at} * 24, '魔', 1);
$com .= qq|<br /><font size="2"><font color=="#87CEFA">水符</font></font><br />|;
&_heals(3000,'魔');
&_mp_h($m , 450, '魔');
$com .= qq|<br /><font size="2"><font color=="#9ACD32">木符</font></font><br />|;
for my $k (qw/at df ag/) { &_st_ups( 0.06, '魔', $k);
}
$com .= qq|<br /><font size="2"><span class="tenshon">金符</font></span><br />|;
my($y) = &_check_party(shift, '魔反撃', '魔');
return
if !$y; $ms{$y}{tmp} = '魔反撃';
$com.=qq|<span class="tmp">$yは優しい光に包まれた!</span>|;
$com .= qq|<br /><span class="heal"><font size="4">$m「とっておきの魔法。見せてあげるわ!」</span></font><br />|;
$com .= qq|<font size="2"><span class="st_down">土符</font></span><br />|;
for my $i (1..25) { last if $ms{$m}{hp} <= 0; &_damage(undef, $ms{$m}{at} * 35, '魔', 1);
}
}
elsif (rand(4)<1) {
$com .= qq|<br /><span style="color:#33CC33">$m「組織に属するってのは自分の意思だけでは動けなくなるって事よ。」</span><br />|;
for my $i (1..10) { last if $ms{$m}{hp} <= 0; &_damage(undef, $ms{$m}{ag} * 25000, '魔', 1);}
$com .= qq|<br /><span style="color:#FFFF00">$m「まじめに戦った事って殆ど無かったけど、考えてた以上の強さだったわ」</span><br />|;
$com .= qq|<br /><span style="color:#0099FF">$mの素早さが加速する!</span><br />|;
for my $i (1..10) { last if $ms{$m}{hp} <= 0; &_damage(undef, $ms{$m}{ag} * 40000, '魔', 1);
}
}
elsif (rand(4)<1) {
$com .= qq|<br /><span class="die">$m「口だけの奴はここで死ぬ!しっかりと試させて貰うよ」</span><br /> |;
$com .= qq|<span class="tenshon">一歩!</span><br />|;
$ms{$m}{ten}=2;
$com .= qq|$mのテンションが <span class="tenshon">20%</span> になった!<br />|;
&_damage(undef, $ms{$m}{at} * 8, '無' ,1);
$com .= qq|<br /><font size="4"><span class="st_down">$m「許せるのは強い奴と勇気のある奴だけだ!」</font></span><br />|;
$com .= qq|<font size="5"><span class="tenshon">二歩!</font></span><br /> |;
$ms{$m}{ten}=3;
$com .= qq|$mのテンションが <span class="tenshon">50%</span> になった!<br /> |;
&_damage(undef, $ms{$m}{at} * 5, '無' ,1);
$com .= qq|<br /><font size="5"><span class="heal">$m「強い者を見ると力比べしたくなる性格が!」</font></span><br /> |;
$com .= qq|<font size="7"><span class="tenshon">三歩必殺!!!</font></span><br /> |;
for my $i (1..13) { last if $ms{$m}{hp} <= 0;
$ms{$m}{ten}=8;
$com .= qq|$mのテンションが <span class="tenshon">100%</span> になった!$mは<span class="tenshon">スーパーハイテンション</span>になった!<br /> |;
&_damage(undef, $ms{$m}{at} * 3, '魔', 1);
}
}
else {
$com .= qq|<br /><span style="color:#33CC33">$m「ふん、私には見える」</span><br />|;
$com .= qq|<br /><span style="color:#33CC33"> 心を読む第三の目が貴方の心象を映し出す!戦いの心象。それに貴方は苦しめられるといいわ」</span><br />|;
for my $i (1..20) { last if $ms{$m}{hp} <= 0;
&_damage(undef, $ms{$m}{at} * 60, '魔', 1);
}
}
}
次に
→ &_satori;
これをスキルの流れに追加。
ランダムでスキル発動。
マジでサクラエディタ使いやすいわー。
スキルおさらい:
4分の1で賢者の石
4分の1で無双風神
4分の1で三歩必殺
4分の1でテリヴルスーヴニール
を発動。
◆この@パで言う憑依機能。
まず適当に、HP・MP・AT・DF・AG・名前・アイコンに該当する変数を追加。
ここではいんぺりしゃぶる様においてある「モンスター使役」を元(?)としたので
変数は p_mhp p_mmp p_at p_df p_ag p_icon p_name
とする。
↑の変数を、コンフィグ・システムにそれぞれ追加。
次に、tama.cgi、tama_member.cgiを作成。空白のまま、logの中にぶち込む。
その後、tama.cgiに以下のものを追加。
#=================================================
#魂の境界
#=================================================
# 場所名
$this_title = '魂の境界';
# NPC名
$npc_name = '@タマ';
# ログに使うファイル(.cgi抜き)
$this_file = "$logdir/tama";
# 背景画像
$bgimg = "$bgimgdir/tama.gif";
@tama = (
#名前 必要魂 アイコン 職業的なのらしい。知らない。 召喚されるときの名前(@を消さないで)
['霊夢', 20 , 'chr/霊夢.gif', 164, '@霊夢', ],
);
#=================================================
# はなす言葉
#=================================================
@words = (
"此処は流れ着いた魂に、もう一度チャンスを与える場所だよ",
"魂は、あんたの助けになる、はずだね",
);
#=================================================
# 画面ヘッダー
#=================================================
sub header_html {
print qq|<div class="mes">【$this_title】 <b>$m{tama}</b>魂|;
print qq| </div>|;
}
#=================================================
# 追加アクション
#=================================================
push @actions, 'ひょうい';
$actions{'ひょうい'} = sub{ &tama };
if ($m{p_name}) {
push @actions, 'レベルアップ';
$actions{'レベルアップ'} = sub{ &lv };
}
#=================================================
# @魂
#=================================================
sub tama {
my $target = shift;
my $p = qq|<table class="table1"><tr><th>リスト</th><th>必要魂</th></tr>|;
for my $i (0 .. $#tama) {
if ( $tama[$i][0] eq $target) {
if ($m{tama} >= $tama[$i][1]) {
$npc_com = "分かりました。$tama[$i][0]の魂をあなたに憑依させます。";
$m{tama} -= $tama[$i][1];
$m{p_lv} = 1;
$m{p_mhp} = 20000000;
$m{p_mmp} = 20000000;
$m{p_job} = $tama[$i][3];
$m{p_at} = 150000;
$m{p_df} = 150000;
$m{p_ag} = 150000;
$m{p_icon} = $tama[$i][2];
$m{p_name} .= '@';
$m{p_name} = $tama[$i][4];
$m{p_name} =~ s/[A-Z]$//;
$ms{$y}{hp} = 0;
}
else {
$mes = "魂が足りませんね。";
}
return;
}
$p .= qq|<tr onclick="text_set('@ひょうい>$tama[$i][0]')"><td> $tama[$i][0]</td><td align="right">$tama[$i][1]</td></tr>|;
}
$p .= qq|</table>|;
$mes = qq|どれを憑依させますか?<br />$p|;
$act_time = 0;
}
#=================================================
# @レベル
#=================================================
sub lv {
if ($m{p_lv} <= $m{tama}) {
++$m{p_lv};
$m{p_mhp} *= 1.3;
$m{p_mmp} *= 1.3;
$m{p_at} *= 1.3;
$m{p_df} *= 1.3;
$m{p_ag} *= 1.3;
$mes = qq|$m{p_name}のレベルが$m{p_lv}になった! HPが$m{p_mhp}に上がった! MPが$m{p_mmp}になった! 攻撃力が$m{p_at}になった! 守備力が$m{p_df}になった! すばやさが$m{p_ag}になった!<br />$p|;
$m{tama} -= $m{p_lv};
}
elsif ($m{p_lv} = 1000) {
$npc_com = qq|もうレベルが上がらないね<br />$p|;
}
else {
$tas = $m{p_lv}+1;
$mes = qq|魂が足りないよ。次のレベルまで$tas魂は必要だね<br />$p|;
}
}
1; # 削除不可
後は適当に変数など、色々書き換える。
次に、スキルに
if($m{p_name}){push @skills, (
[0, 30, '召喚', sub{ my $n = $m{p_name}; if (defined $ms{$n}{name}) { $com.="$nを呼び出すのに失敗した…"; return; }; &_add_party($n, $m{p_icon}, $m{p_mhp}, $m{p_mmp}, $m{p_at}, $m{p_df}, $m{p_ag}); $com.="$nが戦闘に参加した!"; }],
[0, 0, '弾幕', sub{ my $n = $m{p_name}; $n = defined($ms{$n}{name}) ? $n : &_search_job(253); return if !$n || $ms{$n}{hp} <= 0; $com.="$n: "; { $com .= qq|<span class="heal">「弾幕が放たれる」</span>|; } $com.='@弾幕'; &_damages($m{p_at} * 50000, '魔',1);}],
);
}
if($m{p_job}){push @skills, (
[0,30,'とくぎ',sub{ my $n = $m{p_name}; return if !defined $ms{$n}{name} || $ms{$n}{hp} <= 0;$com.="$n: @とくぎ "; $buf_m = $m; $m = $n; &_utopiaskill; $m = $buf_m; }],
);}
}
を
push @skills, (
[0, 0, 'こうげき', sub{ &kougeki }],
[0, 0, 'ぼうぎょ', sub{ $ms{$m}{tmp} = '防御'; $com.=qq|<span class="tmp">$mは身を固めている</span>|; }],
[0, 0, 'てんしょん', sub{ &tenshon($m) }],
);
の下に追加。
最後に、削除不可の上あたりに
#=================================================
# @とくぎ
#=================================================
sub _utopiaskill {
my @r_skills = &{ 'skill_'.$m{p_job} };
if (@r_skills <= 0) {
$com .= "しかし、何も起こらなかった…";
return;
}
my $i = int(rand(@r_skills));
my $buf_mp = $ms{$m}{mp};
&{ $r_skills[$i][3] };
$ms{$m}{mp} = $buf_mp if $buf_mp > $ms{$m}{mp};
}
を追加。
これで終わり。
色々めちゃくちゃに組んだので、酷いかとおもう。
最終更新:2012年02月22日 02:12