Пример #1
0
    public override void OnRemoved()
    {
        Destroy(mSpeedModifier);
        mSpeedModifier = null;

        base.OnRemoved();
    }
Пример #2
0
    protected override IEnumerator ActivationCoroutine()
    {
        yield return(base.ActivationCoroutine());

        if (WasAccepted())
        {
            CharacterStatModifier attackModifier = Game.instance.playerStats.gameObject.AddComponent <CharacterStatModifier>();
            attackModifier.SetRelativeModification(CharacterStatType.Strength, 5);

            CharacterStatModifier defenseModifier = Game.instance.playerStats.gameObject.AddComponent <CharacterStatModifier>();
            defenseModifier.SetRelativeModification(CharacterStatType.Defense, -5);

            int currentMaxHealth = Game.instance.avatar.GetComponent <CharacterStatistics>().ModifiedStatValue(CharacterStatType.MaxHealth, Game.instance.avatar.gameObject);
            CharacterStatModifier maxHealthModifier = Game.instance.playerStats.gameObject.AddComponent <CharacterStatModifier>();
            maxHealthModifier.SetRelativeModification(CharacterStatType.MaxHealth, -(currentMaxHealth / 2));

            currentMaxHealth = currentMaxHealth / 2;
            if (Game.instance.playerData.health > currentMaxHealth)
            {
                Game.instance.playerData.health = currentMaxHealth;
                Game.instance.avatar.GetComponent <Killable>().health = Game.instance.playerData.health;
            }

            Game.instance.playerData.MarkDirty();
        }

        yield break;
    }
Пример #3
0
    private void OnEnemyCreated(Enemy enemy)
    {
        CharacterStatModifier modifier = enemy.gameObject.AddComponent <CharacterStatModifier>();

        modifier.SetRelativeModification(CharacterStatType.Speed, 4);
        enemy.actionCooldown /= 2;
    }
Пример #4
0
    protected override IEnumerator ActivationCoroutine()
    {
        yield return(base.ActivationCoroutine());

        if (WasAccepted())
        {
            NumberPopupGenerator.instance.GeneratePopup(gameObject, "Strength Increased", NumberPopupReason.Good);

            CharacterStatModifier modifier = Game.instance.playerStats.gameObject.AddComponent <CharacterStatModifier>();
            modifier.SetRelativeModification(CharacterStatType.Strength, 2);

            CollisionMap collisionMap = GameObject.FindObjectOfType <CollisionMap>();

            // Spawn a bunch of enemies and give the player more strength.
            List <Vector2Int> walkablePositions = new List <Vector2Int>();
            Vector2Int        playerPosition    = MapCoordinateHelper.WorldToMapCoords(Game.instance.avatar.transform.position);

            for (int xOffset = -4; xOffset <= 4; ++xOffset)
            {
                for (int yOffset = -4; yOffset <= 4; ++yOffset)
                {
                    if (Mathf.Abs(xOffset) < 2 || Mathf.Abs(yOffset) < 2)
                    {
                        continue;
                    }

                    int x = playerPosition.x + xOffset;
                    int y = playerPosition.y + yOffset;
                    if (collisionMap.SpaceMarking(x, y) == 0)
                    {
                        walkablePositions.Add(new Vector2Int(x, y));
                    }
                }
            }

            DungeonFloorData data = CurrentDungeonFloorData();

            int numEnemies = 5;

            for (int i = 0; i < numEnemies; ++i)
            {
                if (walkablePositions.Count == 0)
                {
                    continue;
                }

                string     enemy    = data.enemyData.rareEnemy.name;
                GameObject newEnemy = GameObject.Instantiate(PrefabManager.instance.PrefabByName(enemy));
                Vector2Int pos2     = walkablePositions[Random.Range(0, walkablePositions.Count)];
                walkablePositions.Remove(pos2);
                Vector3 pos = MapCoordinateHelper.MapToWorldCoords(pos2);
                newEnemy.transform.position = pos;
                collisionMap.MarkSpace(pos2.x, pos2.y, newEnemy.GetComponent <SimpleMovement>().uniqueCollisionIdentity);
            }
        }

        yield break;
    }
Пример #5
0
    public override void OnAdded()
    {
        base.OnAdded();

        duration = 5f;

        mSpeedModifier = gameObject.AddComponent <CharacterStatModifier>();
        mSpeedModifier.SetRelativeModification(CharacterStatType.Defense, 5);
    }
Пример #6
0
    public override void OnRemoved()
    {
        Destroy(mSpeedModifier);
        mSpeedModifier = null;

        Destroy(mAttackModifier);
        mAttackModifier = null;

        Destroy(mDefenseModifier);
        mDefenseModifier = null;

        base.OnRemoved();
    }
Пример #7
0
    public override void OnAdded()
    {
        base.OnAdded();

        duration = 5f;

        mSpeedModifier = gameObject.AddComponent <CharacterStatModifier>();
        mSpeedModifier.SetRelativeModification(CharacterStatType.Speed, 3 * level);

        mAttackModifier = gameObject.AddComponent <CharacterStatModifier>();
        mAttackModifier.SetRelativeModification(CharacterStatType.Strength, 3 * level);

        mDefenseModifier = gameObject.AddComponent <CharacterStatModifier>();
        mDefenseModifier.SetRelativeModification(CharacterStatType.Defense, -3 * level);
    }