Esempio n. 1
0
 public TeraData(string version)
 {
     SkillDatabase   = new SkillDatabase($"{Directory.GetCurrentDirectory()}\\Resources\\");
     NpcDatabase     = new NpcDatabase(npcList.ToList());
     OpCodeNamer     = new OpCodeNamer($"{Directory.GetCurrentDirectory()}\\Resources\\{version}.txt");
     SysMessageNamer = new OpCodeNamer($"{Directory.GetCurrentDirectory()}\\Resources\\smt_{version}.txt");
 }
Esempio n. 2
0
        internal TeraData(BasicTeraData basicData, string region, bool detectBosses)
        {
            string suffix = (basicData.Language == "Auto")?(region != "EU") ? region : "EU-EN": basicData.Language;

            SkillDatabase  = new SkillDatabase(basicData.ResourceDirectory, suffix);
            HotDotDatabase = new HotDotDatabase(basicData.ResourceDirectory, suffix);
            NpcDatabase    = new NpcDatabase(basicData.ResourceDirectory, suffix, detectBosses);
            //OpCodeNamer = new OpCodeNamer(Path.Combine(basicData.ResourceDirectory, $"opcodes\\opcodes-{region}.txt"));
        }
Esempio n. 3
0
        internal TeraData(BasicTeraData basicData, string region)
        {
//            Region = basicData.Regions.Single(x => x.Key == region);
            string suffix = (basicData.Language == "Auto") ? (region != "EU") ? region : "EU-EN" : basicData.Language;

            SkillDatabase = new SkillDatabase(basicData.ResourceDirectory, suffix);
            NpcDatabase   = new NpcDatabase(basicData.ResourceDirectory, suffix);
            //OpCodeNamer = new OpCodeNamer(Path.Combine(basicData.ResourceDirectory, $"opcodes\\opcodes-{region}.txt"));
        }
 void GetFoundedSkills(InteractiveObject selected)
 {
     for (int i = 0; i < 4; i++)
     {
         if (i < GameManager.Instance.skillsCurrent.Count)
         {
             bool found = false;
             foreach (GameObject skill in NpcDatabase.GetSkillRelationsImmune(selected))
             {
                 //    print("foreach immune");
                 if (GameManager.Instance.skillsCurrent[i] == skill)
                 {
                     skillIcons[i].GetComponent <SkillLocalUiController>().SetImmune();
                     found = true;
                     break;
                 }
             }
             if (!found)
             {
                 foreach (GameObject skill in NpcDatabase.GetSkillRelationsWeak(selected))
                 {
                     //      print("foreach weak");
                     if (GameManager.Instance.skillsCurrent[i] == skill)
                     {
                         skillIcons[i].GetComponent <SkillLocalUiController>().SetWeak();
                         found = true;
                         break;
                     }
                 }
             }
             if (!found)
             {
                 skillIcons[i].GetComponent <SkillLocalUiController>().SetClear();
             }
         }
         else
         {
             skillIcons[i].GetComponent <SkillLocalUiController>().SetClear();
         }
     }
 }
    void Awake()
    {
        // First we check if there are any other instances conflicting
        if (Instance != null && Instance != this)
        {
            // If that is the case, we destroy other instances
            Destroy(gameObject);
        }
        else
        {
            // Here we save our singleton instance
            Instance = this;

            // Furthermore we make sure that we don't destroy between scenes (this is optional)
            DontDestroyOnLoad(gameObject);

            NpcDatabase.ClearLists();

            transform.FindChild("Canvas").gameObject.SetActive(true);

            GameObject playerGO = Instantiate(stageRandomController.player, partyCells[0].transform.position, Quaternion.identity) as GameObject;
            playerGO.name  = "Player";
            playerGO.tag   = "Ally";
            player         = playerGO.GetComponent <InteractiveObject>();
            player.inParty = true;

            GetRandomSkills(skills);
            skillsCurrent = skills;

            foreach (NpcController mob in stageRandomController.npcList) // generate mobs stats on start of new game
            {
                mob.objectController.GenerateDynamicStats();
            }
            player.GenerateDynamicStats();
            _levelMapGenerator.GenerateMap(roomsMinimum);
        }
    }
Esempio n. 6
0
    public void Damage(float baseDmg, InteractiveObject attacker)
    {
        float DMG = 0;

        if (baseDmg > 0)
        {
            if (!inParty && attacker != this)
            {
                if (!attacker.inParty && npcControl.agressiveTo != NpcController.Target.everyone)
                {
                    npcControl.agressiveTo = NpcController.Target.enemies;
                }
                else
                {
                    npcControl.agressiveTo = NpcController.Target.everyone;
                    //actionOnDialog = DialogAction.none;
                }
            }

            DMG = baseDmg;

            // CHECK IF MOB IS INV/WEAK TO SKILL
            SkillController activeSkill;
            if (GameManager.Instance.activeSkill != null)
            {
                activeSkill = GameManager.Instance.activeSkill.GetComponent <SkillController>();

                if (activeSkill.skillType == SkillController.Type.none) // simple attack
                {
                    sendWeak = false;
                    NpcDatabase.CheckSkillRelation(false, this);
                    //GameManager.Instance.UpdatePressTurns(GameManager.Instance.pressTurns - 1);
                }
                else
                {
                    foreach (SkillController.Type skill in weakToDynamic)
                    {
                        if (skill == activeSkill.skillType)
                        {
                            DMG = baseDmg * 2;
                            if (attacker == this && GameManager.Instance.attackTarget != this)
                            {
                            }
                            else
                            {
                                NpcDatabase.CheckSkillRelation(true, this);
                                if (defendAgainst != attacker)
                                {
                                    sendWeak = true;
                                }
                                //GameManager.Instance.UpdatePressTurns(GameManager.Instance.pressTurns);
                                break;
                            }
                        }
                    }
                    foreach (SkillController.Type skill in invToDynamic)
                    {
                        if (skill == activeSkill.skillType)
                        {
                            DMG = baseDmg / 2;
                            if (attacker == this && GameManager.Instance.attackTarget != this)
                            {
                            }
                            else
                            {
                                NpcDatabase.CheckSkillRelation(false, this);
                                sendWeak = false;
                                //GameManager.Instance.UpdatePressTurns(GameManager.Instance.pressTurns - 1);
                                break;
                            }
                        }
                    }
                }
            }
        }
        attacker._anim.SetTrigger("Action");

        if (this != attacker)
        {
            StartCoroutine("ActionTriggerDelay", DMG);
        }
        else
        {
            StartCoroutine("ActionTriggerDelaySelf", DMG);
        }

        if (defendAgainst == attacker)
        {
            localCanvas._animator.SetTrigger("Defend");
        }
    }