У меня на УОРПГ(сфера) 79 биндов для ПвП.
Ага, *стенка, парализ, стрелка* (IMG:
style_emoticons/default/biggrin.gif)
Варстоун мало в ПвП задрачивал, судя по всему.
Поэтому и пишет про рефлексы на уровне спинного мозга (IMG:
style_emoticons/default/smile.gif)
На Абиссе - 51 сфера, мне нужно было свыше 110 биндов(пвп на филдах, ибо без драки в стенках 1на1 тупо не завалить друг друга, ну такое вот у них ПвП...)
Прекаст на ранке физзлится в течении 30 сек, если не кинуть таргет.
Код
private class CastTimer : Timer
{
private Spell m_Spell;
public CastTimer( Spell spell, TimeSpan castDelay ) : base( castDelay )
{
m_Spell = spell;
Priority = TimerPriority.TwentyFiveMS;
}
protected override void OnTick()
{
if ( m_Spell.m_State == SpellState.Casting && m_Spell.m_Caster.Spell == m_Spell )
{
m_Spell.m_State = SpellState.Sequencing;
m_Spell.m_CastTimer = null;
m_Spell.m_Caster.OnSpellCast( m_Spell );
m_Spell.m_Caster.Region.OnSpellCast( m_Spell.m_Caster, m_Spell );
m_Spell.m_Caster.NextSpellTime = DateTime.Now + m_Spell.GetCastRecovery();// Spell.NextSpellDelay;
Target originalTarget = m_Spell.m_Caster.Target;
m_Spell.OnCast();
if ( m_Spell.m_Caster.Player && m_Spell.m_Caster.Target != originalTarget && m_Spell.Caster.Target != null )
m_Spell.m_Caster.Target.BeginTimeout( m_Spell.m_Caster, TimeSpan.FromSeconds( 30.0 ) );
m_Spell.m_CastTimer = null;
}
}
Это самая дефолтная реализация спеллсистемы, ещё с прадавных времен. Готов поспорить что ещё с 1й ранки.
Динамичность никогда не поднимется в силу того, что во время каста нужно стоять на месте. Даже если ты касты по 0.5 сек сделаешь и таймаут таргета меньше.
П.С. Опять-таки, - проявление нубства рануошников.
Вместо того что-бы написать вот так:
Цитата
m_Spell.OnCast();
if(m_Spell.m_Caster.Target != null)
m_Spell.m_Caster.Target.BeginTimeout( m_Spell.m_Caster, TimeSpan.FromSeconds( 30.0 ) );
Нубари-рануошники написали вот этот бред:
Код
Target originalTarget = m_Spell.m_Caster.Target;
m_Spell.OnCast();
if ( m_Spell.m_Caster.Player && m_Spell.m_Caster.Target != originalTarget && m_Spell.Caster.Target != null )
m_Spell.m_Caster.Target.BeginTimeout( m_Spell.m_Caster, TimeSpan.FromSeconds( 30.0 ) );
Только для того, что-бы сделать таймаут таргету, если его не кинули после прекаста.
П.П.С. А кто ещё заметил как нубари-рануошники таймеру два раза нулл проставляют? (IMG:
style_emoticons/default/biggrin.gif)
РанУО код - 70% гной, ладно, 50%. 70% - слишком жестоко с моей стороны (IMG:
style_emoticons/default/smile.gif)
Дикое аггро инкаминг (IMG:
style_emoticons/default/cool.gif)