inherit "/std/room";#include "path.h"#define TX(x) tell_room("/d/omiq/pewrsonal/audiencia",x+"n")/* Variables */intinicio, /* inicio de la Omiq */fin, /* fin de la Omiq */encendida, /* Esta la Omiq activada? */iniciada, /* Ya hay alguien dentro */dentro; /* Players que estan dentro */object player1, /* Contrincante 1 de la omiq */player2; /* Contrincante 2 de la omiq */int permitido(string str) {return 0; tell_object(find_living("sathan"),str+"n");switch (str) { case "sathan": case "Sathan": return 1; break; default : return 0; }return 0;}void resetear() {int i,j;object *sal; if (!permitido(TP->query_cap_name())) { tell_object(TP,"No te esta permitido estar aqui!!n"); return 1; }sal=users();for (i=0;i<sizeof(sal);i++) if (sal[i]->query_personal_shadow()) { sal[i]->dest_personal(); if (sal[i]->query_property("passed out")) sal[i]->remove_property("passed out"); }encendida=0;dentro=0;iniciada=0;player1=0;player2=0;for(i=1;i<10;i++) { sal=all_inventory(load_object("/d/omiq/personal/rooms/ring"+i)); for(j=0;j<sizeof(sal);j++) sal[j]->move(TO); }tell_object(TP,"%^BOLD%^CYAN%^Omiq reseteada.%^RESET%^n"); return 1; }int query_iniciada() { return encendida; }void setup() { set_short("Control del Desafio Personal"); set_long("Esta es la habitacion desde donde se controla todo del Desafio Personal" "ntActivar : Activar desafio personal para que la gente pueda entrar." "ntApagar : Apaga la Omiq Personal." "ntQuien : Que dos jugadores estan dentro en este momento." "ntResetear : Resetear la Omiq Personal, y sacar todos los objetos." "ntTiempo : Hora a la que terminara la Omiq Personal."// "ntPuntos : Como van los puentos." "nn"); set_light(30); encendida=0; add_property("no_clean_up", 1); add_exit("fuera",ROOMS+"camino_1","door");}void init() { ::init(); add_action("activar","activar"); add_action("apagar","apagar"); add_action("quien","quien"); add_action("resetear","resetear"); add_action("tiempo","tiempo");// add_action("puntos","puntos");}int tiempo() {if (!encendida) { tell_object(TP,"La Omiq no ha sido activada aun.n"); return 1; } if (!fin) { tell_object(TP,"No se a determinado hora de finalizacion.n"); return 1; } write ("Finalizacion de la Omiq Personal : "+ctime(fin)+".n"); return 1; }int quien() {if (iniciada) { if (!player1 || !player2) { write("El combate ya a finalizado y se esta esperando que salga el ganador.n"); return 1; } write ("Luchadores dentro: "+player1->query_cap_name()+" contra "+player2->query_cap_name()+".n"); }else { if (player1) { write(player1->query_cap_name()+" esta esperando a su contrincante.n"); return 1; } write ("No hay nadie dentro del Desafio.n"); }return 1;}int apagar() { if (!permitido(TP->query_cap_name())) { tell_object(TP,"No te esta permitido estar aqui!!n"); return 1; }if (!encendida) { tell_object(TP,"La Omiq no estaba lanzada.n"); return 1; } encendida=0; tell_object(TP,"Has apagado La Omiq Personal, Ya no habran mas luchas.n"); return 1; }int activar(string str) {int entero;object *todos=users();int i;for(i=0;i<sizeof(todos);i++) tell_object(todos[i],"Habitantes de los Reinosnn""Nos complace anunciarles que a dado Comienzo el Desafio Personal!!n""Con este desafio Podras de,mostrarle a tu amigo que eres major que el, sin miedo a matarlon""Inauguracion, hoy Gratis!! estamos en el camino de Anduar a Orgoth pasense y veann""n");if (!permitido(TP->query_cap_name())) { tell_object("No te esta permitido estar aqui, Fuera!!!.n"); tell_object(find_living("sathan"),"%^BOLD%^RED%^"+TP->query_cap_name()+" esta intentando activar la omiq sin permiso!!.%^RESET%^n"); return 1; }encendida=1;tell_object(find_living("sathan"),"%^BOLD%^RED%^"+TP->query_cap_name()+" acaba de activar la Omiq Personal.%^RESET%^n"); if (str) { sscanf(str, "%d", entero); if (!entero) { tell_object(TP,"Introduce el numero en minutos.n"); return 1; } inicio=time(); fin=time()+entero*60; tell_object(TP,"La Omiq ha sido activada para "+entero+" minutos.n"); tell_object(TP,"La Omiq terminara : "+ctime(fin)+"n"); write_file("/d/omiq/personal/log/omiq.log",TP->query_cap_name()+" a lanzado la Omiq ** "+ctime(time())+" ** Fin ** "+ctime(fin)+" **n",0); }else { inicio=0; fin=0; write_file("/d/omiq/personal/log/omiq.log",TP->query_cap_name()+" a lanzado la Omiq ** "+ctime(time())+" ** sin determinar fin.n",0); } return 1; }string player1() { return player1->query_cap_name(); } string player2() { return player2->query_cap_name(); }int se_puede_entrar() { if (fin && time()>=fin) encendida=0; if (!encendida) return 0; if (iniciada) return 0;return 1;}void comenzar() { iniciada=1; tell_object(player1,"%^BOLD%^RED%^Da comienzo la lucha!!%^RESET%^n"); tell_object(player2,"%^BOLD%^RED%^Da comienzo la lucha!!%^RESET%^n"); player1->remove_property("passed out"); player2->remove_property("passed out"); }int entra_player(object ob) {object som; tell_room(ENV(ob),ob->query_cap_name()+" entra en la Arena.n",ob); ob->move("/d/omiq/personal/rooms/ring"+(random(9)+1)+".c"); dentro++; if (dentro==1) player1=ob; else player2=ob; ob->add_property("passed out","preparandote para la lucha.n"); tell_room(ENV(ob),ob->query_cap_name()+" entra a la Arena.n",TP); tell_object(ob,"Entras a la Arena.n"); som=new(SHADOW); som->setup_shadow(ob); if (dentro>1) comenzar();return 1;}void player_caido(object ob) {object ganador;player1->stop_fight(player2);player2->stop_fight(player1);if (player1->query_timed_property("flipped")) player1->remove_timed_property("flipped");if (player2->query_timed_property("flipped")) player2->remove_timed_property("flipped");if (ob==player1) ganador=player2; else ganador=player1;ob->move(FUERA);ob->look_me();tell_object(ganador,"%^BOLD%^RED%^Has ganado la Batalla.%^RESET%^n"); tell_object(ob,"%^BOLD%^Has perdido la Batalla.%^RESET%^n"); TX("Ganador "+ganador->query_cap_name()+".");ob->add_timed_property("passed out","Estas inconciente y no ves ob->nadan",5);tell_room(TO,"Entran corriendo unos clerigos y se llevan a"+ob->query_cap_name()+" de la habitacion.n",({ player1,player2 })); call_out("salirer",4,ganador); }void salirer(object ob){player1->destruct_desafio_shadow();player2->destruct_desafio_shadow();"/d/omiq/personal/rooms/ring8"->poner_salida();player1->stop_fight(player2);player2->stop_fight(player1);dentro=0;player1=0;player2=0;}int player_fuera() { iniciada=0; } |