#ifdef __NEW_PROP_PARAMETER
BOOL CProject::LoadPropItem( LPCTSTR lpszFileName, CFixedArray< ItemProp >* apObjProp )
{
CScript scanner;
if( scanner.Load( lpszFileName, FALSE ) == FALSE )
{
#ifdef __CLIENT
MessageBox( g_Neuz.GetSafeHwnd(), "LoadPropItem", "flyff", MB_OK );
ADDERRORMSG( "LoadPropItem file open error" );
#endif //__CLIENT
return FALSE;
}
ItemProp prop;
ZeroMemory( &prop, sizeof(prop) );
int nVer = scanner.GetNumber(); // version
#ifdef __NEW_STACKABLE_AMPS
int nAmpCopyID = 60000;
#endif // __NEW_STACKABLE_AMPS
while( scanner.tok != FINISHED )
{
DWORD dwID = scanner.GetNumber(); // IID_
if( dwID <= 0 )
{
Error( "%s ID:%d last_read(ID:%d name:%s)", lpszFileName, dwID, prop.dwID, prop.szName);
return FALSE;
}
//#ifdef __CLIENT
prop.nVer = nVer;
//#endif // __CLIENT
prop.dwID = dwID;
scanner.GetToken();
// _tcscpy( prop.szName, scanner.token );
scanner.Token.TrimRight();
_tcscpy( prop.szName, (LPCSTR)scanner.Token );
prop.dwNum = scanner.GetNumber();
prop.dwPackMax = scanner.GetNumber();
prop.dwItemKind1 = scanner.GetNumber();
prop.dwItemKind2 = scanner.GetNumber();
prop.dwItemKind3 = scanner.GetNumber();
prop.dwItemJob = scanner.GetNumber();
prop.bPermanence = scanner.GetNumber();
prop.dwUseable = scanner.GetNumber();
prop.dwItemSex = scanner.GetNumber();
prop.dwCost = scanner.GetNumber();
prop.dwEndurance = scanner.GetNumber();
prop.nAbrasion = scanner.GetNumber();
prop.nMaxRepair = scanner.GetNumber();
prop.dwHanded = scanner.GetNumber();
prop.dwFlag = scanner.GetNumber();
prop.dwParts = scanner.GetNumber();
prop.dwPartsub = scanner.GetNumber();
prop.bPartsFile = scanner.GetNumber();
prop.dwExclusive = scanner.GetNumber();
prop.dwBasePartsIgnore = scanner.GetNumber();
prop.dwItemLV = scanner.GetNumber();
prop.dwItemRare = scanner.GetNumber();
prop.dwShopAble = scanner.GetNumber();
prop.nLog = scanner.GetNumber();
prop.bCharged = scanner.GetNumber();
prop.bCharged = ( prop.bCharged != 1? 0: 1 );
prop.dwLinkKindBullet = scanner.GetNumber();
prop.dwLinkKind = scanner.GetNumber();
prop.dwAbilityMin = scanner.GetNumber();
prop.dwAbilityMax = scanner.GetNumber();
prop.eItemType = static_cast<SAI79::ePropType>(scanner.GetNumber()) ;
prop.wItemEatk = static_cast<short>(scanner.GetNumber());
prop.dwParry = scanner.GetNumber();
prop.dwblockRating = scanner.GetNumber();
prop.nAddSkillMin = scanner.GetNumber();
prop.nAddSkillMax = scanner.GetNumber();
prop.dwAtkStyle = scanner.GetNumber();
prop.dwWeaponType = scanner.GetNumber();
prop.dwItemAtkOrder1 = scanner.GetNumber();
prop.dwItemAtkOrder2 = scanner.GetNumber();
prop.dwItemAtkOrder3 = scanner.GetNumber();
prop.dwItemAtkOrder4 = scanner.GetNumber();
prop.tmContinuousPain = scanner.GetNumber();
prop.nShellQuantity = scanner.GetNumber();
prop.dwRecoil = scanner.GetNumber();
prop.dwLoadingTime = scanner.GetNumber();
prop.nAdjHitRate = scanner.GetNumber();
prop.fAttackSpeed = scanner.GetFloat();
prop.dwDmgShift = scanner.GetNumber();
prop.dwAttackRange = scanner.GetNumber();
prop.nProbability = scanner.GetNumber();
prop.dwDestParam[0] = scanner.GetNumber();
prop.dwDestParam[1] = scanner.GetNumber();
#ifdef __PROP_0827
prop.dwDestParam[2] = scanner.GetNumber();
#endif // __PROP_0827
#if __VER >= 19
//prop.dwDestParam[3] = scanner.GetNumber();
//prop.dwDestParam[4] = scanner.GetNumber();
//prop.dwDestParam[5] = scanner.GetNumber();
#endif//__VER >= 19
prop.nAdjParamVal[0] = scanner.GetNumber();
prop.nAdjParamVal[1] = scanner.GetNumber();
#ifdef __PROP_0827
prop.nAdjParamVal[2] = scanner.GetNumber();
#endif // __PROP_0827
#if __VER >= 19
//prop.nAdjParamVal[3] = scanner.GetNumber();
//prop.nAdjParamVal[4] = scanner.GetNumber();
//prop.nAdjParamVal[5] = scanner.GetNumber();
#endif//__VER >= 19
prop.dwChgParamVal[0] = scanner.GetNumber();
prop.dwChgParamVal[1] = scanner.GetNumber();
#ifdef __PROP_0827
prop.dwChgParamVal[2] = scanner.GetNumber();
#endif // __PROP_0827
#if __VER >= 19
//prop.dwChgParamVal[3] = scanner.GetNumber();
//prop.dwChgParamVal[4] = scanner.GetNumber();
//prop.dwChgParamVal[5] = scanner.GetNumber();
#endif//__VER >= 19
prop.nDestData1[0] = scanner.GetNumber();
prop.nDestData1[1] = scanner.GetNumber();
prop.nDestData1[2] = scanner.GetNumber();
#if __VER >= 19
//prop.nDestData1[3] = scanner.GetNumber();
//prop.nDestData1[4] = scanner.GetNumber();
//prop.nDestData1[5] = scanner.GetNumber();
#endif//__VER >= 19
prop.dwActiveSkill = scanner.GetNumber();
prop.dwActiveSkillLv = scanner.GetNumber();
prop.dwActiveSkillRate = scanner.GetNumber();
prop.dwReqMp = scanner.GetNumber();
prop.dwReqFp = scanner.GetNumber();
prop.dwReqDisLV = scanner.GetNumber();
prop.dwReSkill1 = scanner.GetNumber();
prop.dwReSkillLevel1 = scanner.GetNumber();
prop.dwReSkill2 = scanner.GetNumber();
prop.dwReSkillLevel2 = scanner.GetNumber();
prop.dwSkillReadyType = scanner.GetNumber();
prop.dwSkillReady = scanner.GetNumber();
prop._dwSkillRange = scanner.GetNumber();
prop.dwSfxElemental = scanner.GetNumber();
prop.dwSfxObj = scanner.GetNumber();
prop.dwSfxObj2 = scanner.GetNumber();
prop.dwSfxObj3 = scanner.GetNumber();
prop.dwSfxObj4 = scanner.GetNumber();
prop.dwSfxObj5 = scanner.GetNumber();
prop.dwUseMotion = scanner.GetNumber();
prop.dwCircleTime = scanner.GetNumber();
prop.dwSkillTime = scanner.GetNumber();
prop.dwExeTarget = scanner.GetNumber();
prop.dwUseChance = scanner.GetNumber();
prop.dwSpellRegion = scanner.GetNumber();
prop.dwSpellType = scanner.GetNumber();
prop.dwReferStat1 = scanner.GetNumber();
prop.dwReferStat2 = scanner.GetNumber();
prop.dwReferTarget1 = scanner.GetNumber();
prop.dwReferTarget2 = scanner.GetNumber();
prop.dwReferValue1 = scanner.GetNumber();
prop.dwReferValue2 = scanner.GetNumber();
prop.dwSkillType = scanner.GetNumber();
prop.nItemResistElecricity = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistFire = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistWind = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistWater = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistEarth = (int)(scanner.GetFloat() * 100.0f);
prop.nEvildoing = scanner.GetNumber();
prop.dwExpertLV = scanner.GetNumber();
prop.dwExpertMax = scanner.GetNumber();
prop.dwSubDefine = scanner.GetNumber();
prop.dwExp = scanner.GetNumber();
prop.dwComboStyle = scanner.GetNumber();
prop.fFlightSpeed = scanner.GetFloat();
prop.fFlightLRAngle = scanner.GetFloat();
prop.fFlightTBAngle = scanner.GetFloat();
prop.dwFlightLimit = scanner.GetNumber();
prop.dwFFuelReMax = scanner.GetNumber();
prop.dwAFuelReMax = scanner.GetNumber();
prop.dwFuelRe = scanner.GetNumber();
prop.dwLimitLevel1 = scanner.GetNumber();
prop.nReflect = scanner.GetNumber();
prop.dwSndAttack1 = scanner.GetNumber();
prop.dwSndAttack2 = scanner.GetNumber();
// szIcon
scanner.GetToken();
scanner.GetToken();
#if defined(__CLIENT) || defined(__DBSERVER)
_tcsncpy( prop.szIcon, scanner.token, sizeof(prop.szIcon)-1 );
prop.szCommand[sizeof(prop.szIcon)-1] = 0;
#endif
#ifdef __VERIFY_0201
_tcsncpy( prop.szIcon, scanner.token, sizeof(prop.szIcon)-1 );
prop.szCommand[sizeof(prop.szIcon)-1] = 0;
#endif // __VERIFY_0201
scanner.GetToken();
// dwQuestId
prop.dwQuestId = scanner.GetNumber( );
// szTextFileName
scanner.GetToken();
scanner.GetToken();
_tcscpy( prop.szTextFileName, scanner.token );
scanner.GetToken();
// szCommand
scanner.GetToken();
#if defined(__CLIENT) || defined(__DBSERVER)
_tcsncpy( prop.szCommand, scanner.token, sizeof(prop.szCommand)-1 );
prop.szCommand[sizeof(prop.szCommand)-1] = 0;
#endif
prop.nMinLimitLevel = scanner.GetNumber();
prop.nMaxLimitLevel = scanner.GetNumber();
prop.nItemGroup = scanner.GetNumber();
prop.nUseLimitGroup = scanner.GetNumber();
prop.nMaxDuplication = scanner.GetNumber();
prop.nEffectValue = scanner.GetNumber();
prop.nTargetMinEnchant = scanner.GetNumber();
prop.nTargetMaxEnchant = scanner.GetNumber();
prop.bResetBind = scanner.GetNumber();
prop.nBindCondition = scanner.GetNumber();
prop.nResetBindCondition = scanner.GetNumber();
prop.dwHitActiveSkillId = scanner.GetNumber();
prop.dwHitActiveSkillLv = scanner.GetNumber();
prop.dwHitActiveSkillProb = scanner.GetNumber();
prop.dwHitActiveSkillTarget = scanner.GetNumber();
prop.dwDamageActiveSkillId = scanner.GetNumber();
prop.dwDamageActiveSkillLv = scanner.GetNumber();
prop.dwDamageActiveSkillProb = scanner.GetNumber();
prop.dwDamageActiveSkillTarget = scanner.GetNumber();
prop.dwEquipActiveSkillId = scanner.GetNumber();
prop.dwEquipActiveSkillLv = scanner.GetNumber();
prop.dwSmelting = scanner.GetNumber();
prop.dwAttsmelting = scanner.GetNumber();
prop.dwGemsmelting = scanner.GetNumber();
prop.dwPierce = scanner.GetNumber();
prop.dwUprouse = scanner.GetNumber();
prop.bAbsoluteTime = scanner.GetNumber();
//prop.bCanSavePotion = scanner.GetNumber();
/*
#if __VER >= 18
prop.dwItemGrade = scanner.GetNumber();
prop.bCanTrade = scanner.GetNumber();
prop.dwMainCategory = scanner.GetNumber();
prop.dwSubCategory = scanner.GetNumber();
prop.bCanHaveServerTransform = scanner.GetNumber();
prop.bCanLooksChange = scanner.GetNumber();
prop.bIsLooksChangeMaterial = scanner.GetNumber();
#endif//__VER >= 18
*/
#ifdef __WORLDSERVER
#ifdef __INTERNALSERVER
prop.nLog = -1; // °³¹ß¼·¿¡¼± ÀÌ°Å ¹«½Ã.
#endif
if( g_eLocal.GetState( EVE_SCHOOL ) )
{
prop.dwShopAble = 1;
if( prop.dwItemRare == (DWORD)-1 )
prop.dwItemRare = prop.dwItemLV;
}
#ifdef __CONSIGNMENT
prop.dwMainCategory = TYPE1_ALLEXCEPTION;
prop.dwSubCategory = TYPE2_ALLEXCEPTION_ALLEXCEPTION;
switch(prop.dwItemKind1)
{
case IK1_WEAPON:
{
prop.dwMainCategory = TYPE1_WEAPON;
switch(prop.dwItemKind3)
{
case IK3_AXE:
{
if( prop.dwHanded == HD_TWO )
prop.dwSubCategory = TYPE2_WEAPON_TWOAXE;
else
prop.dwSubCategory = TYPE2_WEAPON_ONEAXE;
}
break;
case IK3_SWD:
{
if( prop.dwHanded == HD_TWO )
prop.dwSubCategory = TYPE2_WEAPON_TWOSWORD;
else
prop.dwSubCategory = TYPE2_WEAPON_ONESWORD;
}
break;
case IK3_CHEERSTICK:
{
prop.dwSubCategory = TYPE2_WEAPON_STICK;
}
break;
case IK3_KNUCKLEHAMMER:
{
prop.dwSubCategory = TYPE2_WEAPON_KNUCKLE;
}
break;
case IK3_WAND:
{
prop.dwSubCategory = TYPE2_WEAPON_WAND;
}
break;
case IK3_STAFF:
{
prop.dwSubCategory = TYPE2_WEAPON_STAFF;
}
break;
case IK3_BOW:
{
prop.dwSubCategory = TYPE2_WEAPON_BOW;
}
break;
case IK3_YOYO:
{
prop.dwSubCategory = TYPE2_WEAPON_YOYO;
}
break;
}
}
break;
case IK1_ARMOR:
{
if( prop.dwItemKind2 == IK2_ARMOR || prop.dwItemKind2 == IK2_ARMORETC )
prop.dwMainCategory = TYPE1_ARMOR;
else
prop.dwMainCategory = TYPE1_COSTUME;
switch(prop.dwItemKind3)
{
case IK3_SHIELD:
{
switch(prop.dwItemJob)
{
case JOB_MENTALIST_HERO:
{
prop.dwSubCategory = TYPE2_ARMOR_MAGICBOOK;
}
break;
case JOB_FORCEMASTER_HERO:
{
prop.dwSubCategory = TYPE2_ARMOR_FORCEZEM;
}
break;
default:
{
prop.dwSubCategory = TYPE2_ARMOR_SHIELD;
}
break;
}
}
break;
case IK3_HELMET:
{
prop.dwSubCategory = TYPE2_ARMOR_HELMET;
}
break;
case IK3_SUIT:
{
prop.dwSubCategory = TYPE2_ARMOR_SUIT;
}
break;
case IK3_GAUNTLET:
{
prop.dwSubCategory = TYPE2_ARMOR_GUNTLET;
}
break;
case IK3_BOOTS:
{
prop.dwSubCategory = TYPE2_ARMOR_BOOTS;
}
break;
case IK3_HAT:
{
prop.dwSubCategory = TYPE2_COSTUME_HAT;
}
break;
case IK3_CLOTH:
{
prop.dwSubCategory = TYPE2_COSTUME_CLOTH;
}
break;
case IK3_GLOVE:
{
prop.dwSubCategory = TYPE2_COSTUME_GLOVE;
}
break;
case IK3_SHOES:
{
prop.dwSubCategory = TYPE2_COSTUME_SHOES;
}
break;
case IK3_CLOAK:
{
prop.dwSubCategory = TYPE2_COSTUME_CLOAK;
}
break;
case IK3_MASK:
{
prop.dwSubCategory = TYPE2_COSTUME_MASK;
}
break;
}
}
break;
case IK1_SYSTEM:
{
switch( prop.dwItemKind2 )
{
case IK2_SYSTEM:
{
if( prop.dwItemKind3 == IK3_TICKET )
{
prop.dwMainCategory = TYPE1_CONSUME;
prop.dwSubCategory = TYPE2_CONSUME_SCROLL;
}
}
break;
case IK2_BUFF:
{
prop.dwMainCategory = TYPE1_CONSUME;
if( prop.dwItemKind3 == IK3_SCROLL )
prop.dwSubCategory = TYPE2_CONSUME_SCROLL;
else
prop.dwSubCategory = TYPE2_CONSUME_POTION;
}
break;
}
}
break;
case IK1_CHARGED:
{
if( prop.dwItemKind3 == IK3_SCROLL )
{
prop.dwMainCategory = TYPE1_CONSUME;
prop.dwSubCategory = TYPE2_CONSUME_SCROLL;
}else if( prop.dwItemKind3 == IK3_POTION || prop.dwItemKind3 == IK3_COOKING || prop.dwItemKind3 == IK3_REFRESHER )
{
prop.dwMainCategory = TYPE1_CONSUME;
prop.dwSubCategory = TYPE2_CONSUME_POTION;
}
}
break;
case IK1_GENERAL:
{
switch(prop.dwItemKind2)
{
case IK2_CHARM:
{
prop.dwMainCategory = TYPE1_CONSUME;
prop.dwSubCategory = TYPE2_CONSUME_POSTER;
}
break;
case IK2_REFRESHER:
case IK2_FOOD:
case IK2_POTION:
{
prop.dwMainCategory = TYPE1_CONSUME;
prop.dwSubCategory = TYPE2_CONSUME_POTION;
}
break;
case IK2_GENERAL:
{
if( prop.dwItemKind2 == IK2_MATERIAL )
{
prop.dwMainCategory = TYPE1_MATERIAL;
prop.dwSubCategory = TYPE2_MATERIAL_EXCEPTION;
}
else
{
switch(prop.dwItemKind3)
{
case IK3_EGG:
{
prop.dwMainCategory = TYPE1_PET;
prop.dwSubCategory = TYPE2_PET_EGG;
}
break;
case IK3_PET:
{
prop.dwMainCategory = TYPE1_PET;
if( prop.IsVisPet() )
prop.dwSubCategory = TYPE2_PET_BUFF;
else
prop.dwSubCategory = TYPE2_PET_PICKUP;
}
break;
}
}
}
break;
case IK2_JEWELRY:
{
prop.dwMainCategory = TYPE1_ACCESSORY;
switch(prop.dwItemKind3)
{
case IK3_RING:
{
prop.dwSubCategory = TYPE2_ACCESSORY_RING;
}
break;
case IK3_NECKLACE:
{
prop.dwSubCategory = TYPE2_ACCESSORY_NECKLACE;
}
break;
case IK3_EARRING:
{
prop.dwSubCategory = TYPE2_ACCESSORY_EARRING;
}
break;
}
}
break;
}
}
break;
}
#endif
#endif // __WORLDSERVER
if( ::GetLanguage() == LANG_THA )
{
if( prop.dwLimitLevel1 > 0 && prop.dwLimitLevel1 <= 5 )
prop.dwLimitLevel1 = 1;
else if( prop.dwLimitLevel1 > 5 && prop.dwLimitLevel1 <= 15 )
prop.dwLimitLevel1 = 5;
else if( prop.dwLimitLevel1 > 15 && prop.dwLimitLevel1 <= 30 )
prop.dwLimitLevel1 = 15;
else if( prop.dwLimitLevel1 > 30 && prop.dwLimitLevel1 <= 45 )
prop.dwLimitLevel1 = 30;
else if( prop.dwLimitLevel1 > 45 && prop.dwLimitLevel1 < 60 )
prop.dwLimitLevel1 = 45;
}
// temp crossbow fix
if( prop.dwID == II_WEA_BOW_BEHECROSSBOW1 )
prop.dwItemKind3 = IK3_CROSSBOW;
// end fix
if( nVer <= __VER )
{
// TRACE( "PropItem = %d, %s\n", prop.dwID, prop.szName );
m_mapII.insert( map<string, DWORD>::value_type( prop.szName, prop.dwID ) );
#if __VER >= 9 // __ULTIMATE
#ifdef __CLIENT
if( prop.IsUltimate() )
{
CString strName = prop.szName;
int nFind = strName.Find( "@", 0 );
if( nFind > -1 )
{
strName.Delete( nFind - 1, 2 );
lstrcpy( prop.szName, (LPCTSTR)strName );
}
}
#endif // __CLIENT
#endif // __ULTIMATE
apObjProp->SetAtGrow( prop.dwID, &prop);
#ifdef __NEW_STACKABLE_AMPS
if( prop.IsExperienceScroll())
{
if( prop.nMaxDuplication > 1 )
{
int nOrginalID = prop.dwID;
int nCopy[4];
nCopy[0], nCopy[1], nCopy[2], nCopy[3] = 0;
prop.dwID = nAmpCopyID;
for( int i = 0; i < (prop.nMaxDuplication-1); i++ )
{
nCopy[i] = prop.dwID;
m_mapII.insert( map<string, DWORD>::value_type( prop.szName, prop.dwID ) );
apObjProp->SetAtGrow( prop.dwID, &prop );
prop.dwID++;
nAmpCopyID++;
}
AMP_STORE_INFO* pAmpInfo = new AMP_STORE_INFO;
prj.m_mapAmpStore.insert( make_pair( nOrginalID, pAmpInfo ));
pAmpInfo->dwIDSecond = nCopy[0];
pAmpInfo->dwIDThird = nCopy[1];
pAmpInfo->dwIDFourth = nCopy[2];
pAmpInfo->dwIDFifth = nCopy[3];
}
}
#endif // __NEW_STACKABLE_AMPS
}
nVer = scanner.GetNumber(); // version;
}
apObjProp->Optimize();
return TRUE;
}
#endif // __NEW_PROP_PARAMETER
BOOL CProject::LoadPropItem( LPCTSTR lpszFileName, CFixedArray< ItemProp >* apObjProp )
{
CScript scanner;
if( scanner.Load( lpszFileName, FALSE ) == FALSE )
{
#ifdef __CLIENT
MessageBox( g_Neuz.GetSafeHwnd(), "LoadPropItem", "flyff", MB_OK );
ADDERRORMSG( "LoadPropItem file open error" );
#endif //__CLIENT
return FALSE;
}
ItemProp prop;
ZeroMemory( &prop, sizeof(prop) );
int nVer = scanner.GetNumber(); // version
#ifdef __NEW_STACKABLE_AMPS
int nAmpCopyID = 60000;
#endif // __NEW_STACKABLE_AMPS
while( scanner.tok != FINISHED )
{
DWORD dwID = scanner.GetNumber(); // IID_
if( dwID <= 0 )
{
Error( "%s ID:%d last_read(ID:%d name:%s)", lpszFileName, dwID, prop.dwID, prop.szName);
return FALSE;
}
//#ifdef __CLIENT
prop.nVer = nVer;
//#endif // __CLIENT
prop.dwID = dwID;
scanner.GetToken();
// _tcscpy( prop.szName, scanner.token );
scanner.Token.TrimRight();
_tcscpy( prop.szName, (LPCSTR)scanner.Token );
prop.dwNum = scanner.GetNumber();
prop.dwPackMax = scanner.GetNumber();
prop.dwItemKind1 = scanner.GetNumber();
prop.dwItemKind2 = scanner.GetNumber();
prop.dwItemKind3 = scanner.GetNumber();
prop.dwItemJob = scanner.GetNumber();
prop.bPermanence = scanner.GetNumber();
prop.dwUseable = scanner.GetNumber();
prop.dwItemSex = scanner.GetNumber();
prop.dwCost = scanner.GetNumber();
prop.dwEndurance = scanner.GetNumber();
prop.nAbrasion = scanner.GetNumber();
prop.nMaxRepair = scanner.GetNumber();
prop.dwHanded = scanner.GetNumber();
prop.dwFlag = scanner.GetNumber();
prop.dwParts = scanner.GetNumber();
prop.dwPartsub = scanner.GetNumber();
prop.bPartsFile = scanner.GetNumber();
prop.dwExclusive = scanner.GetNumber();
prop.dwBasePartsIgnore = scanner.GetNumber();
prop.dwItemLV = scanner.GetNumber();
prop.dwItemRare = scanner.GetNumber();
prop.dwShopAble = scanner.GetNumber();
prop.nLog = scanner.GetNumber();
prop.bCharged = scanner.GetNumber();
prop.bCharged = ( prop.bCharged != 1? 0: 1 );
prop.dwLinkKindBullet = scanner.GetNumber();
prop.dwLinkKind = scanner.GetNumber();
prop.dwAbilityMin = scanner.GetNumber();
prop.dwAbilityMax = scanner.GetNumber();
prop.eItemType = static_cast<SAI79::ePropType>(scanner.GetNumber()) ;
prop.wItemEatk = static_cast<short>(scanner.GetNumber());
prop.dwParry = scanner.GetNumber();
prop.dwblockRating = scanner.GetNumber();
prop.nAddSkillMin = scanner.GetNumber();
prop.nAddSkillMax = scanner.GetNumber();
prop.dwAtkStyle = scanner.GetNumber();
prop.dwWeaponType = scanner.GetNumber();
prop.dwItemAtkOrder1 = scanner.GetNumber();
prop.dwItemAtkOrder2 = scanner.GetNumber();
prop.dwItemAtkOrder3 = scanner.GetNumber();
prop.dwItemAtkOrder4 = scanner.GetNumber();
prop.tmContinuousPain = scanner.GetNumber();
prop.nShellQuantity = scanner.GetNumber();
prop.dwRecoil = scanner.GetNumber();
prop.dwLoadingTime = scanner.GetNumber();
prop.nAdjHitRate = scanner.GetNumber();
prop.fAttackSpeed = scanner.GetFloat();
prop.dwDmgShift = scanner.GetNumber();
prop.dwAttackRange = scanner.GetNumber();
prop.nProbability = scanner.GetNumber();
prop.dwDestParam[0] = scanner.GetNumber();
prop.dwDestParam[1] = scanner.GetNumber();
#ifdef __PROP_0827
prop.dwDestParam[2] = scanner.GetNumber();
#endif // __PROP_0827
#if __VER >= 19
//prop.dwDestParam[3] = scanner.GetNumber();
//prop.dwDestParam[4] = scanner.GetNumber();
//prop.dwDestParam[5] = scanner.GetNumber();
#endif//__VER >= 19
prop.nAdjParamVal[0] = scanner.GetNumber();
prop.nAdjParamVal[1] = scanner.GetNumber();
#ifdef __PROP_0827
prop.nAdjParamVal[2] = scanner.GetNumber();
#endif // __PROP_0827
#if __VER >= 19
//prop.nAdjParamVal[3] = scanner.GetNumber();
//prop.nAdjParamVal[4] = scanner.GetNumber();
//prop.nAdjParamVal[5] = scanner.GetNumber();
#endif//__VER >= 19
prop.dwChgParamVal[0] = scanner.GetNumber();
prop.dwChgParamVal[1] = scanner.GetNumber();
#ifdef __PROP_0827
prop.dwChgParamVal[2] = scanner.GetNumber();
#endif // __PROP_0827
#if __VER >= 19
//prop.dwChgParamVal[3] = scanner.GetNumber();
//prop.dwChgParamVal[4] = scanner.GetNumber();
//prop.dwChgParamVal[5] = scanner.GetNumber();
#endif//__VER >= 19
prop.nDestData1[0] = scanner.GetNumber();
prop.nDestData1[1] = scanner.GetNumber();
prop.nDestData1[2] = scanner.GetNumber();
#if __VER >= 19
//prop.nDestData1[3] = scanner.GetNumber();
//prop.nDestData1[4] = scanner.GetNumber();
//prop.nDestData1[5] = scanner.GetNumber();
#endif//__VER >= 19
prop.dwActiveSkill = scanner.GetNumber();
prop.dwActiveSkillLv = scanner.GetNumber();
prop.dwActiveSkillRate = scanner.GetNumber();
prop.dwReqMp = scanner.GetNumber();
prop.dwReqFp = scanner.GetNumber();
prop.dwReqDisLV = scanner.GetNumber();
prop.dwReSkill1 = scanner.GetNumber();
prop.dwReSkillLevel1 = scanner.GetNumber();
prop.dwReSkill2 = scanner.GetNumber();
prop.dwReSkillLevel2 = scanner.GetNumber();
prop.dwSkillReadyType = scanner.GetNumber();
prop.dwSkillReady = scanner.GetNumber();
prop._dwSkillRange = scanner.GetNumber();
prop.dwSfxElemental = scanner.GetNumber();
prop.dwSfxObj = scanner.GetNumber();
prop.dwSfxObj2 = scanner.GetNumber();
prop.dwSfxObj3 = scanner.GetNumber();
prop.dwSfxObj4 = scanner.GetNumber();
prop.dwSfxObj5 = scanner.GetNumber();
prop.dwUseMotion = scanner.GetNumber();
prop.dwCircleTime = scanner.GetNumber();
prop.dwSkillTime = scanner.GetNumber();
prop.dwExeTarget = scanner.GetNumber();
prop.dwUseChance = scanner.GetNumber();
prop.dwSpellRegion = scanner.GetNumber();
prop.dwSpellType = scanner.GetNumber();
prop.dwReferStat1 = scanner.GetNumber();
prop.dwReferStat2 = scanner.GetNumber();
prop.dwReferTarget1 = scanner.GetNumber();
prop.dwReferTarget2 = scanner.GetNumber();
prop.dwReferValue1 = scanner.GetNumber();
prop.dwReferValue2 = scanner.GetNumber();
prop.dwSkillType = scanner.GetNumber();
prop.nItemResistElecricity = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistFire = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistWind = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistWater = (int)(scanner.GetFloat() * 100.0f);
prop.nItemResistEarth = (int)(scanner.GetFloat() * 100.0f);
prop.nEvildoing = scanner.GetNumber();
prop.dwExpertLV = scanner.GetNumber();
prop.dwExpertMax = scanner.GetNumber();
prop.dwSubDefine = scanner.GetNumber();
prop.dwExp = scanner.GetNumber();
prop.dwComboStyle = scanner.GetNumber();
prop.fFlightSpeed = scanner.GetFloat();
prop.fFlightLRAngle = scanner.GetFloat();
prop.fFlightTBAngle = scanner.GetFloat();
prop.dwFlightLimit = scanner.GetNumber();
prop.dwFFuelReMax = scanner.GetNumber();
prop.dwAFuelReMax = scanner.GetNumber();
prop.dwFuelRe = scanner.GetNumber();
prop.dwLimitLevel1 = scanner.GetNumber();
prop.nReflect = scanner.GetNumber();
prop.dwSndAttack1 = scanner.GetNumber();
prop.dwSndAttack2 = scanner.GetNumber();
// szIcon
scanner.GetToken();
scanner.GetToken();
#if defined(__CLIENT) || defined(__DBSERVER)
_tcsncpy( prop.szIcon, scanner.token, sizeof(prop.szIcon)-1 );
prop.szCommand[sizeof(prop.szIcon)-1] = 0;
#endif
#ifdef __VERIFY_0201
_tcsncpy( prop.szIcon, scanner.token, sizeof(prop.szIcon)-1 );
prop.szCommand[sizeof(prop.szIcon)-1] = 0;
#endif // __VERIFY_0201
scanner.GetToken();
// dwQuestId
prop.dwQuestId = scanner.GetNumber( );
// szTextFileName
scanner.GetToken();
scanner.GetToken();
_tcscpy( prop.szTextFileName, scanner.token );
scanner.GetToken();
// szCommand
scanner.GetToken();
#if defined(__CLIENT) || defined(__DBSERVER)
_tcsncpy( prop.szCommand, scanner.token, sizeof(prop.szCommand)-1 );
prop.szCommand[sizeof(prop.szCommand)-1] = 0;
#endif
prop.nMinLimitLevel = scanner.GetNumber();
prop.nMaxLimitLevel = scanner.GetNumber();
prop.nItemGroup = scanner.GetNumber();
prop.nUseLimitGroup = scanner.GetNumber();
prop.nMaxDuplication = scanner.GetNumber();
prop.nEffectValue = scanner.GetNumber();
prop.nTargetMinEnchant = scanner.GetNumber();
prop.nTargetMaxEnchant = scanner.GetNumber();
prop.bResetBind = scanner.GetNumber();
prop.nBindCondition = scanner.GetNumber();
prop.nResetBindCondition = scanner.GetNumber();
prop.dwHitActiveSkillId = scanner.GetNumber();
prop.dwHitActiveSkillLv = scanner.GetNumber();
prop.dwHitActiveSkillProb = scanner.GetNumber();
prop.dwHitActiveSkillTarget = scanner.GetNumber();
prop.dwDamageActiveSkillId = scanner.GetNumber();
prop.dwDamageActiveSkillLv = scanner.GetNumber();
prop.dwDamageActiveSkillProb = scanner.GetNumber();
prop.dwDamageActiveSkillTarget = scanner.GetNumber();
prop.dwEquipActiveSkillId = scanner.GetNumber();
prop.dwEquipActiveSkillLv = scanner.GetNumber();
prop.dwSmelting = scanner.GetNumber();
prop.dwAttsmelting = scanner.GetNumber();
prop.dwGemsmelting = scanner.GetNumber();
prop.dwPierce = scanner.GetNumber();
prop.dwUprouse = scanner.GetNumber();
prop.bAbsoluteTime = scanner.GetNumber();
//prop.bCanSavePotion = scanner.GetNumber();
/*
#if __VER >= 18
prop.dwItemGrade = scanner.GetNumber();
prop.bCanTrade = scanner.GetNumber();
prop.dwMainCategory = scanner.GetNumber();
prop.dwSubCategory = scanner.GetNumber();
prop.bCanHaveServerTransform = scanner.GetNumber();
prop.bCanLooksChange = scanner.GetNumber();
prop.bIsLooksChangeMaterial = scanner.GetNumber();
#endif//__VER >= 18
*/
#ifdef __WORLDSERVER
#ifdef __INTERNALSERVER
prop.nLog = -1; // °³¹ß¼·¿¡¼± ÀÌ°Å ¹«½Ã.
#endif
if( g_eLocal.GetState( EVE_SCHOOL ) )
{
prop.dwShopAble = 1;
if( prop.dwItemRare == (DWORD)-1 )
prop.dwItemRare = prop.dwItemLV;
}
#ifdef __CONSIGNMENT
prop.dwMainCategory = TYPE1_ALLEXCEPTION;
prop.dwSubCategory = TYPE2_ALLEXCEPTION_ALLEXCEPTION;
switch(prop.dwItemKind1)
{
case IK1_WEAPON:
{
prop.dwMainCategory = TYPE1_WEAPON;
switch(prop.dwItemKind3)
{
case IK3_AXE:
{
if( prop.dwHanded == HD_TWO )
prop.dwSubCategory = TYPE2_WEAPON_TWOAXE;
else
prop.dwSubCategory = TYPE2_WEAPON_ONEAXE;
}
break;
case IK3_SWD:
{
if( prop.dwHanded == HD_TWO )
prop.dwSubCategory = TYPE2_WEAPON_TWOSWORD;
else
prop.dwSubCategory = TYPE2_WEAPON_ONESWORD;
}
break;
case IK3_CHEERSTICK:
{
prop.dwSubCategory = TYPE2_WEAPON_STICK;
}
break;
case IK3_KNUCKLEHAMMER:
{
prop.dwSubCategory = TYPE2_WEAPON_KNUCKLE;
}
break;
case IK3_WAND:
{
prop.dwSubCategory = TYPE2_WEAPON_WAND;
}
break;
case IK3_STAFF:
{
prop.dwSubCategory = TYPE2_WEAPON_STAFF;
}
break;
case IK3_BOW:
{
prop.dwSubCategory = TYPE2_WEAPON_BOW;
}
break;
case IK3_YOYO:
{
prop.dwSubCategory = TYPE2_WEAPON_YOYO;
}
break;
}
}
break;
case IK1_ARMOR:
{
if( prop.dwItemKind2 == IK2_ARMOR || prop.dwItemKind2 == IK2_ARMORETC )
prop.dwMainCategory = TYPE1_ARMOR;
else
prop.dwMainCategory = TYPE1_COSTUME;
switch(prop.dwItemKind3)
{
case IK3_SHIELD:
{
switch(prop.dwItemJob)
{
case JOB_MENTALIST_HERO:
{
prop.dwSubCategory = TYPE2_ARMOR_MAGICBOOK;
}
break;
case JOB_FORCEMASTER_HERO:
{
prop.dwSubCategory = TYPE2_ARMOR_FORCEZEM;
}
break;
default:
{
prop.dwSubCategory = TYPE2_ARMOR_SHIELD;
}
break;
}
}
break;
case IK3_HELMET:
{
prop.dwSubCategory = TYPE2_ARMOR_HELMET;
}
break;
case IK3_SUIT:
{
prop.dwSubCategory = TYPE2_ARMOR_SUIT;
}
break;
case IK3_GAUNTLET:
{
prop.dwSubCategory = TYPE2_ARMOR_GUNTLET;
}
break;
case IK3_BOOTS:
{
prop.dwSubCategory = TYPE2_ARMOR_BOOTS;
}
break;
case IK3_HAT:
{
prop.dwSubCategory = TYPE2_COSTUME_HAT;
}
break;
case IK3_CLOTH:
{
prop.dwSubCategory = TYPE2_COSTUME_CLOTH;
}
break;
case IK3_GLOVE:
{
prop.dwSubCategory = TYPE2_COSTUME_GLOVE;
}
break;
case IK3_SHOES:
{
prop.dwSubCategory = TYPE2_COSTUME_SHOES;
}
break;
case IK3_CLOAK:
{
prop.dwSubCategory = TYPE2_COSTUME_CLOAK;
}
break;
case IK3_MASK:
{
prop.dwSubCategory = TYPE2_COSTUME_MASK;
}
break;
}
}
break;
case IK1_SYSTEM:
{
switch( prop.dwItemKind2 )
{
case IK2_SYSTEM:
{
if( prop.dwItemKind3 == IK3_TICKET )
{
prop.dwMainCategory = TYPE1_CONSUME;
prop.dwSubCategory = TYPE2_CONSUME_SCROLL;
}
}
break;
case IK2_BUFF:
{
prop.dwMainCategory = TYPE1_CONSUME;
if( prop.dwItemKind3 == IK3_SCROLL )
prop.dwSubCategory = TYPE2_CONSUME_SCROLL;
else
prop.dwSubCategory = TYPE2_CONSUME_POTION;
}
break;
}
}
break;
case IK1_CHARGED:
{
if( prop.dwItemKind3 == IK3_SCROLL )
{
prop.dwMainCategory = TYPE1_CONSUME;
prop.dwSubCategory = TYPE2_CONSUME_SCROLL;
}else if( prop.dwItemKind3 == IK3_POTION || prop.dwItemKind3 == IK3_COOKING || prop.dwItemKind3 == IK3_REFRESHER )
{
prop.dwMainCategory = TYPE1_CONSUME;
prop.dwSubCategory = TYPE2_CONSUME_POTION;
}
}
break;
case IK1_GENERAL:
{
switch(prop.dwItemKind2)
{
case IK2_CHARM:
{
prop.dwMainCategory = TYPE1_CONSUME;
prop.dwSubCategory = TYPE2_CONSUME_POSTER;
}
break;
case IK2_REFRESHER:
case IK2_FOOD:
case IK2_POTION:
{
prop.dwMainCategory = TYPE1_CONSUME;
prop.dwSubCategory = TYPE2_CONSUME_POTION;
}
break;
case IK2_GENERAL:
{
if( prop.dwItemKind2 == IK2_MATERIAL )
{
prop.dwMainCategory = TYPE1_MATERIAL;
prop.dwSubCategory = TYPE2_MATERIAL_EXCEPTION;
}
else
{
switch(prop.dwItemKind3)
{
case IK3_EGG:
{
prop.dwMainCategory = TYPE1_PET;
prop.dwSubCategory = TYPE2_PET_EGG;
}
break;
case IK3_PET:
{
prop.dwMainCategory = TYPE1_PET;
if( prop.IsVisPet() )
prop.dwSubCategory = TYPE2_PET_BUFF;
else
prop.dwSubCategory = TYPE2_PET_PICKUP;
}
break;
}
}
}
break;
case IK2_JEWELRY:
{
prop.dwMainCategory = TYPE1_ACCESSORY;
switch(prop.dwItemKind3)
{
case IK3_RING:
{
prop.dwSubCategory = TYPE2_ACCESSORY_RING;
}
break;
case IK3_NECKLACE:
{
prop.dwSubCategory = TYPE2_ACCESSORY_NECKLACE;
}
break;
case IK3_EARRING:
{
prop.dwSubCategory = TYPE2_ACCESSORY_EARRING;
}
break;
}
}
break;
}
}
break;
}
#endif
#endif // __WORLDSERVER
if( ::GetLanguage() == LANG_THA )
{
if( prop.dwLimitLevel1 > 0 && prop.dwLimitLevel1 <= 5 )
prop.dwLimitLevel1 = 1;
else if( prop.dwLimitLevel1 > 5 && prop.dwLimitLevel1 <= 15 )
prop.dwLimitLevel1 = 5;
else if( prop.dwLimitLevel1 > 15 && prop.dwLimitLevel1 <= 30 )
prop.dwLimitLevel1 = 15;
else if( prop.dwLimitLevel1 > 30 && prop.dwLimitLevel1 <= 45 )
prop.dwLimitLevel1 = 30;
else if( prop.dwLimitLevel1 > 45 && prop.dwLimitLevel1 < 60 )
prop.dwLimitLevel1 = 45;
}
// temp crossbow fix
if( prop.dwID == II_WEA_BOW_BEHECROSSBOW1 )
prop.dwItemKind3 = IK3_CROSSBOW;
// end fix
if( nVer <= __VER )
{
// TRACE( "PropItem = %d, %s\n", prop.dwID, prop.szName );
m_mapII.insert( map<string, DWORD>::value_type( prop.szName, prop.dwID ) );
#if __VER >= 9 // __ULTIMATE
#ifdef __CLIENT
if( prop.IsUltimate() )
{
CString strName = prop.szName;
int nFind = strName.Find( "@", 0 );
if( nFind > -1 )
{
strName.Delete( nFind - 1, 2 );
lstrcpy( prop.szName, (LPCTSTR)strName );
}
}
#endif // __CLIENT
#endif // __ULTIMATE
apObjProp->SetAtGrow( prop.dwID, &prop);
#ifdef __NEW_STACKABLE_AMPS
if( prop.IsExperienceScroll())
{
if( prop.nMaxDuplication > 1 )
{
int nOrginalID = prop.dwID;
int nCopy[4];
nCopy[0], nCopy[1], nCopy[2], nCopy[3] = 0;
prop.dwID = nAmpCopyID;
for( int i = 0; i < (prop.nMaxDuplication-1); i++ )
{
nCopy[i] = prop.dwID;
m_mapII.insert( map<string, DWORD>::value_type( prop.szName, prop.dwID ) );
apObjProp->SetAtGrow( prop.dwID, &prop );
prop.dwID++;
nAmpCopyID++;
}
AMP_STORE_INFO* pAmpInfo = new AMP_STORE_INFO;
prj.m_mapAmpStore.insert( make_pair( nOrginalID, pAmpInfo ));
pAmpInfo->dwIDSecond = nCopy[0];
pAmpInfo->dwIDThird = nCopy[1];
pAmpInfo->dwIDFourth = nCopy[2];
pAmpInfo->dwIDFifth = nCopy[3];
}
}
#endif // __NEW_STACKABLE_AMPS
}
nVer = scanner.GetNumber(); // version;
}
apObjProp->Optimize();
return TRUE;
}
#endif // __NEW_PROP_PARAMETER
And here's the error that I didn't understand
1>..\_Common\ProjectCmn.cpp(402): error C2601: 'CProject::LoadPropItem' : local function definitions are illegal
1> ..\_Common\ProjectCmn.cpp(325): this line contains a '{' which has not yet been matched
1>..\_Common\ProjectCmn.cpp(1000): error C2601: 'CProject::LoadPropItemEx' : local function definitions are illegal
1> ..\_Common\ProjectCmn.cpp(325): this line contains a '{' which has not yet been matched
1>..\_Common\ProjectCmn.cpp(1410): fatal error C1075: end of file found before the left brace '{' at '..\_Common\ProjectCmn.cpp(1016)' was matched
1> ..\_Common\ProjectCmn.cpp(325): this line contains a '{' which has not yet been matched
1>..\_Common\ProjectCmn.cpp(1000): error C2601: 'CProject::LoadPropItemEx' : local function definitions are illegal
1> ..\_Common\ProjectCmn.cpp(325): this line contains a '{' which has not yet been matched
1>..\_Common\ProjectCmn.cpp(1410): fatal error C1075: end of file found before the left brace '{' at '..\_Common\ProjectCmn.cpp(1016)' was matched
PS : I do not have the knowledge of C++ codes etc. Thanks for the help!