1
0
Fork 0
mirror of https://codeberg.org/noisytoot/notnotdnethack.git synced 2025-07-30 01:12:25 +01:00

Implement catsight

Depending on lighting condition of own square, either normal vision or darkvision
This commit is contained in:
Chris-plus-alphanumericgibberish 2016-10-06 03:14:54 -04:00
parent b5fddf29c4
commit ceee038ffa
2 changed files with 10 additions and 8 deletions

View file

@ -1538,12 +1538,13 @@ not_special:
struct obj *lepgold, *ygold;
#endif
boolean should_see = FALSE;
boolean catsightdark = !(levl[mtmp->mx][mtmp->my].lit || (viz_array[mtmp->my][mtmp->mx]&TEMP_LIT1 && !(viz_array[mtmp->my][mtmp->mx]&TEMP_DRK1)));
// should_see = (couldsee(omx, omy) &&
// (levl[gx][gy].lit ||
// !levl[omx][omy].lit) &&
// (dist2(omx, omy, gx, gy) <= 36));
if(distmin(omx,omy,gx,gy) <= 1) should_see = TRUE;
if(darksight(mtmp->data) && !is_blind(mtmp)){
if((darksight(mtmp->data) || (catsight(mtmp->data) && catsightdark)) && !is_blind(mtmp)){
if(couldsee(omx, omy) && !(Invis && !perceives(mtmp->data) && !can_track(mtmp->data) && rn2(11))){
if(levl[gx][gy].lit){
if(viz_array[gy][gx]&TEMP_DRK1 && !(viz_array[gy][gx]&TEMP_LIT1))
@ -1585,7 +1586,7 @@ not_special:
}
}
}
if(normalvision(mtmp->data) && !is_blind(mtmp)){
if((normalvision(mtmp->data) || (catsight(mtmp->data) && !catsightdark)) && !is_blind(mtmp)){
if(couldsee(omx, omy) && !(Invis && !perceives(mtmp->data) && !can_track(mtmp->data) && rn2(11))){
if(distmin(omx,omy,gx,gy) <= 1) should_see = TRUE;
else if(levl[gx][gy].lit){
@ -2239,7 +2240,7 @@ register struct monst *mtmp;
notseen = TRUE;
if(distmin(mtmp->mx,mtmp->my,u.ux,u.uy) <= 1 && !rn2(8)) notseen = FALSE;
if(darksight(mtmp->data) && !is_blind(mtmp)){
if((darksight(mtmp->data) || (catsight(mtmp->data) && catsightdark)) && !is_blind(mtmp)){
if(couldsee(mtmp->mx, mtmp->my) && !(Invis && !perceives(mtmp->data) && !can_track(mtmp->data) && rn2(11))){
if(levl[u.ux][u.uy].lit){
if(viz_array[u.uy][u.ux]&TEMP_DRK1 && !(viz_array[u.uy][u.ux]&TEMP_LIT1))
@ -2282,7 +2283,7 @@ register struct monst *mtmp;
}
}
}
if(normalvision(mtmp->data) && !is_blind(mtmp)){
if((normalvision(mtmp->data) || (catsight(mtmp->data) && !catsightdark)) && !is_blind(mtmp)){
if(couldsee(mtmp->mx, mtmp->my) && !(Invis && !perceives(mtmp->data) && !can_track(mtmp->data) && rn2(11))){
if(distmin(mtmp->mx,mtmp->my,u.ux,u.uy) <= 1) notseen = FALSE;
else if(levl[u.ux][u.uy].lit){

View file

@ -512,6 +512,7 @@ vision_recalc(control)
int oldseenv; /* previous seenv value */
int oldxray; /* previous xray range value */
struct monst *mon, *nmon, *mat;
boolean catsightdark = !(levl[u.ux][u.uy].lit || (viz_array[u.uy][u.ux]&TEMP_LIT1 && !(viz_array[u.uy][u.ux]&TEMP_DRK1)));
vision_full_recalc = 0; /* reset flag */
@ -740,7 +741,7 @@ vision_recalc(control)
else if (
((u.sealsActive&SEAL_AMON) && (next_row[col] & COULD_SEE)) ||
(Is_waterlevel(&u.uz) && (next_row[col] & COULD_SEE)) ||
(normalvision(youracedata) && (next_row[col] & COULD_SEE) && (
((normalvision(youracedata) || (catsight(youracedata) && !catsightdark)) && (next_row[col] & COULD_SEE) && (
(lev->lit &&
!(next_row[col]&TEMP_DRK1 && !(next_row[col]&TEMP_LIT1)) &&
!(next_row[col]&TEMP_DRK2)
@ -764,7 +765,7 @@ vision_recalc(control)
((next_row[col]&TEMP_LIT1) && !(next_row[col]&TEMP_DRK3))
)
)) ||
(darksight(youracedata) && !LightBlind && (next_row[col] & COULD_SEE) &&
((darksight(youracedata) || (catsight(youracedata) && catsightdark)) && !LightBlind && (next_row[col] & COULD_SEE) &&
((lev->typ < CORR || lev->typ==STAIRS) || !(
(lev->lit &&
!(next_row[col]&TEMP_DRK1 && !(next_row[col]&TEMP_LIT1)) &&
@ -787,10 +788,10 @@ vision_recalc(control)
*/
dx = u.ux - col; dx = sign(dx);
flev = &(levl[col+dx][row+dy]);
if ((!(darksight(youracedata) && !LightBlind && !Is_waterlevel(&u.uz)) &&
if ((!((darksight(youracedata) || (catsight(youracedata) && catsightdark)) && !LightBlind && !Is_waterlevel(&u.uz)) &&
(flev->lit ||
next_array[row+dy][col+dx]&TEMP_LIT1))
||(darksight(youracedata) && !Is_waterlevel(&u.uz))
||((darksight(youracedata) || (catsight(youracedata) && catsightdark)) && !Is_waterlevel(&u.uz))
|| u.sealsActive&SEAL_AMON
|| extramission(youracedata)
){