1 | /* |
1 | /* |
2 | * This file is part of Deliantra, the Roguelike Realtime MMORPG. |
2 | * This file is part of Deliantra, the Roguelike Realtime MMORPG. |
3 | * |
3 | * |
4 | * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team |
4 | * Copyright (©) 2005,2006,2007,2008,2009 Marc Alexander Lehmann / Robin Redeker / the Deliantra team |
5 | * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team |
5 | * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team |
6 | * Copyright (©) 1992,2007 Frank Tore Johansen |
6 | * Copyright (©) 1992,2007 Frank Tore Johansen |
7 | * |
7 | * |
8 | * Deliantra is free software: you can redistribute it and/or modify |
8 | * Deliantra is free software: you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License as published by |
9 | * it under the terms of the GNU General Public License as published by |
… | |
… | |
397 | /* grant some vision to the player, based on outside, outdoor, and darklevel */ |
397 | /* grant some vision to the player, based on outside, outdoor, and darklevel */ |
398 | { |
398 | { |
399 | int light; |
399 | int light; |
400 | |
400 | |
401 | if (!op->map->outdoor) // not outdoor, darkness becomes light radius |
401 | if (!op->map->outdoor) // not outdoor, darkness becomes light radius |
402 | light = op->map->darkness; |
402 | light = MAX_DARKNESS - op->map->darkness; |
403 | else if (op->map->darkness > 0) // outdoor and darkness > 0 => use darkness as max radius |
403 | else if (op->map->darkness > 0) // outdoor and darkness > 0 => use darkness as max radius |
404 | light = lerp_rd (maptile::outdoor_darkness + 0, 0, MAX_DARKNESS, MAX_DARKNESS - op->map->darkness, 0); |
404 | light = lerp_rd (maptile::outdoor_darkness + 0, 0, MAX_DARKNESS, MAX_DARKNESS - op->map->darkness, 0); |
405 | else // outdoor and darkness <= 0 => start wide and decrease quickly |
405 | else // outdoor and darkness <= 0 => start wide and decrease quickly |
406 | light = lerp (maptile::outdoor_darkness + op->map->darkness, 0, MAX_DARKNESS, MAX_VISION, 2); |
406 | light = lerp (maptile::outdoor_darkness + op->map->darkness, 0, MAX_DARKNESS, MAX_VISION, 2); |
407 | |
407 | |
408 | light = clamp (light, 0, MAX_VISION); |
408 | light = clamp (light + bonus, 0, MAX_VISION); |
409 | |
409 | |
410 | apply_light<los_brighten> (pl, 0, 0, light, vision_atten [light]); |
410 | apply_light<los_brighten> (pl, 0, 0, light, vision_atten [light]); |
411 | } |
411 | } |
412 | } |
412 | } |
413 | |
413 | |