Pastebin

New pastes are no longer accepted · Stats

Latest Pastes

pets in item.cpp

				if(id == 9)
{

this->player->character->Save(); //this may be unnessasary
this->player->character->AddItem(id, 1);//adds back the item after it's use
this->player->character->Save();


if(!this->player->character->has_pet)
{

unsigned char index = this->player->character->map->GenerateNPCIndex();
if (index > 250)

{

break;

}

  this->player->character->pet = new NPC(this->player->character->map, 345, this->player->character->x + 1,this->player->character->y, 1, 1, index, true, true);
this->player->character->pet->Spawn();
this->player->character->pet->SetOwner(this->player->character);
this->player->character->has_pet = true;
//this->player->character->AddItem(682, 1);
this->player->character->map->npcs.push_back(this->player->character->pet);
this->player->character->str += 500;
this->player->character->con += 500;
                 this->player->character->CalculateStats();

                this->player->character->StatSkill();
this->player->character->Save();

}

else if(this->player->character->has_pet == true)
{
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
{
if (this->player->character->InRange(*character))
{
this->player->character->pet->RemoveFromView(*character);
}
}
erase_first(this->player->character->map->npcs, this->player->character->pet);
this->player->character->pet->Release();
this->player->character->has_pet = false;
this->player->character->con -= 500;
this->player->character->str -= 500;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();
}
}

								if(id == 20)//10
{

this->player->character->Save(); //this may be unnessasary
this->player->character->AddItem(id, 1);//adds back the item after it's use
this->player->character->Save();


if(!this->player->character->has_pet)
{

unsigned char index = this->player->character->map->GenerateNPCIndex();
if (index > 250)

{

break;

}

  this->player->character->pet = new NPC(this->player->character->map, 344, this->player->character->x + 1,this->player->character->y, 1, 1, index, true, true);
this->player->character->pet->Spawn();
this->player->character->pet->SetOwner(this->player->character);
this->player->character->has_pet = true;
//this->player->character->AddItem(682, 1);
this->player->character->map->npcs.push_back(this->player->character->pet);
this->player->character->str += 500;
               this->player->character->wis += 500;
               this->player->character->agi += 500;
               this->player->character->con += 500;
                this->player->character->CalculateStats();

                this->player->character->StatSkill();
this->player->character->Save();

}

else if(this->player->character->has_pet == true)
{
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
{
if (this->player->character->InRange(*character))
{
this->player->character->pet->RemoveFromView(*character);
}
}
erase_first(this->player->character->map->npcs, this->player->character->pet);
this->player->character->pet->Release();
this->player->character->has_pet = false;
this->player->character->str -= 500;
               this->player->character->wis -= 500;
               this->player->character->agi -= 500;
               this->player->character->con -= 500;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();
}
}

				if(id == 376)
{

this->player->character->Save(); //this may be unnessasary
this->player->character->AddItem(id, 1);//adds back the item after it's use
this->player->character->Save();


if(!this->player->character->has_pet)
{

unsigned char index = this->player->character->map->GenerateNPCIndex();
if (index > 250)

{

break;

}

  this->player->character->pet = new NPC(this->player->character->map, 346, this->player->character->x + 1,this->player->character->y, 1, 1, index, true, true);
this->player->character->pet->Spawn();
this->player->character->pet->SetOwner(this->player->character);
this->player->character->has_pet = true;
//this->player->character->AddItem(682, 1);
this->player->character->map->npcs.push_back(this->player->character->pet);
this->player->character->con += 300;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();

this->player->character->Save();

}

else if(this->player->character->has_pet == true)
{
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
{
if (this->player->character->InRange(*character))
{
this->player->character->pet->RemoveFromView(*character);
}
}
erase_first(this->player->character->map->npcs, this->player->character->pet);
this->player->character->pet->Release();
this->player->character->has_pet = false;
this->player->character->con -= 300;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();
}
}

				if(id == 17)
{

this->player->character->Save(); //this may be unnessasary
this->player->character->AddItem(id, 1);//adds back the item after it's use
this->player->character->Save();


if(!this->player->character->has_pet)
{

unsigned char index = this->player->character->map->GenerateNPCIndex();
if (index > 250)

{

break;

}

  this->player->character->pet = new NPC(this->player->character->map, 347, this->player->character->x + 1,this->player->character->y, 1, 1, index, true, true);
this->player->character->pet->Spawn();
this->player->character->pet->SetOwner(this->player->character);
this->player->character->has_pet = true;
//this->player->character->AddItem(682, 1);
this->player->character->map->npcs.push_back(this->player->character->pet);
this->player->character->wis += 400;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();

this->player->character->Save();

}

else if(this->player->character->has_pet == true)
{
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
{
if (this->player->character->InRange(*character))
{
this->player->character->pet->RemoveFromView(*character);
}
}
erase_first(this->player->character->map->npcs, this->player->character->pet);
this->player->character->pet->Release();
this->player->character->has_pet = false;
this->player->character->wis -= 400;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();
}
}

				if(id == 16)
{

this->player->character->Save(); //this may be unnessasary
this->player->character->AddItem(id, 1);//adds back the item after it's use
this->player->character->Save();


if(!this->player->character->has_pet)
{

unsigned char index = this->player->character->map->GenerateNPCIndex();
if (index > 250)

{

break;

}

  this->player->character->pet = new NPC(this->player->character->map, 348, this->player->character->x + 1,this->player->character->y, 1, 1, index, true, true);
this->player->character->pet->Spawn();
this->player->character->pet->SetOwner(this->player->character);
this->player->character->has_pet = true;
//this->player->character->AddItem(682, 1);
this->player->character->map->npcs.push_back(this->player->character->pet);
this->player->character->str += 80;
              this->player->character->wis += 80;
                this->player->character->con += 80;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();

this->player->character->Save();

}

else if(this->player->character->has_pet == true)
{
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
{
if (this->player->character->InRange(*character))
{
this->player->character->pet->RemoveFromView(*character);
}
}
erase_first(this->player->character->map->npcs, this->player->character->pet);
this->player->character->pet->Release();
this->player->character->has_pet = false;
this->player->character->str -= 80;
              this->player->character->wis -= 80;
                this->player->character->con -= 80;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();
}
}

				if(id == 3)
{

this->player->character->Save(); //this may be unnessasary
this->player->character->AddItem(id, 1);//adds back the item after it's use
this->player->character->Save();


if(!this->player->character->has_pet)
{

unsigned char index = this->player->character->map->GenerateNPCIndex();
if (index > 250)

{

break;

}

  this->player->character->pet = new NPC(this->player->character->map, 349, this->player->character->x + 1,this->player->character->y, 1, 1, index, true, true);
this->player->character->pet->Spawn();
this->player->character->pet->SetOwner(this->player->character);
this->player->character->has_pet = true;
//this->player->character->AddItem(682, 1);
this->player->character->map->npcs.push_back(this->player->character->pet);
this->player->character->str += 40;
              this->player->character->wis += 40;
                this->player->character->con += 40;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();

this->player->character->Save();

}

else if(this->player->character->has_pet == true)
{
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
{
if (this->player->character->InRange(*character))
{
this->player->character->pet->RemoveFromView(*character);
}
}
erase_first(this->player->character->map->npcs, this->player->character->pet);
this->player->character->pet->Release();
this->player->character->has_pet = false;
this->player->character->str -= 40;
              this->player->character->wis -= 40;
                this->player->character->con -= 40;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();
}
}

				if(id == 15)
{

this->player->character->Save(); //this may be unnessasary
this->player->character->AddItem(id, 1);//adds back the item after it's use
this->player->character->Save();


if(!this->player->character->has_pet)
{

unsigned char index = this->player->character->map->GenerateNPCIndex();
if (index > 250)

{

break;

}

  this->player->character->pet = new NPC(this->player->character->map, 350, this->player->character->x + 1,this->player->character->y, 1, 1, index, true, true);
this->player->character->pet->Spawn();
this->player->character->pet->SetOwner(this->player->character);
this->player->character->has_pet = true;
//this->player->character->AddItem(682, 1);
this->player->character->map->npcs.push_back(this->player->character->pet);
this->player->character->str += 300;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();

this->player->character->Save();

}

else if(this->player->character->has_pet == true)
{
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
{
if (this->player->character->InRange(*character))
{
this->player->character->pet->RemoveFromView(*character);
}
}
erase_first(this->player->character->map->npcs, this->player->character->pet);
this->player->character->pet->Release();
this->player->character->has_pet = false;
this->player->character->str -= 300;
                this->player->character->CalculateStats();
                this->player->character->StatSkill();
}
}

