void ServerPlayer::playCardEffect(const Card *card){ if(card->isVirtualCard() && !card->isMute()){ QString skill_name = card->getSkillName(); const Skill *skill = Sanguosha->getSkill(skill_name); int index = -1; if(skill){ if(skill->useCardSoundEffect()){ room->playCardEffect(card->objectName(), getGeneral()->isMale()); return; } index = skill->getEffectIndex(this, card); } room->playSkillEffect(skill_name, index); }else room->playCardEffect(card->objectName(), getGeneral()->isMale()); }
int EquipmentData::upgrade(bool cost_gold) { if (baseEq.get() && baseEq->m_next.get()) { baseEq = baseEq->m_next; baseid = baseEq->baseid; quality = baseEq->quality; up_quality = baseEq->up_quality; value = baseEq->baseValue; value2 = baseEq->baseValue2; if (!cost_gold) qLevel = equipmentUpgrade::getInstance()->convertUpgradeLevel(quality, type, qLevel); addValue = 0; addValue2 = 0; for (int l = 1; l <= qLevel; ++l) { int add2 = 0; int add = equipmentUpgrade::getInstance()->getUpgradeValue(up_quality, type, l, add2); addValue += add; addValue2 += add2; } price = 50*quality*(qLevel+1)*(qLevel+20); if (getGeneral().get()) { getGeneral()->updateEquipmentEffect(); } m_changed = true; setSubType(baseid); Save(); if (quality > 1 && NULL != getChar()) { //制造装备,请好友祝贺 - 蓝色品质及以上 Singleton<relationMgr>::Instance().postCongradulation(getChar()->m_id, CONGRATULATION_MAKE_EQUIP, baseid, 0); } #ifdef QQ_PLAT //首次制作装备分享 Singleton<inviteMgr>::Instance().update_event(getChar()->m_id, SHARE_EVENT_FIRST_MAKE_EQUIPTMENT, 0); #endif } }
void ServerPlayer::playCardEffect(const Card *card){ if(card->isVirtualCard() && !card->isMute()){ QString skill_name = card->getSkillName(); if(skill_name == "xuanfeng") skill_name.remove("xuanfeng"); const Skill *skill = Sanguosha->getSkill(skill_name); int index = -1; if(skill) index = skill->getEffectIndex(this, card); room->playSkillEffect(skill_name, index); }else room->playCardEffect(card->objectName(), getGeneral()->isMale()); }
/** convert the enumerated value type into a concrete c type for the * comparison helper templates. */ AbstractExpression * ExpressionUtil::comparisonFactory(PlannerDomValue obj, ExpressionType et, AbstractExpression *lc, AbstractExpression *rc) { assert(lc); // more specialization available? ConstantValueExpression *l_const = dynamic_cast<ConstantValueExpression*>(lc); ConstantValueExpression *r_const = dynamic_cast<ConstantValueExpression*>(rc); TupleValueExpression *l_tuple = dynamic_cast<TupleValueExpression*>(lc); TupleValueExpression *r_tuple = dynamic_cast<TupleValueExpression*>(rc); // this will inline getValue(), hooray! if (l_const != NULL && r_const != NULL) { // CONST-CONST can it happen? return getMoreSpecialized<ConstantValueExpression, ConstantValueExpression>(et, l_const, r_const); } else if (l_const != NULL && r_tuple != NULL) { // CONST-TUPLE return getMoreSpecialized<ConstantValueExpression, TupleValueExpression>(et, l_const, r_tuple); } else if (l_tuple != NULL && r_const != NULL) { // TUPLE-CONST return getMoreSpecialized<TupleValueExpression, ConstantValueExpression >(et, l_tuple, r_const); } else if (l_tuple != NULL && r_tuple != NULL) { // TUPLE-TUPLE return getMoreSpecialized<TupleValueExpression, TupleValueExpression>(et, l_tuple, r_tuple); } SubqueryExpression *l_subquery = dynamic_cast<SubqueryExpression*>(lc); SubqueryExpression *r_subquery = dynamic_cast<SubqueryExpression*>(rc); if (l_subquery != NULL || r_subquery != NULL) { return subqueryComparisonFactory(obj, et, lc, rc); } //okay, still getTypedValue is beneficial. return getGeneral(et, lc, rc); }
/** convert the enumerated value type into a concrete c type for the * comparison helper templates. */ AbstractExpression * ExpressionUtil::comparisonFactory(ExpressionType et, AbstractExpression *lc, AbstractExpression *rc) { assert(lc); /*printf("left: %s\n", left_optimized->debug("").c_str()); fflush(stdout); printf("right: %s\n", right_optimized->debug("").c_str()); fflush(stdout);*/ //printf("%s\n", right_optimized->debug().c_str()); //fflush(stdout); // more specialization available? ConstantValueExpression *l_const = dynamic_cast<ConstantValueExpression*>(lc); ConstantValueExpression *r_const = dynamic_cast<ConstantValueExpression*>(rc); TupleValueExpression *l_tuple = dynamic_cast<TupleValueExpression*>(lc); TupleValueExpression *r_tuple = dynamic_cast<TupleValueExpression*>(rc); // this will inline getValue(), hooray! if (l_const != NULL && r_const != NULL) { // CONST-CONST can it happen? return getMoreSpecialized<ConstantValueExpression, ConstantValueExpression>(et, l_const, r_const); } else if (l_const != NULL && r_tuple != NULL) { // CONST-TUPLE return getMoreSpecialized<ConstantValueExpression, TupleValueExpression>(et, l_const, r_tuple); } else if (l_tuple != NULL && r_const != NULL) { // TUPLE-CONST return getMoreSpecialized<TupleValueExpression, ConstantValueExpression >(et, l_tuple, r_const); } else if (l_tuple != NULL && r_tuple != NULL) { // TUPLE-TUPLE return getMoreSpecialized<TupleValueExpression, TupleValueExpression>(et, l_tuple, r_tuple); } //okay, still getTypedValue is beneficial. return getGeneral(et, lc, rc); }
void ServerPlayer::playCardEffect(const Card *card){ if(card->isVirtualCard() && !card->isMute()){ room->playSkillEffect(card->getSkillName()); }else room->playCardEffect(card->objectName(), getGeneral()->isMale()); }