virtual bool trigger(TriggerEvent triggerEvent, Room* room, ServerPlayer *player, QVariant &data) const{ if(player->getPhase() != Player::NotActive) return false; CardStar card = NULL; if(triggerEvent == CardFinished){ CardUseStruct card_use = data.value<CardUseStruct>(); card = card_use.card; if(card == player->tag["MoonSpearSlash"].value<CardStar>()){ card = NULL; } }else if(triggerEvent == CardResponsed){ card = data.value<ResponsedStruct>().m_card; player->tag["MoonSpearSlash"] = data; } if(card == NULL || !card->isBlack()) return false; //@todo: askForUseCard combines asking and using the card. //animating weapon effect should happen in-between. //we should come back after the askFor methods are restructured. room->askForUseCard(player, "slash", "@moon-spear-slash"); return false; }
virtual bool trigger(TriggerEvent event, ServerPlayer *player, QVariant &data) const{ if(player->getPhase() != Player::NotActive) return false; CardStar card = NULL; if(event == CardFinished){ CardUseStruct card_use = data.value<CardUseStruct>(); card = card_use.card; if(card == player->tag["MoonSpearSlash"].value<CardStar>()){ card = NULL; } }else if(event == CardResponsed){ card = data.value<CardStar>(); player->tag["MoonSpearSlash"] = data; } if(card == NULL || !card->isBlack()) return false; Room *room = player->getRoom(); room->askForUseCard(player, "slash", "@moon-spear-slash"); return false; }
virtual bool trigger(TriggerEvent , ServerPlayer *player, QVariant &data) const{ JudgeStar judge = data.value<JudgeStar>(); CardStar card = judge->card; if(card->isBlack()){ Room *room = player->getRoom(); QList<ServerPlayer *> players = room->getOtherPlayers(player); foreach(ServerPlayer *p, players){ QVariant who = QVariant::fromValue(p); if(p->hasLordSkill("songwei") && player->askForSkillInvoke("songwei", who)){ room->playSkillEffect(objectName(), 1); p->drawCards(1); } }
virtual bool trigger(TriggerEvent , ServerPlayer *player, QVariant &data) const{ CardStar card = data.value<CardStar>(); if(card->isBlack()){ Room *room = player->getRoom(); if(room->askForSkillInvoke(player, objectName())){ room->playSkillEffect(objectName()); QList<ServerPlayer *> players = room->getOtherPlayers(player); foreach(ServerPlayer *p, players){ if(p->hasSkill(objectName())){ p->drawCards(1); break; } } }
virtual bool trigger(TriggerEvent triggerEvent, Room *room, ServerPlayer *player, QVariant &data) const{ if (player->getPhase() != Player::NotActive) return false; CardStar card = NULL; if (triggerEvent == CardUsed) { CardUseStruct card_use = data.value<CardUseStruct>(); card = card_use.card; } else if (triggerEvent == CardResponded) { card = data.value<CardResponseStruct>().m_card; } if (card == NULL || !card->isBlack() || (card->getHandlingMethod() != Card::MethodUse && card->getHandlingMethod() != Card::MethodResponse)) return false; player->setFlags("MoonspearUse"); if (!room->askForUseCard(player, "slash", "@moon-spear-slash", -1, Card::MethodUse, false)) player->setFlags("-MoonspearUse"); return false; }