if(id == 563) //pk fire
{
 PacketBuilder builder;

    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
if(this->player->character->has_pet)
{
if(this->player->character->map->pk == true)
{
       Character *character_ptr = *character;
                character_ptr->AddRef();

        int distance = util::path_length(character_ptr->x, character_ptr->y, this->player->character->x, this->player->character->y);

if (distance >0 && distance <13)
    {
                Character *character_ptr = *character;
                character_ptr->AddRef();
                int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));

                int limitamount = std::min(amount, int(character_ptr->hp));

                if (static_cast<int>(this->server->world->config["LimitDamage"]))
                {
                    amount = limitamount;
                }

                if (character_ptr->invincible == false)
                {
                    character_ptr->hp -= limitamount;

                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(amount);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(17);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }
                else
                {
                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(0);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(17);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }

                if (character_ptr->hp == 0)
                {

                  std::string msg(character_ptr->name + " got KnocKed tHE FuK ouT By ");
msg += this->player->character->pet->owner->name;
this->server->world->ServerMsg(msg);

int item = 1;
int amount = 2000;
if (this->player->character->pet->owner->AddItem(item, amount))
            {
    PacketBuilder builder(PACKET_ITEM, PACKET_GET);
    builder.AddShort(0); // UID
    builder.AddShort(item);
    builder.AddThree(amount);
    builder.AddChar(this->player->character->pet->owner->weight);
    builder.AddChar(this->player->character->pet->owner->maxweight);
    this->player->character->pet->owner->player->client->SendBuilder(builder);
            }

bool stats_updated = false;
this->player->character->pet->owner->exp += 1000;
stats_updated = true;
if (stats_updated)
    {
 bool level_up = false;
 while (this->player->character->pet->owner->level < static_cast<int>(this->server->world->config["MaxLevel"]) && this->player->character->pet->owner->exp >= this->server->world->exp_table[this->player->character->pet->owner->level+1])
        {
    level_up = true;
    ++this->player->character->pet->owner->level;
    this->player->character->pet->owner->statpoints += static_cast<int>(this->server->world->config["StatPerLevel"]);
    this->player->character->pet->owner->skillpoints += static_cast<int>(this->server->world->config["SkillPerLevel"]);
   this->player->character->pet->owner->CalculateStats();
        }

    PacketBuilder builder(PACKET_RECOVER, PACKET_REPLY);
    builder.AddInt(this->player->character->pet->owner->exp);
    builder.AddShort(this->player->character->pet->owner->karma);
    builder.AddChar(level_up ? this->player->character->pet->owner->level : 0);
    this->player->character->pet->owner->player->client->SendBuilder(builder);
    }


                    character_ptr->hp = int(character_ptr->maxhp * static_cast<double>(this->server->world->config["DeathRecover"]) / 100.0);

                    if (this->server->world->config["Deadly"])
                    {
                        character_ptr->DropAll(this->player->character);
                    }
 character_ptr->PetTransfer();
                    character_ptr->map->Leave(character_ptr, WARP_ANIMATION_NONE, true);

                    character_ptr->nowhere = true;
                    character_ptr->map = this->server->world->GetMap(character_ptr->SpawnMap());
                    character_ptr->mapid = character_ptr->SpawnMap();
                    character_ptr->x = character_ptr->SpawnX();
                    character_ptr->y = character_ptr->SpawnY();
 character_ptr->PetTransfer();
                    PacketReader reader("");

                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_NULL, reader, 1.5);
                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_WARP, reader, 0.0);
                }

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

                character_ptr->Release();

                return true;
        }
    }
}
    }
