//  public List<Classes.Enamy> EnamyList = new List<Classes.Enamy>();

    // Use this for initialization
    void Start()
    {
        clas        = FindObjectOfType <Classes>();
        battleEvent = FindObjectOfType <BattleEvent>();
        // temp
        area = Areas.area1;
    }
Exemple #2
0
 public void OnEventRaised(BattleEvent value)
 {
     if (value == BattleEvent.LostBattle)
     {
         gameObject.SetActive(false);
     }
 }
Exemple #3
0
    public override IEnumerator ExecuteCellsRoutine(List <Vector2Int> locations)
    {
        yield return(battler.SyncPlayAnim(skill.castAnim));

        foreach (Vector2Int location in locations)
        {
            BattleEvent target = map.GetEventAt <BattleEvent>(location);
            if (target == null)
            {
                continue;
            }
            BattleUnit other = target.unit;

            battler.GetComponent <CharaEvent>().FaceToward(other.battler.GetComponent <MapEvent>());
            EightDir dir   = battler.GetComponent <MapEvent>().DirectionTo(other.battler.GetComponent <MapEvent>());
            int      power = Mathf.RoundToInt(Random.Range(knockbackMin, knockbackMax));

            other.battler.Knockback(dir, power);
            yield return(CoUtils.Wait(0.2f));

            if (actor.Get(StatTag.ATTACKS) < 0.5)
            {
                actor.isRecovering = true;
            }

            if (damageHigh > 0)
            {
                int dmg = Mathf.RoundToInt(Random.Range(damageLow, damageHigh));
                battle.Log(other + " took " + dmg + " damage.");
                other.TakeDamage(dmg, damageAnimation);
            }
        }
    }
Exemple #4
0
    public void HandleBattleEvent(BattleEvent type)
    {
        switch (type)
        {
        case BattleEvent.TurnChange:
            if (CurrentScene == 28)
            {
                // when FF's HP starts getting low...

                if (bc.EnemyCombatants[1].HitPoints / (float)bc.EnemyCombatants[1].MaxHitPoints < 0.2f)
                {
                    bc.PauseBattle();
                    ff.GetComponent <FlanaganCombatant>().WakeUp();
                    nextScene();
                }
            }
            else if (CurrentScene == 31)
            {
                //did FF die?
                if (bc.EnemyCombatants[1].HitPoints == 0)
                {
                    bc.PauseBattle();
                    mp.PlayMusic(VictoryMusic, false);
                    startTimer();
                    nextScene();
                }
            }

            break;
        }
    }
Exemple #5
0
 public void HandleBattleEvent(BattleEvent type)
 {
     if (type == BattleEvent.Finished)
     {
         nextScene();
     }
 }
Exemple #6
0
    private IEnumerator messageProcessor()
    {
        while (true)
        {
            if (battleEventQueue.Count > 0 && battleControlsComponent.isReady)
            {
                battleControlsComponent.isReady = false;
                BattleEvent battleEvent = battleEventQueue.Dequeue();

                if (battleEvent.GetType() == typeof(PlayerMustWaitEvent))
                {
                    battleControlsComponent.blockPlayer();
                }
                else if (battleEvent.GetType() == typeof(TextMessageEvent))
                {
                    battleControlsComponent.displayMessage(((TextMessageEvent)battleEvent).textMessage);
                }
                else if (battleEvent.GetType() == typeof(MoveEvent))
                {
                    battleControlsComponent.slowlyReduceHp(((MoveEvent)battleEvent).pokemon);
                }
                else if (battleEvent.GetType() == typeof(FaintEvent))
                {
                    //StartCoroutine(pokemonManager.faintPokemon(((FaintEvent)battleEvent).faintTarget));
                }
            }
            yield return(new WaitForSeconds(0.5f));
        }
    }
Exemple #7
0
 public ForNumberOfTurns(Effect effect, int duration, bool isDebuff)
 {
     _effect            = effect;
     _remainingDuration = duration;
     _isDebuff          = isDebuff;
     BattleEvent.Subscribe <TurnEnd>((turnEnd) => AdvanceTurn(), this);
 }
