Example #1
0
    static void appl(int p, int s, BS &b) {
        if (b.koed(s))
            return;
        int minmove = 0;
        int minPP = 100;
        bool init = false;
        bool zeroPP = false;
        for (int i = 0; i < 4; i++) {
            if (b.move(s, i) == 0) {
                continue;
            }
            if (b.PP(s, i) == 0) {
                zeroPP = true;
                init = true;
                minmove = i;
                minPP = 0;
                break;
            }
            if (b.PP(s, i) < minPP && (fpoke(b, s).moves[i] == b.poke(s).move(i).num() ?
                                       b.PP(s, i) < b.poke(s).move(i).totalPP() : b.PP(s, i) < 5)) {
                minmove = i;
                init = true;
                minPP = b.PP(s, i);
            }
        }
            
        
        if (init && (zeroPP || turn(b,p).value("BugBiter").toBool())) {
            b.eatBerry(s, s==p);
            b.sendBerryMessage(2,s,0,0,0,b.move(s,minmove));

            b.gainPP(s,minmove,b.gen() <= 2 ? 5 : 10);
        }
    }
Example #2
0
 static void appl(int s, int, BS &b) {
     int minmove = 0;
     int minPP = 100;
     bool init = false;
     bool zeroPP = false;
     for (int i = 0; i < 4; i++) {
         if (b.move(s, i) == 0) {
             continue;
         }
         if (b.poke(s).move(i).PP() == 0) {
             zeroPP = true;
             init = true;
             minmove = i;
             minPP = 0;
             break;
         }
         if (b.poke(s).move(i).PP() < minPP && b.poke(s).move(i).PP() < b.poke(s).move(i).totalPP()) {
             minmove = i;
             init = true;
             minPP = b.poke(s).move(i).PP();
         }
     }
         
     
     if (init && (zeroPP || turn(b,s).value("BugBiter").toBool())) {
         b.eatBerry(s);
         b.sendBerryMessage(2,s,0,0,0,b.move(s,minmove));
         b.gainPP(s,minmove,10);
     }
 }
Example #3
0
 static void mp(int s, int, BS &b) {
     for (int i = 0; i < 4; i++) {
         if (MoveInfo::Power(b.move(s,i), b.gen()) == 0) {
             turn(b,s)["Move" + QString::number(i) + "Blocked"] = true;
         }
     }
 }
Example #4
0
    static void ti(int p, int s, BS &b) {
        int attack = turn(b,p).value("ItemAttackSlot").toInt();
        int pp = poke(b,p).value("ItemArg").toInt();

        if (pp == 0) {
            pp = 99;
        }

        b.sendBerryMessage(2,s,0,0,0,b.move(s,attack));

        b.gainPP(s, attack, pp);
    }
Example #5
0
    static void ti(int p, int s, BS &b) {
        int pp = poke(b,p).value("ItemArg").toInt();

        if (pp == 0) {
            pp = 99;
        }

        b.sendBerryMessage(2,s,1);

        for (int i = 0; i < 4; i++) {
            if (b.move(s,i) != Move::NoMove) {
                b.gainPP(s, i, pp);
            }
        }
    }
Example #6
0
    static void ti(int, int p, BS &b) {
        for (int i = 0; i < 6; i++) {
            int s = b.slot(p, i);

            b.changeHp(s, b.poke(s).totalLifePoints());
            if (b.koed(s)) {
                b.sendItemMessage(1999, s);
            }
            b.changeStatus(p, i, Pokemon::Fine);
            for (int j = 0; j < 4; j++) {
                if (b.move(s, j) != Move::NoMove) {
                    b.gainPP(s, j, 99);
                }
            }
        }
    }
Example #7
0
 static void mp(int s, int, BS &b) {
     if (!poke(b,s).contains("ChoiceMemory") || poke(b,s).value("ChoiceMemory").toInt() == 0) {
         return;
     }
     int mem = poke(b,s)["ChoiceMemory"].toInt();
     int index=-1;
     for (int i = 0; i < 4; i++) {
         if (mem  == b.move(s, i)) {
             index = i;
             break;
         }
     }
     /* Happens for example when using metronome + fly, and is correct in regard
        to the ingame behavior */
     if (index == -1)
         return;
     for (int i = 0; i < 4; i++) {
         if (index != i) {
             turn(b,s)["Move" + QString::number(i) + "Blocked"] = true;
         }
     }
 }