| 8677 | } |
| 8678 | |
| 8679 | void MultiSendPermissionToFire(int pnum) { |
| 8680 | MULTI_ASSERT_NOMESSAGE(Netgame.local_role == LR_SERVER); |
| 8681 | |
| 8682 | object *obj = &Objects[Players[pnum].objnum]; |
| 8683 | |
| 8684 | int count = 0; |
| 8685 | uint8_t data[MAX_GAME_DATA_SIZE]; |
| 8686 | int size_offset; |
| 8687 | size_offset = START_DATA(MP_PERMISSION_TO_FIRE, data, &count); |
| 8688 | MultiAddByte(pnum, data, &count); |
| 8689 | MultiAddUbyte(Player_fire_packet[pnum].wb_index, data, &count); |
| 8690 | MultiAddUbyte(Player_fire_packet[pnum].fire_mask, data, &count); |
| 8691 | MultiAddUbyte(Player_fire_packet[pnum].damage_scalar, data, &count); |
| 8692 | |
| 8693 | // Do position |
| 8694 | // memcpy (&data[count],&obj->pos,sizeof(vector)); |
| 8695 | // count+=sizeof(vector); |
| 8696 | MultiAddVector(obj->pos, data, &count); |
| 8697 | |
| 8698 | // Do orientation |
| 8699 | angvec angs; |
| 8700 | vm_ExtractAnglesFromMatrix(&angs, &obj->orient); |
| 8701 | |
| 8702 | MultiAddShort(angs.p, data, &count); |
| 8703 | MultiAddShort(angs.h, data, &count); |
| 8704 | MultiAddShort(angs.b, data, &count); |
| 8705 | |
| 8706 | // Do roomnumber and terrain flag |
| 8707 | MultiAddShort(CELLNUM(obj->roomnum), data, &count); |
| 8708 | |
| 8709 | // Fill flags |
| 8710 | if (OBJECT_OUTSIDE(obj)) |
| 8711 | MultiAddByte(1, data, &count); |
| 8712 | else |
| 8713 | MultiAddByte(0, data, &count); |
| 8714 | |
| 8715 | END_DATA(count, data, size_offset); |
| 8716 | |
| 8717 | #ifdef RELIABLE_SECONDARIES |
| 8718 | if ((Player_fire_packet[pnum].wb_index >= SECONDARY_INDEX) && (Player_fire_packet[pnum].wb_index != FLARE_INDEX)) { |
| 8719 | // send reliably |
| 8720 | // mprintf(0,"PCS: SENDING RELIABLE FIRE FOR %d\n",pnum); |
| 8721 | MultiSendReliablyToAllExcept(Player_num, data, count, NETSEQ_PLAYING, true); |
| 8722 | } else |
| 8723 | #endif |
| 8724 | { |
| 8725 | MultiSendToAllExcept(Player_num, data, count, NETSEQ_PLAYING); |
| 8726 | } |
| 8727 | MultiDoPermissionToFire(data); |
| 8728 | } |
| 8729 | |
| 8730 | // A client is asking for permission to fire |
| 8731 | void MultiDoRequestToFire(uint8_t *data) { |
no test coverage detected