Ir para conteúdo
Entre para seguir isso  
Elwyn

Monster Damage Multiplier

Recommended Posts

Elwyn    106
Elwyn

A pedido do usuário Vyctor17 neste tópico fiz uma função para multiplicar o dano dos monstros:

 

Primeiro, em luascripts.cpp deverá ser adicionado, logo após:

    registerMethod("Monster", "isMonster", LuaScriptInterface::luaMonsterIsMonster);

Isso:

    registerMethod("Monster", "multiplyDamage", LuaScriptInterface::luaMonsterMultiplyDamage);

Logo abaixo de:

int32_t LuaScriptInterface::luaMonsterIsMonster(lua_State* L)
{
    // monster:isMonster()
    const Monster* monster = getUserdata<const Monster>(L, 1);
    pushBoolean(L, monster != nullptr);
    return 1;
}

Isso:

int32_t LuaScriptInterface::luaMonsterMultiplyDamage(lua_State* L)
{
    // monster:multiplyDamage(multiplier)
    Monster* monster = getUserdata<Monster>(L, 1);
    if (monster) {
        monster->multiplier = getNumber<uint32_t>(L, 2);

        pushBoolean(L, true);
    } else {
        lua_pushnil(L);
    }
    return 1;
}

Em luascripts.h:

 

Logo após:

        static int32_t luaMonsterIsMonster(lua_State* L);

Isso:

        static int32_t luaMonsterMultiplyDamage(lua_State* L);

Em monster.h:

 

Logo após:

        static uint32_t monsterAutoID;

Isso:

        int32_t multiplier;

Em monster.cpp:

 

Logo após:

Monster::Monster(MonsterType* _mtype) :
    Creature()
{

Isso:

    multiplier = 1;

No método Monster::doAttacking, procure por:

ATENÇÃO, TEM QUE SER NO MÉTODO Monster::doAttacking!

                minCombatValue = spellBlock.minCombatValue;
                maxCombatValue = spellBlock.maxCombatValue;

Substitua por:

                minCombatValue = spellBlock.minCombatValue * multiplier;
                maxCombatValue = spellBlock.maxCombatValue * multiplier;

E está feito. Se quiser fazer o monstro não dar dano, só por um multiplier abaixo de zero.

 

É possível fazer algo mais específico com a variável isMelee, multiplicando apenas spell ou apenas melee. Se preferirem dessa forma posso editar novamente para atender esse caso.

Compartilhar este post


Link para o post
vyctor17    35
vyctor17

Obrigado elwyn :), acho essa função muito util pra qualquer servidor que queira aplicar level nas criaturas como ots de pokemon que o sistema de lvl é bem pogado com isso da pra fazer a coisa certa :)

 

edit: já fiz a conversão pro 0.3.6 se alguém precisar só mandar PM.

Editado por vyctor17

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×