public void ApplyBuff(BattleStat stat, float factor, int duration) { var mod = new DurationBattleCharacterStatsMod(_stats.Get(), stat, factor, duration); _mods.Add(mod); _stats.Put(mod); }
public TemporaryEffect(TemporaryEffect tempEffect) { continuousMods = new List <StatModContinuous>(); discreteMods = new List <StatModDiscrete>(); name = tempEffect.name; duration = tempEffect.duration; stackLimit = tempEffect.stackLimit; stackCnt = 1; ResetTimer(); subject = tempEffect.subject; subjectBattleStat = tempEffect.subjectBattleStat; foreach (StatModContinuous statMod in tempEffect.continuousMods) { continuousMods.Add(new StatModContinuous(statMod)); } foreach (StatModDiscrete statMod in tempEffect.discreteMods) { discreteMods.Add(new StatModDiscrete(statMod)); } //Debug.Log("StatType: " + continuousMods[0].StatType + ", Value: " + continuousMods[0].ModValue); }
public AdventurerData(GameObject input) : base(input) { Adventurer inputAdventurer = input.GetComponent <Adventurer>(); battleStat = inputAdventurer.GetBattleStat(); if (inputAdventurer.GetEnemy() != null) { enemy = new CombatantPtr(inputAdventurer.GetEnemy()); } if (inputAdventurer.curHuntingArea != null) { curHuntingArea = inputAdventurer.curHuntingArea.index; } //Debug.Log("name : " + inputAdventurer.name); if (inputAdventurer.GetSkills() != null) { skills = inputAdventurer.GetSkills().Keys.ToList(); } temporaryEffects = new Dictionary <string, TemporaryEffectData>(); Dictionary <string, TemporaryEffect> tempEffectsOrigin = inputAdventurer.GetTemporaryEffects(); if (tempEffectsOrigin != null) { foreach (string key in tempEffectsOrigin.Keys.ToList()) { temporaryEffects.Add(key, new TemporaryEffectData(tempEffectsOrigin[key])); } } //if (!isActive && stat == null) // Debug.Log("stat is null"); }
public DurationBattleCharacterStatsMod(IBattleCharacterStats baseStats, BattleStat stat, float factor, int duration) { _base = baseStats; _stat = stat; _factor = factor; _remainingTurnsActive = duration; }
private int GetStat(BattleStat stat) { var statName = stat.ToString(); return(statName.MatchesOneOf <Extrinsic>() || statName.MatchesOneOf <Intrinsic>() ? _stats.Get()[stat] : this.GetPropertyValue <int>(statName).Value); }
public int GetStat(BattleStat stat) { if (stat == BattleStat.None) { return(0); } return(_stats[stat]); }
private void OnEnable() { //GameManager.Instance.ChooseSpAdv(0); pBattleStat = GameManager.Instance.GetPlayerSpAdv().GetComponent <SpecialAdventurer>().GetBattleStat(); // 배틀스탯 받기 HideContent(); //SetPrice(100 + " G"); //SetSelectedItemCondition(ItemCondition.None); }
public void ApplyBuff(BattleStat stat, float factor, int duration) { if (stat == BattleStat.None) { return; } _stats.ApplyBuff(stat, factor, duration); _log.Write($"{Name} has {stat} increased by {factor:0.0}x for {duration} turns."); }
// 몬스터에서 받아서 초기화. public void InitMonster(Monster sample) { monsterNum = sample.monsterNum; canWander = sample.canWander; battleStat = new BattleStat(sample.battleStat); rewardStat = new RewardStat(sample.rewardStat); //SetDamageText(Instantiate(sample.damageText)); SetAttackEffect(Instantiate(sample.attackEffect)); SetDefaultEffects(); skills = new Dictionary <string, Skill>(); temporaryEffects = new Dictionary <string, TemporaryEffect>(); }
public virtual void OnEnable() { gameObject.layer = LayerMask.NameToLayer("Monster"); died = false; current = new BattleStat(); LoadLevel(level); executor = GetComponent <MovementExecutor>(); if (executor != null) { executor.enabled = true; GetComponent <FramesAnimator>().enabled = true; } }
public void InitAdventurer(BattleStat battleStat, RewardStat rewardStat) // { // 이동가능한 타일인지 확인할 delegate 설정. pathFinder.SetValidateTile(ValidateNextTile); //SetPathFindEventAdventurer(); this.battleStat = new BattleStat(battleStat); this.rewardStat = new RewardStat(rewardStat); //stat 초기화 this.stat = gameObject.AddComponent <Stat>(); //pathfinder 초기화 // delegate 그대로 skills = new Dictionary <string, Skill>(); temporaryEffects = new Dictionary <string, TemporaryEffect>(); }
// Use this for initialization #region 수정! // 몬스터 초기화 public void InitMonster(int monsterNum, BattleStat battleStat, RewardStat rewardStat, bool canWanderIn = true) { // 이동가능한 타일인지 확인할 delegate 설정. pathFinder.SetValidateTile(ValidateNextTile); //SetPathFindEventMonster(); this.monsterNum = monsterNum; this.battleStat = new BattleStat(battleStat); this.rewardStat = new RewardStat(rewardStat); this.canWander = canWanderIn; //stat 초기화 //pathfinder 초기화 // delegate 그대로 SetDefaultEffects(); skills = new Dictionary <string, Skill>(); temporaryEffects = new Dictionary <string, TemporaryEffect>(); }
public virtual void OnEnable() { gameObject.layer = LayerMask.NameToLayer("Monster"); died = false; getHit = false; current = new BattleStat(); LoadLevel(level); executor = GetComponent <MovementExecutor>(); if (executor != null) { executor.enabled = true; GetComponent <FramesAnimator>().enabled = true; } LeanTween.scale(gameObject, new Vector3(10f, 10f), 3f).setLoopPingPong(); }
GameObject LoadMonsterFromJson(string monsterSet, int monsterNum) { GameObject monster = (GameObject)Instantiate(Resources.Load("MonsterPrefabs/" + monsterSet + "/" + monsterNum)); //monster.SetActive(false); monster.transform.position = new Vector3(5000.0f, 5000.0f, 5000.0f); #region 몬스터 스탯 로드 BattleStat tempBattleStat = new BattleStat(); //Debug.Log("num : " + sample1Num + ", " + sample2Num); //Debug.Log("level : " + monsterJson[monsterSet][sample1Num]["level"]); tempBattleStat.Level = monsterJson[monsterSet][monsterNum]["level"].AsInt; tempBattleStat.BaseHealthMax = monsterJson[monsterSet][monsterNum]["hp"].AsFloat; tempBattleStat.BaseDefence = monsterJson[monsterSet][monsterNum]["def"].AsFloat; tempBattleStat.BaseAvoid = monsterJson[monsterSet][monsterNum]["avoid"].AsFloat; tempBattleStat.BaseAttack = monsterJson[monsterSet][monsterNum]["atk"].AsFloat; tempBattleStat.BaseAttackSpeed = monsterJson[monsterSet][monsterNum]["atkspeed"].AsFloat; tempBattleStat.BaseCriticalChance = monsterJson[monsterSet][monsterNum]["critical"].AsFloat; tempBattleStat.BaseCriticalDamage = monsterJson[monsterSet][monsterNum]["atkcritical"].AsFloat; tempBattleStat.BasePenetrationFixed = monsterJson[monsterSet][monsterNum]["penetration"].AsFloat; tempBattleStat.BaseMoveSpeed = monsterJson[monsterSet][monsterNum]["movespeed"].AsFloat; tempBattleStat.BaseAttackRange = monsterJson[monsterSet][monsterNum]["range"].AsInt; RewardStat tempRewardStat = new RewardStat(); tempRewardStat.Exp = monsterJson[monsterSet][monsterNum]["exp"].AsInt; tempRewardStat.Gold = monsterJson[monsterSet][monsterNum]["gold"].AsInt; #endregion Monster monsterComp = monster.GetComponent <Monster>(); if (monsterSet == "Boss") { monsterComp.InitMonster(monsterNum, tempBattleStat, tempRewardStat, false); } else { monsterComp.InitMonster(monsterNum, tempBattleStat, tempRewardStat); } SetMonsterDefaultEffects(monsterComp); return(monster); }
private void SetBattleStat(BattleStat input) { BaseHealthMax = input.BaseHealthMax; BaseDefence = input.BaseDefence; BaseAvoid = input.BaseAvoid; BaseAttack = input.BaseAttack; BaseAttackSpeed = input.BaseAttackSpeed; BaseCriticalChance = input.BaseCriticalChance; BaseCriticalDamage = input.BaseCriticalDamage; BasePenetrationFixed = input.BasePenetrationFixed; BaseMoveSpeed = input.BaseMoveSpeed; BaseAttackRange = input.BaseAttackRange; BaseShield = input.BaseShield; battleStatContinuous[StatType.Health].BaseValue = HealthMax; // TODO 수정요망 NextExp = input.NextExp; level = input.level; }
public void InitAdventurer(StatData statIn, BattleStat battleStat, RewardStat rewardStat) // { // 이동가능한 타일인지 확인할 delegate 설정. pathFinder.SetValidateTile(ValidateNextTile); //SetPathFindEventAdventurer(); this.battleStat = new BattleStat(battleStat); this.rewardStat = new RewardStat(rewardStat); //stat 초기화 this.stat = gameObject.AddComponent <Stat>(); stat.InitStat(statIn, this); if (statIn == null) { Debug.Log("[InitAdv] stat is null"); } //pathfinder 초기화 // delegate 그대로 skills = new Dictionary <string, Skill>(); temporaryEffects = new Dictionary <string, TemporaryEffect>(); }
public void UpdateBattleStat() { if (!(curCharacter is Adventurer)) { return; } Adventurer adv = (Adventurer)curCharacter; BattleStat bs = adv.GetBattleStat(); characterLevelText.text = bs.Level.ToString(); characterHealthText.text = bs.Health.ToString("F0") + " / " + bs.HealthMax.ToString("F0"); characterAttackText.text = bs.Attack.ToString("F0"); characterAttackSpeedText.text = bs.AttackSpeed.ToString("F0"); characterDefenseText.text = bs.Defence.ToString("F0"); characterPenetrationText.text = bs.PenetrationFixed.ToString("F0") + " / " + bs.PenetrationMult.ToString("F0"); characterCriticalChanceText.text = bs.CriticalChance.ToString("F0"); characterCriticalAttackText.text = bs.CriticalDamage.ToString("F0"); characterAvoidText.text = bs.BaseAvoid.ToString("F0"); characterAttackRangeText.text = bs.Range.ToString("F0"); }
public BattleStat(BattleStat input) { battleStatContinuous.Add(StatType.HealthMax, new StatBaseContinuous()); battleStatContinuous.Add(StatType.Defence, new StatBaseContinuous()); battleStatContinuous.Add(StatType.Avoid, new StatBaseContinuous()); battleStatContinuous.Add(StatType.Attack, new StatBaseContinuous()); battleStatContinuous.Add(StatType.AttackSpeed, new StatBaseContinuous()); battleStatContinuous.Add(StatType.CriticalChance, new StatBaseContinuous()); battleStatContinuous.Add(StatType.CriticalDamage, new StatBaseContinuous()); battleStatContinuous.Add(StatType.PenetrationFixed, new StatBaseContinuous()); battleStatContinuous.Add(StatType.PenetrationMult, new StatBaseContinuous()); battleStatContinuous.Add(StatType.MoveSpeed, new StatBaseContinuous()); battleStatDiscrete.Add(StatType.AttackRange, new StatBaseDiscrete()); battleStatContinuous.Add(StatType.Shield, new StatBaseContinuous()); battleStatContinuous.Add(StatType.Health, new StatBaseContinuous()); //Debug.Log("input Range : "+input.BaseAttackRange); //Debug.Log("input MaxHP : " + input.BaseHealthMax); BaseHealthMax = input.BaseHealthMax; BaseDefence = input.BaseDefence; BaseAvoid = input.BaseAvoid; BaseAttack = input.BaseAttack; BaseAttackSpeed = input.BaseAttackSpeed; BaseCriticalChance = input.BaseCriticalChance; BaseCriticalDamage = input.BaseCriticalDamage; BasePenetrationFixed = input.BasePenetrationFixed; BaseMoveSpeed = input.BaseMoveSpeed; BaseAttackRange = input.BaseAttackRange; battleStatContinuous[StatType.Health].BaseValue = HealthMax; // TODO 수정요망 curExp = 0; NextExp = input.NextExp; level = input.level; ownerType = input.ownerType; }
public MonsterData(GameObject input) : base(input) { Monster inputMonster = input.GetComponent <Monster>(); index = inputMonster.index; monsterNum = inputMonster.monsterNum; battleStat = inputMonster.GetBattleStat(); if (inputMonster.GetEnemy() != null) { enemy = new CombatantPtr(inputMonster.GetEnemy()); } skills = inputMonster.GetSkills().Keys.ToList(); temporaryEffects = new Dictionary <string, TemporaryEffectData>(); Dictionary <string, TemporaryEffect> tempEffectsOrigin = inputMonster.GetTemporaryEffects(); foreach (string key in tempEffectsOrigin.Keys.ToList()) { temporaryEffects.Add(key, new TemporaryEffectData(tempEffectsOrigin[key])); } }
public override void OnAttack(float actualDamage, bool isCrit, bool isDodged) { BattleStat myBattleStat = owner.GetBattleStat(); if (!isDodged && actualDamage != 0) { targets.Clear(); SetEnemy(); targets.Add(enemy); attackCnt++; if (attackCnt % INVOKE_PERIOD == 0) { AdditionalAttack(targets, myBattleStat.HealthMax * ATTACK_RATE, 0, 1.0f, false); float healed = myBattleStat.Heal(myBattleStat.HealthMax * HEAL_RATE); if (healed > 1) { owner.DisplayHeal(healed); } DisplaySkillEffect(); } } }
public int this[BattleStat stat] => _base[stat].StatMultiplyBy(FactorFor(stat));
//Skill uniqueSkill; public void InitSpecialAdventurer(StatData stat, BattleStat battleStat, RewardStat rewardStat, string name) { base.InitAdventurer(stat, battleStat, rewardStat); AddSkill(name); //SetPathFindEventSpecialAdventurer(); }
public DurationBuffEffect(BattleStat stat, float factor, int duration) { _stat = stat; _factor = factor; _duration = duration; }
public void SetOwner(SpecialAdventurer spAdv) { owner = spAdv; ownerBattleStat = spAdv.GetBattleStat(); }
public void SetBattleStat(BattleStat battleStat) { }
public int this[BattleStat stat] => GetStat(stat.ToString());
protected void SetMyBattleStat() { myBattleStat = owner.GetBattleStat(); }
public override void InitSkill() { //SetNameAndExplanation("반발력", "방어력이 35% 증가합니다. 공격을 받을 때마다, 방어력의 20%만큼의 피해를 공격자에게 줍니다."); myBattleStat = owner.GetBattleStat(); defenceStatMod = new StatModContinuous(StatType.Defence, ModType.Mult, DEF_BONUS_RATE); }
private float FactorFor(BattleStat stat) { return(_remainingTurnsActive > 0 && stat == _stat ? _factor : 1.0f); }
public int this[BattleStat stat] => GetStat(stat);