Exemplo n.º 1
0
 public override void FixedUpdate()
 {
     base.FixedUpdate();
     if (base.fixedAge >= duration && base.isAuthority)
     {
         FireMegaLaser nextState = new FireMegaLaser();
         outer.SetNextState(nextState);
     }
 }
        private static void Initialize()
        {
            if (initialized)
            {
                return;
            }
            initialized = true;
            FireMegaLaser fmlState = new FireMegaLaser();

            hitEffectPrefab       = fmlState.hitEffectPrefab;
            laserPrefab           = fmlState.laserPrefab;
            playAttackSoundString = FireMegaLaser.playAttackSoundString;
            playLoopSoundString   = FireMegaLaser.playLoopSoundString;
            stopLoopSoundString   = FireMegaLaser.stopLoopSoundString;
            damageCoefficient     = LaserDrone1.instance.damageCoefficient;
            maxSpread             = minSpread = force = 0f;
            fireFrequency         = 8f;
            maxDistance           = 180f;
            minimumDuration       = LaserDrone1.instance.laserDuration;
            maximumDuration       = minimumDuration;
            lockOnAngle           = .5f;
            //lockOnAngle = 90f;
            procCoefficientPerTick = .25f;
        }
Exemplo n.º 3
0
    public override void OnEnter()
    {
        //Gather original values
        FireMegaLaser titanLaser = new FireMegaLaser();

        effectPrefab          = titanLaser.effectPrefab;
        laserPrefab           = titanLaser.laserPrefab;
        hitEffectPrefab       = titanLaser.hitEffectPrefab;
        playAttackSoundString = FireMegaLaser.playAttackSoundString;
        playLoopSoundString   = FireMegaLaser.playLoopSoundString;
        stopLoopSoundString   = FireMegaLaser.stopLoopSoundString;
        damageCoefficient     = FireMegaLaser.damageCoefficient;
        force                  = FireMegaLaser.force;
        minSpread              = FireMegaLaser.minSpread;
        maxSpread              = FireMegaLaser.maxSpread;
        bulletCount            = FireMegaLaser.bulletCount;
        fireFrequency          = FireMegaLaser.fireFrequency;
        maxDistance            = FireMegaLaser.maxDistance;
        minimumDuration        = FireMegaLaser.minimumDuration;
        maximumDuration        = FireMegaLaser.maximumDuration;
        lockOnAngle            = FireMegaLaser.lockOnAngle;
        procCoefficientPerTick = FireMegaLaser.procCoefficientPerTick;

        base.OnEnter();
        base.characterBody.SetAimTimer(maximumDuration);
        Util.PlaySound(playAttackSoundString, base.gameObject);
        Util.PlaySound(playLoopSoundString, base.gameObject);
        //Left Hand
        leftEnemyFinder                   = new BullseyeSearch();
        leftEnemyFinder.viewer            = base.characterBody;
        leftEnemyFinder.maxDistanceFilter = maxDistance;
        leftEnemyFinder.maxAngleFilter    = lockOnAngle;
        leftEnemyFinder.searchOrigin      = leftAimRay.origin;
        leftEnemyFinder.searchDirection   = leftAimRay.direction;
        leftEnemyFinder.filterByLoS       = false;
        leftEnemyFinder.sortMode          = BullseyeSearch.SortMode.Angle;
        leftEnemyFinder.teamMaskFilter    = TeamMask.allButNeutral;
        //Right Hand
        rightEnemyFinder                   = new BullseyeSearch();
        rightEnemyFinder.viewer            = base.characterBody;
        rightEnemyFinder.maxDistanceFilter = maxDistance;
        rightEnemyFinder.maxAngleFilter    = lockOnAngle;
        rightEnemyFinder.searchOrigin      = rightAimRay.origin;
        rightEnemyFinder.searchDirection   = rightAimRay.direction;
        rightEnemyFinder.filterByLoS       = false;
        rightEnemyFinder.sortMode          = BullseyeSearch.SortMode.Angle;
        rightEnemyFinder.teamMaskFilter    = TeamMask.allButNeutral;
        if ((bool)base.teamComponent)
        {
            leftEnemyFinder.teamMaskFilter.RemoveTeam(base.teamComponent.teamIndex);
            rightEnemyFinder.teamMaskFilter.RemoveTeam(base.teamComponent.teamIndex);
        }
        leftAimRay     = GetAimRay();
        rightAimRay    = GetAimRay();
        modelTransform = GetModelTransform();
        if ((bool)modelTransform)
        {
            ChildLocator leftComponent  = modelTransform.GetComponent <ChildLocator>();
            ChildLocator rightComponent = modelTransform.GetComponent <ChildLocator>();
            if ((bool)leftComponent && (bool)rightComponent)
            {
                leftMuzzleTransform  = leftComponent.FindChild("MuzzleLeft");
                rightMuzzleTransform = rightComponent.FindChild("MuzzleRight");
                //Left
                if ((bool)leftMuzzleTransform && (bool)laserPrefab)
                {
                    leftLaserEffect = Object.Instantiate(laserPrefab, leftMuzzleTransform.position, leftMuzzleTransform.rotation);
                    leftLaserEffect.transform.parent = leftMuzzleTransform;
                    leftLaserChildLocator            = leftLaserEffect.GetComponent <ChildLocator>();
                    leftLaserEffectEnd = leftLaserChildLocator.FindChild("LaserEnd");
                }
                //right
                if ((bool)rightMuzzleTransform && (bool)laserPrefab)
                {
                    rightLaserEffect = Object.Instantiate(laserPrefab, rightMuzzleTransform.position, rightMuzzleTransform.rotation);
                    rightLaserEffect.transform.parent = rightMuzzleTransform;
                    rightLaserChildLocator            = rightLaserEffect.GetComponent <ChildLocator>();
                    rightLaserEffectEnd = rightLaserChildLocator.FindChild("LaserEnd");
                }
            }
        }
        UpdateLockOn();
    }