私設SoS2オーナー応援BBS

新規発言一覧最新記事過去一覧検索ダウンロードページHOME

No.1444  スキルの発動対象指定について
発言者: 矢神
発言日: 2008 01/12 20:05
すみません、今回少々ややこしいかも知れないんですが、どうにも手に負えなくなってしまったので助言を戴けますでしょうか

SOS2 Wikiに載っていた「戦闘関連強化・特技&魔法」とミッチーの散歩道様のサイトに載っていた「特殊スキルを持つ装備品を作る」を組み合わせて、追加効果を持つ装備品を導入しようとしたのですが
一応動作はしたものの、追加効果(武器に付属したスキル)の対象が、常に勝利者からの発動になってしまいます。
(追加ダメージ効果の装備を持って戦闘に敗北すると、自分に追加ダメージが発生してしまう)
原因が何処にあるのかよく判らないんですが、改造個所を全て貼り付けると長くなってしまうので、とりあえず関係ありそうなところだけを貼ります。
〜〜〜〜〜〜〜〜

># Sub Fight #に追加した記述
&splititem('iI');
foreach $item (@items) {
($item,$sts,$price) = split(/△/,$item);
if ($sts =~ /Q[swat]/) { $sp2 .= "$sts"; }
}
foreach $item (@pitems) {
($item,$sts,$price) = split(/△/,$item);
if ($sts =~ /Q[swat]/) { $psp2 .= "$sts"; }
}

〜〜〜〜〜〜〜〜
># Sub Fight #に追加した記述2

        if ($rw >= $def_rp && $psp2 =~ /X$_/) { $patk += $bcount }
        if ($prw >= $def_rp && $sp2 =~ /X$_/) { $uatk += $bcount }
    }

〜〜〜〜〜〜〜〜
># Sub Fight #に追加(変更)した記述3

    $result = $udice <=> $pdice;
    if ($result == 1) {
        $dmg = (1,1,$uddice - $pdfd) [($uddice <=> $pdfd) + 1];
        ($php,$pav,$pdt,$prw,$hp,$av,$dt)
            = &fight_sub($nm,$hp,$sp,$sp2,$ab,$bp,$ak,$av,$dt,$bn,$pnm,$php,$psp,$psp2,$pbp,$pav,$pdt,$prw,$pbn);
            require './sp_atk.pl';
($php,$pav,$hp,$dt) = &sp_atk($nm,$hp,$sp,$sp2,$av,$pnm,$php,$pav,$pdt,$dmg,$udice);

        $mn += $Wm; $plz++; $wn++; $itemchance = 1; $hp = $xp if $hp > $xp;
        if ($def_ar) { $rw += $def_ar };
    }
    if ($result == -1) {
        $dmg = (1,1,$pdice - $udfd) [($pdice <=> $udfd) + 1];
        ($hp,$av,$dt,$rw,$php,$pav,$pdt)
            = &fight_sub($pnm,$php,$psp,$psp2,$pab,$pbp,$pak,$pav,$pdt,$pbn,$nm,$hp,$sp,$sp2,$bp,$av,$dt,$rw,$bn);
            require './sp_atk.pl';
($hp,$av,$php,$pdt) = &sp_atk($pnm,$php,$psp,$psp2,$pav,$nm,$hp,$av,$dt,$dmg,$pdice);

〜〜〜〜〜〜〜〜
>sp_atk.plの設定部分($Ws2を追加、# 特技選定の$spを$sp2に変更)

sub sp_atk {
    ($Wn,$Wh,$Ws,$Ws2,$Wv,$Ln,$Lh,$Lv,$Lt,$Dg,$Dd) = @_;
    if ($Lv =~ /dead/) { return($Lh,$Lv,$Wh,$Wt) }

    undef @castlines;
    @splines = &opendat('special.cgi');
    foreach (0 .. $#splines) {
        ($sp_no,$sp_tp,$sp_rt,$sp_dg,$sp_ef,$sp_sp,$sp_nm,$sp_mg) = split(/<>/,$splines[$_]);

        push (@castlines,$splines[$_]) if $sp2 =~ /$sp_sp/; # 特技選定
    }
    if (!@castlines) { return($Lh,$Lv,$Wh,$Wt) }

    $cast_rnd = int(rand($#castlines)); # 特技確定
    ($sp_no,$sp_tp,$sp_rt,$sp_dg,$sp_ef,$sp_sp,$sp_nm,$sp_mg) = split(/<>/,$castlines[$cast_rnd]);

〜〜〜〜〜〜〜〜

かなりわかりにくいと思いますが(申し訳ありません…)
ぱっと見でおかしい個所などはありますでしょうか?

▼関連発言

1444:スキルの発動対象指定について [矢神] 01/12 20:05
 └1445:追記 [矢神] 01/12 20:59
  └1446:Re:追記 [moon] 01/12 21:18
   └1447:ありがとうございました! [矢神] 01/12 22:58<-last

Pass 保存


CGIROOM