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 crossed
- message entered
- message timer
- message user0 //Countdown is done
- message user1 //Create fake crate
- message user2 //Edroid is ready
- message user3 //Rdroid is ready
- message user4 //Droids are walking to catapult
- message touched
- message exited
-
- surface adjustswitch linkid=2 //rotates the catapult
- surface callsmallcrate linkid=4 //calls 50lb crate
- surface callbigcrate linkid=5 //calls 100lb crate
- surface destructionfloor0 mask=0xfff linkid=58
- surface destructionfloor1 mask=0xfff linkid=18
- surface destructionfloor2 mask=0xfff linkid=28
- surface destructionfloor4 mask=0xfff linkid=38
- surface destructionfloor5 mask=0xfff linkid=48
- surface targetfloor3 mask=0xfff linkid=11
- surface fakelever linkid=1 //launches the crate
- surface add_sand linkid=10
- surface rem_sand linkid=9
- surface led_ones nolink
- surface led_tens nolink
- surface led_hund nolink
- surface flbottom linkid=1
- surface blink nolink
-
- sector curplayersector
- sector ipxsector mask=0xfff linkid=8
-
- thing catapult
- thing minecart linkid=3
- thing catapult0
- thing catapult1
- thing catapult2
- thing catapult3
- thing catapult4
- thing catapult5
- thing crated
- thing smallcrate local
- thing player local
- thing camera2
- thing createcrateghost
- thing Edroid linkid=13
- thing Rdroid linkid=16
-
- template Asmallcratetemplate
- template Blargecratetemplate
- //template Csmallcratetemplate
- template Dlargecratetemplate
- template Esmallcratetemplate
- template Flargecratetemplate
-
- cog countdowncog
- cog callcratecog
- cog Edroidcog
- cog Rdroidcog
- cog goalscog
-
- //sound t1catadjloop
- //sound t1catadjstop
- sound t1catlaunch
- sound t1caton
- sound t1catreset
- sound t1catwarmup
- sound texplo01
-
- 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
- int channel22 local
- sound clicksound
- surface targetfloor4 mask=0xfff linkid=11
- surface targetfloor5 mask=0xfff linkid=11
- surface fakeadd_sand1 linkid=10
- surface fakeadd_sand2 linkid=10
- surface fakerem_sand1 linkid=9
- surface fakerem_sand2 linkid=9
- surface fakeadjustswitch linkid=2
- sector badsector mask=0xfff linkid=8
- template explosion_tpl=+grenade_exp local
- vector pgwvector
- thing teledest
- surface CRMface linkid=2
- sound switchsound=swt00ltswch1.wav
- sound dave=mcht1ctrsetstp.wav
- surface SugarSpunSister nolink
- sound EdroidSetWAV=t1ed013.wav local
- sound RdroidSetWAV=t1gk021.wav local
- thing ghostcamera nolink
- cog dcheckcog
- end
-
-
- ## Code Section
- code
- startup:
- playeronminecart=0;
- print("startup");
- launchinprogress=0;
- player=getlocalplayerthing();
- playerweight=getthingmass(player)/2.2;
- attachthingtothing(minecart, catapult);
- setwallcel(CRMface, 1);
- callcrate=0;
- launchisdeadly=0;
- crateisinworld=0;
- movedyet=0;
- launch=0;
- // timecount=0;
- donotlaunch=0;
- Rdroidready=0;
- Edroidready=0;
- if (getdifficulty()==0) {
- md_power=10.0;
- call displayweight;
- smallcrateweight=50;
- largecrateweight=100;
- if ( (playerweight>=37.5)&&(playerweight<=75) ) fakeplayerweight=40;
- else if ( (playerweight>=75)&&(playerweight<=122.5) ) fakeplayerweight=66;
- else fakeplayerweight=playerweight;
- teleportthing(Edroid, teledest);
- teleportthing(Rdroid, teledest);
- }
- else if (getdifficulty()==1) {
- md_power=10.0;
- call displayweight;
- smallcrateweight=70;
- largecrateweight=150;
- if ( (playerweight>=25)&&(playerweight<=75) ) fakeplayerweight=33;
- else if ( (playerweight>=120)&&(playerweight<=175) ) fakeplayerweight=99;
- else if ( (playerweight>=75)&&(playerweight<=120) ) fakeplayerweight=66;
- else fakeplayerweight=playerweight;
- teleportthing(Edroid, teledest);
- teleportthing(Rdroid, teledest);
- }
- else if (getdifficulty()==2) {
- md_power=50.0;
- call displayweight;
- smallcrateweight=1000;
- largecrateweight=2000;
- if ( (playerweight>=900)&&(playerweight<=1100) ) fakeplayerweight=660;
- else if ( (playerweight>=1900)&&(playerweight<=2100) ) fakeplayerweight=1320;
- else fakeplayerweight=playerweight;
- }
- setwallcel(blink, 0);
- setpulse(1);
- setadjoinflags(SugarSpunSister, 2); #you can now walk thru this adjoin
- return;
-
- entered:
- if ( (getsourceref()==player)&&(getsenderref()==minecart) ) {
- print("the player is on the minecart");
- playeronminecart=1;
- }
- if (getdifficulty()==1) {
- print("here we are at diff 1");
- if (crateisinworld==0) return;
- if (getsenderid()==8) {
- if (getsourceref()==crate) {
- print("the crate entered something");
- if (getsenderref()==ipxsector) {
- print("you did it!!!!");
- sendmessage(goalscog, user3);
- // setthingvel(crate, pgwvector);
- }
- else {
- print("try again. entered the wrong sector");
- call destroycrate;
- }
- }
- }
- }
- else {
- if ( (getsenderid()==8)&&(getsourceref()==crate) ) {
- if (getsenderref()==ipxsector) {
- print("you did it!!!! entered correct sector");
- sendmessage(goalscog, user3);
- // setthingvel(crate, pgwvector);
- // call destroycrate;
- }
- else if (getsenderref()!=ipxsector) {
- print("try again. entered the wrong sector");
- call destroycrate;
- }
- }
- }
- return;
-
- exited:
- if ( (getsourceref()==player)&&(getsenderref()==minecart) ) {
- print("the player is OFF the minecart");
- playeronminecart=0;
- }
- return;
-
- touched:
- if (getsourceref()==crate) {
- print("the crate touched something");
- print("senderid is");
- printint(getsenderid());
- if (getsenderid()==11) {
- print("you did it!!!! touched correct floor");
- sendmessage(goalscog, user3);
- }
- else {
- print("try again. touched the wrong floor");
- call destroycrate;
- }
- }
- else if ( (getsourceref()==player)&&(getsenderref()==minecart)&&(launchisdeadly==1) ) {
- if (playeronminecart==0) damagething(player, 21672, 0x1, player);
- }
- return;
-
- pulse:
- curcel=getwallcel(blink);
- setwallcel(blink, 1-curcel);
- return;
-
- destroycrate:
- sendmessage(Edroidcog, user1);
- sendmessage(Rdroidcog, user1);
- sendmessage(callcratecog, user3);
- setpulse(1);
- print("bam!");
- exsector=getthingsector(crate);
- expos=getthingpos(crate);
- createthingatpos(explosion_tpl, exsector, expos, '0,0,0');
- playsoundpos(tExplo01, expos, 1, -1, 80, 0);
- destroything(crate);
- callcrate=0;
- crateisinworld=0;
- movedyet=0;
- // SetCurrentCamera(7);
- return;
-
- arrived:
- //if the mine cart has arrived at the end of the catapult, launch the crate
- printint(getsenderid());
- if (getsenderid()==3) {
- if (donotlaunch==1) {
- playsoundlocal(dave, 1, 0, 0);
- return;
- }
- playsoundlocal(t1catreset, 1, 0, 0);
- launchinprogress=0;
- launch=1;
- if ((getcurframe(catapult))==0) {
- print("see the steeple plan");
- skiptoframe(minecart, 0, 3);
- if (crateisinworld==1) {
- if (truecratetype==1) payloadweight=largecrateweight;
- else if (truecratetype==0) payloadweight=smallcrateweight;
- catvel=computecatapultvelocity(payloadweight, catapult0, catapult1, catpower);
- call launchcrate;
- }
- else if ((crateisinworld==0)&&((getsectorplayercount(curplayersector))==1)) {
- payloadweight=fakeplayerweight;
- catvel=computecatapultvelocity(payloadweight, catapult2, catapult3, catpower);
- call launchplayer;
- }
- else if ((crateisinworld==0)&&( (Edroidready==1)||(Rdroidready==1) )) {
- if (Edroidready==1) payloadweight=462;
- else if (Rdroidready==1) payloadweight=744;
- catvel=computecatapultvelocity(payloadweight, catapult4, catapult5, catpower);
- call launchdroid;
- }
- else call launchnothing;
- }
- else if ((getcurframe(catapult))==1) {
- print("the hills as old as time");
- skiptoframe(minecart, 2, 3);
- if (crateisinworld==1) {
- if (truecratetype==1) payloadweight=largecrateweight;
- else if (truecratetype==0) payloadweight=smallcrateweight;
- catvel=computecatapultvelocity(payloadweight, catapult0, catapult1, catpower);
- call launchcrate;
- }
- else if ((crateisinworld==0)&&((getsectorplayercount(curplayersector))==1)) {
- payloadweight=fakeplayerweight;
- catvel=computecatapultvelocity(payloadweight, catapult2, catapult3, catpower);
- call launchplayer;
- }
- else if ((crateisinworld==0)&&( (Edroidready==1)||(Rdroidready==1) )) {
- if (Edroidready==1) payloadweight=462;
- else if (Rdroidready==1) payloadweight=744;
- catvel=computecatapultvelocity(payloadweight, catapult4, catapult5, catpower);
- call launchdroid;
- }
- else call launchnothing;
- }
- else if ((getcurframe(catapult))==2) {
- print("soon to be put to the test");
- skiptoframe(minecart, 4, 3);
- if (crateisinworld==1) {
- if (truecratetype==1) payloadweight=largecrateweight;
- else if (truecratetype==0) payloadweight=smallcrateweight;
- catvel=computecatapultvelocity(payloadweight, catapult0, catapult1, catpower);
- call launchcrate;
- }
- else if ((crateisinworld==0)&&((getsectorplayercount(curplayersector))==1)) {
- payloadweight=fakeplayerweight;
- catvel=computecatapultvelocity(payloadweight, catapult2, catapult3, catpower);
- call launchplayer;
- }
- else if ((crateisinworld==0)&&( (Edroidready==1)||(Rdroidready==1) )) {
- if (Edroidready==1) payloadweight=462;
- else if (Rdroidready==1) payloadweight=744;
- catvel=computecatapultvelocity(payloadweight, catapult4, catapult5, catpower);
- call launchdroid;
- }
- else call launchnothing;
- }
- print("payloadweight is");
- printflex(payloadweight);
- setwallcel(add_sand, 0);
- setwallcel(rem_sand, 0);
- }
- 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);
- }
-
- return;
-
- launchnothing:
- print("launchnothing");
- launchisdeadly=0;
- donotlaunch=1;
- setwallcel(callsmallcrate,0);
- setwallcel(callbigcrate,0);
- 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:
- print("launch!");
- // launchchannel=playsoundthing(t1catlaunch, minecar, 1, 20, 40, 0);
- launchchannel=playsoundlocal(t1catlaunch, 1, 0, 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);
- launchisdeadly=1;
- setadjoinflags(SugarSpunSister, 2); #you can now walk thru this adjoin
- return;
-
- //create the true crate out of thin air
- user1:
- if (truecratetype==0){
- print("creating small crate");
- if (getdifficulty()==0) crate=creatething(Asmallcratetemplate, createcrateghost);
- else if (getdifficulty()==1) crate=creatething(Asmallcratetemplate, createcrateghost);
- else if (getdifficulty()==2) crate=creatething(Esmallcratetemplate, createcrateghost);
- }
- else if (truecratetype==1){
- print("creating large crate");
- if (getdifficulty()==0) crate=creatething(Blargecratetemplate, createcrateghost);
- else if (getdifficulty()==1) crate=creatething(Dlargecratetemplate, createcrateghost);
- else if (getdifficulty()==2) crate=creatething(Flargecratetemplate, createcrateghost);
- }
- settimerex(2, 3, 0, 0);
- return;
-
- user2:
- print("Edroid ready to go!");
- playsoundlocal(EdroidSetWAV, 1.0, 0.0, 0);
- Edroidready=1;
- setwallcel(callsmallcrate, 1);
- setwallcel(callbigcrate, 1);
- setwallcel(fakelever, 0);
- return;
-
- user3:
- print("Rdroid ready to go!");
- Rdroidready=1;
- playsoundlocal(RdroidSetWAV, 1.0, 0.0, 0);
- setwallcel(callsmallcrate, 1);
- setwallcel(callbigcrate, 1);
- setwallcel(fakelever, 0);
- return;
-
- user4:
- setwallcel(fakelever, 1);
- setwallcel(callbigcrate, 1);
- setwallcel(callsmallcrate, 1);
- return;
-
- activate:
- print("activate");
- //start the launch sequence to move the minecar.
- if ( (getsenderid()==1)||(getsenderref()==1)) {
- if (getwallcel(fakelever)==1) {
- print("can't launch it because you're already launching");
- return;
- }
- else {
- launchinprogress=1;
- donotlaunch=0;
- setwallcel(fakelever, 1);
- setwallcel(callsmallcrate, 1);
- setwallcel(callbigcrate, 1);
- setwallcel(add_sand, 1);
- setwallcel(rem_sand, 1);
- print("Starting launch sequence.");
- sendmessage(countdowncog, user0);
- settimerEX(19,1,0,0);
- warmupchannel=playsoundlocal(t1catwarmup, 1, 0, 0x1);
- playsoundlocal(t1caton, 1, 0, 0);
- if (Edroidready==1) {
- dwfreezeplayer();
- setcamerafocii(2, Edroid, ghostcamera);
- setcurrentcamera(2);
- if (getcurframe(ghostcamera)==1) movetoframe(ghostcamera, 0, 2);
- else movetoframe(ghostcamera, 1, 2);
- }
- else if (Rdroidready==1) {
- dwfreezeplayer();
- setcamerafocii(2, Rdroid, ghostcamera);
- setcurrentcamera(2);
- if (getcurframe(ghostcamera)==1) movetoframe(ghostcamera, 0, 2);
- else movetoframe(ghostcamera, 1, 2);
- }
- }
- }
- //move (rotate) the catapult
- else if (getsenderid()==2) {
- print("trying to rotate the platform");
- if ( (launchinprogress==1)||(getwallcel(fakelever)==1) ) {
- dwplaycammyspeech(16007, "t1ca007.wav", 12, 2);
- return;
- }
- else if (isthingmoving(catapult)!=0) {
- 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);
- }
- }
- //bring in a small crate
- else if (getsenderid()==4) {
- print("trying to bring in a small crate");
- if (callcrate==1) {
- print("the launcher is already loaded with a small crate");
- dwplaycammyspeech(16006, "t1ca006.wav", 20, 2);
- return;
- }
- else if (getwallcel(callsmallcrate)==1) return;
- else {
- playsoundpos(switchsound, getsurfacecenter(callsmallcrate), 1.0, -1, -1, 0);
- setwallcel(callsmallcrate, 1);
- sendmessage(callcratecog, user1);
- truecratetype=0;
- call nocrates;
- }
- }
- //bring in a large crate
- else if (getsenderid()==5) {
- print("trying to bring in a large crate");
- if (callcrate==1) {
- print("the launcher is already loaded with a large crate");
- dwplaycammyspeech(16006, "t1ca006.wav", 20, 2);
- return;
- }
- else if (getwallcel(callbigcrate)==1) return;
- else {
- playsoundpos(switchsound, getsurfacecenter(callbigcrate), 1.0, -1, -1, 0);
- setwallcel(callbigcrate, 1);
- sendmessage(callcratecog, user2);
- truecratetype=1;
- call nocrates;
- }
- }
- else if (GetSenderId() == 10) {
- if (getdifficulty()!=2) call jawasaysno;
- else call sand_add;
- // call sand_add;
- }
- else if (GetSenderId() == 9) {
- if (getdifficulty()!=2) call jawasaysno;
- else call sand_rem;
- // call sand_rem;
- }
- else print("nope. not here");
-
- return;
-
- jawasaysno:
- print("jawasaysno!");
- 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()==1) {
- setwallcel(fakelever, 0);
- dwunfreezeplayer();
- setcurrentcamera(7);
- }
- else if (getsenderid()==3) {
- print("it's stuck");
- setthingmass(crate, 0);
- clearadjoinflags(SugarSpunSister, 2); #you can NOT walk thru this adjoin
- }
- return;
-
- nocrates:
- print("no more crates!");
- setwallcel(callsmallcrate, 1);
- setwallcel(callbigcrate, 1);
- setpulse(0);
- launch=0;
- callcrate=1;
- crateisinworld=1;
- sendmessage(Edroidcog, user0);
- sendmessage(Rdroidcog, user0);
- return;
-
- launchdroid:
- launchisdeadly=0;
- donotlaunch=1;
- callcrate=0;
- print("launchdroid called");
- setwallcel(callsmallcrate,0);
- setwallcel(callbigcrate,0);
- if (Edroidready==1) {
- detachthing(Edroid);
- setthingvel(Edroid, catvel);
- setthingmass(Edroid, payloadweight);
- Edroidready=0;
- print("launching Edroid");
- if (getcurframe(catapult)==1) {
- if ( (md_power>=40)&&(md_power<=70) ) sendmessage(dcheckcog, user5);
- else if (md_power>70) sendmessage(dcheckcog, user6);
- else sendmessage(dcheckcog, user7);
- }
- else if (getcurframe(catapult)==2) {
- if ( (md_power>=30)&&(md_power<=60) ) sendmessage(dcheckcog, user5);
- else if (md_power>60) sendmessage(dcheckcog, user6);
- else sendmessage(dcheckcog, user7);
- }
- else if (getcurframe(catapult)==0) {
- if ( (md_power>=50)&&(md_power<=70) ) sendmessage(dcheckcog, user5);
- else if (mdpower>=80) sendmessage(dcheckcog, user6);
- else sendmessage(dcheckcog, user7);
- }
- }
- else if (Rdroidready==1) {
- detatchthing(Rdroid);
- setthingvel(Rdroid, catvel);
- setthingmass(Rdroid, payloadweight);
- Rdroidready=0;
- print("launching Rdroid");
- # sendmessage(dcheckcog, user5);
- if (getcurframe(catapult)==1) {
- if (md_power>=70)sendmessage(dcheckcog, user5);
- else sendmessage(dcheckcog, user7);
- }
- else if (getcurframe(catapult)==2) {
- if ( (md_power>=50)&&(md_power<=100) ) sendmessage(dcheckcog, user5);
- else sendmessage(dcheckcog, user7);
- }
- else sendmessage(dcheckcog, user7);
- }
- return;
-
- launchcrate:
- print("launchcrate called");
- // call movethecameraout;
- if (truecratetype==0) setthingmass(crate, smallcrateweight);
- else if (truecratetype==1) setthingmass(crate, largecrateweight);
- print("crate mass is");
- printint(getthingmass(crate));
- donotlaunch=1;
- callcrate=0;
- detachthing(crate);
- setthingvel(crate, catvel);
- setwallcel(callsmallcrate,0);
- setwallcel(callbigcrate,0);
- launchisdeadly=0;
- return;
-
- launchplayer:
- // call movethecameraout;
- print("launchingplayer");
- print("playermass is ");
- printint(fakeplayerweight);
- donotlaunch=1;
- detachthing(player);
- setthingvel(player, catvel);
- setwallcel(callsmallcrate,0);
- setwallcel(callbigcrate,0);
- launchisdeadly=0;
- return;
-
- movethecameraout:
- setcamerafocus(0, camera2);
- setcurrentcamera(0);
- 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);
-
- if (getdifficulty()==2) catpower=(md_power/100)*15000;
- else if (getdifficulty()==1) catpower=(md_power/100)*7250;
- else catpower=(md_power/100)*6150;
- return;
-
-
-
-
-
- end
-
-
-
-
-