return false;

}

if(id == 638) //pk X Ray
{
 PacketBuilder builder;

    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
if(this->player->character->has_pet)
{
if(this->player->character->map->pk == true)
{
       Character *character_ptr = *character;
                character_ptr->AddRef();

        int distance = util::path_length(character_ptr->x, character_ptr->y, this->player->character->x, this->player->character->y);

if (distance >0 && distance <13)
    {
                Character *character_ptr = *character;
                character_ptr->AddRef();

                int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));

                int limitamount = std::min(amount, int(character_ptr->hp));

                if (static_cast<int>(this->server->world->config["LimitDamage"]))
                {
                    amount = limitamount;
                }

                if (character_ptr->invincible == false)
                {
                    character_ptr->hp -= limitamount;

                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(amount);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(37);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }
                else
                {
                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(0);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(37);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }

                if (character_ptr->hp == 0)
                {

            std::string msg(character_ptr->name + " got KnocKed tHE FuK ouT By ");
msg += this->player->character->pet->owner->name;
this->server->world->ServerMsg(msg);

int item = 1;
int amount = 2000;
if (this->player->character->pet->owner->AddItem(item, amount))
            {
    PacketBuilder builder(PACKET_ITEM, PACKET_GET);
    builder.AddShort(0); // UID
    builder.AddShort(item);
    builder.AddThree(amount);
    builder.AddChar(this->player->character->pet->owner->weight);
    builder.AddChar(this->player->character->pet->owner->maxweight);
    this->player->character->pet->owner->player->client->SendBuilder(builder);
            }

bool stats_updated = false;
this->player->character->pet->owner->exp += 1000;
stats_updated = true;
if (stats_updated)
    {
 bool level_up = false;
 while (this->player->character->pet->owner->level < static_cast<int>(this->server->world->config["MaxLevel"]) && this->player->character->pet->owner->exp >= this->server->world->exp_table[this->player->character->pet->owner->level+1])
        {
    level_up = true;
    ++this->player->character->pet->owner->level;
    this->player->character->pet->owner->statpoints += static_cast<int>(this->server->world->config["StatPerLevel"]);
    this->player->character->pet->owner->skillpoints += static_cast<int>(this->server->world->config["SkillPerLevel"]);
   this->player->character->pet->owner->CalculateStats();
        }

    PacketBuilder builder(PACKET_RECOVER, PACKET_REPLY);
    builder.AddInt(this->player->character->pet->owner->exp);
    builder.AddShort(this->player->character->pet->owner->karma);
    builder.AddChar(level_up ? this->player->character->pet->owner->level : 0);
    this->player->character->pet->owner->player->client->SendBuilder(builder);
    }


                    character_ptr->hp = int(character_ptr->maxhp * static_cast<double>(this->server->world->config["DeathRecover"]) / 100.0);

                    if (this->server->world->config["Deadly"])
                    {
                        character_ptr->DropAll(this->player->character);
                    }
 character_ptr->PetTransfer();
                    character_ptr->map->Leave(character_ptr, WARP_ANIMATION_NONE, true);

                    character_ptr->nowhere = true;
                    character_ptr->map = this->server->world->GetMap(character_ptr->SpawnMap());
                    character_ptr->mapid = character_ptr->SpawnMap();
                    character_ptr->x = character_ptr->SpawnX();
                    character_ptr->y = character_ptr->SpawnY();
 character_ptr->PetTransfer();
                    PacketReader reader("");

                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_NULL, reader, 1.5);
                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_WARP, reader, 0.0);
                }

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

                character_ptr->Release();

                return true;
        }
    }
}
    }
return false;

}

if(id == 639) //Green Flame
{
 PacketBuilder builder;

    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
if(this->player->character->has_pet)
{
if(this->player->character->map->pk == true)
{
       Character *character_ptr = *character;
                character_ptr->AddRef();

        int distance = util::path_length(character_ptr->x, character_ptr->y, this->player->character->x, this->player->character->y);

if (distance >0 && distance <13)
    {
                Character *character_ptr = *character;
                character_ptr->AddRef();

                int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));

                int limitamount = std::min(amount, int(character_ptr->hp));

                if (static_cast<int>(this->server->world->config["LimitDamage"]))
                {
                    amount = limitamount;
                }

                if (character_ptr->invincible == false)
                {
                    character_ptr->hp -= limitamount;

                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(amount);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(31);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }
                else
                {
                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(0);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(31);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }

                if (character_ptr->hp == 0)
                {

                                  std::string msg(character_ptr->name + " got KnocKed tHE FuK ouT By ");
msg += this->player->character->pet->owner->name;
this->server->world->ServerMsg(msg);

int item = 1;
int amount = 2000;
if (this->player->character->pet->owner->AddItem(item, amount))
            {
    PacketBuilder builder(PACKET_ITEM, PACKET_GET);
    builder.AddShort(0); // UID
    builder.AddShort(item);
    builder.AddThree(amount);
    builder.AddChar(this->player->character->pet->owner->weight);
    builder.AddChar(this->player->character->pet->owner->maxweight);
    this->player->character->pet->owner->player->client->SendBuilder(builder);
            }

bool stats_updated = false;
this->player->character->pet->owner->exp += 1000;
stats_updated = true;
if (stats_updated)
    {
 bool level_up = false;
 while (this->player->character->pet->owner->level < static_cast<int>(this->server->world->config["MaxLevel"]) && this->player->character->pet->owner->exp >= this->server->world->exp_table[this->player->character->pet->owner->level+1])
        {
    level_up = true;
    ++this->player->character->pet->owner->level;
    this->player->character->pet->owner->statpoints += static_cast<int>(this->server->world->config["StatPerLevel"]);
    this->player->character->pet->owner->skillpoints += static_cast<int>(this->server->world->config["SkillPerLevel"]);
   this->player->character->pet->owner->CalculateStats();
        }

    PacketBuilder builder(PACKET_RECOVER, PACKET_REPLY);
    builder.AddInt(this->player->character->pet->owner->exp);
    builder.AddShort(this->player->character->pet->owner->karma);
    builder.AddChar(level_up ? this->player->character->pet->owner->level : 0);
    this->player->character->pet->owner->player->client->SendBuilder(builder);
    }


                    character_ptr->hp = int(character_ptr->maxhp * static_cast<double>(this->server->world->config["DeathRecover"]) / 100.0);

                    if (this->server->world->config["Deadly"])
                    {
                        character_ptr->DropAll(this->player->character);
                    }
 character_ptr->PetTransfer();
                    character_ptr->map->Leave(character_ptr, WARP_ANIMATION_NONE, true);

                    character_ptr->nowhere = true;
                    character_ptr->map = this->server->world->GetMap(character_ptr->SpawnMap());
                    character_ptr->mapid = character_ptr->SpawnMap();
                    character_ptr->x = character_ptr->SpawnX();
                    character_ptr->y = character_ptr->SpawnY();
 character_ptr->PetTransfer();
                    PacketReader reader("");

                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_NULL, reader, 1.5);
                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_WARP, reader, 0.0);
                }

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

                character_ptr->Release();

                return true;
        }
    }
}
    }
