public void ElevationLevelUp() { m_MyHeros.ModifyLocked(() => { m_Hero.ElevationLevel += 1; }); PlayerAchievementLogic.GetInstance(m_UserId).UpdateAchievement(AchievementType.HeroElevationLevel, m_Hero.ElevationLevel); AnnouncementLogic.PushHeroElevationAnnouncement(m_UserId, m_Hero.ElevationLevel, m_Hero.HeroType); RefreshMight(); }
public int AddNewGear(int gearTypeId, int userId, ReceiveItemMethodType method) { m_Gear = new Gears(); m_Gear.Id = (int)CacheSet.GearCache.GetNextNo(); m_Gear.TypeId = gearTypeId; m_Gear.Level = 1; m_Gear.StrengthenLevel = 0; CacheSet.GearCache.Add(m_Gear); PlayerAchievementLogic.GetInstance(userId).UpdateAchievement(AchievementType.GearQuality, m_Gear.Quality); AnnouncementLogic.PushReceiveGearAnnouncement(userId, method, m_Gear.TypeId); return(m_Gear.Id); }
public void ConsciousnessLevelUp() { if (m_Hero.HeroStarLevel >= GameConsts.Hero.MaxConsciousnessLevel) { return; } m_MyHeros.ModifyLocked(() => { m_Hero.ConsciousnessLevel += 1; }); PlayerAchievementLogic.GetInstance(m_UserId).UpdateAchievement(AchievementType.HeroConsiousnessLevel, m_Hero.ConsciousnessLevel); AnnouncementLogic.PushHeroConsciousnessAnnouncement(m_UserId, m_Hero.ConsciousnessLevel, m_Hero.HeroType); RefreshMight(); }
public Dictionary <int, DropItem> OpenAllChance() { Dictionary <int, DropItem> dropItems = new Dictionary <int, DropItem>(); var dataRow = CacheSet.ChanceCostTable.GetData(m_Chance.OpenedChanceRewards.Count + 1); if (dataRow == null) { return(null); } PlayerLogic p = new PlayerLogic(); p.SetUser(m_UserId); switch (m_Type) { case ChanceType.Coin: if (!p.DeductCoin(dataRow.CoinCostAll)) { return(null); } AnnouncementLogic.PushOpenTenCoinChanceAnnouncement(m_UserId); break; case ChanceType.Money: if (!p.DeductMoney(dataRow.MoneyCostAll)) { return(null); } AnnouncementLogic.PushOpenTenMoneyChanceAnnouncement(m_UserId); PlayerAchievementLogic.GetInstance(m_UserId).UpdateAchievement(AchievementType.OpenedMoneyChanceCount, m_Chance.UnopenedChanceRewards.Count); break; default: return(null); } int i = 0; foreach (var item in m_Chance.UnopenedChanceRewards) { while (m_Chance.OpenedChanceRewards.ContainsKey(i)) { i++; } m_Chance.OpenedChanceRewards.Add(i, item.Value.Clone() as DropItem); dropItems.Add(i, item.Value); i++; } m_Chance.UnopenedChanceRewards.Clear(); return(dropItems); }
public void RefreshMight() { int oldMight = m_Hero.Might; var atkData = CacheSet.MightLevelParamTable.GetData(m_Hero.HeroLv); float physicalA_Atk = atkData.PhysicalAttack * atkData.PhysicalAttack / (atkData.PhysicalAttack + m_Hero.PhysicalDefense); float magicalA_Atk = atkData.MagicAttack * atkData.MagicAttack / (atkData.MagicAttack + m_Hero.MagicDefense); //attack relate might float basePhysicalAtk = m_Hero.PhysicalAttack * m_Hero.PhysicalAttack / (m_Hero.PhysicalAttack + atkData.PhysicalDefense * (1 - m_Hero.OppPhysicalDfsReduceRate)); float baseMagicAtk = m_Hero.MagicAttack * m_Hero.MagicAttack / (m_Hero.MagicAttack + atkData.MagicDefense * (1 - m_Hero.OppMagicDfsReduceRate)); float baseAtk = basePhysicalAtk + baseMagicAtk; float cooldownAtk = baseAtk * m_Hero.ReducedSkillCoolDownRate * 1000; float waitingAtk = baseAtk * m_Hero.ReduceSwitchHeroCoolDownRate * 1000; float criticalAtk = baseAtk * m_Hero.CriticalHitRate * m_Hero.CriticalHitProb * 10000; float physicalReflectAtk = physicalA_Atk * m_Hero.PhysicalAtkReflectRate * 100; float magicalReflectAtk = magicalA_Atk * m_Hero.MagicAtkReflectRate * 100; float skillAtk = 50; // for (int i = 0; i < m_Hero.SkillLevels.Count; i++) // { // DTSkillLevelUp skillData = CacheSet.SkillLevelUpTable.GetData(h => (h.HeroType == m_Hero.HeroType && h.SkillIndex == i && h.SkillLevel == m_Hero.SkillLevels[i])); // skillAtk += 10;//skillData.MightParam; // } float atkMight = baseAtk + cooldownAtk + waitingAtk + criticalAtk + physicalReflectAtk + magicalReflectAtk + m_Hero.AdditionalDamage + skillAtk; //HP related might float baseHP = m_Hero.MaxHP; float defenseHP = (m_Hero.PhysicalDefense + m_Hero.MagicDefense) * 6; float antiCriticalHitHP = (physicalA_Atk + magicalA_Atk) * (1 - m_Hero.AntiCriticalHitProb); float RecoverHP = m_Hero.RecoverHP * 0.1f; float damageReduceHP = (m_Hero.PhysicalDefense + m_Hero.MagicDefense) * (1 - m_Hero.DamageReductionRate); float physicalAbsorbHP = basePhysicalAtk * m_Hero.PhysicalAtkHPAbsorbRate * 100; float magicalAbsorbHP = baseMagicAtk * m_Hero.MagicAtkHPAbsorbRate * 100; float hpMight = baseHP + defenseHP - antiCriticalHitHP + RecoverHP - damageReduceHP + physicalAbsorbHP + magicalAbsorbHP; int might = Mathf.RoundToInt(atkMight * hpMight / (atkMight + hpMight)); m_Hero.Might = might; // TraceLog.WriteError("Calculating user:{0}->hero:{1} might:\nMaxHP => {2}\nPhysicalAttack => {3}\nMagicalAttack => {4}\nPhysicalDefense => {5}\nMagicalDefense=>{6}\n" + // "OppPhysicalDfsReduceRate => {7}\nOppMagicDfsReduceRate => {8}\nPhysicalAtkHPAbsorbRate => {9}\nMagicAtkHPAbsorbRate => {10}\nPhysicalAtkReflectRate => {11}\n" + // "MagicAtkReflectRate => {12}\nDamageReductionRate => {13}\nReducedSkillCoolDownRate => {14}\nReduceSwitchHeroCoolDownRate => {15}\nCriticalHitProb => {16}\n" + // "CriticalHitRate => {17}\nAntiCriticalHitProb => {18}\nAdditionalDamage => {19}\nRecoverHP => {20}\nBaseAtk => {21}\nAtkMight => {22}\nHPMight => {23}", m_UserId, m_HeroId, m_Hero.MaxHP, m_Hero.PhysicalAttack, m_Hero.MagicAttack, // m_Hero.PhysicalDefense, m_Hero.MagicDefense, m_Hero.OppPhysicalDfsReduceRate, m_Hero.OppMagicDfsReduceRate, m_Hero.PhysicalAtkHPAbsorbRate, m_Hero.MagicAtkHPAbsorbRate, // m_Hero.PhysicalAtkReflectRate, m_Hero.MagicAtkReflectRate, m_Hero.DamageReductionRate, m_Hero.ReducedSkillCoolDownRate, m_Hero.ReduceSwitchHeroCoolDownRate, // m_Hero.CriticalHitProb, m_Hero.CriticalHitRate, m_Hero.AntiCriticalHitProb, m_Hero.AdditionalDamage, m_Hero.RecoverHP, baseAtk, atkMight, hpMight); PlayerAchievementLogic.GetInstance(m_UserId).UpdateAchievement(AchievementType.HeroMight, m_Hero.Might); AnnouncementLogic.PushHeroMightAnnouncement(m_UserId, oldMight, might, m_Hero.HeroType); PlayerLogic p = new PlayerLogic(); p.SetUser(m_UserId); p.RefreshMight(); }
public void AddLevel(int level) { if (CacheSet.PlayerTable.GetData(MyPlayer.Level + level) == null) { return; } else { MyPlayer.Level += level; } var pa = PlayerAchievementLogic.GetInstance(MyPlayer.Id); pa.UpdateAchievement(AchievementType.PlayerLevel, MyPlayer.Level); pa.OpenNewAchievement(MyPlayer.Level); AnnouncementLogic.PushLevelUpAnnouncement(MyPlayer.Id, MyPlayer.Level); MyPlayer.Exp = 0; }
public bool Strengthen(int userId) { if (m_Gear.StrengthenLevel >= GameConsts.Gear.MaxStrengthenLevel) { return(false); } Random r = new Random(); if (r.Next(100) > GameConsts.Gear.StrengthenSuccessRate[m_Gear.Quality][m_Gear.StrengthenLevel]) { return(false); } PlayerAchievementLogic.GetInstance(userId).UpdateAchievement(AchievementType.GearLevel, m_Gear.StrengthenLevel, m_Gear.StrengthenLevel + 1); m_Gear.StrengthenLevel += 1; AnnouncementLogic.PushGearStrengthenAnnouncement(userId, m_Gear.StrengthenLevel, m_Gear.TypeId); return(true); }
public void Execute() { DBProvider db = new DBProvider("Game"); string now = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"); string condition = string.Format("BeginTime < '{0}' and ExpireTime > '{1}'", now, now); var announces = db.Select(Table, "Id,Type,Message,BeginTime,IntervalMinutes", condition); foreach (var announce in announces) { if ((int)announce["IntervalMinutes"] == 0 && (int)announce["Pushed"] == 0) { var dt = (DateTime)announce["BeginTime"]; if (DateTime.UtcNow.Ticks - dt.Ticks <= TimeSpan.TicksPerMinute) { if ((int)announce["Type"] == (int)AnnounceType.SystemNotice) { AnnouncementLogic.PushSystemNotice((string)announce["Message"]); } else { AnnouncementLogic.PushAdvertisement((string)announce["Message"]); } } } else if ((int)announce["IntervalMinutes"] != 0) { var dt = (DateTime)announce["BeginTime"]; if (((DateTime.UtcNow.Ticks - dt.Ticks) / TimeSpan.TicksPerMinute) % (int)announce["IntervalMinutes"] == 0) { if ((int)announce["Type"] == (int)AnnounceType.SystemNotice) { AnnouncementLogic.PushSystemNotice((string)announce["Message"]); } else { AnnouncementLogic.PushAdvertisement((string)announce["Message"]); } } } else { continue; } } }
public ItemListItem AddNewHero(int heroId, ReceiveItemMethodType method = ReceiveItemMethodType.None) { Hero playerHero; var HeroData = CacheSet.HeroTable.GetData(heroId); if (m_MyHeros.Heros.TryGetValue(heroId, out playerHero)) { int itemId = HeroData.StarLevelUpItemId; ItemListItem item = new ItemListItem() { Id = itemId, Count = GameConfigs.GetInt("Hero_Piece_Count_For_Star_Level_" + HeroData.DefaultStarLevel, 10) }; return(item); } else { Hero hero = new Hero(); int star = HeroData.DefaultStarLevel;//TODO read config hero.HeroType = heroId; hero.HeroExp = 0; hero.HeroLv = 1; hero.HeroStarLevel = star; hero.ConsciousnessLevel = 0; hero.ElevationLevel = 0; m_HeroId = heroId; hero.SkillLevels.AddRange(new int[] { 1, 1, 1, 1, 1, 0, 0, 0, 0, 1 }); hero.SkillExps.AddRange(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }); m_MyHeros.ModifyLocked(() => { m_MyHeros.Heros[heroId] = hero; m_Hero = m_MyHeros.Heros[heroId]; RefreshMight(); }); PlayerAchievementLogic.GetInstance(m_UserId).UpdateAchievement(AchievementType.HeroCount, MyHeros.Heros.Count); AnnouncementLogic.PushReceiveHeroAnnouncement(m_UserId, method, hero.HeroType); } return(null); }