else if (command.length() >= 5 && command.compare(0,5,"Abomb") == 0 && this->player->character->has_pet) { if (this->player->character->invincible == false) { reply.SetID(PACKET_EFFECT, PACKET_AGREE); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y - 3); reply.AddShort(10); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y - 5); reply.AddShort(10); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y - 9); reply.AddShort(10); reply.AddChar(this->player->character->x + 3); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x + 6); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x + 8); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y + 3); reply.AddShort(10); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y + 5); reply.AddShort(10); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y + 9); reply.AddShort(10); reply.AddChar(this->player->character->x - 3); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x - 6); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x - 8); reply.AddChar(this->player->character->y); reply.AddShort(10); reply.AddChar(this->player->character->x + 11); reply.AddChar(this->player->character->y); reply.AddShort(16); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y + 1); reply.AddShort(16); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y +6); reply.AddShort(16); reply.AddChar(this->player->character->x); reply.AddChar(this->player->character->y + 2); reply.AddShort(16); reply.AddChar(this->player->character->x - 12); reply.AddChar(this->player->character->y); reply.AddShort(16); reply.AddChar(this->player->character->x - 13); reply.AddChar(this->player->character->y); reply.AddShort(16); reply.AddChar(this->player->character->x - 1); reply.AddChar(this->player->character->y); reply.AddShort(16); reply.AddChar(this->player->character->x - 14); reply.AddChar(this->player->character->y); reply.AddShort(17); reply.AddChar(this->player->character->x - 4); reply.AddChar(this->player->character->y); reply.AddShort(17); this->player->character->invincible = true; UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character) { if (character->InRange(*character)) { character->player->client->SendBuilder(reply); } } } //this->player->character->hidden = true; //this->player->character->haircolor = 8; // this->player->character->hairstyle = 12; // this->player->character->clas = 26; // this->player->character->race = SKIN_SKELETON; //this->player->character->Warp(this->player->character->mapid, this->player->character->x, this->player->character->y, WARP_ANIMATION_ADMIN); this->player->character->map->Effect(MAP_EFFECT_QUAKE, 4); 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 <20) { if (npc->alive) { int amount = util::rand(this->player->character->mindam + 500000, this->player->character->maxdam + 500000); npc->SpellDamage(this->player->character, amount, 17, 0); } } } } PacketBuilder builder; UTIL_PTR_LIST_FOREACH(this->player->character->map->characters, Character, character) { 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 <20) { Character *character_ptr = *character; character_ptr->AddRef(); int amount = util::rand(this->player->character->mindam + 70000, this->player->character->maxdam + 70000); 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; } } return false; }