diff --git a/src/doors/dgnlance/dgnlnce.c b/src/doors/dgnlance/dgnlnce.c index ac3751d44f9fa9462bad9cfedffc2c83a16da356..f599767c356955e4d31c1faaa639c79eb129c032 100644 --- a/src/doors/dgnlance/dgnlnce.c +++ b/src/doors/dgnlance/dgnlnce.c @@ -54,18 +54,17 @@ enum { ALIVE ,DEAD }; - -enum { - PLAYER - ,MONSTER -}; +/* Status for opponent != a player */ +#define MONSTER 0 struct playertype { char name[31]; /* Name from BBS drop file */ char pseudo[31]; /* In-game pseudonym */ char killer[31]; /* Person killed by (if status==DEAD) */ char gaspd[61]; /* Dying curse */ - WORD status; /* Status alive or dead for player records, PLAYER or MONSTER for opponent record (record 0) */ + DWORD status; /* Status alive or dead for player + * records, player number or MONSTER + * for opponent record (record 0) */ /* ToDo make configurable */ WORD flights; /* Weird thing... may be number of * times can run */ @@ -94,6 +93,9 @@ struct playertype { * player is feeling. Is set at start and not modified */ double vary; }; + +struct playertype player[31]; +#define user player[player_num] /* player[0] is the current enemy */ #define opp player[0] @@ -101,24 +103,19 @@ const char dots[] = "..............................................."; /* In these arrays, 0 isn't actually used */ QWORD required[29]; /* Experience required for each level */ char wname[26][31]; /* Array of weapon names */ +DWORD w2[26]; /* Weapon "attack" values */ +DWORD w3[26]; /* Weapon "power" values */ char sname[26][31]; /* Array of shield names */ char temp[81]; DWORD cost[26]; /* Array of weapon/shield costs */ -DWORD w2[26]; /* Weapon "attack" values */ -DWORD w3[26]; /* Weapon "power" values */ FILE *infile; /* Current input file */ DWORD player_num; /* Current Player Number */ -DWORD curr_opp; /* Player number who is currently - * being fought */ -DWORD number_of_players; - * between players */ -struct playertype player[31]; +DWORD number_of_players; /* Number of players in player[] */ /**********************************************************/ /* These variables are used for the stat adjustment stuff */ /**********************************************************/ BOOL partone; BOOL bothover; -WORD temp1a, temp1b, temp1c, temp1d, temp1e, temp1f; /************************/ /* Functions from xpdev */ /************************/ @@ -193,14 +190,14 @@ pausescr(void) double playerattack(void) { - return ((player[player_num].attack * player[player_num].strength * player[player_num].dexterity * (xp_random(5) + 1) * player[player_num].vary) / + return ((user.attack * user.strength * user.dexterity * (xp_random(5) + 1) * user.vary) / (opp.armour * opp.dexterity * opp.luck * opp.vary)); } double playerattack2(void) { - return ((player[player_num].power * player[player_num].strength * (xp_random(5) + 1) * (xp_random(5) + 1) * player[player_num].vary) / + return ((user.power * user.strength * (xp_random(5) + 1) * (xp_random(5) + 1) * user.vary) / ((opp.armour) * opp.luck * opp.vary)); } @@ -208,14 +205,14 @@ double opponentattack(void) { return ((opp.attack * opp.strength * opp.dexterity * (xp_random(5) + 1) * opp.vary) / - (player[player_num].armour * player[player_num].dexterity * player[player_num].luck * player[player_num].vary)); + (user.armour * user.dexterity * user.luck * user.vary)); } double opponentattack2(void) { return ((opp.power * opp.strength * (xp_random(5) + 1) * (xp_random(5) + 1) * opp.vary) / - ((player[player_num].armour) * player[player_num].luck * player[player_num].vary)); + ((user.armour) * user.luck * user.vary)); } double @@ -228,24 +225,24 @@ void depobank(void) { QWORD tempbank; - tempbank = player[player_num].gold; - player[player_num].gold = player[player_num].gold - tempbank; - player[player_num].bank = player[player_num].bank + tempbank; + tempbank = user.gold; + user.gold = user.gold - tempbank; + user.bank = user.bank + tempbank; nl(); od_set_color(L_CYAN, D_BLACK); - od_printf("%" QWORDFORMAT " Steel pieces are in the bank.\r\n", player[player_num].bank); + od_printf("%" QWORDFORMAT " Steel pieces are in the bank.\r\n", user.bank); } void withdrawbank(void) { QWORD tempbank; - tempbank = player[player_num].bank; - player[player_num].gold = player[player_num].gold + tempbank; - player[player_num].bank = player[player_num].bank - tempbank; + tempbank = user.bank; + user.gold = user.gold + tempbank; + user.bank = user.bank - tempbank; nl(); od_set_color(D_MAGENTA, D_BLACK); - od_printf("You are now carrying %" QWORDFORMAT " Steel pieces.\r\n", player[player_num].gold); + od_printf("You are now carrying %" QWORDFORMAT " Steel pieces.\r\n", user.gold); } char * @@ -349,23 +346,23 @@ heal(void) WORD opt; od_clr_scr(); od_set_color(D_MAGENTA, D_BLACK); - od_printf("Clerics want %u Steel pieces per wound.\r\n", 8 * player[player_num].r); + od_printf("Clerics want %u Steel pieces per wound.\r\n", 8 * user.r); od_set_color(L_YELLOW, D_BLACK); - od_printf("You have %u points of damage to heal.\r\n", player[player_num].damage); + od_printf("You have %u points of damage to heal.\r\n", user.damage); od_set_color(L_CYAN, D_BLACK); od_disp_str("How many do points do you want healed? "); od_input_str(temp, 3, '0', '9'); opt = strtoul(temp, NULL, 10); if (!temp[0]) - opt = player[player_num].damage; - if (((opt) * (player[player_num].r) * 10) > player[player_num].gold) { + opt = user.damage; + if (((opt) * (user.r) * 10) > user.gold) { od_set_color(L_RED, B_BLACK); od_disp_str("Sorry, you do not have enough Steel.\r\n"); opt = 0; - } else if (opt > player[player_num].damage) - opt = player[player_num].damage; - player[player_num].damage = player[player_num].damage - opt; - player[player_num].gold = player[player_num].gold - 8 * opt * player[player_num].r; + } else if (opt > user.damage) + opt = user.damage; + user.damage = user.damage - opt; + user.gold = user.gold - 8 * opt * user.r; od_printf("%u hit points healed.\r\n", opt); } @@ -380,12 +377,12 @@ findo(void) if (od_get_answer("YN") == 'Y') { od_disp_str("Yes\r\n"); okea = xp_random(99) + 1; - if ((okea < 10) && (player[player_num].weapon >= 25)) { - player[player_num].weapon++; - od_printf("You have found a %s.\r\n", wname[player[player_num].weapon]); + if ((okea < 10) && (user.weapon >= 25)) { + user.weapon++; + od_printf("You have found a %s.\r\n", wname[user.weapon]); } if ((okea > 11) && (okea < 40)) { - player[player_num].gold = player[player_num].gold + 40; + user.gold = user.gold + 40; od_disp_str("You have come across 40 Steel pieces\r\n"); } else od_disp_str("It's gone!!!!\r\n"); @@ -403,50 +400,48 @@ mutantvictory(void) int bt; int d; FILE *outfile; - if (opp.status==MONSTER) + if (opp.status == MONSTER) opp.gold = opp.gold * supplant(); nl(); od_printf("You take his %" QWORDFORMAT " Steel pieces.\r\n", opp.gold); - player[player_num].gold = player[player_num].gold + opp.gold; - if (opp.status==PLAYER) { - int i; - i = curr_opp; + user.gold = user.gold + opp.gold; + if (opp.status != MONSTER) { nl(); od_set_color(D_GREEN, D_BLACK); od_disp_str("The Last Words He Utters Are...\r\n"); nl(); - od_printf("\"%s\"\r\n", player[i].gaspd); + od_printf("\"%s\"\r\n", player[opp.status].gaspd); nl(); - player[player_num].wins++; - player[i].loses++; - SAFECOPY(player[i].killer, player[player_num].name); - player[i].status = DEAD; - player[i].gold = 0; - if (player[i].weapon > player[player_num].weapon) { - d = player[player_num].weapon; - player[player_num].weapon = player[i].weapon; - player[i].weapon = d; - bt = player[player_num].plus; - player[player_num].plus = player[i].plus; - player[i].plus = bt; + user.wins++; + player[opp.status].loses++; + SAFECOPY(player[opp.status].killer, user.name); + player[opp.status].status = DEAD; + player[opp.status].gold = 0; + if (player[opp.status].weapon > user.weapon) { + d = user.weapon; + user.weapon = player[opp.status].weapon; + player[opp.status].weapon = d; + bt = user.plus; + user.plus = player[opp.status].plus; + player[opp.status].plus = bt; od_set_color(D_GREEN, D_BLACK); od_disp_str("You Hath Taken His Weapon.\r\n"); } - if (player[i].armour > player[player_num].armour) { - d = player[player_num].armour; - player[player_num].armour = player[i].armour; - player[i].armour = d; + if (player[opp.status].armour > user.armour) { + d = user.armour; + user.armour = player[opp.status].armour; + player[opp.status].armour = d; od_set_color(L_YELLOW, D_BLACK); od_disp_str("You Hath Taken His Armour.\r\n"); } - player[player_num].attack = w2[player[player_num].weapon]; - player[player_num].power = w3[player[player_num].weapon]; + user.attack = w2[user.weapon]; + user.power = w3[user.weapon]; outfile = fopen("data/record.lan", "ab"); - fprintf(outfile, "%s conquered %s\r\n", player[player_num].pseudo, player[i].pseudo); + fprintf(outfile, "%s conquered %s\r\n", user.pseudo, player[opp.status].pseudo); fclose(outfile); } opp.experience *= supplant(); - player[player_num].experience += opp.experience; + user.experience += opp.experience; od_printf("You obtain %" QWORDFORMAT " exp points.\r\n", opp.experience); } @@ -454,32 +449,32 @@ void levelupdate(void) { int x; - if (player[player_num].experience > required[player[player_num].r + 1]) { - player[player_num].r++; + if (user.experience > required[user.r + 1]) { + user.r++; od_set_color(L_YELLOW, D_BLACK); - od_printf("Welcome to level %u!\r\n", player[player_num].r); + od_printf("Welcome to level %u!\r\n", user.r); x = xp_random(6) + 1; switch (x) { case 1: - player[player_num].strength++; + user.strength++; break; case 2: - player[player_num].intelligence++; + user.intelligence++; break; case 3: - player[player_num].luck++; + user.luck++; break; case 4: - player[player_num].dexterity++; + user.dexterity++; break; case 5: - player[player_num].constitution++; + user.constitution++; break; case 6: - player[player_num].charisma++; + user.charisma++; break; } - player[player_num].hps = player[player_num].hps + (xp_random(5) + 1) + (player[player_num].constitution / 4); + user.hps = user.hps + (xp_random(5) + 1) + (user.constitution / 4); } } @@ -515,8 +510,8 @@ amode(void) } } else { roll = playerattack2(); - if (roll > 5 * player[player_num].power) - roll = 5 * player[player_num].power; + if (roll > 5 * user.power) + roll = 5 * user.power; if (roll < 1) roll = 1; opp.damage += roll; @@ -564,7 +559,7 @@ bmode(void) FILE *outfile; int okea; int tint; - if ((opp.hps > opp.damage) && player[player_num].damage < player[player_num].hps) { + if ((opp.hps > opp.damage) && user.damage < user.hps) { roll = opponentattack(); if (roll < 1.5) { od_set_color(D_GREEN, D_BLACK); @@ -587,8 +582,8 @@ bmode(void) od_printf("You are surprised when he hits you for %1.0f.\r\n", roll); break; } - player[player_num].damage = player[player_num].damage + roll; - if (player[player_num].damage >= player[player_num].hps) { + user.damage = user.damage + roll; + if (user.damage >= user.hps) { nl(); tint = xp_random(3) + 1; switch (tint) { @@ -605,13 +600,13 @@ bmode(void) od_disp_str("May Palidine Be With You!!\r\n"); break; } - if (opp.status==PLAYER) { - player[curr_opp].wins++; - player[player_num].loses++; - player[curr_opp].gold += player[player_num].gold; - player[player_num].gold = 0; + if (opp.status != MONSTER) { + player[opp.status].wins++; + user.loses++; + player[opp.status].gold += user.gold; + user.gold = 0; outfile = fopen("data/record.lan", "ab"); - fprintf(outfile, "%s killed %s\r\n", player[player_num].name, player[curr_opp].name); + fprintf(outfile, "%s killed %s\r\n", user.name, player[opp.status].name); fclose(outfile); } } @@ -625,19 +620,19 @@ statshow(void) od_clr_scr(); od_set_color(D_MAGENTA, D_BLACK); - od_printf("Name: %s Level: %d\r\n", player[player_num].pseudo, player[player_num].r); + od_printf("Name: %s Level: %d\r\n", user.pseudo, user.r); od_set_color(L_CYAN, D_BLACK); - od_printf("W/L: %" QWORDFORMAT "/%" QWORDFORMAT " Exp: %" QWORDFORMAT "\r\n", player[player_num].wins, player[player_num].loses, player[player_num].experience); + od_printf("W/L: %" QWORDFORMAT "/%" QWORDFORMAT " Exp: %" QWORDFORMAT "\r\n", user.wins, user.loses, user.experience); nl(); od_set_color(L_YELLOW, D_BLACK); - od_printf("Steel (in hand): %" QWORDFORMAT "\r\n", player[player_num].gold); - od_printf("Steel (in bank): %" QWORDFORMAT "\r\n", player[player_num].bank); + od_printf("Steel (in hand): %" QWORDFORMAT "\r\n", user.gold); + od_printf("Steel (in bank): %" QWORDFORMAT "\r\n", user.bank); nl(); od_set_color(L_BLUE, D_BLACK); - od_printf("Battles: %u Retreats: %u Fights: %u Hps: %u(%u)\r\n", player[player_num].battles, player[player_num].flights, player[player_num].fights, player[player_num].hps - player[player_num].damage, player[player_num].hps); + od_printf("Battles: %u Retreats: %u Fights: %u Hps: %u(%u)\r\n", user.battles, user.flights, user.fights, user.hps - user.damage, user.hps); nl(); od_set_color(L_CYAN, D_BLACK); - od_printf("Weapon: %s Armor: %s\r\n", wname[player[player_num].weapon], sname[player[player_num].armour]); + od_printf("Weapon: %s Armor: %s\r\n", wname[user.weapon], sname[user.armour]); } void @@ -647,27 +642,27 @@ incre(void) switch (od_get_answer("123456Q")) { case '1': od_disp_str("Strength\r\n"); - player[player_num].strength++; + user.strength++; break; case '2': od_disp_str("Intelligence\r\n"); - player[player_num].intelligence++; + user.intelligence++; break; case '3': od_disp_str("Dexterity\r\n"); - player[player_num].dexterity++; + user.dexterity++; break; case '4': od_disp_str("Luck\r\n"); - player[player_num].luck++; + user.luck++; break; case '5': od_disp_str("Constitution\r\n"); - player[player_num].constitution++; + user.constitution++; break; case '6': od_disp_str("Charisma\r\n"); - player[player_num].charisma++; + user.charisma++; break; case 'Q': od_disp_str("Quit\r\n"); @@ -683,27 +678,27 @@ decre(void) switch (od_get_answer("123456")) { case '1': od_disp_str("Strength\r\n"); - player[player_num].strength -= 2; + user.strength -= 2; break; case '2': od_disp_str("Intelligence\r\n"); - player[player_num].intelligence -= 2; + user.intelligence -= 2; break; case '3': od_disp_str("Dexterity\r\n"); - player[player_num].dexterity -= 2; + user.dexterity -= 2; break; case '4': od_disp_str("Luck\r\n"); - player[player_num].luck -= 2; + user.luck -= 2; break; case '5': od_disp_str("Constitution\r\n"); - player[player_num].constitution -= 2; + user.constitution -= 2; break; case '6': od_disp_str("Charisma\r\n"); - player[player_num].charisma -= 2; + user.charisma -= 2; break; } } @@ -716,39 +711,39 @@ ministat(void) nl(); od_disp_str("Status Change:\r\n"); od_disp_str("^^^^^^^^^^^^^^\r\n"); - od_printf("1> Str: %u\r\n", player[player_num].strength); - od_printf("2> Int: %u\r\n", player[player_num].intelligence); - od_printf("3> Dex: %u\r\n", player[player_num].dexterity); - od_printf("4> Luk: %u\r\n", player[player_num].luck); - od_printf("5> Con: %u\r\n", player[player_num].constitution); - od_printf("6> Chr: %u\r\n", player[player_num].charisma); + od_printf("1> Str: %u\r\n", user.strength); + od_printf("2> Int: %u\r\n", user.intelligence); + od_printf("3> Dex: %u\r\n", user.dexterity); + od_printf("4> Luk: %u\r\n", user.luck); + od_printf("5> Con: %u\r\n", user.constitution); + od_printf("6> Chr: %u\r\n", user.charisma); nl(); - if (player[player_num].strength < 6) { + if (user.strength < 6) { yaya = FALSE; nl(); od_disp_str("Strength cannot go below 6\r\n"); } - if (player[player_num].intelligence < 6) { + if (user.intelligence < 6) { yaya = FALSE; nl(); od_disp_str("Intelligence cannot go below 6\r\n"); } - if (player[player_num].dexterity < 6) { + if (user.dexterity < 6) { yaya = FALSE; nl(); od_disp_str("Dexterity cannot go below 6\r\n"); } - if (player[player_num].luck < 6) { + if (user.luck < 6) { yaya = FALSE; nl(); od_disp_str("Luck cannot go below 6\r\n"); } - if (player[player_num].constitution < 6) { + if (user.constitution < 6) { yaya = FALSE; nl(); od_disp_str("Constitution cannot go below 6\r\n"); } - if (player[player_num].charisma < 6) { + if (user.charisma < 6) { yaya = FALSE; nl(); od_disp_str("Charisma cannot go below 6\r\n"); @@ -759,22 +754,12 @@ ministat(void) od_disp_str("Yes\r\n"); } else { od_disp_str("No\r\n"); - player[player_num].strength = temp1a; - player[player_num].intelligence = temp1b; - player[player_num].dexterity = temp1d; - player[player_num].luck = temp1c; - player[player_num].constitution = temp1e; - player[player_num].charisma = temp1f; + user = opp; bothover = FALSE; bothover = FALSE; } } else { - player[player_num].strength = temp1a; - player[player_num].intelligence = temp1b; - player[player_num].dexterity = temp1d; - player[player_num].luck = temp1c; - player[player_num].constitution = temp1e; - player[player_num].charisma = temp1f; + user = opp; bothover = FALSE; } } @@ -784,12 +769,7 @@ chstats(void) { od_clr_scr(); bothover = FALSE; - temp1a = player[player_num].strength; - temp1b = player[player_num].intelligence; - temp1c = player[player_num].luck; - temp1d = player[player_num].dexterity; - temp1e = player[player_num].constitution; - temp1f = player[player_num].charisma; + opp = user; for (;;) { partone = TRUE; @@ -798,12 +778,12 @@ chstats(void) od_disp_str("You may increase any stat by one,\r\n"); od_disp_str("yet you must decrease another by two.\r\n"); nl(); - od_printf("1> Str: %u\r\n", player[player_num].strength); - od_printf("2> Int: %u\r\n", player[player_num].intelligence); - od_printf("3> Dex: %u\r\n", player[player_num].dexterity); - od_printf("4> Luk: %u\r\n", player[player_num].luck); - od_printf("5> Con: %u\r\n", player[player_num].constitution); - od_printf("6> Chr: %u\r\n", player[player_num].charisma); + od_printf("1> Str: %u\r\n", user.strength); + od_printf("2> Int: %u\r\n", user.intelligence); + od_printf("3> Dex: %u\r\n", user.dexterity); + od_printf("4> Luk: %u\r\n", user.luck); + od_printf("5> Con: %u\r\n", user.constitution); + od_printf("6> Chr: %u\r\n", user.charisma); nl(); incre(); if (partone) @@ -824,20 +804,20 @@ chstats(void) void attackmodes(void) { - if (opp.dexterity > player[player_num].dexterity) { - if (player[player_num].damage < player[player_num].hps && opp.damage < opp.hps) + if (opp.dexterity > user.dexterity) { + if (user.damage < user.hps && opp.damage < opp.hps) bmode(); - if (player[player_num].damage < player[player_num].hps && opp.damage < opp.hps) + if (user.damage < user.hps && opp.damage < opp.hps) amode(); - } else if (opp.dexterity < player[player_num].dexterity) { - if (player[player_num].damage < player[player_num].hps && opp.damage < opp.hps) + } else if (opp.dexterity < user.dexterity) { + if (user.damage < user.hps && opp.damage < opp.hps) amode(); - if (player[player_num].damage < player[player_num].hps && opp.damage < opp.hps) + if (user.damage < user.hps && opp.damage < opp.hps) bmode(); } else { - if (player[player_num].damage < player[player_num].hps && opp.damage < opp.hps) + if (user.damage < user.hps && opp.damage < opp.hps) amode(); - if (player[player_num].damage < player[player_num].hps && opp.damage < opp.hps) + if (user.damage < user.hps && opp.damage < opp.hps) bmode(); } } @@ -915,7 +895,7 @@ searcher(void) { int a; int rd; - player[player_num].fights--; + user.fights--; rd = xp_random(readnumb(0) - 1) + 1; endofline(); for (a = 1; a <= rd; a++) { @@ -930,7 +910,7 @@ searcher(void) opp.dexterity = readnumb(6); opp.gold = readnumb(0); opp.experience = readnumb(0); - opp.status=MONSTER; + opp.status = MONSTER; endofline(); } fclose(infile); @@ -973,7 +953,7 @@ doggie(void) int a; DWORD enemy; BOOL finder; - if (player[player_num].battles == 0) { + if (user.battles == 0) { nl(); checkday(); for (finder = FALSE; finder == FALSE;) { @@ -988,7 +968,7 @@ doggie(void) } else { a = 1; for (a = 1; a <= number_of_players;) { - if (player[a].r > player[player_num].r - 4) { + if (player[a].r > user.r - 4) { nl(); od_set_color(D_MAGENTA, D_BLACK); od_printf("%2u. `bright cyan`%.30s%.*s`bright blue`Lev=%-2u W=%-2" QWORDFORMAT " L=%-2" QWORDFORMAT " S=%s" @@ -1003,33 +983,32 @@ doggie(void) od_disp_str("Enter the rank # of your opponent: "); od_input_str(tmphh, 2, '0', '9'); enemy = strtoul(tmphh, NULL, 10); - if ((enemy == 0) || (!strcmp(player[enemy].pseudo, player[player_num].pseudo)) || (player[enemy].status == DEAD)) + if ((enemy == 0) || (!strcmp(player[enemy].pseudo, user.pseudo)) || (player[enemy].status == DEAD)) return; } } for (a = 1; a <= number_of_players; a++) { if (enemy == a) { - if (player[a].r > (player[player_num].r - 4)) { + if (player[a].r > (user.r - 4)) { finder = TRUE; - curr_opp = a; + opp.status = a; } } } } - SAFECOPY(opp.name, player[curr_opp].pseudo); - opp.hps = player[curr_opp].hps; - opp.damage = player[curr_opp].hps; - opp.vary = player[curr_opp].vary; - opp.status = PLAYER; - player[player_num].battles--; - opp.attack = w2[player[curr_opp].weapon]; - opp.power = w3[player[curr_opp].weapon]; - opp.armour = player[curr_opp].armour; - opp.luck = player[curr_opp].luck; - opp.strength = player[curr_opp].strength; - opp.dexterity = player[curr_opp].dexterity; - opp.gold = player[curr_opp].gold; - opp.experience = player[curr_opp].experience / 10; + SAFECOPY(opp.name, player[opp.status].pseudo); + opp.hps = player[opp.status].hps; + opp.damage = player[opp.status].hps; + opp.vary = player[opp.status].vary; + user.battles--; + opp.attack = w2[player[opp.status].weapon]; + opp.power = w3[player[opp.status].weapon]; + opp.armour = player[opp.status].armour; + opp.luck = player[opp.status].luck; + opp.strength = player[opp.status].strength; + opp.dexterity = player[opp.status].dexterity; + opp.gold = player[opp.status].gold; + opp.experience = player[opp.status].experience / 10; finder = FALSE; battle(); } @@ -1041,8 +1020,8 @@ battle(void) WORD playerrem; char option; nl(); - while (player[player_num].damage < player[player_num].hps && opp.damage < opp.hps) { - playerrem = player[player_num].hps - player[player_num].damage; + while (user.damage < user.hps && opp.damage < opp.hps) { + playerrem = user.hps - user.damage; nl(); od_set_color(L_YELLOW, D_BLACK); od_printf("You are attacked by a %s.\r\n", opp.name); @@ -1071,7 +1050,7 @@ battle(void) break; case 'F': od_disp_str("Flee\r\n"); - if ((xp_random(4) + 1) + player[player_num].dexterity > opp.dexterity) { + if ((xp_random(4) + 1) + user.dexterity > opp.dexterity) { nl(); od_set_color(D_GREEN, D_BLACK); od_disp_str("You Ride away on a Silver Dragon.\r\n"); @@ -1211,7 +1190,7 @@ weaponshop(void) buy = strtoul(temp, NULL, 10); if (buy == 0) return; - if (cost[buy] > player[player_num].gold) + if (cost[buy] > user.gold) od_disp_str("You do not have enough Steel.\r\n"); else { nl(); @@ -1222,13 +1201,13 @@ weaponshop(void) od_disp_str("Are you sure you want buy it? "); if (od_get_answer("YN") == 'Y') { od_disp_str("Yes\r\n"); - player[player_num].gold -= cost[buy]; - player[player_num].weapon = buy; + user.gold -= cost[buy]; + user.weapon = buy; nl(); od_set_color(D_MAGENTA, D_BLACK); od_printf("You've bought a %s\r\n", wname[buy]); - player[player_num].attack = w2[player[player_num].weapon]; - player[player_num].power = w3[player[player_num].weapon]; + user.attack = w2[user.weapon]; + user.power = w3[user.weapon]; } else od_disp_str("No\r\n"); break; @@ -1237,8 +1216,8 @@ weaponshop(void) od_disp_str("Are you sure you want buy it? "); if (od_get_answer("YN") == 'Y') { od_disp_str("Yes\r\n"); - player[player_num].gold -= cost[buy]; - player[player_num].armour = buy; + user.gold -= cost[buy]; + user.armour = buy; nl(); od_set_color(D_MAGENTA, D_BLACK); od_printf("You've bought a %s\r\n", sname[buy]); @@ -1258,8 +1237,8 @@ weaponshop(void) return; case 'W': od_disp_str("Weapon\r\n"); - buyprice = player[player_num].charisma; - buyprice = buyprice * cost[player[player_num].weapon]; + buyprice = user.charisma; + buyprice = buyprice * cost[user.weapon]; buyprice = (buyprice / 20); nl(); od_printf("I will purchase it for %u, okay? ", buyprice); @@ -1267,21 +1246,21 @@ weaponshop(void) od_disp_str("Yes\r\n"); od_set_color(D_GREEN, D_BLACK); od_disp_str("Is it Dwarven Made?\r\n"); - player[player_num].weapon = 1; - player[player_num].gold = player[player_num].gold + buyprice; + user.weapon = 1; + user.gold = user.gold + buyprice; } else od_disp_str("No\r\n"); break; case 'A': od_disp_str("Armour\r\n"); - buyprice = player[player_num].charisma * cost[player[player_num].armour] / 20; + buyprice = user.charisma * cost[user.armour] / 20; nl(); od_printf("I will purchase it for %u, okay? ", buyprice); if (od_get_answer("YN") == 'Y') { od_disp_str("Yes\r\n"); od_disp_str("Fine Craftsmanship!\r\n"); - player[player_num].armour = 1; - player[player_num].gold = player[player_num].gold + buyprice; + user.armour = 1; + user.gold = user.gold + buyprice; } else od_disp_str("No\r\n"); break; @@ -1317,11 +1296,11 @@ spy(void) od_input_str(aa, sizeof(aa) - 1, ' ', '~'); for (a = 1; a <= number_of_players; a++) { if (!stricmp(player[a].pseudo, aa)) { - if (player[player_num].gold < 20) { + if (user.gold < 20) { od_set_color(L_RED, B_BLACK); od_disp_str("You do not have enough Steel!\r\n"); } else { - player[player_num].gold -= 20; + user.gold -= 20; nl(); od_set_color(L_RED, B_BLACK); od_printf("%s\r\n", player[a].pseudo); @@ -1352,7 +1331,7 @@ gamble(void) INT32 realgold; int okea; nl(); - if (player[player_num].fights == 0) + if (user.fights == 0) od_disp_str("The Shooting Gallery is closed until tomorrow!\r\n"); else { od_clr_scr(); @@ -1364,26 +1343,26 @@ gamble(void) od_set_color(D_GREY, D_BLACK); od_input_str(tempgd, sizeof(tempgd) - 1, '0', '9'); realgold = strtoull(tempgd, NULL, 10); - if (realgold > player[player_num].gold) { + if (realgold > user.gold) { nl(); od_disp_str("You do not have enough Steel!\r\n"); } - if ((realgold != 0) && ((player[player_num].gold >= realgold) && (realgold <= 25000) && (realgold >= 1))) { + if ((realgold != 0) && ((user.gold >= realgold) && (realgold <= 25000) && (realgold >= 1))) { okea = xp_random(99) + 1; if (okea <= 3) { realgold *= 100; - player[player_num].gold += realgold; + user.gold += realgold; od_printf("You shot all the targets and win %u Steel pieces!\r\n", realgold); } else if ((okea > 3) && (okea <= 15)) { realgold *= 10; - player[player_num].gold += realgold; + user.gold += realgold; od_printf("You shot 50%% if the targets and win %u Steel pieces!\r\n", realgold); } else if ((okea > 15) && (okea <= 30)) { realgold *= 3; - player[player_num].gold += realgold; + user.gold += realgold; od_printf("You shot 25%% if the targets and win %u Steel pieces!\r\n", realgold); } else { - player[player_num].gold -= realgold; + user.gold -= realgold; od_disp_str("Sorry You Hath Lost!\r\n"); } } @@ -1394,7 +1373,7 @@ void afight(int lev) { char fname[32]; - if (player[player_num].fights == 0) { + if (user.fights == 0) { nl(); od_set_color(D_MAGENTA, D_BLACK); od_disp_str("It's Getting Dark Out!\r\n"); @@ -1462,7 +1441,7 @@ training(void) int realtrain; int tttgld; nl(); - if (player[player_num].fights == 0) + if (user.fights == 0) od_disp_str("The Training Grounds are closed until tomorrow!\r\n"); else { od_clr_scr(); @@ -1475,7 +1454,7 @@ training(void) od_disp_str("Do you wish to upgrade a stat? "); if (od_get_answer("YN") == 'Y') { od_disp_str("Yes\r\n"); - if (player[player_num].gold < (tttgld * 100)) + if (user.gold < (tttgld * 100)) od_disp_str("Sorry, but you do not have enough Steel!\r\n"); else { nl(); @@ -1511,25 +1490,25 @@ training(void) od_disp_str("Are you sure? "); if (od_get_answer("YN") == 'Y') { od_disp_str("Yes\r\n"); - player[player_num].gold -= tttgld * 100; + user.gold -= tttgld * 100; switch (realtrain) { case 1: - player[player_num].strength++; + user.strength++; break; case 2: - player[player_num].intelligence++; + user.intelligence++; break; case 3: - player[player_num].dexterity++; + user.dexterity++; break; case 4: - player[player_num].luck++; + user.luck++; break; case 5: - player[player_num].constitution++; + user.constitution++; break; case 6: - player[player_num].charisma++; + user.charisma++; break; } } else @@ -1622,17 +1601,17 @@ main(int argc, char **argv) else create(TRUE); } - if (player[player_num].status == DEAD) { + if (user.status == DEAD) { nl(); od_set_color(L_CYAN, D_BLACK); - od_printf("A defeat was lead over you by %s.", player[player_num].killer); + od_printf("A defeat was lead over you by %s.", user.killer); } checkday(); - if (player[player_num].flights < 1) { - player[player_num].fights = 0; - player[player_num].battles = 0; + if (user.flights < 1) { + user.fights = 0; + user.battles = 0; } else - player[player_num].flights--; + user.flights--; nl(); pausescr(); od_clr_scr(); @@ -1656,8 +1635,8 @@ main(int argc, char **argv) endofline(); } fclose(infile); - player[player_num].attack = w2[player[player_num].weapon]; - player[player_num].power = w3[player[player_num].weapon]; + user.attack = w2[user.weapon]; + user.power = w3[user.weapon]; infile = fopen("data/experience.lan", "rb"); for (i = 1; i <= 28; i++) { required[i] = readnumb(100000000); @@ -1665,11 +1644,11 @@ main(int argc, char **argv) } fclose(infile); od_set_color(L_YELLOW, D_BLACK); - player[player_num].status = ALIVE; + user.status = ALIVE; statshow(); - while (player[player_num].damage < player[player_num].hps) { + while (user.damage < user.hps) { levelupdate(); - if (((player[player_num].wins + 1) * 4) < (player[player_num].loses)) { + if (((user.wins + 1) * 4) < (user.loses)) { nl(); od_disp_str("As you were Travelling along a Wilderness Path an \r\n"); od_disp_str("Evil Wizard Confronted You. When you tried to fight\r\n"); @@ -1679,8 +1658,8 @@ main(int argc, char **argv) nl(); pausescr(); create(FALSE); - if (player[player_num].flights) - player[player_num].flights--; + if (user.flights) + user.flights--; } nl(); nl(); @@ -1769,8 +1748,8 @@ main(int argc, char **argv) if (od_get_answer("YN") == 'Y') { od_disp_str("Yes\r\n"); create(FALSE); - if (player[player_num].flights) - player[player_num].flights--; + if (user.flights) + user.flights--; } else od_disp_str("No\r\n"); break; @@ -1817,14 +1796,14 @@ main(int argc, char **argv) if (od_get_answer("YN") == 'Y') { od_disp_str("Yes\r\n"); if (strlen(temp)) - SAFECOPY(player[player_num].pseudo, temp); + SAFECOPY(user.pseudo, temp); } else od_disp_str("No\r\n"); break; case '#': od_disp_str("Change Battle Cry\r\n"); vic(); - SAFECOPY(player[player_num].gaspd, temp); + SAFECOPY(user.gaspd, temp); break; } }