示例#1
0
    public DialogueManager dialogueManager;     // Getting the dialogue manager

    // Use this for initialization
    void Start()
    {
        // Check between levels if player exists
        if (!playerExists)
        {
            playerExists = true;
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            Destroy(gameObject);
        }

        animator    = GetComponent <Animator>();            // Getting Animator
        myRigidbody = GetComponent <Rigidbody2D>();         // Getting Rigidbody
        theCursor   = FindObjectOfType <MouseController>(); // Getting the mouse
        // Getting the player level stats
        playerStats = gameObject.GetComponent <PlayerLevelStats>();
        // Getting solid layers collider
        solidCollider = GameObject.FindGameObjectWithTag("Solid").GetComponent <PolygonCollider2D>();
    }
示例#2
0
    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(this.gameObject);
        }
        else
        {
            Destroy(this.gameObject);
        }

        m_AllLevels           = new List <string>();
        m_AvailableLevels     = new List <string>();
        m_AlreadyPlayedLevels = new List <string>();
        LoadAllLevels();

        CurrentDifficulty = 0;
        InitializePlayerInventory();
        m_PlayerLevelStats        = new PlayerLevelStats();
        SceneManager.sceneLoaded += OnSceneLoaded;
    }
示例#3
0
    // Auto-attack the player
    // TODO: SET THIS TO AUTO ATTACK FUNCTION
    public void AttackPlayer()
    {
        PlayerLevelStats  playerStats = thePlayer.GetComponent <PlayerLevelStats>();
        EnemyStatsManager enemyStats  = gameObject.GetComponent <EnemyStatsManager>();

        if (distanceFromPlayer <= attackRange)
        {
            // Don't move if in attack range
            enemyRigidbody.velocity = Vector2.zero;
            // Check if one of the 2 halves is over
            if (attackTimerCounter <= 0)
            {
                // Set the counter back to the max
                attackTimerCounter = attackTimer;
                // If attack is not on cooldown after one half
                if (!attackCooldown)
                {
                    int   i = enemyStats.enemyLevel;
                    float enemyDamageAfterMultipliers = attackDamage;
                    // Check if player is higher level than enemy
                    if (enemyStats.enemyLevel > playerStats.currentLevel)
                    {
                        while (i > playerStats.currentLevel)
                        {
                            // Multiply damage by 150%
                            enemyDamageAfterMultipliers *= 1.5f;
                            i--;
                        }
                    }
                    else if (enemyStats.enemyLevel < playerStats.currentLevel)
                    {
                        while (i < playerStats.currentLevel)
                        {
                            // Reduce damage by 50%
                            enemyDamageAfterMultipliers *= 0.5f;
                            i++;
                        }
                    }
                    // Equation for the damage reduction per defense
                    float damageReductionPercentage = 100f - Mathf.Pow(10f, 2 - 0.0030103f * playerStats.defense);
                    enemyDamageAfterMultipliers -= enemyDamageAfterMultipliers * (damageReductionPercentage / 100);
                    // Crit chance
                    enemyDamageAfterMultipliers = CheckChance(enemyDamageAfterMultipliers, critChance, critMultiplier);
                    // Reduce damage chance
                    enemyDamageAfterMultipliers = CheckChance(enemyDamageAfterMultipliers, playerStats.reduceDamageChance, -playerStats.reduceDamageMultiplier);
                    // Miss chance
                    enemyDamageAfterMultipliers = CheckChance(enemyDamageAfterMultipliers, playerStats.missChance, -100);
                    // Deal damage
                    thePlayer.GetComponent <PlayerHealthManager>().SetCurrentHeatlh(-Mathf.RoundToInt(enemyDamageAfterMultipliers), true);
                    // Set the cooldown to true
                    attackCooldown = true;
                }
                else
                {
                    // Set the cooldown to false
                    attackCooldown = false;
                }
            }
            // Countdown time
            attackTimerCounter -= Time.deltaTime;
        }
        else
        {
            // Enemy is moving
            //transform.position = Vector3.MoveTowards(transform.position, thePlayer.transform.position, moveSpeed * Time.deltaTime);
            enemyRigidbody.velocity = new Vector2((thePlayer.transform.position.x - transform.position.x) / distanceFromPlayer * moveSpeed, (thePlayer.transform.position.y - transform.position.y) / distanceFromPlayer * moveSpeed);
        }
    }
    public bool maxHealthBasedRegen;            // Check if regen based on max or missing health

    // Use this for initialization
    void Start()
    {
        currentHealthPoints    = maxHealthPoints; // Set current health to maximum
        playerLevelStats       = FindObjectOfType <PlayerLevelStats>();
        healthRegenPercentage /= 100;             // Change percentage to decimal
    }