home *** CD-ROM | disk | FTP | other *** search
- # Droids Cog Script
- #
- # 03_CtrlRm.cog
- #
- # Desc:
- # This is the "Wheel & Axle" puzzle for the Moisture Farm level. It's big, it's ugly. really ugly...
- #
- #
- # [MT] Created
- # 1/16/98 [JP] Modified for Moisture Farm Control Room.
- #
- # (C) 1997 LucasLearningLimited. All Rights Reserved
-
-
-
- symbols
- message startup
- message pulse
- message activate
- message touched
- message timer
- message arrived
- message used
- message taken
- message user0
- message user7
-
-
- ##templates
- template wftemplate
- template grtemplate
- template iwltemplate
-
- ##lever (wrench_long) when you first place it on
-
- template iwstemplate
-
- ##lever fake (wrench_short) when you first place it on
- surface
- surface reset_switch linkid=7
- surface test_surface
-
- //cog ctrldrain
- cog movedown
-
- vector vec0 desc=thrust_direction
-
- thing gearZ
- thing gear linkid=4
- thing gearW
- thing platform linkid=3
- thing light0
- thing light1
- thing light2
- thing light3
-
- ##ghosts
- thing wfghost
- thing grghost
- thing iwlghost
-
-
- cog ctrlswitch
-
- ##inventory wrench long when you first place it on
-
- thing iwsghost linkid=5
-
- #inventory wrench_short when you first place it on
-
- thing
-
- #ghosts creation integers
- int wrench_long_spindle_i linkid=5 local
- int wrench-short_spindle_i linkid=5 local
-
- #sectors
- sector control_room0
- sector control_room1
- sector control_room2
- sector control_room3
- sector drain_room0
- sector drain_room0a
- sector drain_room0b
- sector drain_room0c
- sector drain_room0d
- sector drain_room1 //octogonal one
- sector platform_sector
-
-
- float brightness=1.00
- int speed=9 desc=thrust_speed
- int bin=31
-
- #bin number for the wrench piece.
-
- int wrench_long_spindle=0 local
- int wrench_short_spindle=0 local
- int part_id=0 local
- int xrotate local
-
- #TEMP
-
- sound reset_switch_broke
- sound wrench_gear_attach
- sound wrench_gear_move
- sound water_gush
- sound power_on
-
- cog airbubbles
-
- sector control_room4
- sector control_room5
- sector control_room6
- sector control_room7
- sector control_room8
-
- sound attach=SWT00tBigLvr.wav local
- sound platmove=dort7boltslide.wav local
-
- sector cr09
- sector cr10
- sector cr11
- sector cr12
- sector cr13
- sector cr14
- sector cr15
- sector cr16
- vector apos local
- vector bpos local
- vector arm local
- vector ppos local
- vector bar local
- vector up local
-
- sound mlever=MCHt4InclStp.wav local
- sound ambient3=amb00tindust08.wav local
-
- end
-
- # =======================================
-
-
- ## Code Section
- code
-
- startup:
- print("yosh1");
- clearvector=vectorset(0, 0, 0);
- cv2=vectorset(0.4, 0.8, 1.0);
- setsectorflags(control_room0, 2);
- setsectorflags(control_room1, 2);
- setsectorflags(control_room2, 2);
- setsectorflags(control_room3, 2);
- setsectorflags(drain_room0, 2);
- setsectorflags(drain_room0a, 2);
- setsectorflags(drain_room0b, 2);
- setsectorflags(drain_room0c, 2);
- setsectorflags(drain_room0d, 2);
- setsectorflags(drain_room1, 2);
- setsectorflags(control_room4, 2);
- setsectorflags(control_room5, 2);
- setsectorflags(control_room6, 2);
- setsectorflags(control_room7, 2);
- setsectorflags(control_room8, 2);
-
- setsectorflags(cr09, 2);
- setsectorflags(cr10, 2);
- setsectorflags(cr11, 2);
- setsectorflags(cr12, 2);
- setsectorflags(cr13, 2);
- setsectorflags(cr14, 2);
- setsectorflags(cr15, 2);
- setsectorflags(cr16, 2);
-
- setsectortint(control_room0, cv2);
- setsectortint(control_room1, cv2);
- setsectortint(control_room2, cv2);
- setsectortint(control_room3, cv2);
- setsectortint(drain_room0, cv2);
- setsectortint(drain_room0a, cv2);
- setsectortint(drain_room0b, cv2);
- setsectortint(drain_room0c, cv2);
- setsectortint(drain_room0d, cv2);
- setsectortint(drain_room1, cv2);
- setsectortint(control_room4, cv2);
- setsectortint(control_room5, cv2);
- setsectortint(control_room6, cv2);
- setsectortint(control_room7, cv2);
- setsectortint(control_room8, cv2);
-
- setsectortint(cr09, cv2);
- setsectortint(cr10, cv2);
- setsectortint(cr11, cv2);
- setsectortint(cr12, cv2);
- setsectortint(cr13, cv2);
- setsectortint(cr14, cv2);
- setsectortint(cr15, cv2);
- setsectortint(cr16, cv2);
-
- //vec0=vectorset(0.0, 0.0, -8.0);
-
- //setpulse(0.2);
-
- if (light0 != 0) setthinglight(light0, 0, 0.0);
- if (light1 != 0) setthinglight(light1, 0, 0.0);
- if (light2 != 0) setthinglight(light2, 0, 0.0);
- if (light3 != 0) setthinglight(light3, 0, 0.0);
- xrotate=0;
- global0=0;
-
- return;
-
- # =========================================================
- user0:
- //user gets called when player hits reset switch, see ctrlswitch co
- //sendmesasge
- activate:
- print("activate");
- if (GetSenderId() == 7) // pressing reset button underwater
- {
- if (global0==0) // water is not drained yet
- {
- print ("reset_switch_broke!");
- PlaySoundLocal(reset_switch_broke, 1, 0, 0);
- }
-
- else if (global0==1) // power comes on
- {
- print("power on");
- PlaySoundLocal(power_on, 1, 0, 0);
- SetWallCel(reset_switch, 1); // reset button changes color
- setthinglight(light0, brightness, 1.5); // turns these lights on
- setthinglight(light1, brightness, 2.0);
- setthinglight(light2, brightness, 1.0);
- setthinglight(light3, brightness, 3.0);
- }
-
-
- }
- return;
-
- # =============// attach the wrench from inventory to the middle gear
- used:
- // Section is executed when the user uses an inventory object.
- print("used");
- printint (dwGetActivateBin());
- printint (getsenderid());
- if (xrotate == 0)
- {
- if ( getinv(getlocalplayerthing(), dwGetActivatebin()) > 0) // if the bin has more than 0 in it;
- {
- printint (getthingsector(getlocalplayerthing()));
- printint (drain_room0);
- // The gear was activated
- if (getthingsector(getlocalplayerthing()) == drain_room0)
- {
- // Player is in drain room
- print ("activated wrench");
- //newiwl=creatething(iwltemplate, iwlghost);
- //newiws=creatething(iwstemplate, iwsghost);
- //AttachThingToThing(new_iwl, gear);
- //AttachThingToThing(new_iws, gear);
- call handle_attach;
- }
- }
- }
- return;
-
-
- #===========================
- handle_attach:
- // handle attach is used to put the wrench on the lower left side of the assembly.
- print("handleattach");
- if (wrench_long_spindle == 0) //if wrench spindle is empty
- {
- //wrench_long_spindle = dwGetActivateBin(); //LLLLLLLL
- //if (wrench_long_spindle == 31) // if it's the "bin", for the wrench, it's bin 31
- if (dwGetActivateBin() == 31) // if it's the "bin", for the wrench, it's bin 31
- {
- // If lower_left_spindle is set to 0, then there should be no gear on the spindle. If a non-zero #,
- wrench_long_spindle = dwGetActivateBin(); //LLLLLL
- print ("wrench_on!");
- //creating the wrench to get attached...
- wrench_long_spindle_i = creatething (iwltemplate, iwlghost); //ok
- //capturething(wrench_long_spindle_i); //ok
- wrench_short_spindle_i = creatething (iwstemplate, iwsghost); //ok
- capturething(wrench_short_spindle_i); //ok
- ChangeInv(getlocalplayerthing(), wrench_long_spindle, -1); //
- //newiwl=creatething(iwltemplate, iwlghost);
- //newiws=creatething(iwstemplate, iwsghost);
- //AttachThingToThing(iwlghost, gear);
- //AttachThingToThing(iwsghost, gear);
- AttachThingToThing(wrench_short_spindle_i, gear);
- AttachThingToThing(wrench_long_spindle_i, gear);
- AttachThingToThing(wrench_short_spindle_i, wrench_long_spindle_i); //LL
- playsoundlocal(attach, 1, 0, 0);
- }
- }
- return;
-
- #===============
- update_bins:
- if (getinv(getlocalplayerthing(),bin) > 0) SetInvAvailable(getlocalplayerthing(), bin, 1); //03/11/98 changed setinvavailabel to...
- else SetInvAvailable(getlocalplayerthing(), bin, 0);
- return;
-
- # =============// rotate the wrench attached to the gear and platform
- touched:
- if (playonce==0){
- //if (GetSenderId() == 5) // pressing wrench_short
- if ( getsenderref() == wrench_short_spindle_i) //ok
- {
- print("c-r tou~chey!");
- setpulse(0.1);
- playonce=1; //ok
- }
- }
-
- return;
-
-
- pulse:
- player=getlocalplayerthing();
- playerpos=getthingpos(player);
-
-
- Apos=getthingpos(gear);
- Bpos=getthingpos(wrench_short_spindle_i);
-
- up=vectorset(0,0,1);
- bar=vectornorm(vectorsub(Bpos, Apos));
- bar=vectorcross(bar, up);
- Ppos=vectornorm(vectorsub(playerpos, Apos));
- wrench_short_spindle_ipos=getthingpos(wrench_short_spindle_i);
- wrench_long_spindle_ipos=getthingpos(wrench_long_spindle_i); //LL
-
-
- // printflex(vectorY(getthingpos(wrench_long_spindle_i)));
-
-
- if((vectorY(getthingpos(wrench_long_spindle_i)))>-0.76) call stoptheplatform;
-
- if (vectordot(bar, Ppos) > 0) {
- if(vectordist(playerpos,wrench_short_spindle_ipos)<.12) {
- //mleveri=PlaySoundthing(mlever, wrench_short_spindle_i, 1, -1, -1, 0x1); // wrench fake gear moving sound
- playsoundlocal(mlever, 1, 0, 0);
- AttachThingToThing(wrench_short_spindle_i, gear); //LL
- AttachThingToThing(wrench_long_spindle_i, gear); //LL
- AttachThingToThing(wrench_short_spindle_i, wrench_long_spindle_i); //LL
-
- RotatePivot(gear, 1, -3); //gear rotates to current frame (it was 12 before)
- }
- else {
- stopthing(wrench_short_spindle_i);
- stopthing(gear);
- stopthing(wrench_long_spindle_i);
- //stopsound(mleveri, 0.5);
- print("sound stopped");
- }
- }
- else print("we are on side TWO");
- return;
-
- # =============// wrench has been rotated until final frame
- stoptheplatform:
- print("c_stop!!!");
- setpulse(0);
- Sleep(.5);
- MoveToFrame(platform, 1, .79); // platform moves down
- destroything(wrench_short_spindle_i);
- destroything(wrench_long_spindle_i);
- destroything(gear);
- newwf=creatething(wftemplate, wfghost);
- movetoframe(newwf, 1, .8);
- newgr=creatething(grtemplate, grghost);
- movetoframe(newgr, 1, .8);
- sendmessage(airbubbles, user4); //message sent to the airbubbler user4
- playsoundlocal(platmove, 1, 0, 0);
- return;
-
-
-
-
- arrived:
- if (getsenderid() == 3); //message that platform has arrived
- {
- if (getcurframe(platform)==1)
- {
- global0=1; // control room is drained
- print("c-r arrived");
- sendmessage(movedown, user7); //LL
- sendmessage(ctrlswitch, user3); //LL
- print("user3 sent"); //LL
- sleep(3); //LL
-
- clearsectorflags(control_room0, 2); //control & drain rooms no longer submerged
- clearsectorflags(control_room1, 2);
- clearsectorflags(control_room2, 2);
- clearsectorflags(control_room3, 2);
- clearsectorflags(drain_room0, 2);
- clearsectorflags(drain_room0a, 2);
- clearsectorflags(drain_room0b, 2);
- clearsectorflags(drain_room0c, 2);
- clearsectorflags(drain_room0d, 2);
- clearsectorflags(drain_room1, 2); //control & drain rooms rgb values returned to normal
-
- setsectortint(control_room0, clearvector);
- setsectortint(control_room1, clearvector);
- setsectortint(control_room2, clearvector);
- setsectortint(control_room3, clearvector);
- setsectortint(drain_room0, clearvector);
- setsectortint(drain_room0a, clearvector);
- setsectortint(drain_room0b, clearvector);
- setsectortint(drain_room0c, clearvector);
- setsectortint(drain_room0d, clearvector);
-
- setsectortint(control_room4, clearvector); //newly added control rms sector tints.
- setsectortint(control_room5, clearvector);
- setsectortint(control_room6, clearvector);
- setsectortint(control_room7, clearvector);
- setsectortint(control_room8, clearvector);
-
- clearsectorflags(control_room4, 2); //newly added control rms clear sector flags
- clearsectorflags(control_room5, 2);
- clearsectorflags(control_room6, 2);
- clearsectorflags(control_room7, 2);
- clearsectorflags(control_room8, 2);
-
- clearsectorflags(cr09, 2); //new ones added belows:
- clearsectorflags(cr10, 2);
- clearsectorflags(cr11, 2);
- clearsectorflags(cr12, 2);
- clearsectorflags(cr13, 2);
- clearsectorflags(cr14, 2);
- clearsectorflags(cr15, 2);
- clearsectorflags(cr16, 2);
-
- setsectortint(cr09, clearvector);
- setsectortint(cr10, clearvector);
- setsectortint(cr11, clearvector);
- setsectortint(cr12, clearvector);
- setsectortint(cr13, clearvector);
- setsectortint(cr14, clearvector);
- setsectortint(cr15, clearvector);
- setsectortint(cr16, clearvector);
-
- sectorsound(control_room0, ambient3, 0.6);
- sectorsound(control_room1, ambient3, 0.6);
- sectorsound(control_room2, ambient3, 0.6);
- sectorsound(control_room3, ambient3, 0.6);
- sectorsound(drain_room0, ambient3, 0.6);
- sectorsound(drain_room0a, ambient3, 0.6);
- sectorsound(drain_room0b, ambient3, 0.6);
- sectorsound(drain_room0c, ambient3, 0.6);
- sectorsound(drain_room0d, ambient3, 0.6);
- sectorsound(drain_room1, ambient3, 0.6);
- sectorsound(control_room4, ambient3, 0.6);
- sectorsound(control_room5, ambient3, 0.6);
- sectorsound(control_room6, ambient3, 0.6);
- sectorsound(control_room7, ambient3, 0.6);
- sectorsound(control_room8, ambient3, 0.6);
- sectorsound(cr09, ambient3, 0.6);
- sectorsound(cr10, ambient3, 0.6);
- sectorsound(cr11, ambient3, 0.6);
- sectorsound(cr12, ambient3, 0.6);
- sectorsound(cr13, ambient3, 0.6);
- sectorsound(cr14, ambient3, 0.6);
- sectorsound(cr15, ambient3, 0.6);
- sectorsound(cr16, ambient3, 0.6);
-
- }
- }
- return;
-
-
- end