Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///////////////////////
- //// THE DALEKS /////
- ///////////////////////
- npc script Dalek
- {
- const int LASER_LAYER = 3;
- const int LASER_COLOUR = 0x04;
- const int LASER_OPACITY = 128;
- void run (int angleOfVision, int shotStep, int shotCooldownTime, int weaponType, int shotSFX)
- {
- //Get attributes
- angleOfVision = this->InitD[0];
- shotStep = this->InitD[1]];
- shotCooldownTime = this->InitD[2];
- weaponType = ghost->InitD[3];
- shotSFX = ghost->InitD[4];
- int shotCooldown = shotCooldownTime;
- int turnTimer = this->Rate * 10;
- int laserStartX;
- int laserStartY;
- eweapon beam;
- while(this->isValid())
- {
- //Shooting
- if ( shotCooldown > 0 )
- --shotCooldown;
- //Only one beam at a time
- else if ( !beam->isValid() )
- {
- //Check angle to Link against angle of vision
- int angleToLink = Angle(CenterX(this), CenterY(this), CenterLinkX(), CenterLinkY());
- int facingAngle = Dir4Angle(this->Dir);
- int difference = Abs(angleToLink - facingAngle);
- //If Link is within this angle
- if ( difference <= angleOfVision/2 )
- {
- shotCooldown = shotCooldownTime; //can reduce down by reading InitD again -Z
- laserStartX = CenterX(this);
- laserStartY = CenterY(this);
- beam = Screen->CreateEWeapon(weaponType);
- beam->X = laserStartX;
- beam->Y = laserStartY;
- beam->Angular = true;
- beam->Angle = ArcTan(Link->X-beam->X, Link->Y-beam->X);
- beam->Step = shotStep;
- beam->Damage = this->WeaponDamage;
- Audio->PlaySound(shotSFX);
- beam->DrawXOffset = 999; //Draw off-screen
- }
- }
- //Draw laser beam
- if ( beam->isValid() )
- {
- Screen->Line(LASER_LAYER, laserStartX, laserStartY, CenterX(beam), CenterY(beam), LASER_COLOUR, 1, 0, 0, 0, LASER_OPACITY);
- }
- Waitframe();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement