| 721 | } |
| 722 | |
| 723 | void TriggerBlood(int x, int y, int z, int unk, int num) |
| 724 | { |
| 725 | for (int i = 0; i < num; i++) |
| 726 | { |
| 727 | BLOOD_STRUCT* blood = &Blood[GetFreeBlood()]; |
| 728 | blood->on = 1; |
| 729 | blood->sShade = 0; |
| 730 | blood->colFadeSpeed = 4; |
| 731 | blood->fadeToBlack = 8; |
| 732 | blood->dShade = (GetRandomControl() & 0x3F) + 48; |
| 733 | blood->life = blood->sLife = (GetRandomControl() & 7) + 24; |
| 734 | blood->x = (GetRandomControl() & 0x1F) + x - 16; |
| 735 | blood->y = (GetRandomControl() & 0x1F) + y - 16; |
| 736 | blood->z = (GetRandomControl() & 0x1F) + z - 16; |
| 737 | int a = (unk == -1 ? GetRandomControl() : (GetRandomControl() & 0x1F) + unk - 16) & 0xFFF; |
| 738 | int b = GetRandomControl() & 0xF; |
| 739 | blood->zVel = b * phd_cos(a << 4) * 32; |
| 740 | blood->xVel = -b * phd_sin(a << 4) * 32; |
| 741 | blood->friction = 4; |
| 742 | blood->yVel = -((GetRandomControl() & 0xFF) + 128); |
| 743 | blood->rotAng = GetRandomControl() & 0xFFF; |
| 744 | blood->rotAdd = (GetRandomControl() & 0x3F) + 64; |
| 745 | if (GetRandomControl() & 1) |
| 746 | blood->rotAdd = -blood->rotAdd; |
| 747 | blood->gravity = (GetRandomControl() & 0x1F) + 31; |
| 748 | int size = (GetRandomControl() & 7) + 8; |
| 749 | blood->sSize = blood->size = size; |
| 750 | blood->dSize = size >> 2; |
| 751 | |
| 752 | blood->PrevPosition.x = blood->x; |
| 753 | blood->PrevPosition.y = blood->y; |
| 754 | blood->PrevPosition.z = blood->z; |
| 755 | blood->PrevRotAng = blood->rotAng; |
| 756 | blood->PrevSize = blood->size; |
| 757 | blood->PrevShade = blood->shade; |
| 758 | } |
| 759 | } |
| 760 | |
| 761 | void UpdateBlood() |
| 762 | { |
no test coverage detected