Re: CODE: Races, Clans, Classes, Tribes, languages and a drunkspeech

From: Limratana (wlimrata@merlin.cc.manhattan.edu)
Date: 07/23/96


On Tue, 23 Jul 1996, Eduardo Gutierrez de Oliveira wrote:

> haha, I'de be honored...:) If you could also point me to where I can find 
> good pointers to coding languages it'd be great, I haven't been able of 
> finding the time to do it myself here...
>
Actaully, I haven't seen a any code on how to do languages.  But if I think
my code is anywhere near decent when I'm done with it, I might post a
general version of it.
 
> 
> Maybe it'd not be that hard, you could just make many more endings look 
> the same, so if two different endings in italian were 'luto' and 'ini' in 
> a rhymed language they'd be 'endil' and 'anvil' or something like that..:)
>
That's a good idea!  Too bad I won't be having any elves! :)
 
> >  Yep, but think even having to save each word only once based on one 
> > radom effect will still get very tasking for the computer.  Consider how 
> > many different words you use a day.  Then consider how many differnt 
> > words 10-50 mudders might use a day, and some of them misplet 5 different 
> > ways.  Even if your dictionary files stay under 20K words, that's a lot 
> > of work for most computers.
> 
> Yup, this is the main problem here, not even counting typos and the like. 
> But even yet I'd like to make some rules so as to make similiar word in a 
> language not be similar in another, maybe counting the syllabes, or 
> depending on the number of wovels, or maybe if they start with some 
> letter then they'll get something else appended/preppended (that was a 
> new word there!..:) or treaten differently.
> 
> Even yet I'd like to make some dictionaries anyway, so for example I 
> could implement in elvish (or japanese, or klingon) some of the words 
> commonly accepted as such..:)
>
  Actually I was thinking of putting all the common fill words in the 
syllable table with their real eqivalent.  Like 'the' would allways 
translate to 'le' or la' for French.  I'd have to make sure the it only 
translates 'the' when it's seprate though.
 
> Haha, never ocurred to me... Maybe it is because latin blood is so 
> pro-communication, we are always talking and babbling, no matter if there 
> is anything to say (my users tend to use gossip for everything, I once 
> told them to use tell and anonymously -more than 300 users- refused to do 
> so..:) and most are experienced mudders (as myself I think (concatenated 
> parentheses in letters, what will I come with next... geez)))
>
Hehehe, I'm not anti-communication in rl.  Just on muds!  I'm trying to
prevent a lot of "which way is the area with the great eq, and how do you
kill the monster?"  People will get this kind of info around anyways.. I 
just don't want it to fill the air too much.  I'll have to see how it 
goes though.  Players might really get annoyed trying to communicate.
 
> Greta to be of help! If you need anything or want to share 
> ideas/code/comments/philosophy let me know..:)

Thanks!  
> buy corpses for 1-2gp and make 1000gp trophy bags.  Because of how Merc is set
> up, you also need to change the "level" of corpses to level 1 instead of level
> 0, shopkeepers don't buy level 0 stuff.
> 
>    Add this to the spell table in CONST.C
> 
>         "make bag",     { 37, 37, 37, 37 },
>         spell_make_bag, TAR_OBJ_INV,            POS_STANDING,
>         NULL,                   SLOT(50),       100,    24,
>         "",                     "!Make Bag!"*/
> 
>    Put this in MAGIC.C
> */
> 
> void spell_make_bag( int sn, int level, CHAR_DATA *ch, void *vo )
> {
>     static char *headers[] = { "corpse of the ", "corpse of The ",
>                                "corpse of an ", "corpse of An ",
>                                "corpse of a ", "corpse of A ",
>                                "corpse of " }; // (This one must be last)
>     OBJ_DATA *obj = (OBJ_DATA *) vo;
>     char buf[MAX_STRING_LENGTH];
>     int i;
> 
>     if ( obj->item_type != ITEM_CORPSE_NPC && obj->item_type != ITEM_CORPSE_PC)
>         return;
> 
>     for (i = 0; i < 7; i++)
>        {
>        int len = strlen(headers[i]);
>        if ( memcmp(obj->short_descr, headers[i], len) == 0 )
>           {
>           sprintf( buf, "bag %s", obj->short_descr+len );
>           free_string( obj->name );
>           obj->name = str_dup(buf);
> 
>           sprintf( buf, "A bag of fine %s hide catches your eye.  ",
>              obj->short_descr+len );
>           free_string( obj->description );
>           obj->description = str_dup( buf );
> 
>           sprintf( buf, "bag made from %s hide", obj->short_descr+len );
>           free_string( obj->short_descr );
>           obj->short_descr = str_dup( buf );
> 
>           break;
>           }
>        }
> 
>     obj->item_type = ITEM_CONTAINER;
>     obj->wear_flags = ITEM_HOLD|ITEM_TAKE;
>     obj->timer = 0;
>     obj->weight = 5;
>     obj->level = level/3;
>     obj->cost = level * 50;
>     obj->value[0] = level * 10;                 /* Weight capacity */
>     obj->value[1] = 1;                          /* Closeable */
>     obj->value[2] = -1;                         /* No key needed */
>     obj->pIndexData = get_obj_index( 5660 );    /* So it's not a corpse */
> 
>     act( "Your new $p looks pretty snazzy.", ch, obj, NULL, TO_CHAR );
>     act( "$n's new $p looks pretty snazzy.", ch, obj, NULL, TO_ROOM );
> 
>     send_to_char( "Ok.\n\r", ch );
>     return;
> }
> 
> /*
> 
>    Put this in a zone.  If you change the number change it in the code
> as well.
> 
> #5660
> bag~
> a generic bag~
> A generic bag generates the VNUM for the 'make purse' spell.  ~
> ~
> 15 0 1
> 50 0 0 0
> 5 50 0
> */
> 
> /* Put this in SPECIAL.C.  Remember to add this to spec_lookup() as well. */
> 
> bool spec_taxidermist( CHAR_DATA *ch )
> {
>     OBJ_DATA *inv;
>     int sn;
> 
>     if ( ch->position != POS_STANDING )
>         return FALSE;
> 
>     if ( ch->pIndexData->pShop == 0 ||
>          time_info.hour < ch->pIndexData->pShop->open_hour ||
>          time_info.hour > ch->pIndexData->pShop->close_hour )
>        return FALSE;
> 
>     for ( inv = ch->carrying; inv != NULL; inv = inv->next_content )
>     {
>     if (inv->item_type == ITEM_CORPSE_NPC)
>        {
>        if ( ( sn = skill_lookup( "make bag" ) ) >= 0 )
>           (*skill_table[sn].spell_fun) ( sn, ch->level, ch, inv );
>        return TRUE;
>        }
>     else if (inv->wear_loc == WEAR_NONE && number_percent() < 5)
>        {
>        act( "$n suggests you buy $p.", ch, inv, NULL, TO_ROOM );
>        return TRUE;
>        }
>     }
> 
>     return FALSE;
> }
> 
> 
> ---------------------------------------------------------------------------
> Eduardo Gutierrez de Oliveira                  eduo@sparc.ciateq.conacyt.mx
> Administrador de Internet                            Internet Administrator
> Proveedor de Servicio Internet                    Internet Service Provider
>                                 CIATEQ, A.C.
>  Centro de Investigacion y Asistencia Tecnica del Estado de Queretaro, A.C.
>                      http://sparc.ciateq.conacyt.mx/
> ---------------------------------------------------------------------------
> 
> 



This archive was generated by hypermail 2b30 : 12/07/00 PST