public override void Apply(Entity caster, int skillLevel) { // consume ammo if needed ConsumeRequiredWeaponsAmmo(caster); // spawn the skill effect. this can be used for anything ranging from // blood splatter to arrows to chain lightning. // -> we need to call an RPC anyway, it doesn't make much of a diff- // erence if we use NetworkServer.Spawn for everything. // -> we try to spawn it at the weapon's projectile mount if (projectile != null) { GameObject go = Instantiate(projectile.gameObject, caster.skills.effectMount.position, caster.skills.effectMount.rotation); ProjectileSkillEffect effect = go.GetComponent <ProjectileSkillEffect>(); effect.target = caster.target; effect.caster = caster; effect.damage = damage.Get(skillLevel); effect.stunChance = stunChance.Get(skillLevel); effect.stunTime = stunTime.Get(skillLevel); NetworkServer.Spawn(go); } else { Debug.LogWarning(name + ": missing projectile"); } }
// ----------------------------------------------------------------------------------- // Apply // ----------------------------------------------------------------------------------- public override void Apply(Entity caster, int skillLevel) { if (projectile != null) { // ---- Deduct Ammunition Player player = caster.GetComponent <Player>(); if (player) { if (player.inventory.Count(new Item(requiredAmmo)) >= ammoAmount) { player.inventory.Remove(new Item(requiredAmmo), ammoAmount); } } GameObject go = Instantiate(projectile.gameObject, caster.skills.effectMount.position, caster.skills.effectMount.rotation); ProjectileSkillEffect effect = go.GetComponent <ProjectileSkillEffect>(); effect.target = caster.target; effect.caster = caster; effect.damage = damage.Get(skillLevel); NetworkServer.Spawn(go); } else { Debug.LogWarning(name + ": missing projectile"); } }
public override void Apply(Entity caster, int skillLevel) { //消耗弹药 ConsumeRequiredWeaponsAmmo(caster); //显示技能效果 if (projectile != null) { GameObject go = Instantiate(projectile.gameObject, caster.EffectMount.position, caster.EffectMount.rotation); ProjectileSkillEffect effect = go.GetComponent <ProjectileSkillEffect>(); effect.target = caster.Target; effect.caster = caster; effect.damage = damage.Get(skillLevel); effect.stunChance = stunChance.Get(skillLevel); effect.stunTime = stunTime.Get(skillLevel); NetworkServer.Spawn(go); } else { Debug.LogWarning(name + ": missing projectile"); } }