void FanjianCard::onEffect(const CardEffectStruct &effect) const{ ServerPlayer *zhouyu = effect.from; ServerPlayer *target = effect.to; Room *room = zhouyu->getRoom(); int card_id = zhouyu->getRandomHandCardId(); const Card *card = Sanguosha->getCard(card_id); Card::Suit suit = room->askForSuit(target); LogMessage log; log.type = "#ChooseSuit"; log.from = target; log.arg = Card::Suit2String(suit); room->sendLog(log); room->showCard(zhouyu, card_id); room->getThread()->delay(); if(card->getSuit() != suit){ DamageStruct damage; damage.card = NULL; damage.from = zhouyu; damage.to = target; room->damage(damage); } if(target->isAlive()){ target->obtainCard(card); } }
void SuperFanjianCard::onEffect(const CardEffectStruct &effect) const{ ServerPlayer *superzhouyu = effect.from; ServerPlayer *target = effect.to; Room *room = superzhouyu->getRoom(); int card_id = superzhouyu->getRandomHandCardId(); const Card *card = Sanguosha->getCard(card_id); Card::Suit suit = room->askForSuit(target); LogMessage log; log.type = "#ChooseSuit"; log.from = target; log.arg = Card::Suit2String(suit); room->sendLog(log); room->showCard(target, card_id); room->getThread()->delay(); if(card->getSuit() != suit){ DamageStruct damage; damage.card = NULL; damage.from = superzhouyu; damage.to = target; if(damage.from->hasSkill("jueqing")){ LogMessage log; log.type = "#Jueqing"; log.from = damage.from; log.to << damage.to; log.arg = QString::number(1); room->sendLog(log); room->playSkillEffect("jueqing"); room->loseHp(damage.to, 1); }else{ room->damage(damage); } } target->obtainCard(card); }