示例#1
0
    public int getDamage(LuaEnemyController enemy, float atkMult)
    {
        if (enemy.presetDmg != -1826643)
        {
            int dmg = enemy.presetDmg;
            enemy.presetDmg = -1826643;
            return(dmg);
        }
        if (atkMult == -2)
        {
            atkMult = getAtkMult();
        }
        if (atkMult < 0)
        {
            return(-1);
        }
        int damage = (int)Mathf.Round(((PlayerCharacter.instance.WeaponATK + PlayerCharacter.instance.ATK - enemy.Defense) + UnityEngine.Random.value * 2) * atkMult);

        if (damage < 0)
        {
            return(0);
        }
        if (GlobalControls.crate)
        {
            damage = -damage;
        }
        return(damage);
    }
示例#2
0
 public void quickInit(int enemyIndex, LuaEnemyController target, int damage = -478294)
 {
     Init(enemyIndex);
     enemy = target;
     if (damage != -478294)
     {
         Damage = damage;
     }
     shakeInProgress = false;
 }
示例#3
0
 public void quickInit(LuaEnemyController target, int damage = -478294)
 {
     commonInit();
     commonQuickInit();
     LaunchInstance();
     allFightUiInstances[allFightUiInstances.Count - 1].quickInit(targetIDs[0], target, damage);
     allFightUiInstances[allFightUiInstances.Count - 1].isCoroutine = true;
     StopAction(-2, true);
     allFightUiInstances[allFightUiInstances.Count - 1].StopAction(-2);
     // damageTextRt.position = target.GetComponent<RectTransform>().position;
 }
示例#4
0
 public void ChangeTarget(LuaEnemyController target)
 {
     while (boundFightUiInstances.Count > 1)
     {
         allFightUiInstances.Remove(boundFightUiInstances[1]);
         Destroy(boundFightUiInstances[1].lifeBar.gameObject);
         Destroy(boundFightUiInstances[1].damageText.gameObject);
         Destroy(boundFightUiInstances[1].gameObject);
         boundFightUiInstances.RemoveAt(1);
     }
     boundFightUiInstances[0].ChangeTarget(target);
 }
示例#5
0
 public void Init(int enemyIndex)
 {
     Start();
     Damage = -478294;
     lifeBar.setVisible(false);
     lifeBar.whenDamage = true;
     enemy = UIController.instance.encounter.EnabledEnemies[enemyIndex];
     lifeBar.transform.SetParent(enemy.transform);
     damageText.transform.SetParent(enemy.transform);
     slice.img.transform.SetParent(enemy.transform);
     enePos     = enemy.GetComponent <RectTransform>().position;
     eneSize    = enemy.GetComponent <RectTransform>().sizeDelta;
     shakeTimer = 0;
 }
