forked from RoguelikeRestorationProject/urogue1.03
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstatus.c
56 lines (51 loc) · 1.4 KB
/
status.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
status.c - This file contains functions for complex status determination
UltraRogue
Copyright (C) 1984, 1985, 1986, 1987, 1990, 1991 Herb Chong
All rights reserved.
See the file LICENSE.TXT for full copyright and licensing information.
*/
/*
* This file contains functions for complex status determination of monsters
* and objects. Mark Williams C for the ST blows up on code that is too
* complex, and moving things here is a good idea anyway because it simplifies
* understanding the code.
*/
#include "rogue.h"
/*
* has_defensive_spell() - has monster cast a defensive spell
* Any flags added here must also be in player_powers[]
*/
bool
has_defensive_spell(struct thing th)
{
if (on(th, HASOXYGEN))
return (TRUE);
if (on(th, CANFLY))
return (TRUE);
if (on(th, CANINWALL))
return (TRUE);
if (on(th, CANREFLECT))
return (TRUE);
if (on(th, CANSEE))
return (TRUE);
if (on(th, HASMSHIELD))
return (TRUE);
if (on(th, HASSHIELD))
return (TRUE);
if (on(th, ISHASTE))
return (TRUE);
if (on(th, ISREGEN))
return (TRUE);
if (on(th, ISDISGUISE))
return (TRUE);
if (on(th, ISINVIS))
return (TRUE);
if (on(th, NOCOLD))
return (TRUE);
if (on(th, NOFIRE))
return (TRUE);
if (on(th, ISELECTRIC))
return (TRUE);
return(FALSE);
}