예제 #1
0
 void Start()
 {
     if (StunSound != null)
     {
         WeaverAudio.PlayAtPoint(StunSound, transform.position);
     }
     transform.localRotation = Quaternion.Euler(0f, 0f, Random.Range(0f, 360f));
     CameraShaker.Instance.Shake(Enums.ShakeType.AverageShake);
     WeaverGameManager.FreezeGameTime(WeaverGameManager.TimeFreezePreset.Preset4);
     poolComponent = GetComponent <PoolableObject>();
     if (poolComponent != null)
     {
         poolComponent.ReturnToPool(0.1f);
     }
     else
     {
         Destroy(gameObject, 0.1f);
     }
 }
예제 #2
0
 // Token: 0x06000094 RID: 148 RVA: 0x00003E44 File Offset: 0x00002044
 public virtual void PlayDeathEffects(HitInfo lastHit)
 {
     if (this.RanOnce)
     {
         return;
     }
     this.RanOnce = true;
     if (HunterJournal.HasEntryFor(this.JournalEntryName))
     {
         HunterJournal.RecordKillFor(this.JournalEntryName);
     }
     if (lastHit.AttackType != AttackType.Acid && lastHit.AttackType != AttackType.RuinsWater)
     {
         this.EmitEffects();
     }
     if (this.FreezeGameOnDeath)
     {
         WeaverGameManager.FreezeGameTime(WeaverGameManager.TimeFreezePreset.Preset1);
     }
     if (!Boss.InGodHomeArena && this.doEssenceChance)
     {
         this.DoEssenceChance();
     }
 }
예제 #3
0
    IEnumerator HitRoutine(HitInfo hit)
    {
        //WeaverLog.Log("NAIL TINK ATTACK DIRECTION = " + hit.Direction);
        WeaverGameManager.FreezeGameTime(WeaverGameManager.TimeFreezePreset.Preset3);
        Player.Player1.EnterParryState();
        CameraShaker.Instance.Shake(WeaverCore.Enums.ShakeType.EnemyKillShake);

        //PLAY AUDIO
        WeaverAudio.PlayAtPoint(TinkSound, transform.position);

        var attackDirection = hit.Direction;

        CardinalDirection direction = CardinalDirection.Right;

        if (attackDirection < 360f && attackDirection > 225f)
        {
            direction = CardinalDirection.Down;
        }
        else if (attackDirection <= 225f && attackDirection > 135f)
        {
            direction = CardinalDirection.Left;
        }
        else if (attackDirection <= 135 && attackDirection > 45f)
        {
            direction = CardinalDirection.Up;
        }
        else
        {
            direction = CardinalDirection.Right;
        }

        //WeaverLog.Log("TINK DIRECTION = " + direction);

        switch (direction)
        {
        case CardinalDirection.Up:
            Player.Player1.Recoil(CardinalDirection.Down);
            Pooling.Instantiate(TinkEffectPrefab, Player.Player1.transform.position + new Vector3(0f, 1.5f, 0f), Quaternion.identity);
            break;

        case CardinalDirection.Down:
            Player.Player1.Recoil(CardinalDirection.Up);
            Pooling.Instantiate(TinkEffectPrefab, Player.Player1.transform.position + new Vector3(0f, -1.5f, 0f), Quaternion.identity);
            break;

        case CardinalDirection.Left:
            Player.Player1.Recoil(CardinalDirection.Right);
            Pooling.Instantiate(TinkEffectPrefab, Player.Player1.transform.position + new Vector3(-1.5f, 0f, 0f), Quaternion.identity);
            break;

        case CardinalDirection.Right:
            Player.Player1.Recoil(CardinalDirection.Left);
            Pooling.Instantiate(TinkEffectPrefab, Player.Player1.transform.position + new Vector3(1.5f, 0f, 0f), Quaternion.identity);
            break;
        }

        yield return(null);


        Player.Player1.RecoverFromParry();


        if (enemy != null)
        {
            enemy.OnParry(this, hit);
        }


        yield return(null);

        yield return(new WaitForSeconds(0.15f));
    }
예제 #4
0
 private static void SetStatePatch(On.GameManager.orig_SetState orig, GameManager self, GlobalEnums.GameState newState)
 {
     orig(self, newState);
     WeaverGameManager.TriggerGameStateChange();
 }