public void OnPointerEnter(PointerEventData eventData)
    {
        SpriteRenderer rend = gameObject.GetComponent <SpriteRenderer>();
        scr_unit       data = sav_parent.GetComponent <scr_unit>();

        if (!data.isEnemy)
        {
            string checkEmerge = (string)DB_card.getIdentity(data.id)[5];
            if (data.canAttack())
            {
                rend.sprite = attack;
                rend.color  = new Color(1f, 1f, 1f, 1f);
            }
            else if (checkEmerge.Contains("[능력") && emerge_flag)
            {
                if (data.canSpell())
                {
                    rend.sprite = magic;
                    rend.color  = new Color(1f, 1f, 1f, 1f);
                }
            }
        }

        onMouse = true;
    }
    public void Cmdextract(GameObject unit)
    {
        scr_unit data = unit.GetComponent <scr_unit>();

        terial        -= 2;
        data.extracted = true;
        data.CmdgetSelfStatus(1, 1);

        if (data.description.Contains("[개방"))
        {
            switch (data.id)
            {
            case "Vera":
                data.CmdapplyDirectDamage(getOtherPlayer(gameObject.GetComponent <scr_playerController>().isHost), 3);
                break;

            case "raysen_samurai":
                getOtherPlayer(gameObject.GetComponent <scr_playerController>().isHost).GetComponent <scr_playerIdentity>().terial += 2;
                break;

            default:
                break;
            }
        }
    }
    public void requestParticle(int particle, GameObject target, int value)
    {
        scr_unit data = sav_parent.GetComponent <scr_unit>();

        data.request_particle        = particle;
        data.request_particle_target = target;
        data.request_particle_value  = value;
    }
    public void OnPointerClick(PointerEventData eventData)
    {
        if (ins == null)
        {
            scr_unit data  = transform.parent.GetComponent <scr_unit>();
            float    pos_y = transform.parent.GetComponent <Transform>().localPosition.y;

            ins = Instantiate(card);
            ins.transform.SetParent(GameObject.Find("Canvas").transform);
            ins.transform.localPosition = (pos_y > 0)? new Vector3(-195f, -215f, -20) : new Vector3(-195f, 215f, -20);
            ins.transform.localScale    = new Vector3(0.8f, 0.8f, 1f);
            ins.GetComponent <scr_card>().setIdentity(data.terial, data.attack, data.health, data.rank,
                                                      data.cardname, data.description, data.card_tag, data.pic_url, data.id);
        }
    }
    public void CmdGainStatusExtended(bool hosts, int gain_terial, int gain_health, int gain_maxHealth)
    {
        if (GetComponent <scr_playerController>().isHost == hosts)
        {
            int        sav_health = health;
            GameObject spec_unit  = null;

            max_health += gain_maxHealth;
            terial     += gain_terial;
            if (terial > 7)
            {
                terial = 7;
            }
            health += gain_health;
            if (health > max_health)
            {
                health = max_health;
            }

            if (health - sav_health > 0)
            {
                foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
                {
                    scr_unit curData = cur.GetComponent <scr_unit>();
                    if (curData.hosts == hosts && curData.id == "Angel_resia")
                    {
                        spec_unit = cur;
                        break;
                    }
                }
                if (spec_unit != null)
                {
                    foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
                    {
                        scr_unit curData = cur.GetComponent <scr_unit>();
                        if (curData.hosts != hosts)
                        {
                            spec_unit.GetComponent <scr_unit>().CmdDamage(cur, health - sav_health);
                        }
                    }
                    spec_unit.GetComponent <scr_unit>().CmdDamage(getOtherPlayer(gameObject.GetComponent <scr_playerController>().isHost), health - sav_health);
                }
            }
        }
    }
