コード例 #1
0
    public void OnJoinedRoom()
    {
        if (this.PrefabsToInstantiate != null)
        {
            foreach (GameObject o in this.PrefabsToInstantiate)
            {
                Debug.Log("Instantiating: " + o.name);

                Vector3 spawnPos = Vector3.up;
                if (this.SpawnPosition != null)
                {
                    spawnPos = this.SpawnPosition.position;
                }

                Vector3 random = Random.insideUnitSphere;
                random.y = 0;
                random   = random.normalized;
                Vector3 itempos = spawnPos + this.PositionOffset * random;

                GameObject           playerObj = PhotonNetwork.Instantiate(o.name, itempos, Quaternion.identity, 0) as GameObject;
                CharacterManager_NET charMan   = playerObj.GetComponent <CharacterManager_NET>();
                charMan.photonView.RPC("SetID", PhotonTargets.AllBuffered, PhotonNetwork.player.ID);
            }
        }
    }
コード例 #2
0
    public void TakeDamage(float damage, int playerID, CharacterManager_NET charMan, Transform hitPos, float force)
    {
        if (!invulnurable)
        {
            if (_teleportToShop.teleportingToShop)
            {
                _teleportToShop.StopPlayerRecall();
            }
            if (playerID > 0) //Environmental kills have ID of negative value
            {
                for (int i = 0; i < playerManager.Players.Count; i++)
                {
                    if (charMan.Players[i].playerID == playerID)
                    {
                        lastAttackedByPlayer = charMan.Players[i];
                    }
                }
            }

            health -= damage * damageAdjuster;
            healthBar.fillAmount = Mathf.Clamp((float)health / (float)maxHealth, 0, maxHealth);
            if (health <= 0)
            {
                if (lastAttackedByPlayer != null)
                {
                    lastAttackedByPlayer.ShoutScore(scoreKillAmount, resourceKillAmount);
                }
                Die(hitPos, force);
            }
        }
    }
コード例 #3
0
    public void Respawn()
    {
        lastAttackedByPlayer = null;
        GameObject go = (GameObject)Instantiate(ragdoll, transform.position, ragdoll.transform.rotation);

        go.GetComponent <RagdollControl>().PushRagdoll(transform.position, 5.0f);
        Timing.RunCoroutine(_Die(2.0f));
    }
コード例 #4
0
    void RespawnOverride(Vector3 hitPos, float force)
    {
        lastAttackedByPlayer = null;
        GameObject go = (GameObject)Instantiate(ragdoll, transform.position, ragdoll.transform.rotation);

        go.GetComponent <RagdollControl>().PushRagdoll(hitPos, force * 1000f);
        Timing.RunCoroutine(_Die(2.0f));
    }
コード例 #5
0
    void OnTriggerExit(Collider other)
    {
        CharacterManager_NET player = other.GetComponent <CharacterManager_NET>();

        if (_player.Contains(player))
        {
            _player.Remove(player);
        }
    }
コード例 #6
0
    void OnTriggerEnter(Collider other)
    {
        CharacterManager_NET player = other.GetComponent <CharacterManager_NET>();

        if (!_player.Contains(player) && player.playerID != spellData.ownerID())
        {
            _player.Add(player);
        }
    }
コード例 #7
0
 void SetupPlayer(GameObject player)
 {
     if (player != null)
     {
         CharacterManager_NET charMan = player.GetComponent <CharacterManager_NET>();
         charMan.photonView.RPC("SetID", PhotonTargets.AllBuffered, PhotonNetwork.player.ID);
         charMan.photonView.RPC("SetName", PhotonTargets.AllBuffered, PhotonNetwork.player.NickName);
         //charMan.photonView.RPC("AddPlayers", PhotonTargets.AllBuffered);
     }
 }
