Mercurial > hg > early-roguelike
comparison arogue7/fight.c @ 219:f9ef86cf22b2
Advanced Rogue 7: convert to ANSI-style function declarations.
Almost 1500 lines of compiler warnings remain, and the GCC developers
are already working on a new version with even more warnings turned on
by default.
| author | John "Elwin" Edwards |
|---|---|
| date | Fri, 19 Feb 2016 21:02:28 -0500 |
| parents | 382ff498acdd |
| children | e1cd27c5464f |
comparison
equal
deleted
inserted
replaced
| 218:56e748983fa8 | 219:f9ef86cf22b2 |
|---|---|
| 18 */ | 18 */ |
| 19 | 19 |
| 20 #include "curses.h" | 20 #include "curses.h" |
| 21 #include <ctype.h> | 21 #include <ctype.h> |
| 22 #include <string.h> | 22 #include <string.h> |
| 23 #include <stdlib.h> | |
| 23 #include "rogue.h" | 24 #include "rogue.h" |
| 24 | 25 |
| 25 int hit(struct object *weapon, bool see_att, bool see_def, char *er, char *ee, bool back_stab, bool thrown, bool short_msg); | 26 bool roll_em(struct thing *att_er, struct thing *def_er, struct object *weap, |
| 27 bool hurl, struct object *cur_weapon, bool back_stab); | |
| 28 void hit(struct object *weapon, bool see_att, bool see_def, char *er, char *ee, | |
| 29 bool back_stab, bool thrown, bool short_msg); | |
| 30 void miss(struct object *weapon, bool see_att, bool see_def, char *er, char *ee, | |
| 31 bool thrown, bool short_msg); | |
| 32 int add_dam(short str); | |
| 33 int hung_dam(void); | |
| 34 | |
| 26 #define CONF_DAMAGE -1 | 35 #define CONF_DAMAGE -1 |
| 27 #define PARAL_DAMAGE -2 | 36 #define PARAL_DAMAGE -2 |
| 28 #define DEST_DAMAGE -3 | 37 #define DEST_DAMAGE -3 |
| 29 #define DRAIN_DAMAGE -4 | 38 #define DRAIN_DAMAGE -4 |
| 30 | 39 |
| 31 /* | 40 /* |
| 32 * returns true if player has a any chance to hit the monster | 41 * returns true if player has a any chance to hit the monster |
| 33 */ | 42 */ |
| 34 player_can_hit(tp, weap) | 43 bool |
| 35 register struct thing *tp; | 44 player_can_hit(struct thing *tp, struct object *weap) |
| 36 register struct object *weap; | |
| 37 { | 45 { |
| 38 if (off(*tp, CMAGICHIT) && off(*tp, BMAGICHIT) && off(*tp, MAGICHIT)) | 46 if (off(*tp, CMAGICHIT) && off(*tp, BMAGICHIT) && off(*tp, MAGICHIT)) |
| 39 return(TRUE); | 47 return(TRUE); |
| 40 if (weap && weap->o_type == RELIC) | 48 if (weap && weap->o_type == RELIC) |
| 41 return(TRUE); | 49 return(TRUE); |
| 59 /* | 67 /* |
| 60 * fight: | 68 * fight: |
| 61 * The player attacks the monster. | 69 * The player attacks the monster. |
| 62 */ | 70 */ |
| 63 | 71 |
| 64 fight(mp, weap, thrown) | 72 bool |
| 65 register coord *mp; | 73 fight(coord *mp, struct object *weap, bool thrown) |
| 66 struct object *weap; | |
| 67 bool thrown; | |
| 68 { | 74 { |
| 69 register struct thing *tp; | 75 register struct thing *tp; |
| 70 register struct linked_list *item; | 76 register struct linked_list *item; |
| 71 register bool did_hit = TRUE; | 77 register bool did_hit = TRUE; |
| 72 bool see_def, back_stab = FALSE; | 78 bool see_def, back_stab = FALSE; |
| 223 /* | 229 /* |
| 224 * attack: | 230 * attack: |
| 225 * The monster attacks the player | 231 * The monster attacks the player |
| 226 */ | 232 */ |
| 227 | 233 |
| 228 attack(mp, weapon, thrown) | 234 bool |
| 229 register struct thing *mp; | 235 attack(struct thing *mp, struct object *weapon, bool thrown) |
| 230 register struct object *weapon; | |
| 231 bool thrown; | |
| 232 { | 236 { |
| 233 register char *mname; | 237 register char *mname; |
| 234 register bool see_att, did_hit = FALSE; | 238 register bool see_att, did_hit = FALSE; |
| 235 register struct object *wielded; /* The wielded weapon */ | 239 register struct object *wielded; /* The wielded weapon */ |
| 236 struct linked_list *get_wield; /* Linked list header for wielded */ | 240 struct linked_list *get_wield; /* Linked list header for wielded */ |
| 299 /* | 303 /* |
| 300 * swing: | 304 * swing: |
| 301 * returns true if the swing hits | 305 * returns true if the swing hits |
| 302 */ | 306 */ |
| 303 | 307 |
| 304 swing(class, at_lvl, op_arm, wplus) | 308 bool |
| 305 short class; | 309 swing(short class, int at_lvl, int op_arm, int wplus) |
| 306 int at_lvl, op_arm, wplus; | |
| 307 { | 310 { |
| 308 register int res = rnd(20)+1; | 311 register int res = rnd(20)+1; |
| 309 register int need; | 312 register int need; |
| 310 | 313 |
| 311 need = char_class[class].base - | 314 need = char_class[class].base - |
| 321 /* | 324 /* |
| 322 * roll_em: | 325 * roll_em: |
| 323 * Roll several attacks | 326 * Roll several attacks |
| 324 */ | 327 */ |
| 325 | 328 |
| 326 roll_em(att_er, def_er, weap, hurl, cur_weapon, back_stab) | 329 bool |
| 327 struct thing *att_er, *def_er; | 330 roll_em(struct thing *att_er, struct thing *def_er, struct object *weap, |
| 328 struct object *weap; | 331 bool hurl, struct object *cur_weapon, bool back_stab) |
| 329 bool hurl; | |
| 330 struct object *cur_weapon; | |
| 331 bool back_stab; | |
| 332 { | 332 { |
| 333 register struct stats *att, *def; | 333 register struct stats *att, *def; |
| 334 register char *cp = NULL; | 334 register char *cp = NULL; |
| 335 register int ndice, nsides, nplus, def_arm; | 335 register int ndice, nsides, nplus, def_arm; |
| 336 bool did_hit = FALSE; | 336 bool did_hit = FALSE; |
| 698 * prname: | 698 * prname: |
| 699 * The print name of a combatant | 699 * The print name of a combatant |
| 700 */ | 700 */ |
| 701 | 701 |
| 702 char * | 702 char * |
| 703 prname(who, upper) | 703 prname(char *who, bool upper) |
| 704 register char *who; | |
| 705 bool upper; | |
| 706 { | 704 { |
| 707 static char tbuf[LINELEN]; | 705 static char tbuf[LINELEN]; |
| 708 | 706 |
| 709 *tbuf = '\0'; | 707 *tbuf = '\0'; |
| 710 if (who == 0) | 708 if (who == 0) |
| 725 /* | 723 /* |
| 726 * hit: | 724 * hit: |
| 727 * Print a message to indicate a succesful hit | 725 * Print a message to indicate a succesful hit |
| 728 */ | 726 */ |
| 729 | 727 |
| 730 hit(weapon, see_att, see_def, er, ee, back_stab, thrown, short_msg) | 728 void |
| 731 register struct object *weapon; | 729 hit(struct object *weapon, bool see_att, bool see_def, char *er, char *ee, |
| 732 bool see_att, see_def; | 730 bool back_stab, bool thrown, bool short_msg) |
| 733 register char *er, *ee; | |
| 734 bool back_stab, thrown, short_msg; | |
| 735 { | 731 { |
| 736 register char *s = ""; | 732 register char *s = ""; |
| 737 char att_name[LINELEN], /* Name of attacker */ | 733 char att_name[LINELEN], /* Name of attacker */ |
| 738 def_name[LINELEN]; /* Name of defender */ | 734 def_name[LINELEN]; /* Name of defender */ |
| 739 | 735 |
| 789 /* | 785 /* |
| 790 * miss: | 786 * miss: |
| 791 * Print a message to indicate a poor swing | 787 * Print a message to indicate a poor swing |
| 792 */ | 788 */ |
| 793 | 789 |
| 794 miss(weapon, see_att, see_def, er, ee, thrown, short_msg) | 790 void |
| 795 register struct object *weapon; | 791 miss(struct object *weapon, bool see_att, bool see_def, char *er, char *ee, |
| 796 bool see_att, see_def; | 792 bool thrown, bool short_msg) |
| 797 register char *er, *ee; | |
| 798 bool thrown, short_msg; | |
| 799 { | 793 { |
| 800 register char *s = ""; | 794 register char *s = ""; |
| 801 char | 795 char |
| 802 att_name[LINELEN], /* Name of attacker */ | 796 att_name[LINELEN], /* Name of attacker */ |
| 803 def_name[LINELEN]; /* Name of defender */ | 797 def_name[LINELEN]; /* Name of defender */ |
| 834 /* | 828 /* |
| 835 * dext_plus: | 829 * dext_plus: |
| 836 * compute to-hit bonus for dexterity | 830 * compute to-hit bonus for dexterity |
| 837 */ | 831 */ |
| 838 | 832 |
| 839 dext_plus(dexterity) | 833 int |
| 840 register int dexterity; | 834 dext_plus(int dexterity) |
| 841 { | 835 { |
| 842 return (dexterity > 10 ? (dexterity-13)/3 : (dexterity-10)/3); | 836 return (dexterity > 10 ? (dexterity-13)/3 : (dexterity-10)/3); |
| 843 } | 837 } |
| 844 | 838 |
| 845 | 839 |
| 846 /* | 840 /* |
| 847 * dext_prot: | 841 * dext_prot: |
| 848 * compute armor class bonus for dexterity | 842 * compute armor class bonus for dexterity |
| 849 */ | 843 */ |
| 850 | 844 |
| 851 dext_prot(dexterity) | 845 int |
| 852 register int dexterity; | 846 dext_prot(int dexterity) |
| 853 { | 847 { |
| 854 return ((dexterity-10)/2); | 848 return ((dexterity-10)/2); |
| 855 } | 849 } |
| 856 /* | 850 /* |
| 857 * str_plus: | 851 * str_plus: |
| 858 * compute bonus/penalties for strength on the "to hit" roll | 852 * compute bonus/penalties for strength on the "to hit" roll |
| 859 */ | 853 */ |
| 860 | 854 |
| 861 str_plus(str) | 855 int |
| 862 register short str; | 856 str_plus(short str) |
| 863 { | 857 { |
| 864 return((str-10)/3); | 858 return((str-10)/3); |
| 865 } | 859 } |
| 866 | 860 |
| 867 /* | 861 /* |
| 868 * add_dam: | 862 * add_dam: |
| 869 * compute additional damage done for exceptionally high or low strength | 863 * compute additional damage done for exceptionally high or low strength |
| 870 */ | 864 */ |
| 871 | 865 |
| 872 add_dam(str) | 866 int |
| 873 register short str; | 867 add_dam(short str) |
| 874 { | 868 { |
| 875 return((str-9)/2); | 869 return((str-9)/2); |
| 876 } | 870 } |
| 877 | 871 |
| 878 /* | 872 /* |
| 879 * hung_dam: | 873 * hung_dam: |
| 880 * Calculate damage depending on players hungry state | 874 * Calculate damage depending on players hungry state |
| 881 */ | 875 */ |
| 882 hung_dam() | 876 int |
| 877 hung_dam(void) | |
| 883 { | 878 { |
| 884 reg int howmuch; | 879 reg int howmuch; |
| 885 | 880 |
| 886 switch(hungry_state) { | 881 switch(hungry_state) { |
| 887 case F_SATIATED: | 882 case F_SATIATED: |
| 895 | 890 |
| 896 #ifdef THUNK | 891 #ifdef THUNK |
| 897 /* | 892 /* |
| 898 * thunk: | 893 * thunk: |
| 899 * A missile hits a monster | 894 * A missile hits a monster |
| 900 */ | 895 * tp: defender |
| 901 | 896 */ |
| 902 thunk(weap, tp, mname) | 897 |
| 903 register struct object *weap; | 898 void |
| 904 register struct thing *tp; /* Defender */ | 899 thunk(struct object *weap, struct thing *tp, char *mname) |
| 905 register char *mname; | |
| 906 { | 900 { |
| 907 char *def_name; /* Name of defender */ | 901 char *def_name; /* Name of defender */ |
| 908 | 902 |
| 909 /* What do we call the defender? */ | 903 /* What do we call the defender? */ |
| 910 if (!cansee(tp->t_pos.y, tp->t_pos.x) || invisible(tp)) | 904 if (!cansee(tp->t_pos.y, tp->t_pos.x) || invisible(tp)) |
| 922 /* | 916 /* |
| 923 * mthunk: | 917 * mthunk: |
| 924 * A missile from a monster hits the player | 918 * A missile from a monster hits the player |
| 925 */ | 919 */ |
| 926 | 920 |
| 927 m_thunk(weap, tp, mname) | 921 void |
| 928 register struct object *weap; | 922 m_thunk(struct object *weap, struct thing *tp, char *mname) |
| 929 register struct thing *tp; | |
| 930 register char *mname; | |
| 931 { | 923 { |
| 932 char *att_name; /* Name of attacker */ | 924 char *att_name; /* Name of attacker */ |
| 933 | 925 |
| 934 /* What do we call the attacker? */ | 926 /* What do we call the attacker? */ |
| 935 if (!cansee(tp->t_pos.y, tp->t_pos.x) || invisible(tp)) | 927 if (!cansee(tp->t_pos.y, tp->t_pos.x) || invisible(tp)) |
| 945 } | 937 } |
| 946 | 938 |
| 947 /* | 939 /* |
| 948 * bounce: | 940 * bounce: |
| 949 * A missile misses a monster | 941 * A missile misses a monster |
| 950 */ | 942 * tp: defender |
| 951 | 943 */ |
| 952 bounce(weap, tp, mname) | 944 |
| 953 register struct object *weap; | 945 void |
| 954 register struct thing *tp; /* Defender */ | 946 bounce(struct object *weap, struct thing *tp, char *mname) |
| 955 register char *mname; | |
| 956 { | 947 { |
| 957 char *def_name; /* Name of defender */ | 948 char *def_name; /* Name of defender */ |
| 958 | 949 |
| 959 /* What do we call the defender? */ | 950 /* What do we call the defender? */ |
| 960 if (!cansee(tp->t_pos.y, tp->t_pos.x) || invisible(tp)) | 951 if (!cansee(tp->t_pos.y, tp->t_pos.x) || invisible(tp)) |
| 972 /* | 963 /* |
| 973 * m_bounce: | 964 * m_bounce: |
| 974 * A missle from a monster misses the player | 965 * A missle from a monster misses the player |
| 975 */ | 966 */ |
| 976 | 967 |
| 977 m_bounce(weap, tp, mname) | 968 void |
| 978 register struct object *weap; | 969 m_bounce(struct object *weap, struct thing *tp, char *mname) |
| 979 register struct thing *tp; | |
| 980 register char *mname; | |
| 981 { | 970 { |
| 982 char *att_name; /* Name of attacker */ | 971 char *att_name; /* Name of attacker */ |
| 983 | 972 |
| 984 /* What do we call the attacker? */ | 973 /* What do we call the attacker? */ |
| 985 if (!cansee(tp->t_pos.y, tp->t_pos.x) || invisible(tp)) | 974 if (!cansee(tp->t_pos.y, tp->t_pos.x) || invisible(tp)) |
| 999 /* | 988 /* |
| 1000 * is_magic: | 989 * is_magic: |
| 1001 * Returns true if an object radiates magic | 990 * Returns true if an object radiates magic |
| 1002 */ | 991 */ |
| 1003 | 992 |
| 1004 is_magic(obj) | 993 bool |
| 1005 register struct object *obj; | 994 is_magic(struct object *obj) |
| 1006 { | 995 { |
| 1007 switch (obj->o_type) | 996 switch (obj->o_type) |
| 1008 { | 997 { |
| 1009 case ARMOR: | 998 case ARMOR: |
| 1010 return obj->o_ac != armors[obj->o_which].a_class; | 999 return obj->o_ac != armors[obj->o_which].a_class; |
| 1026 * Called to put a monster to death | 1015 * Called to put a monster to death |
| 1027 */ | 1016 */ |
| 1028 | 1017 |
| 1029 int chance = 0;/* cumulative chance for goodies to loose it */ | 1018 int chance = 0;/* cumulative chance for goodies to loose it */ |
| 1030 | 1019 |
| 1031 killed(item, pr, points, treasure) | 1020 void |
| 1032 register struct linked_list *item; | 1021 killed(struct linked_list *item, bool pr, bool points, bool treasure) |
| 1033 bool pr, points, treasure; | |
| 1034 { | 1022 { |
| 1035 register struct thing *tp, *mp; | 1023 register struct thing *tp, *mp; |
| 1036 register struct linked_list *pitem, *nexti, *mitem; | 1024 register struct linked_list *pitem, *nexti, *mitem; |
| 1037 char *monst; | 1025 char *monst; |
| 1038 | 1026 |
| 1135 * the given thrown weapon. If no thrown item is given, try to find any | 1123 * the given thrown weapon. If no thrown item is given, try to find any |
| 1136 * decent weapon. | 1124 * decent weapon. |
| 1137 */ | 1125 */ |
| 1138 | 1126 |
| 1139 struct linked_list * | 1127 struct linked_list * |
| 1140 wield_weap(thrown, mp) | 1128 wield_weap(struct object *thrown, struct thing *mp) |
| 1141 struct object *thrown; | |
| 1142 struct thing *mp; | |
| 1143 { | 1129 { |
| 1144 int look_for, /* The projectile weapon we are looking for */ | 1130 int look_for, /* The projectile weapon we are looking for */ |
| 1145 new_rate, /* The rating of a prospective weapon */ | 1131 new_rate, /* The rating of a prospective weapon */ |
| 1146 cand_rate = -1; /* Rating of current candidate -- higher is better */ | 1132 cand_rate = -1; /* Rating of current candidate -- higher is better */ |
| 1147 register struct linked_list *pitem, *candidate = NULL; | 1133 register struct linked_list *pitem, *candidate = NULL; |
| 1218 } | 1204 } |
| 1219 } | 1205 } |
| 1220 | 1206 |
| 1221 return(candidate); | 1207 return(candidate); |
| 1222 } | 1208 } |
| 1223 explode(tp) | 1209 |
| 1224 register struct thing *tp; | 1210 void |
| 1211 explode(struct thing *tp) | |
| 1225 { | 1212 { |
| 1226 | 1213 |
| 1227 register int x,y, damage; | 1214 register int x,y, damage; |
| 1228 struct linked_list *item; | 1215 struct linked_list *item; |
| 1229 struct thing *th; | 1216 struct thing *th; |
| 1273 /* | 1260 /* |
| 1274 * skirmish: | 1261 * skirmish: |
| 1275 * Called when one monster attacks another monster. | 1262 * Called when one monster attacks another monster. |
| 1276 */ | 1263 */ |
| 1277 | 1264 |
| 1278 skirmish(attacker, mp, weap, thrown) | 1265 bool |
| 1279 register struct thing *attacker; | 1266 skirmish(struct thing *attacker, coord *mp, struct object *weap, bool thrown) |
| 1280 register coord *mp; | |
| 1281 struct object *weap; | |
| 1282 bool thrown; | |
| 1283 { | 1267 { |
| 1284 register struct thing *defender; | 1268 register struct thing *defender; |
| 1285 register struct linked_list *item; | 1269 register struct linked_list *item; |
| 1286 register bool did_hit = TRUE, see_att, see_def; | 1270 register bool did_hit = TRUE, see_att, see_def; |
| 1287 char attname[LINELEN+1], defname[LINELEN+1]; | 1271 char attname[LINELEN+1], defname[LINELEN+1]; |