return false;

}

if(id == 640) //pk Energy Ball
{
 PacketBuilder builder;

    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
if(this->player->character->has_pet)
{
if(this->player->character->map->pk == true)
{
       Character *character_ptr = *character;
                character_ptr->AddRef();

        int distance = util::path_length(character_ptr->x, character_ptr->y, this->player->character->x, this->player->character->y);

if (distance >0 && distance <13)
    {
                Character *character_ptr = *character;
                character_ptr->AddRef();

                int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));

                int limitamount = std::min(amount, int(character_ptr->hp));

                if (static_cast<int>(this->server->world->config["LimitDamage"]))
                {
                    amount = limitamount;
                }

                if (character_ptr->invincible == false)
                {
                    character_ptr->hp -= limitamount;

                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(amount);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(15);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }
                else
                {
                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(0);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(15);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }

                if (character_ptr->hp == 0)
                {

                                  std::string msg(character_ptr->name + " got KnocKed tHE FuK ouT By ");
msg += this->player->character->pet->owner->name;
this->server->world->ServerMsg(msg);

int item = 1;
int amount = 2000;
if (this->player->character->pet->owner->AddItem(item, amount))
            {
    PacketBuilder builder(PACKET_ITEM, PACKET_GET);
    builder.AddShort(0); // UID
    builder.AddShort(item);
    builder.AddThree(amount);
    builder.AddChar(this->player->character->pet->owner->weight);
    builder.AddChar(this->player->character->pet->owner->maxweight);
    this->player->character->pet->owner->player->client->SendBuilder(builder);
            }

bool stats_updated = false;
this->player->character->pet->owner->exp += 1000;
stats_updated = true;
if (stats_updated)
    {
 bool level_up = false;
 while (this->player->character->pet->owner->level < static_cast<int>(this->server->world->config["MaxLevel"]) && this->player->character->pet->owner->exp >= this->server->world->exp_table[this->player->character->pet->owner->level+1])
        {
    level_up = true;
    ++this->player->character->pet->owner->level;
    this->player->character->pet->owner->statpoints += static_cast<int>(this->server->world->config["StatPerLevel"]);
    this->player->character->pet->owner->skillpoints += static_cast<int>(this->server->world->config["SkillPerLevel"]);
   this->player->character->pet->owner->CalculateStats();
        }

    PacketBuilder builder(PACKET_RECOVER, PACKET_REPLY);
    builder.AddInt(this->player->character->pet->owner->exp);
    builder.AddShort(this->player->character->pet->owner->karma);
    builder.AddChar(level_up ? this->player->character->pet->owner->level : 0);
    this->player->character->pet->owner->player->client->SendBuilder(builder);
    }

                    character_ptr->hp = int(character_ptr->maxhp * static_cast<double>(this->server->world->config["DeathRecover"]) / 100.0);

                    if (this->server->world->config["Deadly"])
                    {
                        character_ptr->DropAll(this->player->character);
                    }
 character_ptr->PetTransfer();
                    character_ptr->map->Leave(character_ptr, WARP_ANIMATION_NONE, true);

                    character_ptr->nowhere = true;
                    character_ptr->map = this->server->world->GetMap(character_ptr->SpawnMap());
                    character_ptr->mapid = character_ptr->SpawnMap();
                    character_ptr->x = character_ptr->SpawnX();
                    character_ptr->y = character_ptr->SpawnY();
 character_ptr->PetTransfer();
                    PacketReader reader("");

                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_NULL, reader, 1.5);
                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_WARP, reader, 0.0);
                }

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

                character_ptr->Release();

                return true;
        }
    }
}
    }
return false;

}

