📄 itemutil.cpp
字号:
//////////////////////////////////////////////////////////////////////////////// Filename : ItemUtil.cpp// Written by : excel96// Description : //////////////////////////////////////////////////////////////////////////////#include "DB.h"#include "ItemUtil.h"#include "ItemInfo.h"#include "ItemInfoManager.h"#include "OptionInfo.h"#include "Player.h"#include "PlayerCreature.h"#include "Inventory.h"#include "Utility.h"#include "VSDateTime.h"#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "Treasure.h"#include "UniqueItemManager.h"#include "RelicUtil.h"#include "GoodsInfoManager.h"#include "ItemGradeManager.h"#include "item/AR.h"#include "item/SR.h"#include "item/SG.h"#include "item/SMG.h"#include "item/Magazine.h"#include "item/SlayerPortalItem.h"#include "item/Relic.h"#include "item/OustersSummonItem.h"#include "ItemFactoryManager.h"#include "VariableManager.h"#include "Gpackets/GCCreateItem.h"#include <fstream>#include <stdio.h>#include "Corpse.h"#include "MonsterCorpse.h"#include "ctf/FlagManager.h"#include "PetInfo.h"#include "PetExpInfo.h"#include "PetTypeInfo.h"#include "item/PetItem.h"//////////////////////////////////////////////////////////////////////////////// 阶老 荐 乐绰 酒捞袍牢啊?//////////////////////////////////////////////////////////////////////////////bool isStackable(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_POTION: case Item::ITEM_CLASS_MAGAZINE: case Item::ITEM_CLASS_EVENT_STAR: case Item::ITEM_CLASS_SKULL: case Item::ITEM_CLASS_SERUM: case Item::ITEM_CLASS_VAMPIRE_ETC: case Item::ITEM_CLASS_WATER: case Item::ITEM_CLASS_HOLYWATER: case Item::ITEM_CLASS_BOMB_MATERIAL: case Item::ITEM_CLASS_BOMB: case Item::ITEM_CLASS_MINE: case Item::ITEM_CLASS_EVENT_ETC: case Item::ITEM_CLASS_RESURRECT_ITEM: case Item::ITEM_CLASS_ETC: case Item::ITEM_CLASS_MIXING_ITEM: case Item::ITEM_CLASS_LARVA: case Item::ITEM_CLASS_PUPA: case Item::ITEM_CLASS_COMPOS_MEI: case Item::ITEM_CLASS_EFFECT_ITEM: case Item::ITEM_CLASS_MOON_CARD: case Item::ITEM_CLASS_PET_ENCHANT_ITEM: case Item::ITEM_CLASS_LUCKY_BAG: case Item::ITEM_CLASS_PET_FOOD: return true; default: return false; } return false;}//////////////////////////////////////////////////////////////////////////////// 阶老 荐 乐绰 酒捞袍牢啊?//////////////////////////////////////////////////////////////////////////////bool isStackable(const Item* pItem){ //if (pItem == NULL) return false; /* switch (pItem->getItemClass()) { case Item::ITEM_CLASS_POTION: case Item::ITEM_CLASS_MAGAZINE: case Item::ITEM_CLASS_EVENT_STAR: case Item::ITEM_CLASS_SKULL: case Item::ITEM_CLASS_SERUM: case Item::ITEM_CLASS_VAMPIRE_ETC: case Item::ITEM_CLASS_WATER: case Item::ITEM_CLASS_HOLYWATER: case Item::ITEM_CLASS_BOMB_MATERIAL: case Item::ITEM_CLASS_BOMB: case Item::ITEM_CLASS_MINE: return true; default: return false; } */ // by sigi. 2002.5.13 return pItem!=NULL && pItem->isStackable();}//////////////////////////////////////////////////////////////////////////////// 鞍篮 努贰胶, 鸥涝狼 酒捞袍牢啊?//////////////////////////////////////////////////////////////////////////////bool isSameItem(Item::ItemClass IClass1, Item::ItemClass IClass2, ItemType_t type1, ItemType_t type2){ return IClass1 == IClass2 && type1 == type2;}//////////////////////////////////////////////////////////////////////////////// 鞍篮 努贰胶, 鸥涝狼 酒捞袍牢啊?//////////////////////////////////////////////////////////////////////////////bool isSameItem(const Item* pItem1, const Item* pItem2){ return pItem1!=NULL && pItem2!=NULL && pItem1->getItemClass() == pItem2->getItemClass() && pItem1->getItemType() == pItem2->getItemType();}//////////////////////////////////////////////////////////////////////////////// 滴 酒捞袍阑 阶阑 荐 乐绰啊?//////////////////////////////////////////////////////////////////////////////bool canStack(const Item* pItem1, const Item* pItem2){ return isStackable(pItem1) && isSameItem(pItem1, pItem2);}//////////////////////////////////////////////////////////////////////////////// 滴 颊 公扁牢啊?//////////////////////////////////////////////////////////////////////////////bool isTwohandWeapon(const Item* pItem){ if (pItem == NULL) return false; switch (pItem->getItemClass()) { case Item::ITEM_CLASS_BLADE: case Item::ITEM_CLASS_AR: case Item::ITEM_CLASS_SR: case Item::ITEM_CLASS_SG: case Item::ITEM_CLASS_SMG: case Item::ITEM_CLASS_CROSS: case Item::ITEM_CLASS_MACE: case Item::ITEM_CLASS_VAMPIRE_WEAPON: case Item::ITEM_CLASS_OUSTERS_CHAKRAM: case Item::ITEM_CLASS_OUSTERS_WRISTLET: return true; default: return false; } return false;}//////////////////////////////////////////////////////////////////////////////// 立辟傈 公扁牢啊?//////////////////////////////////////////////////////////////////////////////bool isMeleeWeapon(const Item* pItem){ if (pItem == NULL) return false; switch (pItem->getItemClass()) { case Item::ITEM_CLASS_SWORD: case Item::ITEM_CLASS_BLADE: case Item::ITEM_CLASS_CROSS: case Item::ITEM_CLASS_MACE: case Item::ITEM_CLASS_VAMPIRE_WEAPON: case Item::ITEM_CLASS_OUSTERS_CHAKRAM: case Item::ITEM_CLASS_OUSTERS_WRISTLET: return true; default: return false; } return false;}//////////////////////////////////////////////////////////////////////////////// 傈荤, 焙牢 己流磊 公扁牢啊?//////////////////////////////////////////////////////////////////////////////bool isFighterWeapon(const Item* pItem){ if (pItem == NULL) return false; switch (pItem->getItemClass()) { case Item::ITEM_CLASS_SWORD: case Item::ITEM_CLASS_BLADE: return true; default: return false; } return false;}bool isArmsWeapon(const Item* pItem){ if (pItem == NULL) return false; switch (pItem->getItemClass()) { case Item::ITEM_CLASS_AR: case Item::ITEM_CLASS_SR: case Item::ITEM_CLASS_SG: case Item::ITEM_CLASS_SMG: return true; break; default: return false; break; } return false;}bool isClericWeapon(const Item* pItem){ if (pItem == NULL) return false; switch (pItem->getItemClass()) { case Item::ITEM_CLASS_CROSS: case Item::ITEM_CLASS_MACE: return true; default: return false; } return false;}//////////////////////////////////////////////////////////////////////////////// 醚俊 嘎绰 藕芒牢啊?//////////////////////////////////////////////////////////////////////////////bool isSuitableMagazine(const Item* pGun, const Item* pMagazine, bool hasVivid){ if (pGun == NULL || pMagazine == NULL) return false; if (pMagazine->getItemClass() != Item::ITEM_CLASS_MAGAZINE) return false; ItemType_t magazineType = pMagazine->getItemType(); MagazineInfo* pInfo = dynamic_cast<MagazineInfo*>(g_pItemInfoManager->getItemInfo( Item::ITEM_CLASS_MAGAZINE, magazineType )); switch (pGun->getItemClass()) { case Item::ITEM_CLASS_SG: if ( pInfo->getGunType() != MagazineInfo::SG ) return false;// if (magazineType == 0) return true;// if (magazineType == 1) return true;// if (magazineType == 8) return true;// if (magazineType == 9) return true; break; case Item::ITEM_CLASS_AR: if ( pInfo->getGunType() != MagazineInfo::AR ) return false;// if (magazineType == 2) return true;// if (magazineType == 3) return true;// if (magazineType == 10) return true;// if (magazineType == 11) return true; break; case Item::ITEM_CLASS_SMG: if ( pInfo->getGunType() != MagazineInfo::SMG ) return false;// if (magazineType == 4) return true;// if (magazineType == 5) return true;// if (magazineType == 12) return true;// if (magazineType == 13) return true; break; case Item::ITEM_CLASS_SR: if ( pInfo->getGunType() != MagazineInfo::SR ) return false;// if (magazineType == 6) return true;// if (magazineType == 7) return true;// if (magazineType == 14) return true;// if (magazineType == 15) return true; break; default: return false; } if ( pInfo->isVivid() && !hasVivid ) return false; return true;}//////////////////////////////////////////////////////////////////////////////// 浇饭捞绢侩 公扁牢啊?//////////////////////////////////////////////////////////////////////////////bool isSlayerWeapon(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_SWORD: case Item::ITEM_CLASS_BLADE: case Item::ITEM_CLASS_CROSS: case Item::ITEM_CLASS_MACE: case Item::ITEM_CLASS_AR: case Item::ITEM_CLASS_SR: case Item::ITEM_CLASS_SG: case Item::ITEM_CLASS_SMG: return true; default: return false; } return false;}//////////////////////////////////////////////////////////////////////////////// 轨颇捞绢侩 公扁牢啊?//////////////////////////////////////////////////////////////////////////////bool isVampireWeapon(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_VAMPIRE_WEAPON: return true; default: return false; } return false;}//////////////////////////////////////////////////////////////////////////////// 酒快胶磐胶侩 公扁牢啊?//////////////////////////////////////////////////////////////////////////////bool isOustersWeapon(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_OUSTERS_CHAKRAM: //case Item::ITEM_CLASS_OUSTERS_WRISTLET: return true; default: return false; } return false;}//////////////////////////////////////////////////////////////////////////////// 浇饭捞绢侩 规绢备牢啊?//////////////////////////////////////////////////////////////////////////////bool isSlayerArmor(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_COAT: case Item::ITEM_CLASS_TROUSER: case Item::ITEM_CLASS_GLOVE: case Item::ITEM_CLASS_BELT: case Item::ITEM_CLASS_SHOES: case Item::ITEM_CLASS_SHIELD: case Item::ITEM_CLASS_HELM: return true; default: break; } return false;}//////////////////////////////////////////////////////////////////////////////// 轨颇捞绢侩 规绢备牢啊?//////////////////////////////////////////////////////////////////////////////bool isVampireArmor(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_VAMPIRE_COAT: return true; default: break; } return false;}//////////////////////////////////////////////////////////////////////////////// 酒快胶磐胶 规绢备牢啊?//////////////////////////////////////////////////////////////////////////////bool isOustersArmor(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_OUSTERS_COAT: case Item::ITEM_CLASS_OUSTERS_BOOTS: case Item::ITEM_CLASS_OUSTERS_CIRCLET: case Item::ITEM_CLASS_OUSTERS_ARMSBAND: return true; default: break; } return false;}//////////////////////////////////////////////////////////////////////////////// 浇饭捞绢侩 厩技荤府牢啊?//////////////////////////////////////////////////////////////////////////////bool isSlayerAccessory(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_NECKLACE: case Item::ITEM_CLASS_BRACELET: case Item::ITEM_CLASS_RING: return true; default: break; } return false;}//////////////////////////////////////////////////////////////////////////////// 轨颇捞绢侩 厩技荤府牢啊?//////////////////////////////////////////////////////////////////////////////bool isVampireAccessory(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_VAMPIRE_NECKLACE: case Item::ITEM_CLASS_VAMPIRE_BRACELET: case Item::ITEM_CLASS_VAMPIRE_RING: case Item::ITEM_CLASS_VAMPIRE_AMULET: case Item::ITEM_CLASS_VAMPIRE_EARRING: return true; default: break; } return false;}//////////////////////////////////////////////////////////////////////////////// 酒快胶磐胶侩 厩技荤府牢啊?//////////////////////////////////////////////////////////////////////////////bool isOustersAccessory(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_OUSTERS_ARMSBAND: case Item::ITEM_CLASS_OUSTERS_PENDENT: case Item::ITEM_CLASS_OUSTERS_RING: case Item::ITEM_CLASS_OUSTERS_STONE: return true; default: break; } return false;}//////////////////////////////////////////////////////////////////////////////// 荐府啊瓷茄 酒捞袍牢啊?//////////////////////////////////////////////////////////////////////////////bool isRepairableItem(const Item* pItem){ // 蜡聪农 酒捞袍篮 荐府且 鞘夸啊 绝促. if (pItem == NULL || pItem->isUnique() || pItem->isTimeLimitItem()) return false; if ( pItem->isFlagItem() ) return false; switch (pItem->getItemClass()) { case Item::ITEM_CLASS_MOTORCYCLE: case Item::ITEM_CLASS_POTION: case Item::ITEM_CLASS_MAGAZINE: case Item::ITEM_CLASS_WATER: case Item::ITEM_CLASS_HOLYWATER:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -