//------------------------------------------------------------------------------ // SOD WINDOWS // Autor: Jadha Interactive // Fecha: 24/06/2002 (15:27:56h) //------------------------------------------------------------------------------ // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ PROGRAM Shadow_Of_Dragon; // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ INCLUDE "SOD.h"; // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // PROGRAMA PRINCIPAL // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ begin FULL_SCREEN=false; set_title("Shadow Of Dragon"); set_mode(640,480,16); set_fps(32,0); Iniciar(); loop frame; end end // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // FINAL // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // DECLARACIÓN DE PROCESOS // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ process Iniciar(); begin //fpgs fpg_ranuras=load_fpg("..\FPG\Ranuras.fpg"); fpg_menu_principal=load_fpg("..\FPG\menus.fpg"); fpg_menu=load_fpg("..\FPG\menu.fpg"); fpg_caras=load_fpg("..\FPG\caras.fpg"); fpg_titulo=load_fpg("..\FPG\TSod.fpg"); fpg_personajes=load_fpg("..\FPG\Person.fpg"); //Fuentes fuente_textos=load_fnt("..\Fuentes\basica.fnt"); fuente_numeros=load_fnt("..\Fuentes\roja.fnt"); //regiones id_region_pantalla= define_region(1,0,0,640,480); //Sonidos sonidos[0]=load_wav("C:\SODWIN800600\SONIDOS\decision1.wav"); // sonidos[1]=load_wav("..\SONIDOS\intro.wav"); // sonidos[2]=load_wav("..\SONIDOS\Mal.wav"); //graficos g_negro=load_map("..\MAPAS\negro.map"); //gráfico para los fades g_mensajes=load_map("..\MAPAS\mensajes.map"); //gráfico para los mensajes menu_principal(); // Presentacion(); end //Proceso de control del logo process Presentacion(); private anima_finalizada;sonido; begin //animación del logo start_fli("..\ANIMA\jhadalogoa.fli",0,0); // sound(sonido,256,256); repeat anima_finalizada=frame_fli(); frame; until(anima_finalizada==0) end_fli(); //Breve pausa para que vean bien el logo timer[9]=0; repeat frame; until (timer[9]>=350) clear_screen(); menu_principal(); end //El menu de nuevojuego, continuar o creditos process menu_principal(); private opcion_elegida=0; //si hemos elegido o no alguna opción id_musica;id_sonido; begin file=fpg_menu_principal; id_musica=load_song("C:\SODWIN800600\CANCIONES\inicio.mid"); id_sonido=load_wav("C:\SODWIN800600\SONIDOS\Decision2.wav"); play_song(id_musica,-1); put(fpg_menu_principal,1,320,240); _fade(ON,2); graph=2;x=400;y=333; //cursor repeat //movimiento del puntero if (scan_code==t_arriba && y>=334)y-=43;sonido(1); while(scan_code==t_arriba)frame;end end if (scan_code==t_abajo && y<=418)y+=43;sonido(1); while(scan_code==t_abajo)frame;end end if(key(t_aceptar)) play_wav(id_sonido,0);fade_music_off(1000);_fade(off,4);clear_screen(); while(key(t_aceptar))frame;end //controlamos la opcion que se ha elegido switch (y) case 333; Nuevo_juego(); end case 376; //Cargar_juego(); end default; //Creditos(); end end opcion_elegida=1; end frame; until(opcion_elegida<>0) //descargamos todo unload_fpg(fpg_menu_principal); unload_song(id_musica); unload_wav(id_sonido); end process nuevo_juego(); begin iniciar_personajes();//Cargamos los datos de los personajes carga_magias("c:\SODWIN640480\m.smg"); animación_principal(); //marco(); end //Animación inicial del juego (intro) process animación_principal(); begin region=id_region_pantalla; id_grafico_fondo_anim_princip=load_map("..\MAPAS\PRES.map"); //música de fondo //id_canción_anim_princip = load_song("..\CANCIONES\realmoff.ogg"); // play_song(id_canción_anim_princip,-1); //Empezamos el scroll start_scroll(0,0,id_grafico_fondo_anim_princip,0,id_region_pantalla,0); x=1000;y=1000; scroll.camera=id; _fade(on,4); //movimiento y textos //writer_Deluxe(&conf_txt); //writer_deluxe(&conf_txt); //repeat y+=5;frame; until(y>=1500); /*mensaje(1,80,450); repeat x-=7;frame; until(x<=500); repeat y-=7;frame; until(y<=250); mensaje(2,80,450); repeat x+=7;frame; until(x>=1200); mensaje(3,80,450); repeat y+=5;frame; until(y>=1000);*/ titulillo(); end process Titulillo(); private contador; begin file = fpg_titulo; flags=4; x=320;y=240; timer[9]=0; graph=0; while(graph<5) if(timer[9]>=65) graph++;end frame; end flags=0; graph=5; //repeat frame; until(key(t_aceptar)); iniciar_juego(); end // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // PROCESOS DE CONTROL DEL JUEGO // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ process Iniciar_juego(); //controla toda la carga antes del primer nivel private fuente; begin //apagamos la pantalla y liberamos y limpiamos recursos _fade(off,4); //fade_music_off(10);//stop_song(); stop_scroll(0); unload_map(0,id_grafico_fondo_anim_princip); // unload_song(id_cancion_anim_princip); clear_screen(); //limpiado de pantalla SIGNAL(father,s_kill); frame; fase_1(); //COMIENZO DEL JUEGO end //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// // FASE 1(Que ya va siendo hora...) process fase_1(); begin region=id_region_pantalla; //fade(100,100,100,4); _fade(on,4); //Intro conf_txt.rFuente=load_fnt("..\FUENTES\ariblk.fnt");//fuente_textos; //save_fnt(conf_txt.rFuente,"ariblk.fnt"); /*conf_txt.rposx=70; conf_txt.rposy=70; conf_Txt.rMaxRenglones=1; conf_Txt.rMaxCaract=100; conf_Txt.rVelPto=15; wd_load_text("..\Textos\fase1-1.t",1,&conf_Txt.rTexto); writer_deluxe(&conf_Txt); */ _fade(off,4); //cargas g_fase=load_map("..\MAPAS\" + pantallas[p_actual].nombre + "\" + itoa(pantallas[p_actual].px)+itoa(pantallas[p_actual].py)+".map"); g_durezas=load_map("..\MAPAS\" + pantallas[p_actual].nombre + "\" + itoa(pantallas[p_actual].px)+itoa(pantallas[p_actual].py)+"_d.map"); //Empezamos el scroll start_scroll(0,0,g_fase,0,id_region_pantalla,0); Prota(500,550,g_fase); _fade(on,4); musica("village.mid"); /* conf_txt.rposx=150; conf_txt.rposy=400; conf_Txt.rTexto="2 años más tarde"; writer_deluxe(&conf_Txt); */ end process Prota(pos_x,pos_y,gráfico); //controla el gráfico del prota private UX;UY; //guardaremos la x y la y que tenemos que pasar en cada frame conta; p_ancho;p_alto; //guarda el alto y el ancho del perso aux;aux2;aux3; begin file=fpg_personajes; UX=pos_x;UY=pos_y; x=pos_x;y=pos_y; scroll.camera=id; ctype=c_scroll; size=100; graph=1; write_int(0,10,10,0,&fps); timer[1]=0; loop p_alto=graphic_info(file,graph,g_height); p_ancho=graphic_info(file,graph,g_wide); //si vamos pa rriba if(scan_code==t_arriba) //establecemos el gráfico adecuado if (timer[1]>15) if (graph<4 OR graph>6)graph=pg_arriba[0];end if(graph==pg_arriba[2]) graph = pg_arriba[0]; else graph=pg_arriba[2]; end timer[1]=0; end //si no chocamos con el mapa de durezas, actualizamos el valor de uy colord[0]=map_get_pixel(0,g_durezas,x-p_ancho/2+4,y); colord[2]=map_get_pixel(0,g_durezas,x+p_ancho/2-4,y); if(!(colord[0]==255 or colord[1]==255 or colord[2]==255)) uy-=pg_propiedades[0]; end //si no estamos más allá del mapa... if(uy<0) pantallas[p_actual].py+=1; cambia_mapa(0); uy=graphic_info(0,g_fase,g_height); end end //si vamos pa bajo if(scan_code==t_abajo) if (timer[1]>15) //establecemos el gráfico adecuado if (graph>3)graph=pg_abajo[0];end if(graph==pg_abajo[2]) graph = pg_abajo[0]; else graph=pg_abajo[2]; end timer[1]=0; end //si no chocamos .... colord[0]=map_get_pixel(0,g_durezas,x-p_ancho/2+4,y+p_alto/2+2);//+graphic_info(file,graph,g_HEIGHT)); colord[1]=map_get_pixel(0,g_durezas,x,y+p_alto/2+2); colord[2]=map_get_pixel(0,g_durezas,x+p_ancho/2-4,y+p_alto/2+2); if(!(colord[0]==255 or colord[1]==255 or colord[2]==255)) uy+=pg_propiedades[0]; end //si no estamos más allá del mapa... if(uy>graphic_info(0,g_fase,g_height)) pantallas[p_actual].py-=1; cambia_mapa(0); uy=0; end end //si vamos pa la izquierda if(scan_code==t_izquierda) if (timer[1]>15) //establecemos el gráfico adecuado if (graph<10)graph=pg_izquierda[0];end if(graph==pg_izquierda[2]) graph = pg_izquierda[0]; else graph=pg_izquierda[2]; end timer[1]=0; end //si no chocamos .... colord[0]=map_get_pixel(0,g_durezas,x-p_ancho/2,y+4);//+graphic_info(file,graph,g_HEIGHT)); colord[1]=map_get_pixel(0,g_durezas,x-p_ancho/2,y+p_alto/4); colord[2]=map_get_pixel(0,g_durezas,x-p_ancho/2,y+p_alto/2-2); if(!(colord[0]==255 or colord[1]==255 or colord[2]==255)) ux-=pg_propiedades[0]; end //si no estamos más allá del mapa... if(ux<0) pantallas[p_actual].px-=1; cambia_mapa(0); ux=graphic_info(0,g_fase,g_wide); end end //si vamos pa la derecha if(scan_code==t_derecha) if (timer[1]>15) //establecemos el gráfico adecuado if (graph<7 OR graph>9)graph=pg_derecha[0];end if(graph==pg_derecha[2]) graph=pg_derecha[0]; else graph=pg_derecha[2]; end timer[1]=0; end //si no chocamos.... colord[0]=map_get_pixel(0,g_durezas,x+p_ancho/2,y+4);//+graphic_info(file,graph,g_HEIGHT)); colord[1]=map_get_pixel(0,g_durezas,x+p_ancho/2,y+p_alto/4); colord[2]=map_get_pixel(0,g_durezas,x+p_ancho/2,y+p_alto/2-2); if(!(colord[0]==255 or colord[1]==255 or colord[2]==255)) ux+=pg_propiedades[0]; end //si no estamos más allá del mapa... if(ux>graphic_info(0,g_fase,g_wide)) pantallas[p_actual].px+=1; cambia_mapa(0); ux=0; end end //ponemos la postura quieta del prota if(scan_code==0)graph=(((graph-1)/3)*3+2);end //si pulsamos la tecla del menu if(scan_code==t_menu) menu(); signal(father,s_freeze); signal(id,s_freeze); end //si pulsamos la tecla de batalla (temporal) if(scan_code==_b) _fade(off,5); signal(father,s_sleep); stop_scroll(0); //número de enemigos aleatoriamente, de 1 a 6 (1-3=1;4-5=2;6=1) rand_seed(time()); num_enemigos=rand(1,6); say (itoa(num_enemigos)); if(num_enemigos==6) num_enemigos=3; else if(num_enemigos==5 || num_enemigos==4) num_enemigos=1; else num_enemigos=2; end end // num_enemigos=3; //cargamos las propiedades de los enemigos // rand_seed(32); //load( aux=rand(100,115); aux2=rand(100,115); aux3=rand(100,115); enemigos[0].gráfico=aux; enemigos[0].pv=100; enemigos[0].pv_totales=100; enemigos[0].fuerza=10; enemigos[0].resistencia=5; enemigos[0].velocidad=5; // aux=rand(100,115); // rand_seed(40); enemigos[1].gráfico=aux2; enemigos[1].pv=100; enemigos[1].pv_totales=100; enemigos[1].fuerza=10; enemigos[1].resistencia=5; enemigos[1].velocidad=5; // aux=rand(100,115); // rand_seed(2); enemigos[2].gráfico=aux3; enemigos[2].pv=100; enemigos[2].pv_totales=100; enemigos[2].fuerza=10; enemigos[2].resistencia=5; enemigos[2].velocidad=5; iniciar_batalla(rand(1,10)); signal(id,s_sleep); while(scan_code==_b) frame;end end If(key(_f))efecto(5,640,480);While(scan_code==_f)Frame;End;End x=UX;y=UY; //actualizamos las posiciones frame; end end process Personaje(pos_x,pos_y,grafico); private UX;UY; //Guardo el X y el Y para el futuro que pongamos movimiento a los personajes nivel; begin file=fpg_personajes; ctype=c_scroll; UX=pos_x;UY=pos_y; x=100;y=200; graph=grafico; loop if (collision(TYPE Prota)) if (KEY(_a)) write(0,UX,UY,4,"hola"); frame; end end frame; end end process cambia_mapa(mode); //cambiar el mapa del scroll private int a; begin file=fpg_fase; //descargamos los recusos y paramos el scroll unload_map(0,g_fase);unload_map(0,g_durezas); stop_scroll(0); switch(mode) case 0: //si es cambio de mapa de ciudad //cargamos el nuevo mapa g_fase=load_map("..\MAPAS\" + pantallas[p_actual].nombre + "\" + itoa(pantallas[p_actual].px)+itoa(pantallas[p_actual].py)+".map"); g_durezas=load_map("..\MAPAS\" + pantallas[p_actual].nombre + "\" + itoa(pantallas[p_actual].px)+itoa(pantallas[p_actual].py)+"_d.map"); end case 1: //si es entrada a puerta /* a=colord-15;a+=800; g_fase=map_clone(file,a); g_durezas=map_clone(fpg_durezas,a);*/ end end start_scroll(0,0,g_fase,0,id_region_pantalla,0); _fade(on,5); end //---------------------- process efecto(magnitud,ancho,alto); begin z=-255; //graph=new_map(ancho,alto,16); set_center(0,graph,ancho>>1,alto>>1); flags=4; loop graph=get_screen(); x=(ancho>>1)+rand(-magnitud,magnitud); y=(alto>>1)+rand(-magnitud,magnitud); frame; unload_map(0,graph); end end //--------------- //------------------------------------------------------------------------ // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ // DECLARACIÓN DE FUNCIONES // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ process _fade(tipo,vel); private blendop; float i; begin graph=map_clone(0,g_negro); x=320;y=240;z=-100; //conjelamos los procesos SIGNAL(father,s_freeze); // SIGNAL(id,s_wakeup); i=tipo; blendop=blendop_new(); blendop_assign(0,graph,blendop); if(tipo==0) //fade on while(i<=1) blendop_translucency(blendop,i); i+=(vel*0.01); frame; end //fade of blendop_free(blendop); unload_map(0,graph); SIGNAL(father,s_wakeup); else while(i>=0) blendop_translucency(blendop,i); i-=(vel*0.01); frame; end blendop_free(blendop); unload_map(0,graph); ///descongelamos SIGNAL(father,s_wakeup); p_negra(); end end process p_negra(); begin graph=g_negro;x=400;y=300;z=_z2; repeat frame;until(get_id(type _fade)>0) end //------------------------------------------------------------------------------- //Corta la canción actual con un fade_music y pone una nueva process musica(string archivo); private conta; begin //apagamos la canción suavemente y la descargamos if(id_cancion>-1) signal(father,s_sleep); stop_song(); repeat frame;until(is_playing_song()<>1) unload_song(id_cancion);signal(father,s_wakeup); end //cargamos la nueva id_cancion=load_song("..\sodwin800600\canciones\"+archivo); play_song(id_cancion,-1); end //Reproduce un sonido de la estructura sonid process sonido(sonid); begin play_wav(sonidos[sonid-1],0); end //-------------------------------------------------------------------------------- process iniciar_personajes(); begin //Provisionalmente iniciaremos la estructura personaje asi,mas tarde //cuando ya pongamos todas las cosas que hay que iniciar meteremos esto en un //archivo y haremos que se carge el archivo al inicio para ahorrar codigo /* Esto es todo provisional, hay que hacer un programa que nos permita la creaci¢n armas, magias, personajes, malos, etc y que las guarde en una estructura que m s adelante ser  cargada */ pantallas[p_actual].nombre="Townville"; personaje.lo_tengo=true; personaje[1].lo_tengo=true; personaje[2].lo_tengo=false; personaje[3].lo_tengo=false; personaje[4].lo_tengo=false; personaje[5].lo_tengo=false; personaje.cara_x=635; personaje[1].cara_x=699; personaje[2].cara_x=763; personaje[3].cara_x=635; personaje[4].cara_x=699; personaje[5].cara_x=763; personaje.cara_y=463; personaje[1].cara_y=463; personaje[2].cara_y=463; personaje[3].cara_y=527; personaje[4].cara_y=527; personaje[5].cara_y=527; personaje[0].nombre="Danko"; personaje[0].pv=350; personaje[0].pv_totales=400; personaje[0].pm=175; personaje[0].pm_totales=175; personaje[0].fuerza = 12; personaje[0].resistencia = 7; personaje[0].velocidad = 100; personaje[1].nombre = "Elle"; personaje[1].pv = 256; personaje[1].pv_totales = 256; personaje[1].pm = 191; personaje[1].pm_totales = 191; personaje[1].fuerza = 7; personaje[1].resistencia = 6; personaje[1].velocidad = 700; personaje[2].nombre = "Blaisse"; personaje[2].pv = 291; personaje[2].pv_totales = 291; personaje[2].pm = 190; personaje[2].pm_totales = 190; personaje[2].fuerza = 5; armas[1].nombre = "Blasfemia Cortante"; armas[1].fuerza = 3; armas[1].defensa = 1; armas[1].suerte = 0; armas[1].rapidez = 7; armas[1].peso = 3; armas[1].num_personaje = 0; armas[1].ranuras[0] = 3; armas[1].ranuras[1] = 1; armas[1].la_tengo=true; armas[2].nombre = "Filo Asesino"; armas[2].fuerza = 18; armas[2].defensa = 5; armas[2].suerte = 6; armas[2].rapidez=15; armas[2].peso = 5; armas[2].num_personaje=0; armas[2].ranuras[0]=4; armas[2].ranuras[1] = 0; armas[2].la_tengo=true; armas[3].nombre = "Espada Celeste"; armas[3].fuerza = 10; armas[3].defensa = 5; armas[3].suerte = 6; armas[3].rapidez=15; armas[3].peso = 5; armas[3].num_personaje=0; armas[3].ranuras[0]=5; armas[3].ranuras[1] = 0; armas[3].la_tengo=true; armas[4].nombre = "Nawasaki (Katana del diablo)"; armas[4].fuerza = 10; armas[4].defensa = 5; armas[4].suerte = 6; armas[4].rapidez=15; armas[4].peso = 5; armas[4].num_personaje=1; armas[4].ranuras[0]=6; armas[4].ranuras[1] = 0; armas[4].la_tengo=true; armas[5].nombre = "Rumor del viento"; armas[5].fuerza = 10; armas[5].defensa = 5; armas[5].suerte = 6; armas[5].rapidez=15; armas[5].peso = 5; armas[5].num_personaje=0; armas[5].ranuras[0]=7; armas[5].ranuras[1] = 0; armas[5].la_tengo=true; armas[6].nombre = "Espada Zeleste (Hacendado)"; armas[6].fuerza = 10; armas[6].defensa = 5; armas[6].suerte = 6; armas[6].rapidez=15; armas[6].peso = 5; armas[6].num_personaje=0; armas[6].ranuras[0]=5; armas[6].ranuras[1] = 0; armas[6].la_tengo=true; brazaletes[1].nombre = "Garrufil Protector"; brazaletes[1].ranuras[0] = 3; brazaletes[1].ranuras[1] = 0; brazaletes[1].lo_tengo=true; brazaletes[1].num_personaje=1; brazaletes[2].nombre = "Sueno Eterno"; brazaletes[2].ranuras[0] = 4; brazaletes[2].ranuras[1] = 0; brazaletes[2].lo_tengo=true; brazaletes[2].num_personaje=2; brazaletes[3].nombre = "Caca flotante"; brazaletes[3].ranuras[0] = 4; brazaletes[3].ranuras[1] = 0; brazaletes[3].lo_tengo=true; brazaletes[3].num_personaje=0; personaje.ident_arma[0]=1; personaje.ident_arma[1]=1; personaje[1].ident_arma[0]=4; personaje[1].ident_arma[1]=2; magias[1].nombre="Hechizo de luna"; magias[1].la_tengo=true; magias[1].nivel=1; magias[1].tipo="Protección"; magias[1].gasto_pm=43; magias[1].fuera_batalla=Si; magias[2].nombre="Olor a pies(putrefactos)"; magias[2].la_tengo=true; magias[2].nivel=1; magias[2].tipo="Ataque"; magias[2].gasto_pm=123; magias[2].fuera_batalla=No; magias[3].nombre="Marsupial"; magias[3].la_tengo=true; magias[3].nivel=3; magias[3].tipo="Curación"; magias[3].gasto_pm=22; magias[3].fuera_batalla=Si; magias[4].nombre="Fuego III"; magias[4].la_tengo= true; magias[4].num_personaje=0; magias[4].nivel=3; magias[4].tipo="Ataque E."; magias[4].gasto_pm=255; magias[4].fuera_batalla=No; magias[5].nombre="Leti-Rap"; magias[5].la_tengo=true; magias[5].nombre="Aqua"; magias[5].nivel=1; magias[5].tipo="Ataque"; magias[5].gasto_pm=98; magias[5].fuera_batalla=No; magias[6].la_tengo=true; magias[6].nombre="Gomina"; magias[6].la_tengo=true; magias[6].nivel=5; magias[6].tipo="Protec & Ataque"; magias[6].gasto_pm=589; magias[6].fuera_batalla=No; magias[7].nombre="Rayo de pikachu"; magias[7].la_tengo= true; magias[7].num_personaje=0; magias[7].nivel=1; magias[7].tipo="Ataque"; magias[7].gasto_pm=55; magias[7].fuera_batalla=Si; magias[8].nombre="Tierra II"; magias[8].la_tengo=true; magias[8].nombre="Aliento"; magias[8].nivel=1; magias[8].tipo="Protección"; magias[8].gasto_pm=43; magias[8].fuera_batalla=Si; magias[9].la_tengo=true; magias[9].nombre="Champoo"; magias[9].la_tengo=true; magias[9].nivel=1; magias[9].tipo="Protección"; magias[9].gasto_pm=43; magias[9].fuera_batalla=Si; magias[10].nombre="Detergente"; magias[10].la_tengo= true; magias[10].num_personaje=0; magias[10].nivel=1; magias[10].tipo="Protección"; magias[10].gasto_pm=43; magias[10].fuera_batalla=Si; invoc[1].nombre="Caballeros de la mesa cuadrada"; invoc[1].la_tengo=true; invoc[2].nombre="Bahamut"; invoc[2].la_tengo=true; invoc[3].nombre="Osiris"; invoc[3].la_tengo=true; invoc[4].nombre="Ramhut"; invoc[4].la_tengo= true; objetos[1].nombre = "Disparo Aturdidor"; objetos[1].tipo = _OATAQUE; objetos[1].lo_tengo=true; objetos[2].nombre = "Bastón de hierro"; objetos[2].tipo = _OATAQUE; objetos[2].lo_tengo=true; objetos[3].nombre = "Pistola de agua"; objetos[3].tipo = _OATAQUE; objetos[3].lo_tengo=true; objetos[4].nombre = "Panacea"; objetos[4].tipo = _OCURA; objetos[4].lo_tengo=true; objetos[5].nombre = "Panácea +"; objetos[5].tipo = _OCURA; objetos[5].lo_tengo=true; objetos[6].nombre = "Panácea ++"; objetos[6].tipo = _OCURA; objetos[6].lo_tengo=true; objetos[7].nombre = "Sanador"; objetos[7].tipo = _OCURA; objetos[7].lo_tengo=true; objetos[8].nombre = "Antipiedra"; objetos[8].tipo = _OCURA; objetos[8].lo_tengo=true; objetos[9].nombre = "Caravaca"; objetos[9].tipo = _OCURA; objetos[9].lo_tengo=true; objetos[10].nombre = "Despertar"; objetos[10].tipo = _OCURA; objetos[10].lo_tengo=true; objetos[11].nombre = "Quitar maldición"; objetos[11].tipo = _OCURA; objetos[11].lo_tengo=true; objetos[12].nombre = "Aire fresco"; objetos[12].tipo = _OCURA; objetos[12].lo_tengo=true; objetos[13].nombre = "Bola de fuego"; objetos[13].tipo = _OMAGICOS; objetos[13].lo_tengo=true; objetos[14].nombre = "Bola e fuego"; objetos[14].tipo = _OMAGICOS; objetos[14].lo_tengo=true; objetos[15].nombre = "Despertar"; objetos[15].tipo = _OMAGICOS; objetos[15].lo_tengo=true; objetos[16].nombre = "Quitar maldición"; objetos[16].tipo = _OMAGICOS; objetos[16].lo_tengo=true; objetos[17].nombre = "Aire fresco"; objetos[17].tipo = _OMAGICOS; objetos[17].lo_tengo=true; objetos[18].nombre = "Super-sayan II"; objetos[18].tipo = _OMEJORA; objetos[18].lo_tengo=true; objetos[19].nombre = "LLave Ascensor"; objetos[19].tipo = _OCLAVE; objetos[19].lo_tengo=true; objetos[20].nombre = "???"; objetos[20].tipo = _OOTROS; objetos[20].lo_tengo=true; end process carga_magias(string fichero); private f;i; auxil; string auxt; begin f=fopen(fichero,O_READ); if(f>0) for(i=1;i<31;i++) fread(f,auxt); say(auxt); magias[i].nombre=auxt; fseek(f,32,1); magias[i].la_tengo=true; magias[i].nivel=3; magias[i].tipo="Curación"; magias[i].gasto_pm=22; magias[i].fuera_batalla=Si; end fclose(f); end end