if(id == 641) //pk dark beam
{
 PacketBuilder builder;

    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
if(this->player->character->has_pet)
{
if(this->player->character->map->pk == true)
{
       Character *character_ptr = *character;
                character_ptr->AddRef();

        int distance = util::path_length(character_ptr->x, character_ptr->y, this->player->character->x, this->player->character->y);

if (distance >0 && distance <13)
    {
                Character *character_ptr = *character;
                character_ptr->AddRef();

                 int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));

                int limitamount = std::min(amount, int(character_ptr->hp));

                if (static_cast<int>(this->server->world->config["LimitDamage"]))
                {
                    amount = limitamount;
                }

                if (character_ptr->invincible == false)
                {
                    character_ptr->hp -= limitamount;

                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(amount);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(22);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }
                else
                {
                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(0);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(22);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }

                if (character_ptr->hp == 0)
                {

                                  std::string msg(character_ptr->name + " got KnocKed tHE FuK ouT By ");
msg += this->player->character->pet->owner->name;
this->server->world->ServerMsg(msg);

int item = 1;
int amount = 2000;
if (this->player->character->pet->owner->AddItem(item, amount))
            {
    PacketBuilder builder(PACKET_ITEM, PACKET_GET);
    builder.AddShort(0); // UID
    builder.AddShort(item);
    builder.AddThree(amount);
    builder.AddChar(this->player->character->pet->owner->weight);
    builder.AddChar(this->player->character->pet->owner->maxweight);
    this->player->character->pet->owner->player->client->SendBuilder(builder);
            }

bool stats_updated = false;
this->player->character->pet->owner->exp += 1000;
stats_updated = true;
if (stats_updated)
    {
 bool level_up = false;
 while (this->player->character->pet->owner->level < static_cast<int>(this->server->world->config["MaxLevel"]) && this->player->character->pet->owner->exp >= this->server->world->exp_table[this->player->character->pet->owner->level+1])
        {
    level_up = true;
    ++this->player->character->pet->owner->level;
    this->player->character->pet->owner->statpoints += static_cast<int>(this->server->world->config["StatPerLevel"]);
    this->player->character->pet->owner->skillpoints += static_cast<int>(this->server->world->config["SkillPerLevel"]);
   this->player->character->pet->owner->CalculateStats();
        }

    PacketBuilder builder(PACKET_RECOVER, PACKET_REPLY);
    builder.AddInt(this->player->character->pet->owner->exp);
    builder.AddShort(this->player->character->pet->owner->karma);
    builder.AddChar(level_up ? this->player->character->pet->owner->level : 0);
    this->player->character->pet->owner->player->client->SendBuilder(builder);
    }

                    character_ptr->hp = int(character_ptr->maxhp * static_cast<double>(this->server->world->config["DeathRecover"]) / 100.0);

                    if (this->server->world->config["Deadly"])
                    {
                        character_ptr->DropAll(this->player->character);
                    }
 character_ptr->PetTransfer();
                    character_ptr->map->Leave(character_ptr, WARP_ANIMATION_NONE, true);

                     this->player->character->exp += 10000;
                    character_ptr->nowhere = true;
                    character_ptr->map = this->server->world->GetMap(character_ptr->SpawnMap());
                    character_ptr->mapid = character_ptr->SpawnMap();
                    character_ptr->x = character_ptr->SpawnX();
                    character_ptr->y = character_ptr->SpawnY();
 character_ptr->PetTransfer();
                    PacketReader reader("");

                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_NULL, reader, 1.5);
                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_WARP, reader, 0.0);
                }

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

                character_ptr->Release();

                return true;
        }
    }
}
    }
return false;

}
if(id == 642) //NPC Attack Fire
{
 if(this->player->character->has_pet)
{
 UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
        UTIL_PTR_VECTOR_FOREACH(this->player->character->map->npcs, NPC, npc)
        {
        int distance = util::path_length(npc->x, npc->y, this->player->character->x, this->player->character->y);

if (distance >2 && distance <13)
    {
                if ((npc->Data()->type == ENF::Aggressive || npc->Data()->type == ENF::Passive)
                && npc->alive)
                {
                    int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));
                    npc->SpellDamage(this->player->character, amount, 17, 0);

                }
            }
        }
    }
}
return false;
}

if(id == 643) //NPC Attack Dark Beam
{
 if(this->player->character->has_pet)
{
 UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
        UTIL_PTR_VECTOR_FOREACH(this->player->character->map->npcs, NPC, npc)
        {
        int distance = util::path_length(npc->x, npc->y, this->player->character->x, this->player->character->y);

if (distance >2 && distance <13)
    {
                if ((npc->Data()->type == ENF::Aggressive || npc->Data()->type == ENF::Passive)
                && npc->alive)
                {
                    int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));
                    npc->SpellDamage(this->player->character, amount, 22, 0);
                }
            }
        }
    }
}
return false;
}

if(id == 644) //NPC Attack Energy Ball
{
 if(this->player->character->has_pet)
{
 UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
        UTIL_PTR_VECTOR_FOREACH(this->player->character->map->npcs, NPC, npc)
        {
        int distance = util::path_length(npc->x, npc->y, this->player->character->x, this->player->character->y);

if (distance >2 && distance <13)
    {
                if ((npc->Data()->type == ENF::Aggressive || npc->Data()->type == ENF::Passive)
                && npc->alive)
                {
                    int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));
                    npc->SpellDamage(this->player->character, amount, 15, 0);
                }
            }
        }
    }
}
return false;
}

if(id == 645) //Pet Heal
{
 PacketBuilder builder;
 if(this->player->character->has_pet)
{
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
int hpgain = this->player->character->pet->owner->maxhp - this->player->character->pet->owner->hp;
if(this->player->character->pet->owner->tp > 0)
{
this->player->character->pet->owner->tp -= 50;
if (this->player->character->pet->owner->tp <= 0)
{
this->player->character->pet->owner->tp = 0;
}
this->player->character->pet->owner->hp += hpgain;
reply.AddInt(hpgain);
reply.AddShort(this->player->character->pet->owner->hp);
{
PacketBuilder builder;
builder.SetID(PACKET_RECOVER, PACKET_AGREE);
builder.AddShort(this->player->id);
builder.AddInt(hpgain);
builder.AddChar(int(double(this->player->character->pet->owner->hp) / double(this->player->character->pet->owner->maxhp) * 100.0));
UTIL_PTR_VECTOR_FOREACH(this->server->world->characters, Character, character)
{
this->player->character->pet->owner->player->client->SendBuilder(builder);
}
}
PacketBuilder builder;
builder.SetID(PACKET_RECOVER, PACKET_PLAYER);
builder.AddShort(this->player->character->pet->owner->hp);
builder.AddShort(this->player->character->pet->owner->tp);
UTIL_PTR_VECTOR_FOREACH(this->server->world->characters, Character, character)
{
this->player->character->pet->owner->player->client->SendBuilder(builder);
}
}
PacketBuilder builder;
builder.SetID(PACKET_EFFECT, PACKET_PLAYER);
builder.AddShort(this->player->id);
builder.AddShort(21);
builder.AddChar(0);
UTIL_PTR_VECTOR_FOREACH(this->server->world->characters, Character, character)
{
character->player->client->SendBuilder(builder);
}
}
}
return false;
}

