__________
ClientSrc>GameLib>ItemData.h
// Search: enum EApplyTypes
// Add to Enum:
APPLY_ATTBONUS_NEWATTRTYPE,
__________
ClientSrc>UserInterface>PythonPlayerModule.cpp
// Searcharch:
PyModule_AddIntConstant(poModule, "APPLY_ANTI_PENETRATE_PCT", CItemData::APPLY_ANTI_PENETRATE_PCT );
// Add:
PyModule_AddIntConstant(poModule, "APPLY_ATTBONUS_NEWATTRTYPE", CItemData::APPLY_ATTBONUS_NEWATTRTYPE);
__________
ClientSrc>UserInterface>Packet.h
// Search: enum EPointTypes
// Add to Enum:
POINT_ATTBONUS_NEWATTRTYPE,
__________
GameSrc>common>length.h
// Search: enum ERaceFlags
// Add:
RACE_FLAG_ATT_NEWATTRTYPE = (1 << /*Last number +1*/)
// Search: enum EApplyTypes
// Add to Enum:
APPLY_ATTBONUS_NEWATTRTYPE,
__________
GameSrc>game>char.h
// Search: enum EPointTypes
// Add to Enum:
POINT_ATTBONUS_NEWATTRTYPE,
__________
GameSrc>game>char.cpp
// Search: case POINT_RESIST_SHAMAN:
// Add:
case POINT_ATTBONUS_NEWATTRTYPE:
// Search: case APPLY_NORMAL_HIT_DAMAGE_BONUS:
// Add:
case APPLY_ATTBONUS_NEWATTRTYPE:
__________
GameSrc>game>cmd_general.cpp
// Search:
static const char* [...]
switch (apply_number)
{
// ICINDE BUL
case POINT_RESIST_SHAMAN: return LC_TEXT("¹«´ç°ø°Ý¿¡ %d%% ÀúÇ×");
// Add:
case POINT_ATTBONUS_NEWATTRTYPE: return LC_TEXT("POINT_ATTBONUS_NEWATTRTYPE: %d%%");
__________
GameSrc>game>cmd_gm.cpp
// Search: tch->GetPoint(POINT_ATTBONUS_SHAMAN));
// Add in do_state command:
ch->ChatPacket(CHAT_TYPE_INFO, " NEWATTRTYPE:%3d%%",
tch->GetPoint(POINT_ATTBONUS_NEWATTRTYPE));
__________
GameSrc>game>constants.cpp
// Search: const TApplyInfo aApplyInfo[MAX_APPLY_NUM] =
// Add in function:
{ POINT_ATTBONUS_NEWATTRTYPE, }, // APPLY_ATTBONUS_NEWATTRTYPE,
// Search: TValueName c_aApplyTypeNames[] =
// Search in this: { NULL, 0 }
// Add above:
{ "ATT_NEWATTRTYPE", APPLY_ATTBONUS_NEWATTRTYPE },
__________
GameSrc>game>battle.cpp
pkVictim (It meanings of defendor)
pkAttacker is attacker
if we are adding Defence attr type from mobs we will add this func.
if (pkAttacker->IsNPC() && pkVictim->IsPC())
or we are adding attack attr type to mobs we will add this func.
if (pkAttacker->IsPC() && pkVictim->IsNPC())
Logic is this
//Search: iAtk+= (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL)) / 100;
// Add:
else if (pkVictim->IsRaceFlag(RACE_FLAG_ATT_NEWATTRTYPE))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_NEWATTRTYPE)) / 100;
__________
GameSrc>db>protoreader.cpp
// Search: string arApplyType[]
// Add to the end:
"APPLY_ATTBONUS_NEWATTRTYPE",
// Search: string arRaceFlag[]
// Add to the end:
"ATT_NEWATTRTYPE"
__________
Tools>DumpProtoSource>ItemCSVReader.cpp
// Search: string arApplyType[]
// Add to the end:
"APPLY_ATTBONUS_NEWATTRTYPE",
// Search: string arRaceFlag[]
// Add to the end:
"ATT_NEWATTRTYPE"
__________
Client>root>uitooltip.py
// Search: item.APPLY_ATTBONUS_DEVIL : localeInfo.TOOLTIP_APPLY_ATTBONUS_DEVIL,
// Add:
item.APPLY_ATTBONUS_NEWATTRTYPE : localeInfo.TOOLTIP_APPLY_ATTBONUS_NEWATTRTYPE,
__________
Client>locale>xx>locale_game.txt
// Add:
TOOLTIP_APPLY_ATTBONUS_NEWATTRTYPE Strong against to attr type you want xd +%d%% SA
Hope dont muss something