O a ja sie zastanawiałem co powoduje crash ;) Nie mówcie że skryp do dupy, wystarczy gdzieniegdzie if'a dodać i będzie działac ;D
Jak coś wymyślę to podrzucę
bool Game::combatChangeHealth(CombatType_t combatType, Creature* attacker, Creature* target,
int32_t healthChange, bool checkDefense /* = false */, bool checkArmor /* = false */)
{
const Position& targetPos = target->getPosition();
double returnDamage = 0;
damage = std::min(target->getHealth(), damage);
if(damage > 0){
if(target->getPlayer()){
Player *player = target->getPlayer();
Item* item = player->getInventoryItem(SLOT_HEAD);
if(item){
const ItemType& head = Item::items[item->getID()];
if(head.abilities.returnDamage != 0){
returnDamage += head.abilities.returnDamage;
}
}
item = player->getInventoryItem(SLOT_NECKLACE);
if(item){
const ItemType& neck = Item::items[item->getID()];
if(neck.abilities.returnDamage != 0){
returnDamage += neck.abilities.returnDamage;
}
}
item = player->getInventoryItem(SLOT_ARMOR);
if(item){
const ItemType& armor = Item::items[item->getID()];
if(armor.abilities.returnDamage != 0){
returnDamage += armor.abilities.returnDamage;
}
}
item = player->getInventoryItem(SLOT_LEGS);
if(item){
const ItemType& legs = Item::items[item->getID()];
if(legs.abilities.returnDamage != 0){
returnDamage += legs.abilities.returnDamage;
}
}
item = player->getInventoryItem(SLOT_FEET);
if(item){
const ItemType& feet = Item::items[item->getID()];
if(feet.abilities.returnDamage != 0){
returnDamage += feet.abilities.returnDamage;
}
}
item = player->getInventoryItem(SLOT_RING);
if(item){
const ItemType& ring = Item::items[item->getID()];
if(ring.abilities.returnDamage != 0){
returnDamage += ring.abilities.returnDamage;
}
}
item = player->getInventoryItem(SLOT_LEFT);
if(item){
const ItemType& left = Item::items[item->getID()];
if(left.abilities.returnDamage != 0){
returnDamage += left.abilities.returnDamage;
}
}
item = player->getInventoryItem(SLOT_RIGHT);
if(item){
const ItemType& right = Item::items[item->getID()];
if(right.abilities.returnDamage != 0){
returnDamage += right.abilities.returnDamage;
}
}
returnDamage /= 100;
}
if(!(int)(returnDamage*damage) == 0){
if(attacker){
attacker->drainHealth(target, combatType, (int)(returnDamage*damage));
}}
std::stringstream ss;
ss << damage;
addMagicEffect(list, targetPos, hitEffect);
addAnimatedText(list, targetPos, textColor, ss.str());
if(attacker){
ss.str("");
if(!(int)(returnDamage*damage) == 0){
ss << (int)(returnDamage*damage);
const Position& attackerPos = attacker->getPosition();
addMagicEffect(list, attackerPos, NM_ME_DRAW_BLOOD);
addAnimatedText(list, attackerPos, TEXTCOLOR_ORANGE,"-" + ss.str());
}
}
Ostatnio zmieniony przez Pimpeq : 25-06-2009, 22:39
Interpreter lua ;) Sprawdź swoje skrypty bez odpalania otsa :P http://grzyby.no-ip.info/lua.exe
Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)
Zakładki