void DelayedTrick::onEffect(const CardEffectStruct &effect) const { Room *room = effect.to->getRoom(); CardMoveReason reason(CardMoveReason::S_REASON_USE, effect.to->objectName(), getSkillName(), QString()); room->moveCardTo(this, NULL, Player::PlaceTable, reason, true); LogMessage log; log.from = effect.to; log.type = "#DelayedTrick"; log.arg = effect.card->objectName(); room->sendLog(log); JudgeStruct judge_struct = judge; judge_struct.who = effect.to; room->judge(judge_struct); if (judge_struct.isBad()) { takeEffect(effect.to); if (room->getCardOwner(getEffectiveId()) == NULL) { CardMoveReason reason(CardMoveReason::S_REASON_NATURAL_ENTER, QString()); room->throwCard(this, reason, NULL); } } else if (movable) { onNullified(effect.to); } else { if (room->getCardOwner(getEffectiveId()) == NULL) { CardMoveReason reason(CardMoveReason::S_REASON_NATURAL_ENTER, QString()); room->throwCard(this, reason, NULL); } } }
void DelayedTrick::onEffect(const CardEffectStruct &effect) const{ Room *room = effect.to->getRoom(); LogMessage log; log.from = effect.to; log.type = "#DelayedTrick"; log.arg = effect.card->objectName(); room->sendLog(log); JudgeStruct judge_struct = judge; judge_struct.who = effect.to; room->judge(judge_struct); bool willthrow = true; bool takeffect = false; if(judge_struct.isBad()) takeffect = true; else if(movable){ willthrow = false; onNullified(effect.to); } if(willthrow) room->moveCardTo(this, NULL, Player::DiscardedPile); //room->throwCard(this); if(takeffect) takeEffect(effect.to); }
void DelayedTrick::onEffect(const CardEffectStruct &effect) const { Room *room = effect.to->getRoom(); CardMoveReason reason(CardMoveReason::S_REASON_USE, effect.to->objectName(), getSkillName(), QString()); room->moveCardTo(this, NULL, Player::PlaceTable, reason, true); LogMessage log; log.from = effect.to; log.type = "#DelayedTrick"; log.arg = effect.card->objectName(); room->sendLog(log); JudgeStruct judge_struct = judge; judge_struct.who = effect.to; room->judge(judge_struct); if (judge_struct.negative == judge_struct.isBad()) { if (effect.to->isAlive()) takeEffect(effect.to); if (room->getCardOwner(getEffectiveId()) == NULL) { CardMoveReason reason(CardMoveReason::S_REASON_NATURAL_ENTER, QString()); room->throwCard(this, reason, NULL); } } else if (movable) { onNullified(effect.to); } else if (returnable && effect.to->isAlive()) { if (room->getCardOwner(getEffectiveId()) == NULL) { if (isVirtualCard()) { Card *delayTrick = Sanguosha->cloneCard(objectName()); WrappedCard *vs_card = Sanguosha->getWrappedCard(getEffectiveId()); vs_card->setSkillName(getSkillName()); vs_card->takeOver(delayTrick); room->broadcastUpdateCard(room->getAlivePlayers(), vs_card->getId(), vs_card); } CardsMoveStruct move; move.card_ids << getEffectiveId(); move.to = effect.to; move.to_place = Player::PlaceDelayedTrick; room->moveCardsAtomic(move, true); } } else { if (room->getCardOwner(getEffectiveId()) == NULL) { CardMoveReason reason(CardMoveReason::S_REASON_NATURAL_ENTER, QString()); room->throwCard(this, reason, NULL); } } }
void DelayedTrick::onEffect(const CardEffectStruct &effect) const{ Room *room = effect.to->getRoom(); if(!movable) room->throwCard(this); LogMessage log; log.from = effect.to; log.type = "#DelayedTrick"; log.arg = effect.card->objectName(); room->sendLog(log); Q_ASSERT(callback != NULL); if(room->judge(effect.to, callback) == "bad"){ room->throwCard(this); takeEffect(effect.to); }else if(movable){ onNullified(effect.to); } }
void DelayedTrick::onEffect(const CardEffectStruct &effect) const{ Room *room = effect.to->getRoom(); if(!movable) room->throwCard(this); LogMessage log; log.from = effect.to; log.type = "#DelayedTrick"; log.arg = effect.card->objectName(); room->sendLog(log); JudgeStruct judge_struct = judge; judge_struct.who = effect.to; room->judge(judge_struct); if(judge_struct.isBad()){ room->throwCard(this); takeEffect(effect.to); }else if(movable){ onNullified(effect.to); } }