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

【PE】希望之路 脚本

2022-12-14 12:34 作者:--Reisen--  | 我要投稿

可以自由使用,但请注明来源,遵守 License。
AvZ 版本:AvZ2 2.0.0

#include "avz.h"
#include "AvZDSL/AvZDSL.h"
#include "legacy/avz_more.h"
#include "DanceCheat/DanceCheat.h"
#include "fodder/fodder.h"

using namespace std;

APvzBase* pb;
AMainObject* mo;

class : AStateHook {
    void _BeforeScript() override {
        pb = AGetPvzBase();
        mo = AGetMainObject();
    }
} _mo_initializer;

#define CardR(...) AMkRelOp(ACard(__VA_ARGS__))

ARelOp IceDayR() {
    ARelTime t = rand() % 2 ? 298 : 299;
    return -t[
        AMkRelOp(aIceFiller.Coffee()),
        AMkRelOp(AIce3(int(t)))
    ];
}

ARelOp UseIceR(int row, int col) {
    return -100_cs[
        AMkRelOp(ACard(AICE_SHROOM, row, col))
    ];
}

ARelOp UseImitatorIceR(int row, int col) {
    ARelTime t = rand() % 2 ? 419 : 420; // 模仿者生效时间可能取 319 或 320
    return -t[
        CardR(AICE_SHROOM, row, col),
        AMkRelOp(AIce3(int(t)))
    ];
}

ARelOp IceNightR(int row, int col) {
    return -420_cs[AMkRelOp(
        int idx = AGetSeedIndex(AICE_SHROOM, true);
        if(idx != -1 && AGetMainObject()->SeedArray()[idx].IsUsable()) // 复制冰可用
            ANow + 420_cs[UseImitatorIceR(row, col)];
        else
            ANow + 420_cs[UseIceR(row, col)];
    )];
}

ARelOp FireR(int row, float col, bool wait_until_recover = false) {
    std::vector<APosition> pos;
    while(row) {
        pos.push_back({row % 10, col});
        row /= 10;
    }
    std::reverse(pos.begin(), pos.end());
    if(wait_until_recover)
        return -373_cs[AMkRelOp(aCobManager.RecoverFire(pos))];
    else
        return -373_cs[AMkRelOp(aCobManager.Fire(pos))];
}

class AMaidCheatsR {
public:
    static ARelOp CallPartner() {
        return AMkRelOp(AMaidCheats::CallPartner());
    }

    static ARelOp Dancing() {
        return AMkRelOp(AMaidCheats::Dancing());
    }

    static ARelOp Move() {
        return AMkRelOp(AMaidCheats::Move());
    }

    static ARelOp Stop() {
        return AMkRelOp(AMaidCheats::Stop());
    }
};

ALogger<APvzGui> l;

template <typename... Ts>
ARelOp InfoR(Ts... args) {
    return AMkRelOp(l.Info(args...));
}

/*
ch6/I6-3889cs 非定态
正常:IHP-ccPPDH|PSH/Bcc 1149|(288/265)
PSD/B延迟:PSD/B-PAA'a|IPH-ccPPDH 990|1149
热过渡:IPP|PI/PIHHA(A'a) 735|(318/225)
连拦:IPP-ccPD/PHA
1, 3, 7, 9, 11, 13, 16, 18: PSD/B
2, 4, 6, 8, 12, 19: IPP-PPDD
5: PSD/B 延迟
14: 热过渡刷新
17: 连拦延迟
*/

FodderR f({APUFF_SHROOM, ASUN_SHROOM, ASCAREDY_SHROOM, AFLOWER_POT});

