ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/monster.C
(Generate patch)

Comparing deliantra/server/server/monster.C (file contents):
Revision 1.37 by root, Wed Aug 22 20:46:46 2007 UTC vs.
Revision 1.38 by root, Thu Aug 23 16:46:28 2007 UTC

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 */
1818int 1818int
1819stand_in_light (object *op) 1819stand_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;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines