… | |
… | |
394 | #endif |
394 | #endif |
395 | for (ax = basex - light; ax <= basex + light; ax++) |
395 | for (ax = basex - light; ax <= basex + light; ax++) |
396 | { |
396 | { |
397 | if (ax < 0 || ax >= op->contr->ns->mapx) |
397 | if (ax < 0 || ax >= op->contr->ns->mapx) |
398 | continue; |
398 | continue; |
|
|
399 | |
399 | for (ay = basey - light; ay <= basey + light; ay++) |
400 | for (ay = basey - light; ay <= basey + light; ay++) |
400 | { |
401 | { |
401 | if (ay < 0 || ay >= op->contr->ns->mapy) |
402 | if (ay < 0 || ay >= op->contr->ns->mapy) |
402 | continue; |
403 | continue; |
403 | |
404 | |
… | |
… | |
410 | */ |
411 | */ |
411 | if (op->contr->blocked_los[ax][ay] != 100) |
412 | if (op->contr->blocked_los[ax][ay] != 100) |
412 | { |
413 | { |
413 | x1 = abs (basex - ax) * abs (basex - ax); |
414 | x1 = abs (basex - ax) * abs (basex - ax); |
414 | y1 = abs (basey - ay) * abs (basey - ay); |
415 | y1 = abs (basey - ay) * abs (basey - ay); |
415 | if (light > 0) |
416 | |
416 | op->contr->blocked_los[ax][ay] -= MAX ((light - isqrt (x1 + y1)), 0); |
417 | if (light > 0) op->contr->blocked_los[ax][ay] -= max (light - isqrt (x1 + y1), 0); |
417 | if (light < 0) |
|
|
418 | op->contr->blocked_los[ax][ay] -= MIN ((light + isqrt (x1 + y1)), 0); |
418 | if (light < 0) op->contr->blocked_los[ax][ay] -= min (light + isqrt (x1 + y1), 0); |
419 | } |
419 | } |
420 | } /* for ay */ |
420 | } |
421 | } /* for ax */ |
421 | } |
422 | } /* if this space is providing light */ |
422 | } |
423 | } /* for y */ |
423 | } |
424 | } /* for x */ |
424 | } |
425 | |
425 | |
426 | /* Outdoor should never really be completely pitch black dark like |
426 | /* Outdoor should never really be completely pitch black dark like |
427 | * a dungeon, so let the player at least see a little around themselves |
427 | * a dungeon, so let the player at least see a little around themselves |
428 | */ |
428 | */ |
429 | if (op->map->outdoor && darklevel > (MAX_DARKNESS - 3)) |
429 | if (op->map->outdoor && darklevel > (MAX_DARKNESS - 3)) |
… | |
… | |
436 | { |
436 | { |
437 | if (op->contr->blocked_los[x + op->contr->ns->mapx / 2][y + op->contr->ns->mapy / 2] > (MAX_DARKNESS - 2)) |
437 | if (op->contr->blocked_los[x + op->contr->ns->mapx / 2][y + op->contr->ns->mapy / 2] > (MAX_DARKNESS - 2)) |
438 | op->contr->blocked_los[x + op->contr->ns->mapx / 2][y + op->contr->ns->mapy / 2] = MAX_DARKNESS - 2; |
438 | op->contr->blocked_los[x + op->contr->ns->mapx / 2][y + op->contr->ns->mapy / 2] = MAX_DARKNESS - 2; |
439 | } |
439 | } |
440 | } |
440 | } |
|
|
441 | |
441 | /* grant some vision to the player, based on the darklevel */ |
442 | /* grant some vision to the player, based on the darklevel */ |
442 | for (x = darklevel - MAX_DARKNESS; x < MAX_DARKNESS + 1 - darklevel; x++) |
443 | for (x = darklevel - MAX_DARKNESS; x < MAX_DARKNESS + 1 - darklevel; x++) |
443 | for (y = darklevel - MAX_DARKNESS; y < MAX_DARKNESS + 1 - darklevel; y++) |
444 | for (y = darklevel - MAX_DARKNESS; y < MAX_DARKNESS + 1 - darklevel; y++) |
444 | if (!(op->contr->blocked_los[x + op->contr->ns->mapx / 2][y + op->contr->ns->mapy / 2] == 100)) |
445 | if (!(op->contr->blocked_los[x + op->contr->ns->mapx / 2][y + op->contr->ns->mapy / 2] == 100)) |
445 | op->contr->blocked_los[x + op->contr->ns->mapx / 2][y + op->contr->ns->mapy / 2] -= |
446 | op->contr->blocked_los[x + op->contr->ns->mapx / 2][y + op->contr->ns->mapy / 2] -= |
… | |
… | |
449 | /* blinded_sight() - sets all veiwable squares to blocked except |
450 | /* blinded_sight() - sets all veiwable squares to blocked except |
450 | * for the one the central one that the player occupies. A little |
451 | * for the one the central one that the player occupies. A little |
451 | * odd that you can see yourself (and what your standing on), but |
452 | * odd that you can see yourself (and what your standing on), but |
452 | * really need for any reasonable game play. |
453 | * really need for any reasonable game play. |
453 | */ |
454 | */ |
454 | |
|
|
455 | static void |
455 | static void |
456 | blinded_sight (object *op) |
456 | blinded_sight (object *op) |
457 | { |
457 | { |
458 | int x, y; |
458 | int x, y; |
459 | |
459 | |