//for deactivating powerups IEnumerator ResetAfterTime(float time, SkillStat curStat, SkillStatBoost statBoost) { yield return(new WaitForSeconds(time)); //csak a "time" után folytatódik ez a függvény curStat.ModifyStatValues(statBoost.multiplierDifference * (-1), statBoost.valueDifference * (-1)); ApplyStatChange(statBoost.name); }
private void UpdateHealthBar(SkillStat skill) { var now = skill.CurrentValue; var next = skill.Level; pbHealth.progress = (float)now / (float)next; }
public Skill(string name, string description, SkillStat stat, SkillDifficulty difficulty) { Name = name; Description = description; Stat = stat; Difficulty = difficulty; RelativeLevel = null; }
public void PlayerLevelUp(PlayerController player, SkillStat skill) { if (!player) { return; } SaveGameStat("last-level-up-name", player.PlayerName); SaveGameStat("last-level-up-skill", skill?.ToString()); }
public override void Handle(PlayerStatsRequest data, GameClient client) { var player = this.PlayerManager.GetPlayer(data.Player); if (!player) { client.SendCommand(data.Player.Username, "player_stats", "You are not currently playing. Use !join to start playing!"); return; } var ps = player.Stats; var eq = player.EquipmentStats; if (!string.IsNullOrEmpty(data.Skill)) { SkillStat skill = null; var csi = player.GetCombatTypeFromArgs(data.Skill); if (csi != -1) { skill = player.GetCombatSkill(csi); } if (skill == null) { var cs = player.GetSkillTypeFromArgs(data.Skill); if (cs != -1) { skill = player.GetSkill(cs); } } if (skill != null) { client.SendCommand(data.Player.Username, "player_stats", skill.ToString()); } return; } var combatLevel = ps.CombatLevel; var skills = ""; var total = ps .GetType() .GetFields(BindingFlags.Instance | BindingFlags.Public) .Where(x => x.FieldType == typeof(SkillStat)) .Select(x => { skills += (SkillStat)x.GetValue(ps) + ", "; return(x); }) .Sum(x => ((SkillStat)x.GetValue(ps)).Level); client.SendCommand(data.Player.Username, "player_stats", $"Combat level {combatLevel}, " + skills + $" -- TOTAL {total} --, " + $"Eq - power {eq.WeaponPower}, " + $"aim {eq.WeaponAim}, " + $"armor {eq.ArmorPower}"); }
public override void Handle(HighestSkillRequest data, GameClient client) { var players = this.PlayerManager.GetAllPlayers(); var isCombatSkill = false; var anySkill = true; var skillName = data.Skill; if (Enum.TryParse <CombatSkill>(skillName, true, out var combat)) { isCombatSkill = true; } if (Enum.TryParse <Skill>(skillName, true, out var skill)) { anySkill = false; } // get the player with highest exp on any skill. SkillStat highest = null; PlayerController p = null; foreach (var player in players) { if (isCombatSkill) { var combatSkill = player.GetCombatSkill(combat); if (highest == null || highest.Experience < combatSkill.Experience) { p = player; highest = combatSkill; } } else if (!anySkill) { var secondary = player.GetSkill((int)skill); if (highest == null || highest.Experience < secondary.Experience) { p = player; highest = secondary; } } } if (p == null || highest == null) { client.SendCommand(data.Player.Username, "highest_skill", $"No player could be found that has a skill named {skillName}"); return; } client.SendCommand(data.Player.Username, "highest_skill", $"{p.PlayerName} has the highest level {skillName} with level {highest.Level}."); }
internal void TakeBestOf(Skills target) { for (int i = 0; i < SkillList.Length; i++) { SkillStat skill = SkillList[i]; SkillStat tskill = target.SkillList[i]; if (tskill.Experience > skill.Experience) { skill.SetExp(tskill.Experience); } } }
public void init(Quaternion direction, SkillStat stat, Transform target) { transform.rotation = direction; List <float> stats = stat.getStats(); damage = stats[2]; duration = stats[3]; speed = stats[4]; normalizedSpeed = (transform.rotation * new Vector3(1, 0, 0)).normalized * speed; type = stat.getSkillType(); this.target = target; }
public static float CalculateSkillDamage(SkillStat skillStat, int targetLevel) { var levelDiff = skillStat.CurrentValue - targetLevel; var hit = Mathf.Max(1f, Math.Abs(levelDiff)); if (levelDiff >= 5 || UnityEngine.Random.value <= 0.5) { return(hit); } return(0); }
public override void Handle(PlayerStatsRequest data, GameClient client) { var player = PlayerManager.GetPlayer(data.Player); if (!player) { client.SendMessage(data.Player.Username, Localization.MSG_NOT_PLAYING); return; } if (!string.IsNullOrEmpty(data.Skill)) { var targetPlayer = PlayerManager.GetPlayerByName(data.Skill); if (targetPlayer != null) { SendPlayerStats(targetPlayer, client); return; } SkillStat skill = null; var csi = player.GetCombatTypeFromArgs(data.Skill); if (csi != -1) { skill = player.GetCombatSkill(csi); } if (skill == null) { var cs = player.GetSkillTypeFromArgs(data.Skill); if (cs != -1) { skill = player.GetSkill((Skill)cs); } } if (skill != null) { var expRequired = GameMath.ExperienceForLevel(skill.Level + 1); var expReq = (long)expRequired; var curExp = (long)skill.Experience; client.SendMessage(data.Player.Username, Localization.MSG_SKILL, skill.ToString(), FormatValue(curExp), FormatValue(expReq)); } return; } SendPlayerStats(player, client); }
//ezt hívjuk meg amikor változtatni akarjuk a statokat public void ApplyStatBoost(SkillStatBoost statBoost) { SkillStat curStat = skillStats.Find(x => x.name == statBoost.name); //megkeressük a változtatnivaló stat-ot a listában curStat.ModifyStatValues(statBoost.multiplierDifference, statBoost.valueDifference); //modify-oljuk ezt a statot //(magában a SkillStat class-ban van ez a függvény) ApplyStatChange(statBoost.name); //ha powerup, akkor a powerupDuration után reverse-elni akarjuk if (statBoost.isPowerup) { StartCoroutine(ResetAfterTime(statBoost.duration, curStat, statBoost)); } }
private void UpdateSkillProgressBar(SkillStat skill) { var thisLevelExp = GameMath.LevelToExperience(skill.Level); var nextLevelExp = GameMath.LevelToExperience(skill.Level + 1); var now = skill.Experience - thisLevelExp; var next = nextLevelExp - thisLevelExp; pbSkill.progress = (float)now / (float)next; var expPerHour = skill.GetExperiencePerHour(); if (lblExpPerHour && ExpPerHourVisible) { SetText(lblExpPerHour, Utility.FormatValue(expPerHour) + " xp / h"); } }
public Skills() { Attack = new SkillStat(nameof(Attack), 0); Defense = new SkillStat(nameof(Defense), 0); Strength = new SkillStat(nameof(Strength), 0); Health = new SkillStat(nameof(Health), 1000); Woodcutting = new SkillStat(nameof(Woodcutting), 0); Fishing = new SkillStat(nameof(Fishing), 0); Mining = new SkillStat(nameof(Mining), 0); Crafting = new SkillStat(nameof(Crafting), 0); Cooking = new SkillStat(nameof(Cooking), 0); Farming = new SkillStat(nameof(Farming), 0); Magic = new SkillStat(nameof(Magic), 0); Ranged = new SkillStat(nameof(Ranged), 0); Slayer = new SkillStat(nameof(Slayer), 0); Sailing = new SkillStat(nameof(Sailing), 0); }
public Skills(RavenNest.Models.Skills skills) { Attack = new SkillStat(nameof(Attack), skills.Attack); Defense = new SkillStat(nameof(Defense), skills.Defense); Strength = new SkillStat(nameof(Strength), skills.Strength); Health = new SkillStat(nameof(Health), skills.Health); Woodcutting = new SkillStat(nameof(Woodcutting), skills.Woodcutting); Fishing = new SkillStat(nameof(Fishing), skills.Fishing); Mining = new SkillStat(nameof(Mining), skills.Mining); Crafting = new SkillStat(nameof(Crafting), skills.Crafting); Cooking = new SkillStat(nameof(Cooking), skills.Cooking); Farming = new SkillStat(nameof(Farming), skills.Farming); Magic = new SkillStat(nameof(Magic), skills.Magic); Ranged = new SkillStat(nameof(Ranged), skills.Ranged); Slayer = new SkillStat(nameof(Slayer), skills.Slayer); Sailing = new SkillStat(nameof(Sailing), skills.Sailing); }
public override void Handle(PlayerStatsRequest data, GameClient client) { var player = PlayerManager.GetPlayer(data.Player); if (!player) { client.SendCommand(data.Player.Username, "player_stats", "You are not currently playing. Use !join to start playing!"); return; } if (!string.IsNullOrEmpty(data.Skill)) { var targetPlayer = PlayerManager.GetPlayerByName(data.Skill); if (targetPlayer != null) { SendPlayerStats(targetPlayer, client); return; } SkillStat skill = null; var csi = player.GetCombatTypeFromArgs(data.Skill); if (csi != -1) { skill = player.GetCombatSkill(csi); } if (skill == null) { var cs = player.GetSkillTypeFromArgs(data.Skill); if (cs != -1) { skill = player.GetSkill(cs); } } if (skill != null) { client.SendCommand(data.Player.Username, "player_stats", skill.ToString()); } return; } SendPlayerStats(player, client); }
public void ShowSkillRange(int skill) { currentSkill = skillStats[skill]; Transform transform = GetComponent <Transform>(); switch (currentSkill.getSkillType()) { case SkillStat.SkillType.Projectile: skillRange = Instantiate(currentSkill.getPrefabs()[1], new Vector3(transform.position.x, transform.position.y, -2), Quaternion.identity); skillRange.GetComponent <SkillRange>().init(this, false); currentSkillNum = skill; break; case SkillStat.SkillType.TargetedProjectile: skillRange = Instantiate(currentSkill.getPrefabs()[1], new Vector3(transform.position.x, transform.position.y, -2), Quaternion.identity); skillRange.GetComponent <SkillRange>().init(this, true); currentSkillNum = skill; break; } }
public Skills() { Attack = new SkillStat(nameof(Attack), 1, 0); Defense = new SkillStat(nameof(Defense), 1, 0); Strength = new SkillStat(nameof(Strength), 1, 0); Health = new SkillStat(nameof(Health), 10, 1000); Woodcutting = new SkillStat(nameof(Woodcutting), 1, 0); Fishing = new SkillStat(nameof(Fishing), 1, 0); Mining = new SkillStat(nameof(Mining), 1, 0); Crafting = new SkillStat(nameof(Crafting), 1, 0); Cooking = new SkillStat(nameof(Cooking), 1, 0); Farming = new SkillStat(nameof(Farming), 1, 0); Magic = new SkillStat(nameof(Magic), 1, 0); Ranged = new SkillStat(nameof(Ranged), 1, 0); Slayer = new SkillStat(nameof(Slayer), 1, 0); Sailing = new SkillStat(nameof(Sailing), 1, 0); Healing = new SkillStat(nameof(Healing), 1, 0); skills = new ConcurrentDictionary <string, SkillStat>( SkillList.ToDictionary(x => x.Name.ToLower(), x => x)); }
public void ApplyStatChange(SkillStatName skillName) { SkillStat curStat = skillStats.Find(x => x.name == skillName); float newValue = curStat.GetCurValue(); switch (skillName) { case SkillStatName.MaxHealth: myHealthScript.maxHealth = (int)newValue; myHealthScript.UpdateHealthVisuals(); //ha megv�ltozik a maxHealth, a visual representation is m�s lesz break; case SkillStatName.MoveSpeed: myControllerScript.moveSpeed = newValue; break; case SkillStatName.BaseDamageMultiplier: myWeaponManager.damageMultiplier = newValue; myWeaponManager.UpdateCurWeaponStats(); break; case SkillStatName.ShootingCooldownMultiplier: myWeaponManager.cooldownMultiplier = newValue; myWeaponManager.UpdateCurWeaponStats(); break; case SkillStatName.BulletSpeedMultiplier: myWeaponManager.bulletSpeedMultiplier = newValue; myWeaponManager.UpdateCurWeaponStats(); break; default: Debug.LogError("You probably havent set up your new SkillStat here properly"); break; } }
public static float CalculateHouseExpBonus(SkillStat skill) { // up to 50% exp bonus return((skill.Level / (float)OldMaxLevel) * MaxExpBonusPerSlot); }
private void UpdateSkillProgressBar(SkillStat skill) { var nextLevelExp = GameMath.ExperienceForLevel(skill.Level + 1); pbSkill.Progress = skill.Experience > 0 && nextLevelExp > 0 ? ((float)(skill.Experience / nextLevelExp)) : 0; var expPerHour = skill.GetExperiencePerHour(); var expLeft = nextLevelExp - skill.Experience; if (lblExpPerHour) { SetText(lblExpPerHour, ""); switch (ExpProgressHelpState) { case ExpProgressHelpStates.ExpLeft: SetText(lblExpPerHour, FormatValue((long)expLeft) + " xp"); break; case ExpProgressHelpStates.TimeLeft: { if (expPerHour <= 0 || expLeft <= 0) { break; } var hours = (double)(expLeft / expPerHour); if (hours < 1) { var minutes = hours * 60d; if (minutes > 1) { SetText(lblExpPerHour, (int)minutes + "m"); } else { var seconds = minutes * 60d; SetText(lblExpPerHour, (int)seconds + "s"); } } else { var minutes = (int)(hours - (long)hours) * 60d; if (minutes > 1) { SetText(lblExpPerHour, (int)hours + "h " + minutes + "m"); } else { SetText(lblExpPerHour, (int)hours + "h"); } } } break; case ExpProgressHelpStates.ExpPerHour: if (expPerHour <= 0) { break; } SetText(lblExpPerHour, Utility.FormatValue(expPerHour) + " xp / h"); break; } } }
public void ItemUse(Player player, int itemId, WorldPosition position) { StorageItem i = Global.StorageService.GetItemById(player.Inventory, itemId); if (i == null) { return; } if (!CanUseItem(player, i, null, true)) { return; } if (i.ItemTemplate.Id == 98) //Campfire { if (MapService.TryPutCampfire(player, position)) { Global.StorageService.RemoveItemById(player, player.Inventory, itemId, 1); } return; } ItemTemplate template = i.ItemTemplate; SkillStat skillStat = template.CatigorieStat as SkillStat; if (skillStat == null && template.CombatItemType != CombatItemType.RECIPE) { return; } switch (template.CombatItemType) { case CombatItemType.SKILLBOOK: Global.SkillsLearnService.UseSkillBook(player, template.Id); break; case CombatItemType.IMMEDIATE: case CombatItemType.DISPOSAL: { Global.SkillEngine.UseSkill( player.Connection, new UseSkillArgs { IsItemSkill = true, SkillId = skillStat.SkillId, StartPosition = position, }); new SpItemCooldown(itemId, template.Cooltime).Send(player); } break; case CombatItemType.NO_COMBAT: //new SpSystemNotice("Process use NO_COMBAT item").Send(player.Connection); break; case CombatItemType.RECIPE: Global.CraftService.AddRecipe(player, itemId); SystemMessages.YouLearnedToMakeRecipe("@item:" + itemId); //new SpSystemNotice("You learned new recipe").Send(player.Connection); break; } int groupId = ItemTemplate.Factory(itemId).CoolTimeGroup; if (groupId != 0) { if (player.ItemCoodowns.ContainsKey(groupId)) { player.ItemCoodowns[groupId] = RandomUtilities.GetCurrentMilliseconds(); } else { player.ItemCoodowns.Add(groupId, RandomUtilities.GetCurrentMilliseconds()); } } Global.StorageService.RemoveItemById(player, player.Inventory, itemId, 1); }
public static float CalculateHouseExpBonus(SkillStat skill) { // up to 50% exp bonus return((skill.CurrentValue / (float)MaxLevel) * 50f); }
public override void Handle(HighestSkillRequest data, GameClient client) { var players = PlayerManager.GetAllPlayers(); var isCombatSkill = false; var anySkill = true; var skillName = data.Skill; if (skillName.Equals("all", StringComparison.OrdinalIgnoreCase) || skillName.Equals("overall", StringComparison.OrdinalIgnoreCase)) { var highestAll = players.OrderByDescending(x => x.Stats.LevelList.Sum()).FirstOrDefault(); if (highestAll != null) { client.SendFormat(data.Player.Username, Localization.MSG_HIGHEST_TOTAL, highestAll.PlayerName, highestAll.Stats.LevelList.Sum()); return; } } if (skillName.Equals("combat", StringComparison.OrdinalIgnoreCase) || skillName.Equals("level", StringComparison.OrdinalIgnoreCase)) { var highestAll = players.OrderByDescending(x => x.Stats.CombatLevel).FirstOrDefault(); if (highestAll != null) { client.SendFormat(data.Player.Username, Localization.MSG_HIGHEST_COMBAT, highestAll.PlayerName, highestAll.Stats.CombatLevel); return; } } if (Enum.TryParse <CombatSkill>(skillName, true, out var combat)) { isCombatSkill = true; } if (Enum.TryParse <Skill>(skillName, true, out var skill)) { anySkill = false; } // get the player with highest exp on any skill. SkillStat highest = null; PlayerController p = null; foreach (var player in players) { if (isCombatSkill) { var combatSkill = player.GetCombatSkill(combat); if (highest == null || (highest.Level <= combatSkill.Level && highest.Experience < combatSkill.Experience)) { p = player; highest = combatSkill; } } else if (!anySkill) { var secondary = player.GetSkill(skill); if (highest == null || (highest.Level <= secondary.Level && highest.Experience < secondary.Experience)) { p = player; highest = secondary; } } } if (p == null || highest == null) { return; } client.SendFormat(data.Player.Username, Localization.MSG_HIGHEST_SKILL, p.PlayerName, skillName, highest.Level); }
public void Observe(SkillStat stat) { this.observedStat = stat; }
public override void Handle(HighestSkillRequest data, GameClient client) { var players = PlayerManager.GetAllPlayers(); var isCombatSkill = false; var anySkill = true; var skillName = data.Skill; if (skillName.Equals("all", StringComparison.OrdinalIgnoreCase) || skillName.Equals("overall", StringComparison.OrdinalIgnoreCase)) { var highestAll = players.OrderByDescending(x => x.Stats.LevelList.Sum()).FirstOrDefault(); if (highestAll != null) { client.SendCommand(data.Player.Username, "highest_skill", $"{highestAll.PlayerName} has the highest total level with {highestAll.Stats.LevelList.Sum()}."); return; } } if (skillName.Equals("combat", StringComparison.OrdinalIgnoreCase) || skillName.Equals("level", StringComparison.OrdinalIgnoreCase)) { var highestAll = players.OrderByDescending(x => x.Stats.CombatLevel).FirstOrDefault(); if (highestAll != null) { client.SendCommand(data.Player.Username, "highest_skill", $"{highestAll.PlayerName} has the highest combat level with {highestAll.Stats.CombatLevel}."); return; } } if (Enum.TryParse <CombatSkill>(skillName, true, out var combat)) { isCombatSkill = true; } if (Enum.TryParse <Skill>(skillName, true, out var skill)) { anySkill = false; } // get the player with highest exp on any skill. SkillStat highest = null; PlayerController p = null; foreach (var player in players) { if (isCombatSkill) { var combatSkill = player.GetCombatSkill(combat); if (highest == null || highest.Experience < combatSkill.Experience) { p = player; highest = combatSkill; } } else if (!anySkill) { var secondary = player.GetSkill((int)skill); if (highest == null || highest.Experience < secondary.Experience) { p = player; highest = secondary; } } } if (p == null || highest == null) { client.SendCommand(data.Player.Username, "highest_skill", $"No player could be found that has a skill named {skillName}"); return; } client.SendCommand(data.Player.Username, "highest_skill", $"{p.PlayerName} has the highest level {skillName} with level {highest.Level}."); }