Пример #1
0
 public void ShowSpell(bool show)
 {
     SpellRoot.SetActive(show);
     isSpellActive = show;
     m_CharacterStatsController = owner.GetComponent <CharacterStatsController>();
     DebugUtility.HandleErrorIfNullGetComponent <CharacterStatsController, SpellController>(m_CharacterStatsController, this, gameObject);
 }
Пример #2
0
    void OnHit(Collider collider)
    {
        // point damage
        InteractionDamageSelf damageable = collider.GetComponent <InteractionDamageSelf>();

        if (damageable)
        {
            damageable.iteractiableBase.Interact(gameObject);
            CharacterStatsController stats = collider.GetComponent <CharacterStatsController>();
            print("HIT!");
            if (stats != null)
            {
                print("Slowed!");
                stats.moveSpeed.AddTemporaryModifier(slowAmount, slowDuration);
            }
        }

        // // impact vfx
        // if (impactVFX)
        // {
        //     GameObject impactVFXInstance = Instantiate(impactVFX, point + (normal * impactVFXSpawnOffset), Quaternion.LookRotation(normal));
        //     if (impactVFXLifetime > 0)
        //     {
        //         Destroy(impactVFXInstance.gameObject, impactVFXLifetime);
        //     }
        // }

        // // impact sfx
        // if (impactSFXClip)
        // {
        //     AudioUtility.CreateSFX(impactSFXClip, point, AudioUtility.AudioGroups.Impact, 1f, 3f);
        // }

        Destroy(this.gameObject);
    }
Пример #3
0
    void Start()
    {
        CharacterStatsController stats = GetComponent <CharacterStatsController>();

        DebugUtility.HandleErrorIfNullGetComponent <CharacterStatsController, PlayerManager>(stats, this, gameObject);
        stats.onHealthChanged += HookDamage;
    }
Пример #4
0
    private void Start()
    {
        m_CharacterStatsController = character.GetComponent <CharacterStatsController>();
        DebugUtility.HandleErrorIfNullGetComponent <CharacterStatsController, HealthBarController>(m_CharacterStatsController, this, gameObject);

        SetHealthBarMaxValue(m_CharacterStatsController.maxHealth.GetValue());
        m_CharacterStatsController.onHealthChanged += HandleHealthChange;
    }
Пример #5
0
    void OnShoot()
    {
        CharacterStatsController statsController = m_ProjectileBase.owner.GetComponent <CharacterStatsController>();

        DebugUtility.HandleErrorIfNullGetComponent <CharacterStatsController, SpeedBoostSpell>(statsController, this, gameObject);

        statsController.moveSpeed.AddTemporaryModifier(speed, duration);
    }
Пример #6
0
    private void OnEnable()
    {
        iteractiableBase = GetComponent <InteractableBase>();
        DebugUtility.HandleErrorIfNullGetComponent <InteractableBase, InteractionDamageSelf>(iteractiableBase, this, gameObject);

        m_SelfStatsController = GetComponent <CharacterStatsController>();
        DebugUtility.HandleErrorIfNullGetComponent <CharacterStatsController, InteractionDamageSelf>(m_SelfStatsController, this, gameObject);

        iteractiableBase.onInteract += OnInteract;
    }
