void Act(float delta) { if (target == null) { Wander(delta); return; } Vector3 targetPos = target.Translation; if (!AimingAt(targetPos)) { Pursue(delta); return; } actor.Use(Item.Uses.A); IHasAmmo ammoHaver = actor.PrimaryItem() as IHasAmmo; if (ammoHaver != null) { ManageAmmo(ammoHaver); } }
private void Reload() { int needed = maxAmmo - inventory.ItemCount(); if (needed == 0 || wielder == null) { return; } IHasAmmo ammoHolder = wielder as IHasAmmo; if (ammoHolder == null) { return; } if (ammoHolder.CheckAmmo(ammoType, 1) == 0) { return; } speaker.PlayEffect(Sound.Effects.RifleReload); List <ItemData> receivedAmmo = ammoHolder.RequestAmmo(ammoType, needed); foreach (ItemData ammo in receivedAmmo) { inventory.StoreItemData(ammo); } }
private void Reload() { List <ItemData> receivedAmmo = new List <ItemData>(); if (!ReloadNeeded()) { return; } IHasAmmo ammoHolder = wielder as IHasAmmo; if (ammoHolder != null) { receivedAmmo = ammoHolder.RequestAmmo(ammoType, ReloadAmmoNeeded()); } if (receivedAmmo.Count == 0) { receivedAmmo = RequestReserveAmmo(ReloadAmmoNeeded()); } if (receivedAmmo.Count == 0) { return; } foreach (ItemData ammo in receivedAmmo) { inventory.StoreItemData(ammo); } }
private void Reload() { int needed = maxAmmo - ammo; if (needed == 0 || wielder == null) { return; } IHasAmmo ammoHolder = wielder as IHasAmmo; if (ammoHolder == null) { return; } if (ammoHolder.CheckAmmo(ammoType, 1) == 0) { return; } speaker.PlayEffect(Sound.Effects.RifleReload); int receivedAmmo = ammoHolder.RequestAmmo(ammoType, needed); StoreAmmo(ammoType, receivedAmmo); }
public override void Unequip() { IHasAmmo ammoHolder = wielder as IHasAmmo; if (ammoHolder != null) { ammoHolder.StoreAmmo(inventory.RetrieveAllItems()); } ItemBaseUnequip(); }
public override void ApplyPowerUp(object obj) { IHasAmmo receiver = obj as IHasAmmo; if (receiver == null) { return; } receiver.StoreAmmo(ammoType, ammo); this.QueueFree(); }
public override void ApplyPowerUp(object obj) { IHasAmmo receiver = obj as IHasAmmo; if (receiver == null) { return; } List <Item> ammoItems = Item.BulkFactory(Item.Types.Ammo, ammo); receiver.StoreAmmo(Item.ConvertListToData(ammoItems)); this.QueueFree(); }
public override void Equip(object wielder) { ItemBaseEquip(wielder); IHasAmmo ammoHolder = wielder as IHasAmmo; if (ammoHolder != null) { List <ItemData> newAmmo = ammoHolder.RequestAmmo(ammoType, maxAmmo); foreach (ItemData ammo in newAmmo) { inventory.StoreItemData(ammo); } } }
public override string GetInfo() { string ret = name + "[" + ammo + "/" + maxAmmo; if (wielder != null) { IHasAmmo ammoHolder = wielder as IHasAmmo; if (ammoHolder != null) { ret += "/" + ammoHolder.CheckAmmo(ammoType, -1); } } ret += "]"; return(ret); }
void ManageAmmo(IHasAmmo ammoHaver) { string[] ammoTypes = ammoHaver.AmmoTypes(); if (ammoTypes == null || ammoTypes.Length == 0) { return; } string ammoType = ammoTypes[0]; int haverCount = ammoHaver.CheckAmmo(ammoType, -1); int actorCount = actor.CheckAmmo(ammoType, -1); if (haverCount == 0 && actorCount > 0) { actor.Use(Item.Uses.D); } }
public override string GetInfo() { string ret = name + "[" + inventory.ItemCount() + "/" + maxAmmo; int ammoTotal = CheckReserveAmmo(ammoType, 0); if (wielder != null) { IHasAmmo ammoHolder = wielder as IHasAmmo; if (ammoHolder != null) { ammoTotal += ammoHolder.CheckAmmo(ammoType, 0); } } ret += "/" + ammoTotal; ret += "]"; return(ret); }