105 lines
3.8 KiB
C#
105 lines
3.8 KiB
C#
using Invector;
|
|
using Invector.vMelee;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace Beyond
|
|
{
|
|
public class ShadowSlayerBarkHelper : MonoBehaviour
|
|
{
|
|
private const int fullyChargedBarkId = 24, emptySlayerBarkId = 14, normalSwordAttackBarkID = 23, powerBarkID = 22;
|
|
public vObjectDamage blastDamager, flamethrowerDamager;//, fireballDamager;
|
|
public BarkManager barkManager;
|
|
|
|
// public bEquipArea weaponsArea;
|
|
public vMeleeManager meleeManager;
|
|
|
|
// public List<bEquipSlot> weaponSlots;
|
|
private vMeleeWeapon weapon;
|
|
|
|
public MagicAttacks magicAttacks;
|
|
|
|
public TutorialController emptySlayerTutorial;
|
|
|
|
// Start is called before the first frame update
|
|
private void Awake()
|
|
{
|
|
EnableShadowSlayerBarks();
|
|
}
|
|
|
|
private void EnableShadowSlayerBarks()
|
|
{
|
|
meleeManager.onDamageHit.AddListener(TryToPlayAttackBark);
|
|
|
|
blastDamager.onHit.AddListener(TryToPlayPowerBark);
|
|
flamethrowerDamager.onHit.AddListener(TryToPlayPowerBark);
|
|
|
|
magicAttacks.onHitFireball += TryToPlayPowerBark;
|
|
// fireballDamager.onHit.AddListener(TryToPlayPowerBark);
|
|
}
|
|
|
|
private void TryToPlayAttackBark(vHitInfo arg0)
|
|
{
|
|
CharacterVisibilityController visilibityController = arg0.targetCollider.GetComponent<CharacterVisibilityController>();
|
|
if (visilibityController)
|
|
{
|
|
weapon = meleeManager.rightWeapon;
|
|
bItemAttribute power = weapon.GetComponent<bMeleeEquipment>().power;
|
|
if (power != null && power.value > 0)
|
|
{
|
|
//attacking with fully charged slayer
|
|
barkManager.PlayBark(fullyChargedBarkId);
|
|
}
|
|
else if (power != null && power.value <= 0 && !emptySlayerTutorial.played)
|
|
{
|
|
emptySlayerTutorial.StartTutorial();
|
|
//attacking with empty slayer, change id to correct!
|
|
// barkManager.PlayBark(emptySlayerBarkId);
|
|
}
|
|
else if (power == null)
|
|
{
|
|
//attacking
|
|
barkManager.PlayBark(normalSwordAttackBarkID);
|
|
}
|
|
//not much of an improvement as bark handles playing already, just removes few check before
|
|
TryToRemoveAttackListener();
|
|
}
|
|
}
|
|
|
|
private void TryToRemoveAttackListener()
|
|
{
|
|
if (!(barkManager.CanBarkBeStillPlayed(fullyChargedBarkId) || !emptySlayerTutorial.played /*|| barkManager.CanBarkBeStillPlayed(emptySlayerBarkId) */ || barkManager.CanBarkBeStillPlayed(normalSwordAttackBarkID)))
|
|
{
|
|
meleeManager.onDamageHit.RemoveListener(TryToPlayAttackBark);
|
|
}
|
|
}
|
|
|
|
public void TryToPlayPowerBark(Collider arg0)
|
|
{
|
|
CharacterVisibilityController visilibityController = arg0.GetComponent<CharacterVisibilityController>();
|
|
if (visilibityController)
|
|
{
|
|
barkManager.PlayBark(powerBarkID);
|
|
TryToRemovePowerBarkListener();
|
|
}
|
|
}
|
|
|
|
private void TryToRemovePowerBarkListener()
|
|
{
|
|
if (barkManager.CanBarkBeStillPlayed(powerBarkID))
|
|
{
|
|
blastDamager.onHit.RemoveListener(TryToPlayPowerBark);
|
|
flamethrowerDamager.onHit.RemoveListener(TryToPlayPowerBark);
|
|
magicAttacks.onHitFireball -= TryToPlayPowerBark;
|
|
//fireballDamager.onHit.RemoveListener(TryToPlayPowerBark);
|
|
}
|
|
}
|
|
|
|
// Update is called once per frame
|
|
private void Update()
|
|
{
|
|
}
|
|
}
|
|
} |