⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 store.c

📁 早期freebsd实现
💻 C
📖 第 1 页 / 共 2 页
字号:
				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 + -