Exemple #1
0
    void Move()
    {
        // Player 위치 확인해서 Player 한테 다가감 => target
        animation.Play("run");

        /*
         * RaycastHit hit;
         * if(Physics.Raycast(transform.position, transform.forward, out hit, 10))
         */
        // 일정거리 안에 들어오면 공격 상태로 변경
        // attackRange 안에 있으면
        // state 를 ATTACK 으로 변경
        // 그렇지 않으면 이동
        // 1. 거리 계산
        //float distance = Vector3.Distance(target.position, transform.position);

        RaycastHit hit;

        agent.destination = target.position;

        if (Physics.Raycast(transform.position, transform.forward, out hit, 15))
        {
            Debug.Log("Enemy search!");
            state = ENEMY.ATTACK;
        }
    }
Exemple #2
0
    public static void SetMonsterData(SB2_MON_PARM pParm, BTL_DATA pBtl, Int16 pNo)
    {
        pBtl.stat.invalid            = pParm.Status[0];
        pBtl.stat.permanent          = pParm.Status[1];
        pBtl.stat.cur                = pParm.Status[2];
        pBtl.cur.hp                  = pParm.MaxHP;
        pBtl.cur.mp                  = (Int16)pParm.MaxMP;
        pBtl.defence.PhisicalDefence = pParm.P_DP;
        pBtl.defence.PhisicalEvade   = pParm.P_AV;
        pBtl.defence.MagicalDefence  = pParm.M_DP;
        pBtl.defence.MagicalEvade    = pParm.M_AV;
        pBtl.elem.dex                = pParm.Element.dex;
        pBtl.elem.str                = pParm.Element.str;
        pBtl.elem.mgc                = pParm.Element.mgc;
        pBtl.elem.wpr                = pParm.Element.wpr;
        pBtl.def_attr.invalid        = pParm.Attr[0];
        pBtl.def_attr.absorb         = pParm.Attr[1];
        pBtl.def_attr.half           = pParm.Attr[2];
        pBtl.def_attr.weak           = pParm.Attr[3];
        pBtl.mesh_current            = pParm.Mesh[0];
        pBtl.mesh_banish             = pParm.Mesh[1];
        pBtl.tar_bone                = pParm.Bone[3];
        ENEMY enemy = FF9StateSystem.Battle.FF9Battle.enemy[(Int32)pBtl.bi.slot_no];

        for (Int32 i = 0; i < (Int32)pParm.StealItems.Length; i++)
        {
            enemy.steal_item[i] = pParm.StealItems[i];
        }
        enemy.info.die_atk = (Byte)(((pParm.Flags & 1) == 0) ? 0 : 1);
        enemy.info.die_dmg = (Byte)(((pParm.Flags & 2) == 0) ? 0 : 1);
        btl_util.SetShadow(pBtl, pParm.ShadowX, (UInt32)pParm.ShadowZ);
        pBtl.shadow_bone[0] = pParm.ShadowBone;
        pBtl.shadow_bone[1] = pParm.ShadowBone2;
    }
Exemple #3
0
    void Attack()
    {
        Debug.Log("attack");
        //animation["attack1"].speed = 1.5f;
        // 공격
        animation.Play("attack1");
        // stateTime 에 Time.deltaTime 누적 시켜서
        // attackStateMaxTime 보다 커지면
        // 공격 animation 플레이
        // 끝나면 idle animation 플레이
        // 2초간 대기
        stateTime += Time.deltaTime;
        if (stateTime > attackStateMaxTime)
        {
            stateTime = 0.0f;             // 초기화
            animation.Play("attack1");
            //anim.CrossFade ("walk");
            animation.PlayQueued("idle", QueueMode.CompleteOthers);
            //CastleState.DamageByEnemy ();
        }


        //distance 구해서 attackRange 보다 커지면
        //state를 MOVE
        float distance = (target.position - transform.position).magnitude;

        if (distance > attackRange)
        {
            state = ENEMY.MOVE;
        }
    }
    private void OnCollisionEnter2D(Collision2D Other)
    {
        Drone drone = Other.gameObject.GetComponent <Drone>();

        if (Other.gameObject.tag == "DRONEENEMY")
        {
            Debug.Log(attacking);
            if (attacking == true)
            {
                drone.JumpedOn();
            }
            else
            {
                Destroy(Other.gameObject);
                state = State.hurt;
                FindObjectOfType <GameManager>().EndGame();
            }
        }
        ENEMY Enemy = Other.gameObject.GetComponent <ENEMY>();

        if (Other.gameObject.tag == "ENEMY")
        {
            Debug.Log(attacking);
            if (attacking == true)
            {
                Enemy.JumpedOn();
            }
            else
            {
                Destroy(Other.gameObject);
                state = State.hurt;
            }
        }
    }
