private void DrinkPotion(EPotionType p_type) { Party party = LegacyLogic.Instance.WorldManager.Party; Potion bestPotion = party.GetBestPotion(p_type, null); InventorySlotRef consumableSlot = party.GetConsumableSlot(bestPotion); Int32 currentCharacter = LegacyLogic.Instance.WorldManager.Party.CurrentCharacter; if (consumableSlot.Slot != -1) { LegacyLogic.Instance.CommandManager.AddCommand(new ConsumeCommand(consumableSlot, currentCharacter)); } }
public InventoryItemEventArgs(InventorySlotRef p_slot) { m_slot = p_slot; Type = ERepairType.NONE; }
public ConsumeCommand(InventorySlotRef p_slot, Int32 p_targetCharacter) : base(ECommandTypes.CONSUME) { m_slot = p_slot; m_targetCharacter = p_targetCharacter; }
public override void Consume(InventorySlotRef p_slot, Int32 p_targetCharacter) { ConsumeCommand p_command = new ConsumeCommand(p_slot, p_targetCharacter); LegacyLogic.Instance.CommandManager.AddCommand(p_command); }
public void UpdateData() { if (!m_visible) { return; } if (m_isForStandardAction) { PartyTurnActor partyTurnActor = LegacyLogic.Instance.UpdateManager.PartyTurnActor; m_isAvailable = false; m_isUsable = true; switch (m_actionType) { case EQuickActionType.ATTACK: m_isAvailable = partyTurnActor.CanDoCommand(MeleeAttackCommand.Instance, m_character.Index); m_isUsable = m_character.Equipment.IsMeleeAttackWeaponEquiped(); break; case EQuickActionType.ATTACKRANGED: m_isAvailable = partyTurnActor.CanDoCommand(RangeAttackCommand.Instance, m_character.Index); m_isUsable = m_character.Equipment.IsRangedAttackWeaponEquiped(); break; case EQuickActionType.USE_BEST_MANAPOTION: { Potion bestPotion = LegacyLogic.Instance.WorldManager.Party.GetBestPotion(EPotionType.MANA_POTION, null); if (bestPotion != null) { InventorySlotRef consumableSlot = LegacyLogic.Instance.WorldManager.Party.GetConsumableSlot(bestPotion); m_isAvailable = partyTurnActor.CanDoCommand(new ConsumeCommand(consumableSlot, m_character.Index), m_character.Index); } else { m_isUsable = false; } break; } case EQuickActionType.USE_BEST_HEALTHPOTION: { Potion bestPotion2 = LegacyLogic.Instance.WorldManager.Party.GetBestPotion(EPotionType.HEALTH_POTION, null); if (bestPotion2 != null) { InventorySlotRef consumableSlot2 = LegacyLogic.Instance.WorldManager.Party.GetConsumableSlot(bestPotion2); m_isAvailable = partyTurnActor.CanDoCommand(new ConsumeCommand(consumableSlot2, m_character.Index), m_character.Index); } else { m_isUsable = false; } break; } case EQuickActionType.DEFEND: m_isAvailable = partyTurnActor.CanDoCommand(DefendCommand.Instance, m_character.Index); break; } NGUITools.SetActiveSelf(m_labelMana.gameObject, false); m_icon.color = m_iconColor; m_iconItem.color = m_iconColor; if (m_isUsable) { m_labelName.color = ((!m_isAvailable) ? m_unlearnedColorText : m_normalColor); } else { m_labelName.color = m_notUsableColorText; } } else if (m_isForPassiveAbility) { m_labelName.color = ((!m_hasSpell) ? m_unlearnedColorText : m_normalColor); m_labelMana.color = ((!m_hasSpell) ? m_unlearnedColorText : m_normalColor); m_icon.color = ((!m_hasSpell) ? m_unlearnedColor : m_iconColor); NGUITools.SetActiveSelf(m_labelMana.gameObject, true); } else { m_isUsable = true; NGUITools.SetActiveSelf(m_labelMana.gameObject, m_hasSpell); if (m_hasSpell) { PartyTurnActor partyTurnActor2 = LegacyLogic.Instance.UpdateManager.PartyTurnActor; m_isAvailable = partyTurnActor2.CanDoCommand(new CastSpellCommand(m_spell, null, null), m_character.Index); m_icon.color = m_iconColor; if (m_isAvailable) { m_labelName.color = m_normalColor; m_labelMana.color = m_normalColor; } else { m_isUsable = (m_character.ManaPoints >= m_spell.StaticData.ManaCost); if (m_spell.SpellType == ECharacterSpell.SPELL_LIGHT_LAY_ON_HANDS) { m_isUsable = (m_character.ManaPoints >= 1); } m_labelName.color = ((!m_isUsable) ? m_notUsableColorText : m_unlearnedColorText); m_labelMana.color = ((!m_isUsable) ? m_notUsableColorText : m_unlearnedColorText); } } else { m_isAvailable = false; m_icon.color = m_unlearnedColor; m_labelName.color = m_unlearnedColorText; } } }
private void OnClick() { if (!m_isForStandardAction && !m_isForPassiveAbility && !m_isUsable) { Character selectedCharacter = LegacyLogic.Instance.WorldManager.Party.SelectedCharacter; selectedCharacter.BarkHandler.TriggerBark(EBarks.LOW_MANA, selectedCharacter); } if (!m_isAvailable) { return; } Party party = LegacyLogic.Instance.WorldManager.Party; if (m_isForStandardAction) { switch (m_actionType) { case EQuickActionType.ATTACK: LegacyLogic.Instance.CommandManager.AddCommand(MeleeAttackCommand.Instance); break; case EQuickActionType.ATTACKRANGED: LegacyLogic.Instance.CommandManager.AddCommand(RangeAttackCommand.Instance); break; case EQuickActionType.USE_BEST_MANAPOTION: { Potion bestPotion = party.GetBestPotion(EPotionType.MANA_POTION, null); if (bestPotion != null) { InventorySlotRef consumableSlot = party.GetConsumableSlot(bestPotion); LegacyLogic.Instance.CommandManager.AddCommand(new ConsumeCommand(consumableSlot, m_character.Index)); } break; } case EQuickActionType.USE_BEST_HEALTHPOTION: { Potion bestPotion2 = party.GetBestPotion(EPotionType.HEALTH_POTION, null); if (bestPotion2 != null) { InventorySlotRef consumableSlot2 = party.GetConsumableSlot(bestPotion2); LegacyLogic.Instance.CommandManager.AddCommand(new ConsumeCommand(consumableSlot2, m_character.Index)); } break; } case EQuickActionType.DEFEND: LegacyLogic.Instance.CommandManager.AddCommand(DefendCommand.Instance); break; } } else if (!m_isForPassiveAbility) { if (m_spell.TargetType == ETargetType.SINGLE_PARTY_MEMBER) { OpenSpellCharacterSelectionEventArgs p_eventArgs = new OpenSpellCharacterSelectionEventArgs(m_spell); LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.CHARACTER_CAST_SPELL_WITH_CHARACTER_SELECTION, p_eventArgs); } else if (m_spell.SpellType == ECharacterSpell.SPELL_PRIME_SPIRIT_BEACON) { SpiritBeaconEventArgs p_eventArgs2 = new SpiritBeaconEventArgs(null); LegacyLogic.Instance.EventManager.InvokeEvent(m_spell, EEventType.CHARACTER_CAST_SPIRIT_BEACON, p_eventArgs2); } else if (m_spell.SpellType == ECharacterSpell.SPELL_PRIME_IDENTIFY) { LegacyLogic.Instance.EventManager.InvokeEvent(m_spell, EEventType.CHARACTER_CAST_IDENTIFY, EventArgs.Empty); } else { LegacyLogic.Instance.CommandManager.AddCommand(new CastSpellCommand(m_spell, null, null)); } } }