if(id == 646) //pk fire
{

PacketBuilder builder;
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
{
if(this->player->character->has_pet)
{
if(this->player->character->map->pk == true)
{

Character *character_ptr = *character;
character_ptr->AddRef();
int distance = util::path_length(character_ptr->x, character_ptr->y, this->player->character->x, this->player->character->y);
if (distance >0 && distance <13)
    {

 Character *character_ptr = *character;
character_ptr->AddRef();
 int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));
int limitamount = std::min(amount, int(character_ptr->hp));
if (static_cast<int>(this->server->world->config["LimitDamage"]))
{
amount = limitamount;
}
if (character_ptr->invincible == false)
{
character_ptr->hp -= limitamount;
builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
builder.AddShort(this->player->character->player->id);
builder.AddShort(character_ptr->player->id);
builder.AddThree(amount);
builder.AddChar(this->player->character->direction);
builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
builder.AddChar(character_ptr->hp == 0);
builder.AddShort(17);
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
{
if (character_ptr->InRange(*checkchar))
{
checkchar->player->client->SendBuilder(builder);
}
}
}
else
{
builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
builder.AddShort(this->player->character->player->id);
builder.AddShort(character_ptr->player->id);
builder.AddThree(0);
builder.AddChar(this->player->character->direction);
builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
builder.AddChar(character_ptr->hp == 0);
builder.AddShort(17);
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
{
if (character_ptr->InRange(*checkchar))
{
checkchar->player->client->SendBuilder(builder);
}
}
}
if (character_ptr->hp == 0)
{
std::string msg(character->name + " got KnocKed tHE FuK ouT By ");
msg += this->player->character->name;
this->server->world->ServerMsg(msg);
if (this->player->character->AddItem(1, 2000))
{

PacketBuilder builder(PACKET_ITEM, PACKET_GET);
builder.AddShort(0); // UID
builder.AddShort(1);
builder.AddThree(2000);
builder.AddChar(this->player->character->weight);
builder.AddChar(this->player->character->maxweight);
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
{
this->player->character->player->client->SendBuilder(builder);
}
}
character_ptr->hp = int(character_ptr->maxhp * static_cast<double>(this->server->world->config["DeathRecover"]) / 100.0);
if (this->server->world->config["Deadly"])
{
character_ptr->DropAll(this->player->character);
}
character_ptr->PetTransfer();
character_ptr->map->Leave(character_ptr, WARP_ANIMATION_NONE, true);
this->player->character->exp += 10000;
character_ptr->nowhere = true;
character_ptr->map = this->server->world->GetMap(character_ptr->SpawnMap());
character_ptr->mapid = character_ptr->SpawnMap();
character_ptr->x = character_ptr->SpawnX();
character_ptr->y = character_ptr->SpawnY();
character_ptr->PetTransfer();
PacketReader reader("");
character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_NULL, reader, 1.5);
character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_WARP, reader, 0.0);
}
builder.Reset();
builder.SetID(PACKET_RECOVER, PACKET_PLAYER);
builder.AddShort(character_ptr->hp);
builder.AddShort(character_ptr->tp);
character_ptr->player->client->SendBuilder(builder);
character_ptr->Release();
return true;
}
}
}
}
}

if(id == 647) //pk X Ray
{
 PacketBuilder builder;

    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
if(this->player->character->has_pet)
{
if(this->player->character->map->pk == true)
{
       Character *character_ptr = *character;
                character_ptr->AddRef();

        int distance = util::path_length(character_ptr->x, character_ptr->y, this->player->character->x, this->player->character->y);

if (distance >0 && distance <13)
    {
                Character *character_ptr = *character;
                character_ptr->AddRef();

                int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));

                int limitamount = std::min(amount, int(character_ptr->hp));

                if (static_cast<int>(this->server->world->config["LimitDamage"]))
                {
                    amount = limitamount;
                }

                if (character_ptr->invincible == false)
                {
                    character_ptr->hp -= limitamount;

                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(amount);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(37);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }
                else
                {
                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(0);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(37);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }

                if (character_ptr->hp == 0)
                {

                   std::string msg(character->name + " got KnocKed tHE FuK ouT By ");
                    msg += this->player->character->name;
                    this->server->world->ServerMsg(msg);

                        if (this->player->character->AddItem(1, 2000))
     {
      PacketBuilder builder(PACKET_ITEM, PACKET_GET);
      builder.AddShort(0); // UID
      builder.AddShort(1);
      builder.AddThree(2000);
      builder.AddChar(this->player->character->weight);
     builder.AddChar(this->player->character->maxweight);

 UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
				{
					this->player->character->player->client->SendBuilder(builder);
				}

     }

                    character_ptr->hp = int(character_ptr->maxhp * static_cast<double>(this->server->world->config["DeathRecover"]) / 100.0);

                    if (this->server->world->config["Deadly"])
                    {
                        character_ptr->DropAll(this->player->character);
                    }
 character_ptr->PetTransfer();
                    character_ptr->map->Leave(character_ptr, WARP_ANIMATION_NONE, true);

                     this->player->character->exp += 10000;
                    character_ptr->nowhere = true;
                    character_ptr->map = this->server->world->GetMap(character_ptr->SpawnMap());
                    character_ptr->mapid = character_ptr->SpawnMap();
                    character_ptr->x = character_ptr->SpawnX();
                    character_ptr->y = character_ptr->SpawnY();
 character_ptr->PetTransfer();
                    PacketReader reader("");

                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_NULL, reader, 1.5);
                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_WARP, reader, 0.0);
                }

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

                character_ptr->Release();

        return true;
        }
    }
}
}

}

