blob: 5819e64230b94c9e41e24a4d943aa46d33176530 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
using System.Collections;
using Sonigon;
using UnityEngine;
public class DeathEffect : MonoBehaviour
{
[Header("Sounds")]
public SoundEvent soundPhoenixActivate;
public SoundEvent soundPhoenixChargeLoop;
public SoundEvent soundPhoenixRespawn;
private SoundParameterIntensity soundParameterChargeLoopIntensity = new SoundParameterIntensity(0f, UpdateMode.Continuous);
[Header("Settings")]
public float forceMulti = 1f;
public float minScale = 0.9f;
public float maxScale = 1.1f;
public float minDrag = 0.9f;
public float maxDrag = 1.1f;
public float minForce = 0.9f;
public float maxForce = 1.1f;
public float spread = 0.5f;
private Rigidbody2D[] rigs;
private Color baseColor;
private ParticleSystem[] parts;
public ParticleSystem partToColor;
public ParticleSystem[] partsToColor;
private float respawnTimeCurrent;
private float respawnTime = 2.53f;
private void Update()
{
}
public void PlayDeath(Color color, PlayerVelocity playerRig, Vector2 vel, int playerIDToRevive = -1)
{
if (vel.magnitude < 30f)
{
vel = vel.normalized * 30f;
}
vel *= 1f;
parts = GetComponentsInChildren<ParticleSystem>();
for (int i = 0; i < parts.Length; i++)
{
_ = parts[i].main;
if (parts[i].name.Contains("ROT"))
{
parts[i].transform.rotation = Quaternion.LookRotation(vel);
}
}
ParticleSystem.MainModule main = partToColor.main;
main.startColor = PlayerSkinBank.GetPlayerSkinColors(playerRig.GetComponent<Player>().playerID).color;
for (int j = 0; j < partsToColor.Length; j++)
{
ParticleSystem.MainModule main2 = partsToColor[j].main;
main2.startColor = PlayerSkinBank.GetPlayerSkinColors(playerRig.GetComponent<Player>().playerID).color;
}
if (playerIDToRevive != -1)
{
SoundManager.Instance.Play(soundPhoenixActivate, base.transform);
SoundManager.Instance.Play(soundPhoenixChargeLoop, base.transform, soundParameterChargeLoopIntensity);
StartCoroutine(RespawnPlayer(playerIDToRevive));
}
}
private IEnumerator RespawnPlayer(int playerIDToRevive = -1)
{
while (respawnTimeCurrent < respawnTime)
{
soundParameterChargeLoopIntensity.intensity = respawnTimeCurrent / respawnTime;
respawnTimeCurrent += 0.1f;
yield return new WaitForSeconds(0.1f);
}
SoundManager.Instance.Play(soundPhoenixRespawn, base.transform);
SoundManager.Instance.Stop(soundPhoenixChargeLoop, base.transform);
PlayerManager.instance.players[playerIDToRevive].data.healthHandler.Revive(isFullRevive: false);
PlayerManager.instance.players[playerIDToRevive].data.block.RPCA_DoBlock(firstBlock: true);
}
private IEnumerator DoEffect(Rigidbody2D rig)
{
yield return new WaitForSeconds(Random.Range(0.05f, 0.15f));
rig.GetComponent<SpriteRenderer>().color = baseColor;
}
}
|