home *** CD-ROM | disk | FTP | other *** search
- #standard type crate generation cog.
- symbols
- message user0
- message user1
- message user2
- message user3
- messsge user4
- message startup
- message timer
- message arrived
- message crossed
- message entered
-
- thing cargoghost0 linkid=3
- thing magnettram linkid=4
- thing magnettram2 linkid=5
- thing beam1mid
- thing beam2mid
-
-
- template tCrate0
- template tCrate1
-
- cog mastercog
- cog beamcog
- cog beamcog2
-
- int beamnum local
- int beamnum2 local
- int crateyes=0 local
- int newcrate local
-
-
- sector destructionsector nolink
- sector ds2 nolink
- sector ds3 nolink
- sector ds4 nolink
-
- surface tram1block1 nolink
- surface tram1block2 nolink
- surface tram1block3 nolink
- surface tram1block4 nolink
- surface tram2block1 nolink
- surface tram2block2 nolink
- surface tram2block3 nolink
- surface tram2block4 nolink
-
- surface triggeradjoin mask=0x484 linkid=0
- surface triggeradjoin2 mask=0x484 linkid=1
-
- vector cratepos local
- vector trampos local
-
- flex cratemod local
- sound playerattsound=nrg00mgntattch.wav
- sound crateattsound=crat1drpcrt.wav
- end
-
- ## Code Section
- code
- startup:
- movetoframe(magnettram, 3, 15);
- movetoframe(magnettram2, 3, 15);
- sendmessage(beamcog, user1);
- sendmessage(beamcog2, user1);
- crateyes=0;
- player=getlocalplayerthing();
- return;
-
- user0:
- if (crateyes==0) {
- crateyes=1;
- cratetype=tcrate0;
- newcrate=CreateThing(cratetype, cargoghost0);
- CaptureThing(newcrate);
- settimer(2);
- }
- else return;
- return;
-
-
- //check if crate is in one of the destruction sectors
- timer:
- cursector=getThingSector(newcrate);
- if ((cursector==destructionsector)||(cursector==ds2)||(cursector==ds3)||(cursector==ds4)) {
- destroything(newcrate);
- settimer(0);
- crateyes=0;
- }
- else {
- settimer(2);
- }
- return;
-
- crossed:
- print("tread I adjoin crossed");
- if (getsenderid()==0) {
- hangoffset=('0,0,0');
- achthing=getsourceref();
- call movetram;
- }
- else if (getsenderid()==1) {
- hangoffset2=('0,0,0');
- achthing2=getsourceref();
- call movetram2;
- }
- return;
-
- user2:
- setajnflgs1:
- setadjoinflags(tram1block1, 2);
- setadjoinflags(tram1block2, 2);
- setadjoinflags(tram1block3, 2);
- setadjoinflags(tram1block4, 2);
- return;
-
- user4:
- setajnflgs2:
- setadjoinflags(tram2block1, 2);
- setadjoinflags(tram2block2, 2);
- setadjoinflags(tram2block3, 2);
- setadjoinflags(tram2block4, 2);
- return;
-
- user1:
- clrajnflgs1:
- clearadjoinflags(tram1block1, 2);
- clearadjoinflags(tram1block2, 2);
- clearadjoinflags(tram1block3, 2);
- clearadjoinflags(tram1block4, 2);
- return;
-
- user3:
- clrajnflgs2:
- clearadjoinflags(tram2block1, 2);
- clearadjoinflags(tram2block2, 2);
- clearadjoinflags(tram2block3, 2);
- clearadjoinflags(tram2block4, 2);
- return;
-
-
- movetram:
- //tell master cog to turn off sectorthrust
- sendmessage(mastercog, user0);
- if (achthing==player) {
- playsoundthing(playerattsound, achthing, 1.0, -1, -1, 0);
- dwdisablejump();
- }
- else playsoundthing(crateattsound, achthing, 1.0, -1, -1, 0);
- call setajnflgs1;
- totalradius = GetThingRadius(achthing) + GetThingRadius(magnettram);
- VectorSet(hangoffset, 0, 0, -totalradius);
- // hangoffset = VectorAdd(hangoffset, GetThingInsertOffset(magnettram));
- hangoffset = VectorSub(hangoffset, GetThingInsertOffset(achthing));
- SetThingPos(achthing, VectorAdd(GetThingPos(magnettram), hangoffset));
- AttachThingToThingEx(achthing, magnettram, 8);
- movetoframe(magnettram, 1, 15);
- return;
-
- movetram2:
- //tell master cog to turn off sectorthrust
- print("clearing 2");
- sendmessage(mastercog, user2);
- if (achthing==player) {
- playsoundthing(playerattsound, achthing, 1.0, -1, -1, 0);
- dwdisablejump();
- }
- else playsoundthing(crateattsound, achthing, 1.0, -1, -1, 0);
- call setajnflgs2;
- totalradius = GetThingRadius(achthing2) + GetThingRadius(magnettram2);
- VectorSet(hangoffset, 0, 0, -totalradius);
- // hangoffset = VectorAdd(hangoffset, GetThingInsertOffset(magnettram));
- hangoffset2 = VectorSub(hangoffset2, GetThingInsertOffset(achthing2));
- SetThingPos(achthing2, VectorAdd(GetThingPos(magnettram2), hangoffset2));
- AttachThingToThingEx(achthing2, magnettram2, 8);
- movetoframe(magnettram2, 1, 15);
- return;
-
-
- arrived:
- if (getsenderid()==4) {
- //when the tram has arrived, drop the achthing and reset to stop 0
- if ((getcurframe(magnettram))==2) {
- movetoframe(magnettram,3,15);
- detachthing(achthing);
- if (achthing==player) dwenablejump();
- setthingvel(achthing, '0,0,0.5');
- }
- else if ((getcurframe(magnettram))==1) {
- removelaser(beamnum);
- // sendmessage(beamcog, user0);
- movetoframe(magnettram, 2, 15);
- }
- else if ((getcurframe(magnettram))==3) {
- beamnum=(addbeam(beam1mid, magnettram, 147, .02));
- // sendmessage(beamcog, user1);
- skiptoframe(magnettram,0, 15);
- }
- else if ((getcurframe(magnettram))==0) {
- //tell mastercog to turn on sectorthrust
- sendmessage(mastercog, user1);
- call clrajnflgs1;
- // clearadjoinflags(tram1block1, 2);
- // clearadjoinflags(tram1block2, 2);
- // clearadjoinflags(tram1block3, 2);
- // clearadjoinflags(tram1block4, 2);
- }
- }
- else if (getsenderid()==5) {
- if ((getcurframe(magnettram2))==2) {
- movetoframe(magnettram2,3,15);
- if (achthing2==player) dwenablejump();
- detachthing(achthing2);
- setthingvel(achthing2, '0,0,0.5');
- }
- else if ((getcurframe(magnettram2))==1) {
- removelaser(beamnum2);
- movetoframe(magnettram2, 2, 15);
- // sendmessage(beamcog2, user0);
- }
- else if ((getcurframe(magnettram2))==3) {
- skiptoframe(magnettram2,0, 15);
- // sendmessage(beamcog2, user1);
- beamnum2=(addbeam(beam2mid, magnettram2, 147, .02));
- }
- else if ((getcurframe(magnettram2))==0) {
- //tell mastercog to turn on sectorthrust
- sendmessage(mastercog, user3);
- call clrajnflgs2;
- // clearadjoinflags(tram2block1, 2);
- // clearadjoinflags(tram2block2, 2);
- // clearadjoinflags(tram2block3, 2);
- // clearadjoinflags(tram2block4, 2);
-
- }
- }
- return;
-
-
- end
-
-
-
-
-
-
-
-
-
-
-