PETROOM大改造
【萌え萌えキャラクターズと遊ぼー。】

スケジュールを最後までキッチリ表示しよう

オリジナルのPETROOMの仕様で、
お食事をして喜ぶと、スケジュールが最初にリセットされます。

つまり、途中どこかに「お食事」を誘発するようなメッセージが入っていたとして、
さらにお食事で喜ぶように設定してあると、
当然誰かがそこでお食事を選択すると思われますので、スケジュールがリセットされ、
なかなかその先のスケジュールが表示されなくなってしまうのです。
24時間分もメッセージや画像を用意したのに、もったいないですね。

解決方法の1つとして、
喜ぶコマンドに「お食事(feed)」を一切含めない、というのがありますが、
お食事で喜ぶ画像やメッセージは外せない! という方もいるでしょう。

そんなわけで、最後の最後、空腹時の処理でお食事を選んだときだけ、
スケジュールがリセットされるように、変更してみましょう。


スケジュールがリセットされるのは、$lastfeedと言う変数に、
time(現在の時間)が代入されるときです。
それを探してみますと、アクション(sub action)の中にあります。

    if ($rnd <= $rnd_border) {
        &petnow($rnd_img,$rnd_msg);
        $love--;
    }
    elsif ($FORM{'good'} =~ /$fa/) {
        &petnow($good_img{$fa},$good_msg{$fa});
        $love++;$good++;
        if ($fa eq "feed") { $lastfeed = time; }    # ←ここにありますね
    }
    elsif ($FORM{'bad'} =~ /$fa/) {
        &petnow($bad_img{$fa},$bad_msg{$fa});
        $love--;$bad++;
    }
    else {
        &petnow($else_img{$fa},$else_msg{$fa});
    }

そのチョット上のelsif文の所から説明しますと、
もし選んだコマンドが、ペットの喜ぶコマンドの中にあったら、
そのコマンドの喜ぶ画像と喜ぶメッセージを表示して、
ラブポイントをプラス1、ペットの機嫌(?)をプラス1する。
もし、その選んだコマンドがお食事(feed)だったら、
最後に食事した時間を記録する(スケジュールがリセットされる)。

こんな流れになっています。

ここに、空腹時かどうかの条件文を加えて、下記のようにします。

    if ($rnd <= $rnd_border) {
        &petnow($rnd_img,$rnd_msg);
        $love--;
    }
    elsif ($FORM{'good'} =~ /$fa/) {
        &petnow($good_img{$fa},$good_msg{$fa});
        $love++;$good++;
        if ($fa eq "feed" && $hungry != 0) { $lastfeed = time; }
    }
    elsif ($FORM{'bad'} =~ /$fa/) {
        &petnow($bad_img{$fa},$bad_msg{$fa});
        $love--;$bad++;
    }
    else {
        &petnow($else_img{$fa},$else_msg{$fa});
    }

選んだコマンドがお食事で、かつ、空腹時なら、スケジュールをリセットします。
通常の食事の時は、空腹時ではないので、スケジュールがリセットされなくなります。


逆にスケジュールを強制的にリセットしたい場合は、この、
$lastfeed = time;
を、アクションの中で条件式を作り、組み込めばOKです。