Ejemplo n.º 1
0
    // 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
        }
    }
Ejemplo n.º 2
0
    //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;
            }
        }
    }
Ejemplo n.º 3
0
 public Monster.SubMonster[] ReturnActives()
 {
     Monster.SubMonster[] final = new Monster.SubMonster[3];
     for (int i = 0; i < 3; i++)
     {
         final[i] = monsters[i];
     }
     return(final);
 }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
    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);
    }
Ejemplo n.º 7
0
    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);
    }
Ejemplo n.º 8
0
 public static void SetNewMon(Monster.SubMonster newmon, int player)
 {
     if (player == 1)
     {
         instance.changeto1 = newmon;
     }
     else if (player == 2)
     {
         instance.changeto2 = newmon;
     }
 }
Ejemplo n.º 9
0
    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);
    }
Ejemplo n.º 10
0
    public void RemoveMonster(Monster.SubMonster rmitem)
    {
        int i = FindReference(rmitem);

        if (i == 100)
        {
            return;
        }
        else
        {
            monsters[i] = null;
        }
    }
Ejemplo n.º 11
0
 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);
 }
Ejemplo n.º 12
0
 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);
 }
Ejemplo n.º 13
0
    void OnEnable()
    {
        if (isLocalPlayer)
        {
            i = 1;
        }
        else
        {
            i = 2;
        }

        you = BMMulti.GetYou(i);

        UpSlots();
    }
Ejemplo n.º 14
0
 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();
     }
 }
Ejemplo n.º 15
0
    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;
        }
    }
Ejemplo n.º 16
0
    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;
            }
        }
    }
Ejemplo n.º 17
0
    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);
        }
    }
Ejemplo n.º 18
0
    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);
    }
Ejemplo n.º 19
0
    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);
    }
Ejemplo n.º 20
0
    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));
    }
Ejemplo n.º 21
0
 public static void GiveFingerPrint(Monster.SubMonster mon)
 {
     Random.InitState((int)System.DateTime.Now.Ticks);
     //instance.i++;
     mon.fingerprint = mon.Name + Random.value;
 }
Ejemplo n.º 22
0
 public void Nullify()
 {
     curItem = null; curMonster = null;
 }
Ejemplo n.º 23
0
    //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;
        }
    }
Ejemplo n.º 24
0
    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;
        }
    }
Ejemplo n.º 25
0
    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;
        }
    }
Ejemplo n.º 26
0
 public AtkTurn()
 {
     atk     = new Monster.SubMonster();
     def     = new Monster.SubMonster();
     atkmove = new Move.SubMove();
 }
Ejemplo n.º 27
0
    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;
    }
Ejemplo n.º 28
0
 public static void SetMon(Monster.SubMonster newmon)
 {
     instance.opon = newmon;
 }
Ejemplo n.º 29
0
 public static void SetYou(Monster.SubMonster newmon)
 {
     instance.you = newmon;
 }
Ejemplo n.º 30
0
    void OnEnable()
    {
        you = BattleMain3.GetYou();

        UpSlots();
    }