public override ushort GetDamage(LightMonsterStatus attacker, LightMonsterStatus defender) { var moveInfo = GetMonsterMoveCalculationInfo(); float a = attacker.Level; float b = moveInfo.MoveCategory == MonsterMoveCategory.PHYSICAL ? attacker.Attack : attacker.Special; float c = moveInfo.Power; float d = moveInfo.MoveCategory == MonsterMoveCategory.PHYSICAL ? defender.Defense : defender.Special; float x = moveInfo.MoveType == attacker.PrimaryType || moveInfo.MoveType == attacker.SecondaryType ? 1.5f : 1f; float y = MonsterBattleMatchup.GetTypeMatchupDamage(moveInfo.MoveType, defender.PrimaryType, defender.SecondaryType); float z = UnityEngine.Random.Range(217, 256); var damage = (((2f * a / 5f + 2f) * c * (b / d)) / 50f + 2f) * x * y * (z / 255f); return((ushort)damage); }
public void UpdateDetailedStatus(Sprite monsterSprite, string trainer, string mName, LightMonsterStatus monsterStatus) { UpdateMonsterStatus(mName, monsterStatus.Level, monsterStatus.CurrentHP, monsterStatus.HP); monsterImage.sprite = monsterSprite; ot.text = trainer; attackStat.text = monsterStatus.Attack.ToString(); defenseStat.text = monsterStatus.Defense.ToString(); specialStat.text = monsterStatus.Special.ToString(); speedStat.text = monsterStatus.Speed.ToString(); type1.text = monsterStatus.PrimaryType.ToString(); type2.text = monsterStatus.SecondaryType.ToString(); type2.gameObject.SetActive(monsterStatus.SecondaryType != MonsterType.NONE); type2Label.gameObject.SetActive(monsterStatus.SecondaryType != MonsterType.NONE); idNumber.text = monsterStatus.IdNumber.ToString(); ot.text = trainer; monsterNumber.text = monsterStatus.MonsterNumber.ToString(); //TODO HIDE FOR NOW. FIGURE OUT HOW STATUSES ARE DONE LATER. statusLabel.gameObject.SetActive(false); status.gameObject.SetActive(false); }
public virtual ushort GetDamage(LightMonsterStatus attacker, LightMonsterStatus defender) { return(0); }