Mercurial > hg > early-roguelike
comparison xrogue/move.c @ 304:e52a8a7ad4c5
Fix many compiler warnings.
There should only be two changes in behavior:
arogue7/fight.c, arogue7/fight.c: a to-hit bonus is now correctly
applied to characters who are not monks instead of monks who are not
empty-handed.
urogue/fight.c: fixed an interaction with the "debug" macro that could
cause the wrong message to be displayed.
author | John "Elwin" Edwards |
---|---|
date | Wed, 14 Apr 2021 18:55:33 -0400 |
parents | f54901b9c39b |
children |
comparison
equal
deleted
inserted
replaced
303:e06ebc407615 | 304:e52a8a7ad4c5 |
---|---|
317 rnd_pos(&rooms[rm], &th->t_pos); | 317 rnd_pos(&rooms[rm], &th->t_pos); |
318 } until(winat(th->t_pos.y, th->t_pos.x) == FLOOR); | 318 } until(winat(th->t_pos.y, th->t_pos.x) == FLOOR); |
319 | 319 |
320 /* Put it there */ | 320 /* Put it there */ |
321 mvwaddch(mw, th->t_pos.y, th->t_pos.x, th->t_type); | 321 mvwaddch(mw, th->t_pos.y, th->t_pos.x, th->t_type); |
322 th->t_oldch = mvwinch(cw, th->t_pos.y, th->t_pos.x); | 322 th->t_oldch = mvwinch(cw, th->t_pos.y, th->t_pos.x) & A_CHARTEXT; |
323 /* | 323 /* |
324 * check to see if room that creature appears in should | 324 * check to see if room that creature appears in should |
325 * light up | 325 * light up |
326 */ | 326 */ |
327 if (on(*th, HASFIRE)) { | 327 if (on(*th, HASFIRE)) { |
883 player.t_action = A_NIL; | 883 player.t_action = A_NIL; |
884 return; | 884 return; |
885 } | 885 } |
886 if (running && ce(hero, move_nh)) | 886 if (running && ce(hero, move_nh)) |
887 after = running = FALSE; | 887 after = running = FALSE; |
888 ch = winat(move_nh.y, move_nh.x); | 888 ch = winat(move_nh.y, move_nh.x) & A_CHARTEXT; |
889 | 889 |
890 /* Take care of hero trying to move close to something frightening */ | 890 /* Take care of hero trying to move close to something frightening */ |
891 if (on(player, ISFLEE)) { | 891 if (on(player, ISFLEE)) { |
892 if (rnd(100) < 12) { | 892 if (rnd(100) < 12) { |
893 turn_off(player, ISFLEE); | 893 turn_off(player, ISFLEE); |
967 do_chase(tp); | 967 do_chase(tp); |
968 | 968 |
969 /* Did we succeed? */ | 969 /* Did we succeed? */ |
970 if (ce(tp->t_pos, current)) { | 970 if (ce(tp->t_pos, current)) { |
971 /* Reset our idea of what ch is */ | 971 /* Reset our idea of what ch is */ |
972 ch = winat(move_nh.y, move_nh.x); | 972 ch = winat(move_nh.y, move_nh.x) & A_CHARTEXT; |
973 | 973 |
974 /* Let it be known that we made the switch */ | 974 /* Let it be known that we made the switch */ |
975 changed = TRUE; | 975 changed = TRUE; |
976 old_hero = current; | 976 old_hero = current; |
977 | 977 |
1138 /* Are we moving out of a corridor? */ | 1138 /* Are we moving out of a corridor? */ |
1139 switch (runch) { | 1139 switch (runch) { |
1140 case 'h': | 1140 case 'h': |
1141 case 'l': | 1141 case 'l': |
1142 if (old_hero.y + 1 < lines - 2) { | 1142 if (old_hero.y + 1 < lines - 2) { |
1143 wall_check = winat(old_hero.y + 1, old_hero.x); | 1143 wall_check = winat(old_hero.y + 1, old_hero.x) & A_CHARTEXT; |
1144 if (!isrock(wall_check)) call_light = TRUE; | 1144 if (!isrock(wall_check)) call_light = TRUE; |
1145 } | 1145 } |
1146 if (old_hero.y - 1 > 0) { | 1146 if (old_hero.y - 1 > 0) { |
1147 wall_check = winat(old_hero.y - 1, old_hero.x); | 1147 wall_check = winat(old_hero.y - 1, old_hero.x) & A_CHARTEXT; |
1148 if (!isrock(wall_check)) call_light = TRUE; | 1148 if (!isrock(wall_check)) call_light = TRUE; |
1149 } | 1149 } |
1150 break; | 1150 break; |
1151 case 'j': | 1151 case 'j': |
1152 case 'k': | 1152 case 'k': |
1153 if (old_hero.x + 1 < cols) { | 1153 if (old_hero.x + 1 < cols) { |
1154 wall_check = winat(old_hero.y, old_hero.x + 1); | 1154 wall_check = winat(old_hero.y, old_hero.x + 1) & A_CHARTEXT; |
1155 if (!isrock(wall_check)) call_light = TRUE; | 1155 if (!isrock(wall_check)) call_light = TRUE; |
1156 } | 1156 } |
1157 if (old_hero.x - 1 >= 0) { | 1157 if (old_hero.x - 1 >= 0) { |
1158 wall_check = winat(old_hero.y, old_hero.x - 1); | 1158 wall_check = winat(old_hero.y, old_hero.x - 1) & A_CHARTEXT; |
1159 if (!isrock(wall_check)) call_light = TRUE; | 1159 if (!isrock(wall_check)) call_light = TRUE; |
1160 } | 1160 } |
1161 break; | 1161 break; |
1162 default: | 1162 default: |
1163 call_light = TRUE; | 1163 call_light = TRUE; |
1175 else if (rp != NULL && orp == NULL){/* Entering a room */ | 1175 else if (rp != NULL && orp == NULL){/* Entering a room */ |
1176 light(&hero); | 1176 light(&hero); |
1177 if (rp->r_flags & ISTREAS) | 1177 if (rp->r_flags & ISTREAS) |
1178 wake_room(rp); | 1178 wake_room(rp); |
1179 } | 1179 } |
1180 ch = winat(old_hero.y, old_hero.x); | 1180 ch = winat(old_hero.y, old_hero.x) & A_CHARTEXT; |
1181 wmove(cw, unc(old_hero)); | 1181 wmove(cw, unc(old_hero)); |
1182 waddch(cw, ch); | 1182 waddch(cw, ch); |
1183 wmove(cw, unc(hero)); | 1183 wmove(cw, unc(hero)); |
1184 waddch(cw, PLAYER); | 1184 waddch(cw, PLAYER); |
1185 } | 1185 } |
1270 | 1270 |
1271 see_radius = 1; | 1271 see_radius = 1; |
1272 | 1272 |
1273 /* If we are looking at the hero in a rock, broaden our sights */ | 1273 /* If we are looking at the hero in a rock, broaden our sights */ |
1274 if (&hero == cp || &player.t_oldpos == cp) { | 1274 if (&hero == cp || &player.t_oldpos == cp) { |
1275 ch = winat(hero.y, hero.x); | 1275 ch = winat(hero.y, hero.x) & A_CHARTEXT; |
1276 if (isrock(ch)) see_radius = 2; | 1276 if (isrock(ch)) see_radius = 2; |
1277 ch = winat(player.t_oldpos.y, player.t_oldpos.x); | 1277 ch = winat(player.t_oldpos.y, player.t_oldpos.x) & A_CHARTEXT; |
1278 if (isrock(ch)) see_radius = 2; | 1278 if (isrock(ch)) see_radius = 2; |
1279 } | 1279 } |
1280 | 1280 |
1281 jlow = max(0, cp->y - see_radius - rp->r_pos.y); | 1281 jlow = max(0, cp->y - see_radius - rp->r_pos.y); |
1282 jhigh = min(rp->r_max.y, cp->y + see_radius + 1 - rp->r_pos.y); | 1282 jhigh = min(rp->r_max.y, cp->y + see_radius + 1 - rp->r_pos.y); |
1345 item = wake_monster(y, x); | 1345 item = wake_monster(y, x); |
1346 tp = THINGPTR(item); | 1346 tp = THINGPTR(item); |
1347 | 1347 |
1348 /* Previously not seen -- now can see it */ | 1348 /* Previously not seen -- now can see it */ |
1349 if (tp->t_oldch == ' ' && cansee(tp->t_pos.y, tp->t_pos.x)) | 1349 if (tp->t_oldch == ' ' && cansee(tp->t_pos.y, tp->t_pos.x)) |
1350 tp->t_oldch = mvinch(y, x); | 1350 tp->t_oldch = mvinch(y, x) & A_CHARTEXT; |
1351 | 1351 |
1352 /* Previously seen -- now can't see it */ | 1352 /* Previously seen -- now can't see it */ |
1353 else if (!cansee(tp->t_pos.y, tp->t_pos.x) && | 1353 else if (!cansee(tp->t_pos.y, tp->t_pos.x) && |
1354 roomin(&tp->t_pos) != NULL) | 1354 roomin(&tp->t_pos) != NULL) |
1355 switch (tp->t_oldch) { | 1355 switch (tp->t_oldch) { |
1377 if ((!lit_room(rp) && (levtype != OUTSIDE)) || | 1377 if ((!lit_room(rp) && (levtype != OUTSIDE)) || |
1378 (levtype == OUTSIDE && !daytime) || | 1378 (levtype == OUTSIDE && !daytime) || |
1379 on(player, ISBLIND) || | 1379 on(player, ISBLIND) || |
1380 (rp->r_flags & FORCEDARK) || | 1380 (rp->r_flags & FORCEDARK) || |
1381 (levtype == MAZELEV && !see_here && see_before)) { | 1381 (levtype == MAZELEV && !see_here && see_before)) { |
1382 sch = mvwinch(cw, y, x); /* What's seen */ | 1382 sch = mvwinch(cw, y, x) & A_CHARTEXT; /* What's seen */ |
1383 rch = mvinch(y, x); /* What's really there */ | 1383 rch = mvinch(y, x) & A_CHARTEXT; /* What's really there */ |
1384 switch (rch) { | 1384 switch (rch) { |
1385 case DOOR: | 1385 case DOOR: |
1386 case SECRETDOOR: | 1386 case SECRETDOOR: |
1387 case STAIRS: | 1387 case STAIRS: |
1388 case TRAPDOOR: | 1388 case TRAPDOOR: |
1596 if (is_player && player.t_ctype != C_THIEF && player.t_ctype !=C_ASSASSIN) { | 1596 if (is_player && player.t_ctype != C_THIEF && player.t_ctype !=C_ASSASSIN) { |
1597 msg("Only thieves and assassins can set traps. "); | 1597 msg("Only thieves and assassins can set traps. "); |
1598 return; | 1598 return; |
1599 } | 1599 } |
1600 can_traps: | 1600 can_traps: |
1601 switch (och = mvinch(y, x)) { | 1601 switch (och = mvinch(y, x) & A_CHARTEXT) { |
1602 case WALL: | 1602 case WALL: |
1603 case FLOOR: | 1603 case FLOOR: |
1604 case PASSAGE: | 1604 case PASSAGE: |
1605 break; | 1605 break; |
1606 default: | 1606 default: |
1773 */ | 1773 */ |
1774 | 1774 |
1775 char | 1775 char |
1776 show(int y, int x) | 1776 show(int y, int x) |
1777 { | 1777 { |
1778 register unsigned char ch = winat(y, x); | 1778 register unsigned char ch = winat(y, x) & A_CHARTEXT; |
1779 register struct linked_list *it; | 1779 register struct linked_list *it; |
1780 register struct thing *tp; | 1780 register struct thing *tp; |
1781 | 1781 |
1782 if (isatrap(ch)) { | 1782 if (isatrap(ch)) { |
1783 register struct trap *trp = trap_at(y, x); | 1783 register struct trap *trp = trap_at(y, x); |
1785 return (trp->tr_flags & ISFOUND) ? ch : trp->tr_show; | 1785 return (trp->tr_flags & ISFOUND) ? ch : trp->tr_show; |
1786 } | 1786 } |
1787 else if (isalpha(ch)) { | 1787 else if (isalpha(ch)) { |
1788 if ((it = find_mons(y, x)) == NULL) { | 1788 if ((it = find_mons(y, x)) == NULL) { |
1789 msg("Show: Can't find monster in show (%d, %d)", y, x); | 1789 msg("Show: Can't find monster in show (%d, %d)", y, x); |
1790 return(mvwinch(stdscr, y, x)); | 1790 return(mvwinch(stdscr, y, x) & A_CHARTEXT); |
1791 } | 1791 } |
1792 tp = THINGPTR(it); | 1792 tp = THINGPTR(it); |
1793 | 1793 |
1794 if (on(*tp, ISDISGUISE)) ch = tp->t_disguise; /* As a mimic */ | 1794 if (on(*tp, ISDISGUISE)) ch = tp->t_disguise; /* As a mimic */ |
1795 | 1795 |
1796 /* Hide invisible creatures */ | 1796 /* Hide invisible creatures */ |
1797 else if (invisible(tp)) { | 1797 else if (invisible(tp)) { |
1798 /* We can't see surprise-type creatures through "see invisible" */ | 1798 /* We can't see surprise-type creatures through "see invisible" */ |
1799 if (off(player,CANSEE) || on(*tp,CANSURPRISE)) | 1799 if (off(player,CANSEE) || on(*tp,CANSURPRISE)) |
1800 ch = mvwinch(stdscr, y, x); /* Invisible */ | 1800 ch = mvwinch(stdscr, y, x) & A_CHARTEXT; /* Invisible */ |
1801 } | 1801 } |
1802 else if (on(*tp, CANINWALL)) { | 1802 else if (on(*tp, CANINWALL)) { |
1803 if (isrock(mvwinch(stdscr, y, x))) ch = winch(stdscr); /* As Xorn */ | 1803 if (isrock(mvwinch(stdscr, y, x))) ch = winch(stdscr); /* As Xorn */ |
1804 } | 1804 } |
1805 } | 1805 } |