Code: Select all
void CGame::NpcDeadItemGenerator(int iNpcH, short sAttackerH, char cAttackerType)
{
class CItem * pItem;
char cColor, cItemName[21];
BOOL bIsGold;
int iGenLevel, iResult, iItemID;
DWORD dwType, dwValue;
double dTmp1, dTmp2, dTmp3;
if (m_pNpcList[iNpcH] == NULL) return;
if ((cAttackerType != DEF_OWNERTYPE_PLAYER) || (m_pNpcList[iNpcH]->m_bIsSummoned == TRUE)) return;
if (m_pNpcList[iNpcH]->m_bIsUnsummoned == TRUE) return;
ZeroMemory(cItemName, sizeof(cItemName));
bIsGold = FALSE;
switch (m_pNpcList[iNpcH]->m_sType) {
// NPC not dropping Gold
case 21: // Guard
case 34: // Dummy
case 64: // Crop
return;
}
// 6500 default; the lower the greater the Weapon/Armor/Wand Drop
if (iDice(1,10000) >= m_iPrimaryDropRate) {
// 35% Drop 60% of that is gold
// 35% Chance of drop (35/100)
if (iDice(1,10000) <= 6000) {
iItemID = 90; // Gold: (35/100) * (60/100) = 21%
// If a non-existing itemID is given create no item
pItem = new class CItem;
if (_bInitItemAttr(pItem, iItemID) == FALSE) {
delete pItem;
return;
}
pItem->m_dwCount = (DWORD)(iDice(1, (m_pNpcList[iNpcH]->m_iGoldDiceMax - m_pNpcList[iNpcH]->m_iGoldDiceMin)) + m_pNpcList[iNpcH]->m_iGoldDiceMin);
// v1.42 Gold
if ((cAttackerType == DEF_OWNERTYPE_PLAYER) && (m_pClientList[sAttackerH]->m_iAddGold != NULL)) {
dTmp1 = (double)m_pClientList[sAttackerH]->m_iAddGold;
dTmp2 = (double)pItem->m_dwCount;
dTmp3 = (dTmp1/100.0f)*dTmp2;
pItem->m_dwCount += (int)dTmp3;
}
}
else {
// 9000 default; the lower the greater the Weapon/Armor/Wand Drop
// 35% Drop 40% of that is an Item
dTmp1 = m_pClientList[sAttackerH]->m_iRating*m_cRepDropModifier;
if (dTmp1 > 3000) dTmp1 = 3000;
if (dTmp1 < -3000) dTmp1 = -3000;
dTmp2 = (m_iSecondaryDropRate - (dTmp1));
if (iDice(1,10000) <= dTmp2) {
// 40% Drop 90% of that is a standard drop
// Standard Drop Calculation: (35/100) * (40/100) * (90/100) = 12.6%
iResult = iDice(1,12000);
if ((iResult >= 1) && (iResult <= 3000)) dwValue = 1;
else if ((iResult >= 3001) && (iResult <= 4000)) dwValue = 2;
else if ((iResult >= 4001) && (iResult <= 5500)) dwValue = 3;
else if ((iResult >= 5501) && (iResult <= 7000)) dwValue = 4;
else if ((iResult >= 7001) && (iResult <= 8500)) dwValue = 5;
else if ((iResult >= 8501) && (iResult <= 9200)) dwValue = 6;
else if ((iResult >= 9201) && (iResult <= 9800)) dwValue = 7;
else if ((iResult >= 9801) && (iResult <= 10000)) dwValue = 8;
else if ((iResult >= 10001) && (iResult <= 12000)) dwValue = 9;
switch (dwValue) {
case 1: iItemID = 95; break; // Green Potion
case 2: iItemID = 91; break; // Red Potion
case 3: iItemID = 93; break; // Blue Potion
case 4: iItemID = 96; break; // Big Green Potion
case 5: iItemID = 92; break; // Big Red Potion
case 6: iItemID = 94; break; // Big Blue Potion
case 7: switch(iDice(1,2)) {
case 1: iItemID = 390; break; // Power Green Potion
case 2: iItemID = 95; break; // Green Potion
}
break;
case 8: switch(iDice(1,6)) {
case 1: iItemID = 391; break; // Super Power Green Potion
case 2: iItemID = 650; break; // Zemstone of Sacrifice
case 3: iItemID = 656; break; // Xelima Stone
case 4: iItemID = 657; break; // Merien Stone
case 5: iItemID = 95; break; // Green Potion
case 6: switch(iDice(1,5)) {
case 1: iItemID = 651; break; // GreenBall
case 2: iItemID = 652; break; // RedBall
case 3: iItemID = 653; break; // YellowBall
case 4: iItemID = 654; break; // BlueBall
case 5: switch(iDice(1,11)) {
case 1: iItemID = 881; break; // ArmorDye(Indigo)
case 2: iItemID = 882; break; // ArmorDye(Crimson-Red)
case 3: iItemID = 883; break; // ArmorDye(Gold)
case 4: iItemID = 884; break; // ArmorDye(Aqua)
case 5: iItemID = 885; break; // ArmorDye(Pink)
case 6: iItemID = 886; break; // ArmorDye(Violet)
case 7: iItemID = 887; break; // ArmorDye(Blue)
case 8: iItemID = 888; break; // ArmorDye(Khaki)
case 9: iItemID = 889; break; // ArmorDye(Yellow)
case 10: iItemID = 890; break; // ArmorDye(Red)
case 11: iItemID = 655; break; // PearlBall
}
break;
}
break;
}
break;
case 9:
SYSTEMTIME SysTime;
GetLocalTime(&SysTime);
if (((short)SysTime.wMonth == 12) && (m_pNpcList[iNpcH]->m_sType == 61 || 55)) {
switch(iDice(1,4)) {
case 1: iItemID = 780; break; // Red Candy
case 2: iItemID = 781; break; // Blue Candy
case 3: iItemID = 782; break; // Green Candy
case 4: iItemID = 91; break; // Red Potion
}
}
break;
}
// If a non-existing item is created then delete the item
pItem = new class CItem;
if (_bInitItemAttr(pItem, iItemID) == FALSE) {
delete pItem;
return;
}
}
else {
// Valuable Drop Calculation: (35/100) * (40/100) * (10/100) = 1.4%
// Define iGenLevel using Npc.cfg#
switch (m_pNpcList[iNpcH]->m_sType) {
case 10: // Slime
case 16: // Giant-Ant
case 22: // Amphis
case 55: // Rabbit
case 56: // Cat
iGenLevel = 1;
break;
case 11: // Skeleton
case 14: // Orc, Orc-Mage
case 17: // Scorpion
case 18: // Zombie
iGenLevel = 2;
break;
case 12: // Stone-Golem
case 23: // Clay-Golem
iGenLevel = 3;
break;
case 27: // Hellbound
case 61: // Rudolph
iGenLevel = 4;
break;
case 72: // Claw-Turtle
case 76: // Giant-Plant
case 74: // Giant-Crayfish
case 13: // Cyclops
case 28: // Troll
case 53: // Beholder
case 60: // Cannibal-Plant
case 62: // DireBoar
iGenLevel = 5;
break;
case 29: // Orge
case 33: // WereWolf
case 48: // Stalker
case 54: // Dark-Elf
case 65: // Ice-Golem
case 78: // Minotaurus
iGenLevel = 6;
break;
case 70: // Balrogs
case 71: // Centaurus
case 30: // Liche
case 63: // Frost
case 79: // Nizie
iGenLevel = 7;
break;
case 31: // Demon
case 32: // Unicorn
case 49: // Hellclaw
case 50: // Tigerworm
case 52: // Gagoyle
iGenLevel = 8;
break;
case 58: // MountainGiant
iGenLevel = 9;
break;
case 77: // MasterMage-Orc
case 59: // Ettin
case 75: // Lizards
iGenLevel = 10;
break;
}
if (iGenLevel == 0) return;
// Weapon Drop:
// 1.4% chance Valuable Drop 60% that it is a Weapon
if (iDice(1,10000) <= 6000) {
if (iDice(1,10000) <= 8000) {
// 70% the Weapon is Melee
switch (iGenLevel) {
case 1: // Slime, Giant-Ant, Amphis, Rabbit, Cat
switch (iDice(1,3)) {
case 1: iItemID = 1; break; // Dagger
case 2: iItemID = 8; break; // ShortSword
case 3: iItemID = 59; break; // LightAxe
}
break;
case 2: // Skeleton, Orc, Orc-Mage, Scorpion, Zombie
switch (iDice(1,6)) {
case 1: iItemID = 12; break; // MainGauche
case 2: iItemID = 15; break; // Gradius
case 3: iItemID = 65; break; // SexonAxe
case 4: iItemID = 62; break; // Tomahoc
case 5: iItemID = 23; break; // Sabre
case 6: iItemID = 31; break; // Esterk
}
break;
case 3: // Stone-Golem, Clay-Golem
switch (iDice(1,4)) {
case 1: iItemID = 17; break; // LongSword
case 2: iItemID = 68; break; // DoubleAxe
case 3: iItemID = 23; break; // Sabre
case 4: iItemID = 31; break; // Esterk
}
break;
case 4: // Hellbound, Rudolph
switch (iDice(1,5)) {
case 1: iItemID = 23; break; // Sabre
case 2: iItemID = 25; break; // Scimitar
case 3: iItemID = 28; break; // Falchion
case 4: iItemID = 31; break; // Esterk
case 5: iItemID = 34; break; // Rapier
}
break;
case 5: // Cyclops, Troll, Beholder, Cannibal-Plant, DireBoar
switch (iDice(1,3)) {
case 1: iItemID = 31; break; // Esterk
case 2: iItemID = 34; break; // Rapier
case 3: iItemID = 71; break; // WarAxe
}
break;
case 6: // Orge, WereWolf, Stalker, Dark-Elf, Ice-Golem
switch (iDice(1,9)) {
case 1: iItemID = 1545; break; // SamuraiBlade
case 2: iItemID = 1237; break; // SamuraiSword
case 3: iItemID = 1235; break; // SamuraiHammer
case 4: iItemID = 1997; break; // SamuraiShield
case 5: iItemID = 1234; break; // SamuraiWand(MS30)
case 6: iItemID = 617; break; // CompositeBow
}
break;
case 7: // Liche, Frost
switch (iDice(1,4)) {
case 1: iItemID = 50; break; // GreatSword
case 2: iItemID = 54; break; // Flameberge
case 3: iItemID = 31; break; // Esterk
case 4: iItemID = 34; break; // Rapier
}
break;
case 8: // Demon, Unicorn, Hellclaw, Tigerworm, Gagoyle
switch (iDice(1,7)) {
case 1: iItemID = 654; break; // BlueBall
case 2: iItemID = 54; break; // Flameberge
case 3: iItemID = 560; break; // BattleAxe
case 4: iItemID = 31; break; // Esterk
case 5: iItemID = 34; break; // Rapier
case 6: iItemID = 55; break; // Flameberge+1
case 7: iItemID = 615; break; // GiantSword
}
break;
case 9: // MountainGiant
switch (iDice(1,6)) {
case 1: iItemID = 23; break; // Sabre
case 2: iItemID = 25; break; // Scimitar
case 3: iItemID = 28; break; // Falchion
case 4: iItemID = 31; break; // Esterk
case 5: iItemID = 34; break; // Rapier
case 6: iItemID = 760; break; // Hammer
}
break;
case 10: // Ettin
switch (iDice(1,5)) {
case 1: iItemID = 46; break; // Claymore
case 2: iItemID = 31; break; // Esterk
case 3: iItemID = 34; break; // Rapier
case 4: iItemID = 760; break; // Hammer
case 5: iItemID = 761; break; // GiantHammer
}
break;
}
}
else {
// 30% the weapon is a Wand
switch (iGenLevel) {
case 2:
case 3:
iItemID = 258; break; // MagicWand(MS0)
case 4:
case 5:
case 6:
iItemID = 257; break; // MagicWand(MS10)
case 7:
case 8:
iItemID = 256; break; // MagicWand(MS20)
case 9:
case 10:
break;
}
}
}
else {
// 1.4% chance Valuable Drop 40% that drop is an Armor/Shield
switch (iGenLevel) {
case 1: // Slime, Giant-Ant, Amphis, Rabbit, Cat
case 2: // Skeleton, Orc, Orc-Mage, Scorpion, Zombie
switch (iDice(1,2)) {
case 1: iItemID = 79; break; // WoodShield
case 2: iItemID = 81; break; // TargeShield
}
break;
case 3: // Stone-Golem, Clay-Golem
switch (iDice(1,45)) {
case 1: iItemID = 653; break; // YellowBall
case 2: iItemID = 652; break; // RedBall
case 3: iItemID = 832; break; // Mushroom
break;
case 4: // Hellbound, Rudolph
switch (iDice(1,5)) {
case 1: iItemID = 454; break; // Hauberk(M)
case 2: iItemID = 472; break; // Hauberk(W)
case 3: iItemID = 461; break; // ChainHose(M)
case 4: iItemID = 482; break; // ChainHose(W)
case 5: iItemID = 83; break; // BlondeShield
}
break;
case 5: // Cyclops, Troll, Beholder, Cannibal-Plant, DireBoar
switch (iDice(1,3)) {
case 1: iItemID = 455; break; // LeatherArmor(M)
case 2: iItemID = 475; break; // LeatherArmor(W)
case 3: iItemID = 84; break; // IronShield
}
break;
case 6: // Orge, WereWolf, Stalker, Dark-Elf, Ice-Golem
switch (iDice(1,6)) {
case 1: switch(iDice(1,20)) {
case 1: iItemID = 652; break; // RedBall
case 2: iItemID = 651; break; // GreenBall
}
break;
case 2: switch(iDice(1,4)) {
case 1: iItemID = 458; break; // PlateMail(M)
case 2: iItemID = 478; break; // PlateMail(W)
}
break;
case 3: iItemID = 402; break; // Cape
case 4: switch(iDice(1,5)) {
case 1: iItemID = 750; break; // Horned-Helm(M)
case 2: iItemID = 751; break; // Wings-Helm(M)
case 3: iItemID = 754; break; // Horned-Helm(W)
case 4: iItemID = 755; break; // Wings-Helm(W)
case 5: iItemID = 752; break; // Wizard-Cap(M)
case 6: iItemID = 753; break; // Wizard-Hat(M)
case 7: iItemID = 992; break; // DragonSword
case 8: iItemID = 757; break; // Wizard-Hat(W)
}
break;
case 5: switch(iDice(1,4)) {
case 1: iItemID = 454; break; // Hauberk(M)
case 2: iItemID = 472; break; // Hauberk(W)
}
break;
case 6: switch(iDice(1,5)) {
case 1: iItemID = 461; break; // ChainHose(M)
case 2: iItemID = 482; break; // ChainHose(W)
}
break;
}
break;
case 7: // Liche, Frost
switch (iDice(1,6)) {
case 1: switch(iDice(1,2)) {
case 1: iItemID = 457; break; // ScaleMail(M)
case 2: iItemID = 477; break; // ScaleMail(W)
}
break;
case 2: switch(iDice(1,2)) {
case 1: iItemID = 458; break; // PlateMail(M)
case 2: iItemID = 478; break; // PlateMail(W)
}
break;
case 3: iItemID = 86; break; // KnightShield
case 4: iItemID = 87; break; // TowerShield
case 5: switch(iDice(1,2)) {
case 1: iItemID = 600; break; // Helm(M)
case 2: iItemID = 602; break; // Helm(M)
}
break;
case 6: switch(iDice(1,2)) {
case 1: iItemID = 601; break; // Full-Helm(M)
case 2: iItemID = 603; break; // Full-Helm(M)
}
break;
}
break;
case 8: // Demon, Unicorn, Hellclaw, Tigerworm, Gagoyle
iItemID = 848; // LightingBlade
break;
case 9:
case 10:
break;
}
}
// 0-None 1-Ćā€¢ā€˛Ć¬ā€šĀ´ĆŖĀøĀ°Ć«Å’ā‚¬Ć«ĀÆĀøĆ¬Ā§ā‚¬Ć¬Ā¶ā€¯ĆŖĀ°ā‚¬ 2-Ć¬Ā¤ā€˜Ć«Ā¸ā€¦ĆŨ과 3-Ć¬Ā ā€¢Ć¬Ā¯ĖœĆ¬Ā¯Ėœ
// 5-Ć«ĀÆĀ¼Ć¬Ā²Ā©Ć¬Ā¯Ėœ 6-가벼ìÅĀ´ 7-Ć¬ĖœĖ†Ć«Ā¦Ā¬Ć•œ 8-ê°•Ć™”ëĀÅ“ 9-ĆŖĀ³Ā Ć«Å’ā‚¬Ć«Ā¬ĀøĆ«ĀŖā€¦Ć¬Ā¯Ėœ 10-마법 Ć¬ā€˛Ā±ĆŖĀ³ĀµĆ¬Ā¯Ėœ
// 아이Ć…œì„ Ć«Ā§Å’Ć«ā€œĀ¤ĆŖĀ³Ā
pItem = new class CItem;
// 기본 ĆŠ¹ì„±ìœ¼ëĀÅ“ 아이Ć…œ 생성
if (_bInitItemAttr(pItem, iItemID) == FALSE) {
delete pItem;
return;
}
if (pItem->m_sItemEffectType == DEF_ITEMEFFECTTYPE_ATTACK) {
// °ø°Ý ¹«±â·ù¿ ºÙÀ» ¼ö ÀÖ´Â Ć¢µÎ»ç¸¦ Ā¼Ā±Ć…Ćƒ
// °ĀĀŗĀ¿î(3%) °ĀĆˆĀĀµĆˆ(7%) Ć‡ĆŠĀ»Ć¬Ć€Ć‡(15%) Ā¹ĆˇĆƒĀøĆ€Ć‡(20%) ƤÀÇÀÇ(20%) ĆĆŸĀµĀ¶Ć€Ć‡(16%) ¿¹¸®ÇÑ(16%) °Ć´ë¹®¸ĆƀƇ(3%)
iResult = iDice(1,10000);
if ((iResult >= 1) && (iResult <= 299)) {
dwType = 6;
cColor = 2;
}
else if ((iResult >= 300) && (iResult <= 999)) {
dwType = 8;
cColor = 3;
}
else if ((iResult >= 1000) && (iResult <= 2499)) {
dwType = 1;
cColor = 5;
}
else if ((iResult >= 2500) && (iResult <= 4499)) {
dwType = 5;
cColor = 1;
}
else if ((iResult >= 4500) && (iResult <= 6499)) {
dwType = 3;
cColor = 7;
}
else if ((iResult >= 6500) && (iResult <= 8099)) {
dwType = 2;
cColor = 4;
}
else if ((iResult >= 8100) && (iResult <= 9699)) {
dwType = 7;
cColor = 6;
}
else if ((iResult >= 9700) && (iResult <= 10000)) {
dwType = 9;
cColor = 8;
}
// Ā¾Ć†Ć€ĆŒĆ…Ć› »ö»ó ÀÔ·Â
pItem->m_cItemColor = cColor;
// °ĀĀŗĀ¿î, °ĀĆˆĀĀµĆˆ, Ć‡ĆŠĀ»Ć¬Ć€Ć‡, Ā¹ĆˇĆƒĀøĆ€Ć‡, ƤÀÇÀÇ, ĆĆŸĀµĀ¶Ć€Ć‡, ¿¹¸®ÇÑ, °Ć´ë¹®¸ĆƀƇ
// Ā¾Ć†Ć€ĆŒĆ…Ć› Main Ư¼ºÄ Ć¤µµ°ª ÀÔ·Â
// Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ư¼ºÄ Ć¤µµ°ª ÀÔ·Â
iResult = iDice(1, 30000);
if ((iResult >= 1) && (iResult < 10000)) dwValue = 1; // 10000/29348 = 34%
else if ((iResult >= 10000) && (iResult < 17400)) dwValue = 2; // 6600/29348 = 22.4%
else if ((iResult >= 17400) && (iResult < 22400)) dwValue = 3; // 4356/29348 = 14.8%
else if ((iResult >= 22400) && (iResult < 25400)) dwValue = 4; // 2874/29348 = 9.7%
else if ((iResult >= 25400) && (iResult < 27400)) dwValue = 5; // 1897/29348 = 6.4%
else if ((iResult >= 27400) && (iResult < 28400)) dwValue = 6; // 1252/29348 = 4.2%
else if ((iResult >= 28400) && (iResult < 28900)) dwValue = 7; // 826/29348 = 2.8%
else if ((iResult >= 28900) && (iResult < 29300)) dwValue = 8; // 545/29348 = 1.85%
else if ((iResult >= 29300) && (iResult < 29600)) dwValue = 9; // 360/29348 = 1.2%
else if ((iResult >= 29600) && (iResult < 29800)) dwValue = 10; // 237/29348 = 0.8%
else if ((iResult >= 29800) && (iResult < 29900)) dwValue = 11; // 156/29348 = 0.5%
else if ((iResult >= 29900) && (iResult < 29970)) dwValue = 12; // 103/29348 = 0.3%
else if ((iResult >= 29970) && (iResult <= 30000)) dwValue = 13; // 68/29348 = 0.1%
else dwValue = 1; // v2.03 906
// ¹«±âÀÇ Main Ư¼ºÄĀ¿ µû¶ó ¼öÄ º¸Ć¤
switch (dwType) {
case 1: // Ć‡ĆŠĀ»Ć¬ Ÿ°Ý ĆƒĆ–Ć€Ćŗ +5
if (dwValue <= 5) dwValue = 5;
break;
case 2: // ĆĆŸĀµĀ¶ Ÿ°Ý ĆƒĆ–Ć€Ćŗ +20
if (dwValue <= 4) dwValue = 4;
break;
case 6: // Ā°Ć¦Ā·Ā®ĆˆĀ ĆƒĆ–Ć€Ćŗ +16%
if (dwValue <= 4) dwValue = 4;
break;
case 8: // Ā¼Ć¶ĀøĆ ĆƒĆ–Ć€Ćŗ +14%
if (dwValue <= 2) dwValue = 2;
break;
}
// v2.03 912 Ā¾Ć†Ć€ĆŒĆ…Ć› ¼öĆĆ˜Ć€ĆŒ 2Ć€ĆŒĆ‡Ć¸Ć€Ć¸Ā¶Ā§ Ć†ĀÆĀ¼ĀŗĆ„Ā ĆƒĆ–Ā´Ć«Ā°ĀŖĆ€Āŗ 7
if ((iGenLevel <= 2) && (dwValue > 7)) dwValue = 7;
// Ā¾Ć†Ć€ĆŒĆ…Ć› Main Ư¼ºÄĀ, °ª ÀÔ·Â
pItem->m_dwAttribute = NULL;
dwType = dwType << 20;
dwValue = dwValue << 16;
pItem->m_dwAttribute = pItem->m_dwAttribute | dwType | dwValue;
// Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ư¼ºÄ° ÀԷµÉ ĆˆĀ®Ā·Ć¼Ć€Āŗ 40%
if (iDice(1,10000) >= 6000) {
// ĆˆĆ±Ā±Ć¨ Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ć†ĀÆĀ¼ĀŗĆ„Ā ĆˆĀæĀ°Ćŗ þ·ù:
//ĆƒĆŸĀ°Ā ĀµĀ¶Ā¼ĀŗĆ€ĆŗĆ‡Ć—(1), ĆƒĆŸĀ°Ā ĀøĆĆĆŸĀ°ĀŖ(2), ĆƒĆŸĀ°Ā Ā¹Ć¦Ā¾Ć®Ā°ĀŖ(3), HP ĆˆĀøĀŗĀ¹Ā·Ā® ĆƒĆŸĀ°Ā(4), SP ĆˆĀøĀŗĀ¹Ā·Ā® ĆƒĆŸĀ°Ā(5)
//MP ĆˆĀøĀŗĀ¹Ā·Ā® ĆƒĆŸĀ°Ā(6), ĆƒĆŸĀ°Ā ĀøĀ¶Ā¹Ć½Ć€ĆŗĆ‡Ć—(7), ¹°¸® Ā´Ć«Ā¹ĆŒĆƶ ĆˆĆ¼ö(8), ¸¶¹ý Ā´Ć«Ā¹ĆŒĆƶ ĆˆĆ¼ö(9)
//¿¬Å¸ Ā´Ć«Ā¹ĆŒĆƶ ĆƒĆŸĀ°Ā(10), ´õ ¸¹Àº °æÇèÄĀ(11), ´õ¸¹Àº Gold(12)
// Ā¹Ā«Ā±Ć¢Ā·Ć¹Ć€ĆŒĀ±Ć¢ ¶§¹®¿ °ø°Ý ĀøĆĆĆŸ ĆƒĆŸĀ°Ā(50%), ¿¬Å¸ Ÿ°ÝÄ Ćõ°Ā(35%), ´õ ¸¹Àº Gold(10%), ´õ ¸¹Àº °æÇèÄĀ(5%)
iResult = iDice(1,10000);
if ((iResult >= 1) && (iResult <= 4999)) dwType = 2;
else if ((iResult >= 5000) && (iResult <= 8499)) dwType = 10;
else if ((iResult >= 8500) && (iResult <= 9499)) dwType = 12;
else if ((iResult >= 9500) && (iResult <= 10000)) dwType = 11;
// Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ư¼ºÄ Ć¤µµ°ª ÀÔ·Â
iResult = iDice(1, 30000);
if ((iResult >= 1) && (iResult < 10000)) dwValue = 1; // 10000/29348 = 34%
else if ((iResult >= 10000) && (iResult < 17400)) dwValue = 2; // 6600/29348 = 22.4%
else if ((iResult >= 17400) && (iResult < 22400)) dwValue = 3; // 4356/29348 = 14.8%
else if ((iResult >= 22400) && (iResult < 25400)) dwValue = 4; // 2874/29348 = 9.7%
else if ((iResult >= 25400) && (iResult < 27400)) dwValue = 5; // 1897/29348 = 6.4%
else if ((iResult >= 27400) && (iResult < 28400)) dwValue = 6; // 1252/29348 = 4.2%
else if ((iResult >= 28400) && (iResult < 28900)) dwValue = 7; // 826/29348 = 2.8%
else if ((iResult >= 28900) && (iResult < 29300)) dwValue = 8; // 545/29348 = 1.85%
else if ((iResult >= 29300) && (iResult < 29600)) dwValue = 9; // 360/29348 = 1.2%
else if ((iResult >= 29600) && (iResult < 29800)) dwValue = 10; // 237/29348 = 0.8%
else if ((iResult >= 29800) && (iResult < 29900)) dwValue = 11; // 156/29348 = 0.5%
else if ((iResult >= 29900) && (iResult < 29970)) dwValue = 12; // 103/29348 = 0.3%
else if ((iResult >= 29970) && (iResult <= 30000)) dwValue = 13; // 68/29348 = 0.1%
else dwValue = 1; // v2.03 906
// ¹«±âÀÇ Sub Ư¼ºÄĀ¿ µû¶ó ¼öÄ º¸Ć¤
switch (dwType) {
case 2: // °ø°Ý¸ĆĆĆŸ ĆƒĆ–Ć€Ćŗ +21%
if (dwValue <= 3) dwValue = 3;
break;
case 10: // ¿¬¼Ó Ÿ°Ý ĆƒĆ–Ć€Ćŗ +1 ĆƒĆ–Ā´Ć« 7
if (dwValue > 7) dwValue = 7;
break;
case 11: // ExpĀ´Ć‚ ¹«Ć¶°Ç +20%
dwValue = 2;
break;
case 12: // GoldĀ´Ć‚ ¹«Ć¶°Ç +50%
dwValue = 5;
break;
}
// v2.03 912 Ā¾Ć†Ć€ĆŒĆ…Ć› ¼öĆĆ˜Ć€ĆŒ 2Ć€ĆŒĆ‡Ć¸Ć€Ć¸Ā¶Ā§ Ć†ĀÆĀ¼ĀŗĆ„Ā ĆƒĆ–Ā´Ć«Ā°ĀŖĆ€Āŗ 7
if ((iGenLevel <= 2) && (dwValue > 7)) dwValue = 7;
// Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ư¼ºÄ ÀÔ·Â
dwType = dwType << 12;
dwValue = dwValue << 8;
pItem->m_dwAttribute = pItem->m_dwAttribute | dwType | dwValue;
}
}
else if (pItem->m_sItemEffectType == DEF_ITEMEFFECTTYPE_ATTACK_MANASAVE) {
// ¸¶¹ý °ø°Ý ¹«±â·ù¿ ºÙÀ» ¼ö ÀÖ´Â Ć¢µÎ»ç¸¦ Ā¼Ā±Ć…Ćƒ 10, 11
// ¸¶¹ý ¼º°øÀÇ(100%) <- ƇƶƀƧ ¸¶¹ý ĆĆ¶Ć†ĆˇĆ€ĆŒĀæĀ ĀŗĆ™Ć€Ā» ¼ö ÀÖ´Â ĀæĆ¤Ā¼Ć’Ā°Ā Ć€ĆŒĀ°Ć… ¹Û¿ ¾ø´Ù.
dwType = 10;
cColor = 5;
// Ā¾Ć†Ć€ĆŒĆ…Ć› »ö»ó ÀÔ·Â
pItem->m_cItemColor = cColor;
iResult = iDice(1, 30000);
if ((iResult >= 1) && (iResult < 10000)) dwValue = 1; // 10000/29348 = 34%
else if ((iResult >= 10000) && (iResult < 17400)) dwValue = 2; // 6600/29348 = 22.4%
else if ((iResult >= 17400) && (iResult < 22400)) dwValue = 3; // 4356/29348 = 14.8%
else if ((iResult >= 22400) && (iResult < 25400)) dwValue = 4; // 2874/29348 = 9.7%
else if ((iResult >= 25400) && (iResult < 27400)) dwValue = 5; // 1897/29348 = 6.4%
else if ((iResult >= 27400) && (iResult < 28400)) dwValue = 6; // 1252/29348 = 4.2%
else if ((iResult >= 28400) && (iResult < 28900)) dwValue = 7; // 826/29348 = 2.8%
else if ((iResult >= 28900) && (iResult < 29300)) dwValue = 8; // 545/29348 = 1.85%
else if ((iResult >= 29300) && (iResult < 29600)) dwValue = 9; // 360/29348 = 1.2%
else if ((iResult >= 29600) && (iResult < 29800)) dwValue = 10; // 237/29348 = 0.8%
else if ((iResult >= 29800) && (iResult < 29900)) dwValue = 11; // 156/29348 = 0.5%
else if ((iResult >= 29900) && (iResult < 29970)) dwValue = 12; // 103/29348 = 0.3%
else if ((iResult >= 29970) && (iResult <= 30000)) dwValue = 13; // 68/29348 = 0.1%
else dwValue = 1; // v2.03 906
// v2.03 912 Ā¾Ć†Ć€ĆŒĆ…Ć› ¼öĆĆ˜Ć€ĆŒ 2Ć€ĆŒĆ‡Ć¸Ć€Ć¸Ā¶Ā§ Ć†ĀÆĀ¼ĀŗĆ„Ā ĆƒĆ–Ā´Ć«Ā°ĀŖĆ€Āŗ 7
if ((iGenLevel <= 2) && (dwValue > 7)) dwValue = 7;
// ¹æ¾î±¸ Main Ư¼ºÄĀ, °ª ÀÔ·Â
pItem->m_dwAttribute = NULL;
dwType = dwType << 20;
dwValue = dwValue << 16;
pItem->m_dwAttribute = pItem->m_dwAttribute | dwType | dwValue;
// Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ư¼ºÄ° ÀԷµÉ ĆˆĀ®Ā·Ć¼Ć€Āŗ 40%
if (iDice(1,10000) >= 6000) {
// ĆˆĆ±Ā±Ć¨ Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ć†ĀÆĀ¼ĀŗĆ„Ā ĆˆĀæĀ°Ćŗ þ·ù:
//ĆƒĆŸĀ°Ā ĀµĀ¶Ā¼ĀŗĆ€ĆŗĆ‡Ć—(1), ĆƒĆŸĀ°Ā ĀøĆĆĆŸĀ°ĀŖ(2), ĆƒĆŸĀ°Ā Ā¹Ć¦Ā¾Ć®Ā°ĀŖ(3), HP ĆˆĀøĀŗĀ¹Ā·Ā® ĆƒĆŸĀ°Ā(4), SP ĆˆĀøĀŗĀ¹Ā·Ā® ĆƒĆŸĀ°Ā(5)
//MP ĆˆĀøĀŗĀ¹Ā·Ā® ĆƒĆŸĀ°Ā(6), ĆƒĆŸĀ°Ā ĀøĀ¶Ā¹Ć½Ć€ĆŗĆ‡Ć—(7), ¹°¸® Ā´Ć«Ā¹ĆŒĆƶ ĆˆĆ¼ö(8), ¸¶¹ý Ā´Ć«Ā¹ĆŒĆƶ ĆˆĆ¼ö(9)
//¿¬Å¸ Ā´Ć«Ā¹ĆŒĆƶ ĆƒĆŸĀ°Ā(10), ´õ ¸¹Àº °æÇèÄĀ(11), ´õ¸¹Àº Gold(12)
// Ā¹Ā«Ā±Ć¢Ā·Ć¹Ć€ĆŒĀ±Ć¢ ¶§¹®¿ °ø°Ý ĀøĆĆĆŸ ĆƒĆŸĀ°Ā(50%), ¿¬Å¸ Ÿ°ÝÄ Ćõ°Ā(35%), ´õ ¸¹Àº Gold(10%), ´õ ¸¹Àº °æÇèÄĀ(5%)
iResult = iDice(1,10000);
if ((iResult >= 1) && (iResult <= 4999)) dwType = 2;
else if ((iResult >= 5000) && (iResult <= 8499)) dwType = 10;
else if ((iResult >= 8500) && (iResult <= 9499)) dwType = 12;
else if ((iResult >= 9500) && (iResult <= 10000)) dwType = 11;
// Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ư¼ºÄ Ć¤µµ°ª ÀÔ·Â
iResult = iDice(1, 30000);
if ((iResult >= 1) && (iResult < 10000)) dwValue = 1; // 10000/29348 = 34%
else if ((iResult >= 10000) && (iResult < 17400)) dwValue = 2; // 6600/29348 = 22.4%
else if ((iResult >= 17400) && (iResult < 22400)) dwValue = 3; // 4356/29348 = 14.8%
else if ((iResult >= 22400) && (iResult < 25400)) dwValue = 4; // 2874/29348 = 9.7%
else if ((iResult >= 25400) && (iResult < 27400)) dwValue = 5; // 1897/29348 = 6.4%
else if ((iResult >= 27400) && (iResult < 28400)) dwValue = 6; // 1252/29348 = 4.2%
else if ((iResult >= 28400) && (iResult < 28900)) dwValue = 7; // 826/29348 = 2.8%
else if ((iResult >= 28900) && (iResult < 29300)) dwValue = 8; // 545/29348 = 1.85%
else if ((iResult >= 29300) && (iResult < 29600)) dwValue = 9; // 360/29348 = 1.2%
else if ((iResult >= 29600) && (iResult < 29800)) dwValue = 10; // 237/29348 = 0.8%
else if ((iResult >= 29800) && (iResult < 29900)) dwValue = 11; // 156/29348 = 0.5%
else if ((iResult >= 29900) && (iResult < 29970)) dwValue = 12; // 103/29348 = 0.3%
else if ((iResult >= 29970) && (iResult <= 30000)) dwValue = 13; // 68/29348 = 0.1%
else dwValue = 1; // v2.03 906
// v2.03 912 Ā¾Ć†Ć€ĆŒĆ…Ć› ¼öĆĆ˜Ć€ĆŒ 2Ć€ĆŒĆ‡Ć¸Ć€Ć¸Ā¶Ā§ Ć†ĀÆĀ¼ĀŗĆ„Ā ĆƒĆ–Ā´Ć«Ā°ĀŖĆ€Āŗ 7
if ((iGenLevel <= 2) && (dwValue > 7)) dwValue = 7;
// ¹«±âÀÇ Sub Ư¼ºÄĀ¿ µû¶ó ¼öÄ º¸Ć¤
switch (dwType) {
case 2: // °ø°Ý¸ĆĆĆŸ ĆƒĆ–Ć€Ćŗ +21%
if (dwValue <= 3) dwValue = 3;
break;
case 10: // ¿¬¼Ó Ÿ°Ý ĆƒĆ–Ć€Ćŗ +1 ĆƒĆ–Ā´Ć« 7
if (dwValue > 7) dwValue = 7;
break;
case 11: // ExpĀ´Ć‚ ¹«Ć¶°Ç +20%
dwValue = 2;
break;
case 12: // GoldĀ´Ć‚ ¹«Ć¶°Ç +50%
dwValue = 5;
break;
}
// Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ư¼ºÄ ÀÔ·Â
dwType = dwType << 12;
dwValue = dwValue << 8;
pItem->m_dwAttribute = pItem->m_dwAttribute | dwType | dwValue;
}
}
else if (pItem->m_sItemEffectType == DEF_ITEMEFFECTTYPE_DEFENSE) {
// ¹æ¾î±¸¿ ¸Â´Â Ć¢µÎ»ç¿Í Ư¼ºÄ¦ Ā¼Ā±Ć…Ćƒ, ÇÒ´çÇÑ´Ù.
// °ĀĆˆĀĀµĆˆ(60%) °ĀĀŗĀ¿î (30%) ¸¶³ª ĀŗĀÆĆˆĀÆĆ€Ć‡(5%) Ć‡ĆŠĀ»Ć¬ ĆƒĆ¦Ć€Ć¼Ć€Ć‡(5%)
iResult = iDice(1,10000);
if ((iResult >= 1) && (iResult <= 5999)) dwType = 8;
else if ((iResult >= 6000) && (iResult <= 8999)) dwType = 6;
else if ((iResult >= 9000) && (iResult <= 9554)) dwType = 11; //dwType = 11;
else if ((iResult >= 9555) && (iResult <= 10000)) dwType = 12; //dwType = 12;
// Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ư¼ºÄ Ć¤µµ°ª ÀÔ·Â
iResult = iDice(1, 30000);
if ((iResult >= 1) && (iResult < 10000)) dwValue = 1; // 10000/29348 = 34%
else if ((iResult >= 10000) && (iResult < 17400)) dwValue = 2; // 6600/29348 = 22.4%
else if ((iResult >= 17400) && (iResult < 22400)) dwValue = 3; // 4356/29348 = 14.8%
else if ((iResult >= 22400) && (iResult < 25400)) dwValue = 4; // 2874/29348 = 9.7%
else if ((iResult >= 25400) && (iResult < 27400)) dwValue = 5; // 1897/29348 = 6.4%
else if ((iResult >= 27400) && (iResult < 28400)) dwValue = 6; // 1252/29348 = 4.2%
else if ((iResult >= 28400) && (iResult < 28900)) dwValue = 7; // 826/29348 = 2.8%
else if ((iResult >= 28900) && (iResult < 29300)) dwValue = 8; // 545/29348 = 1.85%
else if ((iResult >= 29300) && (iResult < 29600)) dwValue = 9; // 360/29348 = 1.2%
else if ((iResult >= 29600) && (iResult < 29800)) dwValue = 10; // 237/29348 = 0.8%
else if ((iResult >= 29800) && (iResult < 29900)) dwValue = 11; // 156/29348 = 0.5%
else if ((iResult >= 29900) && (iResult < 29970)) dwValue = 12; // 103/29348 = 0.3%
else if ((iResult >= 29970) && (iResult <= 30000)) dwValue = 13; // 68/29348 = 0.1%
else dwValue = 1; // v2.03 906
// ¹æ¾î±¸ÀÇ Main Ư¼ºÄĀ¿ µû¶ó ¼öÄ º¸Ć¤
switch (dwType) {
case 6: // Ā°Ć¦Ā·Ā®ĆˆĀ ĆƒĆ–Ć€Ćŗ +16%
if (dwValue <= 4) dwValue = 4;
break;
case 8: // Ā¼Ć¶ĀøĆ ĆƒĆ–Ć€Ćŗ +14%
if (dwValue <= 2) dwValue = 2;
break;
case 11:
case 12:
// v2.04
dwValue = (dwValue+1) / 2;
if (dwValue < 1) dwValue = 1;
if ((iGenLevel <= 3) && (dwValue > 2)) dwValue = 2;
break;
}
// v2.03 912 Ā¾Ć†Ć€ĆŒĆ…Ć› ¼öĆĆ˜Ć€ĆŒ 2Ć€ĆŒĆ‡Ć¸Ć€Ć¸Ā¶Ā§ Ć†ĀÆĀ¼ĀŗĆ„Ā ĆƒĆ–Ā´Ć«Ā°ĀŖĆ€Āŗ 7
if ((iGenLevel <= 2) && (dwValue > 7)) dwValue = 7;
// ¹æ¾î±¸ Main Ư¼ºÄĀ, °ª ÀÔ·Â
pItem->m_dwAttribute = NULL;
dwType = dwType << 20;
dwValue = dwValue << 16;
pItem->m_dwAttribute = pItem->m_dwAttribute | dwType | dwValue;
// ¹æ¾î±¸ Sub Ư¼ºÄ° ÀԷµÉ ĆˆĀ®Ā·Ć¼Ć€Āŗ 40%
if (iDice(1,10000) >= 6000) {
// ĆˆĆ±Ā±Ć¨ Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ć†ĀÆĀ¼ĀŗĆ„Ā ĆˆĀæĀ°Ćŗ þ·ù:
//ĆƒĆŸĀ°Ā ĀµĀ¶Ā¼ĀŗĆ€ĆŗĆ‡Ć—(1), ĆƒĆŸĀ°Ā ĀøĆĆĆŸĀ°ĀŖ(2), ĆƒĆŸĀ°Ā Ā¹Ć¦Ā¾Ć®Ā°ĀŖ(3), HP ĆˆĀøĀŗĀ¹Ā·Ā® ĆƒĆŸĀ°Ā(4), SP ĆˆĀøĀŗĀ¹Ā·Ā® ĆƒĆŸĀ°Ā(5)
//MP ĆˆĀøĀŗĀ¹Ā·Ā® ĆƒĆŸĀ°Ā(6), ĆƒĆŸĀ°Ā ĀøĀ¶Ā¹Ć½Ć€ĆŗĆ‡Ć—(7), ¹°¸® Ā´Ć«Ā¹ĆŒĆƶ ĆˆĆ¼ö(8), ¸¶¹ý Ā´Ć«Ā¹ĆŒĆƶ ĆˆĆ¼ö(9)
//¿¬Å¸ Ā´Ć«Ā¹ĆŒĆƶ ĆƒĆŸĀ°Ā(10), ´õ ¸¹Àº °æÇèÄĀ(11), ´õ¸¹Àº Gold(12)
// ¹æ¾î±¸ Ć€ĆŒĀ±Ć¢ ¶§¹®¿Ā
// ĆƒĆŸĀ°Ā¹æ¾î°ª(10%) ĆƒĆŸĀ°Āµ¶¼ºÀúÇ×(30%) SPĆˆĀøĀŗĀ¹ĆƒĆŸĀ°Ā(15%) HPĆˆĀøĀŗĀ¹ĆƒĆŸĀ°Ā(10%)
// MPĆˆĀøĀŗĀ¹ ĆƒĆŸĀ°Ā(10%) ĆƒĆŸĀ°Ā¸¶¹ýÀúÇ×(15%) Ā¹Ā°ĀøĀ®Ā´Ć«Ā¹ĆŒĆĆ¶ĆˆĆ¼ö(3%) ĀøĀ¶Ā¹Ć½Ā´Ć«Ā¹ĆŒĆĆ¶ĆˆĆ¼ö(3%)
iResult = iDice(1,10000);
if ((iResult >= 1) && (iResult <= 999)) dwType = 3;
else if ((iResult >= 1000) && (iResult <= 3999)) dwType = 1;
else if ((iResult >= 4000) && (iResult <= 5499)) dwType = 5;
else if ((iResult >= 5500) && (iResult <= 6499)) dwType = 4;
else if ((iResult >= 6500) && (iResult <= 7499)) dwType = 6;
else if ((iResult >= 7500) && (iResult <= 9399)) dwType = 7;
else if ((iResult >= 9400) && (iResult <= 9799)) dwType = 8;
else if ((iResult >= 9800) && (iResult <= 10000)) dwType = 9;
// Ā¾Ć†Ć€ĆŒĆ…Ć› Sub Ư¼ºÄ Ć¤µµ°ª ÀÔ·Â
iResult = iDice(1, 30000);
if ((iResult >= 1) && (iResult < 10000)) dwValue = 1; // 10000/29348 = 34%
else if ((iResult >= 10000) && (iResult < 17400)) dwValue = 2; // 6600/29348 = 22.4%
else if ((iResult >= 17400) && (iResult < 22400)) dwValue = 3; // 4356/29348 = 14.8%
else if ((iResult >= 22400) && (iResult < 25400)) dwValue = 4; // 2874/29348 = 9.7%
else if ((iResult >= 25400) && (iResult < 27400)) dwValue = 5; // 1897/29348 = 6.4%
else if ((iResult >= 27400) && (iResult < 28400)) dwValue = 6; // 1252/29348 = 4.2%
else if ((iResult >= 28400) && (iResult < 28900)) dwValue = 7; // 826/29348 = 2.8%
else if ((iResult >= 28900) && (iResult < 29300)) dwValue = 8; // 545/29348 = 1.85%
else if ((iResult >= 29300) && (iResult < 29600)) dwValue = 9; // 360/29348 = 1.2%
else if ((iResult >= 29600) && (iResult < 29800)) dwValue = 10; // 237/29348 = 0.8%
else if ((iResult >= 29800) && (iResult < 29900)) dwValue = 11; // 156/29348 = 0.5%
else if ((iResult >= 29900) && (iResult < 29970)) dwValue = 12; // 103/29348 = 0.3%
else if ((iResult >= 29970) && (iResult <= 30000)) dwValue = 13; // 68/29348 = 0.1%
else dwValue = 1; // v2.03 906
// ¹æ¾î±¸ÀÇ Sub Ư¼ºÄĀ¿ µû¶ó ¼öÄ º¸Ć¤
switch (dwType) {
case 1: // µ¶¼ºÀúÇ× ĆƒĆ–Ć€Ćŗ +21%
case 3: // ¹°¸®¹æ¾î ĆƒĆ–Ć€Ćŗ +21%
case 7: // ¸¶¹ý ÀúÇ× ĆƒĆ–Ć€Ćŗ +21%
case 8: // ¹°