public override void End(ItemController user) { if (heldItem != null) { Destroy(heldItem.gameObject); heldItem = null; } if (user.MovementController != null) { user.MovementController.moveSpeed.Value = user.MovementController.oldMoveSpeed.Value; } GameObject spawnObject = Instantiate(itemToSpawnOnUse, user.SpawnTransform); spawnObject.transform.localScale = user.transform.localScale; //CheckForDamageComponent(spawnObject, user); if (angleSnap == 0) { RotateObject(spawnObject.transform, user.InputController.lookDirection); } else { RotateObject(spawnObject.transform, user.InputController.lookDirection, angleSnap); } spawnObject.transform.position = (Vector2)user.SpawnTransform.position + (Vector2)spawnObject.transform.right; /* * // if object has a component that deals damage, make sure to set it so that it cant hurt itself. * DealDamage dd = spawnObject.GetComponentInChildren<DealDamage>(); * if (dd != null) * dd.ignoreObject = user.gameObject; */ // apply item delay so you cant spam items user.ApplyItemDelay(itemCooldownTime); // apply movement stun user.ApplyMoveStun(itemMoveStunTime); }
public override void End(ItemController user) { if (user.MovementController != null) { user.MovementController.moveSpeed.Value = user.MovementController.oldMoveSpeed.Value; } GameObject prefabToSpawn = null; if (Time.time >= user.StartTime + chargeTime && useOtherPrefab) { prefabToSpawn = otherItemToSpawn; } else { prefabToSpawn = itemToSpawnOnUse; } GameObject spawnObject = Instantiate(prefabToSpawn, user.SpawnTransform); var projectile = spawnObject.GetComponent <Projectile>(); if (projectile != null) { projectile.creator = heldItem.GetComponentInParent <Collider2D>(); var userTargets = user.GetComponent <TargetTags>(); var projTargets = projectile.GetComponent <TargetTags>(); if (userTargets != null && projTargets != null) { projTargets.SetTargets(userTargets.GetTargets()); } } var AttackItemListeners = spawnObject.GetComponent <HeldItem>(); if (AttackItemListeners != null) { AttackItemListeners.Begin(user); } var HeldItemRef = user.GetComponent <HeldItemRef>(); if (HeldItemRef != null) { HeldItemRef.value = AttackItemListeners; } spawnObject.transform.localScale = user.transform.localScale; if (angleSnap == 0) { RotateObject(spawnObject.transform, user.InputController.lookDirection); } else { RotateObject(spawnObject.transform, user.InputController.lookDirection, angleSnap); } spawnObject.transform.position = (Vector2)user.SpawnTransform.position + (Vector2)spawnObject.transform.right; // apply item delay so you cant spam items user.ApplyItemDelay(itemCooldownTime); // apply movement stun user.ApplyMoveStun(itemMoveStunTime); if (heldItem != null) { var HeldItemListeners = heldItem.GetComponent <HeldItem>(); if (HeldItemListeners != null) { HeldItemListeners.Clean(user); } Destroy(heldItem.gameObject); heldItem = null; } }