Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
450 lines
27 KiB
C++
450 lines
27 KiB
C++
|
|
#include "stdafx.h"
|
|
|
|
// 클라이언트에서도 쓰이므로 include를 명시한다.
|
|
#include <Log/ServerLog.h>
|
|
#include <Skill/SkillMgr.h>
|
|
|
|
#include <algorithm>
|
|
|
|
#include "ItemStructure.h"
|
|
#include "GMMemory.h"
|
|
|
|
// 김재연 S그레이드 테이블
|
|
static const float g_aryGradeTable[Item::EquipType::MAX_TYPE][Item::Grade::MAX_TABLE_TYPE][Item::EquipType::MAX_GRADE][Item::Attribute::MAX_ATTRIBUTE_NUM] =
|
|
{
|
|
//--// start..
|
|
// 갑옷류
|
|
{
|
|
// MinDam. MaxDam. Armor HitRate Evade MaxHP HPRegen MaxMP MPRegen Cri. Block Speed M.Power M.Res. M.Che. CoolDw SkillPt Frost Fire Electro Dark
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0, 0, 0.4f, 0, 0.1f, 0.1f, 0.2f, 0.1f, 0, 0, 0, 0, 0, 0.08f, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0, 0, 0.2f, 0, 0.05f, 0.05f, 0.1f, 0.05f, 0, 0, 0, 0, 0, 0.04f, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0, 0, -0.2f, 0, -0.05f, -0.05f, -0.1f, -0.05f, 0, 0, 0, 0, 0, -0.04f, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0, -0.4f, 0, -0.1f, -0.1f, -0.2f, -0.1f, 0, 0, 0, 0, 0, -0.08f, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0, 0, 1.5f, 0, 0.375f, 0.375f, 0.75f, 0.375f, 0, 0, 0, 0, 0, 0.3f, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0, 0, 1.2f, 0, 0.3f, 0.3f, 0.6f, 0.3f, 0, 0, 0, 0, 0, 0.24f, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0, 0.9f, 0, 0.225f, 0.225f, 0.45f, 0.225f, 0, 0, 0, 0, 0, 0.18f, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0, 0, 0.6f, 0, 0.15f, 0.15f, 0.3f, 0.15f, 0, 0, 0, 0, 0, 0.12f, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0, 0.3f, 0, 0.075f, 0.075f, 0.15f, 0.075f, 0, 0, 0, 0, 0, 0.06f, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 0, 0, 1.801f, 0, 0.45f, 0.45f, 0.9f, 0.45f, 0, 0, 0, 0, 0, 0.36f, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 1.801f, 0, 0.45f, 0.45f, 0.9f, 0.45f, 0, 0, 0, 0, 0, 0.36f, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 1.501f, 0, 0.375f, 0.375f, 0.75f, 0.375f, 0, 0, 0, 0, 0, 0.3f, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0, 0, 1.201f, 0, 0.3f, 0.3f, 0.6f, 0.3f, 0, 0, 0, 0, 0, 0.24f, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0, 0, 0.9f, 0, 0.225f, 0.225f, 0.45f, 0.225f, 0, 0, 0, 0, 0, 0.18f, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0, 0.6f, 0, 0.15f, 0.15f, 0.3f, 0.15f, 0, 0, 0, 0, 0, 0.12f, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0, 0, 0.3f, 0, 0.075f, 0.075f, 0.15f, 0.075f, 0, 0, 0, 0, 0, 0.06f, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
}
|
|
},
|
|
|
|
// 단검류
|
|
{
|
|
// MinDam. MaxDam. Armor HitRate Evade MaxHP HPRegen MaxMP MPRegen Cri. Block Speed M.Power M.Res. M.Che. CoolDw SkillPt Frost Fire Electro Dark
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0.12f, 0.16f, 0, 0.4f, 0, 0, 0, 0, 0, 0.08f, 0.08f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.06f, 0.08f, 0, 0.2f, 0, 0, 0, 0, 0, 0.04f, 0.04f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, -0.06f, -0.08f, 0, -0.2f, 0, 0, 0, 0, 0, -0.04f, -0.04f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, -0.12f, -0.16f, 0, -0.4f, 0, 0, 0, 0, 0, -0.08f, -0.08f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0.6f, 0.75f, 0, 1.5f, 0, 0, 0, 0, 0, 0.75f, 0.3f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.48f, 0.6f, 0, 1.2f, 0, 0, 0, 0, 0, 0.6f, 0.24f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0.36f, 0.45f, 0, 0.9f, 0, 0, 0, 0, 0, 0.45f, 0.18f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0.24f, 0.3f, 0, 0.6f, 0, 0, 0, 0, 0, 0.3f, 0.12f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0.12f, 0.15f, 0, 0.3f, 0, 0, 0, 0, 0, 0.15f, 0.06f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 0.72f, 0.9f, 0, 1.80f, 0, 0, 0, 0, 0, 0.9f, 0.36f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0.72f, 0.9f, 0, 1.80f, 0, 0, 0, 0, 0, 0.9f, 0.36f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0.6f, 0.75f, 0, 1.50f, 0, 0, 0, 0, 0, 0.75f, 0.3f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0.48f, 0.6f, 0, 1.20f, 0, 0, 0, 0, 0, 0.6f, 0.24f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.36f, 0.45f, 0, 0.9f, 0, 0, 0, 0, 0, 0.45f, 0.18f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0.24f, 0.3f, 0, 0.6f, 0, 0, 0, 0, 0, 0.3f, 0.12f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0.12f, 0.15f, 0, 0.3f, 0, 0, 0, 0, 0, 0.15f, 0.06f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
}
|
|
},
|
|
|
|
// 한손 무기류
|
|
{
|
|
// MinDam. MaxDam. Armor HitRate Evade MaxHP HPRegen MaxMP MPRegen Cri. Block Speed M.Power M.Res. M.Che. CoolDw SkillPt Frost Fire Electro Dark
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0.2f, 0.2f, 0, 0.4f, 0, 0, 0, 0, 0, 0.08f, 0.08f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.1f, 0.1f, 0, 0.2f, 0, 0, 0, 0, 0, 0.04f, 0.04f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, -0.1f, -0.1f, 0, -0.2f, 0, 0, 0, 0, 0, -0.04f, -0.04f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, -0.2f, -0.2f, 0, -0.4f, 0, 0, 0, 0, 0, -0.08f, -0.08f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 1.0f, 1.25f, 0, 1.5f, 0, 0, 0, 0, 0, 0.75f, 0.3f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.8f, 1.0f, 0, 1.2f, 0, 0, 0, 0, 0, 0.6f, 0.24f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0.6f, 0.75f, 0, 0.9f, 0, 0, 0, 0, 0, 0.45f, 0.18f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0.4f, 0.5f, 0, 0.6f, 0, 0, 0, 0, 0, 0.3f, 0.12f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0.2f, 0.25f, 0, 0.3f, 0, 0, 0, 0, 0, 0.15f, 0.06f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 1.2f, 1.5f, 0, 1.80f, 0, 0, 0, 0, 0, 0.9f, 0.36f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 1.2f, 1.5f, 0, 1.80f, 0, 0, 0, 0, 0, 0.9f, 0.36f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 1.0f, 1.25f, 0, 1.50f, 0, 0, 0, 0, 0, 0.75f, 0.3f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0.8f, 1.0f, 0, 1.20f, 0, 0, 0, 0, 0, 0.6f, 0.24f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.6f, 0.75f, 0, 0.9f, 0, 0, 0, 0, 0, 0.45f, 0.18f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0.4f, 0.5f, 0, 0.6f, 0, 0, 0, 0, 0, 0.3f, 0.12f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0.2f, 0.25f, 0, 0.3f, 0, 0, 0, 0, 0, 0.15f, 0.06f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
}
|
|
},
|
|
|
|
// 장거리 무기류
|
|
{
|
|
// MinDam. MaxDam. Armor HitRate Evade MaxHP HPRegen MaxMP MPRegen Cri. Block Speed M.Power M.Res. M.Che. CoolDw SkillPt Frost Fire Electro Dark
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0.2f, 0.2f, 0, 0.4f, 0, 0, 0, 0, 0, 0.08f, 0.08f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.1f, 0.1f, 0, 0.2f, 0, 0, 0, 0, 0, 0.04f, 0.04f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, -0.1f, -0.1f, 0, -0.2f, 0, 0, 0, 0, 0, -0.04f, -0.04f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, -0.2f, -0.2f, 0, -0.4f, 0, 0, 0, 0, 0, -0.08f, -0.08f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 1.0f, 1.25f, 0, 1.5f, 0, 0, 0, 0, 0, 0.75f, 0.3f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.8f, 1.0f, 0, 1.2f, 0, 0, 0, 0, 0, 0.6f, 0.24f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0.6f, 0.75f, 0, 0.9f, 0, 0, 0, 0, 0, 0.45f, 0.18f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0.4f, 0.5f, 0, 0.6f, 0, 0, 0, 0, 0, 0.3f, 0.12f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0.2f, 0.25f, 0, 0.3f, 0, 0, 0, 0, 0, 0.15f, 0.06f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 1.2f, 1.5f, 0, 1.80f, 0, 0, 0, 0, 0, 0.9f, 0.36f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 1.2f, 1.5f, 0, 1.80f, 0, 0, 0, 0, 0, 0.9f, 0.36f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 1.0f, 1.25f, 0, 1.50f, 0, 0, 0, 0, 0, 0.75f, 0.3f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0.8f, 1.0f, 0, 1.20f, 0, 0, 0, 0, 0, 0.6f, 0.24f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.6f, 0.75f, 0, 0.9f, 0, 0, 0, 0, 0, 0.45f, 0.18f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0.4f, 0.5f, 0, 0.6f, 0, 0, 0, 0, 0, 0.3f, 0.12f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0.2f, 0.25f, 0, 0.3f, 0, 0, 0, 0, 0, 0.15f, 0.06f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
}
|
|
},
|
|
|
|
// 양손 무기류
|
|
{
|
|
// MinDam. MaxDam. Armor HitRate Evade MaxHP HPRegen MaxMP MPRegen Cri. Block Speed M.Power M.Res. M.Che. CoolDw SkillPt Frost Fire Electro Dark
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0.2f, 0.2f, 0, 0.4f, 0, 0, 0, 0, 0, 0.08f, 0.08f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.1f, 0.1f, 0, 0.2f, 0, 0, 0, 0, 0, 0.04f, 0.04f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, -0.1f, -0.1f, 0, -0.2f, 0, 0, 0, 0, 0, -0.04f, -0.04f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, -0.2f, -0.2f, 0, -0.4f, 0, 0, 0, 0, 0, -0.08f, -0.08f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 1.0f, 1.25f, 0, 1.5f, 0, 0, 0, 0, 0, 0.75f, 0.3f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.8f, 1.0f, 0, 1.2f, 0, 0, 0, 0, 0, 0.6f, 0.24f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0.6f, 0.75f, 0, 0.9f, 0, 0, 0, 0, 0, 0.45f, 0.18f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0.4f, 0.5f, 0, 0.6f, 0, 0, 0, 0, 0, 0.3f, 0.12f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0.2f, 0.25f, 0, 0.3f, 0, 0, 0, 0, 0, 0.15f, 0.06f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 1.2f, 1.5f, 0, 1.80f, 0, 0, 0, 0, 0, 0.9f, 0.36f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 1.2f, 1.5f, 0, 1.80f, 0, 0, 0, 0, 0, 0.9f, 0.36f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 1.0f, 1.25f, 0, 1.50f, 0, 0, 0, 0, 0, 0.75f, 0.3f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0.8f, 1.0f, 0, 1.20f, 0, 0, 0, 0, 0, 0.6f, 0.24f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0.6f, 0.75f, 0, 0.9f, 0, 0, 0, 0, 0, 0.45f, 0.18f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0.4f, 0.5f, 0, 0.6f, 0, 0, 0, 0, 0, 0.3f, 0.12f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0.2f, 0.25f, 0, 0.3f, 0, 0, 0, 0, 0, 0.15f, 0.06f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
}
|
|
},
|
|
|
|
// 스태프류
|
|
{
|
|
// MinDam. MaxDam. Armor HitRate Evade MaxHP HPRegen MaxMP MPRegen Cri. Block Speed M.Power M.Res. M.Che. CoolDw SkillPt Frost Fire Electro Dark
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0, 0.22f, 0, 0.4f, 0, 0, 0, 0.2f, 0.4f, 0.08f, 0, 0, 0.4f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0, 0.11f, 0, 0.2f, 0, 0, 0, 0.1f, 0.2f, 0.04f, 0, 0, 0.2f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0, -0.11f, 0, -0.2f, 0, 0, 0, -0.1f, -0.2f, -0.04f, 0, 0, -0.2f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, -0.22f, 0, -0.4f, 0, 0, 0, -0.2f, -0.4f, -0.08f, 0, 0, -0.4f, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0, 0.825f, 0, 1.5f, 0, 0, 0, 0.75f, 1.5f, 0.3f, 0, 0, 1.5f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0, 0.66f, 0, 1.2f, 0, 0, 0, 0.6f, 1.2f, 0.24f, 0, 0, 1.2f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0.495f, 0, 0.9f, 0, 0, 0, 0.45f, 0.9f, 0.18f, 0, 0, 0.9f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0, 0.33f, 0, 0.6f, 0, 0, 0, 0.3f, 0.6f, 0.12f, 0, 0, 0.6f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0.165f, 0, 0.3f, 0, 0, 0, 0.15f, 0.3f, 0.06f, 0, 0, 0.3f, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 0, 0.99f, 0, 1.801f, 0, 0, 0, 0.9f, 1.81f, 0.36f, 0, 0, 1.81f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0.99f, 0, 1.801f, 0, 0, 0, 0.9f, 1.81f, 0.36f, 0, 0, 1.81f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0.825f, 0, 1.501f, 0, 0, 0, 0.75f, 1.51f, 0.3f, 0, 0, 1.51f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0, 0.66f, 0, 1.201f, 0, 0, 0, 0.6f, 1.21f, 0.24f, 0, 0, 1.21f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0, 0.495f, 0, 0.9f, 0, 0, 0, 0.45f, 0.9f, 0.18f, 0, 0, 0.9f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0.33f, 0, 0.6f, 0, 0, 0, 0.3f, 0.6f, 0.12f, 0, 0, 0.6f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0, 0.165f, 0, 0.3f, 0, 0, 0, 0.15f, 0.3f, 0.06f, 0, 0, 0.3f, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
}
|
|
},
|
|
|
|
// 방패류
|
|
{
|
|
// MinDam. MaxDam. Armor HitRate Evade MaxHP HPRegen MaxMP MPRegen Cri. Block Speed M.Power M.Res. M.Che. CoolDw SkillPt Frost Fire Electro Dark
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0, 0, 0, 0, 0, 0.05f, 0.1f, 0.05f, 0.1f, 0, 0.16f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0, 0, 0, 0, 0, 0.025f, 0.05f, 0.025f, 0.05f, 0, 0.08f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0, 0, 0, 0, 0, -0.025f,-0.05f, -0.025f,-0.05f, 0, -0.08f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0, 0, 0, 0, -0.05f, -0.1f, -0.05f, -0.1f, 0, -0.16f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0, 0, 0, 0, 0, 0.1875f,0.375f, 0.1875f,0.375f, 0, 0.6f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0, 0, 0, 0, 0, 0.15f, 0.3f, 0.15f, 0.3f, 0, 0.48f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0, 0, 0, 0, 0.113f, 0.225f, 0.113f, 0.225f, 0, 0.36f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0, 0, 0, 0, 0, 0.075f, 0.15f, 0.075f, 0.15f, 0, 0.24f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0, 0, 0, 0, 0.038f, 0.075f, 0.038f, 0.075f, 0, 0.12f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
},
|
|
|
|
{
|
|
{ 0, 0, 0, 0, 0, 0, 0.225f, 0.45f, 0.225f, 0.45f, 0, 0.72f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade S
|
|
{ 0, 0, 0, 0, 0, 0, 0.225f, 0.45f, 0.225f, 0.45f, 0, 0.72f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AAA
|
|
{ 0, 0, 0, 0, 0, 0, 0.1875f,0.375f, 0.1875f,0.375f, 0, 0.6f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade AA
|
|
{ 0, 0, 0, 0, 0, 0, 0.15f, 0.3f, 0.15f, 0.3f, 0, 0.48f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade A
|
|
{ 0, 0, 0, 0, 0, 0, 0.113f, 0.225f, 0.113f, 0.225f, 0, 0.36f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade B
|
|
{ 0, 0, 0, 0, 0, 0, 0.075f, 0.15f, 0.075f, 0.15f, 0, 0.24f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade C
|
|
{ 0, 0, 0, 0, 0, 0, 0.038f, 0.075f, 0.038f, 0.075f, 0, 0.12f, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // Grade D
|
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, } // Grade F
|
|
}
|
|
}
|
|
|
|
//--// end..
|
|
};
|
|
|
|
|
|
void Item::ItemData::DumpInfo(unsigned long dwCID, const char* szExtraString) const
|
|
{
|
|
ERRLOG8(g_Log, "CID:0x%10u / ItemUID:%016I64X / ProtoTypeID:%d / ItemPos(%d, 0x%04x) / ItemSize:%d / NumOrDurability:%d %s",
|
|
dwCID, m_dwUID, m_usProtoTypeID, m_ItemPos.m_cPos, m_ItemPos.m_cIndex,
|
|
m_cItemSize, m_cNumOrDurability, szExtraString);
|
|
}
|
|
|
|
|
|
Item::SpriteData::SpriteData() { Initialize(); }
|
|
|
|
void Item::SpriteData::Initialize()
|
|
{
|
|
memset(m_szName, 0, MAX_NAME);
|
|
memset(m_szSpriteName, 0, MAX_SPRITE_NAME);
|
|
|
|
m_nSpriteMinX = m_nSpriteMinY = m_nSpriteMaxX = m_nSpriteMaxY = 0;
|
|
}
|
|
|
|
Item::StringData::StringData() { Initialize(); }
|
|
void Item::StringData::Initialize()
|
|
{
|
|
memset(m_szFieldModelName, 0, MAX_FIELD_MODEL_NAME);
|
|
memset(m_szEquipModelName, 0, MAX_EQUIP_MODEL_NAME);
|
|
memset(m_szEffectSoundName, 0, MAX_EFFECT_SOUND_NAME);
|
|
memset(m_szTypeName, 0, MAX_TYPE_NAME);
|
|
memset(m_szItemDescribe, 0, MAX_ITEM_DESCRIBE);
|
|
}
|
|
|
|
Item::DetailData::DetailData() { Initialize(); }
|
|
void Item::DetailData::Initialize()
|
|
{
|
|
m_cItemType = 0;
|
|
m_cXSize = 0;
|
|
m_cYSize = 0;
|
|
|
|
m_wDropOption = 0;
|
|
m_cCriticalType = 0;
|
|
m_cAttackRange = 0;
|
|
|
|
m_cMaxSocketNum = 0;
|
|
m_cDefaultDurabilityOrStack = 0;
|
|
m_cMaxDurabilityOrStack = 0;
|
|
|
|
m_cMinDropLevel = 0;
|
|
m_cMaxDropLevel = 0;
|
|
|
|
m_dwPrice = 0;
|
|
m_dwBlackPrice = 0;
|
|
m_dwMedalPrice = 0;
|
|
|
|
m_bExchangeAndDrop = true;
|
|
m_bSell = true;
|
|
|
|
m_bOptionPrice = false;
|
|
|
|
m_dwFlags = 0;
|
|
}
|
|
|
|
Item::EquipAttribute::EquipAttribute() { Initialize(); }
|
|
void Item::EquipAttribute::Initialize()
|
|
{
|
|
m_nAttibuteNum = 0;
|
|
std::fill_n(m_usAttributeValue, unsigned short(Item::Attribute::MAX_ATTRIBUTE_NUM), 0);
|
|
}
|
|
|
|
Item::UseItemInfo::UseItemInfo() { Initialize(); }
|
|
void Item::UseItemInfo::Initialize()
|
|
{
|
|
m_cZone = 0;
|
|
|
|
m_dwAmount = 0;
|
|
|
|
m_usSkill_ID = 0;
|
|
m_usSkill_LockCount = 0;
|
|
|
|
m_wQuestID = 0;
|
|
|
|
m_cLimitRealmPoint = 0;
|
|
m_bForStatueWar = false;
|
|
}
|
|
|
|
|
|
Item::UseLimit::UseLimit() { Initialize(); }
|
|
void Item::UseLimit::Initialize()
|
|
{
|
|
m_dwClassLimit = 0;
|
|
|
|
m_cLimitStatus = Item::StatusLimit::NONE;
|
|
m_wLimitValue = 0;
|
|
}
|
|
|
|
|
|
Item::ItemInfo::ItemInfo() { Initialize(); }
|
|
Item::ItemInfo::ItemInfo(unsigned short usProtoTypeID) { Initialize(); m_usProtoTypeID = usProtoTypeID; }
|
|
|
|
void Item::ItemInfo::Initialize()
|
|
{
|
|
m_usProtoTypeID = 0;
|
|
|
|
m_DetailData.Initialize();
|
|
m_UseLimit.Initialize();
|
|
m_SpriteData.Initialize();
|
|
m_StringData.Initialize();
|
|
|
|
m_EquipAttribute.Initialize();
|
|
m_UseItemInfo.Initialize();
|
|
}
|
|
|
|
const char* Item::ItemInfo::GetItemDescribe(void) const
|
|
{
|
|
if (Item::ItemType::SKILL_BOOK == m_DetailData.m_cItemType)
|
|
{
|
|
const Skill::ProtoType* pSkillProtoType =
|
|
CSkillMgr::GetInstance().GetSkillProtoType(m_UseItemInfo.m_usSkill_ID);
|
|
|
|
if (NULL != pSkillProtoType)
|
|
{
|
|
return pSkillProtoType[m_UseItemInfo.m_usSkill_LockCount].m_szSkillDescribe;
|
|
}
|
|
}
|
|
|
|
return m_StringData.m_szItemDescribe;
|
|
}
|
|
|
|
Item::ItemGarbage::ItemGarbage(CItem* lpItem, unsigned long dwRemainNum)
|
|
: m_lpItem(lpItem), m_dwRemainNum(dwRemainNum)
|
|
{
|
|
}
|
|
|
|
Item::ChemicalInfo::ChemicalInfo()
|
|
: m_wPickkingItemID(0), m_wTargetItemID(0), m_wResultItemID(0),
|
|
m_cPickkingItemNum(0), m_cTargetItemNum(0), m_cResultItemNum(0),
|
|
m_dwItemID(0), m_usAbilityID(0), m_cAbilityLevel(0), m_usQuestID(0), m_cPercent(0)
|
|
|
|
{
|
|
}
|
|
|
|
Item::ChemicalInfo::ChemicalInfo(unsigned short wPickkingItemID, unsigned char cPickkingItemNum,
|
|
unsigned short wTargetItemID, unsigned char cTargetItemNum, unsigned int dwItemID, unsigned short usAbilityID, unsigned char cAbilityLevel, unsigned short usQuestID, unsigned char cPercent)
|
|
: m_wPickkingItemID(wPickkingItemID), m_wTargetItemID(wTargetItemID), m_wResultItemID(0),
|
|
m_cPickkingItemNum(cPickkingItemNum),m_cTargetItemNum(cTargetItemNum), m_cResultItemNum(0),
|
|
m_dwItemID(dwItemID), m_usAbilityID(usAbilityID), m_cAbilityLevel(cAbilityLevel), m_usQuestID(usQuestID), m_cPercent(cPercent)
|
|
{
|
|
}
|
|
|
|
Item::Grade::GradeInfo::GradeInfo()
|
|
: m_eItemGrade(EquipType::F_GRADE), m_cPlus(0)
|
|
{
|
|
std::fill_n(m_aryAttributeGrade, int(Attribute::MAX_ATTRIBUTE_NUM), EquipType::F_GRADE);
|
|
}
|
|
|
|
const float Item::Grade::GetGradeValue(Item::CItemType::ArrayType eEquipType, Grade::TableType eTableType,
|
|
EquipType::Grade eGrade, Attribute::Type eType)
|
|
{
|
|
switch (eEquipType)
|
|
{
|
|
case CItemType::HELM_TYPE:
|
|
case CItemType::ARMOUR_TYPE:
|
|
return g_aryGradeTable[EquipType::ARMOR_TYPE][eTableType][eGrade][eType];
|
|
|
|
case CItemType::DAGGER_TYPE: return g_aryGradeTable[EquipType::DAGGER_TYPE][eTableType][eGrade][eType];
|
|
case CItemType::ONEHANDED_TYPE: return g_aryGradeTable[EquipType::ONEHANDED_WEAPON_TYPE][eTableType][eGrade][eType];
|
|
case CItemType::LONGRANGE_TYPE: return g_aryGradeTable[EquipType::LONGRANGE_WEAPON_TYPE][eTableType][eGrade][eType];
|
|
case CItemType::TWOHANDED_TYPE: return g_aryGradeTable[EquipType::TWOHANDED_WEAPON_TYPE][eTableType][eGrade][eType];
|
|
case CItemType::STAFF_TYPE: return g_aryGradeTable[EquipType::STAFF_TYPE][eTableType][eGrade][eType];
|
|
case CItemType::SHIELD_TYPE: return g_aryGradeTable[EquipType::SHIELD_TYPE][eTableType][eGrade][eType];
|
|
}
|
|
|
|
return 0.0f;
|
|
}
|