Exemple #8
0
    private IEnumerator ScanRoutine()
    {
        narrator.Clear();
        Cursor cursor = unit.battle.SpawnCursor(unit.location, true);
        Result <Vector2Int> result = new Result <Vector2Int>();

        yield return(cursor.AwaitSelectionRoutine(result, _ => true, ScanAtRoutine));

        if (!result.canceled)
        {
            BattleEvent ev = unit.battle.map.GetEventAt <BattleEvent>(result.value);
            if (ev != null)
            {
                BattleUnit unit = ev.unit;
                yield return(PrepareTalkRoutine(unit));

                pc.GetComponent <CharaEvent>().FaceToward(unit.battler.GetComponent <MapEvent>());
                unit.battler.GetComponent <CharaEvent>().FaceToward(pc.GetComponent <MapEvent>());

                LuaScript script = new LuaScript(GetComponent <LuaContext>(), unit.unit.luaOnExamine);
                GetComponent <LuaContext>().SetGlobal("name", unit.ToString());
                yield return(script.RunRoutine());

                narrator.Log(unit.StatusString(), true);
            }
        }
        rightDisplayEnabled = false;
        unit.battle.DespawnCursor();
        executeResult.Cancel();
    }
Exemple #9
0
    private void ResolveUnconscious(MemberUnconscious m)
    {
        if (!m.Member.TeamType.Equals(TeamType.Enemies))
        {
            return;
        }

        var enemy = state.GetEnemyById(m.Member.Id);

        if (!string.IsNullOrWhiteSpace(enemy.DeathEffect))
        {
            BattleEvent.Publish(new BattleEffectAnimationRequested
            {
                EffectName  = enemy.DeathEffect,
                Scope       = Scope.One,
                Target      = new Single(m.Member),
                Group       = Group.Self,
                PerformerId = m.Member.Id
            });
        }

        var t = state.GetTransform(m.Member.Id);

        t.gameObject.SetActive(false);
    }
Exemple #10
0
    public void HandleBattleEvent(BattleEvent type)
    {
        switch (type)
        {
        case BattleEvent.TurnChange:

            // don't count the FB's turn
            if (bc.currentTurn != 2)
            {
                if (CurrentScene == 1 ||
                    CurrentScene == 4 ||
                    CurrentScene == 7 ||
                    CurrentScene == 10 ||
                    CurrentScene == 12 ||
                    CurrentScene == 15 ||
                    CurrentScene == 17 ||
                    CurrentScene == 21)
                {
                    bc.PauseBattle();
                    nextScene();
                }
            }

            break;

        case BattleEvent.Finished:
            mus.StopMusic(1.0f);
            nextScene();
            break;
        }
    }
Exemple #11
0
 public void Enqueue(BattleEvent @event, EventPriority priority)
 {
     lock (_queues)
     {
         _queues[(int)priority].Enqueue(@event);
     }
 }
    public void AddAmount(MonsterType monsterType)
    {
        int  value    = dictionary[monsterType];
        bool IfRemove = false;

        value++;
        dictionary[monsterType] = value;
        foreach (QuestEventBase questEvent in currentQuests.GetEvents())
        {
            if (questEvent.eventType == EventType.Combat)
            {
                BattleEvent battle = (BattleEvent)questEvent;
                if (battle.monsterType == monsterType)
                {
                    battle.FinishedNumber++;
                    if (battle.Number <= battle.FinishedNumber)
                    {
                        IfRemove = true;
                        events   = battle;
                    }
                }
            }
        }

        if (IfRemove)
        {
            currentQuests.RemoveQuestEvent(events);
        }
    }
Exemple #13
0
    public IEnumerator OnVisibleRoutine(PCEvent pc)
    {
        while (IsAnimating())
        {
            yield return(null);
        }
        BattleEvent ev = GetComponent <BattleEvent>();

        if (ev != null)
        {
            BattleUnit unit = ev.unit;
            var        ui   = FindObjectOfType <RogueUI>();
            yield return(ui.PrepareTalkRoutine(unit));

            ui.face2.Populate(unit);

            pc.GetComponent <CharaEvent>().FaceToward(unit.battler.GetComponent <MapEvent>());
            unit.battler.GetComponent <CharaEvent>().FaceToward(pc.GetComponent <MapEvent>());

            LuaScript script = new LuaScript(ui.GetComponent <LuaContext>(), luaVisible);
            ui.GetComponent <LuaContext>().SetGlobal("name", unit.ToString());
            ui.rightDisplayEnabled = true;
            yield return(script.RunRoutine());

            ui.rightDisplayEnabled = false;
        }
        else
        {
            yield return(luaObject.RunRoutine(PropertyVisible));
        }
    }
