| 963 | } |
| 964 | |
| 965 | void TriggerExplosionSmokeEnd(int x, int y, int z, int uw) |
| 966 | { |
| 967 | auto* spark = GetFreeParticle(); |
| 968 | |
| 969 | spark->on = true; |
| 970 | |
| 971 | if (uw) |
| 972 | { |
| 973 | spark->sR = 0; |
| 974 | spark->sG = 0; |
| 975 | spark->sB = 0; |
| 976 | spark->dR = 192; |
| 977 | spark->dG = 192; |
| 978 | spark->dB = 208; |
| 979 | } |
| 980 | else |
| 981 | { |
| 982 | spark->dR = 64; |
| 983 | spark->sR = 144; |
| 984 | spark->sG = 144; |
| 985 | spark->sB = 144; |
| 986 | spark->dG = 64; |
| 987 | spark->dB = 64; |
| 988 | } |
| 989 | |
| 990 | spark->colFadeSpeed = 8; |
| 991 | spark->fadeToBlack = 64; |
| 992 | spark->life = spark->sLife= (GetRandomControl() & 0x1F) + 96; |
| 993 | |
| 994 | if (uw) |
| 995 | spark->blendMode = BlendMode::Additive; |
| 996 | else |
| 997 | spark->blendMode = BlendMode::Subtractive; |
| 998 | |
| 999 | spark->x = (GetRandomControl() & 0x1F) + x - 16; |
| 1000 | spark->y = (GetRandomControl() & 0x1F) + y - 16; |
| 1001 | spark->z = (GetRandomControl() & 0x1F) + z - 16; |
| 1002 | spark->xVel = ((GetRandomControl() & 0xFFF) - 2048) >> 2; |
| 1003 | spark->yVel = GetRandomControl() - 128; |
| 1004 | spark->zVel = ((GetRandomControl() & 0xFFF) - 2048) >> 2; |
| 1005 | |
| 1006 | if (uw) |
| 1007 | { |
| 1008 | spark->friction = 20; |
| 1009 | spark->yVel >>= 4; |
| 1010 | spark->y += 32; |
| 1011 | } |
| 1012 | else |
| 1013 | spark->friction = 6; |
| 1014 | |
| 1015 | spark->flags = SP_SCALE | SP_DEF | SP_ROTATE | SP_EXPDEF; |
| 1016 | spark->rotAng = GetRandomControl() & 0xFFF; |
| 1017 | |
| 1018 | if (GetRandomControl() & 1) |
| 1019 | spark->rotAdd = -16 - (GetRandomControl() & 0xF); |
| 1020 | else |
| 1021 | spark->rotAdd = (GetRandomControl() & 0xF) + 16; |
| 1022 |
no test coverage detected