home *** CD-ROM | disk | FTP | other *** search
- # Droids Cog Script
- #
- # D0_skyway.cog
- #
- # Skyways cog
- #
- #
- #
- #
- #
- # [MT]
- #
- #
- # (C) 1997 LucasLearningLimited. All Rights Reserved
-
-
-
- symbols
- message startup
- message activate
- message arrived
- message pulse
- message entered
- message timer
- message user0 //Countdown is done
- message user1 //Create fake crate
- message user3 //time to create a fake AD
- message user4
- message user5 //Supervisor sez: bring in a crate!
- message touched
-
- surface adjustswitch linkid=2 //rotates the catapult
- surface destructionfloor0 mask=0x004
- surface destructionfloor1 mask=0x004
- surface destructionfloor2 mask=0x004
- surface fakelever linkid=1 //launches the crate
- surface add_sand linkid=10
- surface rem_sand linkid=4
- surface led_ones nolink
- surface led_tens nolink
- surface led_hund nolink
-
- sector destructionsector
- sector curplayersector
- sector ds2
-
- thing catapult
- thing minecart linkid=3
- thing catapult0
- thing catapult1
- thing catapult2
- thing catapult3
- thing catapult4
- thing catapult5
- thing smallcrate local
- thing player local
- thing createcrateghost
- thing breakdoor
- thing AD
- thing ghostcamera
-
- template ADcratetemplate
-
- cog countdowncog
- cog callcratecog
- cog ADAIcog
- cog finalcog
-
- //template explosion_tpl=+grenade_exp
-
- flex md_power=10.0 local
- flex c_dest=10.0 local
- flex sand_inc=5.0 local
- flex payloadweight local
- flex playerweight local
- flex timecount local
- int callcrate=0 local
- int crateisinworld=0 local
- int movedyet=0 local
- int launch=0 local
- int cratev local
- int step=10 local
- vector catvel local
-
- //sound t1catadjloop
- //sound t1catadjstop
- sound t1catlaunch
- sound t1caton
- sound t1catreset
- sound t1catwarmup
- sound texplo01
-
- sound clicksound
- template explosion_tpl=+grenade_exp local
- thing launchcamera
-
- surface badsurface1 mask=0xffff linkid=28
- surface badsurface2 mask=0xffff linkid=28
- surface CRMface linkid=2
- surface fakeadd_sand1 linkid=10
- surface fakeadd_sand2 linkid=10
- surface fakerem_sand1 linkid=4
- surface fakerem_sand2 linkid=4
-
- cog sneakycog
-
- sound switchsound=swt00ltswch1.wav
-
- sound dave=mcht1ctrsetstp.wav
- template ADtemplate
- thing telehide
- thing trinityTeleport
- cog downtothewellcog
- int ADactive=0 local
- int ADdead=0 local
- end
-
- ## Code Section
- code
- startup:
- player=getlocalplayerthing();
- attachthingtothing(minecart, catapult);
- callcrate=0;
- crateisinworld=0;
- movedyet=0;
- launch=0;
- donotlaunch=0;
- md_power=10.0;
- canFTOtalk=0;
- sleep(3);
- call displayweight;
- setwallcel(CRMface, 1);
- setwallcel(fakelever, 1);
- # AD=creatething(ADtemplate, ADhide);
- setactorflags(AD, 8);
- ADactive=0;
- ADdead=0;
- return;
-
- pulse:
- if (ADactive==0) {
- if ((getthingsector(crate))==destructionsector) {
- call destroycrate;
- }
- if (getthingsector(crate)==ds2) {
- print("you did it!");
- call specialdestroycrate;
- // call destroycrate;
- }
- }
- else if (ADactive==1) {
- if ( (getthingsector(AD)==ds2)&&(ADdead==0) ) {
- print("true destruction of AD");
- ADdead=1;
- sendmessage(finalcog, user0);
- sendmessage(downtothewellcog, user0);
- destroything(AD);
- print("YOU DID IT!!!");
- setpulse(0);
- }
- }
-
- return;
-
- touched:
- if (getsourceref()==crate) print("crate touched something");
- if ((getsenderid()==28)&&(getsourceref()==crate)) call destroycrate;
- return;
-
- destroycrate:
- print("boom!!!");
- settimerEX(2, 4, 0, 0);
- setpulse(0);
- exsector=getthingsector(crate);
- expos=getthingpos(crate);
- createthingatpos(explosion_tpl, exsector, expos, '0,0,0');
- destroything(crate);
- playsoundpos(tExplo01, expos, 1, -1, 80, 0);
- callcrate=0;
- crateisinworld=0;
- movedyet=0;
- // sleep(2);
- if (canFTOtalk==1) {
- print("I think you missed");
- dwplaycharacterspeech("SFC400", "m2bd045.wav"); #that crate nearly made it...
- dwcleardialog();
- canFTOtalk=0;
- }
- dwunfreezeplayer();
- setcurrentcamera(7);
- call callcrates;
- return;
-
- specialdestroycrate:
- dwdisableescape();
- settimerEX(2, 4, 0, 0);
- setpulse(0);
- // destroything(crate);
- callcrate=0;
- crateisinworld=0;
- movedyet=0;
- // setwallcel(adjustswitch, 1);
- teleportthing(AD, trinityteleport);
- setwallcel(fakelever, 1);
- setwallcel(add_sand, 1);
- setwallcel(rem_sand, 1);
- setwallcel(CRMface, 0);
- if (canFTOtalk==1) {
- print("You did it.");
- dwplaycharacterspeech("SFC410", "m2bd046.wav");
- dwcleardialog();
- canFTOtalk=0;
- }
- setcamerafocii(2, breakdoor, ghostcamera);
- setcurrentcamera(2);
- settimerEX(3, 5, 0, 0);
- movetoframe(breakdoor, 1, 1);
- sendmessage(sneakycog, user2);
- dwplaycharacterspeech("ADX700", "M2ad007.wav");
- dwcleardialog();
- dwenableescape();
- print("time to wake up");
- sendmessage(callcratecog, user6);
- // AIclearmode(AD, 0x2000);
- // AIsetmode(AD, 563);
- return;
-
- getpayloadweight:
- if (crateisinworld==1) payloadweight=730;
- else if (getthingsector(AD)==curplayersector) payloadweight=330;
- else payloadweight=getthingmass(player)/2.2;
- // else payloadweight=1000; //playerweight
- print("payloadweight is ");
- printflex(payloadweight);
- return;
-
- arrived:
- //if the mine cart has arrived at the end of the catapult, launch the crate
- if (getsenderid()==3) {
- if (donotlaunch==1) {
- playsoundthing(dave, minecar, 1, -1, -1, 0);
- return;
- }
- playsoundthing(t1catreset, minecar, 1, 7, 14, 0);
- if ((launch==1)&&(crateisinworld==0)&&(getsectorplayercount(curplayersector)!=1)&&(getthingsector(AD)!=curplayersector) ) {
- call launchnothing;
- return;
- }
- launch=1;
- call getpayloadweight;
- if ((getcurframe(catapult))==0) {
- catvel=computecatapultvelocity(payloadweight, catapult0, catapult1, catpower);
- skiptoframe(minecart, 0, 3);
- if (crateisinworld==1) call launchcrate;
- else if ((crateisinworld==0)&&((getsectorplayercount(curplayersector))==1)) call launchplayer;
- else if ( (crateisinworld==0)&&(getthingsector(AD)==curplayersector) ) call launchAD;
- }
- else if ((getcurframe(catapult))==1) {
- skiptoframe(minecart, 2, 3);
- catvel=computecatapultvelocity(payloadweight, catapult2, catapult3, catpower);
- if (crateisinworld==1) call launchcrate;
- else if ((crateisinworld==0)&&((getsectorplayercount(curplayersector))==1)) call launchplayer;
- else if ( (crateisinworld==0)&&(getthingsector(AD)==curplayersector) ) call launchAD;
- }
- else if ((getcurframe(catapult))==2) {
- skiptoframe(minecart, 4, 3);
- catvel=computecatapultvelocity(payloadweight, catapult4, catapult5, catpower);
- if (crateisinworld==1) call launchcrate;
- else if ((crateisinworld==0)&&((getsectorplayercount(curplayersector))==1)) call launchplayer;
- else if ( (crateisinworld==0)&&(getthingsector(AD)==curplayersector) ) call launchAD;
- // playsoundthing(t1catadjstop, catapult, 1, -1, -1, 0);
- // stopsound(channel22, 0.5);
- }
- }
- else if (getsenderref()==catapult) {
- setwallcel(CRMface, 1);
- if (getcurframe(catapult)==0) setwallcel(adjustswitch, 0);
- else if (getcurframe(catapult)==1) setwallcel(adjustswitch, 1);
- else if (getcurframe(catapult)==2) setwallcel(adjustswitch, 2);
-
- // playsoundthing(t1catadjstop, catapult, 1, -1, -1, 0);
- // stopsound(channel22, 0.5);
- }
- return;
-
- launchnothing:
- print("launchnothing");
- donotlaunch=1;
- if ((getcurframe(catapult))==0) {
- skiptoframe(minecart, 0, 3);
- }
- else if ((getcurframe(catapult))==1) {
- skiptoframe(minecart, 2, 3);
- }
- else if ((getcurframe(catapult))==2) {
- skiptoframe(minecart, 4, 3);
- }
- return;
-
-
- //launches the minecar
- user0:
- launchchannel=playsoundthing(t1catlaunch, minecar, 1, 7, 14, 0);
- if ((getcurframe(catapult))==0) skiptoframe(minecart, 1, 29.17);
- else if ((getcurframe(catapult))==1) skiptoframe(minecart, 3, 29.17);
- else if ((getcurframe(catapult))==2) skiptoframe(minecart, 5, 29.17);
- stopsound(warmupchannel, 0.5);
- return;
-
- //create the true crate out of thin air
- user1:
- crateisinworld=1;
- settimerEX(2,1,0,0);
- crate=creatething(ADcratetemplate, createcrateghost);
- return;
-
- #user3:
- # print("creating SABOTAGE AD");
- # AD=creatething(ADtemplate, telehide);
- # setactorflags(AD, 8);
- # return;
-
- user4:
- print("coming back into your life");
- settimerEX(1, 1, 0, 0);
- # teleportthing(AD, createcrateghost);
- # destroything(AD);
- AD=creatething(ADtemplate, createcrateghost);
- Aiclearmode(AD, 0xffff);
- Aisetmode(AD, 0x3000);
- stopthing(AD);
- AIsetmovespeed(AD, 0.0);
- print("FITTOOOO!!!!");
- return;
-
- activate:
- //start the launch sequence to move the minecar.
- print("activate");
- printint(getsenderid());
- if (getsenderid()==1) {
- if (getwallcel(fakelever)==1) return;
- else {
- dwfreezeplayer();
- donotlaunch=0;
- setwallcel(fakelever, 1);
- print("Starting launch sequence.");
- warmupchannel=playsoundthing(t1catwarmup, minecar, 1, 7, 14, 0x1);
- playsoundthing(t1caton, minecar, 1, 7, 14, 0);
- call user0;
- // settimerEX(12,1,0,0);
- }
- }
- //move (rotate) the catapult
- else if (getsenderid()==2) {
- if ( (isthingmoving(catapult)!=0)||(getwallcel(CRMface)==0)||(getwallcel(fakelever)==1) ) return;
- else {
- playsoundpos(switchsound, getsurfacecenter(adjustswitch), 1.0, -1, -1, 0);
- setwallcel(CRMface, 0);
- setwallcel(adjustswitch, 4);
- if ((getcurframe(catapult))==0) movetoframe(catapult, 1, 0.3);
- else if ((getcurframe(catapult))==1) movetoframe(catapult, 2, 0.3);
- else if ((getcurframe(catapult))==2) movetoframe(catapult, 0, 0.3);
- }
- }
- else if (GetSenderId() == 10) call sand_add;
- else if (GetSenderId() == 4) {
- print("removing sand");
- call sand_rem;
- }
- return;
-
- user5:
- callcrates:
- //bring in a small crate
- sendmessage(callcratecog, user1);
- truecratetype=0;
- call nocrates;
- return;
-
- timer:
- if (getsenderid()==2) {
- md_power = md_power + sand_inc;
- if (md_power < step) {
- SetWallCel(add_sand, 0);
- SetWallCel(rem_sand, 0);
- md_power = step;
-
- }
- else if (md_power>100) {
- SetWallCel(add_sand,0);
- SetWallCel(rem_sand,0);
- md_power=100;
- }
-
- else if (md_power == c_dest) {
- SetWallCel(add_sand, 0);
- SetWallCel(rem_sand, 0);
- }
-
- else {
- SetTimerEX(0.02,2,0,0);
- }
- call displayweight;
- }
- else if (getsenderid()==4) {
- dwenddialog();
- dwclearresponses();
- }
- else if (getsenderid()==1) {
- setthingmass(crate, 0);
- setwallcel(fakelever, 0);
- setthingmass(AD, 0);
- }
- else if (getsenderid()==5) {
- dwunfreezeplayer();
- setcurrentcamera(7);
- }
- else if (getsenderid()==6) {
- if (ADdead==0) {
- print("timing out the AD");
- ADdead=1;
- sendmessage(finalcog, user0);
- sendmessage(downtothewellcog, user0);
- destroything(AD);
- print("YOU DID IT!!!");
- setpulse(0);
- }
- }
- return;
-
- nocrates:
- launch=0;
- callcrate=1;
- crateisinworld=1;
- return;
-
- launchcrate:
- setthingmass(crate, 100);
- canFTOtalk=1;
- setcamerafocii(2, crate, launchcamera);
- setcurrentcamera(2);
- setTimerEX(4, 3, 0, 0);
- donotlaunch=1;
- callcrate=0;
- detachthing(crate);
- setthingvel(crate, catvel);
- call getpulsetime;
- print("pulsetime equals");
- printflex(pulsetime);
- setpulse(pulsetime);
- return;
-
- getpulsetime:
- if (getcurframe(catapult)==1) {
- print("curframe1");
- if (md_power>60) pulsetime=2.0;
- else pulsetime=0.025;
- }
- else if (getcurframe(catapult)==2) {
- print("curframe2");
- if ((md_power>30)&&(md_power<80)) pulsetime=2.0;
- else pulsetime=0.025;
- }
- else pulsetime=0.025;
- return;
-
-
-
- launchplayer:
- setcamerafocii(2, player, launchcamera);
- setcurrentcamera(2);
- setTimerEX(4, 3, 0, 0);
- donotlaunch=1;
- detachthing(player);
- setthingvel(player, catvel);
- return;
-
- launchAD:
- print("launching AD");
- ADactive=1;
- setthingmass(AD, 100);
- setcamerafocii(2, AD, launchcamera);
- setcurrentcamera(2);
- setTimerEX(4, 3, 0, 0);
- print("catvel is");
- // dwplaycharacterspeech("ADX900", "M2ad009.wav");
- printvector(catvel);
- donotlaunch=1;
- detatchthing(AD);
- setthingvel(AD, catvel);
- ADactive=1;
- setpulse(.5);
- settimerEX(1.9, 6, -1, -1);
- return;
-
- sand_add:
- if (GetWallCel(add_sand) != 1) //Nothing's already happening
- {
- SetWallCel(add_sand, 1);
- sand_inc = 1;
- c_dest = md_power + step;
- SetTimerEX(0.02,2,0,0);
- }
- return;
-
- sand_rem:
- if (GetWallCel(rem_sand) != 1) //Nothing's already happening
- {
- SetWallCel(rem_sand, 1);
- sand_inc = -1;
- c_dest = md_power - step;
- SetTimerEX(0.02,2,0,0);
- }
- return;
-
- displayweight:
- playsoundpos(clicksound, getsurfacecenter(led_tens), 0.3, -1, -1, 0);
- SetWallCel(led_ones, md_power % 10);
- SetWallCel(led_tens, (md_power / 10) % 10);
- SetWallCel(led_hund, (md_power / 100) % 10);
- catpower=(md_power/100)*20000;
- return;
-
- end
-
-
-
-
-