$$ACTION Custom End Sequence Update for Player Object [o:PlayerObject] cEndSequenceFrame Custom scripting for the killer end sequence. Parameters: PlayerObject: This must be the playerobject experiencing the end sequence $$END */
| 2211 | $$END |
| 2212 | */ |
| 2213 | void cEndSequenceFrame(int playerobj) { |
| 2214 | int room_number, r, r2; |
| 2215 | vector player_pos; |
| 2216 | |
| 2217 | Obj_Value(playerobj, VF_GET, OBJV_I_ROOMNUM, &room_number); |
| 2218 | Obj_Value(playerobj, VF_GET, OBJV_V_POS, &player_pos); |
| 2219 | |
| 2220 | // lookup starting r; |
| 2221 | for (r = 0; (r < N_END_ROOMS) && exit_room_info[r].room_number != room_number; r++) { |
| 2222 | } |
| 2223 | |
| 2224 | if (r == N_END_ROOMS) |
| 2225 | return; |
| 2226 | |
| 2227 | // okay, we know where the player is |
| 2228 | // now look for spew,clutter objects in player room and next room. |
| 2229 | char fx_type = -1; |
| 2230 | char name[32]; |
| 2231 | int handle; |
| 2232 | |
| 2233 | for (r2 = r; r2 <= (r + 2); r2++) { |
| 2234 | char *cmds = &exit_room_info[r].cmdstr[0]; |
| 2235 | int cmdlen = (int)strlen(cmds); |
| 2236 | int c; |
| 2237 | if (r2 == N_END_ROOMS) { |
| 2238 | break; |
| 2239 | } |
| 2240 | for (c = 0; c < cmdlen; c++) { |
| 2241 | if (cmds[c] == '.') |
| 2242 | fx_type = -1; |
| 2243 | else if (cmds[c] == '!') |
| 2244 | fx_type = 0; |
| 2245 | else if (cmds[c] == '$') |
| 2246 | fx_type = 1; |
| 2247 | else if (cmds[c] == '#') |
| 2248 | fx_type = 2; |
| 2249 | else if (cmds[c] == '%') |
| 2250 | fx_type = 3; |
| 2251 | else if (cmds[c] == '*') |
| 2252 | fx_type = 4; |
| 2253 | else { |
| 2254 | // a spewer,clutter kill, sparker... |
| 2255 | // get handle of object |
| 2256 | switch (fx_type) { |
| 2257 | case 0: |
| 2258 | snprintf(name, sizeof(name), "X%d %c", exit_room_info[r].room_number, cmds[c]); |
| 2259 | break; |
| 2260 | case 1: |
| 2261 | case 2: |
| 2262 | case 3: |
| 2263 | snprintf(name, sizeof(name), "X%d Spew %c", exit_room_info[r].room_number, cmds[c]); |
| 2264 | break; |
| 2265 | case 4: |
| 2266 | snprintf(name, sizeof(name), "X%d Sparks%c", exit_room_info[r].room_number, cmds[c]); |
| 2267 | break; |
| 2268 | default: |
| 2269 | name[0] = 0; |
| 2270 | } |
no test coverage detected