/** ApplyStatus, protected virtual GameObject * @Params : GameObject, Transform * @Returns: GameObject * This method should be called by spells that are able to apply a Status on their targets. * The first param (GameObject status) should be a GameObject that has a StatusBase Script attached. * Most of the time, this gameObject is contained in the SpellDefinition.Status Table, and the Transform is the target one. * The method will instantiate a new Status and attach to it the status that is already attached on the first parameter. * When we instantiate an object, the StatusBase element if reseted, so we need to attach this instance of the StatusBase because of previous modifications, * such as damages or CDReduction of the Status of the player. * Then, we return the fresh GameObject constructed if we want to use it later. **/ protected virtual GameObject ApplyStatus(GameObject status, Transform tr) { GameObject objInst = Instantiate(status, tr); StatusBase statusInst = objInst.GetComponent <StatusBase>(); statusInst.StartStatus(status.GetComponent <StatusBase>()); return(objInst); }