void AScript() {
    ASetReloadMode(AReloadMode::MAIN_UI);
    AConnect(AKey('Q'), []{ throw AException(""); });
    ASetGameSpeed(1);
    ASetZombies({AZOMBIE, APOLE_VAULTING_ZOMBIE, AFOOTBALL_ZOMBIE, ADANCING_ZOMBIE, AZOMBONI, ADOLPHIN_RIDER_ZOMBIE, ADIGGER_ZOMBIE, APOGO_ZOMBIE, ABUNGEE_ZOMBIE, ALADDER_ZOMBIE, ACATAPULT_ZOMBIE, AGARGANTUAR, AGIGA_GARGANTUAR});
    ASelectCards({AICE_SHROOM, AM_ICE_SHROOM, ACOFFEE_BEAN, ACHERRY_BOMB, AJALAPENO, ASQUASH, APUFF_SHROOM, ASUN_SHROOM, ASCAREDY_SHROOM, AFLOWER_POT});
    aIceFiller.Start({{3, 6}, {3, 7}, {3, 8}});
    cresc::AverageSpawn({AGARGANTUAR, AGIGA_GARGANTUAR});
    DanceCheat(DanceCheatMode::FAST);

    AWave(1, 3, 7, 9, 11, 13, 16, 18)[
        225_cs[FireR(1, 9) + 63_cs[FireR(2, 9)]],
        398_cs[FireR(1, 8.6625)],
        265_cs[FireR(5, 8.2625)],
        445_cs[f({5, 6}, 134)]
    ].AssumeWaveLength(601);

    AWave(2, 4, 8, 12, 19)[
        100_cs[IceDayR()],
        173_cs[FireR(1, 9)],
        535_cs[FireR(5, 7.375)],
        776_cs[f({5, 6}, 1)],
        949_cs[
            FireR(25, 9),
            212_cs[FireR(1, 8)],
            232_cs[FireR(5, 8.4125)]
        ]
    ].AssumeWaveLength(1149);

    10_wave[
        -300_cs[AMaidCheatsR::Stop()],
        207_cs[f({1, 2}, 100)],
        401_cs[FireR(2, 9), 106_cs[IceDayR()]],
        225_cs[FireR(6, 9) + 63_cs[FireR(5, 9)]],
        398_cs[FireR(5, 8.6625)]
    ].AssumeWaveLength(601);

    5_wave[
        225_cs[FireR(1, 9) + 63_cs[FireR(2, 9)]],
        398_cs[FireR(1, 8.6625)],
        265_cs[FireR(5, 8.2625)],
        789_cs[CardR({{ACHERRY_BOMB, 5, 9}, {AJALAPENO, 6, 9}})],
        790_cs[FireR(5, 9)],
        890_cs[CardR(ASQUASH, 5, 9)]
    ].SetWaveLength(990);

    6_wave[
        100_cs[IceDayR()],
        173_cs[FireR(5, 9)],
        535_cs[FireR(1, 7.6875)],
        776_cs[f({5, 6}, 1)],
        949_cs[
            FireR(25, 9),
            212_cs[FireR(1, 8)],
            232_cs[FireR(5, 8.4125)]
        ]
    ].AssumeWaveLength(1149);

    14_wave[
        100_cs[IceDayR()],
        173_cs[FireR(1, 9)],
        535_cs[FireR(5, 7.375)],
        727_cs[f({1, 2})]
    ].SetWaveLength(735);

    15_wave[
        225_cs[FireR(5, 9)],
        318_cs[FireR(2, 9), IceDayR()],
        401_cs[
            FireR(56, 9),
            -100_cs[CardR(AJALAPENO, 5, 9)],
            -182_cs[CardR(ASQUASH, 6, 9)]
        ]
    ].AssumeWaveLength(601);

    17_wave[
        100_cs[IceDayR()],
        173_cs[FireR(1, 9)],
        535_cs[FireR(5, 7.375)],
        776_cs[f({5, 6}, 1)],
        949_cs[
            FireR(25, 9),
            212_cs[FireR(1, 8)],
            232_cs[
                FireR(5, 8.4125),
                225_cs - 100_cs[CardR(ACHERRY_BOMB, 5, 9)]
            ]
        ]
    ].SetWaveLength(1381);

    9_wave + 601_cs[
        100_cs[IceDayR()],
        173_cs[FireR(3, 9)],
        535_cs[FireR(5, 7.375)],
        949_cs + 232_cs[
            FireR(5566, 9),
            AMaidCheatsR::Dancing()
        ],
        4300_cs - 601_cs[FireR(1, 9)]
    ];

    19_wave + 1149_cs[
        288_cs[FireR(13, 9) + 212_cs[FireR(1, 8.6625)]],
        255_cs[FireR(5, 8.6625)],
        601_cs + 173_cs[
            FireR(5, 9),
            AMaidCheatsR::Dancing()
        ],
        4300_cs - 1149_cs[FireR(1, 9)]
    ];

    20_wave[
        -300_cs[AMaidCheatsR::Stop()],
        245_cs[FireR(4, 7.5)],
        341_cs[FireR(25, 9)],
        341_cs + 105_cs[FireR(25, 9)],
        341_cs + 105_cs + 110_cs[FireR(1356, 8.6625)],
        5500_cs[FireR(1, 9)]
    ];

    for(int t = 1500; t < 4300; t += 212)
        9_wave + ARelTime(t)[f({1})];
    for(int t = 2000; t < 4300; t += 212)
        19_wave + ARelTime(t)[f({1})];
    for(int t = 1000; t < 5500; t += 212)
        20_wave + ARelTime(t)[f({1})];
}


【PE】希望之路 脚本的评论 (共 条)

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