| 143 | } |
| 144 | |
| 145 | void TriggerRiseEffect(ItemInfo* item) |
| 146 | { |
| 147 | int fxNumber = CreateNewEffect(item->RoomNumber); |
| 148 | if (fxNumber == NO_VALUE) |
| 149 | return; |
| 150 | |
| 151 | auto* fx = &EffectList[fxNumber]; |
| 152 | |
| 153 | fx->pos.Position.x = (byte)GetRandomControl() + item->Pose.Position.x - 128; |
| 154 | fx->pos.Position.y = GetPointCollision(*item).GetFloorHeight(); |
| 155 | fx->pos.Position.z = (byte)GetRandomControl() + item->Pose.Position.z - 128; |
| 156 | fx->roomNumber = item->RoomNumber; |
| 157 | fx->pos.Orientation.y = 2 * GetRandomControl(); |
| 158 | fx->speed = GetRandomControl() / 2048; |
| 159 | fx->fallspeed = -(GetRandomControl() / 1024); |
| 160 | fx->frameNumber = Objects[103].meshIndex; |
| 161 | fx->objectNumber = ID_BODY_PART; |
| 162 | fx->color = Vector4::One; |
| 163 | fx->flag2 = 0x601; |
| 164 | |
| 165 | auto* spark = GetFreeParticle(); |
| 166 | spark->on = 1; |
| 167 | spark->sR = 0; |
| 168 | spark->sG = 0; |
| 169 | spark->sB = 0; |
| 170 | spark->dR = 100; |
| 171 | spark->dG = 60; |
| 172 | spark->dB = 30; |
| 173 | spark->fadeToBlack = 8; |
| 174 | spark->colFadeSpeed = (GetRandomControl() & 3) + 4; |
| 175 | spark->life = spark->sLife = (GetRandomControl() & 7) + 16; |
| 176 | spark->x = fx->pos.Position.x; |
| 177 | spark->y = fx->pos.Position.y; |
| 178 | spark->z = fx->pos.Position.z; |
| 179 | spark->xVel = phd_sin(fx->pos.Orientation.y) * 4096; |
| 180 | spark->yVel = 0; |
| 181 | spark->zVel = phd_cos(fx->pos.Orientation.y) * 4096; |
| 182 | spark->blendMode = BlendMode::Additive; |
| 183 | spark->friction = 68; |
| 184 | spark->flags = 26; |
| 185 | spark->rotAng = GetRandomControl() & 0xFFF; |
| 186 | |
| 187 | if (Random::TestProbability(1 / 2.0f)) |
| 188 | spark->rotAdd = -16 - (GetRandomControl() & 0xF); |
| 189 | else |
| 190 | spark->rotAdd = (GetRandomControl() & 0xF) + 16; |
| 191 | |
| 192 | spark->gravity = -4 - (GetRandomControl() & 3); |
| 193 | spark->scalar = 3; |
| 194 | spark->maxYvel = -4 - (GetRandomControl() & 3); |
| 195 | spark->sSize = spark->size = (GetRandomControl() & 0x0F) + 8; |
| 196 | spark->dSize = spark->size * 4; |
| 197 | } |
| 198 | |
| 199 | void SkeletonControl(short itemNumber) |
| 200 | { |
no test coverage detected