Pastebin

New pastes are no longer accepted · Stats

Latest Pastes

npc spells no invince

 PacketBuilder reply;
     PacketBuilder builder;
      if(this->Data()->type == ENF::Unknown4)
          {
    UTIL_PTR_LIST_FOREACH(this->map->characters, Character, character)
          {
          Character *target = *character;
          target->AddRef();
          int distance = util::path_length(target->x, target->y, this->x, this->y);
          if(distance < 2 )
          {
          target->poisoned = true;
          this->Attack(target);   //add this for attacking
          return;             // and this
           }
        }
    }

      if(this->Data()->type == ENF::Unknown3)
          {

        UTIL_PTR_LIST_FOREACH(this->map->characters, Character, character)
          {
          Character *target = *character;
          target->AddRef();
        int spellid = this->Data()->spells;
        int amount = util::rand(this->Data()->mindam, this->Data()->maxdam);
        int distance = util::path_length(target->x, target->y, this->x, this->y);
        int limitamount = std::min(amount, int(character->hp));

        if(distance > 3 && distance < 10 )
          {
       int xdiff = this->x - target->x;
        int ydiff = this->y - target->y;
        int absxdiff = std::abs(xdiff);
        int absydiff = std::abs(ydiff);

        if ((absxdiff == 1 && absydiff == 0) || (absxdiff == 0 && absydiff == 1) || (absxdiff == 0 && absydiff == 0))
        {
            return;
        }

        else if (absxdiff > absydiff)
        {
            if (xdiff < 0)
            {
                this->direction = DIRECTION_RIGHT;
            }
            else
            {
                this->direction = DIRECTION_LEFT;
            }
        }
        else
        {
            if (ydiff < 0)
            {
                this->direction = DIRECTION_DOWN;
            }
            else
            {
                this->direction = DIRECTION_UP;
            }
        }

        if (!this->Walk(this->direction))
        {
            this->Walk(static_cast<Direction>(util::rand(0,3)));
        }
     //return;
    }

      else if(distance < 2)
        {
        this->Attack(target);   //add this for attacking
        }

       else if (distance >=2 && distance <= 7)
         {

        if (this->map->world->config["LimitDamage"])
        {
            amount = limitamount;
        }

                target->hp -= limitamount;

                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(0);
                    builder.AddShort(target->player->id);
                    builder.AddThree(amount);
                    builder.AddChar(1);
                    builder.AddChar(int(double(target->hp) / double(target->maxhp) * 100.0));
                    builder.AddChar(target->hp == 0);
                    builder.AddShort(spellid);

        UTIL_PTR_LIST_FOREACH(this->map->characters, Character, character)
        {
            if (*character == target || !character->InRange(target))
            {
                continue;
            }

            character->player->client->SendBuilder(builder);
        }
        target->player->client->SendBuilder(builder);
                
            if (target->hp == 0)
        {
           int sm = target->SpawnMap();
           int sx = target->SpawnX();
           int sy =  target->SpawnY();

           target->PetTransfer();//if you dont have a pet system remove this line
           target->Warp(sm, sx, sy, WARP_ANIMATION_ADMIN);
           target->PetTransfer();//if you dont have a pet system remove this line
           target->hp = target->maxhp;
           if(target->x == sx && target->y == sy)
           {
        builder.Reset();
        builder.SetID(PACKET_RECOVER, PACKET_PLAYER);
        builder.AddShort(target->hp);
        builder.AddInt(target->exp);
        builder.AddShort(target->tp);
        target->player->client->SendBuilder(builder);
        }
         break;
    }

                builder.Reset();
                builder.SetID(PACKET_RECOVER, PACKET_PLAYER);
                builder.AddShort(target->hp);
                builder.AddShort(target->tp);
                target->player->client->SendBuilder(builder);
            }
        }
    }