欢迎光临散文网 会员登陆 & 注册

PE.后置八炮(废稿,不再翻修)

2023-03-24 21:10 作者:Alterit  | 我要投稿

#include <avz.h>

using namespace AvZ;


TickRunner TC_1;

TickRunner TC_2;

TickRunner TC_3;

TickRunner TC_4;

TickRunner TS_1;

TickRunner TB;

TickRunner gloom_shroom_user;


PlantFixer pumpkin_fixer;

PlantFixer fume_shroom_fixer;

PlantFixer lily_pad_fixer;


// 判定前场僵尸

bool IsZBBeforeExist()

{

    bool result = false;

    auto zombie = GetMainObject()->zombieArray();

    for (int index = 0; index < GetMainObject()->zombieTotal(); ++index)

    {

        if (zombie[index].isExist() &&

            !zombie[index].isDead() &&

            zombie[index].abscissa() > 320)

        {

            result = true;

        }

    }

    return result;

}


// 判定僵尸

bool IsZBExist(ZombieType type, int row, int abs_1, int abs_2, int hp)

{

    bool result = false;

    auto zombie = GetMainObject()->zombieArray();

    for (int index = 0; index < GetMainObject()->zombieTotal(); ++index)

    {

        if (zombie[index].type() == type &&

            zombie[index].isExist() &&

            !zombie[index].isDead() &&

            zombie[index].row() == row - 1 &&

            zombie[index].abscissa() > abs_1 && zombie[index].abscissa() < abs_2 &&

            zombie[index].hp() >= hp &&

            zombie[index].state() != 70)

        {

            result = true;

        }

    }

    return result;

}


// 智能用卡

void SafeCard(PlantType type, int r, int c)

{

    auto seed = GetMainObject()->seedArray();

    if (seed[GetCardIndex(type)].isUsable())

    {

        if (GetPlantIndex(r, c) == -1)

        {

            SetInsertOperation(false);

            Card(type, r, c);

            SetInsertOperation(true);

        }

    }

}


// 发炮

void TimePao(int w, int m)

{

    InsertOperation([=]()

                    {

        if (GetMainObject()->wave() < w + 1)

        {

            SetNowTime();

            if (!(GetMainObject()->wave() == w && GetMainObject()->refreshCountdown() < 200 + 373) && IsZBBeforeExist())

            {

                if (m == 1) //通常

                {

                    pao_operator.pao({{2, 7.0125}, {5, 7.0125}});

                }

                else if (m == 2) //变速关下半F

                {

                    if (!IsZombieExist(32)) // 场上没有红眼,炸点前移

                    {

                        pao_operator.pao({{2, 8}, {5, 8}});

                    }

                    else

                    {

                        pao_operator.pao({{2, 7.0125}, {5, 7.0125}});

                    }

                }

                else if (m == 3) //快速关

                {

                    pao_operator.pao({{2, 8}, {5, 8}});

                }

            }

            Delay(3476 / 4);

            TimePao(w, m);

        } });

}


// 慢速关,白眼关,T4

void P_1()

{

    SetTime(3476 / 4 - 200 - 373, 1);

    pao_operator.pao({{2, 7.0125}, {5, 7.0125}});


    Delay(3476 / 4);

    TimePao(9, 1);


    SetTime(3476 / 4 - 200 - 373, 10);

    pao_operator.pao({{2, 7.5}, {5, 7.5}});


    Delay(3476 / 4);

    TimePao(19, 1);


    SetTime(3476 / 4 - 200 - 373, 20);

    pao_operator.pao({{2, 7.5}, {5, 7.5}});


    Delay(3476 / 4);

    TimePao(20, 1);

}


// 变速关,T4,w10以后,场上没有红眼,炸点前移

void P_2()

{

    SetTime(3476 / 4 - 200 - 373, 1);

    pao_operator.pao({{2, 8}, {5, 8}});


    Delay(3476 / 4);

    TimePao(9, 1);


    SetTime(3476 / 4 - 200 - 373, 10);

    pao_operator.pao({{2, 8}, {5, 8}});


    Delay(3476 / 4);

    TimePao(19, 2);


    SetTime(3476 / 4 - 200 - 373, 20);

    pao_operator.pao({{2, 8}, {5, 8}});


    Delay(3476 / 4);

    TimePao(20, 1);

}


// 快速关,T4

void P_3()

{

    SetTime(3476 / 4 - 200 - 373, 1);

    pao_operator.pao({{2, 8}, {5, 8}});


    Delay(3476 / 4);

    TimePao(9, 3);


    SetTime(3476 / 4 - 200 - 373, 10);

    pao_operator.pao({{2, 8}, {5, 8}});


    Delay(3476 / 4);

    TimePao(19, 3);


    SetTime(3476 / 4 - 200 - 373, 20);

    pao_operator.pao({{2, 8}, {5, 8}});


    Delay(3476 / 4);

    TimePao(20, 3);

}


// 有红有杆关,垫红眼,撑杆靠近时,场上无垫不垫(撑杆僵尸还差一个手上是否有杆子的判定)

void C_1()

