コード例 #1
0
    // -----------------------------------------------------------------------------------
    // SpawnProjectile
    // -----------------------------------------------------------------------------------
#if _iMMOPROJECTILES
    protected void SpawnProjectile()
    {
        GameObject go = Instantiate(projectile.gameObject, _caster.effectMount.position, _caster.effectMount.rotation);

        UCE_Projectile effect = go.GetComponent <UCE_Projectile>();

        effect.speed = projectileSpeed.Get(_skillLevel);

        effect.target        = _caster.target;
        effect.caster        = _caster;
        effect.data.speed    = projectileSpeed.Get(_skillLevel);
        effect.data.distance = castRange.Get(_skillLevel);

        effect.data.skillLevel      = _skillLevel;
        effect.data.damage          = damage.Get(_skillLevel);
        effect.data.addCasterDamage = addCasterDamage;

        effect.data.stunChance      = stunChance.Get(_skillLevel);
        effect.data.stunAddAccuracy = stunAddAccuracy;
        effect.data.minStunTime     = minStunTime.Get(_skillLevel);
        effect.data.maxStunTime     = maxStunTime.Get(_skillLevel);

        effect.data.sidekick            = false;
        effect.data.sidekickSpawnChance = sidekickSpawnChance.Get(_skillLevel);
        effect.data.sidekickAmount      = sidekickAmount.Get(_skillLevel);
        effect.data.sidekickSpawnDelay  = sidekickSpawnDelay;
        effect.data.sidekickSpreadAngle = sidekickSpreadAngle;

        effect.data.recoilCaster      = recoilCaster.Get(_skillLevel);
        effect.data.minRecoilTarget   = minRecoilTarget.Get(_skillLevel);
        effect.data.maxRecoilTarget   = maxRecoilTarget.Get(_skillLevel);
        effect.data.recoilChance      = recoilChance.Get(_skillLevel);
        effect.data.recoilAddAccuracy = recoilAddAccuracy;

        effect.data.cooldownChance      = cooldownChance.Get(_skillLevel);
        effect.data.cooldownDuration    = cooldownDuration.Get(_skillLevel);
        effect.data.cooldownAddAccuracy = cooldownAddAccuracy;

        if (applyBuff.Length > 0 && applyBuff.Length >= _skillLevel - 1)
        {
            effect.data.applyBuff       = applyBuff[_skillLevel - 1];
            effect.data.buffLevel       = buffLevel.Get(_skillLevel);
            effect.data.buffChance      = buffChance.Get(_skillLevel);
            effect.data.buffAddAccuracy = buffAddAccuracy;
        }

        effect.data.impactEffect                 = impactEffect;
        effect.data.impactRadius                 = impactRadius.Get(_skillLevel);
        effect.data.triggerAggroChance           = triggerAggroChance.Get(_skillLevel);
        effect.data.visualEffectOnMainTargetOnly = visualEffectOnMainTargetOnly;
        effect.data.reverseTargeting             = reverseTargeting;
        effect.data.notAffectSelf                = notAffectSelf;
        effect.data.notAffectOwnParty            = notAffectOwnParty;
        effect.data.notAffectOwnGuild            = notAffectOwnGuild;
        effect.data.notAffectOwnRealm            = notAffectOwnRealm;
        effect.data.notAffectPlayers             = notAffectPlayers;
        effect.data.notAffectMonsters            = notAffectMonsters;
        effect.data.notAffectPets                = notAffectPets;

        effect.data.removeRandomBuff  = removeRandomBuff.Get(_skillLevel);
        effect.data.removeChance      = removeChance.Get(_skillLevel);
        effect.data.removeAddAccuracy = removeAddAccuracy;

        effect.data.createOnTarget = createOnTarget;
        effect.data.createChance   = createChance.Get(_skillLevel);

        effect.data.sidekicksDontStun         = sidekicksDontStun;
        effect.data.sidekicksDontBuff         = sidekicksDontBuff;
        effect.data.sidekicksDontRecoil       = sidekicksDontRecoil;
        effect.data.sidekicksDontDebuff       = sidekicksDontDebuff;
        effect.data.sidekicksDontAOE          = sidekicksDontAOE;
        effect.data.sidekicksDontCreateObject = sidekicksDontCreateObject;

        effect.Init();

        NetworkServer.Spawn(go);
    }
コード例 #2
0
    // -----------------------------------------------------------------------------------
    // SpawnSidekick
    // -----------------------------------------------------------------------------------
    protected void SpawnSidekick()
    {
        GameObject go = Instantiate(this.gameObject, caster.skills.effectMount.position, transform.rotation);

        UCE_Projectile effect = go.GetComponent <UCE_Projectile>();

        effect.speed = data.speed;

        effect.target        = target;
        effect.caster        = caster;
        effect.data.speed    = data.speed;
        effect.data.distance = data.distance;

        effect.data.skillLevel      = data.skillLevel;
        effect.data.damage          = data.damage;
        effect.data.addCasterDamage = data.addCasterDamage;

        if (!data.sidekicksDontStun)
        {
            effect.data.stunChance      = data.stunChance;
            effect.data.stunAddAccuracy = data.stunAddAccuracy;
            effect.data.minStunTime     = data.minStunTime;
            effect.data.maxStunTime     = data.maxStunTime;
        }

        effect.data.sidekickSpawnChance = data.sidekickSpawnChance;
        effect.data.sidekickAmount      = 0;
        effect.data.sidekickSpawnDelay  = 0;
        effect.data.sidekickSpreadAngle = data.sidekickSpreadAngle;
        effect.data.sidekick            = true;

        effect.data.cooldownChance      = data.cooldownChance;
        effect.data.cooldownDuration    = data.cooldownDuration;
        effect.data.cooldownAddAccuracy = data.cooldownAddAccuracy;

        if (data.applyBuff != null && data.buffLevel > 0 && !data.sidekicksDontBuff)
        {
            effect.data.applyBuff       = data.applyBuff;
            effect.data.buffLevel       = data.buffLevel;
            effect.data.buffChance      = data.buffChance;
            effect.data.buffAddAccuracy = data.buffAddAccuracy;
        }

        if (!data.sidekicksDontAOE)
        {
            effect.data.impactEffect                 = data.impactEffect;
            effect.data.impactRadius                 = data.impactRadius;
            effect.data.triggerAggroChance           = data.triggerAggroChance;
            effect.data.visualEffectOnMainTargetOnly = data.visualEffectOnMainTargetOnly;
            effect.data.reverseTargeting             = data.reverseTargeting;
            effect.data.notAffectSelf                = data.notAffectSelf;
            effect.data.notAffectOwnParty            = data.notAffectOwnParty;
            effect.data.notAffectOwnGuild            = data.notAffectOwnGuild;
            effect.data.notAffectOwnRealm            = data.notAffectOwnRealm;
            effect.data.notAffectPlayers             = data.notAffectPlayers;
            effect.data.notAffectMonsters            = data.notAffectMonsters;
            effect.data.notAffectPets                = data.notAffectPets;
        }

        if (!data.sidekicksDontDebuff)
        {
            effect.data.removeRandomBuff  = data.removeRandomBuff;
            effect.data.removeChance      = data.removeChance;
            effect.data.removeAddAccuracy = data.removeAddAccuracy;
        }

        if (!data.sidekicksDontCreateObject)
        {
            effect.data.createOnTarget = data.createOnTarget;
            effect.data.createChance   = data.createChance;
        }

        //effect.Init();
        RotateProjectile();

        NetworkServer.Spawn(go);
    }