Exemple #5
0
 //Update => switch~case
 void Idle()
 {
     // 2초간 대기
     stateTime += Time.deltaTime;
     if (stateTime > idleStateMaxTime)
     {
         stateTime = 0.0f;
         state     = ENEMY.MOVE;        // move 로 상태 변경
     }
 }
Exemple #6
0
    void Damage()
    {
        animation.Play("block_hit");
        animation.PlayQueued("idle", QueueMode.CompleteOthers);

        stateTime = 0.0f;
        state     = ENEMY.IDLE;

        //bool isDead = false;
        //if(isDead == true) // if(isDead)
        if (healthPoint <= 0)
        {
            state = ENEMY.DEAD;
        }
    }
Exemple #7
0
        public Enemy(string name, ENEMY e, int x, int y) : base(name)
        {
            this.x  = x;
            this.y  = y;
            globalX = getGlobalX();
            globalY = getGlobalY();
            type    = e;

            switch (type)
            {
            case ENEMY.ENEMY1:
                current = enemy1;
                damage  = 1;
                break;
            }
        }
Exemple #8
0
    public static void PutMonster(SB2_PUT pPut, BTL_DATA pBtl, BTL_SCENE pScene, Int16 pNo)
    {
        Int16[] array = new Int16[3];
        array[1] = 180;
        Int16[] array2 = array;
        ENEMY   enemy  = FF9StateSystem.Battle.FF9Battle.enemy[(Int32)pBtl.bi.slot_no];

        enemy.et            = FF9StateSystem.Battle.FF9Battle.enemy_type[(Int32)pPut.TypeNo];
        pBtl.bi.target      = (Byte)(((pPut.Flags & 1) == 0) ? 0 : 1);
        pBtl.bi.row         = 2;
        pBtl.max            = FF9StateSystem.Battle.FF9Battle.enemy_type[(Int32)pPut.TypeNo].max;
        pBtl.cur.hp         = pBtl.max.hp;
        pBtl.cur.mp         = pBtl.max.mp;
        enemy.info.multiple = (Byte)(((pPut.Flags & 2) == 0) ? 0 : 1);
        if (enemy.info.slave == 0)
        {
            Int32  index = 0;
            Single num   = (Single)pPut.Xpos;
            pBtl.evt.posBattle[0] = num;
            pBtl.original_pos[0]  = num;
            pBtl.base_pos[0]      = num;
            pBtl.pos[index]       = num;
            Int32 index2 = 1;
            num = (Single)(pPut.Ypos * -1);
            pBtl.evt.posBattle[1] = num;
            pBtl.original_pos[1]  = num;
            pBtl.base_pos[1]      = num;
            pBtl.pos[index2]      = num;
            Int32 index3 = 2;
            num = (Single)pPut.Zpos;
            pBtl.evt.posBattle[2] = num;
            pBtl.original_pos[2]  = num;
            pBtl.base_pos[2]      = num;
            pBtl.pos[index3]      = num;
            pBtl.rot = (pBtl.evt.rotBattle = Quaternion.Euler(new Vector3(0f, (Single)(pPut.Rot + array2[(Int32)pScene.Info.StartType] & 4095), 180f)));
        }
        else
        {
            pBtl.rot = (pBtl.evt.rotBattle = Quaternion.Euler(new Vector3(0f, 0f, 180f)));
        }
        pBtl.gameObject.transform.localPosition = pBtl.pos;
        pBtl.gameObject.transform.localRotation = pBtl.rot;
        pBtl.mot = enemy.et.mot;
    }
    protected void OnActivate()
    {
        isActive = true;

        SelectedEnemy  = (ENEMY)(Random.Range(0, NumEnemies));
        TextEnemy.text = SelectedEnemy.ToString();
        Debug.LogFormat("[Adventure Game #{0}] Enemy: {1}", moduleId, SelectedEnemy);

        StatValues = new int[7];
        for (int i = 0; i < NumStats; i++)
        {
            StatValues[i] = Random.Range(StatRanges[i * 2], StatRanges[i * 2 + 1] + 1);
        }

        Debug.LogFormat("[Adventure Game #{0}] Player stats: {1}", moduleId, logPlayerStats());
        Debug.LogFormat("[Adventure Game #{0}] Environment stats: {1}", moduleId, logEnvStats());

        serialNum = BombInfo.GetSerialNumber();

        bool foundDigit = false;

        foreach (char c in serialNum)
        {
            if (c >= '0' && c <= '9')
            {
                if (!foundDigit)
                {
                    foundDigit = true;
                    firstDigit = c - '0';
                }
                lastDigit = c - '0';
            }
        }

        numUnlit = BombInfo.GetOffIndicators().Count();
        numLit   = BombInfo.GetOnIndicators().Count();

        doublePort = false;
        HashSet <string> portList = new HashSet <string>();

        foreach (string s in KMBombInfoExtensions.GetPorts(BombInfo))
        {
            if (portList.Contains(s))
            {
                doublePort = true;
                break;
            }
            portList.Add(s);
        }

        batteryCount = KMBombInfoExtensions.GetBatteryCount(BombInfo);

        // Generate weapons
        InvValues     = new List <ITEM>();
        CorrectWeapon = new bool[InvWeaponCount];
        for (int i = 0; i < InvWeaponCount; i++)
        {
            ITEM item;
            do
            {
                item = (ITEM)(Random.Range(0, NumWeapons));
            } while (InvValues.Contains(item));
            InvValues.Add(item);
        }

        RegenerateWeaponScores();

        // Generate other items
        for (int i = 0; i < InvMiscCount; i++)
        {
            ITEM item;
            do
            {
                item = (ITEM)(Random.Range(NumWeapons, NumItems));
            }while (InvValues.Contains(item));
            InvValues.Add(item);
        }

        logItemUsage();

        UpdateStatDisplay();
        UpdateInvDisplay();
    }