if(id == 648) //Green Flame
{
 PacketBuilder builder;

    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
if(this->player->character->has_pet)
{
if(this->player->character->map->pk == true)
{
       Character *character_ptr = *character;
                character_ptr->AddRef();

        int distance = util::path_length(character_ptr->x, character_ptr->y, this->player->character->x, this->player->character->y);

if (distance >0 && distance <13)
    {
                Character *character_ptr = *character;
                character_ptr->AddRef();

                int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));

                int limitamount = std::min(amount, int(character_ptr->hp));

                if (static_cast<int>(this->server->world->config["LimitDamage"]))
                {
                    amount = limitamount;
                }

                if (character_ptr->invincible == false)
                {
                    character_ptr->hp -= limitamount;

                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(amount);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(31);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }
                else
                {
                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(0);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(31);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }

                if (character_ptr->hp == 0)
                {

                   std::string msg(character->name + " got KnocKed tHE FuK ouT By ");
                    msg += this->player->character->name;
                    this->server->world->ServerMsg(msg);

                        if (this->player->character->AddItem(1, 2000))
     {
      PacketBuilder builder(PACKET_ITEM, PACKET_GET);
      builder.AddShort(0); // UID
      builder.AddShort(1);
      builder.AddThree(2000);
      builder.AddChar(this->player->character->weight);
     builder.AddChar(this->player->character->maxweight);

 UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
				{
					this->player->character->player->client->SendBuilder(builder);
				}

     }

                    character_ptr->hp = int(character_ptr->maxhp * static_cast<double>(this->server->world->config["DeathRecover"]) / 100.0);

                    if (this->server->world->config["Deadly"])
                    {
                        character_ptr->DropAll(this->player->character);
                    }
 character_ptr->PetTransfer();
                    character_ptr->map->Leave(character_ptr, WARP_ANIMATION_NONE, true);

                     this->player->character->exp += 10000;
                    character_ptr->nowhere = true;
                    character_ptr->map = this->server->world->GetMap(character_ptr->SpawnMap());
                    character_ptr->mapid = character_ptr->SpawnMap();
                    character_ptr->x = character_ptr->SpawnX();
                    character_ptr->y = character_ptr->SpawnY();
 character_ptr->PetTransfer();
                    PacketReader reader("");

                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_NULL, reader, 1.5);
                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_WARP, reader, 0.0);
                }

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

                character_ptr->Release();

                return true;
        }
    }
}
    }
}

if(id == 649) //pk Energy Ball
{
 PacketBuilder builder;

    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
if(this->player->character->has_pet)
{
if(this->player->character->map->pk == true)
{
       Character *character_ptr = *character;
                character_ptr->AddRef();

        int distance = util::path_length(character_ptr->x, character_ptr->y, this->player->character->x, this->player->character->y);

if (distance >0 && distance <13)
    {
                Character *character_ptr = *character;
                character_ptr->AddRef();

               int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));

                int limitamount = std::min(amount, int(character_ptr->hp));

                if (static_cast<int>(this->server->world->config["LimitDamage"]))
                {
                    amount = limitamount;
                }

                if (character_ptr->invincible == false)
                {
                    character_ptr->hp -= limitamount;

                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(amount);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(15);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }
                else
                {
                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(0);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(15);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }

                if (character_ptr->hp == 0)
                {

                   std::string msg(character->name + " got KnocKed tHE FuK ouT By ");
                    msg += this->player->character->name;
                    this->server->world->ServerMsg(msg);

                        if (this->player->character->AddItem(1, 2000))
     {
      PacketBuilder builder(PACKET_ITEM, PACKET_GET);
      builder.AddShort(0); // UID
      builder.AddShort(1);
      builder.AddThree(2000);
      builder.AddChar(this->player->character->weight);
     builder.AddChar(this->player->character->maxweight);

 UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
				{
					this->player->character->player->client->SendBuilder(builder);
				}

     }

                    character_ptr->hp = int(character_ptr->maxhp * static_cast<double>(this->server->world->config["DeathRecover"]) / 100.0);

                    if (this->server->world->config["Deadly"])
                    {
                        character_ptr->DropAll(this->player->character);
                    }
 character_ptr->PetTransfer();
                    character_ptr->map->Leave(character_ptr, WARP_ANIMATION_NONE, true);

                     this->player->character->exp += 10000;
                    character_ptr->nowhere = true;
                    character_ptr->map = this->server->world->GetMap(character_ptr->SpawnMap());
                    character_ptr->mapid = character_ptr->SpawnMap();
                    character_ptr->x = character_ptr->SpawnX();
                    character_ptr->y = character_ptr->SpawnY();
 character_ptr->PetTransfer();
                    PacketReader reader("");

                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_NULL, reader, 1.5);
                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_WARP, reader, 0.0);
                }

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

                character_ptr->Release();

                return true;
        }
    }
}
    }
}

