Pastebin

New pastes are no longer accepted · Stats

Latest Pastes

map attack spell

void Map::AttackSpell(Character *from, int spellid, int targetid)
{
     ESF_Data *spell = this->world->esf->Get(spellid);
     if (!spell) return;

    if (this->pk || (static_cast<int>(this->world->config["GlobalPK"]) && !this->world->PKExcept(this->id)))
    {
        if (this->AttackPKSpell(from, spellid, targetid))
        {
            return;
        }
    }
    UTIL_PTR_LIST_FOREACH(this->characters, Character, character)
    {
        UTIL_PTR_VECTOR_FOREACH(this->npcs, NPC, npc)
        {
            if (from->clas == 9)
            {
                if ((npc->pet || npc->Data()->type == ENF::Pet || npc->Data()->type == ENF::Passive || npc->Data()->type == ENF::Aggressive || from->admin > static_cast<int>(this->world->admin_config["killnpcs"]))
                && npc->alive)
                {
                    int amount = util::rand(spell->mindam + 60000, spell->maxdam +60000);
                    //int amount = util::rand(from->mindam + 0, from->maxdam + 0);
                    npc->SpellDamage(from, amount, spellid, targetid);
                }
            }

            else if (from->clas != 9)
            {
                if ((npc->pet || npc->Data()->type == ENF::Pet || npc->Data()->type == ENF::Passive || npc->Data()->type == ENF::Aggressive || from->admin > static_cast<int>(this->world->admin_config["killnpcs"]))
                && npc->alive && npc->index == targetid)
                {
                    int amount = util::rand(spell->mindam, spell->maxdam);
                    //int amount = util::rand(from->mindam, from->maxdam);
                    npc->SpellDamage(from, amount, spellid, targetid);

                    return;
                }
            }
        }
    }
}