Exemple #10
0
 // Start is called before the first frame update
 void Start()
 {
     enemyT = ENEMY.BASIC;
     finalT = 0f;
 }
Exemple #11
0
    public static void InitEnemyData(FF9StateBattleSystem btlsys)
    {
        BTL_DATA btl_DATA = (BTL_DATA)null;
        ObjList  objList  = new ObjList();

        if (!FF9StateSystem.Battle.isDebug)
        {
            objList = PersistenSingleton <EventEngine> .Instance.GetActiveObjList().next;
        }
        Int32 monCount = (Int32)FF9StateSystem.Battle.FF9Battle.btl_scene.PatAddr[(Int32)FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum].MonCount;
        Int32 i        = 0;
        Int32 j        = 4;

        while (i < monCount)
        {
            ENEMY    enemy     = btlsys.enemy[i];
            BTL_DATA btl_DATA2 = btlsys.btl_data[j];
            enemy.info.die_fade_rate = 32;
            if ((btl_DATA2.dms_geo_id = BTL_SCENE.GetMonGeoID(i)) < 0)
            {
                enemy.info.slave = 1;
            }
            else
            {
                btl_init.SetBattleModel(btl_DATA2);
                enemy.info.slave = 0;
                if (!FF9StateSystem.Battle.isDebug)
                {
                    objList = objList.next;
                }
            }
            btl_DATA2.btl_id     = (UInt16)(16 << i);
            btl_DATA2.bi.player  = 0;
            btl_DATA2.bi.slot_no = (Byte)i;
            btl_DATA2.bi.line_no = (Byte)(4 + i);
            btl_DATA2.bi.t_gauge = 0;
            btl_DATA2.bi.slave   = enemy.info.slave;
            BTL_SCENE    btl_scene    = FF9StateSystem.Battle.FF9Battle.btl_scene;
            SB2_PATTERN  sb2_PATTERN  = btl_scene.PatAddr[(Int32)FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum];
            SB2_MON_PARM sb2_MON_PARM = btl_scene.MonAddr[(Int32)sb2_PATTERN.Put[i].TypeNo];
            UInt16       geoID        = sb2_MON_PARM.Geo;
            btl_DATA2.height = 0;
            btl_DATA2.radius = 0;
            FF9Char ff9char = new FF9Char();
            btl_init.InitBattleData(btl_DATA2, ff9char);
            btl_DATA2.bi.def_idle = 0;
            btl_DATA2.base_pos    = enemy.base_pos;
            String path = (btl_DATA2.dms_geo_id == -1) ? String.Empty : FF9BattleDB.GEO.GetValue((Int32)btl_DATA2.dms_geo_id);
            if (!ModelFactory.IsUseAsEnemyCharacter(path))
            {
                btl_DATA2.weapon_geo = (GameObject)null;
            }
            btl_DATA2.sa = btl_init.enemy_dummy_sa;

            FF9BattleDBHeightAndRadius.TryFindHeightAndRadius(geoID, ref btl_DATA2.height, ref btl_DATA2.radius);

            if (btl_DATA != null)
            {
                btl_DATA.next = btl_DATA2;
            }
            btl_DATA = btl_DATA2;
            i++;
            j++;
        }
        while (j < 8)
        {
            btlsys.btl_data[j].btl_id = 0;
            j++;
        }
        btl_DATA.next          = (BTL_DATA)null;
        btlsys.btl_list.next   = btlsys.btl_data[4];
        btlsys.btl_load_status = (Byte)(btlsys.btl_load_status | 8);
        btl_init.SetupBattleEnemy();
        btlseq.InitSequencer();
    }
