public static void CheckAtrophy(Mobile from) { PlayerMobile pm = from as PlayerMobile; if (pm == null) { return; } try { if ((pm.LastSacrificeLoss + LossDelay) < DateTime.UtcNow) { if (VirtueHelper.Atrophy(from, VirtueName.Sacrifice, LossAmount)) { from.SendLocalizedMessage(1052041); // You have lost some Sacrifice. } VirtueLevel level = VirtueHelper.GetLevel(from, VirtueName.Sacrifice); pm.AvailableResurrects = (int)level; pm.LastSacrificeLoss = DateTime.UtcNow; } } catch (Exception e) { Diagnostics.ExceptionLogging.LogException(e); } }
public static void CheckAtrophy(Mobile from) { PlayerMobile pm = from as PlayerMobile; if (pm == null) { return; } try { if ((pm.LastValorLoss + LossDelay) < DateTime.UtcNow) { if (VirtueHelper.Atrophy(from, VirtueName.Valor, LossAmount)) { from.SendLocalizedMessage(1054040); // You have lost some Valor. } pm.LastValorLoss = DateTime.UtcNow; } } catch (Exception e) { Diagnostics.ExceptionLogging.LogException(e); } }
public static void ActivateEmbrace(PlayerMobile pm) { int duration = GetHonorDuration(pm); int usedPoints; if (pm.Virtues.Honor < 4399) { usedPoints = 400; } else if (pm.Virtues.Honor < 10599) { usedPoints = 600; } else { usedPoints = 1000; } VirtueHelper.Atrophy(pm, VirtueName.Honor, usedPoints); pm.HonorActive = true; pm.SendLocalizedMessage(1063235); // You embrace your honor BuffInfo.AddBuff( pm, new BuffInfo( BuffIcon.Honored, 1075649, BuffInfo.Blank, TimeSpan.FromSeconds(duration), pm, "You have embraced your honor", true)); Timer.DelayCall( TimeSpan.FromSeconds(duration), m => { m.HonorActive = false; m.LastHonorUse = DateTime.UtcNow; m.SendLocalizedMessage(1063236); // You no longer embrace your honor }, pm); }
public static void CheckAtrophy(Mobile from) { var pm = from as PlayerMobile; if (pm == null) { return; } try { if (pm.LastCompassionLoss + LossDelay < DateTime.UtcNow) { VirtueHelper.Atrophy(from, VirtueName.Compassion, LossAmount); //OSI has no cliloc message for losing compassion. Weird. pm.LastCompassionLoss = DateTime.UtcNow; } } catch { } }
public static void CheckAtrophy(Mobile from) { var pm = from as PlayerMobile; if (pm == null) { return; } try { if ((pm.LastJusticeLoss + LossDelay) < DateTime.UtcNow) { if (VirtueHelper.Atrophy(from, VirtueName.Justice, LossAmount)) { from.SendLocalizedMessage(1049373); // You have lost some Justice. } pm.LastJusticeLoss = DateTime.UtcNow; } } catch { } }
public static void CheckAtrophy(Mobile from) { PlayerMobile pm = from as PlayerMobile; if (pm == null) { return; } try { if (pm.LastCompassionLoss + LossDelay < DateTime.UtcNow) { VirtueHelper.Atrophy(from, VirtueName.Compassion, LossAmount); //OSI has no cliloc message for losing compassion. Weird. pm.LastCompassionLoss = DateTime.UtcNow; } } catch (Exception e) { Server.Diagnostics.ExceptionLogging.LogException(e); } }
public static void Valor(Mobile from, object targ) { var idol = targ as IdolOfTheChampion; if (idol == null || idol.Deleted || idol.Spawn == null || idol.Spawn.Deleted) { from.SendLocalizedMessage(1054035); // You must target a Champion Idol to challenge the Champion's spawn! } else if (from.Hidden) { from.SendLocalizedMessage(1052015); // You cannot do that while hidden. } else if (idol.Spawn.HasBeenAdvanced) { from.SendLocalizedMessage(1054038); // The Champion of this region has already been challenged! } else { var vl = VirtueHelper.GetLevel(from, VirtueName.Valor); if (idol.Spawn.Active) { if (idol.Spawn.Champion != null) //TODO: Message? { return; } int needed, consumed; switch (idol.Spawn.Rank) { case 0: { needed = consumed = 2500; break; } case 1: { needed = consumed = 5000; break; } case 2: { needed = 10000; consumed = 7500; break; } default: { needed = 20000; consumed = 10000; break; } } if (from.Virtues.GetValue((int)VirtueName.Valor) >= needed) { VirtueHelper.Atrophy(from, VirtueName.Valor, consumed); from.SendLocalizedMessage(1054037); // Your challenge is heard by the Champion of this region! Beware its wrath! idol.Spawn.HasBeenAdvanced = true; idol.Spawn.AdvanceLevel(); } else { from.SendLocalizedMessage( 1054039); // The Champion of this region ignores your challenge. You must further prove your valor. } } else { if (vl == VirtueLevel.Knight) { VirtueHelper.Atrophy(from, VirtueName.Valor, 11000); from.SendLocalizedMessage(1054037); // Your challenge is heard by the Champion of this region! Beware its wrath! idol.Spawn.EndRestart(); //idol.Spawn.HasBeenAdvanced = true; } else { from.SendLocalizedMessage( 1054036); // You must be a Knight of Valor to summon the champion's spawn in this manner! } } } }
public static void OnVirtueUsed(Mobile from) { if (!from.Alive) { return; } if (VirtueHelper.GetLevel(from, VirtueName.Spirituality) < VirtueLevel.Seeker) { from.SendLocalizedMessage(1155829); // You must be a Seeker of Spirituality to invoke this Virtue. } else { from.SendLocalizedMessage(1155827); // Target whom you wish to embrace with your Spirituality from.BeginTarget( 10, false, TargetFlags.None, (mobile, targeted) => { if (targeted is Mobile) { var m = (Mobile)targeted; if (VirtueHelper.GetLevel(from, VirtueName.Spirituality) < VirtueLevel.Seeker) { from.SendLocalizedMessage(1155812); // You must be at least a Seeker of Humility to Invoke this ability. } else if (!m.Alive) { from.SendLocalizedMessage(1155828); // Thy target must be among the living. } else if (m is BaseCreature && !((BaseCreature)m).Controlled && !((BaseCreature)m).Summoned) { from.SendLocalizedMessage(1155837); // You can only embrace players and pets with Spirituality. } else if (IsEmbracee(m)) { from.SendLocalizedMessage(1155836); // They are already embraced by Spirituality. } else if (m.MeleeDamageAbsorb > 0) { from.SendLocalizedMessage( 1156039); // You may not use the Spirituality Virtue while the Attunement spell is active. } else if (m is BaseCreature || m is PlayerMobile) { var context = new SpiritualityContext(from, m); ActiveTable[from] = context; m.SendLocalizedMessage(1155839); // Your spirit has been embraced! You feel more powerful! from.SendLocalizedMessage(1155835); // You have lost some Spirituality. BuffInfo.AddBuff( m, new BuffInfo( BuffIcon.Spirituality, 1155824, 1155825, string.Format( "{0}\t{1}", context.Reduction.ToString(), context.Pool.ToString()))); // ~1_VAL~% Reduction to Incoming Damage<br>~2_VAL~ Shield HP Remaining VirtueHelper.Atrophy(from, VirtueName.Spirituality, 3200); Timer.DelayCall( TimeSpan.FromMinutes(20), () => { if (ActiveTable != null && ActiveTable.ContainsKey(from)) { ActiveTable.Remove(from); m.SendLocalizedMessage(1155840); // Your spirit is no longer embraced. You feel less powerful. BuffInfo.RemoveBuff(m, BuffIcon.Spirituality); } }); } } else { from.SendLocalizedMessage(1155837); // You can only embrace players and pets with Spirituality. } }); } }
public static void OnVirtueUsed(Mobile from) { if (VirtueHelper.GetLevel(from, VirtueName.Humility) < VirtueLevel.Seeker) { from.SendLocalizedMessage(1155812); // You must be at least a Seeker of Humility to Invoke this ability. } else if (from.Alive) { from.SendLocalizedMessage(1155817); // Target the pet you wish to embrace with your Humility. from.BeginTarget( 10, false, TargetFlags.None, (m, targeted) => { if (targeted is BaseCreature) { BaseCreature bc = (BaseCreature)targeted; if (!bc.Alive) { from.SendLocalizedMessage(1155815); // You cannot embrace Humility on the dead! } else if (VirtueHelper.GetLevel(m, VirtueName.Humility) < VirtueLevel.Seeker) { from.SendLocalizedMessage(1155812); // You must be at least a Seeker of Humility to Invoke this ability. } else if (!bc.Controlled && !bc.Summoned) { from.SendLocalizedMessage(1155813); // You can only embrace your Humility on a pet. } else if (ActiveTable.ContainsKey(bc)) { from.SendLocalizedMessage(1156047); // That pet has already embraced Humility. } else { VirtueHelper.Atrophy(from, VirtueName.Humility, 3200); from.SendLocalizedMessage(1155818); // You have lost some Humility. ActiveTable[bc] = from; m.PrivateOverheadMessage( MessageType.Regular, 1150, 1155819, from.NetState); // *Your pet surges with the power of your Humility!* bc.FixedEffect(0x373A, 10, 16); BuffInfo.AddBuff( from, new BuffInfo( BuffIcon.Humility, 1156049, 1156050, TimeSpan.FromMinutes(20), from, string.Format("{0}\t{1}", bc.Name, GetRegenBonus(bc)))); // Pet: ~1_NAME~<br>+~2_VAL~ HPR<br> CheckTimer(); bc.ResetStatTimers(); Timer.DelayCall( TimeSpan.FromMinutes(20), mob => { if (mob != null && ActiveTable.ContainsKey(mob)) { Mobile user = ActiveTable[mob]; ActiveTable.Remove(mob); BuffInfo.RemoveBuff(user, BuffIcon.Humility); user.PrivateOverheadMessage( MessageType.Regular, 1150, 1155823, from.NetState); // *Your pet's power returns to normal* CheckTimer(); } }, bc); } } else { from.SendLocalizedMessage(1155813); // You can only embrace your Humility on a pet. } }); } }