📄 store.c
字号:
case 'b': if (course[0]==0) { lprcat("\nSorry, but this class has a prerequisite of Fighters Training I"); c[GOLD]+=250; time_used= -10000; break; } lprcat("\nYou feel much stronger!"); cl_line(16,8); c[STRENGTH] += 2; c[CONSTITUTION] += 2; break; case 'c': c[INTELLIGENCE] += 2; lprcat("\nThe task before you now seems more attainable!"); cl_line(16,9); break; case 'd': if (course[2]==0) { lprcat("\nSorry, but this class has a prerequisite of Introduction to Wizardry"); c[GOLD]+=250; time_used= -10000; break; } lprcat("\nThe task before you now seems very attainable!"); cl_line(16,10); c[INTELLIGENCE] += 2; break; case 'e': c[CHARISMA] += 3; lprcat("\nYou now feel like a born leader!"); cl_line(16,11); break; case 'f': c[WISDOM] += 2; lprcat("\nYou now feel more confident that you can find the potion in time!"); cl_line(16,12); break; case 'g': c[DEXTERITY] += 3; lprcat("\nYou feel like dancing!"); cl_line(16,13); break; case 'h': c[INTELLIGENCE]++; lprcat("\nYour instructor told you that the Eye of Larn is rumored to be guarded\n"); lprcat("by a platinum dragon who possesses psionic abilities. "); cl_line(16,14); break; } time_used += coursetime[i-'a']*100; if (time_used > 0) { gtime += time_used; course[i-'a']++; /* remember that he has taken that course */ c[HP] = c[HPMAX]; c[SPELLS] = c[SPELLMAX]; /* he regenerated */ if (c[BLINDCOUNT]) c[BLINDCOUNT]=1; /* cure blindness too! */ if (c[CONFUSE]) c[CONFUSE]=1; /* end confusion */ adjtime((long)time_used); /* adjust parameters for time change */ } nap(1000); } } }/* * for the first national bank of Larn */int lasttime=0; /* last time he was in bank */static void banktitle();obank() { banktitle(" Welcome to the First National Bank of Larn."); }obank2() { banktitle("Welcome to the 5th level branch office of the First National Bank of Larn."); }static voidbanktitle(str) char *str; { nosignal = 1; /* disable signals */ clear(); lprcat(str); if (outstanding_taxes>0) { register int i; lprcat("\n\nThe Larn Revenue Service has ordered that your account be frozen until all\n"); beep(); lprintf("levied taxes have been paid. They have also told us that you owe %d gp in\n",(long)outstanding_taxes); lprcat("taxes, and we must comply with them. We cannot serve you at this time. Sorry.\n"); lprcat("We suggest you go to the LRS office and pay your taxes.\n"); cursors(); lprcat("\nPress "); standout("escape"); lprcat(" to leave: "); lflush(); i=0; while (i!='\33') i=getchar(); drawscreen(); nosignal = 0; /* enable signals */ return; } lprcat("\n\n\tGemstone\t Appraisal\t\tGemstone\t Appraisal"); obanksub(); nosignal = 0; /* enable signals */ drawscreen(); }/* * function to put interest on your bank account */ointerest() { register int i; if (c[BANKACCOUNT]<0) c[BANKACCOUNT] = 0; else if ((c[BANKACCOUNT]>0) && (c[BANKACCOUNT]<500000)) { i = (gtime-lasttime)/100; /* # mobuls elapsed */ while ((i-- > 0) && (c[BANKACCOUNT]<500000)) c[BANKACCOUNT] += c[BANKACCOUNT]/250; if (c[BANKACCOUNT]>500000) c[BANKACCOUNT]=500000; /* interest limit */ } lasttime = (gtime/100)*100; }static short gemorder[26]={0}; /* the reference to screen location for each */static long gemvalue[26]={0}; /* the appraisal of the gems */obanksub() { unsigned long amt; register int i,k; ointerest(); /* credit any needed interest */ for (k=i=0; i<26; i++) switch(iven[i]) { case OLARNEYE: case ODIAMOND: case OEMERALD: case ORUBY: case OSAPPHIRE: if (iven[i]==OLARNEYE) { gemvalue[i]=250000-((gtime*7)/100)*100; if (gemvalue[i]<50000) gemvalue[i]=50000; } else gemvalue[i] = (255&ivenarg[i])*100; gemorder[i]=k; cursor( (k%2)*40+1 , (k>>1)+4 ); lprintf("%c) %s",i+'a',objectname[iven[i]]); cursor( (k%2)*40+33 , (k>>1)+4 ); lprintf("%5d",(long)gemvalue[i]); k++; }; cursor(31,17); lprintf("You have %8d gold pieces in the bank.",(long)c[BANKACCOUNT]); cursor(40,18); lprintf("You have %8d gold pieces",(long)c[GOLD]); if (c[BANKACCOUNT]+c[GOLD] >= 500000) lprcat("\nNote: Larndom law states that only deposits under 500,000gp can earn interest."); while (1) { cl_dn(1,20); lprcat("\nYour wish? [("); standout("d"); lprcat(") deposit, ("); standout("w"); lprcat(") withdraw, ("); standout("s"); lprcat(") sell a stone, or "); standout("escape"); lprcat("] "); yrepcount=0; i=0; while (i!='d' && i!='w' && i!='s' && i!='\33') i=getchar(); switch(i) { case 'd': lprcat("deposit\nHow much? "); amt = readnum((long)c[GOLD]); if (amt<0) { lprcat("\nSorry, but we can't take negative gold!"); nap(2000); amt=0; } else if (amt>c[GOLD]) { lprcat(" You don't have that much."); nap(2000); } else { c[GOLD] -= amt; c[BANKACCOUNT] += amt; } break; case 'w': lprcat("withdraw\nHow much? "); amt = readnum((long)c[BANKACCOUNT]); if (amt<0) { lprcat("\nSorry, but we don't have any negative gold!"); nap(2000); amt=0; } else if (amt > c[BANKACCOUNT]) { lprcat("\nYou don't have that much in the bank!"); nap(2000); } else { c[GOLD] += amt; c[BANKACCOUNT] -= amt; } break; case 's': lprcat("\nWhich stone would you like to sell? "); i=0; while ((i<'a' || i>'z') && i!='*') i=getchar(); if (i=='*') for (i=0; i<26; i++) { if (gemvalue[i]) { c[GOLD]+=gemvalue[i]; iven[i]=0; gemvalue[i]=0; k = gemorder[i]; cursor( (k%2)*40+1 , (k>>1)+4 ); lprintf("%39s",""); } } else { if (gemvalue[i=i-'a']==0) { lprintf("\nItem %c is not a gemstone!",i+'a'); nap(2000); break; } c[GOLD]+=gemvalue[i]; iven[i]=0; gemvalue[i]=0; k = gemorder[i]; cursor( (k%2)*40+1 , (k>>1)+4 ); lprintf("%39s",""); } break; case '\33': return; }; cursor(40,17); lprintf("%8d",(long)c[BANKACCOUNT]); cursor(49,18); lprintf("%8d",(long)c[GOLD]); } }/* subroutine to appraise any stone for the bank */appraise(gemstone) register int gemstone; { register int j,amt; for (j=0; j<26; j++) if (iven[j]==gemstone) { lprintf("\nI see you have %s",objectname[gemstone]); if (gemstone==OLARNEYE) lprcat(" I must commend you. I didn't think\nyou could get it."); lprcat(" Shall I appraise it for you? "); yrepcount=0; if (getyn()=='y') { lprcat("yes.\n Just one moment please \n"); nap(1000); if (gemstone==OLARNEYE) { amt = 250000-((gtime*7)/100)*100; if (amt<50000) amt=50000; } else amt = (255 & ivenarg[j]) * 100; lprintf("\nI can see this is an excellent stone, It is worth %d",(long)amt); lprcat("\nWould you like to sell it to us? "); yrepcount=0; if (getyn()=='y') { lprcat("yes\n"); c[GOLD]+=amt; iven[j]=0; } else lprcat("no thank you.\n"); if (gemstone==OLARNEYE) lprcat("It is, of course, your privilege to keep the stone\n"); } else lprcat("no\nO. K.\n"); } }/* function for the trading post */static otradhead() { clear(); lprcat("Welcome to the Larn Trading Post. We buy items that explorers no longer find\n"); lprcat("useful. Since the condition of the items you bring in is not certain,\n"); lprcat("and we incur great expense in reconditioning the items, we usually pay\n"); lprcat("only 20% of their value were they to be new. If the items are badly\n"); lprcat("damaged, we will pay only 10% of their new value.\n\n"); }otradepost() { register int i,j,value,isub,izarg; dnditm = dndcount = 0; nosignal = 1; /* disable signals */ resetscroll(); otradhead(); while (1) { lprcat("\nWhat item do you want to sell to us ["); standout("*"); lprcat(" for list, or "); standout("escape"); lprcat("] ? "); i=0; while (i>'z' || (i<'a' && i!='*' && i!='\33' && i!='.')) i=getchar(); if (i == '\33') { setscroll(); recalc(); drawscreen(); nosignal=0; /* enable signals */ return; } isub = i - 'a'; j=0; if (iven[isub]==OSCROLL) if (scrollname[ivenarg[isub]][0]==0) { j=1; cnsitm(); } /* can't sell unidentified item */ if (iven[isub]==OPOTION) if (potionname[ivenarg[isub]][0]==0) { j=1; cnsitm(); } /* can't sell unidentified item */ if (!j) if (i=='*') { clear(); qshowstr(); otradhead(); } else if (iven[isub]==0) lprintf("\nYou don't have item %c!",isub+'a'); else { for (j=0; j<maxitm; j++) if ((itm[j].obj == iven[isub]) || (iven[isub] == ODIAMOND) || (iven[isub] == ORUBY) || (iven[isub] == OEMERALD) || (iven[isub] == OSAPPHIRE)) { srcount=0; show3(isub); /* show what the item was */ if ((iven[isub] == ODIAMOND) || (iven[isub] == ORUBY) || (iven[isub] == OEMERALD) || (iven[isub] == OSAPPHIRE)) value = 20*ivenarg[isub]; else if ((itm[j].obj == OSCROLL) || (itm[j].obj == OPOTION)) value = 2*itm[j+ivenarg[isub]].price; else { izarg=ivenarg[isub]; value = itm[j].price; /* appreciate if a +n object */ if (izarg >= 0) value *= 2; while ((izarg-- > 0) && ((value=14*(67+value)/10) < 500000)); } lprintf("\nItem (%c) is worth %d gold pieces to us. Do you want to sell it? ",i,(long)value); yrepcount=0; if (getyn()=='y') { lprcat("yes\n"); c[GOLD]+=value; if (c[WEAR] == isub) c[WEAR] = -1; if (c[WIELD] == isub) c[WIELD] = -1; if (c[SHIELD] == isub) c[SHIELD] = -1; adjustcvalues(iven[isub],ivenarg[isub]); iven[isub]=0; } else lprcat("no thanks.\n"); j = maxitm+100; /* get out of the inner loop */ } if (j <= maxitm+2) lprcat("\nSo sorry, but we are not authorized to accept that item."); } } }cnsitm() { lprcat("\nSorry, we can't accept unidentified objects."); }/* * for the Larn Revenue Service */olrs() { register int i,first; unsigned long amt; first = nosignal = 1; /* disable signals */ clear(); resetscroll(); cursor(1,4); lprcat("Welcome to the Larn Revenue Service district office. How can we help you?"); while (1) { if (first) { first=0; goto nxt; } cursors(); lprcat("\n\nYour wish? [("); standout("p"); lprcat(") pay taxes, or "); standout("escape"); lprcat("] "); yrepcount=0; i=0; while (i!='p' && i!='\33') i=getchar(); switch(i) { case 'p': lprcat("pay taxes\nHow much? "); amt = readnum((long)c[GOLD]); if (amt<0) { lprcat("\nSorry, but we can't take negative gold\n"); amt=0; } else if (amt>c[GOLD]) lprcat(" You don't have that much.\n"); else c[GOLD] -= paytaxes((long)amt); break; case '\33': nosignal = 0; /* enable signals */ setscroll(); drawscreen(); return; };nxt: cursor(1,6); if (outstanding_taxes>0) lprintf("You presently owe %d gp in taxes. ",(long)outstanding_taxes); else lprcat("You do not owe us any taxes. "); cursor(1,8); if (c[GOLD]>0) lprintf("You have %6d gp. ",(long)c[GOLD]); else lprcat("You have no gold pieces. "); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -