Ir para conteúdo

Featured Replies

Postado

Em game.cpp, procure por:

bool Game::combatChangeHealth

dentro dessa função, procure por:

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

e substitua por:

if(g_config.getBool(ConfigManager::SHOW_HEALING_DAMAGE) && !target->isGhost() &&
	(g_config.getBool(ConfigManager::SHOW_HEALING_DAMAGE_MONSTER) || !target->getMonster()))
{
	int32_t realHeal = healthChange;
	if((realHeal + target->getHealth()) > target->getMaxHealth())
		realHeal = (target->getMaxHealth() - target->getHealth());
	
	if(realHeal > 0)
	{
		char buffer[20];
		sprintf(buffer, "+%d", realHeal);

		const SpectatorVec& list = getSpectators(targetPos);
		if(combatType != COMBAT_HEALING)
			addMagicEffect(list, targetPos, MAGIC_EFFECT_WRAPS_BLUE);

		addAnimatedText(list, targetPos, COLOR_GREEN, buffer);
	}
}

OBS: Não testei, apenas fiz em base dos meus conhecimentos.

Editado por MaTTch (veja o histórico de edições)

  • Respostas 21
  • Visualizações 2.4k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Postado
  • Autor

também quero saber, se souber me manda pm, se eu descobrir te aviso também, to usando 0.4 (3777) e você?

0.4 tbm amigo :), cansei de otx , quero edita minha propria, mesmo sem entender mas td bem kkkkkkkkk, otx muitos bugs :S

OBS: Não testei, apenas fiz em base dos meus conhecimentos.

Irei testar aqui ;D

Funcionou nao :S nao mudou em nada xdd

Editado por gbik (veja o histórico de edições)

Postado
  • Autor

Posta a função bool Game::combatChangeHealth aqui.

 

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*/)

{

    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_MAYABLUE, 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;

}

 

Postado
  • Solução

Tenta assim:

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*/)
{
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;
 
if(g_config.getBool(ConfigManager::SHOW_HEALING_DAMAGE) && !target->isGhost() &&
(g_config.getBool(ConfigManager::SHOW_HEALING_DAMAGE_MONSTER) || !target->getMonster()))
{
int32_t realHeal = healthChange;
if((realHeal + target->getHealth()) > target->getMaxHealth())
realHeal = (target->getMaxHealth() - target->getHealth());
 
if(realHeal > 0)
{
char buffer[20];
sprintf(buffer, "+%d", realHeal);
 
const SpectatorVec& list = getSpectators(targetPos);
if(combatType != COMBAT_HEALING)
addMagicEffect(list, targetPos, MAGIC_EFFECT_WRAPS_BLUE);
 
addAnimatedText(list, targetPos, COLOR_GREEN, buffer);
}
}
target->gainHealth(attacker, healthChange);
}
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;
}

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