Exemple #12
0
        public static BattleEnemy Find(BattleUnit unit)
        {
            ENEMY data = btl_util.getEnemyPtr(unit.Data);

            return(new BattleEnemy(data));
        }
Exemple #13
0
 public static void DamageByPlayer()
 {
     healthPoint -= 1;
     Debug.Log("***");
     state = ENEMY.DAMAGE;
 }
Exemple #14
0
 void InitEnemy()
 {
     healthPoint = 5;
     state       = ENEMY.IDLE;
     animation.Play("idle");
 }
	public static void cnvEnemyCsvData2EnemyData(EnemyData enemy_data, EnemyCsvData enemy_csvdata, EnemyLevelupCsvData enemy_lvup_csvdata, ENEMY enemy_party_csvdata_enemy); // Offset: 0xFE623C
Exemple #16
0
    public static ENEMY GetEnemyInfo(int id)
    {
        ENEMY e = null;

        switch (id)
        {
        case ENEMY_CIRNO:
            e = CIRNO;
            break;

        case ENEMY_RUMIA:
            e = RUMIA;
            break;

        case ENEMY_CHEN:
            e = CHEN;
            break;

        case ENEMY_MAOYU:
            e = MAOYU;
            break;

        case ENEMY_SAKUYA:
            e = SAKUYA;
            break;

        case ENEMY_MEILIN:
            e = MEILIN;
            break;

        case ENEMY_REMILIA:
            e = REMILIA;
            break;

        case ENEMY_FLANDRE:
            e = FLANDRE;
            break;

        case ENEMY_ALICE:
            e = ALICE;
            break;

        case ENEMY_SHANGHAI:
            e = SHANGHAI;
            break;

        case ENEMY_KAGUYA:
            e = KAGUYA;
            break;

        case ENEMY_RIN:
            e = RIN;
            break;

        case ENEMY_PATCHOULI:
            e = PATCHOULI;
            break;

        case ENEMY_SANAE:
            e = SANAE;
            break;

        case ENEMY_AYA:
            e = AYA;
            break;

        case ENEMY_YUUGI:
            e = YUUGI;
            break;

        case ENEMY_YUUKA:
            e = YUUKA;
            break;

        case ENEMY_SUIKA:
            e = SUIKA;
            break;

        case ENEMY_SUIKA_SMALL:
            e = SUIKA_SMALL;
            break;

        case ENEMY_YUYUKO:
            e = YUYUKO;
            break;

        case ENEMY_YOUMU:
            e = YOUMU;
            break;

        case ENEMY_YUKARI:
            e = YUKARI;
            break;

        case ENEMY_SHIKIEKI:
            e = SHIKIEKI;
            break;

        case ENEMY_EIRIN:
            e = EIRIN;
            break;

        case ENEMY_KANAKO:
            e = KANAKO;
            break;

        case ENEMY_SUWAKO:
            e = SUWAKO;
            break;

            /*case ENEMY_CIRNO:
             *  e = CIRNO;
             *  break;
             * case ENEMY_CIRNO:
             *  e = CIRNO;
             *  break;*/
        }

        return(e);
    }
Exemple #17
0
 internal BattleEnemy(ENEMY data)
 {
     _data = data;
 }