コード例 #8
0
 void Awake()
 {
     teleportControl = GetComponent <TeleportToShop>();
     audio           = GetComponent <AudioSource>();
     playerHealth    = GetComponent <PlayerHealth_NET>();
     charMananager   = GetComponent <CharacterManager_NET>();
     m_photonView    = GetComponent <PhotonView>();
     mousePos        = GetComponent <MousePositionScript>();
     playerAnim      = GetComponent <Animator>();
     anim            = GetComponent <Animator>();
 }
コード例 #9
0
 void Start()
 {
     canPullTarget = targetTransform.GetComponent <SpellManager>().m_photonView.isMine;
     if (canPullTarget)
     {
         targetRb     = targetTransform.GetComponent <Rigidbody>();
         charMan      = targetTransform.GetComponent <CharacterManager_NET>();
         targetHealth = targetTransform.GetComponent <PlayerHealth_NET>();
     }
     Destroy(this.gameObject, duration);
 }
コード例 #10
0
 void Start()
 {
     playerManager = GetComponent <CharacterManager_NET>();
     myShopping    = GetComponent <ShopScript>();
     canvas        = GameObject.Find("Canvas").GetComponent <Canvas>();
     healthbarUI   = Instantiate(healthbarUI_prefab) as GameObject;
     healthBar     = healthbarUI.transform.GetChild(0).GetComponent <Image>();
     healthbarUI.transform.SetParent(canvas.transform, false);
     health = maxHealth;
     myLine = this.GetComponent <LineRenderer>();
     setName();
     iceBlock.SetActive(false);
     curseMarker.SetActive(false);
     playerID = GetComponent <CharacterManager_NET>().playerID;
 }
コード例 #11
0
    void OnTriggerEnter(Collider other)
    {
        CharacterManager_NET player = other.GetComponent <CharacterManager_NET>();

        if (player.m_PhotonView.isMine)
        {
            if (direction == _spellMovement.GetSpellDir())
            {
                if (other.CompareTag("Player") && player.playerID != spellData.ownerID())
                {
                    SeekPlayers(other.transform);
                }
            }
        }
    }
コード例 #12
0
 public void AddPlayers()
 {
     GameObject[] playersInScene = GameObject.FindGameObjectsWithTag("Player");
     for (int i = 0; i < playersInScene.Length; i++)
     {
         CharacterManager_NET player = playersInScene[i].GetComponent <CharacterManager_NET>();
         if (!Players.Contains(player))
         {
             Players.Add(player);
             if (!SpawnManager.Instance.Players.Contains(player.GetComponent <PlayerHealth_NET>()))
             {
                 SpawnManager.Instance.Players.Add(player.GetComponent <PlayerHealth_NET>());
             }
         }
     }
 }
コード例 #13
0
 private IEnumerator <float> _TakeDamageOverTime(int amountOfTicks, float damage, float timeBetweenTicks, CharacterManager_NET charMan, int playerID)
 {
     for (int i = 0; i < amountOfTicks; i++)
     {
         TakeDamage(damage, playerID, charMan);
         if (_teleportToShop.teleportingToShop)
         {
             _teleportToShop.StopPlayerRecall();
         }
         yield return(Timing.WaitForSeconds(timeBetweenTicks));
     }
 }
コード例 #14
0
 public void TakeDamageOverTime(int amountOfTicks, float damage, float timeBetweenTicks, CharacterManager_NET charMan, int playerID)
 {
     Timing.RunCoroutine(_TakeDamageOverTime(amountOfTicks, damage, timeBetweenTicks, charMan, playerID));
 }
