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:
parent
b5fddf29c4
commit
ceee038ffa
2 changed files with 10 additions and 8 deletions
|
@ -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){
|
||||
|
|
|
@ -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)
|
||||
){
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue