$t->hisData()->attack(16);
$storage = ['Common' => array(), 'Uncommon' => array(), 'Rare' => array()];
for ($i = 1; $i <= $t->handSize(); $i++) {
$cur_card = $t->getCard($t->hisData()->Hand[$i]);
$rarity = $cur_card->getRarity();
if ($cur_card->hasKeyword('Dragon') || $cur_card->hasKeyword('Undead') || $cur_card->hasKeyword('Unliving')) {
$storage[$rarity][] = $i;
}
}
if ((count($storage['Common']) + count($storage['Uncommon']) + count($storage['Rare'])) > 0) {
shuffle($storage['Common']);
shuffle($storage['Uncommon']);
shuffle($storage['Rare']);
$storage_temp = array_merge($storage['Common'], $storage['Uncommon'], $storage['Rare']);
$discarded_pos = array_pop($storage_temp);
$t->setCard('his', $discarded_pos, $t->drawCard($t->hisDeck(), $t->hisData()->Hand, $discarded_pos, 'drawCardDifferent'));
}