// Update is called once per frame void Update() { if (!initmon) { if (Lists.IsActive() && MonInit.IsActive() && BattleMain3.IsActive()) { //MonInv.AddMonster(MonInit.MakeFromPrefab(test)); //MonInv.AddMonster(MonInit.MakeFromPrefab(test)); initmon = true; randopon = Lists.RandMon(); randopon = MonInit.RandomFromPrefab(randopon); //randopon = MonInit.RandomFromPrefab(testopon); BattleMain3.SetMon(randopon); //you = MonInv.FirstActive(); //you = MonInit.MakeFromPrefab(test); //you = new Monster.SubMonster(MonInv.FirstActive()); //BattleMain3.SetYou(you); BattleMain3.TurnSet(true); } } else if (initmon) { gameObject.SetActive(false); //animation, activate BattleMain3, close this } }
//revise public void SwapPos(Monster.SubMonster mon1, Monster.SubMonster mon2) { Monster.SubMonster temp; int i, j; i = FindReference(mon1); if (i == 100) { return; } else { j = FindReference(mon2); if (j == 100) { return; } else { temp = mon1; monsters[i] = monsters[j]; monsters[j] = temp; } } }
public Monster.SubMonster[] ReturnActives() { Monster.SubMonster[] final = new Monster.SubMonster[3]; for (int i = 0; i < 3; i++) { final[i] = monsters[i]; } return(final); }
public static Monster.SubMonster RandomFromPrefab(Monster.SubMonster mon) { Monster.SubMonster temp = new Monster.SubMonster(mon); temp = RandomMoves(temp); temp.SpeedInit(); temp.MaxHealthInit(false); GiveFingerPrint(temp); return(temp); }
public Monster.SubMonster[] ReturnMain() { Monster.SubMonster[] final = new Monster.SubMonster[10]; for (int i = 3; i < 13; i++) { final[i - 3] = monsters[i]; } return(final); }
public static Monster.SubMonster RandMon() { Random.InitState((int)System.DateTime.Now.Ticks); int i = Random.Range(0, instance.allmonsters.Length); Monster.SubMonster temp = new Monster.SubMonster();//instance.allmonsters[i].themonster); temp = MonInit.MakeFromPrefab(instance.allmonsters[i]); //temp = return(temp); }
public static Monster.SubMonster MakeFromPrefab(Monster mon) { //print("gets here"); Monster.SubMonster temp = new Monster.SubMonster(mon.themonster); temp.MaxHealthInit(true); temp.SpeedInit(); temp = RandomMoves(temp); GiveFingerPrint(temp); return(temp); }
public static void SetNewMon(Monster.SubMonster newmon, int player) { if (player == 1) { instance.changeto1 = newmon; } else if (player == 2) { instance.changeto2 = newmon; } }
void OnEnable() { Events.SetActive(false); temp = Lists.RandMon(); temp = MonInit.RandomFromPrefab(temp); disp.sprite = Resources.Load("MonsterSprites/" + temp.imagepath, typeof(Sprite)) as Sprite; text.text = "Aw! You've found a lonely " + temp.Name + "\nwho wants to join your team\n\nDo you want to keep it?"; //SaveLoad.Save(SaveCallBack); }
public void RemoveMonster(Monster.SubMonster rmitem) { int i = FindReference(rmitem); if (i == 100) { return; } else { monsters[i] = null; } }
public bool HasMonster(Monster.SubMonster testitem) { for (int i = 0; i < monsters.Length; i++) { if (monsters[i] != null) { if (monsters[i].Name == testitem.Name) { return(true); } } } return(false); }
public int FindReference(Monster.SubMonster refitem) { for (int i = 0; i < monsters.Length; i++) { if (monsters[i] != null) { if (monsters[i].fingerprint == refitem.fingerprint) { return(i); } } } return(100); }
void OnEnable() { if (isLocalPlayer) { i = 1; } else { i = 2; } you = BMMulti.GetYou(i); UpSlots(); }
public static void SetYou(Monster.SubMonster newmon, int player) { if (player == 1) { instance.p1mon = newmon; } else if (player == 2) { instance.p2mon = newmon; } else { newmon = new Monster.SubMonster(); } }
public void Move2Empty(Monster.SubMonster mon, int slot) { Monster.SubMonster temp; int i; i = FindReference(mon); if (i == 100) { return; } else { temp = mon; monsters[i] = null; monsters[slot] = temp; } }
public void AddMonster(Monster.SubMonster newmon) { if (!discnames.Contains(newmon.Name)) { discnames.Add(newmon.Name); discovered.Add(newmon); } for (int i = 0; i < monsters.Length; i++) { if (monsters[i] == null) { monsters[i] = newmon; return; } } }
public void IsComplete(Monster.SubMonster test) { turninpanel.SetActive(false); int thepay = thequest.pay; if (CheckComplete(test)) { successpanel.SetActive(true); DowntownControl.GetPlayer().iteminv.AddCoins(thepay); DowntownControl.GetPlayer().moninv.RemoveMonster(test); thequest.ClearQuest(); } else { failpanel.SetActive(true); } }
public bool CheckComplete(Monster.SubMonster test) { switch (thequest.QT) { case QuestType.ATK: if (test.ATK > thequest.num) { return(true); } break; case QuestType.HP: if (test.maxhealth > thequest.num) { return(true); } break; case QuestType.move: if (test.KnowsMove(thequest.getmove)) { return(true); } break; case QuestType.SPD: if (test.speed > thequest.num) { return(true); } break; case QuestType.type: if (test.Type == thequest.gettype) { return(true); } break; case QuestType.none: return(false); } return(false); }
public void Set(Monster.SubMonster mon) { namedec.text = mon.Name + "---" + Types.TypePrinter(mon.Type) + " type"; namedec.text += "\n\n"; namedec.text += mon.desc; speed.text = "Attack: " + mon.ATK + "\n"; speed.text += "Speed: " + mon.speed; kills.text = "Kills: " + mon.kills; moves.text = "Moves:\n"; moves.text += mon.moves[0].Name + "---" + Types.TypePrinter(mon.moves[0].type) + "---" + mon.moves[0].curPP + "/" + mon.moves[0].PP + "---" + mon.moves[0].descr + "\n"; moves.text += mon.moves[1].Name + "---" + Types.TypePrinter(mon.moves[1].type) + "---" + mon.moves[1].curPP + "/" + mon.moves[1].PP + "---" + mon.moves[1].descr + "\n"; moves.text += mon.moves[2].Name + "---" + Types.TypePrinter(mon.moves[2].type) + "---" + mon.moves[2].curPP + "/" + mon.moves[2].PP + "---" + mon.moves[2].descr; health.text = "Health:\n\n"; health.text += "" + Math.Round(mon.curhealth, 2) + " / " + Math.Round(mon.maxhealth, 2); }
public static Monster.SubMonster RandomMoves(Monster.SubMonster mon) { Move[] temp = Lists.Moves(); List <int> done = new List <int>(); List <Move> potentials = new List <Move>(); int randi; for (int i = 0; i < temp.Length; i++) { for (int j = 0; j < mon.compatmovetypes.Length; j++) { if (temp[i].themove.type == mon.compatmovetypes[j]) { potentials.Add(temp[i]); } } } randi = Random.Range((int)0, (int)potentials.Count); mon.moves[0] = new Move.SubMove(potentials[randi].themove); done.Add(randi); for (int k = 1; k < 3; k++) { randi = Random.Range((int)0, (int)potentials.Count); if (!done.Contains(randi)) { done.Add(randi); mon.moves[k] = new Move.SubMove(potentials[randi].themove); } else { k--; } } return(new Monster.SubMonster(mon)); }
public static void GiveFingerPrint(Monster.SubMonster mon) { Random.InitState((int)System.DateTime.Now.Ticks); //instance.i++; mon.fingerprint = mon.Name + Random.value; }
public void Nullify() { curItem = null; curMonster = null; }
//private int i = 0; //testing void Update() { if (!doneyet) { you = player1.moninv.FirstActive(); if (you != null) { if (you.Name != "") { doneyet = true; } } if (opon == null) { doneyet = false; } else if (opon.Name == "") { doneyet = false; } else { doneyet = true; } UpHealth(); } if (Input.GetKeyDown(KeyCode.Space)) { SceneManager.LoadScene("Adventure"); } /*if (Input.GetKeyDown("space")&&turn) * { * you = Lists.RandMon(); * int opmove = (int)UnityEngine.Random.Range((int)0, (int)3); * UseMove(instance.opon, instance.you, instance.opon.moves[opmove]); * }*/ /*if (Input.GetKeyDown(KeyCode.Space) && i == 0) * { * UpMenu.SetMenu(UpMenu.curMenu.atk); * i++; * } * else if (Input.GetKeyDown(KeyCode.Space) && i == 1) * { * i = 0; * UpMenu.SetMenu(UpMenu.curMenu.none); * SetMove(you.moves[0]); * StartCoroutine("CoDoTurn",TurnType.attack); * }*/ //buttons.SetActive(turn); if (you != null) { left.sprite = Resources.Load("MonsterSprites/" + you.imagepath, typeof(Sprite)) as Sprite; } else if (you == null) { left.sprite = null; } if (opon != null) { right.sprite = Resources.Load("MonsterSprites/" + opon.imagepath, typeof(Sprite)) as Sprite; } }
IEnumerator YouTurn(TurnType tt) { int esccheck; switch (tt) { case TurnType.none: break; case TurnType.item: if (instance.turnitem.IT == Item.ItemType.potion) { //do animation here //DoPotion function? instance.you.Heal(-1); TheQueue.AddQueue("You used a potion!"); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); TheQueue.AddQueue(instance.you.Name + " is fully healed!"); if (instance.you.status.Count == 0) { instance.you.SetStatus(Monster.Status.none, 1); } } else if (instance.turnitem.IT == Item.ItemType.net) { //DoNet //animation //if types match, catch //else if net type is none, 50/50 //else if types dont match, dont catch TheQueue.AddQueue("You launched a net!"); if (instance.turnitem.nettype == Types.Type.none) { if (!instance.CheckNet()) { TheQueue.AddQueue("Your net missed!"); } else { if (player1.moninv.IsFull()) { TheQueue.AddQueue("You don't have room for this m0nst3r!"); TheQueue.goadventure = true; yield break; } else { TheQueue.AddQueue("You've caught the " + instance.opon.Name + "!"); player1.moninv.AddMonster(instance.opon); TheQueue.goadventure = true; yield break; } } } else if (instance.turnitem.nettype == instance.opon.Type) { if (player1.moninv.IsFull()) { TheQueue.AddQueue("You don't have room for this m0nst3r!"); TheQueue.goadventure = true; yield break; } else { TheQueue.AddQueue("You've caught the " + instance.opon.Name + "!"); player1.moninv.AddMonster(instance.opon); TheQueue.goadventure = true; yield break; } } else { TheQueue.AddQueue("Your net missed!"); } } break; case TurnType.attack: atkturn.atk = you; atkturn.def = opon; atkturn.atkmove = turnmove; usingmove = true; StartCoroutine("UseMoveCo", atkturn); while (usingmove) { yield return(new WaitForEndOfFrame()); } UpHealth(); break; case TurnType.change: you = changeto; changeto = new Monster.SubMonster(); UpHealth(); TheQueue.AddQueue("You've changed m0nst3rz to " + instance.you.Name + "!"); break; case TurnType.esc: esccheck = UnityEngine.Random.Range((int)0, (int)3); if (esccheck == 0) { TheQueue.AddQueue("You've escaped!"); TheQueue.goadventure = true; yield break; } else { TheQueue.AddQueue("Escape attempt failed!"); } break; } while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } if (!instance.you.isDead()) { instance.you.StatLenUpdate(); UpStats(); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); } if (instance.you.isDead() && instance.opon.isDead()) { TheQueue.AddQueue("Both m0nst3rz have died!"); player1.moninv.RemoveMonster(instance.you); you = new Monster.SubMonster(); if (player1.moninv.HasAnActive()) { TheQueue.goadventure = true; } else { TheQueue.gohome = true; } yield break; } else if (instance.you.isDead()) { player1.moninv.RemoveMonster(instance.you); if (player1.moninv.HasAnActive()) { player1.moninv.RemoveMonster(you); you = new Monster.SubMonster(); //instance.deadoponturn = true; TheQueue.curdead = true; while (you.Name == "") { yield return(new WaitForEndOfFrame()); } } else { player1.moninv.RemoveMonster(you); you = new Monster.SubMonster(); TheQueue.AddQueue("You're out of m0nst3rz!!!"); TheQueue.gohome = true; yield break; } } else if (instance.opon.isDead()) { you.GetKill(); TheQueue.AddQueue("You killed the " + instance.opon.Name + "!!!"); TheQueue.goadventure = true; yield break; //SceneManager.LoadScene("Adventure"); } if (TheQueue.QCount() == 0) { youturn = false; } }
IEnumerator MonTurn() { int opmove; //bool died = false; List <Move.SubMove> potmoves = new List <Move.SubMove>(); for (int i = 0; i < 3; i++) { if (opon.moves[i].curPP > 0) { potmoves.Add(opon.moves[i]); } } if (potmoves.Count > 0) { opmove = (int)UnityEngine.Random.Range((int)0, (int)potmoves.Count); atkturn.atk = opon; atkturn.def = you; atkturn.atkmove = potmoves[opmove]; usingmove = true; StartCoroutine("UseMoveCo", atkturn); while (usingmove) { yield return(new WaitForEndOfFrame()); } UpHealth(); } else { TheQueue.AddQueue(instance.opon.Name + " can't use any moves!"); } while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } if (instance.you.isDead() && instance.opon.isDead()) { TheQueue.AddQueue("Both m0nst3rz have died!"); player1.moninv.RemoveMonster(instance.you); you = new Monster.SubMonster(); if (player1.moninv.HasAnActive()) { TheQueue.goadventure = true; } else { TheQueue.gohome = true; } yield break; } else if (instance.you.isDead()) { player1.moninv.RemoveMonster(instance.you); opon.GetKill(); UpHealth();//check if (player1.moninv.HasAnActive()) { //instance.deadoponturn = false; player1.moninv.RemoveMonster(you); you = new Monster.SubMonster(); TheQueue.curdead = true; playerdied = true; while (you.Name == "") { yield return(new WaitForEndOfFrame()); } //playerdied = false; } else { player1.moninv.RemoveMonster(you); you = new Monster.SubMonster(); TheQueue.AddQueue("You're out of m0nst3rz!!!"); TheQueue.gohome = true; yield break; } } while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } opon.StatLenUpdate(); UpStats(); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); if (instance.opon.isDead()) { you.GetKill(); TheQueue.AddQueue("You killed the " + instance.opon.Name + "!!!"); TheQueue.goadventure = true; //deadoponturn = false; } if (TheQueue.QCount() == 0) { monturn = false; } }
public AtkTurn() { atk = new Monster.SubMonster(); def = new Monster.SubMonster(); atkmove = new Move.SubMove(); }
IEnumerator UseMoveCo(AtkTurn theturn) { double dam = 0; double origdam = 0; int paracheck = 100; int numhits = 0; bool multihit = false; bool mixedupfail = false; Monster.SubMonster atk = theturn.atk; Monster.SubMonster def = theturn.def; Move.SubMove themove = theturn.atkmove; int typecheck = Types.CheckWeakness(themove.type, def.Type); bool statimmune = false; bool dodamage = themove.dodamage; bool movefailed = false; if (themove.self) { statimmune = true; } if (themove.status == Monster.Status.none) { statimmune = true; } TheQueue.AddQueue(atk.Name + " used " + themove.Name + "!"); //separate if (atk.status.Contains(Monster.Status.paralyze) || atk.status.Contains(Monster.Status.frozen)) { paracheck = (int)UnityEngine.Random.Range((int)0, (int)3); if (paracheck != 0) { TheQueue.AddQueue(atk.Name + "'s status prevented it from moving!"); usingmove = false; yield break; } } else if (atk.status.Contains(Monster.Status.asleep)) { if ((int)UnityEngine.Random.Range((int)0, (int)5) == 0) { TheQueue.AddQueue(atk.Name + " is still sleeping!"); TheQueue.AddQueue(atk.Name + " just woke up"); atk.SetStatus(Monster.Status.none, 1); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpStats(); } else { TheQueue.AddQueue(atk.Name + " is still sleeping!"); usingmove = false; yield break; } } themove.Use(); if (def.status.Contains(Monster.Status.evading)) { if ((themove.dodamage || (!themove.self && themove.status != Monster.Status.none))) { if ((int)UnityEngine.Random.Range((int)0, (int)4) > 0) { TheQueue.AddQueue(def.Name + " evaded the move!"); if (themove.hurtself) { TheQueue.AddQueue(atk.Name + " hurt itself!"); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } TheQueue.AddQueue("It caused " + themove.hurtselfdam + " damage!"); UpHealth(); atk.Damage(themove.hurtselfdam); if (atk.isDead()) { TheQueue.AddQueue(atk.Name + " died!!!"); } } usingmove = false; yield break; } } } dam = themove.GiveDam(); dam *= (1 + (atk.ATK / 200)); dam = System.Math.Round(dam, 2); //maybe move this switch statement within themove.hit() if (themove.dodamage || !statimmune) { switch (def.thequirk.quirk) { case Monster.QuirkType.none: break; case Monster.QuirkType.bouncer: if (themove.mt == def.thequirk.afmt && themove.dodamage) { TheQueue.AddQueue(def.Name + "'s " + def.thequirk.Name + " caused the move to bounce back!"); //,false); atk.Damage(dam / 2); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); dodamage = false; movefailed = true; while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); TheQueue.AddQueue("It caused " + dam / 2 + " damage!"); //,true); if (!themove.hurtself) { usingmove = false; yield break; } } break; case Monster.QuirkType.dodger: if (themove.mt == def.thequirk.afmt && themove.dodamage) { if ((int)UnityEngine.Random.Range(0, 2) == 0) { break; } else { dodamage = false; movefailed = true; TheQueue.AddQueue(def.Name + "'s " + def.thequirk.Name + " caused them to dodge!"); //,false); if (!themove.hurtself) { usingmove = false; yield break; } } } break; case Monster.QuirkType.givestatus: if (themove.mt == def.thequirk.afmt && themove.dodamage && !atk.status.Contains(def.thequirk.givestatus)) { if (atk.thequirk.quirk == Monster.QuirkType.statimmune) { if (atk.thequirk.givestatus == def.thequirk.givestatus) { break; } else { TheQueue.AddQueue("The move caused a status rebound!"); atk.SetStatus(def.thequirk.givestatus, def.thequirk.statlen); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpStats(); } } else { TheQueue.AddQueue("The move caused a status rebound!"); atk.SetStatus(def.thequirk.givestatus, def.thequirk.statlen); //unless the attacker is immune to this status effect } } break; case Monster.QuirkType.healer: if (def.thequirk.aftype == themove.type && themove.dodamage) { dodamage = false; movefailed = true; TheQueue.AddQueue("The moved caused " + def.Name + " to heal!"); def.Heal(def.thequirk.healhurt); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); if (!themove.hurtself) { usingmove = false; yield break; } } break; case Monster.QuirkType.healerMT: if (def.thequirk.afmt == themove.mt && themove.dodamage) { movefailed = true; dodamage = false; //add quirk name TheQueue.AddQueue("The moved caused " + def.Name + " to heal!"); def.Heal(def.thequirk.healhurt); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); if (!themove.hurtself) { usingmove = false; yield break; } } break; case Monster.QuirkType.hurter: if (def.thequirk.afmt == themove.mt && themove.dodamage) { //add quirk name TheQueue.AddQueue("The moved caused " + atk.Name + " to take " + def.thequirk.healhurt + " damage!"); atk.Damage(def.thequirk.healhurt); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); //if (atkr.isDead()) return; } break; case Monster.QuirkType.hurterT: if (def.thequirk.aftype == themove.type && themove.dodamage) { //add quirk name TheQueue.AddQueue("The moved caused " + atk.Name + " to take damage!"); atk.Damage(def.thequirk.healhurt); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); //if (atkr.isDead()) return; } break; case Monster.QuirkType.mtimmune: if (themove.mt == def.thequirk.afmt && themove.dodamage) { movefailed = true; //add quirk name dodamage = false; TheQueue.AddQueue(def.Name + " is immune to this type of move!"); if (!themove.hurtself) { usingmove = false; yield break; } } break; case Monster.QuirkType.statimmune: if (themove.status == def.thequirk.givestatus && !themove.self) { //add quirk name statimmune = true; TheQueue.AddQueue(def.Name + " is immune to " + themove.Name + "'s status effect!"); } break; case Monster.QuirkType.typeimmune: if (themove.type == def.thequirk.aftype && themove.dodamage) { //add quirk name dodamage = false; movefailed = true; TheQueue.AddQueue(def.Name + " is immune to this type!"); if (!themove.hurtself) { usingmove = false; yield break; } } break; } } if (themove.Hit()) { if (dodamage) { dam = themove.GiveDam(); dam *= (1 + (atk.ATK / 200)); //dam = System.Math.Round(dam, 2); if (atk.status.Contains(Monster.Status.doubled)) { dam *= 2; TheQueue.AddQueue(atk.Name + "'s status caused double damage!"); } if (atk.status.Contains(Monster.Status.halved)) { dam *= .5; TheQueue.AddQueue(atk.Name + "'s status caused half damage!"); } if (atk.status.Contains(Monster.Status.high)) { dam *= .7; TheQueue.AddQueue(atk.Name + "'s status caused reduced damage!"); } if (atk.status.Contains(Monster.Status.mixedup)) { if ((int)UnityEngine.Random.Range((int)0, (int)2) == 0) { TheQueue.AddQueue(atk.Name + " hurt itself instead!"); dam = System.Math.Round(dam, 2); atk.Damage(dam / 2); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); TheQueue.AddQueue("It did " + dam / 2 + " damage!"); mixedupfail = true; dodamage = false; statimmune = true; } } if (def.status.Contains(Monster.Status.annoyed) && !mixedupfail) { //print("poopoo"); dam *= 1.4; TheQueue.AddQueue(def.Name + "'s status caused increased damage!"); } if (def.status.Contains(Monster.Status.cold) && !mixedupfail) { dam *= 1.4; TheQueue.AddQueue(def.Name + "'s status caused increased damage!"); } if (dodamage) { if (typecheck == 2) { TheQueue.AddQueue("MEGA WEAKNESS! INSTAKILL!"); dam *= 3000; } else if (typecheck == 1) { TheQueue.AddQueue("Super effective!"); dam *= 2; /*if (themove.Crit()) * { * dam *= 2; * TheQueue.AddQueue("Critical hit!"); * }*/ //def.Damage(dam); //TheQueue.AddQueue("It did " + dam + " damage!"); } else if (typecheck == 0) { /*if (themove.Crit()) * { * dam *= 1.5; * TheQueue.AddQueue("Critical hit!"); * }*/ //Damage(dam); //TheQueue.AddQueue("It did " + dam + " damage!"); } else if (typecheck == -1) { TheQueue.AddQueue("Not very effective"); dam /= 1.5; //Damage(dam); //TheQueue.AddQueue("It did " + dam + " damage!"); } else if (typecheck == -2) { movefailed = true; statimmune = true; dodamage = false; mixedupfail = true; TheQueue.AddQueue("The move had no effect!"); } else if (typecheck == -3) { movefailed = true; dodamage = false; mixedupfail = true; TheQueue.AddQueue("The move caused " + dam + " points of healing!"); def.Heal(dam); statimmune = true; } if (!mixedupfail) { dam = Math.Round(dam, 2); origdam = dam; if (themove.multihit && UnityEngine.Random.Range(0, 100f) < themove.MHP) { multihit = true; TheQueue.AddQueue("Multi hit move!"); } if (!multihit) { if (themove.Crit()) { dam *= 1.5; TheQueue.AddQueue("Critical hit!"); } TheQueue.AddQueue("It did " + dam + " damage!"); def.Damage(dam); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UnityEngine.Random.InitState((int)System.DateTime.Now.Ticks); UpHealth(); } else if (multihit) { if (themove.Crit()) { dam *= 1.5; TheQueue.AddQueue("Critical hit!"); } TheQueue.AddQueue("First hit did " + dam + " damage!"); def.Damage(dam); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UnityEngine.Random.InitState((int)System.DateTime.Now.Ticks); UpHealth(); numhits = 2; dam = origdam * (double)UnityEngine.Random.Range(.9f, 1.1f); dam = Math.Round(dam, 2); if (themove.Crit()) { dam *= 1.5; TheQueue.AddQueue("Critical hit!"); } TheQueue.AddQueue("Second hit did " + dam + " damage!"); def.Damage(dam); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); if (themove.maxhits > 2) { for (int i = 3; i <= themove.maxhits; i++) { if (UnityEngine.Random.Range(0, 100f) < themove.MHP) { dam = origdam * (double)UnityEngine.Random.Range(.8f, 1.2f); dam = Math.Round(dam, 2); if (themove.Crit()) { dam *= 1.5; TheQueue.AddQueue("Critical hit!"); } def.Damage(dam); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); UnityEngine.Random.InitState((int)System.DateTime.Now.Ticks); numhits = i; TheQueue.AddQueue("Hit " + i + " did " + dam + " damage!"); } else { break; } } } TheQueue.AddQueue(numhits + " hits!"); } } } } if (!def.isDead() && !statimmune && themove.status != Monster.Status.none) { def.SetStatus(themove.status, themove.statlen); } //else if (!def.isDead() && !statimmune && themove.status != Monster.Status.none && def.status != Monster.Status.none && themove.statoverride) //def.SetStatus(themove.status, themove.statlen); else if (!def.isDead() && themove.status != Monster.Status.none && !themove.self && statimmune) { TheQueue.AddQueue(themove.Name + "'s status effect failed!"); } while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpStats(); if (themove.hurtself) { TheQueue.AddQueue(atk.Name + " hurt itself!"); TheQueue.AddQueue("It caused " + themove.hurtselfdam + " damage!"); //health bar animation atk.Damage(themove.hurtselfdam); while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } UpHealth(); } else if (themove.healself && !movefailed) { TheQueue.AddQueue(themove.Name + " caused " + atk.Name + " to heal!"); TheQueue.AddQueue(atk.Name + " healed " + themove.hurtselfdam + " health!"); //health bar animation atk.Heal(themove.hurtselfdam); } if (themove.self && !atk.status.Contains(themove.status) && !atk.isDead()) { TheQueue.AddQueue(themove.Name + " gave " + atk.Name + " a status effect!"); atk.SetStatus(themove.status, themove.statlen); statimmune = true; while (TheQueue.QCount() > 0) { yield return(new WaitForEndOfFrame()); } //if(themove.healself) //return; } /*else if (themove.self && atk.status != Monster.Status.none && themove.statoverride && !atk.isDead()) * { * TheQueue.AddQueue(themove.Name + " gave " + atk.Name + " a status effect!"); * atk.SetStatus(themove.status, themove.statlen); * statimmune = true; * }*/ else if (themove.self && atk.status.Contains(themove.status) && !atk.isDead()) { TheQueue.AddQueue(atk.Name + " failed to give itself a status effect!"); } if (def.isDead()) { TheQueue.AddQueue(def.Name + " died!!!"); } if (atk.isDead()) { TheQueue.AddQueue(atk.Name + " died!!!"); } } else { TheQueue.AddQueue(atk.Name + "'s attack missed!"); } //UpStats(); usingmove = false; }
public static void SetMon(Monster.SubMonster newmon) { instance.opon = newmon; }
public static void SetYou(Monster.SubMonster newmon) { instance.you = newmon; }
void OnEnable() { you = BattleMain3.GetYou(); UpSlots(); }