1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | 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; } |