Exemple #14
0
    public void Perform()
    {
        for (var index = 0; index < _card.Actions.Length; index++)
        {
            var action = _card.Actions[index];
            if (!string.IsNullOrWhiteSpace(action.CharacterAnimation))
            {
                BattleEvent.Publish(new CharacterAnimationRequested(_performer.Id, action.CharacterAnimation));
            }
            if (!string.IsNullOrWhiteSpace(action.EffectAnimation))
            {
                BattleEvent.Publish(new BattleEffectAnimationRequested
                {
                    PerformerId = _performer.Id,
                    EffectName  = action.EffectAnimation,
                    Group       = action.Group,
                    Scope       = action.Scope,
                    Target      = _targets[index]
                });
            }

            if (_targets.Length <= index)
            {
                Debug.LogError($"Invalid Targets for {_card.Name}. Action {index}");
            }
            action.Apply(_performer, _targets[index]);
        }
    }
Exemple #15
0
 public StatusEvent(BattleEvent eventInfo, Status baseStatus, StatusInstance currentStatus, BattleAgent target)
 {
     Event  = eventInfo;
     Base   = baseStatus;
     Status = currentStatus;
     Target = target;
 }
Exemple #16
0
    public void HandleBattleEvent(BattleEvent type)
    {
        switch (type)
        {
        case BattleEvent.TurnChange:
            if (CurrentScene == 0)
            {
                bc.PauseBattle();
                nextScene();
            }
            else if (CurrentScene == 2)
            {
                // did the bball die?
                if (bc.EnemyCombatants[0].HitPoints == 0)
                {
                    bc.PauseBattle();
                    mus.StopMusic(3.0f);
                    startTimer();
                    nextScene();
                }
            }

            break;

        case BattleEvent.Finished:
            mus.StopMusic(1.0f);
            nextScene();
            break;
        }
    }
Exemple #17
0
	public void HandleBattleEvent(BattleEvent type) {
		switch(type) {
		case BattleEvent.Finished:
			nextScene();

			break;
		}
	}
Exemple #18
0
    /**
     * @todo #361:30min We sdhould be able to chain effects conditionally, as in MarkOfSalvation paladin card.
     */

    public static void Apply(EffectData effectData, Member source, Target target)
    {
        var effect = Create(effectData);

        BattleLog.Write($"Applying Effect of {effectData.EffectType} to {target.Members} members");
        effect.Apply(source, target);
        target.Members.ForEach(m => BattleEvent.Publish(new MemberStateChanged(m)));
    }
Exemple #19
0
 public void SetValues(string itemName, string itemCaption, int itemCount, ItemType itemType, BattleEvent itemEvent)
 {
     _itemName    = itemName;
     _itemCaption = itemCaption;
     _itemCount   = itemCount;
     _itemType    = itemType;
     _itemEvent   = itemEvent;
 }
Exemple #20
0
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     BattleEventWindow.SetBattleEventSetterAction((page) =>
     {
         this.BattleEvent = page;
     });
     BattleEventWindow.ShowWindow(this.BattleEvent);
 }
    public BattleUnit AddUnitFromMap(BattleEvent battler)
    {
        BattleUnit unit = new BattleUnit(Instantiate(battler.unitSerialized), this);

        battler.unit = unit;
        units.Add(unit);
        battlers[battler.unit] = battler;
        return(unit);
    }
Exemple #22
0
        public void UseItem(BattleEvent battleEvent)
        {
            _state = BattleState.Act;

            _uiManager._mainUI.UpdateMainUI(PokemonBattleMainUI.UIState.Battle);
            _uiManager._bottomUI.UpdateDialog();

            StartCoroutine(ActPhase(battleEvent, NextEnemySkill()._battleEvent));
        }
Exemple #23
0
 private void AdvanceTurn()
 {
     if (_remainingDuration < 0)
     {
         BattleEvent.Unsubscribe(this);
         return;
     }
     _remainingDuration--;
 }
Exemple #24
0
 protected override void Execute() =>
 state.Members.Values.ToList()
 .Except(_unconscious)
 .Where(m => !m.State.IsConscious)
 .ForEach(m =>
 {
     _unconscious.Add(m);
     BattleEvent.Publish(new MemberUnconscious(m));
 });
Exemple #25
0
    /// <summary>
    /// Update any status effects that may respond to an event
    /// </summary>
    /// <param name="eventInfo">The event in question</param>
    public void OnTrigger(BattleEvent eventInfo)
    {
        List <Status> statusEffects = new List <Status>(StatusEffects.Keys);

        foreach (Status statusEffect in statusEffects)
        {
            statusEffect.OnTrigger(new StatusEvent(eventInfo, statusEffect, StatusEffects[statusEffect], this));
        }
    }
Exemple #26
0
 private void Awake()
 {
     items     = FindObjectOfType <Items>();
     player    = FindObjectOfType <Player>();
     inventory = FindObjectOfType <Inventory>();
     move      = FindObjectOfType <Movement>();
     battleM   = FindObjectOfType <BattleEvent>();
     clas      = FindObjectOfType <Classes>();
     craft     = FindObjectOfType <CraftItems>();
 }
Exemple #27
0
 public IEnumerator AwaitSelectionRoutine(BattleEvent actor, Result <EightDir> result)
 {
     this.actor     = actor;
     awaitingSelect = result;
     while (!awaitingSelect.finished)
     {
         yield return(null);
     }
     awaitingSelect = null;
 }
Exemple #28
0
    public void HandleBattleEvent(BattleEvent type)
    {
        switch (type)
        {
        case BattleEvent.Finished:
            nextScene();

            break;
        }
    }
        internal SortieNodeInfo(MapInfo rpMap, RawMapExploration rpData)
        {
            ID = rpData.Node;

            var rDifficulty = rpMap.Difficulty;

            if (!rDifficulty.HasValue)
            {
                InternalID = ID;
            }
            else
            {
                var rDifficultyCount = Enum.GetNames(typeof(EventMapDifficulty)).Length - 1;
                InternalID = ID * rDifficultyCount + (int)rDifficulty.Value - 3;
            }

            WikiID = MapService.Instance.GetNodeWikiID(rpMap.ID, ID);

            EventType    = rpData.NodeEventType;
            EventSubType = rpData.NodeEventSubType;

            switch (EventType)
            {
            case SortieEventType.Reward:
                Event = new RewardEvent(rpData);
                break;

            case SortieEventType.Whirlpool:
                Event = new WhirlpoolEvent(rpData);
                break;

            case SortieEventType.NormalBattle:
            case SortieEventType.BossBattle:
                Event = new BattleEvent(rpMap, rpData, WikiID);
                break;

            case SortieEventType.NothingHappened:
                Event = new NothingHappenedEvent(rpMap, rpData);
                break;

            case SortieEventType.AviationReconnaissance:
                Event = new AviationReconnaissanceEvent(rpData);
                break;

            case SortieEventType.EscortSuccess:
                Event = new EscortSuccessEvent(rpData);
                break;

            case SortieEventType.Landing:
                Event = new LandingEvent(rpData);
                break;
            }

            IsDeadEnd = rpData.NextRouteCount == 0;
        }
Exemple #30
0
 public static void Initialize()
 {
     battleEvent       = new BattleEvent();
     sharpEvent        = new SharpEvent();
     battleManager     = new Manager.BattleManager();
     charactersManager = new Manager.BattleCharactersManager();
     mapSearch         = new TileMap();
     aStar             = new AStar();
     AppManager        = new AppManager();
     SUser             = new SUser();
 }
Exemple #31
0
    BattleEvent PopTopEvent()
    {
        BattleEvent next = null;

        if (eventQueue.Count > 0)
        {
            next = eventQueue[0];
            eventQueue.RemoveAt(0);
        }
        return(next);
    }
Exemple #32
0
	public void HandleBattleEvent(BattleEvent type) {
		switch(type) {
		case BattleEvent.TurnChange:
			if(CurrentScene == 11) {
				// after daria's first laser strike
				bc.PauseBattle();
				nextScene();
			} 
			
			break;
		case BattleEvent.Finished:
			mus.StopMusic(1.0f);
			nextScene();
			break;
		}
	}
Exemple #33
0
 public void EnqueueAction(BattleEvent e)
 {
     EnqueueAction(e, EventPriority.Normal);
 }
Exemple #34
0
 public void EnqueueCounterAction(BattleEvent e)
 {
     EnqueueAction(e, EventPriority.Counter);
 }
Exemple #35
0
 public void EnqueueLimit(BattleEvent e)
 {
     EnqueueAction(e, EventPriority.Limit);
 }
Exemple #36
0
 public void Enqueue(BattleEvent @event, EventPriority priority)
 {
     lock (_queues)
     {
         _queues[(int)priority].Enqueue(@event);
     }
 }
Exemple #37
0
	public void HandleBattleEvent(BattleEvent type) {
		if(type == BattleEvent.Finished) {
			nextScene();
		}
	}
