/// <summary> /// Load the Power from the XmlNode. /// </summary> /// <param name="objNode">XmlNode to load.</param> public void Load(XmlNode objNode) { if (!objNode.TryGetField("guid", Guid.TryParse, out _guiID)) { _guiID = Guid.NewGuid(); } if (objNode["sourceid"] == null || !objNode.TryGetField("sourceid", Guid.TryParse, out _guiSourceID)) { XmlNode node = GetNode(GlobalOptions.Language); if (!(node.TryGetField("id", Guid.TryParse, out _guiSourceID))) { string strPowerName = Name; int intPos = strPowerName.IndexOf('('); if (intPos != -1) { strPowerName = strPowerName.Substring(0, intPos - 1); } XmlDocument objXmlDocument = XmlManager.Load("powers.xml"); XmlNode xmlPower = objXmlDocument.SelectSingleNode("/chummer/powers/power[starts-with(./name,\"" + strPowerName + "\")]"); if (xmlPower.TryGetField("id", Guid.TryParse, out _guiSourceID)) { _objCachedMyXmlNode = null; } } } objNode.TryGetStringFieldQuickly("name", ref _strName); Extra = objNode["extra"]?.InnerText ?? string.Empty; _strPointsPerLevel = objNode["pointsperlevel"]?.InnerText; objNode.TryGetStringFieldQuickly("action", ref _strAction); _strAdeptWayDiscount = objNode["adeptway"]?.InnerText; if (string.IsNullOrEmpty(_strAdeptWayDiscount)) { string strPowerName = Name; int intPos = strPowerName.IndexOf('('); if (intPos != -1) { strPowerName = strPowerName.Substring(0, intPos - 1); } _strAdeptWayDiscount = XmlManager.Load("powers.xml").SelectSingleNode("/chummer/powers/power[starts-with(./name,\"" + strPowerName + "\")]/adeptway")?.InnerText ?? string.Empty; } objNode.TryGetInt32FieldQuickly("rating", ref _intRating); objNode.TryGetBoolFieldQuickly("levels", ref _blnLevelsEnabled); objNode.TryGetInt32FieldQuickly("maxlevel", ref _intMaxLevel); objNode.TryGetBoolFieldQuickly("discounted", ref _blnDiscountedAdeptWay); objNode.TryGetBoolFieldQuickly("discountedgeas", ref _blnDiscountedGeas); objNode.TryGetStringFieldQuickly("bonussource", ref _strBonusSource); objNode.TryGetDecFieldQuickly("freepoints", ref _decFreePoints); objNode.TryGetDecFieldQuickly("extrapointcost", ref _decExtraPointCost); objNode.TryGetStringFieldQuickly("source", ref _strSource); objNode.TryGetStringFieldQuickly("page", ref _strPage); objNode.TryGetStringFieldQuickly("notes", ref _strNotes); Bonus = objNode["bonus"]; if (objNode["adeptway"] != null) { _nodAdeptWayRequirements = objNode["adeptwayrequires"] ?? GetNode()?["adeptwayrequires"]; } if (Name != "Improved Reflexes" && Name.StartsWith("Improved Reflexes")) { XmlNode objXmlPower = XmlManager.Load("powers.xml").SelectSingleNode("/chummer/powers/power[starts-with(./name,\"Improved Reflexes\")]"); if (objXmlPower != null) { if (int.TryParse(Name.TrimStartOnce("Improved Reflexes", true).Trim(), out int intTemp)) { Create(objXmlPower, intTemp, null, false); objNode.TryGetStringFieldQuickly("notes", ref _strNotes); } } } else { XmlNodeList nodEnhancements = objNode.SelectNodes("enhancements/enhancement"); if (nodEnhancements != null) { foreach (XmlNode nodEnhancement in nodEnhancements) { Enhancement objEnhancement = new Enhancement(CharacterObject); objEnhancement.Load(nodEnhancement); objEnhancement.Parent = this; Enhancements.Add(objEnhancement); } } } //TODO: Seems that the MysAd Second Attribute house rule gets accidentally enabled sometimes? if (Rating > TotalMaximumLevels) { Utils.BreakIfDebug(); Rating = TotalMaximumLevels; } else if (Rating + FreeLevels > TotalMaximumLevels) { Utils.BreakIfDebug(); TotalRating = TotalMaximumLevels; } }
public bool Create(XmlNode objNode, int intRating = 1, XmlNode objBonusNodeOverride = null, bool blnCreateImprovements = true) { objNode.TryGetStringFieldQuickly("name", ref _strName); objNode.TryGetField("id", Guid.TryParse, out _guiSourceID); _objCachedMyXmlNode = null; objNode.TryGetStringFieldQuickly("points", ref _strPointsPerLevel); objNode.TryGetStringFieldQuickly("adeptway", ref _strAdeptWayDiscount); objNode.TryGetBoolFieldQuickly("levels", ref _blnLevelsEnabled); _intRating = intRating; if (!objNode.TryGetStringFieldQuickly("altnotes", ref _strNotes)) { objNode.TryGetStringFieldQuickly("notes", ref _strNotes); } if (!objNode.TryGetInt32FieldQuickly("maxlevel", ref _intMaxLevels)) { objNode.TryGetInt32FieldQuickly("maxlevels", ref _intMaxLevels); } objNode.TryGetBoolFieldQuickly("discounted", ref _blnDiscountedAdeptWay); objNode.TryGetBoolFieldQuickly("discountedgeas", ref _blnDiscountedGeas); objNode.TryGetStringFieldQuickly("bonussource", ref _strBonusSource); objNode.TryGetDecFieldQuickly("freepoints", ref _decFreePoints); objNode.TryGetDecFieldQuickly("extrapointcost", ref _decExtraPointCost); objNode.TryGetStringFieldQuickly("action", ref _strAction); objNode.TryGetStringFieldQuickly("source", ref _strSource); objNode.TryGetStringFieldQuickly("page", ref _strPage); Bonus = objNode["bonus"]; if (objBonusNodeOverride != null) { Bonus = objBonusNodeOverride; } _nodAdeptWayRequirements = objNode["adeptwayrequires"]?.CreateNavigator(); XmlNode nodEnhancements = objNode["enhancements"]; if (nodEnhancements != null) { using (XmlNodeList xmlEnhancementList = nodEnhancements.SelectNodes("enhancement")) { if (xmlEnhancementList != null) { foreach (XmlNode nodEnhancement in xmlEnhancementList) { Enhancement objEnhancement = new Enhancement(CharacterObject); objEnhancement.Load(nodEnhancement); objEnhancement.Parent = this; Enhancements.Add(objEnhancement); } } } } if (blnCreateImprovements && Bonus != null && Bonus.HasChildNodes) { string strOldForce = ImprovementManager.ForcedValue; string strOldSelected = ImprovementManager.SelectedValue; ImprovementManager.ForcedValue = Extra; if (!ImprovementManager.CreateImprovements(CharacterObject, Improvement.ImprovementSource.Power, InternalId, Bonus, TotalRating, DisplayNameShort(GlobalOptions.Language))) { ImprovementManager.ForcedValue = strOldForce; DeletePower(); return(false); } Extra = ImprovementManager.SelectedValue; ImprovementManager.SelectedValue = strOldSelected; ImprovementManager.ForcedValue = strOldForce; } if (TotalMaximumLevels < Rating) { Rating = TotalMaximumLevels; } return(true); }
public bool Create(XmlNode objNode, int intRating = 1, XmlNode objBonusNodeOverride = null, bool blnCreateImprovements = true) { Name = objNode["name"].InnerText; _sourceID = Guid.Parse(objNode["id"].InnerText); _objCachedMyXmlNode = null; objNode.TryGetStringFieldQuickly("points", ref _strPointsPerLevel); objNode.TryGetStringFieldQuickly("adeptway", ref _strAdeptWayDiscount); LevelsEnabled = objNode["levels"]?.InnerText == System.Boolean.TrueString; Rating = intRating; objNode.TryGetInt32FieldQuickly("maxlevels", ref _intMaxLevel); objNode.TryGetBoolFieldQuickly("discounted", ref _blnDiscountedAdeptWay); objNode.TryGetBoolFieldQuickly("discountedgeas", ref _blnDiscountedGeas); objNode.TryGetStringFieldQuickly("bonussource", ref _strBonusSource); objNode.TryGetDecFieldQuickly("freepoints", ref _decFreePoints); objNode.TryGetDecFieldQuickly("extrapointcost", ref _decExtraPointCost); objNode.TryGetStringFieldQuickly("action", ref _strAction); objNode.TryGetStringFieldQuickly("source", ref _strSource); objNode.TryGetStringFieldQuickly("page", ref _strPage); objNode.TryGetStringFieldQuickly("notes", ref _strNotes); Bonus = objNode["bonus"]; if (objBonusNodeOverride != null) { Bonus = objBonusNodeOverride; } _nodAdeptWayRequirements = objNode["adeptwayrequires"]; if (objNode.InnerXml.Contains("enhancements")) { XmlNodeList nodEnhancements = objNode.SelectNodes("enhancements/enhancement"); if (nodEnhancements != null) { foreach (XmlNode nodEnhancement in nodEnhancements) { Enhancement objEnhancement = new Enhancement(CharacterObject); objEnhancement.Load(nodEnhancement); objEnhancement.Parent = this; Enhancements.Add(objEnhancement); } } } if (blnCreateImprovements && Bonus != null && Bonus.HasChildNodes) { string strOldForce = ImprovementManager.ForcedValue; string strOldSelected = ImprovementManager.SelectedValue; ImprovementManager.ForcedValue = Extra; if (!ImprovementManager.CreateImprovements(CharacterObject, Improvement.ImprovementSource.Power, InternalId, Bonus, false, TotalRating, DisplayNameShort)) { ImprovementManager.ForcedValue = strOldForce; this.Deleting = true; CharacterObject.Powers.Remove(this); OnPropertyChanged(nameof(TotalRating)); return(false); } Extra = ImprovementManager.SelectedValue; ImprovementManager.SelectedValue = strOldSelected; ImprovementManager.ForcedValue = strOldForce; } if (TotalMaximumLevels < Rating) { Rating = TotalMaximumLevels; OnPropertyChanged(nameof(TotalRating)); } return(true); }
/// <summary> /// Load the Power from the XmlNode. /// </summary> /// <param name="objNode">XmlNode to load.</param> public void Load(XmlNode objNode) { _guiID = Guid.Parse(objNode["guid"].InnerText); Name = objNode["name"].InnerText; if (objNode["id"] != null) { _sourceID = Guid.Parse(objNode["id"].InnerText); _objCachedMyXmlNode = null; } else { string strPowerName = Name; if (strPowerName.Contains('(')) { strPowerName = strPowerName.Substring(0, strPowerName.IndexOf('(') - 1); } XmlDocument objXmlDocument = XmlManager.Load("powers.xml"); XmlNode objXmlPower = objXmlDocument.SelectSingleNode("/chummer/powers/power[starts-with(./name,\"" + strPowerName + "\")]"); if (objXmlPower != null) { _sourceID = Guid.Parse(objXmlPower["id"].InnerText); _objCachedMyXmlNode = null; } } Extra = objNode["extra"].InnerText ?? string.Empty; _strPointsPerLevel = objNode["pointsperlevel"]?.InnerText; objNode.TryGetField("action", out _strAction); if (objNode["adeptway"] != null) { _strAdeptWayDiscount = objNode["adeptway"].InnerText; } else { string strPowerName = Name; if (strPowerName.Contains('(')) { strPowerName = strPowerName.Substring(0, strPowerName.IndexOf('(') - 1); } XmlDocument objXmlDocument = XmlManager.Load("powers.xml"); XmlNode objXmlPower = objXmlDocument.SelectSingleNode("/chummer/powers/power[starts-with(./name,\"" + strPowerName + "\")]"); if (objXmlPower?["adeptway"] != null) { _strAdeptWayDiscount = objXmlPower["adeptway"].InnerText; } } Rating = Convert.ToInt32(objNode["rating"]?.InnerText); LevelsEnabled = objNode["levels"]?.InnerText == System.Boolean.TrueString; objNode.TryGetBoolFieldQuickly("free", ref _blnFree); objNode.TryGetInt32FieldQuickly("maxlevel", ref _intMaxLevel); objNode.TryGetInt32FieldQuickly("freelevels", ref _intFreeLevels); objNode.TryGetBoolFieldQuickly("discounted", ref _blnDiscountedAdeptWay); objNode.TryGetBoolFieldQuickly("discountedgeas", ref _blnDiscountedGeas); objNode.TryGetStringFieldQuickly("bonussource", ref _strBonusSource); objNode.TryGetDecFieldQuickly("freepoints", ref _decFreePoints); objNode.TryGetDecFieldQuickly("extrapointcost", ref _decExtraPointCost); objNode.TryGetStringFieldQuickly("source", ref _strSource); objNode.TryGetStringFieldQuickly("page", ref _strPage); objNode.TryGetStringFieldQuickly("notes", ref _strNotes); Bonus = objNode["bonus"]; if (objNode["adeptway"] != null) { if (objNode["adeptwayrequires"] == null) { XmlNode objXmlPower = MyXmlNode; if (objXmlPower != null) { _nodAdeptWayRequirements = objXmlPower["adeptwayrequires"]; } } else { _nodAdeptWayRequirements = objNode["adeptwayrequires"]; } } if (Name != "Improved Reflexes" && Name.StartsWith("Improved Reflexes")) { XmlDocument objXmlDocument = XmlManager.Load("powers.xml"); XmlNode objXmlPower = objXmlDocument.SelectSingleNode("/chummer/powers/power[starts-with(./name,\"Improved Reflexes\")]"); if (objXmlPower != null) { int intTemp; if (int.TryParse(Name.TrimStart("Improved Reflexes", true).Trim(), out intTemp)) { Create(objXmlPower, intTemp, null, false); objNode.TryGetStringFieldQuickly("notes", ref _strNotes); } } } else { if (!objNode.InnerXml.Contains("enhancements")) { return; } XmlNodeList nodEnhancements = objNode.SelectNodes("enhancements/enhancement"); if (nodEnhancements == null) { return; } foreach (XmlNode nodEnhancement in nodEnhancements) { Enhancement objEnhancement = new Enhancement(CharacterObject); objEnhancement.Load(nodEnhancement); objEnhancement.Parent = this; Enhancements.Add(objEnhancement); } } }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckSequence()) { SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); List <Mobile> targets = new List <Mobile>(); Map map = Caster.Map; if (map != null) { IPooledEnumerable eable = map.GetMobilesInRange(new Point3D(p), Core.AOS ? 2 : 3); foreach (Mobile m in eable) { if (Caster.CanBeBeneficial(m, false)) { targets.Add(m); } } eable.Free(); } if (Core.AOS) { Party party = Party.Get(Caster); for (int i = 0; i < targets.Count; ++i) { Mobile m = targets[i]; if (m == Caster || (party != null && party.Contains(m))) { Caster.DoBeneficial(m); Spells.Second.ProtectionSpell.Toggle(Caster, m); } } } else { Effects.PlaySound(p, Caster.Map, 0x299); int val = (int)(Caster.Skills[SkillName.Magery].Value / 10.0 + 1); bool chargeUsed = false; for (int i = 0; i < targets.Count; ++i) { Mobile m = targets[i]; if (m.BeginAction(typeof(ProtectionSpell))) { if (m.Player) { Caster.DoBeneficial(m); } m.VirtualArmorMod += val; new InternalTimer(m, Caster, val).Start(); bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, null, EnhancedSpellbookType.Wizard, false, false); if (enhancedSpellcast) { chargeUsed = true; } int spellHue = Enhancements.GetMobileSpellHue(Caster, Enhancements.SpellType.ArchProtection); if (enhancedSpellcast) { m.FixedParticles(0x375A, 9, 40, 5027, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1F7); } else { m.FixedParticles(0x375A, 9, 20, 5027, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1F7); } } } if (chargeUsed) { if (Caster.FindItemOnLayer(Layer.OneHanded) is EnhancedSpellbook) { EnhancedSpellbook spellbook = Caster.FindItemOnLayer(Layer.OneHanded) as EnhancedSpellbook; if (spellbook != null) { spellbook.OnSpellCast(Caster); } } } } } FinishSequence(); }
public void Target(IPoint3D p) { IPoint3D orig = p; Map map = Caster.Map; SpellHelper.GetSurfaceTop(ref p); Point3D pP = new Point3D(p); WarpBlockerTotem recallBlocker = WarpBlockerTotem.RecallBlockerTriggered(Caster, WarpBlockerTotem.MovementMode.TeleportIn, pP, Caster.Map); if (recallBlocker != null) { if (recallBlocker.PreventTeleportInResponse != "") { Caster.SendMessage(recallBlocker.PreventTeleportInResponse); } else { Caster.SendMessage(WarpBlockerTotem.DefaultTeleportInResponse); } } else if (Server.Misc.WeightOverloading.IsOverloaded(Caster)) { Caster.SendLocalizedMessage(502359, "", 0x22); // Thou art too encumbered to move. } else if (!SpellHelper.CheckTravel(Caster, TravelCheckType.TeleportFrom)) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else if (!SpellHelper.CheckTravel(Caster, map, pP, TravelCheckType.TeleportTo)) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else if (map == null || !map.CanSpawnMobile(p.X, p.Y, p.Z)) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else if (SpellHelper.CheckMulti(pP, map)) { Caster.SendLocalizedMessage(501942); // That location is blocked. } else { if (CheckSequence()) { SpellHelper.Turn(Caster, orig); Mobile m = Caster; Point3D from = m.Location; Point3D to = pP; m.Location = to; m.ProcessDelta(); int spellHue = Enhancements.GetMobileSpellHue(Caster, Enhancements.SpellType.Teleport); if (m.Player) { Effects.SendLocationParticles(EffectItem.Create(from, m.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, spellHue, 0, 2023, 0); //Player Enhancement Customization: Blink bool blink = false; //PlayerEnhancementPersistance.IsCustomizationEntryActive(Caster, CustomizationType.Blink); if (blink) { int distance = Utility.GetDistance(from, to); Point3D effectStep = from; for (int a = 0; a < distance + 1; a++) { Timer.DelayCall(TimeSpan.FromSeconds(a * .05), delegate { if (m == null) { return; } Direction direction = Utility.GetDirection(effectStep, to); effectStep = SpecialAbilities.GetPointByDirection(effectStep, direction); Effects.SendLocationParticles(EffectItem.Create(effectStep, m.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, spellHue, 0, 2023, 0); m.PlaySound(0x5C6); }); } } else { Effects.SendLocationParticles(EffectItem.Create(to, m.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, spellHue, 0, 2023, 0); m.PlaySound(0x1FE); } } else { m.FixedParticles(0x376A, 9, 32, 0x13AF, spellHue, 0, EffectLayer.Waist); m.PlaySound(0x1FE); } IPooledEnumerable eable = m.GetItemsInRange(0); foreach (Item item in eable) { if (item is Server.Spells.Sixth.ParalyzeFieldSpell.ParalyzeFieldItem || item is Server.Spells.Fifth.PoisonFieldSpell.PoisonFieldItem || item is Server.Spells.Fourth.FireFieldSpell.FireFieldItem) { item.OnMoveOver(m); } } eable.Free(); m.BeginAction(typeof(TeleportSpell)); Timer.DelayCall(TimeSpan.FromSeconds(6), delegate { m.EndAction(typeof(TeleportSpell)); }); } } FinishSequence(); }
public void Target(Mobile mobile) { if (!Caster.CanSee(mobile) || mobile.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(mobile)) { Mobile source = Caster; SpellHelper.Turn(source, mobile); SpellHelper.CheckReflect((int)this.Circle, ref source, ref mobile); double damage = (double)Utility.RandomMinMax(3, 5); double damageBonus = 0; CheckMagicResist(mobile); bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, mobile, EnhancedSpellbookType.Fire, true, true); Boolean chargedSpellcast = SpellHelper.IsChargedSpell(Caster, mobile, true, Scroll != null); Boolean isTamedTarget = SpellHelper.IsTamedTarget(Caster, mobile); int spellHue = Enhancements.GetMobileSpellHue(Caster, Enhancements.SpellType.MagicArrow); if (Caster is PlayerMobile && mobile is BaseCreature) { damageBonus += SpellSpecificCreatureDamageBonus; } if (enhancedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.EnhancedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.EnhancedSpellBonus; } } if (chargedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.ChargedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.ChargedSpellBonus; } source.MovingParticles(mobile, 0x36E4, 3, 0, false, true, spellHue, 0, 3006, 4006, 0, 0); source.MovingParticles(mobile, 0x36E4, 7, 0, false, true, spellHue, 0, 3006, 4006, 0, 0); source.PlaySound(0x1E5); } else { source.MovingParticles(mobile, 0x36E4, 5, 0, false, true, spellHue, 0, 3006, 4006, 0, 0); source.PlaySound(0x1E5); } damage *= GetDamageScalar(mobile, damageBonus); SpellHelper.Damage(this, Caster, mobile, damage); } FinishSequence(); }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckSequence()) { SpellHelper.Turn(Caster, p); SpellHelper.GetSurfaceTop(ref p); List <Mobile> targets = new List <Mobile>(); Map map = Caster.Map; if (map != null) { IPooledEnumerable eable = map.GetMobilesInRange(new Point3D(p), 3); foreach (Mobile m in eable) { if (Caster.CanBeBeneficial(m, false)) { targets.Add(m); } } eable.Free(); } Effects.PlaySound(p, Caster.Map, 0x299); if (targets.Count > 0) { int cured = 0; int spellHue = Enhancements.GetMobileSpellHue(Caster, Enhancements.SpellType.ArchCure); for (int i = 0; i < targets.Count; ++i) { Mobile mobile = targets[i]; if (mobile.Player) { Caster.DoBeneficial(mobile); } if (mobile.CurePoison(Caster)) { ++cured; } if (mobile.Poisoned) { AspectArmorProfile aspectArmorProfile = AspectGear.GetAspectArmorProfile(mobile); //Poison Aspect if (aspectArmorProfile != null) { if (aspectArmorProfile.m_Aspect == AspectEnum.Poison) { double extraCureChance = AspectGear.PoisonCureChanceBonus * (AspectGear.PoisonCureChanceBonusPerTier * (double)aspectArmorProfile.m_TierLevel); if (Utility.RandomDouble() <= extraCureChance) { ++cured; mobile.CurePoison(Caster); //TEST: Add Aspect Visuals } } } } mobile.FixedParticles(0x373A, 10, 15, 5012, spellHue, 0, EffectLayer.Waist); mobile.PlaySound(0x1E0); } if (cured > 0) { Caster.SendLocalizedMessage(1010058); } } } FinishSequence(); }
public void Target(Mobile mobile) { if (!Caster.CanSee(mobile) || mobile.Hidden) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (CheckHSequence(mobile)) { SpellHelper.Turn(Caster, mobile); SpellHelper.CheckReflect((int)this.Circle, Caster, ref mobile); double damage = (double)Utility.RandomMinMax(4, 8); double damageBonus = 0; CheckMagicResist(mobile); bool enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, mobile, EnhancedSpellbookType.Energy, true, true); Boolean chargedSpellcast = SpellHelper.IsChargedSpell(Caster, mobile, true, Scroll != null); Boolean isTamedTarget = SpellHelper.IsTamedTarget(Caster, mobile); int spellHue = Enhancements.GetMobileSpellHue(Caster, Enhancements.SpellType.Harm); if (Caster is PlayerMobile && mobile is BaseCreature) { damageBonus += SpellSpecificCreatureDamageBonus; } if (enhancedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.EnhancedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.EnhancedSpellBonus; } } if (chargedSpellcast) { if (isTamedTarget) { damageBonus += SpellHelper.ChargedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.ChargedSpellBonus; } mobile.FixedParticles(0x374A, 10, 30, 5013, spellHue, 0, EffectLayer.Waist); mobile.PlaySound(0x1F1); } else { mobile.FixedParticles(0x374A, 10, 15, 5013, spellHue, 0, EffectLayer.Waist); mobile.PlaySound(0x1F1); } damage *= GetDamageScalar(mobile, damageBonus); SpellHelper.Damage(this, Caster, mobile, damage); } FinishSequence(); }
public void Target(IPoint3D p) { if (!Caster.CanSee(p)) { Caster.SendLocalizedMessage(500237); // Target can not be seen. } else if (SpellHelper.CheckTown(p, Caster) && CheckSequence()) { bool enhancedSpellcast = false; Boolean chargedSpellcast = false; int spellHue = Enhancements.GetMobileSpellHue(Caster, Enhancements.SpellType.MeteorSwarm); int radius = 3; if (Caster is BaseCreature) { radius += (int)(Math.Floor((Caster.Skills[SkillName.Magery].Value - 75) / 25)); } SpellHelper.Turn(Caster, p); if (p is Item) { p = ((Item)p).GetWorldLocation(); } Map map = Caster.Map; IPooledEnumerable nearbyMobiles = map.GetMobilesInRange(new Point3D(p), radius); Queue m_Queue = new Queue(); int targetCount = 0; bool playerVsCreatureOccurred = false; if (targetCount > 0) { Effects.PlaySound(p, Caster.Map, 0x160); } foreach (Mobile mobile in nearbyMobiles) { if (mobile == Caster) { continue; } if (Caster is BaseCreature) { if (!SpecialAbilities.MonsterCanDamage(Caster, mobile)) { continue; } } if (!Caster.CanBeHarmful(mobile, false)) { continue; } if (Caster is PlayerMobile && mobile is BaseCreature) { playerVsCreatureOccurred = true; } targetCount++; m_Queue.Enqueue(mobile); } nearbyMobiles.Free(); if (playerVsCreatureOccurred) { enhancedSpellcast = SpellHelper.IsEnhancedSpell(Caster, null, EnhancedSpellbookType.Fire, false, true); chargedSpellcast = SpellHelper.IsChargedSpell(Caster, null, false, Scroll != null); } while (m_Queue.Count > 0) { Mobile mobile = (Mobile)m_Queue.Dequeue(); double damage = (double)Utility.RandomMinMax(DamageMin, DamageMax); double damageBonus = 0; CheckMagicResist(mobile); Boolean isTamedTarget = SpellHelper.IsTamedTarget(Caster, mobile); if (Caster is PlayerMobile && mobile is BaseCreature) { damageBonus += SpellSpecificCreatureDamageBonus; } if (enhancedSpellcast && mobile is BaseCreature) { if (isTamedTarget) { damageBonus += SpellHelper.EnhancedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.EnhancedSpellBonus; } } if (chargedSpellcast && mobile is BaseCreature) { if (isTamedTarget) { damageBonus += SpellHelper.ChargedSpellTamedCreatureBonus; } else { damageBonus += SpellHelper.ChargedSpellBonus; } Caster.MovingParticles(mobile, 0x36D4, 5, 0, false, true, spellHue, 0, 9501, 1, 0, 0x100); Caster.MovingParticles(mobile, 0x36D4, 9, 0, false, true, spellHue, 0, 9501, 1, 0, 0x100); } else { Caster.MovingParticles(mobile, 0x36D4, 7, 0, false, true, spellHue, 0, 9501, 1, 0, 0x100); } BaseCreature bc_Target = mobile as BaseCreature; PlayerMobile pm_Target = mobile as PlayerMobile; if (bc_Target != null) { if (bc_Target.ShipOccupied != null) { damage *= BaseShip.shipBasedAoESpellDamageToCreatureScalar; } } if (pm_Target != null) { if (pm_Target.ShipOccupied != null) { damage *= BaseShip.shipBasedAoESpellDamageToPlayerScalar; } } damage *= GetDamageScalar(mobile, damageBonus); SpellHelper.Damage(this, Caster, mobile, damage); } } ArenaFight.SpellCompletion(Caster, typeof(MeteorSwarmSpell)); FinishSequence(); }
protected void Page_Load(object sender, EventArgs e) { if (Request.Cookies["adminid"] != null && Request.Cookies["adminid"].Value != "") { intProfile = Int32.Parse(Request.Cookies["adminid"].Value); } else { Reload(); } oPlatform = new Platforms(intProfile, dsn); oOrganization = new Organizations(intProfile, dsn); oRequestItem = new RequestItems(intProfile, dsn); oUserAt = new Users_At(intProfile, dsn); oCost = new Costs(intProfile, dsn); oService = new Services(intProfile, dsn); oRequestField = new RequestFields(intProfile, dsn); oReport = new Reports(intProfile, dsn); oSites = new Sites(intProfile, dsn); oType = new Types(intProfile, dsn); oModel = new Models(intProfile, dsn); oRacks = new Racks(intProfile, dsn); oBanks = new Banks(intProfile, dsn); oDepot = new Depot(intProfile, dsn); oShelf = new Shelf(intProfile, dsn); oClasses = new Classes(intProfile, dsn); oRooms = new Rooms(intProfile, dsn); oFloor = new Floor(intProfile, dsn); oEnvironment = new Environments(intProfile, dsn); oForecast = new Forecast(intProfile, dsn); oSolution = new Solution(intProfile, dsn); oConfidence = new Confidence(intProfile, dsn); oLocation = new Locations(intProfile, dsn); oField = new Field(intProfile, dsn); oServiceDetail = new ServiceDetails(intProfile, dsn); oDomainController = new DomainController(intProfile, dsn); oDomain = new Domains(intProfile, dsn); oServerName = new ServerName(intProfile, dsn); oOperatingSystems = new OperatingSystems(intProfile, dsn); oOnDemand = new OnDemand(intProfile, dsn); oServicePack = new ServicePacks(intProfile, dsn); oServer = new Servers(intProfile, dsn); oHost = new Host(intProfile, dsn); oVirtualHDD = new VirtualHDD(intProfile, dsn); oVirtualRam = new VirtualRam(intProfile, dsn); oRestart = new Restart(intProfile, dsn); oSegment = new Segment(intProfile, dsn); oServiceEditor = new ServiceEditor(intProfile, dsnServiceEditor); oProjectRequest = new ProjectRequest(intProfile, dsn); oVMWare = new VMWare(intProfile, dsn); oWorkstation = new Workstations(intProfile, dsn); //oNew = new New(intProfile, dsn); oWhatsNew = new WhatsNew(intProfile, dsn); oMaintenanceWindow = new MaintenanceWindow(intProfile, dsn); //oRecoveryLocations = new RecoveryLocations(intProfile, dsn); oTSM = new TSM(intProfile, dsn); oDNS = new DNS(intProfile, dsn); oSolaris = new Solaris(intProfile, dsn); oZeus = new Zeus(intProfile, dsn); oError = new Errors(intProfile, dsn); oDesign = new Design(intProfile, dsn); oResiliency = new Resiliency(intProfile, dsn); oEnhancement = new Enhancements(intProfile, dsn); if (Request.QueryString["type"] != null && Request.QueryString["type"] != "") { lblType.Text = Request.QueryString["type"]; } if (Request.QueryString["id"] != null && Request.QueryString["id"] != "") { lblId.Text = Request.QueryString["id"]; } string strControl = ""; if (Request.QueryString["control"] != null) { strControl = Request.QueryString["control"]; } btnSave.Attributes.Add("onclick", "return Update('hdnUpdateOrder','" + strControl + "');"); btnClose.Attributes.Add("onclick", "return HidePanel();"); imgOrderUp.Attributes.Add("onclick", "return MoveOrderUp(" + lstOrder.ClientID + ");"); imgOrderDown.Attributes.Add("onclick", "return MoveOrderDown(" + lstOrder.ClientID + ");"); LoadList(); }
public void setEnhancement(Enhancements effect) { augments = effect; }
// Start is called before the first frame update void Start() { augments = Enhancements.None; playerVar = FindObjectOfType <PlayerModel>(); }