Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Move Bombs or BLocks on Conveyors
- //Global conditions to move all of any object type.
- const int CONVEYORS_MOVE_FFCS = 0;
- const int CONVEYORS_MOVE_ITEMS = 0; //ZC already does, but you could use this to chane their speed.
- const int CONVEYORS_MOVE_LWEAPONS = 0;
- const int CONVEYORS_MOVE_EWEAPONS = 0;
- const int CONVEYORS_MOVE_NPCS = 0;
- const int CONVEYORS_MOVE_BOMBS = 1;
- const int CONVEYORS_MOVE_WALKING_NPCS = 0;
- const int CONVEYORS_USE_COLLISION = 1; //Se tto 0 to use coordinates, instead of collision.
- bool IsOnConveyor(int cmb){
- return ( ComboT[cmb] == CT_CVLEFT || ComboT[cmb] == CT_CVRIGHT || ComboT[cmb] == CT_CVUP ||ComboT[cmb] == CT_CVDOWN );
- }
- const int WEAP_CONVEY_TIMER = 1; //Misc Index
- const int CONVEY_TIME = 20; //How many frames to wait before moving one pixel on a conveyor, +1.
- //! The movement occurs at '1', not '0'.
- void MarkObjectConveyor(lweapon l) { if ( !l->Misc[WEAP_CONVEY_TIMER] ) l->Misc[WEAP_CONVEY_TIMER] = CONVEY_TIME; }
- void MoveObjectConveyor(lweapon l) {
- if ( l->Misc[WEAP_CONVEY_TIMER] == 1 ) {
- //Move it
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVLEFT ) l->X--;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVRIGHT ) l->X++;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVUP ) l->Y--;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVDOWN ) l->Y++;
- }
- if ( l->Misc[WEAP_CONVEY_TIMER] > 1 ) l->Misc[WEAP_CONVEY_TIMER]--;
- if ( !l->Misc[WEAP_CONVEY_TIMER] && IsOnConveyor(l) ) MarkObjectConveyor(l);
- }
- void MarkObjectConveyor(eweapon l) { if ( !l->Misc[WEAP_CONVEY_TIMER] ) l->Misc[WEAP_CONVEY_TIMER] = CONVEY_TIME; }
- void MoveObjectConveyor(eweapon l) {
- if ( l->Misc[WEAP_CONVEY_TIMER] == 1 ) {
- //Move it
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVLEFT ) l->X--;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVRIGHT ) l->X++;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVUP ) l->Y--;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVDOWN ) l->Y++;
- }
- if ( l->Misc[WEAP_CONVEY_TIMER] > 1 ) l->Misc[WEAP_CONVEY_TIMER]--;
- if ( !l->Misc[WEAP_CONVEY_TIMER] && IsOnConveyor(l) ) MarkObjectConveyor(l);
- }
- void MarkObjectConveyor(item l) { if ( !l->Misc[WEAP_CONVEY_TIMER] ) l->Misc[WEAP_CONVEY_TIMER] = CONVEY_TIME; }
- void MoveObjectConveyor(item l) {
- if ( l->Misc[WEAP_CONVEY_TIMER] == 1 ) {
- //Move it
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVLEFT ) l->X--;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVRIGHT ) l->X++;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVUP ) l->Y--;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVDOWN ) l->Y++;
- }
- if ( l->Misc[WEAP_CONVEY_TIMER] > 1 ) l->Misc[WEAP_CONVEY_TIMER]--;
- if ( !l->Misc[WEAP_CONVEY_TIMER] && IsOnConveyor(l) ) MarkObjectConveyor(l);
- }
- void MarkObjectConveyor(ffc l) { if ( !l->Misc[WEAP_CONVEY_TIMER] ) l->Misc[WEAP_CONVEY_TIMER] = CONVEY_TIME; }
- void MoveObjectConveyor(ffc l) {
- if ( l->Misc[WEAP_CONVEY_TIMER] == 1 ) {
- //Move it
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVLEFT ) l->X--;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVRIGHT ) l->X++;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVUP ) l->Y--;
- if ( ComboT[ComboAt(l->X, l->Y)] == CT_CVDOWN ) l->Y++;
- }
- if ( l->Misc[WEAP_CONVEY_TIMER] > 1 ) l->Misc[WEAP_CONVEY_TIMER]--;
- if ( !l->Misc[WEAP_CONVEY_TIMER] && IsOnConveyor(l) ) MarkObjectConveyor(l);
- }
- void MoveObjectConveyorCollision(ffc l, int cmb) {
- if ( l->Misc[WEAP_CONVEY_TIMER] == 1 ) {
- //Move it
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVLEFT ) l->X--;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVRIGHT ) l->X++;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVUP ) l->Y--;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVDOWN ) l->Y++;
- }
- if ( l->Misc[WEAP_CONVEY_TIMER] > 1 ) l->Misc[WEAP_CONVEY_TIMER]--;
- if ( !l->Misc[WEAP_CONVEY_TIMER] && IsOnConveyor(l) ) MarkObjectConveyor(l);
- }
- void MoveObjectConveyorCollision(item l, int cmb) {
- if ( l->Misc[WEAP_CONVEY_TIMER] == 1 ) {
- //Move it
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVLEFT ) l->X--;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVRIGHT ) l->X++;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVUP ) l->Y--;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVDOWN ) l->Y++;
- }
- if ( l->Misc[WEAP_CONVEY_TIMER] > 1 ) l->Misc[WEAP_CONVEY_TIMER]--;
- if ( !l->Misc[WEAP_CONVEY_TIMER] && IsOnConveyor(l) ) MarkObjectConveyor(l);
- }
- void MoveObjectConveyorCollision(lweapon l, int cmb) {
- if ( l->Misc[WEAP_CONVEY_TIMER] == 1 ) {
- //Move it
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVLEFT ) l->X--;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVRIGHT ) l->X++;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVUP ) l->Y--;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVDOWN ) l->Y++;
- }
- if ( l->Misc[WEAP_CONVEY_TIMER] > 1 ) l->Misc[WEAP_CONVEY_TIMER]--;
- if ( !l->Misc[WEAP_CONVEY_TIMER] && IsOnConveyor(l) ) MarkObjectConveyor(l);
- }
- void MoveObjectConveyorCollision(eweapon l, int cmb) {
- if ( l->Misc[WEAP_CONVEY_TIMER] == 1 ) {
- //Move it
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVLEFT ) l->X--;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVRIGHT ) l->X++;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVUP ) l->Y--;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVDOWN ) l->Y++;
- }
- if ( l->Misc[WEAP_CONVEY_TIMER] > 1 ) l->Misc[WEAP_CONVEY_TIMER]--;
- if ( !l->Misc[WEAP_CONVEY_TIMER] && IsOnConveyor(l) ) MarkObjectConveyor(l);
- }
- void MoveObjectConveyorCollision(npc l, int cmb) {
- if ( l->Misc[WEAP_CONVEY_TIMER] == 1 ) {
- //Move it
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVLEFT ) l->X--;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVRIGHT ) l->X++;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVUP ) l->Y--;
- if ( Collision(l,cmb) && ComboT[cmb] == CT_CVDOWN ) l->Y++;
- }
- if ( l->Misc[WEAP_CONVEY_TIMER] > 1 ) l->Misc[WEAP_CONVEY_TIMER]--;
- if ( !l->Misc[WEAP_CONVEY_TIMER] && IsOnConveyor(l) ) MarkObjectConveyor(l);
- }
- void ConveyorObjects(){
- lweapon l; item i; eweapon e; npc n; ffc f; int q;
- if ( CONVEYORS_MOVE_BOMBS ) {
- for ( q = Screen->NumLWeapons(); q > 0; q-- ) {
- l = Screen->LoadLWeapon(q);
- if ( l->ID == LW_BOMB || l->ID == LW_SBOMB ) MoveObjectConveyor(l);
- }
- }
- //Add more definitions.
- //Somaria Blocks
- //Walking NPCs? -- How should we handle ghosted NPCs?
- }
- void ConveyorObjectsCollision(){
- lweapon l; item i; eweapon e; npc n; ffc f; int q; int cmb;
- if ( CONVEYORS_MOVE_BOMBS ) {
- for ( cmb = 0; cmb < 176; cmb++ ) {
- for ( q = Screen->NumLWeapons(); q > 0; q-- ) {
- l = Screen->LoadLWeapon(q);
- if ( l->ID == LW_BOMB || l->ID == LW_SBOMB ) MoveObjectConveyorCollision(l,cmb);
- }
- }
- }
- //Add more definitions.
- //Somaria Blocks
- //Walking NPCs? -- How should we handle ghosted NPCs?
- }
- global script conveyor_test{
- void run(){
- while(true){
- if ( !CONVEYORS_USE_COLLISION ) ConveyorObjects();
- if ( CONVEYORS_USE_COLLISION ) ConveyorObjectsCollision();
- Waitdraw();
- Waitframe();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement