internal void Init(Int32 p_days, Int32 p_hours, Int32 p_minutes) { m_lastTime = (m_time = new MMTime(p_minutes, p_hours, p_days)); m_turn = 0; m_calendar = new MMCalendar(); m_calendar.Init(MMCalendar.EWeekDays.ASHDA, 1, MMCalendar.EMonths.SUN_BLOSSOM, 575); }
public void UpdateDurationLabel() { if (m_partyBuff == null) { return; } if (!m_partyBuff.IsExpired()) { m_label.enabled = true; if (m_partyBuff.DurationIsMinutes) { MMTime mmtime = m_partyBuff.ExpireTime - LegacyLogic.Instance.GameTime.Time; m_label.text = LocaManager.GetText("TIMESTRING", mmtime.Hours.ToString("D2"), mmtime.Minutes.ToString("D2")); } else if (m_partyBuff.Infinite) { m_label.enabled = false; } else { m_label.text = m_partyBuff.ExpireTimeTurns.ToString(); } } else { OnTooltip(false); } }
private Single GetDayNightBlend() { MMTime time = LegacyLogic.Instance.GameTime.Time; Int32 num = ConfigManager.Instance.Game.DawnStartHours * 60; Int32 num2 = ConfigManager.Instance.Game.NightStartHours * 60; Int32 num3 = time.Hours * 60 + time.Minutes; if (num3 >= num && num3 < num2) { Single num4 = num2 - num; return((num3 - num) / num4 - 0.5f); } Single num5 = 1440 - num2 + num; Int32 num6; if (num3 >= num2) { num6 = num3 - num2; } else { num6 = 1440 - num2 + num3; } return(num6 / num5 + 0.5f); }
public QuestObjective(Int32 staticID, Int32 count) { m_staticData = StaticDataHandler.GetStaticData <QuestObjectiveStaticData>(EDataType.QUEST_OBJECTIVES, staticID); m_currentCounter = 0; m_maxCounter = count; m_questState = EQuestState.INACTIVE; m_activationTime = default(MMTime); m_currentStepsOnTerrain = 0; }
public void OnCheckRecharge() { GameTime gameTime = LegacyLogic.Instance.GameTime; MMTime p_t = new MMTime(0, 8, gameTime.Time.Days); if (gameTime.Time >= p_t && m_lastActivationTime < p_t) { State = EInteractiveObjectState.ON; LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.OBJECT_STATE_CHANGED, EventArgs.Empty); } }
public ConditionHandler(Character p_character) { m_character = p_character; m_lastHandelTime = LegacyLogic.Instance.GameTime.Time; m_poisonHealthDamagePercent = ConfigManager.Instance.Game.PoisonHealthDamage; m_tick = new MMTime(ConfigManager.Instance.Game.MinutesDeficiencySyndromesTick, 0, 0); m_deficiencySyndromesRest = default(MMTime); m_deficiencySyndromesRest.AddMinutes(ConfigManager.Instance.Game.HoursDeficiencySyndromesRest * 60); m_poisonEvadeDecrease = ConfigManager.Instance.Game.PoisonEvadeDecrease; m_sentEvent = 0; m_logEntries = new List <LogEntryEventArgs>(); m_getKilledEntries = new List <LogEntryEventArgs>(); }
private void OnGameTimeChanged(Object p_sender, EventArgs p_args) { MMTime time = LegacyLogic.Instance.GameTime.Time; foreach (QuestStep questStep in m_quests) { if (questStep.QuestState == EQuestState.ACTIVE && questStep.CheckTime(time)) { LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.QUESTLOG_CHANGED, new QuestChangedEventArgs(QuestChangedEventArgs.Type.COMPLETED_OBJECTIVE, questStep)); if (questStep.CheckFinished()) { FinalizeStep(questStep); } } } }
internal void UpdateTime(Int32 p_minutes, ETimeChangeReason p_reason) { m_lastTime = m_time; m_time += new MMTime(p_minutes); if (DayState != LastDayState) { OnDayStateChanged(p_reason); } MMTime p_t = new MMTime(0, 8, m_time.Days); if (m_time >= p_t && m_lastTime < p_t) { Grid grid = LegacyLogic.Instance.MapLoader.Grid; foreach (GridSlot gridSlot in grid.SlotIterator()) { foreach (InteractiveObject interactiveObject in gridSlot.GetInteractiveObjectIterator()) { RechargingObject rechargingObject = interactiveObject as RechargingObject; if (rechargingObject != null) { rechargingObject.OnCheckRecharge(); } } } } if (p_reason == ETimeChangeReason.Movement && m_time.Hours == 0) { if ((p_minutes == 1 && m_time.Minutes == 1) || (p_minutes > 1 && m_time.Minutes > 0 && m_time.Minutes <= p_minutes)) { m_calendar.NextDay(); } } else if (p_reason == ETimeChangeReason.Resting) { m_calendar.SetDateByPassedTime(m_time.Days); } LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.GAMETIME_TIME_CHANGED, new GameTimeEventArgs(DayState, LastDayState, p_reason)); }
public void UpdateItems() { Boolean flag = !m_initialItemUpdateDone; m_initialItemUpdateDone = true; if (m_offerData.RefreshType == EOfferRefreshType.DAYBREAK && m_updateTime.Days != LegacyLogic.Instance.GameTime.Time.Days) { flag = true; } if (flag) { m_items.Clear(); m_updateTime = LegacyLogic.Instance.GameTime.Time; foreach (ItemOffer itemOffer in m_offerData.ItemOffers) { for (Int32 j = 0; j < itemOffer.ItemQuantity; j++) { BaseItem baseItem = ItemFactory.CreateItem(itemOffer.ItemType, itemOffer.ItemID); Boolean flag2 = false; foreach (BaseItem baseItem2 in m_items) { flag2 = Consumable.AreSameConsumables(baseItem2, baseItem); if (flag2) { Consumable consumable = (Consumable)baseItem2; consumable.Counter++; break; } } if (baseItem != null && !flag2) { m_items.Add(baseItem); } } } } }
public void Interact() { if (State == EInteractiveObjectState.ON) { String text = String.Empty; State = EInteractiveObjectState.OFF; m_lastActivationTime = LegacyLogic.Instance.GameTime.Time; LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.OBJECT_STATE_CHANGED, EventArgs.Empty); if (m_partyBuff != EPartyBuffs.NONE) { LegacyLogic.Instance.WorldManager.Party.Buffs.AddBuff(m_partyBuff, 1f); text = Localization.Instance.GetText("GAMEMESSAGE_BLESSED"); GameMessageEventArgs p_eventArgs = new GameMessageEventArgs(text, 0f, false); LegacyLogic.Instance.EventManager.InvokeEvent(null, EEventType.GAME_MESSAGE, p_eventArgs); MessageEventArgs p_args = new MessageEventArgs(text, true); LegacyLogic.Instance.ActionLog.PushEntry(p_args); } else if (m_special == ERechargerSpecial.RESTORE) { foreach (Character character in LegacyLogic.Instance.WorldManager.Party.GetCharactersAlive()) { if (!character.ConditionHandler.HasCondition(ECondition.DEAD) && (character.HealthPoints != character.MaximumHealthPoints || character.ManaPoints != character.MaximumManaPoints)) { character.ChangeHP(character.MaximumHealthPoints + Math.Abs(character.HealthPoints)); character.ChangeMP(character.MaximumManaPoints + Math.Abs(character.ManaPoints)); } } LegacyLogic.Instance.EventManager.InvokeEvent(null, EEventType.PARTY_RESTORED, EventArgs.Empty); text = Localization.Instance.GetText("GAME_MESSAGE_PARTY_RESTORED"); MessageEventArgs p_args2 = new MessageEventArgs(text, true); LegacyLogic.Instance.ActionLog.PushEntry(p_args2); } else if (m_special == ERechargerSpecial.CURE) { for (Int32 i = 0; i < 4; i++) { Character member = LegacyLogic.Instance.WorldManager.Party.GetMember(i); if (member.ConditionHandler.HasCondition(ECondition.DEAD)) { member.ConditionHandler.RemoveCondition(ECondition.DEAD); member.Resurrect(); LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.CHARACTER_REVIVED, EventArgs.Empty); } if (member.ConditionHandler.HasCondition(ECondition.UNCONSCIOUS)) { member.ConditionHandler.RemoveCondition(ECondition.UNCONSCIOUS); member.Resurrect(); } member.ConditionHandler.RemoveCondition(ECondition.PARALYZED); member.ConditionHandler.RemoveCondition(ECondition.STUNNED); member.ConditionHandler.RemoveCondition(ECondition.SLEEPING); member.ConditionHandler.RemoveCondition(ECondition.POISONED); member.ConditionHandler.RemoveCondition(ECondition.CONFUSED); member.ConditionHandler.RemoveCondition(ECondition.WEAK); member.ConditionHandler.RemoveCondition(ECondition.CURSED); } LegacyLogic.Instance.WorldManager.Party.Buffs.RemoveAllBuffs(); text = Localization.Instance.GetText("GAMEMESSAGE_BLESSED"); GameMessageEventArgs p_eventArgs2 = new GameMessageEventArgs(text, 0f, false); LegacyLogic.Instance.EventManager.InvokeEvent(null, EEventType.GAME_MESSAGE, p_eventArgs2); MessageEventArgs p_args3 = new MessageEventArgs(text, true); LegacyLogic.Instance.ActionLog.PushEntry(p_args3); } } else { GameMessageEventArgs p_eventArgs3 = new GameMessageEventArgs("GAMEMESSAGE_NOTHING_HAPPENS", 0f, true); LegacyLogic.Instance.EventManager.InvokeEvent(null, EEventType.GAME_MESSAGE, p_eventArgs3); } }
public RechargingObject(Int32 p_staticID, Int32 p_spawnerID) : base(p_staticID, EObjectType.RECHARGING_OBJECT, p_spawnerID) { State = EInteractiveObjectState.ON; m_lastActivationTime = new MMTime(0, 0, 0); }
/// <summary> /// Adds an event to the scenario that will be triggered at the specified time. /// </summary> /// <param name="timeInStringNotation">Time in hh:mm:ss:SSS string notation.</param> /// <param name="action">Action.</param> /// <param name="eventName">The name of the MMEvent to trigger when that event is met.</param> protected virtual void AddTimeEvent(string timeInStringNotation, Action action, string eventName = "") { float startTime = MMTime.TimeStringToFloat(timeInStringNotation); _scenario.Add(new ScenarioEvent(0f, startTime, action, eventName, ScenarioEvent.ScenarioEventTypes.TimeBased)); }
private Int32 GetTimeSinceLastRestAsHours(MMTime p_lastRestTime) { MMTime mmtime = LegacyLogic.Instance.GameTime.Time - p_lastRestTime; return(mmtime.Days * 24 + mmtime.Hours); }