当前位置: 首页>>代码示例>>C#>>正文


C# Spell.Clone方法代码示例

本文整理汇总了C#中DOL.GS.Spell.Clone方法的典型用法代码示例。如果您正苦于以下问题:C# Spell.Clone方法的具体用法?C# Spell.Clone怎么用?C# Spell.Clone使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DOL.GS.Spell的用法示例。


在下文中一共展示了Spell.Clone方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CastSpell

		/// <summary>
		/// Cast a spell, with optional LOS check
		/// </summary>
		/// <param name="spell"></param>
		/// <param name="line"></param>
		/// <param name="checkLOS"></param>
		public virtual void CastSpell(Spell spell, SpellLine line, bool checkLOS)
		{
			if (IsIncapacitated)
				return;

			if (checkLOS)
			{
				CastSpell(spell, line);
			}
			else
			{
				Spell spellToCast = null;

				if (line.KeyName == GlobalSpellsLines.Mob_Spells)
				{
					// NPC spells will get the level equal to their caster
					spellToCast = (Spell)spell.Clone();
					spellToCast.Level = Level;
				}
				else
				{
					spellToCast = spell;
				}

				base.CastSpell(spellToCast, line);
			}
		}
开发者ID:dudemanvox,项目名称:Dawn-of-Light-Server,代码行数:33,代码来源:GameNPC.cs

示例2: AddScriptedSpell

		/// <summary>
		/// Add a scripted spell to a spellline
		/// will try to add to global spell list if not exists (preventing obvious harcoded errors...)
		/// </summary>
		/// <param name="spellLineID"></param>
		/// <param name="spell"></param>
		public static void AddScriptedSpell(string spellLineID, Spell spell)
		{
			// lock Skillbase for writes
			m_syncLockUpdates.EnterWriteLock();
			Spell spcp = null;
			try
			{
				if (spell.ID > 0 && !m_spellIndex.ContainsKey(spell.ID))
				{
					spcp = (Spell)spell.Clone();
					// Level 1 for storing...
					spcp.Level = 1;
					
					m_spellIndex.Add(spell.ID, spcp);
					
					// Add Tooltip Index
					if (spcp.InternalID != 0 && !m_spellToolTipIndex.ContainsKey((ushort)spcp.InternalID))
						m_spellToolTipIndex.Add((ushort)spcp.InternalID, spcp.ID);
				}
			}
			finally
			{
				m_syncLockUpdates.ExitWriteLock();
			}
			
			// let the base handler do this...
			if (spcp != null)
			{
				AddSpellToSpellLine(spellLineID, spell.ID, spell.Level);
				return;
			}

			m_syncLockUpdates.EnterWriteLock();
			try
			{
				// Cannot store it in spell index !! ID could be wrongly set we can't rely on it !
				if (!m_lineSpells.ContainsKey(spellLineID))
					m_lineSpells.Add(spellLineID, new List<Spell>());
				
				// search for duplicates
				bool added = false;
				for (int r = 0; r < m_lineSpells[spellLineID].Count; r++)
				{
					try
					{
						if (m_lineSpells[spellLineID][r] != null && 
						    (spell.ID > 0 && m_lineSpells[spellLineID][r].ID == spell.ID && m_lineSpells[spellLineID][r].Name.ToLower().Equals(spell.Name.ToLower()) && m_lineSpells[spellLineID][r].SpellType.ToLower().Equals(spell.SpellType.ToLower()))
						    || (m_lineSpells[spellLineID][r].Name.ToLower().Equals(spell.Name.ToLower()) && m_lineSpells[spellLineID][r].SpellType.ToLower().Equals(spell.SpellType.ToLower())))
						{
							m_lineSpells[spellLineID][r] = spell;
							added = true;
						}
					}
					catch
					{
					}
				}
				
				// try regular add (this could go wrong if duplicate detection is bad...)
				if (!added)
					m_lineSpells[spellLineID].Add(spell);
				
				m_lineSpells[spellLineID] = m_lineSpells[spellLineID].OrderBy(e => e.Level).ThenBy(e => e.ID).ToList();
				    
			}
			finally
			{
				m_syncLockUpdates.ExitWriteLock();
			}
		}
开发者ID:mynew4,项目名称:DOLSharp,代码行数:76,代码来源:SkillBase.cs


注:本文中的DOL.GS.Spell.Clone方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。