Ir para conteúdo

Featured Replies

Postado

Bom perguntei pra um amigo, ele respondeu que sabe por scr, falou pra modificar o combarChangeHealth, but ainda não testei...
mas ta ai.

em game.cpp

 

Spoiler

bool Game::combatChangeHealth(CombatType_t combatType, Creature* attacker, Creature* target, int32_t healthChange,

    MagicEffect_t hitEffect/* = MAGIC_EFFECT_UNKNOWN*/, Color_t hitColor/* = COLOR_UNKNOWN*/, bool force/* = false*/)

{

    if (attacker->getMonster() && target->getMonster()) {

       return false;

    }

    const Position& targetPos = target->getPosition();

    if(healthChange > 0)

    {

        if(!force && target->getHealth() <= 0)

            return false;

 

        bool deny = false;

        CreatureEventList statsChangeEvents = target->getCreatureEvents(CREATURE_EVENT_STATSCHANGE);

        for(CreatureEventList::iterator it = statsChangeEvents.begin(); it != statsChangeEvents.end(); ++it)

        {

            if(!(*it)->executeStatsChange(target, attacker, STATSCHANGE_HEALTHGAIN, combatType, healthChange))

                deny = true;

        }

 

        if(deny)

            return false;

 

        target->gainHealth(attacker, healthChange);

        if(g_config.getBool(ConfigManager::SHOW_HEALING_DAMAGE) && !target->isGhost() &&

            (g_config.getBool(ConfigManager::SHOW_HEALING_DAMAGE_MONSTER) || !target->getMonster()))

        {

            char buffer[20];

            sprintf(buffer, "+%d", healthChange);

 

            const SpectatorVec& list = getSpectators(targetPos);

            if(combatType != COMBAT_HEALING)

                addMagicEffect(list, targetPos, MAGIC_EFFECT_WRAPS_BLUE);

 

            addAnimatedText(list, targetPos, COLOR_GREEN, buffer);

        }

    }

    else

    {

        const SpectatorVec& list = getSpectators(targetPos);

        if(!target->isAttackable() || Combat::canDoCombat(attacker, target) != RET_NOERROR)

        {

            addMagicEffect(list, targetPos, MAGIC_EFFECT_POFF);

            return true;

        }

 

        int32_t damage = -healthChange;

        if(damage != 0)

        {

            if(target->hasCondition(CONDITION_MANASHIELD) && combatType != COMBAT_UNDEFINEDDAMAGE)

            {

                int32_t manaDamage = std::min(target->getMana(), damage);

                damage = std::max((int32_t)0, damage - manaDamage);

                if(manaDamage != 0)

                {

                    bool deny = false;

                    CreatureEventList statsChangeEvents = target->getCreatureEvents(CREATURE_EVENT_STATSCHANGE);

                    for(CreatureEventList::iterator it = statsChangeEvents.begin(); it != statsChangeEvents.end(); ++it)

                    {

                        if(!(*it)->executeStatsChange(target, attacker, STATSCHANGE_MANALOSS, combatType, manaDamage))

                            deny = true;

                    }

 

                    if(deny)

                        return false;

 

                    target->drainMana(attacker, combatType, manaDamage);

                    char buffer[20];

                    sprintf(buffer, "%d", manaDamage);

 

                    addMagicEffect(list, targetPos, MAGIC_EFFECT_LOSE_ENERGY);

                    addAnimatedText(list, targetPos, COLOR_BLUE, buffer);

                }

            }

 

            damage = std::min(target->getHealth(), damage);

            if(damage > 0)

            {

                bool deny = false;

                CreatureEventList statsChangeEvents = target->getCreatureEvents(CREATURE_EVENT_STATSCHANGE);

                for(CreatureEventList::iterator it = statsChangeEvents.begin(); it != statsChangeEvents.end(); ++it)

                {

                    if(!(*it)->executeStatsChange(target, attacker, STATSCHANGE_HEALTHLOSS, combatType, damage))

                        deny = true;

                }

 

                if(deny)

                    return false;

 

                target->drainHealth(attacker, combatType, damage);

                addCreatureHealth(list, target);

 

                Color_t textColor = COLOR_NONE;

                MagicEffect_t magicEffect = MAGIC_EFFECT_NONE;

                switch(combatType)

                {

                    case COMBAT_PHYSICALDAMAGE:

                    {

                        Item* splash = NULL;

                        switch(target->getRace())

                        {

                            case RACE_VENOM:

                                textColor = COLOR_LIGHTGREEN;

                                magicEffect = MAGIC_EFFECT_POISON;

                                splash = Item::CreateItem(ITEM_SMALLSPLASH, FLUID_GREEN);

                                break;

 

                            case RACE_BLOOD:

                                textColor = COLOR_RED;

                                magicEffect = MAGIC_EFFECT_DRAW_BLOOD;

                                splash = Item::CreateItem(ITEM_SMALLSPLASH, FLUID_BLOOD);

                                break;

 

                            case RACE_UNDEAD:

                                textColor = COLOR_GREY;

                                magicEffect = MAGIC_EFFECT_HIT_AREA;

                                break;

 

                            case RACE_FIRE:

                                textColor = COLOR_ORANGE;

                                magicEffect = MAGIC_EFFECT_DRAW_BLOOD;

                                break;

 

                            case RACE_ENERGY:

                                textColor = COLOR_PURPLE;

                                magicEffect = MAGIC_EFFECT_PURPLEENERGY;

                                break;

 

                            default:

                                break;

                        }

 

                        if(splash)

                        {

                            internalAddItem(NULL, target->getTile(), splash, INDEX_WHEREEVER, FLAG_NOLIMIT);

                            startDecay(splash);

                        }

                        break;

                    }

 

                    case COMBAT_ENERGYDAMAGE:

                    {

                        textColor = COLOR_PURPLE;

                        magicEffect = MAGIC_EFFECT_ENERGY_DAMAGE;

                        break;

                    }

 

                    case COMBAT_EARTHDAMAGE:

                    {

                        textColor = COLOR_LIGHTGREEN;

                        magicEffect = MAGIC_EFFECT_POISON_RINGS;

                        break;

                    }

 

                    case COMBAT_DROWNDAMAGE:

                    {

                        textColor = COLOR_LIGHTBLUE;

                        magicEffect = MAGIC_EFFECT_LOSE_ENERGY;

                        break;

                    }

 

                    case COMBAT_FIREDAMAGE:

                    {

                        textColor = COLOR_ORANGE;

                        magicEffect = MAGIC_EFFECT_HITBY_FIRE;

                        break;

                    }

 

                    case COMBAT_ICEDAMAGE:

                    {

                        textColor = COLOR_TEAL;

                        magicEffect = MAGIC_EFFECT_ICEATTACK;

                        break;

                    }

 

                    case COMBAT_HOLYDAMAGE:

                    {

                        textColor = COLOR_YELLOW;

                        magicEffect = MAGIC_EFFECT_HOLYDAMAGE;

                        break;

                    }

 

                    case COMBAT_DEATHDAMAGE:

                    {

                        textColor = COLOR_DARKRED;

                        magicEffect = MAGIC_EFFECT_SMALLCLOUDS;

                        break;

                    }

 

                    case COMBAT_LIFEDRAIN:

                    {

                        textColor = COLOR_RED;

                        magicEffect = MAGIC_EFFECT_WRAPS_RED;

                        break;

                    }

 

                    default:

                        break;

                }

 

                if(hitEffect != MAGIC_EFFECT_UNKNOWN)

                    magicEffect = hitEffect;

 

                if(hitColor != COLOR_UNKNOWN)

                    textColor = hitColor;

 

                if(textColor < COLOR_NONE && magicEffect < MAGIC_EFFECT_NONE)

                {

                    char buffer[20];

                    sprintf(buffer, "%d", damage);

 

                    addMagicEffect(list, targetPos, magicEffect);

                    addAnimatedText(list, targetPos, textColor, buffer);

                }

            }

        }

    }

 

    return true;

}

 

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

  • Respostas 15
  • Visualizações 1.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Postado

não sei porque não testei..

mas me parece que só acrescentou o 

 

  if (attacker->getMonster() && target->getMonster()) {

       return false;

    }

 

o que faz todo sentido...  alias não testei porque to com problemas no meu dev

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Postado
Agora, ledcar disse:

cara tentei fazer o que me falow e compilar em seguida mas da um erro na hora de compilar no  " #include "databasepgsql.h"  


Bom ai já não posso te ajudar amigo... problemas de compilação não é comigo.. já compilou alguma vez? deu certo? porque vc so mexeu no game.cpp certo?

Scriptszinhos:

 

Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo