| 362 | int pcursquest; |
| 363 | |
| 364 | void FindTrigger() |
| 365 | { |
| 366 | int distance, rotations; |
| 367 | |
| 368 | if (pcursitem != -1 || pcursobj != -1) |
| 369 | return; // Prefer showing items/objects over triggers (use of cursm* conflicts) |
| 370 | |
| 371 | for (int i = 0; i < nummissiles; i++) { |
| 372 | int mi = missileactive[i]; |
| 373 | if (missile[mi]._mitype == MIS_TOWN || missile[mi]._mitype == MIS_RPORTAL) { |
| 374 | int mix = missile[mi]._mix; |
| 375 | int miy = missile[mi]._miy; |
| 376 | const int newDdistance = GetDistance(mix, miy, 2); |
| 377 | if (newDdistance == 0) |
| 378 | continue; |
| 379 | if (pcursmissile != -1 && distance < newDdistance) |
| 380 | continue; |
| 381 | const int newRotations = GetRotaryDistance(mix, miy); |
| 382 | if (pcursmissile != -1 && distance == newDdistance && rotations < newRotations) |
| 383 | continue; |
| 384 | cursmx = mix; |
| 385 | cursmy = miy; |
| 386 | pcursmissile = mi; |
| 387 | distance = newDdistance; |
| 388 | rotations = newRotations; |
| 389 | } |
| 390 | } |
| 391 | |
| 392 | if (pcursmissile == -1) { |
| 393 | for (int i = 0; i < numtrigs; i++) { |
| 394 | int tx = trigs[i]._tx; |
| 395 | int ty = trigs[i]._ty; |
| 396 | if (trigs[i]._tlvl == 13) |
| 397 | ty -= 1; |
| 398 | const int newDdistance = GetDistance(tx, ty, 2); |
| 399 | if (newDdistance == 0) |
| 400 | continue; |
| 401 | cursmx = tx; |
| 402 | cursmy = ty; |
| 403 | pcurstrig = i; |
| 404 | } |
| 405 | |
| 406 | if (pcurstrig == -1) { |
| 407 | for (int i = 0; i < MAXQUESTS; i++) { |
| 408 | if (i == QTYPE_VB || currlevel != quests[i]._qlevel || quests[i]._qslvl == 0) |
| 409 | continue; |
| 410 | const int newDdistance = GetDistance(quests[i]._qtx, quests[i]._qty, 2); |
| 411 | if (newDdistance == 0) |
| 412 | continue; |
| 413 | cursmx = quests[i]._qtx; |
| 414 | cursmy = quests[i]._qty; |
| 415 | pcursquest = i; |
| 416 | } |
| 417 | } |
| 418 | } |
| 419 | |
| 420 | if (pcursmonst != -1 || pcursplr != -1 || cursmx == -1 || cursmy == -1) |
| 421 | return; // Prefer monster/player info text |
no test coverage detected