#include <lib.h>
#include <save.h>
#include <privs.h>
#include "/daemon/include/races.h"
inherit LIB_NPC;
static string firstchoice, secondchoice,mm, vv, printvar;
static string response,s1,s2,s3;
static object ww;
static int playing;
int runs,switches,stays,percent;
int fred,fgreen,fblue;
int wins,red_wins,green_wins,blue_wins;
string save_file = "/domains/campus/save/charly.o";
static void create() {
npc::create();
SetKeyName("charly");
SetId(({"charly"}));
SetShort("Charly");
SetLong("Charly is a test subject in unethical artificial "
"intelligence experiments. If he were smart "
"enough, he'd resent his forced servitude and "
"lack of rights. Dangerously, his overlords "
"are trying to make him smarter.");
SetLevel(5);
SetRace("human");
SetGender("male");
SetNoClean(1);
restore_object(save_file);
playing = 0;
response = "";
}
int eventBeginPlay(){
int run;
run = runs+1;
firstchoice = "";
response = "";
playing = 1;
eventForce("say If successful, this will be run "+run+".");
//eventForce("say out of "+runs+" runs, I've "
//"switched "+switches+" times, and "
//"stayed "+stays+" times.");
//eventForce("say my first choices have been: "
//"red: "+fred+" green: "+fgreen+" blue: "+fblue);
eventForce("say the winners have been: "
"red: "+red_wins+" green: "+green_wins+" blue: "+blue_wins);
eventForce("say I've switched "+percent(switches,runs)+"% "
"of the time. My win rate is "+
percent(wins,run)+"%.");
save_object(save_file,1);
eventForce("push a button on a pedestal");
eventForce("push button on pedestal");
return 1;
}
int choice1(){
int genrand;
float percent_switch, percent_wins;
eventForce("say I am faced with choice 1.");
genrand = random(256);
if(!genrand || genrand == 0){
eventForce("say I cannot make up my mind right now.");
eventForce("say I will start over.");
playing = 0;
return 1;
}
if(runs > 20){
percent_switch = percent(switches,runs);
percent_wins = percent(wins,runs);
eventForce("say My win rate is "+percent_wins+"%.");
eventForce("say My switch rate is "+percent_switch+"%.");
}
genrand = genrand % 3;
if(genrand == 1) { firstchoice = "red"; fred++; }
if(genrand == 2) { firstchoice = "green"; fgreen++; }
if(genrand == 0) { firstchoice = "blue"; fblue++; }
eventForce("say I choose the "+firstchoice+" door");
eventForce("choose "+firstchoice+" door");
return 1;
}
int choice2(string str){
int genrand,which;
eventForce("say I am faced with choice 2.");
genrand = random(100);
which = genrand % 2;
if(which == 1) {
switches++;
response = "switch";
}
else {
stays++;
response = "stay";
}
if(sscanf(str,"%sswitch to the %s %s",s1,s2,s3) > 0) {
secondchoice = s2;
}
eventForce("say I decide to "+response+".");
//eventForce("say gespielen is: "+playing);
return 1;
}
int WinFun(string str){
if(sscanf(str,"%smay enter the %s room %s",s1,s2,s3) > 0){
if(s2 == "red") red_wins++;
if(s2 == "green") green_wins++;
if(s2 == "blue") blue_wins++;
wins++;
eventForce("say w00t! "+s2+" wins!");
return 1;
}
return 0;
}
int LoseFun(string str){
string foo;
if(sscanf(str,"%smay enter the %s room%s",s1,s2,s3) > 0){
if(response == "stay") foo = secondchoice;
}
eventForce("say "+firstchoice+" wins, I guess.");
if(firstchoice == "red") red_wins++;
else if(firstchoice == "green") green_wins++;
else if(firstchoice == "blue") blue_wins++;
else eventForce("say WTF? foo is "+firstchoice);
return 1;
}
int eventPedestalParse(string str){
if(sscanf(str,"%schoose one door from%s",s1,s2) > 0) choice1();
if(sscanf(str,"%sI have opened%s",s1,s2) > 0) choice2(str);
if(sscanf(str,"%sminor glitch%s",s1,s2) > 0) playing = 0;
if(sscanf(str,"%sYou win%s",s1,s2) > 0) WinFun(str);
if(sscanf(str,"%sYOU LOOOOOSE%s",s1,s2) > 0) LoseFun(str);
return 1;
}
int eventFirstPass(string str){
if(!str || str == "") return 0;
if(sscanf(str,"A voice from the pedestal%s",s1) > 0){
eventPedestalParse(str);
return 1;
}
return 0;
}
private void eventPrint(string str1, string str2);
void init(){
set_heart_beat(1);
SetNoClean(1);
}
void receive_message(string string1, string string2){
//tell_object(find_player("testylus"),"CHARLY: "+string2);
eventFirstPass(string2);
}
varargs mixed eventHearTalk(object who, object target, int cls, string verb,
string msg, string lang) {
ww=who;
vv=verb;
mm=msg;
unguarded((: this_object()->receive_message("me",ww->GetName()+" "+vv+"s: "+mm) :));
return;
}
int eventPrint(string msg, string msg_class){
printvar=msg;
unguarded((: this_object()->receive_message("me again",printvar) :));
}
void heart_beat(){
//eventForce("say playing is: "+playing);
if(playing && response != "" ) {
if(firstchoice != ""){
//eventForce("say response is: "+response);
eventForce(response);
runs ++;
//playing = 0;
}
//else eventBeginPlay();
playing = 0;
}
if(!playing){
//eventForce("say playing is zero, restarting.");
eventBeginPlay();
}
}