Beispiel #6
0
    public void OnEndDrag(PointerEventData eventData)
    {
        scr_playerIdentity data = sav_parent.GetComponent <scr_playerIdentity>();

        foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
        {
            scr_unit unitData = cur.GetComponent <scr_unit>();

            gameObject.transform.SetParent(GameObject.Find("Canvas").transform);
            if (Vector3.Distance(gameObject.transform.localPosition, cur.transform.localPosition) <= 60f &&
                !unitData.isEnemy && !unitData.extracted)
            {
                data.Cmdextract(cur);
                break;
            }
        }

        gameObject.transform.position = savePos;
        drag = false;
    }
 public void turnEnd()
 {
     if (time > nextTime)
     {
         getPlayer();
         bool check = localPlayer.GetComponent <scr_playerController>().myturn;
         if (getMeditator() && check)
         {
             if (isServer)
             {
                 med.GetComponent <scr_meditator>().changeTurn();
                 foreach (GameObject unit in GameObject.FindGameObjectsWithTag("Unit"))
                 {
                     scr_unit data      = unit.GetComponent <scr_unit>();
                     string   checkGrow = (string)DB_card.getIdentity(data.id)[5];
                     if (data.hosts && checkGrow.Contains("[성장"))
                     {
                         data.grow();
                     }
                 }
             }
             else
             {
                 localPlayer.GetComponent <scr_playerController>().direct_cmdrequest();
                 foreach (GameObject unit in GameObject.FindGameObjectsWithTag("Unit"))
                 {
                     scr_unit data      = unit.GetComponent <scr_unit>();
                     string   checkGrow = (string)DB_card.getIdentity(data.id)[5];
                     if (!data.hosts && checkGrow.Contains("[성장"))
                     {
                         data.grow();
                     }
                 }
             }
             nextTime = time + 100;
         }
     }
 }
    public void CmdDamage(GameObject cur, int amount)
    {
        if (cur.transform.tag == "Unit")
        {
            scr_unit scr = cur.GetComponent <scr_unit>();

            scr.health -= amount;
            if (scr.health > scr.max_health)
            {
                scr.health = scr.max_health;
            }
        }
        else if (cur.transform.tag == "Player")
        {
            scr_playerIdentity scr = cur.GetComponent <scr_playerIdentity>();

            scr.health -= amount;
            if (scr.health > scr.max_health)
            {
                scr.health = scr.max_health;
            }
        }
    }
    public void OnEndDrag(PointerEventData eventData)
    {
        foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Player"))
        {
            gameObject.transform.SetParent(GameObject.Find("Canvas").transform);

            if (gameObject.GetComponent <SpriteRenderer>().sprite == attack)
            {
                if (!cur.GetComponent <scr_playerController>().isPlayer&& canDirectAttack() &&
                    transform.localPosition.y >= 360)
                {
                    scr_unit data = sav_parent.GetComponent <scr_unit>();
                    data.CmdDirectattack_health_calculation(cur);

                    if (data.id == "Falcifer")
                    {
                        data.CmdDamage(sav_parent, 2);
                        data.Cmdcharge();
                        break;
                    }
                    break;
                }
            }
        }

        foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
        {
            gameObject.transform.SetParent(GameObject.Find("Canvas").transform);

            if (gameObject.GetComponent <SpriteRenderer>().sprite == attack)
            {
                string checkRange = (string)DB_card.getIdentity(sav_parent.GetComponent <scr_unit>().id)[5];
                if (cur.GetComponent <scr_unit>().isEnemy&& (checkRange.Contains("[원격") || canAttack(cur)) &&
                    Vector3.Distance(gameObject.transform.localPosition, cur.transform.localPosition) <= 60f)
                {
                    scr_unit data = sav_parent.GetComponent <scr_unit>();
                    data.Cmdchange_spawn_turn();

                    string checkAttack = (string)DB_card.getIdentity(data.id)[5];
                    if (checkAttack.Contains("[공격"))
                    {
                        switch (data.id)
                        {
                        case "moon_slayer":
                            data.CmdgetSelfStatus(1, 0);
                            break;

                        case "Revilla":
                            data.CmdgetSelfStatus(cur.GetComponent <scr_unit>().health, 0);
                            break;

                        case "dollmaker":
                            if (data.isMyturn())
                            {
                                scr_playerInGame.hand.Add("doll");
                            }
                            break;

                        case "sacrifice_summoner":
                            if (getPlayer())
                            {
                                player.GetComponent <scr_playerIdentity>().CmdSetSacrificeCnt(data.hosts, 2);
                            }
                            break;

                        case "wind_rider":
                            if (cur.GetComponent <scr_unit>().attack >= 7)
                            {
                                data.CmdDamage(cur, cur.GetComponent <scr_unit>().health);
                            }
                            break;

                        case "Volcanic_twindragon":
                            if (cur.GetComponent <scr_unit>().health <= data.attack)
                            {
                                data.CmdgetSelfStatus(1, 1);
                                data.Cmdcharge();
                            }
                            break;

                        case "mancy":
                            data.CmdgetSelfStatus(2, 0);
                            break;

                        case "axe_zealot":
                            if (getPlayer())
                            {
                                if (player.GetComponent <scr_playerController>().myturn)
                                {
                                    foreach (GameObject obj in GameObject.FindGameObjectsWithTag("Unit"))
                                    {
                                        if (obj != gameObject)
                                        {
                                            data.CmdDamage(obj, 1);
                                        }
                                    }
                                }
                            }
                            break;

                        case "Falcifer":
                            data.CmdDamage(sav_parent, 2);
                            data.Cmdcharge();
                            break;

                        case "mirat":
                            if (getPlayer())
                            {
                                if (player.GetComponent <scr_playerController>().myturn)
                                {
                                    foreach (GameObject obj in GameObject.FindGameObjectsWithTag("Unit"))
                                    {
                                        if (obj.GetComponent <scr_unit>().hosts == data.hosts &&
                                            obj.GetComponent <scr_unit>().id == "doll")
                                        {
                                            data.CmdgetStatus(obj, 1, 1);
                                        }
                                    }
                                }
                            }
                            break;

                        case "Keiro":
                            if (getPlayer())
                            {
                                if (data.isMyturn())
                                {
                                    if (cur.GetComponent <scr_unit>().health <= data.attack)
                                    {
                                        foreach (GameObject obj in GameObject.FindGameObjectsWithTag("Player"))
                                        {
                                            if (!obj.GetComponent <scr_playerController>().isPlayer)
                                            {
                                                data.CmdDamage(obj, cur.GetComponent <scr_unit>().attack);
                                            }
                                        }
                                    }
                                }
                            }
                            break;

                        default:
                            break;
                        }
                    }

                    data.Cmdattack_health_calculation(cur);
                    break;
                }
            }

            else if (gameObject.GetComponent <SpriteRenderer>().sprite == magic)
            {
                if ((Vector3.Distance(gameObject.transform.localPosition, cur.transform.localPosition) <= 60f) && cur != gameObject)
                {
                    scr_unit data = sav_parent.GetComponent <scr_unit>();
                    requestParticle(3, sav_parent, -1);

                    switch (data.id)
                    {
                    case "little_healer":
                        data.CmdDamage(cur, -2);
                        emerge_flag = false;
                        break;

                    case "student_swordman":
                        data.CmdDamage(cur, 1);
                        emerge_flag = false;
                        break;

                    case "shasha":
                        data.CmdsetTerial(cur.GetComponent <scr_unit>().terial);
                        emerge_flag = false;
                        break;

                    case "hero_helper":
                        data.CmdgetStatus(cur, 1, 1);
                        emerge_flag = false;
                        break;

                    case "corpse_raven":
                        scr_unit curData = cur.GetComponent <scr_unit>();
                        if (data.hosts == curData.hosts &&
                            curData.card_tag.Contains("Beast"))
                        {
                            data.CmdDamage(cur, curData.health);
                            if (getPlayer())
                            {
                                player.GetComponent <scr_playerIdentity>().CmdGainCard(data.hosts, "draw");
                            }
                            emerge_flag = false;
                        }
                        break;

                    case "admired_bishop":
                        curData = cur.GetComponent <scr_unit>();
                        if (data.hosts != curData.hosts)
                        {
                            if (data.isMyturn())
                            {
                                scr_playerInGame.hand.Add(curData.id);
                            }
                            emerge_flag = false;
                        }
                        break;

                    case "waterdragon_priest":
                        curData = cur.GetComponent <scr_unit>();
                        if (data.hosts == curData.hosts &&
                            curData.card_tag.Contains("Water"))
                        {
                            data.CmdDamage(cur, curData.health);
                            if (getPlayer())
                            {
                                player.GetComponent <scr_playerIdentity>().CmdGainCard(data.hosts, "draw");
                                player.GetComponent <scr_playerIdentity>().CmdGainCard(data.hosts, "draw");
                            }
                            emerge_flag = false;
                        }
                        break;

                    case "little_mermaid":
                        curData = cur.GetComponent <scr_unit>();
                        if (curData.card_tag.Contains("Water"))
                        {
                            data.CmdgetStatus(cur, 1, 1);
                            emerge_flag = false;
                        }
                        break;

                    case "slum_dancer":
                        data.CmdgetStatus(cur, -2, 0);
                        emerge_flag = false;
                        break;

                    case "attack_eater":
                        curData = cur.GetComponent <scr_unit>();
                        bool temp_flag = false;
                        foreach (GameObject obj in GameObject.FindGameObjectsWithTag("Unit"))
                        {
                            if (obj != gameObject && obj.GetComponent <scr_unit>().card_tag.Contains("Wind"))
                            {
                                temp_flag = true;
                                break;
                            }
                        }
                        if (temp_flag)
                        {
                            int temp_curAttack = curData.attack;
                            int temp_attack    = data.attack;
                            data.CmdgetSelfStatus(temp_curAttack - temp_attack, 0);
                            data.CmdgetStatus(cur, temp_attack - temp_curAttack, 0);
                            emerge_flag = false;
                        }
                        break;

                    case "ground_follower":
                        curData = cur.GetComponent <scr_unit>();
                        if (curData.hosts == data.hosts && curData.card_tag.Contains("Earth"))
                        {
                            curData.CmdgetSelfStatus(curData.health - curData.attack, 0);
                            emerge_flag = false;
                        }
                        break;

                    case "whitefur_fox":
                        curData = cur.GetComponent <scr_unit>();
                        if (curData.hosts == data.hosts && curData.card_tag.Contains("Beast"))
                        {
                            data.CmdgetStatus(cur, 1, 1);
                            emerge_flag = false;
                        }
                        break;

                    case "juen":
                        curData = cur.GetComponent <scr_unit>();
                        if (curData.hosts == data.hosts && curData.card_tag.Contains("Beast"))
                        {
                            curData.Cmdcharge();
                            emerge_flag = false;
                        }
                        break;

                    case "Toxie":
                        curData = cur.GetComponent <scr_unit>();
                        if (curData.health <= 2)
                        {
                            curData.CmdCamouflage("Devil-T_host");
                            emerge_flag = false;
                        }
                        break;

                    case "steel_sworder":
                        data.CmdDamage(cur, 2);
                        emerge_flag = false;
                        break;

                    case "rein":
                        data.CmdgetStatus(cur, 1 - cur.GetComponent <scr_unit>().attack, 0);
                        emerge_flag = false;
                        break;

                    case "dark_baron":
                        if (getPlayer())
                        {
                            int temp_health = cur.GetComponent <scr_unit>().health;
                            data.CmdDamage(player, temp_health);
                            data.CmdDamage(cur, temp_health);
                        }
                        emerge_flag = false;
                        break;

                    case "mitero":
                        curData = cur.GetComponent <scr_unit>();
                        if (curData.hosts == data.hosts && curData.card_tag.Contains("Wind"))
                        {
                            data.CmdDamage(cur, curData.health);
                            emerge_flag = false;
                        }
                        if (!emerge_flag)
                        {
                            foreach (GameObject obj in GameObject.FindGameObjectsWithTag("Unit"))
                            {
                                scr_unit objData = obj.GetComponent <scr_unit>();
                                if (data.hosts != objData.hosts && objData.attack >= 5)
                                {
                                    data.CmdDamage(obj, objData.health);
                                }
                            }
                        }
                        break;

                    case "Sein":
                        getPlayer();
                        curData = cur.GetComponent <scr_unit>();
                        if (data.isMyturn())
                        {
                            if (scr_playerInGame.hand.Contains("doll"))
                            {
                                scr_playerInGame.hand.Remove("doll");
                                scr_playerInGame.deck.Add("doll");
                                data.CmdDamage(cur, 2);
                            }
                        }
                        break;

                    case "Tenebera":
                        data.CmdrequestParticleByVector(7, cur.transform.localPosition, -1);
                        data.CmdDestroyUnit(cur);
                        emerge_flag = false;
                        break;

                    case "dark_mage":
                        data.CmdDamage(cur, 4);
                        emerge_flag = false;
                        break;

                    case "burying_socerer":
                        curData = cur.GetComponent <scr_unit>();
                        if (data.isMyturn())
                        {
                            scr_playerInGame.hand.Add(curData.id);
                        }
                        data.CmdrequestParticleByVector(7, cur.transform.localPosition, -1);
                        data.CmdDestroyUnit(cur);
                        emerge_flag = false;
                        break;

                    case "tigor":
                        curData = cur.GetComponent <scr_unit>();
                        if (curData.hosts == data.hosts && curData.card_tag.Contains("Beast"))
                        {
                            data.CmdgetStatus(cur, 3, 3);
                            emerge_flag = false;
                        }
                        break;

                    case "SENA":
                        if (data.isMyturn())
                        {
                            if (scr_playerInGame.hand.Count != 0)
                            {
                                data.CmdDamage(cur, 2);
                                getPlayer();
                                player.GetComponent <scr_playerIdentity>().CmdSelectCard(data.hosts, data.id);
                            }
                        }
                        break;

                    case "BT":
                        if (cur.GetComponent <scr_unit>().attack <= 5)
                        {
                            cur.GetComponent <scr_unit>().Cmdcharge();
                        }
                        emerge_flag = false;
                        break;

                    default:
                        break;
                    }
                    break;
                }
            }
        }

        gameObject.transform.position = savePos;
        drag = false;
    }
    public bool checkExtra()
    {
        bool synthesize_firstIng  = false;
        bool synthesize_secondIng = false;
        int  overlay_count        = 0;

        switch (scr_storeDeck.extraID)
        {
        case "PEIN":
            foreach (GameObject unit in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit unitData = unit.GetComponent <scr_unit>();
                if (unit.transform.localPosition.y < 0 && (unitData.id == "investigator_pein" || unitData.id == "synthesizer"))
                {
                    if (synthesize_firstIng == false)
                    {
                        synthesize_firstIng = true;
                    }
                    else
                    {
                        synthesize_secondIng = true;
                    }
                }
            }
            return(synthesize_firstIng && synthesize_secondIng);

        case "BAN":
            foreach (GameObject unit in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit unitData = unit.GetComponent <scr_unit>();
                if (unit.transform.localPosition.y < 0)
                {
                    if (unitData.id == "moon_slayer")
                    {
                        synthesize_firstIng = true;
                    }
                    else if (unitData.id == "mancy")
                    {
                        synthesize_secondIng = true;
                    }
                    else if (unitData.id == "synthesizer")
                    {
                        if (!synthesize_firstIng)
                        {
                            synthesize_firstIng = true;
                        }
                        else
                        {
                            synthesize_secondIng = true;
                        }
                    }
                }
            }
            return(synthesize_firstIng && synthesize_secondIng);

        case "PAN":
            foreach (GameObject unit in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit unitData = unit.GetComponent <scr_unit>();
                if (unit.transform.localPosition.y < 0)
                {
                    if (unitData.id == "slum_dancer")
                    {
                        synthesize_firstIng = true;
                    }
                    else if (unitData.id == "rein")
                    {
                        synthesize_secondIng = true;
                    }
                    else if (unitData.id == "synthesizer")
                    {
                        if (!synthesize_firstIng)
                        {
                            synthesize_firstIng = true;
                        }
                        else
                        {
                            synthesize_secondIng = true;
                        }
                    }
                }
            }
            return(synthesize_firstIng && synthesize_secondIng);

        case "NATIS":
            foreach (GameObject unit in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit unitData = unit.GetComponent <scr_unit>();
                if (unit.transform.localPosition.y < 0)
                {
                    if (unitData.id == "wind_walker")
                    {
                        synthesize_firstIng = true;
                    }
                    else if (unitData.id == "necky")
                    {
                        synthesize_secondIng = true;
                    }
                    else if (unitData.id == "synthesizer")
                    {
                        if (!synthesize_firstIng)
                        {
                            synthesize_firstIng = true;
                        }
                        else
                        {
                            synthesize_secondIng = true;
                        }
                    }
                }
            }
            return(synthesize_firstIng && synthesize_secondIng);

        case "ROGER":
            foreach (GameObject unit in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit unitData = unit.GetComponent <scr_unit>();
                if (unit.transform.localPosition.y < 0)
                {
                    if (unitData.id == "wave_fighter")
                    {
                        synthesize_firstIng = true;
                    }
                    else if (unitData.id == "ken")
                    {
                        synthesize_secondIng = true;
                    }
                    else if (unitData.id == "synthesizer")
                    {
                        if (!synthesize_firstIng)
                        {
                            synthesize_firstIng = true;
                        }
                        else
                        {
                            synthesize_secondIng = true;
                        }
                    }
                }
            }
            return(synthesize_firstIng && synthesize_secondIng);

        case "LATIEN":
            foreach (GameObject unit in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit unitData = unit.GetComponent <scr_unit>();
                if (unit.transform.localPosition.y < 0)
                {
                    if (unitData.terial == 6)
                    {
                        overlay_count++;
                    }
                }
            }
            return(overlay_count >= 2);

        case "SENA":
            foreach (GameObject unit in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit unitData = unit.GetComponent <scr_unit>();
                if (unit.transform.localPosition.y < 0)
                {
                    if (unitData.terial == 4)
                    {
                        overlay_count++;
                    }
                }
            }
            return(overlay_count >= 2);

        case "BT":
            return(extraFlag && scr_playerInGame.tomb.Count >= 12);

        case "TONUS":
            foreach (string card in scr_playerInGame.deck)
            {
                if ((int)DB_card.getIdentity(card)[0] == 7)
                {
                    synthesize_firstIng = true;
                    break;
                }
            }
            return(extraFlag && synthesize_firstIng);

        case "LICA":
            return(extraFlag && scr_playerInGame.hand.Count <= 2);

        case "MACHINA":
            getPlayer();
            return(localPlayer.GetComponent <scr_playerIdentity>().sacrificeCnt >= 20);

        case "EURIEL":
            return(extraFlag && (scr_playerInGame.deck.Contains("#elemental_book") || scr_playerInGame.hand.Contains("#elemental_book")));

        case "INFINITAS":
            getPlayer();
            return(extraFlag && localPlayer.GetComponent <scr_playerIdentity>().sacrificeCnt >= 10);

        case "SAYRUN":
            getPlayer();
            return(localPlayer.GetComponent <scr_playerIdentity>().sacrificeCnt >= 5);

        case "HETERO":
            getPlayer();
            bool      temp_flag = true;
            ArrayList temp_deck = new ArrayList();
            foreach (string cardId in scr_playerInGame.deck)
            {
                foreach (string compareId in temp_deck)
                {
                    if (compareId == cardId)
                    {
                        temp_flag = false;
                        break;
                    }
                }
                if (!temp_flag)
                {
                    break;
                }
                temp_deck.Add(cardId);
            }
            return(extraFlag && temp_flag);

        default:
            return(false);
        }
    }
 public void selectEffect(string id, string code)
 {
     if (code == "DRAW")
     {
         scr_playerInGame.deck.Remove(id);
         scr_playerInGame.hand.Add(id);
     }
     else if (code == "GETHAND")
     {
         scr_playerInGame.hand.Add(id);
     }
     else if (code == "DISCARDHAND")
     {
         scr_playerInGame.hand.Remove(id);
         scr_playerInGame.tomb.Add(id);
     }
     else if (code == "DISCARDHANDTOSACRIFICE")
     {
         scr_playerInGame.hand.Remove(id);
         scr_playerInGame.tomb.Add(id);
         sacrificeCnt += (int)DB_card.getIdentity(id)[0];
     }
     else if (code == "DRAWPANELTY_COSTDAMAGE")
     {
         scr_playerInGame.deck.Remove(id);
         scr_playerInGame.hand.Add(id);
         health -= (int)DB_card.getIdentity(id)[0];
     }
     else if (code == "RECALL")
     {
         scr_playerInGame.tomb.Remove(id);
         scr_playerInGame.hand.Add(id);
     }
     else if (code == "SERIATODECK")
     {
         scr_playerInGame.hand.Remove(id);
         scr_playerInGame.deck.Add("Seria");
     }
     else if (code == "REMOVE_CAMOUFLAGE")
     {
         scr_playerInGame.tomb.Remove(id);
         foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
         {
             scr_unit curData = cur.GetComponent <scr_unit>();
             if (curData.id == "pyren_zombie")
             {
                 curData.CmdCamouflage(id);
             }
         }
     }
     else if (code == "CHANGETAG")
     {
         string tempTag = (string)DB_card.getIdentity(id)[6];
         foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
         {
             scr_unit curData = cur.GetComponent <scr_unit>();
             if (curData.hosts == GetComponent <scr_playerController>().isHost)
             {
                 curData.CmdsetTag(tempTag);
             }
         }
     }
     else if (code == "ELEMENTALFIELD")
     {
         string tempTag = (string)DB_card.getIdentity(id)[6];
         CmdSetEnvironment("$" + tempTag);
     }
     gameObject.GetComponent <scr_playerInGame>().displayHand();
 }
    public void CmdforAllSpell(bool hosts, string id, int cost)
    {
        bool used = true;

        switch (id)
        {
        case "#vitality":
            foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit data = cur.GetComponent <scr_unit>();
                if (data.hosts == hosts && data.card_tag.Contains("Earth"))
                {
                    data.CmdgetSelfStatus(0, 2);
                }
            }
            break;

        case "#luminous_grail":
            CmdGainStatusExtended(hosts, 0, 3, 3);
            break;

        case "#dark_token":
            RpcGaincard(hosts, "daki");
            RpcGaincard(hosts, "daki");
            break;

        case "#blood_storm":
            int temp_cnt = 0;
            foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit data = cur.GetComponent <scr_unit>();
                if (data.hosts != hosts)
                {
                    temp_cnt++;
                }
            }
            if (temp_cnt >= 4)
            {
                foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
                {
                    scr_unit data = cur.GetComponent <scr_unit>();
                    data.CmdDamage(cur, 3);
                }
            }
            else
            {
                foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
                {
                    scr_unit data = cur.GetComponent <scr_unit>();
                    data.CmdDamage(cur, 1);
                }
            }
            break;

        case "#volcano":
            CmdSetEnvironment("volcano");
            break;

        case "#dimension_summon":
            ArrayList temp_table = new ArrayList();
            foreach (string cardId in DB_card.collectible)
            {
                if (!cardId.Contains("#"))
                {
                    temp_table.Add(cardId);
                }
            }
            int drawIndex = Random.Range(0, temp_table.Count);
            CmdGainCard(hosts, (string)temp_table[drawIndex]);
            break;

        case "#tales_river":
            CmdSetEnvironment("tales_1");
            break;

        case "#salvage":
            RpcSelectCard(hosts, id);
            break;

        case "#evolve:SaintResia":
            foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit curData = cur.GetComponent <scr_unit>();
                if (curData.hosts == hosts && curData.id == "Resia")
                {
                    curData.CmdCamouflage("Angel_resia");
                }
            }
            break;

        case "#evolve:DarkResia":
            foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit curData = cur.GetComponent <scr_unit>();
                if (curData.hosts == hosts && curData.id == "Resia")
                {
                    curData.CmdCamouflage("Dark_resia");
                }
            }
            break;

        case "#nas_breath":
            RpcGaincard(hosts, "nas");
            CmdGainStatus(hosts, 0, 4);
            break;

        case "#assembly":
            RpcSelectCard(hosts, id);
            break;

        case "#initial_shine":
            RpcGaincard(hosts, "draw");
            break;

        case "#dangerous_contact":
            scr_meditator med         = GameObject.FindGameObjectWithTag("Meditator").GetComponent <scr_meditator>();
            int           sav_handCnt = (hosts)? med.serverHandcnt : med.clientHandcnt;
            for (int i = 0; i < 3; i++)
            {
                RpcGaincardExtended(hosts, "draw", "NotDarkRemove");
            }
            if (sav_handCnt != -1)
            {
                if (hosts)
                {
                    if (sav_handCnt == med.serverHandcnt)
                    {
                        RpcGaincardExtended(hosts, "draw", "RemoveAll");
                    }
                }
                else
                {
                    if (sav_handCnt == med.clientHandcnt)
                    {
                        RpcGaincardExtended(hosts, "draw", "RemoveAll");
                    }
                }
            }
            break;

        case "#doll_gathering":
            for (int i = 0; i < 3; i++)
            {
                RpcGaincardExtended(hosts, "doll", "IFINDECK");
            }
            break;

        case "#doll_regression":
            for (int i = 0; i < 3; i++)
            {
                RpcGaincardExtended(hosts, "doll", "TOMBTOHAND");
            }
            RpcGaincard(hosts, "draw");
            break;

        case "#doll_sacrifice":
            foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit curData = cur.GetComponent <scr_unit>();
                if (curData.hosts == hosts && (curData.id == "doll" || curData.id == "tetra"))
                {
                    curData.CmdgetSelfStatus(1, 1);
                }
            }
            break;

        case "#wisdom_eye":
            RpcGaincard(hosts, "draw");
            RpcGaincard(hosts, "draw");
            break;

        case "#heal_leaf":
            CmdGainStatus(hosts, 0, 8);
            break;

        case "#earthquake":
            foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit data = cur.GetComponent <scr_unit>();
                if (!data.card_tag.Contains("Earth"))
                {
                    data.CmdDamage(cur, 2);
                }
            }
            break;

        case "#luminous_badge":
            CmdSetEnvironment("luminous_badge");
            break;

        case "#Archmage_rune":
            CmduseTerial(cost);
            CmdSetEnvironment("archmage_rune");
            break;

        case "#union_roar":
            CmdSelectCard(hosts, id);
            break;

        case "#ren_wakeup":
            foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
            {
                cur.GetComponent <scr_unit>().CmdDamage(cur, 5);
            }
            break;

        case "#halfmoon_strike":
            foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit curData = cur.GetComponent <scr_unit>();
                if (curData.hosts != hosts)
                {
                    curData.CmdDamage(cur, 6);
                }
            }
            RpcGaincard(hosts, "draw");
            RpcGaincard(hosts, "draw");
            break;

        case "#latien_prelude":
            RpcGaincard(hosts, "draw");
            RpcGaincard(hosts, "draw");
            break;

        case "#latien_choir":
            foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit curData = cur.GetComponent <scr_unit>();
                if (curData.hosts == hosts)
                {
                    curData.CmdgetSelfStatus(2, 2);
                }
            }
            break;

        case "#latien_fantasia":
            RpcSelectCard(hosts, id);
            break;

        case "#latien_lyrics":
            foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit curData = cur.GetComponent <scr_unit>();
                if (curData.hosts != hosts)
                {
                    curData.CmdDamage(cur, 3);
                }
            }
            break;

        default:
            break;
        }
        CmduseTerial(cost);
        if (used)
        {
            RpcUseSpell(hosts, id);
        }
    }
    public void CmdforUnitSpell(GameObject target, bool hosts, string id, int cost)
    {
        scr_unit data     = target.GetComponent <scr_unit>();
        int      cnt_flag = 0;
        bool     used     = true;

        switch (id)
        {
        case "#cost_control":
            data.CmdsetTerial(terial);
            break;

        case "#elemental_reset":
            data.CmdsetTag("");
            break;

        case "#draft":
            data.CmdsetTag("Warrior");
            break;

        case "#slash":
            data.CmdDamage(target, 2);
            break;

        case "#widdy_breath":
            data.CmdgetSelfStatus(data.health - data.attack, data.attack - data.health);
            RpcGaincard(hosts, "widdy");
            break;

        case "#shrink":
            data.CmdgetSelfStatus(1 - data.attack, 0);
            break;

        case "#ador_breath":
            data.CmdDamage(target, 2);
            RpcGaincard(hosts, "ador");
            break;

        case "#dark_ora":
            data.CmdDamage(target, 2);
            break;

        case "#brainwashing":
            foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
            {
                scr_unit curData = cur.GetComponent <scr_unit>();
                if (curData.hosts == hosts && curData.card_tag.Contains("Shine"))
                {
                    cnt_flag++;
                    NetworkServer.Destroy(cur);
                }
            }
            if (cnt_flag > 0)
            {
                RpcGaincard(hosts, data.id);
                data.CmdDestroyUnit(target);
                break;
            }
            else
            {
                used = false;
            }
            break;

        case "#recall":
            if (data.hosts != hosts)
            {
                used = false;
            }
            else
            {
                RpcGaincard(hosts, data.id);
                data.CmdDestroyUnit(target);
            }
            break;

        case "#dark_hand":
            data.CmdDamage(target, 3);
            break;

        case "#armored":
            data.CmdgetSelfStatus(2, 4);
            break;

        case "#gladius":
            if (data.card_tag.Contains("Warrior"))
            {
                data.CmdgetSelfStatus(3, 2);
            }
            else
            {
                used = false;
            }
            break;

        case "#titanum_shield":
            if (data.card_tag.Contains("Warrior"))
            {
                data.CmdgetSelfStatus(1, 2);
                RpcGaincard(hosts, "draw");
            }
            else
            {
                used = false;
            }
            break;

        case "#selfburn":
            if (data.card_tag.Contains("Fire"))
            {
                foreach (GameObject cur in GameObject.FindGameObjectsWithTag("Unit"))
                {
                    if (cur.GetComponent <scr_unit>().hosts != hosts)
                    {
                        data.CmdDamage(cur, data.attack);
                    }
                }
            }
            CmdDamage(target, data.health);
            break;

        case "#death":
            data.CmdDestroyUnit(target);
            break;

        case "#latien_symphony":
            data.CmdDamage(target, data.health);
            break;

        default:
            break;
        }
        CmduseTerial(cost);
        if (used)
        {
            RpcUseSpell(hosts, id);
        }
    }