Esempio n. 1
0
    private void Start()
    {
        bool isWarlord = SM.IsWarlord(this);
        bool isOfficer = SM.IsOfficer(this);

        anim = transform.GetComponent <Animator>();
        anim.SetFloat("forDefence", 0.5f);

        order = new OrdNothing();

        enemies = new List <Transform>();
        //fixedEnemy = null;
        closestEnemy = null;
        closestRad   = float.MaxValue;

        moral = (isWarlord || isOfficer) ? float.MaxValue : SM.GetRndFloat(70f, 130f);

        rotateSp  = isWarlord ? 3.5f : 2.5f; //radians
        acsel     = 3f;
        stopAcs   = 8f;
        stepForce = isWarlord ? 10f : isOfficer ? 7f : 5f;
        runSp     = 8f;
        walkSp    = 3f;
        speed     = 0f;
        LorR      = SM._rnd.Next(2) == 0 ? LR.Left : LR.Right;

        seeRadius = 30f;

        maxHP = isWarlord ? 900f : isOfficer?SM.GetRndFloat(250f, 350f) : SM.GetRndFloat(70f, 130f);

        health          = maxHP;
        hpPerSecond     = 7f;
        lastLostHP      = Time.time;
        timeBeforeHPrec = 7f;

        minBleedK = isWarlord ? 0.1f : 0.2f;
        maxBleedK = isWarlord ? 0.2f : 0.4f;

        maxEnd = isWarlord ? 500f : isOfficer?SM.GetRndFloat(200f, 250f) : SM.GetRndFloat(80f, 120f);

        endurance        = maxEnd;
        endPerSecond     = isWarlord ? 85 : isOfficer ? 40f : 20f;
        lastUsedEnd      = Time.time;
        timeBeforeEndRec = 1f;
        runEndUse        = isWarlord ? 60f : isOfficer ? 30f : 15f;

        bleedingTimeLeft  = 0f;
        lastBleeding      = -100f;
        bleedingIntervals = 0.3f;
        bleedBaseDamage   = 0f;

        fixedAttack = false;

        if (SM.IsPrivate(this))
        {
            transform.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_" + army);
        }
        else if (isOfficer)
        {
            transform.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_Officer_" + army);
        }
        else if (isWarlord)
        {
            transform.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_Warlord_" + army);
        }
        transform.Find("L_Hand").GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Hand_" + army);
        transform.Find("R_Hand").GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Hand_" + army);

        string eqSet  = transform.parent.GetComponent <Soldier_Upper>().eqSet;
        string golden = isOfficer || isWarlord ? "_Golden" : "";

        if (eqSet == "Axe")
        {
            string     wep     = eqSet;
            Transform  RH      = transform.Find("R_Hand");
            GameObject rWeapon = (GameObject)Instantiate((GameObject)Resources.Load("Soldier/S_Equip_" + wep + golden), RH.position, RH.rotation);
            rWeapon.transform.parent = RH;
            rWeapon.gameObject.name  = wep;

            Transform  LH      = transform.Find("L_Hand");
            GameObject lWeapon = (GameObject)Instantiate((GameObject)Resources.Load("Soldier/S_Equip_StrongShield" + golden), LH.position, LH.rotation);
            lWeapon.transform.parent = LH;
            lWeapon.gameObject.name  = "StrongShield";

            weapon = rWeapon;
        }
        else if (eqSet == "Sword" || eqSet == "Spear")
        {
            string     wep     = eqSet;
            Transform  RH      = transform.Find("R_Hand");
            GameObject rWeapon = (GameObject)Instantiate((GameObject)Resources.Load("Soldier/S_Equip_" + wep + golden), RH.position, RH.rotation);
            rWeapon.transform.parent = RH;
            rWeapon.gameObject.name  = wep;

            Transform  LH      = transform.Find("L_Hand");
            GameObject lWeapon = (GameObject)Instantiate((GameObject)Resources.Load("Soldier/S_Equip_Shield" + golden), LH.position, LH.rotation);
            lWeapon.transform.parent = LH;
            lWeapon.gameObject.name  = "Shield";

            weapon = rWeapon;
        }
        else if (eqSet == "Bow")
        {
            string     wep     = eqSet;
            Transform  LH      = transform.Find("L_Hand");
            GameObject lWeapon = (GameObject)Instantiate((GameObject)Resources.Load("Soldier/S_Equip_" + wep + golden), LH.position, LH.rotation);
            lWeapon.transform.parent = LH;
            lWeapon.gameObject.name  = wep;

            weapon = lWeapon;
        }
        mRange = weapon.GetComponent <Weapon>().maxRange;

        transform.parent.Find("Bars").Find("Health").Find("Filler").GetComponent <UnityEngine.UI.Image>().fillAmount    = (float)(health / maxHP);
        transform.parent.Find("Bars").Find("Endurance").Find("Filler").GetComponent <UnityEngine.UI.Image>().fillAmount = (float)(endurance / maxEnd);
        if (isWarlord)
        {
            SM.FillBars(army, (float)(health / maxHP), (float)(endurance / maxEnd));
        }

        SM.AddSoldier(transform);
    }