示例#6
0
    public void ChangeTarget(LuaEnemyController target)
    {
        enemy = target;
        if (Damage != -478294)
        {
            Damage = 0;
        }
        Damage  = FightUIController.instance.getDamage(enemy, PlayerController.instance.lastHitMult);
        enePos  = enemy.GetComponent <RectTransform>().position;
        eneSize = enemy.GetComponent <RectTransform>().sizeDelta;
        lifeBar.transform.SetParent(enemy.transform);
        damageText.transform.SetParent(enemy.transform);
        slice.img.transform.SetParent(enemy.transform);

        /*Vector3 slicePos = new Vector3(enemy.GetComponent<RectTransform>().position.x + enemy.offsets[0].x,
         *                             enemy.GetComponent<RectTransform>().position.y + eneSize.y / 2 + enemy.offsets[0].y - 55, enemy.GetComponent<RectTransform>().position.z);*/
    }
    protected override void LoadEnemiesAndPositions()
    {
        AudioSource musicSource = GameObject.Find("Main Camera").GetComponent <AudioSource>();

        EncounterText = script.GetVar("encountertext").String;
        DynValue enemyScriptsLua   = script.GetVar("enemies");
        DynValue enemyPositionsLua = script.GetVar("enemypositions");
        string   musicFile         = script.GetVar("music").String;

        try { enemies = new LuaEnemyController[enemyScriptsLua.Table.Length]; /*dangerously assumes enemies is defined*/ }
        catch (Exception) {
            UnitaleUtil.DisplayLuaError(StaticInits.ENCOUNTER, "There's no enemies table in your encounter. Is this a pre-0.1.2 encounter? It's easy to fix!\n\n"
                                        + "1. Create a Monsters folder in the mod's Lua folder\n"
                                        + "2. Add the monster script (custom.lua) to this new folder\n"
                                        + "3. Add the following line to the beginning of this encounter script, located in the mod folder/Lua/Encounters:\nenemies = {\"custom\"}\n"
                                        + "4. You're done! Starting from 0.1.2, you can name your monster and encounter scripts anything.");
            return;
        }
        if (enemyPositionsLua != null && enemyPositionsLua.Table != null)
        {
            enemyPositions = new Vector2[enemyPositionsLua.Table.Length];
            for (int i = 0; i < enemyPositionsLua.Table.Length; i++)
            {
                Table posTable = enemyPositionsLua.Table.Get(i + 1).Table;
                if (i >= enemies.Length)
                {
                    break;
                }

                enemyPositions[i] = new Vector2((float)posTable.Get(1).Number, (float)posTable.Get(2).Number);
            }
        }

        if (MusicManager.IsStoppedOrNull(PlayerOverworld.audioKept))
        {
            if (musicFile != null)
            {
                try {
                    AudioClip music = AudioClipRegistry.GetMusic(musicFile);
                    musicSource.clip      = music;
                    MusicManager.filename = "music:" + musicFile.ToLower();
                } catch (Exception) { UnitaleUtil.WriteInLogAndDebugger("[WARN]Loading custom music failed."); }
            }
            else
            {
                musicSource.clip      = AudioClipRegistry.GetMusic("mus_battle1");
                musicSource.volume    = .6f;
                MusicManager.filename = "music:mus_battle1";
            }
            NewMusicManager.audioname["src"] = MusicManager.filename;
        }
        // Instantiate all the enemy objects
        if (enemies.Length > enemyPositions.Length)
        {
            UnitaleUtil.DisplayLuaError(StaticInits.ENCOUNTER, "All enemies in an encounter must have a screen position defined. Either your enemypositions table is missing, "
                                        + "or there are more enemies than available positions. Refer to the documentation's Basic Setup section on how to do this.");
        }
        enemyInstances = new GameObject[enemies.Length];
        for (int i = 0; i < enemies.Length; i++)
        {
            enemyInstances[i] = Instantiate(Resources.Load <GameObject>("Prefabs/LUAEnemy 1"));
            enemyInstances[i].transform.SetParent(gameObject.transform);
            enemyInstances[i].transform.localScale = new Vector3(1, 1, 1); // apparently this was suddenly required or the scale would be (0,0,0)
            enemies[i]            = enemyInstances[i].GetComponent <LuaEnemyController>();
            enemies[i].scriptName = enemyScriptsLua.Table.Get(i + 1).String;
            enemies[i].index      = i;
            if (i < enemyPositions.Length)
            {
                enemies[i].GetComponent <RectTransform>().anchoredPosition = new Vector2(enemyPositions[i].x, enemyPositions[i].y);
            }
            else
            {
                enemies[i].GetComponent <RectTransform>().anchoredPosition = new Vector2(0, 1);
            }
        }

        // Attach the controllers to the encounter's enemies table
        DynValue[] enemyStatusCtrl = new DynValue[enemies.Length];
        Table      luaEnemyTable   = script.GetVar("enemies").Table;

        for (int i = 0; i < enemyStatusCtrl.Length; i++)
        {
            //enemies[i].luaStatus = new LuaEnemyStatus(enemies[i]);
            enemies[i].script = new ScriptWrapper();
            luaEnemyTable.Set(i + 1, UserData.Create(enemies[i].script));
        }
        script.SetVar("enemies", DynValue.NewTable(luaEnemyTable));
        Table luaWaveTable = new Table(null);

        script.SetVar("waves", DynValue.NewTable(luaWaveTable));

        //if (MusicManager.isStoppedOrNull(PlayerOverworld.audioKept))
        //    musicSource.Play(); // play that funky music
    }
示例#8
0
 public LuaEnemyStatus(LuaEnemyController ctrl)
 {
     this.ctrl = ctrl;
 }