public override void OnClick() { FukiyaDart dart = new FukiyaDart(fukiya.UsesRemaining); fukiya.UsesRemaining = 0; mobile.AddToBackpack(dart); }
protected override void OnTarget(Mobile from, object targeted) { if (m_fukiya.Deleted) { return; } else if (targeted is Mobile) { Mobile m = (Mobile)targeted; double dist = from.GetDistanceToSqrt(m.Location); if (m.Map != from.Map || dist > 5) { from.SendLocalizedMessage(500446); // That is too far away. return; } if (m != from && from.HarmfulCheck(m)) { Direction to = from.GetDirectionTo(m); from.Direction = to; from.RevealingAction(); from.Animate(from.Mounted ? 26 : 9, 7, 1, true, false, 0); if (CheckHitChance(from, m)) { from.MovingEffect(m, 0x2806, 7, 1, false, false, 0x23A, 0); AOS.Damage(m, from, Utility.Random(4, 6), 100, 0, 0, 0, 0); if (m_fukiya.Poison != null && m_fukiya.PoisonCharges > 0) { --m_fukiya.PoisonCharges; m.ApplyPoison(from, m_fukiya.Poison); } } else { FukiyaDart dart = new FukiyaDart(); from.MovingEffect(dart, 0x2804, 7, 1, false, false, 0x23A, 0); from.SendMessage("You miss."); dart.Delete(); } m_fukiya.UsesRemaining--; } } }
protected override void OnTarget(Mobile from, object targeted) { if (targeted is FukiyaDart) { FukiyaDart dart = targeted as FukiyaDart; if (dart.Poison != null && dart.PoisonCharges > 0) { m_fukiya.Poison = dart.Poison; m_fukiya.PoisonCharges = dart.PoisonCharges; } if (m_fukiya.UsesRemaining < 10) { if (dart.UsesRemaining + m_fukiya.UsesRemaining >= 10) { int need = 10 - m_fukiya.UsesRemaining; m_fukiya.UsesRemaining += need; dart.UsesRemaining -= need; if (dart.UsesRemaining < 1) { dart.Delete(); } } else { m_fukiya.UsesRemaining += dart.UsesRemaining; dart.Delete(); } } else { from.SendLocalizedMessage(1063330); } // You cannot add anymore fukiya darts } else { from.SendLocalizedMessage(1063329); // You can only load fukiya darts } }
public void Unload(Mobile from) { if (UsesRemaining < 1) { return; } FukiyaDart darts = new FukiyaDart(UsesRemaining); darts.Poison = m_Poison; darts.PoisonCharges = m_PoisonCharges; from.AddToBackpack(darts); m_UsesRemaining = 0; m_PoisonCharges = 0; m_Poison = null; InvalidateProperties(); }
public void Unload( Mobile from ) { if ( UsesRemaining < 1 ) return; FukiyaDart darts = new FukiyaDart( UsesRemaining ); darts.Poison = m_Poison; darts.PoisonCharges = m_PoisonCharges; from.AddToBackpack( darts ); m_UsesRemaining = 0; m_PoisonCharges = 0; m_Poison = null; InvalidateProperties(); }
public void Reload( Mobile from, FukiyaDart darts ) { int need = ( MaxUses - m_UsesRemaining ); if ( need <= 0 ) { // You cannot add anymore fukiya darts from.SendLocalizedMessage( 1063330 ); } else if ( darts.UsesRemaining > 0 ) { if ( need > darts.UsesRemaining ) need = darts.UsesRemaining; if ( darts.Poison != null && darts.PoisonCharges > 0 ) { if ( m_PoisonCharges <= 0 || m_Poison == null || m_Poison.Level <= darts.Poison.Level ) { if ( m_Poison != null && m_Poison.Level < darts.Poison.Level ) Unload( from ); if ( need > darts.PoisonCharges ) need = darts.PoisonCharges; if ( m_Poison == null || m_PoisonCharges <= 0 ) m_PoisonCharges = need; else m_PoisonCharges += need; m_Poison = darts.Poison; darts.PoisonCharges -= need; if ( darts.PoisonCharges <= 0 ) darts.Poison = null; m_UsesRemaining += need; darts.UsesRemaining -= need; } else { from.SendLocalizedMessage( 1070767 ); // Loaded projectile is stronger, unload it first } } else { m_UsesRemaining += need; darts.UsesRemaining -= need; } if ( darts.UsesRemaining <= 0 ) darts.Delete(); InvalidateProperties(); } }
public void Reload(Mobile from, FukiyaDart darts) { int need = (MaxUses - m_UsesRemaining); if (need <= 0) { // You cannot add anymore fukiya darts from.SendLocalizedMessage(1063330); } else if (darts.UsesRemaining > 0) { if (need > darts.UsesRemaining) { need = darts.UsesRemaining; } if (darts.Poison != null && darts.PoisonCharges > 0) { if (m_PoisonCharges <= 0 || m_Poison == null || m_Poison.Level <= darts.Poison.Level) { if (m_Poison != null && m_Poison.Level < darts.Poison.Level) { Unload(from); } if (need > darts.PoisonCharges) { need = darts.PoisonCharges; } if (m_Poison == null || m_PoisonCharges <= 0) { m_PoisonCharges = need; } else { m_PoisonCharges += need; } m_Poison = darts.Poison; darts.PoisonCharges -= need; if (darts.PoisonCharges <= 0) { darts.Poison = null; } m_UsesRemaining += need; darts.UsesRemaining -= need; } else { from.SendLocalizedMessage(1070767); // Loaded projectile is stronger, unload it first } } else { m_UsesRemaining += need; darts.UsesRemaining -= need; } if (darts.UsesRemaining <= 0) { darts.Delete(); } InvalidateProperties(); } }