virtual QStringList triggerable(TriggerEvent, Room *, ServerPlayer *simayi, QVariant &data, ServerPlayer * &) const { if (MasochismSkill::triggerable(simayi)) { ServerPlayer *from = data.value<DamageStruct>().from; return (from && !from->isNude()) ? QStringList(objectName()) : QStringList(); } return QStringList(); }
virtual bool trigger(TriggerEvent, Room *room, ServerPlayer *caopi, QVariant &data) const{ DeathStruct death = data.value<DeathStruct>(); ServerPlayer *player = death.who; if (player->isNude() || caopi == player) return false; if (caopi->isAlive() && room->askForSkillInvoke(caopi, objectName(), data)) { room->broadcastSkillInvoke(objectName()); DummyCard *dummy = new DummyCard(player->handCards()); QList <const Card *> equips = player->getEquips(); foreach (const Card *card, equips) dummy->addSubcard(card); if (dummy->subcardsLength() > 0) { CardMoveReason reason(CardMoveReason::S_REASON_RECYCLE, caopi->objectName()); room->obtainCard(caopi, dummy, reason, false); } delete dummy; }