home *** CD-ROM | disk | FTP | other *** search
- # CC_JawaTalk.cog
- #
- # CommuniCog for the Jawa in the Crystal Cave Puzzle.
- #
- # Desc: + _----_
- # ============================== . / _ _ \ .
- # ABANDON HOPE ALL YE WHO ENTER. |/_\/_\|
- # ============================== \ || /
- # ??/??/98 DGS Created. . ++++ . .
- # \__/ +
- #-----------------------------------------------------------------------------
-
- symbols
- message arrived
- message converse
- message startup
- message arrived
- message timer
- message arrived
-
- cog crystal1_c
- cog crystal2_c
- cog crystal3_c
- cog laser_c
- thing gonk linkid=2
- thing elevator linkid=1
- surface top_adjoin
- surface Bottom_adjoin
- thing player local
- flex e_speed=5.0 local
- int Met=0 local
- flex g_speed=2.0 local
- int Joke=0 local
- int spoken_1=0 local
- int gears=0 local
- int ConversationActive=0 local
- int gonkcurframe=0 local
- int ResponseID local
- int e_moving=0 local
- flex set = 0.00 local
- int bye=0 local
- int add_crystal=0 local
- int destframe=0 local
- int walkmode=0 local
- int donttalk=0 local
- flex wait_time=1.3 local
- int MattTateishi=0 local
- end
-
-
- code
- startup:
- # The varaible Add_crystal is used to deturmine what crystal has been (or is going to be) placed by Gonk.
- # If it's set to 0, that means none have been placed yet. If it's set to 3 then all 3 three crystals have been
- # placed.
-
- # HACK! 6/26/98
- # This verb sets the availability of the crystals based on which missions
- # the player has completed...
- dwSetupCrystalInventory();
- player=getlocalplayerthing();
- walkmode = 1;
- destframe = 1;
- call goframe;
-
- hastalked = 0;
- return;
-
- timer:
- if (walkmode == 1)
- {
- if (destframe == 3)
- {
- walkmode = 2;
- destframe = 1;
- call goframe;
- }
- if (destframe == 5)
- {
- walkmode = 2;
- destframe = 1;
- call goframe;
- }
- }
- else if (walkmode == 2)
- {
- if (destframe == 1)
- {
- walkmode = 1;
- destframe = 1;
- call goframe;
- }
- }
- else if (walkmode == 10)
- {
- if (destframe == 16)
- {
- print("CREATE FIRST CRYSTAL");
- sendmessage(crystal1_c,user0); //Create crystal
- sendmessage(laser_c,user1); //tell the laser cog there's another crystal added
- walkmode = 11;
- destframe = 14;
- call goframe;
- }
- }
- else if (walkmode == 20)
- {
- if (destframe == 28)
- {
- print("CREATE SECOND CRYSTAL");
- sendmessage(crystal2_c,user0);
- sendmessage(laser_c,user1); //tell the laser cog there's another crystal added
- walkmode = 21;
- destframe = 26;
- call goframe;
- }
- }
-
- else if (walkmode == 30)
- {
- if (destframe == 38)
- {
- print("CREATE THIRD CRYSTAL");
- sendmessage(crystal3_c,user0);
- sendmessage(laser_c,user1); //tell the laser cog there's another crystal added
- walkmode = 31;
- destframe = 36;
- call goframe;
- }
- }
-
- return;
-
- arrived:
- // The variable walkmode is used to figure out what pat Gonk is on. When walkmode is e set to a single digit
- // number, it means gonk is in an idle mode. If walkmode is set to a two digit number like 30 or 31, it means
- // He's putting away a crystal. Here's the layout:
-
- // walkmode Meaning
- // 1 Idle busywork at front of building
- // 2 Idle busywork at front of building
- // 10 Going to place crystal 1 in north chamber
- // 11 coming back from placing crystal 1
- // 20 Going to place crystal 2 in east chamber
- // 21 Coming back from placing crystal 2
- // 30 Going to place crystal in South West chamber
- // 31 Coming back from placing crystal 3
-
- // The majority of this code is eccentally checking to see where Gonk is and moving him from frame to frame.
- // Boring.
-
- if ((getsenderref() == gonk) && (!ConversationActive))
- {
- //print("arrived at:");
- //printint(destframe);
- if (walkmode == 1)
- {
- setthingmass(gonk, 0); //change this one
- if (destframe == 1)
- {
- set = (rand()*2);
- //printflex(set);
- if (set < 1) destframe = 2;
- else destframe = 4;
- call goframe;
- }
- else if (destframe == 2)
- {
- destframe = 3;
- AISetLookFrame(gonk, destframe);
- settimer(5);
- }
- else if (destframe == 4)
- {
- destframe = 5;
- AISetLookFrame(gonk, destframe);
- settimer(5);
- }
-
- }
- else if (walkmode == 2)
- {
- setthingmass(gonk, 00);
- if (destframe == 1)
- {
- destframe = 0;
- call goframe;
- }
- else if (destframe == 0)
- {
- destframe = 1;
- settimer(6);
- }
-
- }
- else if (walkmode == 10) // Going to place first crystal.
- {
- setthingmass(gonk, 0);
- if (destframe == 1)
- {
- destframe = 6;
- call goframe;
- }
- else if (destframe == 6)
- {
- destframe = 7;
- call goframe;
- }
- else if (destframe == 7)
- {
- destframe = 8;
- call goframe;
- }
- else if (destframe == 8)
- {
- destframe = 9;
- call goframe;
- }
- else if (destframe == 9)
- {
- destframe = 10;
- call goframe;
- }
- else if (destframe == 10)
- {
- destframe = 11;
- call goframe;
- }
- else if (destframe == 11)
- {
- destframe = 12;
- call goframe;
- }
- else if (destframe == 12)
- {
- destframe = 13;
- call goframe;
- }
- else if (destframe == 13)
- {
- destframe = 14;
- call goframe;
- }
- else if (destframe == 14)
- {
- destframe = 15;
- call goframe;
- }
- else if (destframe == 15)
- {
- destframe = 16;
- AISetLookFrame(gonk, destframe);
- settimer(1);
- }
- }
- else if (walkmode == 11) // Going to place first crystal.
- {
- setthingmass(gonk, 0);
- if (destframe == 14)
- {
- destframe = 13;
- call goframe;
- }
- else if (destframe == 13)
- {
- destframe = 12;
- call goframe;
- }
- else if (destframe == 12)
- {
- destframe = 11;
- call goframe;
- }
- else if (destframe == 11)
- {
- destframe = 10;
- call goframe;
- }
- else if (destframe == 10)
- {
- destframe = 9;
- call goframe;
- }
- else if (destframe == 9)
- {
- destframe = 8;
- call goframe;
- }
- else if (destframe == 8)
- {
- destframe = 7;
- call goframe;
- }
- else if (destframe == 7)
- {
- destframe = 6;
- call goframe;
- }
- else if (destframe == 6)
- {
- destframe = 1;
- walkmode = 2;
- donttalk = 0;
- call goframe;
- g_speed = 1.0;
- }
- }
- else if (walkmode == 20) // Going to place first crystal.
- {
- setthingmass(gonk, 0);
- if (destframe == 1)
- {
- destframe = 6;
- call goframe;
- }
- else if (destframe == 6)
- {
- destframe = 7;
- call goframe;
- }
- else if (destframe == 7)
- {
- destframe = 8;
- call goframe;
- }
- else if (destframe == 8)
- {
- destframe = 17;
- call goframe;
- }
- else if (destframe == 17)
- {
- destframe = 18;
- call goframe;
- }
- else if (destframe == 18)
- {
- destframe = 19;
- call goframe;
- }
- else if (destframe == 19)
- {
- destframe = 20;
- call goframe;
- }
- else if (destframe == 20)
- {
- destframe = 21;
- call goframe;
- }
- else if (destframe == 21)
- {
- destframe = 22;
- call goframe;
- }
- else if (destframe == 22)
- {
- destframe = 23;
- call goframe;
- }
- else if (destframe == 23)
- {
- destframe = 24;
- call goframe;
- }
- else if (destframe == 24)
- {
- destframe = 25;
- call goframe;
- }
- else if (destframe == 25)
- {
- destframe = 26;
- call goframe;
- }
- else if (destframe == 26)
- {
- destframe = 27;
- call goframe;
- }
-
- else if (destframe == 27)
- {
- destframe = 28;
- AISetLookFrame(gonk, destframe);
- settimer(1);
- }
- }
- else if (walkmode == 21) // Going to place first crystal.
- {
- setthingmass(gonk, 0);
- if (destframe == 26)
- {
- destframe = 25;
- call goframe;
- }
- else if (destframe == 25)
- {
- destframe = 24;
- call goframe;
- }
- else if (destframe == 24)
- {
- destframe = 23;
- call goframe;
- }
- else if (destframe == 23)
- {
- destframe = 22;
- call goframe;
- }
- else if (destframe == 22)
- {
- destframe = 21;
- call goframe;
- }
- else if (destframe == 21)
- {
- destframe = 20;
- call goframe;
- }
- else if (destframe == 20)
- {
- destframe = 19;
- call goframe;
- }
- else if (destframe == 19)
- {
- destframe = 18;
- call goframe;
- }
- else if (destframe == 18)
- {
- destframe = 17;
- call goframe;
- }
- else if (destframe == 17)
- {
- destframe = 8;
- call goframe;
- }
- else if (destframe == 8)
- {
- destframe = 7;
- call goframe;
- }
- else if (destframe == 7)
- {
- destframe = 6;
- call goframe;
- }
- else if (destframe == 6)
- {
- destframe = 1;
- walkmode = 2;
- donttalk = 0;
- call goframe;
- g_speed = 1.0;
- }
- }
- else if (walkmode == 30) // Going to place first crystal.
- {
- setthingmass(gonk, 0);
- if (destframe == 1)
- {
- destframe = 6;
- call goframe;
- }
- else if (destframe == 6)
- {
- destframe = 7;
- call goframe;
- }
- else if (destframe == 7)
- {
- destframe = 8;
- call goframe;
- }
- else if (destframe == 8)
- {
- destframe = 17;
- call goframe;
- }
- else if (destframe == 17)
- {
- destframe = 29;
- call goframe;
- }
- else if (destframe == 29)
- {
- destframe = 30;
- call goframe;
- }
- else if (destframe == 30)
- {
- destframe = 31;
- call goframe;
- }
- else if (destframe == 31)
- {
- destframe = 32;
- call goframe;
- }
- else if (destframe == 32)
- {
- destframe = 33;
- call goframe;
- }
- else if (destframe == 32)
- {
- destframe = 33;
- call goframe;
- }
- else if (destframe == 33)
- {
- destframe = 34;
- call goframe;
- }
- else if (destframe == 34)
- {
- destframe = 35;
- call goframe;
- }
- else if (destframe == 35)
- {
- destframe = 36;
- call goframe;
- }
- else if (destframe == 36)
- {
- destframe = 37;
- call goframe;
- }
- else if (destframe == 37)
- {
- destframe = 38;
- AISetLookFrame(gonk, destframe);
- settimer(1);
- }
- }
- else if (walkmode == 31) // Going to place first crystal.
- {
- setthingmass(gonk, 0);
- if (destframe == 36)
- {
- destframe = 35;
- call goframe;
- }
- else if (destframe == 35)
- {
- destframe = 34;
- call goframe;
- }
- else if (destframe == 34)
- {
- destframe = 33;
- call goframe;
- }
- else if (destframe == 33)
- {
- destframe = 32;
- call goframe;
- }
- else if (destframe == 32)
- {
- destframe = 31;
- call goframe;
- }
- else if (destframe == 31)
- {
- destframe = 30;
- call goframe;
- }
- else if (destframe == 30)
- {
- destframe = 29;
- call goframe;
- }
- else if (destframe == 29)
- {
- destframe = 17;
- call goframe;
- }
- else if (destframe == 17)
- {
- destframe = 8;
- call goframe;
- }
- else if (destframe == 8)
- {
- destframe = 7;
- call goframe;
- }
- else if (destframe == 7)
- {
- destframe = 6;
- call goframe;
- }
- else if (destframe == 6)
- {
- destframe = 1;
- walkmode = 2;
- donttalk = 0;
- call goframe;
- g_speed = 1.0;
- }
- }
- }
- return;
- goframe:
- AISetMoveSpeed(gonk, g_speed);
- AISetMoveFrame(gonk, destframe);
- AISetLookFrame(gonk, destframe);
- return;
-
- g_cont:
- print("whoo woooo");
- AISetMoveSpeed(gonk, g_speed);
- AISetLookFrame(gonk, 3);
- AISetMoveFrame(gonk, 3);
- e_moving = 1; // Keep anything from triggering the elevator while gonk is moving onto it
- destframe = 3;
-
- return;
-
- crystalcheck:
- if (getinv(player, 34)>0) MattTateishi=1;
- else if (getinv(player, 35)>0) MattTateishi=1;
- else if (getinv(player, 36)>0) MattTateishi=1;
- else MattTateishi=0;
- return;
-
- converse:
- // What response did the player select?
- if (donttalk == 0)
- {
- settimer(0);
- playerpos=getthingpos(getlocalplayerthing());
- AISetMoveSpeed(gonk, 0);
- AISetLookPos(gonk, playerpos);
- ResponseID = dwGetPlayerResponse();
- if (ResponseID == 0 && !ConversationActive)
- {
- ConversationActive = 1;
- playsong(0,0,0);
- //ShuffleTracks(6, 7, 8, 9);
- dwfreezeplayer();
- ResponseID = 1;
- }
-
- if (ResponseID == 1) #beginning Node
- {
- //+++++++++++++++++++++++++++++++++++++++++++++++ Greetings setup
- if (met == 0) // If they haven't met.
- {
- //dwSetDialogText("CJC000"); // Jawwa: Hello
- dwplaycharacterspeech("CJC000","M4JB001.wav");
- met = 2; // Tell him to say "anything else?"
- }
- else if (met == 1)
- {
- //dwSetDialogText("CJC001"); // Jawa: Hello again
- dwplaycharacterspeech("CJC001","M4JB002.wav");
- met = 2; // Tell him to say "anything else?"
- }
- else if (met == 2) {
- dwplayplayerresponse();
- //dwSetDialogText("CJC002"); // Aynthing else?
- dwplaycharacterspeech("CJC002","M4JB003.wav");
- }
- //+++++++++++++++++++++++++++++++++++++++++++++++ END Greetings setup
- call crystalcheck;
- dwAddResponse(100, "CJP100","T6xx012.wav",71); //droid: What are you doing here?
- if ( (add_crystal == 0)&&(MattTateishi==1) ) dwAddResponse(200, "CJP200","M4xx004.wav",70); //droid: I have crystals for you..
- if ( (add_crystal == 1)&&(MattTateishi==1) ) dwAddResponse(210, "SJP100","M4xx008.wav",70); //droid: I have crystals for you..
- if ( (add_crystal == 2)&&(MattTateishi==1) ) dwAddResponse(210, "SJP100","M4xx008.wav",70); //droid: I have crystals for you..
- dwAddResponse(300, "CJP300","M4xx005.wav",72); //droid: How do these crystals work?
- dwAddResponse(400, "CJP400","T1xx001.wav",73); //droid: What do I do here?
- dwAddResponse(500, "CJP500","M4xx007.wav",71); //droid: Why do you carry a mirror?
- dwAddResponse(600, "CJP003","IDxx222.wav",20); //droid: Gotta go.
- }
-
- if (ResponseID == 100) //
- {
- dwplayplayerresponse();
- //dwSetDialogText("CJC100"); //first goodbye
- dwplaycharacterspeech("CJC100","M4JB004L.wav");
- dwAddResponse(1,"CJP002","T1xx014.wav",60); //droid: thanks.
- }
- if (ResponseID == 200) //
- {
- dwplayplayerresponse();
- //dwSetDialogText("CJC200"); //first goodbye
- dwplaycharacterspeech("CJC200","M4JB006.wav");
- // REMOVE CRYSTAL FROM INVENTORY, GO AWAY.
- print("PLACE FIRST CRYSTAL");
- dwClearDialog();
- ConversationActive = 0;
- ShuffleTracks(6, 7, 8, 9);
- dwunfreezeplayer();
- if (add_crystal == 0)
- {
- add_crystal = 1;
- ChangeInv(getlocalplayerthing(), 34, -1); //
- SetInvAvailable(getlocalplayerthing(), 34, 0);
- // add first crystal
- donttalk = 1;
- g_speed = 2.0;
- walkmode = 10;
- if (destframe < 2)
- {
- destframe =1;
- AISetMoveSpeed(gonk, g_speed);
- AISetMoveFrame(gonk, destframe);
- AISetLookFrame(gonk, destframe);
- }
- else if (destframe < 6)
- {
- destframe =6;
- AISetMoveSpeed(gonk, g_speed);
- AISetMoveFrame(gonk, destframe);
- AISetLookFrame(gonk, destframe);
- }
- else print("assert! Jawa cog: Gonk shoud be at a frame below 6 when this is called!");
- }
- }
- if (ResponseID == 210) //
- {
- dwplayplayerresponse();
- //dwSetDialogText("SJC100"); //first goodbye
- dwplaycharacterspeech("SJC100","M4JB013.wav");
- // REMOVE CRYSTAL FROM INVENTORY, GO AWAY.
- print("PLACE FIRST CRYSTAL");
- ConversationActive = 0;
- ShuffleTracks(6, 7, 8, 9);
- dwcleardialog();
- dwunfreezeplayer();
- if (add_crystal == 1)
- {
- add_crystal = 2;
- ChangeInv(getlocalplayerthing(), 35, -1); //
- SetInvAvailable(getlocalplayerthing(), 35, 0);
-
- // add second crystal
- g_speed = 2.0;
- walkmode = 20;
- donttalk = 1;
- if (destframe < 2)
- {
- destframe =1;
- AISetMoveSpeed(gonk, g_speed);
- AISetMoveFrame(gonk, destframe);
- AISetLookFrame(gonk, destframe);
- }
- else if (destframe < 6)
- {
- destframe =6;
- AISetMoveSpeed(gonk, g_speed);
- AISetMoveFrame(gonk, destframe);
- AISetLookFrame(gonk, destframe);
- }
- }
- else if (add_crystal == 2)
- {
- add_crystal = 3;
- ChangeInv(getlocalplayerthing(), 36, -1); //
- SetInvAvailable(getlocalplayerthing(), 36, 0);
-
- // add third crystal
- g_speed = 2.0;
- walkmode = 30;
- donttalk =1;
- if (destframe < 2)
- {
- destframe =1;
- AISetMoveSpeed(gonk, g_speed);
- AISetMoveFrame(gonk, destframe);
- AISetLookFrame(gonk, destframe);
- }
- else if (destframe < 6)
- {
- destframe =6;
- AISetMoveSpeed(gonk, g_speed);
- AISetMoveFrame(gonk, destframe);
- AISetLookFrame(gonk, destframe);
- }
- }
- }
- if (ResponseID == 300) //
- {
- dwplayplayerresponse();
- //dwSetDialogText("CJC300"); //first goodbye
- dwplaycharacterspeech("CJC300","M4JB007L.wav");
- dwAddResponse(1, "CJP001","T3xx002.wav",60); //droid: thanks.
- }
- if (ResponseID == 400) //
- {
- dwplayplayerresponse();
- //dwSetDialogText("CJC400"); //first goodbye
- dwplaycharacterspeech("CJC400","M4JB009L.wav");
- dwAddResponse(1, "CJP001","T3xx002.wav",60); //droid: thanks.
- }
- if (ResponseID == 500) //
- {
- dwplayplayerresponse();
- //dwSetDialogText("CJC500"); //first goodbye
- dwplaycharacterspeech("CJC500","M4JB011.wav");
- dwAddResponse(1, "CJP001","T3xx002.wav",60); //droid: thanks.
- }
- if (ResponseID == 600) // # bye
- {
- dwplayplayerresponse();
- dwunfreezeplayer();
- dwclearDialog();
- ConversationActive = 0;
- ShuffleTracks(6, 7, 8, 9);
- AISetMoveSpeed(gonk, g_speed);
- AISetLookFrame(gonk, 1);
- AISetMoveFrame(gonk, 1);
- destframe = 1;
- }
- }
- return;
-
- gonkhelpsout:
- return;
-
-
- end
-
-
-