… | |
… | |
1768 | // note that the above reasoning was utter bullshit even at the time it was written |
1768 | // note that the above reasoning was utter bullshit even at the time it was written |
1769 | // we use 25, lets see if we have the cpu time for it |
1769 | // we use 25, lets see if we have the cpu time for it |
1770 | radius = min (25, radius); |
1770 | radius = min (25, radius); |
1771 | |
1771 | |
1772 | /* Enemy in range! Now test for detection */ |
1772 | /* Enemy in range! Now test for detection */ |
1773 | if ((int) rv->distance <= radius) |
1773 | if (rv->distance <= radius) |
1774 | { |
1774 | { |
1775 | /* ah, we are within range, detected? take cases */ |
1775 | /* ah, we are within range, detected? take cases */ |
1776 | if (!enemy->invisible) /* enemy in dark squares... are seen! */ |
1776 | if (!enemy->invisible) /* enemy in dark squares... are seen! */ |
1777 | return 1; |
1777 | return 1; |
1778 | |
1778 | |
… | |
… | |
1816 | * other side of a wall (!). |
1816 | * other side of a wall (!). |
1817 | */ |
1817 | */ |
1818 | int |
1818 | int |
1819 | stand_in_light (object *op) |
1819 | stand_in_light (object *op) |
1820 | { |
1820 | { |
1821 | sint16 nx, ny; |
|
|
1822 | maptile *m; |
|
|
1823 | |
|
|
1824 | if (!op) |
1821 | if (!op) |
1825 | return 0; |
1822 | return 0; |
1826 | |
1823 | |
1827 | if (op->glow_radius > 0) |
1824 | if (op->glow_radius > 0) |
1828 | return 1; |
1825 | return 1; |
1829 | |
1826 | |
1830 | if (op->map) |
1827 | if (op->map) |
1831 | { |
1828 | { |
1832 | int x, y, x1, y1; |
|
|
1833 | |
|
|
1834 | /* Check the spaces with the max light radius to see if any of them |
1829 | /* Check the spaces with the max light radius to see if any of them |
1835 | * have lights, and if any of them light the player enough, then return 1. |
1830 | * have lights, and if any of them light the player enough, then return 1. |
1836 | */ |
1831 | */ |
1837 | for (x = op->x - MAX_LIGHT_RADII; x <= op->x + MAX_LIGHT_RADII; x++) |
1832 | for (int x = op->x - MAX_LIGHT_RADII; x <= op->x + MAX_LIGHT_RADII; x++) |
1838 | { |
1833 | { |
1839 | for (y = op->y - MAX_LIGHT_RADII; y <= op->y + MAX_LIGHT_RADII; y++) |
1834 | for (int y = op->y - MAX_LIGHT_RADII; y <= op->y + MAX_LIGHT_RADII; y++) |
1840 | { |
1835 | { |
1841 | m = op->map; |
1836 | maptile *m = op->map; |
1842 | nx = x; |
1837 | sint16 nx = x; |
1843 | ny = y; |
1838 | sint16 ny = y; |
1844 | |
1839 | |
1845 | if (get_map_flags (m, &m, nx, ny, &nx, &ny) & P_OUT_OF_MAP) |
1840 | if (xy_normalise (m, nx, ny)) |
1846 | continue; |
1841 | if (idistance (x - op->x, y - op->y) < m->at (nx, ny).light) |
1847 | |
|
|
1848 | x1 = abs (x - op->x) * abs (x - op->x); |
|
|
1849 | y1 = abs (y - op->y) * abs (y - op->y); |
|
|
1850 | if (isqrt (x1 + y1) < GET_MAP_LIGHT (m, nx, ny)) |
|
|
1851 | return 1; |
1842 | return 1; |
1852 | } |
1843 | } |
1853 | } |
1844 | } |
1854 | } |
1845 | } |
1855 | |
1846 | |
1856 | return 0; |
1847 | return 0; |