if(id == 650) //pk dark beam
{
 PacketBuilder builder;

    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
if(this->player->character->has_pet)
{
if(this->player->character->map->pk == true)
{
       Character *character_ptr = *character;
                character_ptr->AddRef();

        int distance = util::path_length(character_ptr->x, character_ptr->y, this->player->character->x, this->player->character->y);

if (distance >0 && distance <13)
    {
                Character *character_ptr = *character;
                character_ptr->AddRef();

                int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));

                int limitamount = std::min(amount, int(character_ptr->hp));

                if (static_cast<int>(this->server->world->config["LimitDamage"]))
                {
                    amount = limitamount;
                }

                if (character_ptr->invincible == false)
                {
                    character_ptr->hp -= limitamount;

                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(amount);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(22);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }
                else
                {
                    builder.SetID(PACKET_CLOTHES, PACKET_ADMIN);
                    builder.AddShort(this->player->character->player->id);
                    builder.AddShort(character_ptr->player->id);
                    builder.AddThree(0);
                    builder.AddChar(this->player->character->direction);
                    builder.AddChar(int(double(character_ptr->hp) / double(character_ptr->maxhp) * 100.0));
                    builder.AddChar(character_ptr->hp == 0);
                    builder.AddShort(22);

                    UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, checkchar)
                    {
                        if (character_ptr->InRange(*checkchar))
                        {
                            checkchar->player->client->SendBuilder(builder);
                        }
                    }
                }

                if (character_ptr->hp == 0)
                {

                   std::string msg(character->name + " got KnocKed tHE FuK ouT By ");
                    msg += this->player->character->name;
                    this->server->world->ServerMsg(msg);

                        if (this->player->character->AddItem(1, 2000))
     {
      PacketBuilder builder(PACKET_ITEM, PACKET_GET);
      builder.AddShort(0); // UID
      builder.AddShort(1);
      builder.AddThree(2000);
      builder.AddChar(this->player->character->weight);
     builder.AddChar(this->player->character->maxweight);

 UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
				{
					this->player->character->player->client->SendBuilder(builder);
				}

     }

                    character_ptr->hp = int(character_ptr->maxhp * static_cast<double>(this->server->world->config["DeathRecover"]) / 100.0);

                    if (this->server->world->config["Deadly"])
                    {
                        character_ptr->DropAll(this->player->character);
                    }
 character_ptr->PetTransfer();
                    character_ptr->map->Leave(character_ptr, WARP_ANIMATION_NONE, true);

                     this->player->character->exp += 10000;
                    character_ptr->nowhere = true;
                    character_ptr->map = this->server->world->GetMap(character_ptr->SpawnMap());
                    character_ptr->mapid = character_ptr->SpawnMap();
                    character_ptr->x = character_ptr->SpawnX();
                    character_ptr->y = character_ptr->SpawnY();
 character_ptr->PetTransfer();
                    PacketReader reader("");

                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_NULL, reader, 1.5);
                    character_ptr->player->client->queue.AddAction(PACKET_INTERNAL, PACKET_INTERNAL_WARP, reader, 0.0);
                }

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

                character_ptr->Release();

                return true;
        }
    }
}
    }
}

if(id == 651) //NPC Attack Fire
{
 if(this->player->character->has_pet)
{
 UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
        UTIL_PTR_VECTOR_FOREACH(this->player->character->map->npcs, NPC, npc)
        {
        int distance = util::path_length(npc->x, npc->y, this->player->character->x, this->player->character->y);

if (distance >2 && distance <13)
    {
                if ((npc->Data()->type == ENF::Aggressive || npc->Data()->type == ENF::Passive)
                && npc->alive)
                {
                     int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));
                    npc->SpellDamage(this->player->character, amount, 17, 0);

                }
            }
        }
    }
}
}

if(id == 652) //NPC Attack Dark Beam
{
 if(this->player->character->has_pet)
{
 UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
        UTIL_PTR_VECTOR_FOREACH(this->player->character->map->npcs, NPC, npc)
        {
        int distance = util::path_length(npc->x, npc->y, this->player->character->x, this->player->character->y);

if (distance >2 && distance <13)
    {
                if ((npc->Data()->type == ENF::Aggressive || npc->Data()->type == ENF::Passive)
                && npc->alive)
                {
                     int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));
                    npc->SpellDamage(this->player->character, amount, 22, 0);
                }
            }
        }
    }
}
}

if(id == 653) //NPC Attack Energy Ball
{
 if(this->player->character->has_pet)
{
 UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
        UTIL_PTR_VECTOR_FOREACH(this->player->character->map->npcs, NPC, npc)
        {
        int distance = util::path_length(npc->x, npc->y, this->player->character->x, this->player->character->y);

if (distance >2 && distance <13)
    {
                if ((npc->Data()->type == ENF::Aggressive || npc->Data()->type == ENF::Passive)
                && npc->alive)
                {
                     int amount = util::rand(this->player->character->pet->Data()->mindam, this->player->character->pet->Data()->maxdam + static_cast<int>(this->server->world->config["NPCAdjustMaxDam"]));
                    npc->SpellDamage(this->player->character, amount, 15, 0);
                }
            }
        }
    }
}
}

if(id == 654) //Pet Heal
{
 PacketBuilder builder;
 if(this->player->character->has_pet)
{
UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character)
    {
int hpgain = this->player->character->maxhp - this->player->character->hp;
if(this->player->character->tp > 0)
{
this->player->character->tp -= 50;
if (this->player->character->tp <= 0)
{
this->player->character->tp = 0;
}
this->player->character->hp += hpgain;
reply.AddInt(hpgain);
reply.AddShort(this->player->character->hp);
{
PacketBuilder builder;
builder.SetID(PACKET_RECOVER, PACKET_AGREE);
builder.AddShort(this->player->id);
builder.AddInt(hpgain);
builder.AddChar(int(double(this->player->character->hp) / double(this->player->character->maxhp) * 100.0));
UTIL_PTR_VECTOR_FOREACH(this->server->world->characters, Character, character)
{
character->player->client->SendBuilder(builder);
}
}
PacketBuilder builder;
builder.SetID(PACKET_RECOVER, PACKET_PLAYER);
builder.AddShort(this->player->character->hp);
builder.AddShort(this->player->character->tp);
UTIL_PTR_VECTOR_FOREACH(this->server->world->characters, Character, character)
{
character->player->client->SendBuilder(builder);
}
}
PacketBuilder builder;
builder.SetID(PACKET_EFFECT, PACKET_PLAYER);
builder.AddShort(this->player->id);
builder.AddShort(21);
builder.AddChar(0);
UTIL_PTR_VECTOR_FOREACH(this->server->world->characters, Character, character)
{
character->player->client->SendBuilder(builder);
}
}
}
}

if(id == 655) //Pet spells Expalnation
{
PacketBuilder reply;
reply.SetID(PACKET_PING, PACKET_ACCEPT);
reply.AddString("Pets");
reply.AddByte(255);
reply.AddString(static_cast<std::string>(this->server->world->message_config["pets"]));
this->player->client->SendBuilder(reply);
              }