{

    for (int r : {1, 6, 2, 5})

    {

        if (IsZBExist(GIGA_GARGANTUAR, r, 410, 520, 200) && !IsZBExist(POLE_VAULTING_ZOMBIE, r, 369, 525, 0))

        {

            for (PlantType type : {PUFF_SHROOM, M_PUFF_SHROOM})

            {

                SafeCard(type, r, 6);

            }

        }

    }

}


// 有红无杆关,垫红眼,只在6列垫

void C_2()

{

    for (int r : {1, 2, 5, 6})

    {

        if (IsZBExist(GIGA_GARGANTUAR, r, 426, 505, 200))

        {

            for (PlantType type : {PUFF_SHROOM, M_PUFF_SHROOM})

            {

                SafeCard(type, r, 6);

            }

        }

    }

}


// 有丑关,垫小丑,由于在岸路7列垫,不考虑撑杆

void C_3()

{

    for (int r : {2, 5})

    {

        if (IsZBExist(JACK_IN_THE_BOX_ZOMBIE, r, 530, 550, 200))

        {

            for (PlantType type : {PUFF_SHROOM, M_PUFF_SHROOM, FUME_SHROOM})

            {

                SafeCard(type, r, 7);

            }

        }

    }

}


// 炸点前移时,垫漏掉的伴舞

void C_4()

{

    for (int r : {1, 6})

    {

        if (IsZBExist(BACKUP_DANCER, r, 400, 440, 0))

        {

            for (PlantType type : {PUFF_SHROOM, M_PUFF_SHROOM})

            {

                SafeCard(type, r, 6);

            }

        }

    }

}


// 垫边路快速僵尸,在7列垫,如果边路撑杆跳过7列垫材,继续在6列垫撑杆

void C_5()

{

}


// 窝瓜,压即将进家的跳跳

void SQU()

{

}


// 铲子,撑杆靠近时,有垫铲垫,铲6列垫

void S_1()

{

    for (int r : {1, 2, 5, 6})

    {

        if (IsZBExist(POLE_VAULTING_ZOMBIE, r, 369, 525, 0))

        {

            if (GetPlantIndex(r, 6) != -1)

            {

                ShovelNotInQueue(r, 6);

            }

        }

    }

}


// 三叶草r1c1

void BLO()

{

    for (int row : {1, 2, 3, 4, 5, 6})

    {

        if (IsZBExist(BALLOON_ZOMBIE, row, 0, 10, 0))

        {

            SafeCard(BLOVER, 1, 1);

        }

    }

}


// 快速关修炮

void FixPao()

{

}


// 补曾主体

void PlantGloomShroom(int r, int c)

{

    auto gloom_shroom = GetMainObject()->seedArray() + GetSeedIndex(GLOOM_SHROOM);

    if (GetPlantIndex(r, c, 10) > -1)

    {

        SafeCard(GLOOM_SHROOM, r, c);

    }

}


// 补曾位置

void FixGloomShroom()

{

    PlantGloomShroom(3, 6);

    PlantGloomShroom(4, 6);

}


void Script()

{

    OpenMultipleEffective('X', MAIN_UI_OR_FIGHT_UI);

    SelectCards({PUFF_SHROOM, M_PUFF_SHROOM, BLOVER, PUMPKIN, KERNEL_PULT, COB_CANNON, COFFEE_BEAN, LILY_PAD, FUME_SHROOM, GLOOM_SHROOM});

    /*SkipTick([=]()

             { return true; });*/


    pumpkin_fixer.start(PUMPKIN, {{3, 5}, {3, 6}, {4, 5}, {4, 6}}, 2000);

    lily_pad_fixer.start(LILY_PAD, {{3, 6}, {4, 6}}, 0);

    fume_shroom_fixer.start(FUME_SHROOM, {{3, 6}, {4, 6}}, 0);

    gloom_shroom_user.pushFunc(FixGloomShroom);


    SetTime(-599, 1);

    pao_operator.autoGetPaoList();

    Shovel({{1, 6}, {2, 6}, {5, 6}, {6, 6}, {1, 7}, {2, 7}, {5, 7}, {6, 7}});


    auto zt = GetMainObject()->zombieTypeList();


    if (zt[GARGANTUAR])

    {

        P_1();

    }

    else

    {

        if (zt[GIGA_GARGANTUAR])

        {

            P_2();

        }

        else

        {

            P_3();

        }

    }


    if (zt[GIGA_GARGANTUAR])

    {

        if (zt[POLE_VAULTING_ZOMBIE])

        {

            TC_1.pushFunc(C_1);

        }

        else

        {

            TC_2.pushFunc(C_2);

        }

    }


    if (zt[JACK_IN_THE_BOX_ZOMBIE])

    {

        TC_3.pushFunc(C_3);

    }


    if (!zt[GARGANTUAR] && zt[DANCING_ZOMBIE])

    {

        TC_4.pushFunc(C_4);

    }


    if (zt[POLE_VAULTING_ZOMBIE])

    {

        TS_1.pushFunc(S_1);

    }


    if (zt[BALLOON_ZOMBIE])

    {

        TB.pushFunc(BLO);

    }

}


PE.后置八炮(废稿,不再翻修)的评论 (共 条)

分享到微博请遵守国家法律