- Mesaj
- 524
- Çözümler
- 33
- Beğeni
- 129
- Puan
- 940
- Ticaret Puanı
- 0
Merhabalar. Sürgün slotlarında ATT_ELEC ekli. Sorun şu; %1 şimşek direnci olsa bile slotlar hasar vuramıyor. 0'a indiğinde normal hasar veriyorlar. Oyunda maksimum %70-80 Şimşek Direnci elde edilebiliyor. Karakterin buna orantılı şekilde hasar yemesini istiyorum. Düzenleme yaptığım yerler aşağıda mevcut.
battle.cpp:
int64_t CalcAttBonus(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, int64_t iAtk)
{
if (!pkVictim->IsPC())
iAtk += pkAttacker->GetMarriageBonus(UNIQUE_ITEM_MARRIAGE_ATTACK_BONUS);
if (!pkAttacker->IsPC())
{
int64_t iReduceDamagePct = pkVictim->GetMarriageBonus(UNIQUE_ITEM_MARRIAGE_TRANSFER_DAMAGE);
iAtk = iAtk * (100 + iReduceDamagePct) / 100;
}
if (pkAttacker->IsNPC() && pkVictim->IsPC())
{
iAtk = (iAtk * CHARACTER_MANAGER::instance().GetMobDamageRate(pkAttacker)) / 100;
iAtk -= (iAtk * 100 * pkVictim->GetPoint(POINT_RESIST_MONSTER)) / 10000;
}
if (pkVictim->IsNPC())
{
if (pkVictim->IsRaceFlag(RACE_FLAG_ANIMAL))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_UNDEAD))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_UNDEAD)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_DEVIL))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_DEVIL)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_HUMAN))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_HUMAN)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_ORC))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ORC)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_MILGYO))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_MILGYO)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_INSECT))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_INSECT)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_FIRE))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_FIRE)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_ICE))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ICE)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_DESERT))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_DESERT)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_TREE))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_TREE)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_ATT_ELEC))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ENCHANT_ELEC)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_FIRE) || pkVictim->IsRaceFlag(RACE_FLAG_ATT_FIRE))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ENCHANT_FIRE)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_ICE) || pkVictim->IsRaceFlag(RACE_FLAG_ATT_ICE))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ENCHANT_ICE)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_ATT_WIND))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ENCHANT_WIND)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_ATT_EARTH))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ENCHANT_EARTH)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_ATT_DARK))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ENCHANT_DARK)) / 100;
#ifdef ENABLE_BONUS_BOSS
if (pkVictim->IsRaceFlag(RACE_FLAG_ATT_BOSS))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_BOSS)) *8 / 100;
#endif
#ifdef ENABLE_BONUS_STONE
if (pkVictim->IsRaceFlag(RACE_FLAG_ATT_METIN))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_STONE)) *8 / 100;
#endif
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_MONSTER)) *4 / 100;
}
else if (pkVictim->IsPC())
{
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_HUMAN)) / 100;
switch (pkVictim->GetJob())
{
case JOB_WARRIOR:
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_WARRIOR)) / 100;
break;
case JOB_ASSASSIN:
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ASSASSIN)) / 100;
break;
case JOB_SURA:
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_SURA)) / 100;
break;
case JOB_SHAMAN:
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_SHAMAN)) / 100;
break;
}
}
if (pkAttacker->IsPC() == true)
{
switch (pkAttacker->GetJob())
{
case JOB_WARRIOR:
iAtk -= (iAtk * pkVictim->GetPoint(POINT_RESIST_WARRIOR)) / 100;
break;
case JOB_ASSASSIN:
iAtk -= (iAtk * pkVictim->GetPoint(POINT_RESIST_ASSASSIN)) / 100;
break;
case JOB_SURA:
iAtk -= (iAtk * pkVictim->GetPoint(POINT_RESIST_SURA)) / 100;
break;
case JOB_SHAMAN:
iAtk -= (iAtk * pkVictim->GetPoint(POINT_RESIST_SHAMAN)) / 100;
break;
}
}
if (pkAttacker->IsMonster() && pkVictim->IsPC())
{
if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_ELEC))
iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_ELEC)) / 100;
else if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_FIRE))
iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_FIRE)) / 100;
else if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_ICE))
iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_ICE)) / 100;
else if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_WIND))
iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_WIND)) / 100;
else if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_EARTH))
iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_EARTH)) / 100;
else if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_DARK))
iAtk -= (iAtk * 30 * pkVictim->GetPoint(POINT_RESIST_DARK)) / 100;
}
return iAtk;
}
mob_proto.txt:
2401 "????" "PAWN" "MONSTER" "MELEE" 87 "BERSERK" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_footman" 0 107 53 80 26 197 231 30000 3 14 2500 10000 500000 67 110 130 110 2000 50 0 0 0 3 0 0 5 5 0 0 0 10 10 10 0 -70 30 0 0 "2" 0 5 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0
2402 "????" "PAWN" "MONSTER" "RANGE" 89 "GODSPEED" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_bowman" 0 82 110 55 27 121 252 30000 5 14 2500 10000 500000 72 105 150 100 2000 650 0 0 0 0 0 0 5 5 20 20 0 0 0 -30 0 -70 10 0 0 "2" 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0
2403 "????" "S_PAWN" "MONSTER" "RANGE" 89 "REVIVE" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_magician" 0 82 55 110 27 181 265 30000 5 14 2500 10000 500000 76 100 150 100 2000 700 0 0 0 0 10 10 0 0 10 10 25 -5 -5 30 0 -60 -30 0 0 "3" 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0
2404 "????" "S_PAWN" "MONSTER" "MELEE" 90 "STONESKIN" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_officer" 0 111 83 55 28 202 265 30000 7 20 2500 10000 500000 79 110 130 100 2000 50 0 0 0 0 0 0 5 5 10 10 5 -5 -5 10 0 0 15 0 0 "4" 0 15 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0
2411 "?????" "S_PAWN" "MONSTER" "MELEE" 91 "BERSERK" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_footman" 0 112 84 56 28 184 269 30000 3 14 2500 10000 500000 78 115 130 100 2000 50 0 0 0 5 0 0 6 3 10 0 15 30 25 15 0 -60 30 0 0 "2" 0 15 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0
2412 "?????" "KNIGHT" "MONSTER" "RANGE" 93 "GODSPEED" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_bowman" 0 86 114 57 29 218 269 30000 3 14 2500 10000 500000 82 110 150 100 2000 700 0 0 0 0 3 3 6 6 30 25 10 0 10 5 0 -60 20 0 0 "2" 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0
2413 "?????" "KNIGHT" "MONSTER" "RANGE" 95 "REVIVE" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_magician" 0 88 58 117 29 235 286 30000 4 14 2500 10000 500000 88 110 150 100 2000 700 0 0 0 10 0 10 2 2 30 40 5 30 25 0 0 -40 40 0 0 "3" 0 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 0
2414 "?????" "S_KNIGHT" "MONSTER" "MELEE" 97 "STONESKIN" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_officer" 0 119 89 60 30 252 303 30000 5 20 2500 10000 500000 95 105 130 100 2000 50 0 0 0 5 0 5 8 8 30 20 20 10 5 20 0 -60 -10 0 0 "3" 0 20 0 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0 0
2431 "????" "PAWN" "MONSTER" "MELEE" 80 "BERSERK" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_footman" 0 107 53 80 26 163 277 30000 3 7 2500 10000 500000 67 110 130 110 2000 50 0 0 0 3 0 0 5 5 0 -10 0 -10 -10 50 0 -70 30 0 0 "2" 0 5 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0
2432 "????" "PAWN" "MONSTER" "RANGE" 82 "GODSPEED" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_bowman" 0 82 110 55 27 166 282 30000 5 7 2500 10000 500000 72 105 150 100 2000 650 0 0 0 0 0 0 5 5 -5 -15 0 5 5 5 0 -60 15 0 0 "2" 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0
2433 "????" "S_PAWN" "MONSTER" "RANGE" 82 "REVIVE" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_magician" 0 82 55 110 27 176 282 30000 5 7 2500 10000 500000 76 105 150 100 2000 650 0 0 0 0 10 10 0 0 10 10 5 -10 -10 10 0 -60 10 0 0 "3" 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0
2434 "????" "S_PAWN" "MONSTER" "MELEE" 83 "STONESKIN" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_officer" 0 111 83 55 28 167 285 30000 7 10 2500 10000 500000 79 115 130 100 2000 50 0 0 0 0 0 0 5 5 -5 -15 -5 5 5 5 0 -60 15 0 0 "4" 0 15 0 0 0 0 0 0 0 0 0 0 0 0 20 0 0 0 0
2451 "?????" "S_PAWN" "MONSTER" "MELEE" 84 "BERSERK" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_footman" 0 112 84 56 28 169 287 30000 5 7 2500 10000 500000 67 135 130 100 2000 50 0 0 0 3 0 0 15 20 0 -10 0 -10 -10 50 0 -60 50 0 0 "3" 0 15 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0 0 0
2452 "?????" "KNIGHT" "MONSTER" "RANGE" 86 "GODSPEED" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_bowman" 0 86 114 57 29 171 293 30000 5 7 2500 10000 500000 72 130 150 100 2000 700 0 0 0 0 0 0 15 20 -5 -15 0 5 5 5 0 -60 25 0 0 "4" 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0
2453 "?????" "KNIGHT" "MONSTER" "RANGE" 88 "REVIVE" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_magician" 0 88 58 117 29 174 298 30000 7 7 2500 10000 500000 76 130 150 100 2000 700 0 0 0 0 10 10 5 15 10 10 5 -10 -10 10 0 -60 30 0 0 "4" 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 30 0
2454 "?????" "S_KNIGHT" "MONSTER" "MELEE" 90 "STONESKIN" 0 "DEVIL, ATT_ELEC" "SLOW,CURSE,TERROR" 0 "ch_officer" 0 119 89 60 30 177 303 30000 7 10 2500 10000 500000 79 140 130 100 2000 50 0 0 0 0 0 0 15 20 -5 -15 -5 5 5 5 0 -60 35 0 0 "6" 0 25 0 0 0 0 0 0 0 0 0 0 0 0 30 0 0 0 0