public override void OnRemoved() { Destroy(mSpeedModifier); mSpeedModifier = null; base.OnRemoved(); }
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; }
private void OnEnemyCreated(Enemy enemy) { CharacterStatModifier modifier = enemy.gameObject.AddComponent <CharacterStatModifier>(); modifier.SetRelativeModification(CharacterStatType.Speed, 4); enemy.actionCooldown /= 2; }
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; }
public override void OnAdded() { base.OnAdded(); duration = 5f; mSpeedModifier = gameObject.AddComponent <CharacterStatModifier>(); mSpeedModifier.SetRelativeModification(CharacterStatType.Defense, 5); }
public override void OnRemoved() { Destroy(mSpeedModifier); mSpeedModifier = null; Destroy(mAttackModifier); mAttackModifier = null; Destroy(mDefenseModifier); mDefenseModifier = null; base.OnRemoved(); }
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); }