コード例 #15
0
    public void Impact(Collider other)
    {
        if (other.CompareTag("Ability"))
        {
            if (spellData.ownerID() == other.GetComponent <SpellData>().ownerID())
            {
                return;
            }
            spellData.owner.SendAbilityHit(spellData.InstantiateID(), true, true);
            spellData.AbilityImpactEffect();
            Destroy(this.gameObject);
        }
        else if (other.CompareTag("Environmental"))
        {
            spellData.owner.SendAbilityHit(spellData.InstantiateID(), true, true);
            spellData.AbilityImpactEffect();
            Destroy(this.gameObject);
        }
        else if (other.CompareTag("Player"))
        {
            CharacterManager_NET player = other.GetComponent <CharacterManager_NET>();
            if (player.m_PhotonView.isMine)
            {
                if (player.playerID != spellData.ownerID())
                {
                    switch (damageType)
                    {
                    case DamageType.DOT:
                        player.playerHealth().TakeDamageOverTime(amountOfTicks, spellData.damage(), timeBetweenTicks, player, spellData.ownerID());
                        break;

                    case DamageType.Instant:
                        player.playerHealth().TakeDamage(spellData.damage(), spellData.ownerID(), player, transform, spellData.knockbackForce());
                        break;

                    case DamageType.None:
                        break;
                    }

                    if (canPush)
                    {
                        Push(other.GetComponent <Rigidbody>(), spellData.knockbackForce(), false);
                    }

                    if (canFreeze)
                    {
                        other.GetComponent <PlayerHealth_NET>().Freeze(spellData.freezeDuration());
                    }

                    if (canSlow)
                    {
                        other.GetComponent <PlayerMovement>().slowPlayerMovementSpeed(spellData.slowMovementSpeed(), spellData.slowDuration());
                    }

                    if (canLifeSteal)
                    {
                        spellData.owner.GetComponent <PlayerHealth_NET>().AddLife(spellData.damage() * spellData.lifeStealAmount());
                    }

                    if (canCurse)
                    {
                        player.playerHealth().Curse(spellData.curseDuration(), spellData.curseDmgAdjuster());
                    }
                    if (canSwapPos)
                    {
                        Vector3 hitPlayerPos = other.transform.position;
                        spellData.owner.charMananager.SetPlayerPosition(spellData.owner.transform.position, player.playerID);
                        spellData.owner.charMananager.SetPlayerPosition(hitPlayerPos, spellData.ownerID());
                    }

                    spellData.owner.SendAbilityHit(spellData.InstantiateID(), true, true);
                    if (destroyOnImpact)
                    {
                        Destroy(this.gameObject);
                    }

                    spellData.AbilityImpactEffect();
                }
                else
                {
                    return;
                }
            }
        }
    }
コード例 #16
0
    public void impactNearbyEnemies(Vector3 origin, bool isDistanceBased, float radius, SpellData spellData)
    {
        Collider[] hitCols = Physics.OverlapSphere(origin, radius, mask);
        if (hitCols.Length > 0)
        {
            foreach (Collider col in hitCols)
            {
                CharacterManager_NET player = col.GetComponent <CharacterManager_NET>();

                if (player.playerID != spellData.ownerID())
                {
                    if (player.m_PhotonView.isMine)
                    {
                        if (canPush)
                        {
                            Push(player.GetComponent <Rigidbody>(), false, spellData);
                        }

                        if (canFreeze)
                        {
                            player.playerHealth().Freeze(spellData.freezeDuration());
                        }

                        if (canCurse)
                        {
                            player.playerHealth().Curse(spellData.curseDuration(), spellData.curseDmgAdjuster());
                        }

                        if (canSlow)
                        {
                            player.GetComponent <PlayerMovement>().slowPlayerMovementSpeed(spellData.slowMovementSpeed(), spellData.slowDuration());
                        }

                        if (canLifeSteal)
                        {
                            spellData.owner.GetComponent <PlayerHealth_NET>().AddLife(spellData.damage() * spellData.lifeStealAmount());
                        }

                        switch (damageType)
                        {
                        case DamageType.DOT:
                            player.playerHealth().TakeDamageOverTime(amountOfTicks, spellData.damage(), timeBetweenTicks, player, spellData.ownerID());
                            break;

                        case DamageType.Instant:
                            player.playerHealth().TakeDamage(spellData.damage(), spellData.ownerID(), player, transform, spellData.knockbackForce());
                            break;

                        case DamageType.None:
                            break;
                        }
                    }
                }
            }
        }

        if (screenshake)
        {
            ScreenEffects.Instance.screenShake();
        }
    }