Beispiel #1
0
void LijianCard::use(Room *room, ServerPlayer *, QList<ServerPlayer *> &targets) const{
    ServerPlayer *to = targets.at(0);
    ServerPlayer *from = targets.at(1);

    Duel *duel = new Duel(Card::NoSuit, 0);
    duel->setCancelable(duel_cancelable);
    duel->setSkillName(QString("_%1").arg(getSkillName()));
    if (!from->isCardLimited(duel, Card::MethodUse) && !from->isProhibited(to, duel))
        room->useCard(CardUseStruct(duel, from, to));
    else
        delete duel;
}
void TaichenFightCard::use(Room *room, ServerPlayer *source, QList<ServerPlayer *> &) const{
    room->loseHp(source);

    if (source->isAlive()) {
        Duel *duel = new Duel(Card::NoSuit, 0);
        duel->setSkillName("_taichenfight");
        duel->setCancelable(false);

        room->addPlayerMark(source, "WushuangTarget");
        room->useCard(CardUseStruct(duel, source, room->getLord()));
        room->removePlayerMark(source, "WushuangTarget");
    }
}
void TaichenFightCard::use(Room *room, ServerPlayer *source, QList<ServerPlayer *> &) const
{
    room->loseHp(source);

    if (source->isAlive()) {
        Duel *duel = new Duel(Card::NoSuit, 0);
        duel->setSkillName("_taichenfight");
        duel->setCancelable(false);

        QStringList wushuang_tag;
        wushuang_tag << room->getLord()->objectName();
        source->tag["Wushuang_" + duel->toString()] = wushuang_tag;
        try {
            room->useCard(CardUseStruct(duel, source, room->getLord()));
        }
        catch (TriggerEvent triggerEvent) {
            if (triggerEvent == StageChange || triggerEvent == TurnBroken)
                source->tag.remove("Wushuang_" + duel->toString());
            throw triggerEvent;
        }
        source->tag.remove("Wushuang_" + duel->toString());
    }
}