public void TriggerSkillEvents(SkillEventTrigger trigger)
	{
		for (int i = 0; i < skillVFXs.Count; i++) {
			if(!isOwner && !skillVFXs[i].isLocal)
			{
				continue;
			}
			if(skillVFXs[i].activationEvent == trigger)
				skillVFXs[i].Activate();
			if(skillVFXs[i].deactivationEvent == trigger)
				skillVFXs[i].Deactivate();
		}
		for (int i = 0; i < skillDetectors.Count; i++) {
			if(!isOwner && !skillDetectors[i].isLocal)
			{
				continue;
			}
			if(skillDetectors[i].activationEvent == trigger)
			{
				skillDetectors[i].Activate();
			}
			if(skillDetectors[i].deactivationEvent == trigger)
				skillDetectors[i].Deactivate();
		}
		ApplySelfStatusEffects(trigger);
	}
	//give generic status effects to target
	public virtual void ApplyStatusEffects(SkillEventTrigger condition, CharacterStatus target, int allyFlag)
	{
		foreach(StatusEffectData effect in skillStatusEffects)
		{
			if(effect.triggerCondition == condition)
			{
				if(!isOwner && !effect.isLocal)
				{
					continue;
				}
				//myself
				if(effect.affectSelf && allyFlag == 0)
				{
					if(effect.effect == 5)
					{
						ownerStatus.AddImpact(ownerTransform.forward, effect.primaryEffectValue, effect.secondaryEffectValue, effect.tertiaryEffectValue);
					}
					//attribute change
					if(effect.effect == 3 || effect.effect == 1 || effect.effect == 6)
					{
						StatusEffect newEffect = ownerStatus.gameObject.AddComponent<StatusEffect>();
						newEffect.statusEffect = effect;
						newEffect.ownerSkill = this;
						ownerStatus.AddStatusEffect(newEffect);
					}
				}
				//currently this bit never gets used since we are passing through outgoing targeted status effects directly to targetCS;
				else if(effect.affectAlly && allyFlag == 1 || effect.affectEnemy && allyFlag == 2)
				{
					if(effect.effect == 5)
					{
						target.AddImpact(target._myTransform.forward, effect.primaryEffectValue, effect.secondaryEffectValue, effect.tertiaryEffectValue);
					}
					//attribute change
					if(effect.effect == 3 || effect.effect == 1 || effect.effect == 6)
					{
						StatusEffect newEffect = target.gameObject.AddComponent<StatusEffect>();
						newEffect.statusEffect = effect;
						newEffect.ownerSkill = this;
						target.AddStatusEffect(newEffect);
					}
				}	
			}
		}
	}
	public virtual void ApplySelfStatusEffects(SkillEventTrigger condition)
	{
		ApplyStatusEffects(condition, null, 0);
	}