当前位置: 首页>>代码示例>>C++>>正文


C++ PlayerCreature::getPotionPriceRatio方法代码示例

本文整理汇总了C++中PlayerCreature::getPotionPriceRatio方法的典型用法代码示例。如果您正苦于以下问题:C++ PlayerCreature::getPotionPriceRatio方法的具体用法?C++ PlayerCreature::getPotionPriceRatio怎么用?C++ PlayerCreature::getPotionPriceRatio使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PlayerCreature的用法示例。


在下文中一共展示了PlayerCreature::getPotionPriceRatio方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: getPrice


//.........这里部分代码省略.........
			OptionInfo* pOptionInfo = g_pOptionInfoManager->getOptionInfo(*itr);
			Assert(pOptionInfo != NULL);
			priceMultiplier = (double)(pOptionInfo->getPriceMultiplier());
			finalPrice += (originalPrice* priceMultiplier / 100);
		}

		originalPrice = finalPrice;
	}

	// 아이템이 손상되었다면 손상된 만큼의 가격을 깍아야 한다.
	double maxDurability = (double)computeMaxDurability(pItem);
	double curDurability = (double)(pItem->getDurability());

	// 아이템 중에 내구도가 없는 것들이 존재하기 때문에 처리해준다.
	if (maxDurability > 1) finalPrice = originalPrice* curDurability / maxDurability;
	else                   finalPrice = originalPrice;

	// 상점 시세에 따라 가격을 다시 조정해준다.
	finalPrice = finalPrice* nDiscount / 100;

	// 상점의 종류에 따라 가격을 다시 조정해준다.
	if (shopType == SHOP_RACK_MYSTERIOUS)
	{
		finalPrice *= 10;
	}

	// 크리쳐의 변화 요소에 따라 가격을 다시 조정해준다.
	if (pCreature != NULL)
	{
		if (pCreature->isSlayer())
		{
			Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);
			Attr_t CSTR = pSlayer->getSTR(ATTR_CURRENT);
			Attr_t CDEX = pSlayer->getDEX(ATTR_CURRENT);
			Attr_t CINT = pSlayer->getINT(ATTR_CURRENT);

			if ((CSTR + CDEX + CINT <= 40) &&
				(pItem->getItemClass() == Item::ITEM_CLASS_POTION) && 
				(pItem->getItemType() == 0 || pItem->getItemType() == 5))
			{
				finalPrice = getPercentValue((int)finalPrice, 70);
			}
		}
		else if (pCreature->isVampire())
		{
			// 뱀파이어가 해골을 팔 경우에는 해골의 가격을 반으로 줄여준다. 
			if (pItem->getItemClass() == Item::ITEM_CLASS_SKULL)
			{
				finalPrice = finalPrice / 2.0;
			}
		}
		else if (pCreature->isOusters())
		{
			// 아우스터즈가 해골을 팔 경우에는 해골의 가격의 75%.
			if (pItem->getItemClass() == Item::ITEM_CLASS_SKULL)
			{
				finalPrice *= 0.75;
			}
		}
	}

	// 유료 사용자이고 유료존 이면
	if (g_pVariableManager->getVariable(PREMIUM_HALF_EVENT ) )
	{
		if (
			pItem->getItemClass() == Item::ITEM_CLASS_POTION || pItem->getItemClass() == Item::ITEM_CLASS_SERUM ||
			pItem->getItemClass() == Item::ITEM_CLASS_LARVA || pItem->getItemClass() == Item::ITEM_CLASS_PUPA ||
			pItem->getItemClass() == Item::ITEM_CLASS_COMPOS_MEI
		)
		{
			if (pCreature->isPC() )
			{
				PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);
				GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPC->getPlayer());
				if (pGamePlayer->isPayPlaying() )
				{
					// 반 값.
					finalPrice = finalPrice / 2;
				}
			}
		}
	}

	// Blood Bible 보너스 적용
	if (pItem->getItemClass() == Item::ITEM_CLASS_POTION || pItem->getItemClass() == Item::ITEM_CLASS_SERUM )
	{
		if (pCreature->isPC() )
		{
			PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature);
			int ratio = pPC->getPotionPriceRatio();
			if (ratio != 0 )
			{
				// ratio 값이 마이너스 값이다.
				finalPrice += getPercentValue((int)finalPrice, ratio);
			}
		}
	}

	return max(1, (int)finalPrice);
}
开发者ID:hillwah,项目名称:darkeden,代码行数:101,代码来源:PriceManager.cpp


注:本文中的PlayerCreature::getPotionPriceRatio方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。