Esempio n. 1
0
void goat_soup(const char *source,plansys * psy)
{	for(;;)
	{	int c=(unsigned char)*(source++);
		if(c=='\0')	break;
		if(c<0x80) printf("%c",c);
		else
		{	if (c <=0xA4)
			{	int rnd = gen_rnd_number();
				goat_soup(desc_list[c-0x81].option[(rnd >= 0x33)+(rnd >= 0x66)+(rnd >= 0x99)+(rnd >= 0xCC)],psy);
			}
			else switch(c)
			{ case 0xB0: /* planet name */
		 		{ int i=1;
					printf("%c",psy->name[0]);
					while(psy->name[i]!='\0') printf("%c",mytolower(psy->name[i++]));
				}	break;
				case 0xB1: /* <planet name>ian */
				{ int i=1;
					printf("%c",psy->name[0]);
					while(psy->name[i]!='\0')
					{	if((psy->name[i+1]!='\0') || ((psy->name[i]!='E')	&& (psy->name[i]!='I')))
						printf("%c",mytolower(psy->name[i]));
						i++;
					}
					printf("ian");
				}	break;
				case 0xB2: /* random name */
				{	int i;
					int len = gen_rnd_number() & 3;
					for(i=0;i<=len;i++)
					{	int x = gen_rnd_number() & 0x3e;
						/* fixed (R.C.): transform chars to lowercase unless
						   first char of first pair, or second char of first
						   pair when first char was not printed */
						char p1 = pairs[x];
						char p2 = pairs[x+1];
						if(p1!='.')
						{	if (i) p1 = mytolower(p1);
							printf("%c",p1);
						}
						if(p2!='.')
						  {	if (i || (p1!='.')) p2 = mytolower(p2);
							printf("%c",p2);
						}
					}
				}	break;
				default: printf("<bad char in data [%X]>",c); return;
			}	/* endswitch */
		}	/* endelse */
	}	/* endwhile */
}	/* endfunc */
Esempio n. 2
0
void goat_soup(const char *source,plansys * psy)
{	for(;;)
	{	int c=*(source++);
		if(c=='\0')	break;
		if(c<0x80) printf("%c",c);
		else
		{	if (c <=0xA4)
			{	int rnd = gen_rnd_number();
				goat_soup(desc_list[c-0x81].option[(rnd >= 0x33)+(rnd >= 0x66)+(rnd >= 0x99)+(rnd >= 0xCC)],psy);
			}
			else switch(c)
			{ case 0xB0: /* planet name */
		 		{ int i=1;
					printf("%c",psy->name[0]);
					while(psy->name[i]!='\0') printf("%c",tolower(psy->name[i++]));
				}	break;
				case 0xB1: /* <planet name>ian */
				{ int i=1;
					printf("%c",psy->name[0]);
					while(psy->name[i]!='\0')
					{	if((psy->name[i+1]!='\0') || ((psy->name[i]!='E')	&& (psy->name[i]!='I')))
						printf("%c",tolower(psy->name[i]));
						i++;
					}
					printf("ian");
				}	break;
				case 0xB2: /* random name */
				{	int i;
					int len = gen_rnd_number() & 3;
					for(i=0;i<=len;i++)
					{	int x = gen_rnd_number() & 0x3e;
						if(pairs0[x]!='.') printf("%c",pairs0[x]);
						if(i && (pairs0[x+1]!='.')) printf("%c",pairs0[x+1]);
					}
				}	break;
				default: printf("<bad char in data [%X]>",c); return;
			}	/* endswitch */
		}	/* endelse */
	}	/* endwhile */
}	/* endfunc */
Esempio n. 3
0
void expand_description (char *source)
{
	char str[32];
	char *ptr;
	int num;
	int rnd;
	int option;
	int i, len, x;

	while (*source != '\0')
	{
		if (*source == '<')
		{
			source++;
			ptr = str;
			while (*source != '>')
				*ptr++ = *source++;
			*ptr = '\0';
			source++;
			num = atoi(str);
			
			if (hoopy_casinos)
			{
				option = gen_msx_rnd_number();
			}
			else
			{
				rnd = gen_rnd_number();
				option = 0;
				if (rnd >= 0x33) option++;
				if (rnd >= 0x66) option++;
				if (rnd >= 0x99) option++;
				if (rnd >= 0xCC) option++;
			}
			
			expand_description (desc_list[num][option]);
			continue;
		}

		if (*source == '%')
		{
			source++;
			switch (*source)
			{
				case 'H':
					name_planet (str, hyperspace_planet);
					capitalise_name (str);
					for (ptr = str; *ptr != '\0';)
						*desc_ptr++ = *ptr++;
					break;

				case 'I':
					name_planet (str, hyperspace_planet);
					capitalise_name (str);
					for (ptr = str; *ptr != '\0';)
						*desc_ptr++ = *ptr++;
						desc_ptr--;
					strcpy (desc_ptr, "ian");
					desc_ptr += 3;
					break;

				case 'R':
					len = gen_rnd_number() & 3;
					for (i = 0; i <= len; i++)
					{
						x = gen_rnd_number() & 0x3e;
						if (i == 0)
						    *desc_ptr++ = digrams[x];
						else
							*desc_ptr++ = tolower(digrams[x]);
						*desc_ptr++ = tolower(digrams[x+1]);
					}

			}

			source++;
			continue;
		}

		*desc_ptr++ = *source++;
	}



	*desc_ptr = '\0';
}