Exemple #38
0
	public void HandleBattleEvent(BattleEvent type) {
		switch(type) {
		case BattleEvent.TurnChange:

			// don't count the FB's turn
			if(bc.currentTurn != 2) {
				if(CurrentScene == 1 ||
				   CurrentScene == 4 || 
				   CurrentScene == 7 || 
				   CurrentScene == 10 || 
				   CurrentScene == 12 ||
				   CurrentScene == 15 || 
				   CurrentScene == 17 || 
				   CurrentScene == 21) {
					bc.PauseBattle();
					nextScene();
				}
			}
			
			break;
		case BattleEvent.Finished:
			mus.StopMusic(1.0f);
			nextScene();
			break;
		}
	}
Exemple #39
0
	public void HandleBattleEvent(BattleEvent type) {
		switch(type) {
		case BattleEvent.TurnChange:
			if(CurrentScene == 28) {
				// when FF's HP starts getting low...

				if(bc.EnemyCombatants[1].HitPoints / (float)bc.EnemyCombatants[1].MaxHitPoints < 0.2f) {
					bc.PauseBattle();
					ff.GetComponent<FlanaganCombatant>().WakeUp();
					nextScene();
				}
			} else if(CurrentScene == 31) {
				//did FF die?
				if(bc.EnemyCombatants[1].HitPoints == 0) {
					bc.PauseBattle();
					mp.PlayMusic(VictoryMusic, false);
					startTimer();
					nextScene();
				}
			}

			break;
		}
	}
Exemple #40
0
	public void HandleBattleEvent(BattleEvent type) {
		switch(type) {
		case BattleEvent.TurnChange:
			
			break;
		case BattleEvent.Finished:
			mus.StopMusic(1.0f);
			nextScene();
			break;
		}
	}
Exemple #41
0
 private void EnqueueAction(BattleEvent a, EventPriority priority)
 {
     lock (EventQueue)
     {
         EventQueue.Enqueue(a, priority);
     #if DEBUG
         Console.WriteLine();
         Console.WriteLine(" An event has been added to the queue!");
         Console.WriteLine();
         Console.WriteLine(EventQueue.ToString());
     #endif
     }
 }
Exemple #42
0
        protected override void InternalInit()
        {
            ScreenState state = new ScreenState
            {
                Width = Seven.Configuration.WindowWidth,
                Height = Seven.Configuration.WindowHeight
            };

            _victoryEvent = new EndOfBattleEvent("Victory!");
            _lossEvent = new EndOfBattleEvent("Annihilated!");

            Screen = new BattleScreen(this, state);

            SpeedValue = (32768 / (120 + (Seven.Party.BattleSpeed * 15 / 8)));

            GlobalClock = new BattleClock(SpeedValue);

            Allies = new Ally[Party.PARTY_SIZE];

            int[] e = _formation.GetAllyTurnTimersElapsed(Party);

            for (int i = 0; i < Party.PARTY_SIZE; i++)
            {
                if (Party[i] != null)
                {
                    Allies[i] = new Ally(this, i, e[i]);
                    Allies[i].InitMenu(state);
                }
            }

            if (Allies.All(a => a == null))
            {
                throw new GameDataException("Must have at least one ally in battle.");
            }

            EnemyList = _formation.GetEnemyList(this);

            foreach (Ally ally in Allies)
            {
                if (ally != null)
                {
                    CombatantClocks.Add(ally.TurnTimer);
                    CombatantClocks.Add(ally.V_Timer);
                    CombatantClocks.Add(ally.C_Timer);
                    ally.TurnTimer.Unpause();
                }
            }

            foreach (Enemy enemy in EnemyList)
            {
                CombatantClocks.Add(enemy.TurnTimer);
                CombatantClocks.Add(enemy.V_Timer);
                CombatantClocks.Add(enemy.C_Timer);
                enemy.EnterBattle();
            }

            foreach (Enemy enemy in EnemyList)
            {
                enemy.TurnTimer.Unpause();
            }
        }
Exemple #43
0
	public void HandleBattleEvent(BattleEvent type) {
		switch(type) {
		case BattleEvent.TurnChange:
			if(CurrentScene == 0) {
				bc.PauseBattle();
				nextScene();
			} else if(CurrentScene == 2) {
				// did the bball die?
				if(bc.EnemyCombatants[0].HitPoints == 0) {
					bc.PauseBattle();
					mus.StopMusic(3.0f);
					startTimer();
					nextScene();
				}
			}

			break;
		case BattleEvent.Finished:
			mus.StopMusic(1.0f);
			nextScene();
			break;
		}
	}