Пример #7
0
    void OnShoot()
    {
        CharacterStatsController statsController = m_ProjectileBase.owner.GetComponent <CharacterStatsController>();

        DebugUtility.HandleErrorIfNullGetComponent <CharacterStatsController, PanicSpell>(statsController, this, gameObject);

        statsController.cdr.AddModifier(cdr);
        statsController.moveSpeed.AddModifier(speed);
        statsController.ap.AddModifier(ap);
        statsController.AddStatus(Status.LowPrecision);
    }
    private void OnHit(Collider collider)
    {
        // point damage
        InteractionDamageSelf damageable = collider.GetComponent <InteractionDamageSelf>();

        if (damageable)
        {
            damageable.iteractiableBase.Interact(gameObject);
            CharacterStatsController stats = collider.GetComponent <CharacterStatsController>();
            if (stats != null)
            {
                stats.moveSpeed.AddTemporaryModifier(slowAmount, slowDuration);
            }
        }
        print(string.Format("hit : {0}", collider.name));
        Destroy(this.gameObject);
    }
    void Start()
    {
        m_NavAgent = GetComponent <NavMeshAgent>();
        DebugUtility.HandleErrorIfNullGetComponent <NavMeshAgent, EnemyCharacterController>(m_NavAgent, this, gameObject);

        m_PlayerTransform           = PlayerManager.instance.player.transform;
        m_PlayerInteractableBase    = PlayerManager.instance.player.GetComponent <InteractableBase>();
        m_SelfInteractableBase      = GetComponent <InteractableBase>();
        m_NavAgent.stoppingDistance = 0;

        m_CharacterStatsController = GetComponent <CharacterStatsController>();
        m_cdr            = m_CharacterStatsController.cdr.GetValue();
        m_moveSpeed      = m_CharacterStatsController.moveSpeed.GetValue();
        m_NavAgent.speed = m_moveSpeed;

        m_strategy.selfGameObject   = gameObject;
        m_strategy.playerGameObject = PlayerManager.instance.player;
        m_strategy.Init();
        ChaseOnBeingAttacked();
    }
Пример #10
0
    void OnInteract(GameObject caller)
    {
        ProjectileBase projectileBase = caller.GetComponent <ProjectileBase>();
        float          damage;

        if (projectileBase != null)
        {
            // if interact from spell
            CharacterStatsController characterStatsController = projectileBase.owner.GetComponent <CharacterStatsController>();
            float spellDamageModifier = projectileBase.spellDamageModifier;
            damage = selfDamageModifier * spellDamageModifier * characterStatsController.ap.GetValue();
        }
        else
        {
            // if interact directly
            CharacterStatsController characterStatsController = caller.GetComponent <CharacterStatsController>();
            damage = selfDamageModifier * characterStatsController.ap.GetValue();
        }
        m_SelfStatsController.TakeDamage(damage);
        // print(string.Format("{0} does {1} damage to {2}", caller.name, damage, gameObject.name));
    }
Пример #11
0
    public override void Init()
    {
        m_SpellManager               = selfGameObject.GetComponent <EnemySpellsManager>();
        m_SelfController             = selfGameObject.GetComponent <EnemyCharacterController>();
        m_Params                     = selfGameObject.GetComponent <StrategyParams>();
        m_SelfStats                  = selfGameObject.GetComponent <CharacterStatsController>();
        m_PlayerController           = playerGameObject.GetComponent <PlayerCharacterController>();
        m_PlayerStats                = playerGameObject.GetComponent <PlayerStatsController>();
        m_SelfStats.onHealthChanged += UpdateDamageTime;
        m_DelayBetweenAttacks        = m_SelfController.delayBetweenAttacks;
        m_cdr                = m_SelfStats.cdr.GetValue();
        m_GFX                = selfGameObject.transform.Find("GFX").gameObject;
        m_MobileHealthBar    = m_GFX.transform.Find("MobileHealthBar").gameObject;
        m_EnemyGraphic       = m_GFX.transform.Find("EnemyGraphic").gameObject;
        m_TheHangingGraphic  = m_EnemyGraphic.transform.Find("Rope").gameObject;
        m_Level              = LevelsManager.instance.level;
        m_Animator           = selfGameObject.GetComponent <EnemyAnimator>();
        m_PlayerInteractable = playerGameObject.GetComponent <InteractableBase>();

        PlayerManager.instance.playerDamageTaken += (dmg) => { m_DamageBalanced += dmg; };
        EnemyManager.instance.enemyDamageTaken   += (dmg) => { m_DamageBalanced -= dmg; };
    }
Пример #12
0
 void Awake()
 {
     _physicsController  = new CharacterPhysicsController(this);
     _statsController    = new CharacterStatsController(this);
     _movementController = new CharacterMovementController(this);
 }