// ----------------------------------------------------------------------------------- // 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); }
// ----------------------------------------------------------------------------------- // 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); }