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); }
public void quickInit(int enemyIndex, LuaEnemyController target, int damage = -478294) { Init(enemyIndex); enemy = target; if (damage != -478294) { Damage = damage; } shakeInProgress = false; }
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; }
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); }
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; }
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 }
public LuaEnemyStatus(LuaEnemyController ctrl) { this.ctrl = ctrl; }