Exemple #1
0
    public static void SetCharacterData(BTL_DATA btl, UInt32 id, UInt32 val)
    {
        FF9StateBattleSystem ff9Battle = FF9StateSystem.Battle.FF9Battle;

        switch (id)
        {
        case 32u:
            for (Int32 i = 0; i < btl.meshCount; i++)
            {
                btl.SetIsEnabledMeshRenderer(i, true);
            }
            btl.getShadow().SetActive(true);
            btl.SetIsEnabledWeaponRenderer(true);
            btl.SetIsEnabledBattleModelRenderer(true);
            btl_sys.AddCharacter(btl);
            break;

        case 33u:
            for (Int32 j = 0; j < btl.meshCount; j++)
            {
                btl.SetIsEnabledMeshRenderer(j, false);
            }
            btl.getShadow().SetActive(false);
            btl.SetIsEnabledWeaponRenderer(false);
            btl.SetIsEnabledBattleModelRenderer(false);
            btl_cmd.KillCommand2(btl);
            btl_sys.DelCharacter(btl);
            break;

        case 34u:
            if (btl_cmd.KillCommand2(btl))
            {
                btl.sel_mode = 0;
            }
            break;

        case 35u:
            btl.max.hp = (UInt16)val;
            break;

        case 36u:
            btl.cur.hp = (UInt16)val;
            break;

        case 37u:
            btl.max.mp = (Int16)val;
            break;

        case 38u:
            btl.cur.mp = (Int16)val;
            break;

        case 40u:
            btl.cur.at = (Int16)val;
            break;

        case 48u:
            btl.def_attr.invalid = (Byte)val;
            break;

        case 49u:
            btl.def_attr.absorb = (Byte)val;
            break;

        case 50u:
            btl.def_attr.half = (Byte)val;
            break;

        case 51u:
            btl.def_attr.weak = (Byte)val;
            break;

        case 52u:
            if (ff9Battle.btl_phase == 2)
            {
                btl.tar_mode  = 0;
                btl.bi.target = 0;
                btl.bi.atb    = 0;
                btl.bi.select = 0;
            }
            else
            {
                btl.tar_mode = (Byte)(2u + val);
            }
            break;

        case 53u:
            btl.SetDisappear((Byte)val);
            if (val == 0u || ff9Battle.btl_phase == 2)
            {
            }
            break;

        case 54u:
            btl.bi.shadow = (Byte)val;
            if (btl.bi.shadow != 0)
            {
                btl.getShadow().SetActive(true);
            }
            else
            {
                btl.getShadow().SetActive(false);
            }
            break;

        case 55u:
            geo.geoScaleSet(btl, (Int32)val);
            btlshadow.FF9ShadowSetScaleBattle(btl_util.GetFF9CharNo(btl), (Byte)((UInt32)btl.shadow_x * val >> 12), (Byte)((UInt32)btl.shadow_z * val >> 12));
            break;

        case 56u:
            geo.geoScaleReset(btl);
            btlshadow.FF9ShadowSetScaleBattle(btl_util.GetFF9CharNo(btl), btl.shadow_x, btl.shadow_z);
            break;

        case 59u:
            btl_mot.HideMesh(btl, (UInt16)val, false);
            btl.mesh_current = (UInt16)(btl.mesh_current | (UInt16)val);
            break;

        case 60u:
            btl_mot.ShowMesh(btl, (UInt16)val, false);
            btl.mesh_current = (UInt16)(btl.mesh_current & (UInt16)(~(UInt16)val));
            break;

        case 61u:
            GeoTexAnim.geoTexAnimPlay(btl.texanimptr, (Int32)val);
            break;

        case 62u:
            GeoTexAnim.geoTexAnimStop(btl.texanimptr, (Int32)val);
            break;

        case 63u:
            GeoTexAnim.geoTexAnimPlayOnce(btl.texanimptr, (Int32)val);
            break;

        case 69u:
            btl.bi.def_idle = (Byte)val;
            break;

        case 71u:
            btl_sys.SetBonus(btl_util.getEnemyTypePtr(btl));
            break;

        case 72u:
            btl.elem.str = (Byte)val;
            break;

        case 73u:
            btl.elem.mgc = (Byte)val;
            break;

        case 74u:
            btl.defence.PhisicalDefence = (Byte)val;
            break;

        case 75u:
            btl.defence.PhisicalEvade = (Byte)val;
            break;

        case 76u:
            btl.defence.MagicalDefence = (Byte)val;
            break;

        case 77u:
            btl.defence.MagicalEvade = (Byte)val;
            break;

        case 78u:
            btl.cur.at   = btl.max.at;
            btl.sel_mode = 1;
            btl_cmd.SetCommand(btl.cmd[0], 20u, 187u, (UInt16)val, 8u);
            UIManager.Battle.FF9BMenu_EnableMenu(true);
            break;
        }
    }
Exemple #2
0
    public void updateModelsToBeAdded()
    {
        if (this.gMode != 1 && this.gMode != 3 && (Int32)this._ff9Sys.prevMode != 9 || (Int32)this.sEventContext1.inited == 0)
        {
            return;
        }
        for (ObjList objList = this._context.activeObj; objList != null; objList = objList.next)
        {
            Obj obj = objList.obj;
            if ((Int32)obj.cid == 4)
            {
                PosObj posObj = (PosObj)obj;
                if ((Int32)posObj.model != (Int32)UInt16.MaxValue)
                {
                    if (!((UnityEngine.Object)posObj.go != (UnityEngine.Object)null))
                    {
                        posObj.go = ModelFactory.CreateModel(FF9BattleDB.GEO.GetValue((Int32)posObj.model), false);
                        if (this.gMode == 1)
                        {
                            GeoTexAnim.addTexAnim(posObj.go, FF9BattleDB.GEO.GetValue((Int32)posObj.model));
                        }
                        if (this.gMode == 1)
                        {
                            this.ReassignBasicAnimationForField((Actor)posObj);
                        }
                    }
                    if ((UnityEngine.Object)posObj.go != (UnityEngine.Object)null)
                    {
                        this.requiredAddActor = true;
                        this.toBeAddedObjUIDList.Add((Int32)posObj.uid);
                    }
                    //if (this.gMode != 1)
                    //    ;
                }
            }
        }
        this.sEventContext1.inited = (Byte)0;
        if (!this.requiredAddActor)
        {
            return;
        }
        Int32 num = (Int32)this.GetControlUID();

        this.requiredAddActor = false;
        using (List <Int32> .Enumerator enumerator = this.toBeAddedObjUIDList.GetEnumerator())
        {
            while (enumerator.MoveNext())
            {
                Int32   current  = enumerator.Current;
                Obj     objUid   = this.GetObjUID(current);
                Boolean isPlayer = current == num;
                if (this.gMode == 1)
                {
                    if (isPlayer)
                    {
                        objUid.go.name = "Player";
                    }
                    else
                    {
                        //Debug.Log((object)("o.uid = " + (object)objUid.uid + ", o.sid = " + (object)objUid.sid));
                        objUid.go.name = "obj" + (Object)current;
                    }
                    FF9Char ff9Char = new FF9Char();
                    ff9Char.geo = objUid.go;
                    ff9Char.evt = (PosObj)objUid;
                    FF9StateSystem.Common.FF9.charArray.Add((Int32)objUid.uid, ff9Char);
                    FF9FieldCharState ff9FieldCharState = new FF9FieldCharState();
                    FF9StateSystem.Field.FF9Field.loc.map.charStateArray.Add((Int32)objUid.uid, ff9FieldCharState);
                    FF9StateSystem.Field.FF9Field.loc.map.shadowArray.Add((Int32)objUid.uid, new FF9Shadow());
                    this.fieldmap.AddFieldChar(objUid.go, ((PosObj)objUid).posField, ((PosObj)objUid).rotField, isPlayer, (Actor)objUid, true);
                    this.turnOffTriManually((Int32)objUid.sid);
                }
                else if (this.gMode == 3)
                {
                    Singleton <WMWorld> .Instance.addWMActorOnly((Actor)objUid);

                    Singleton <WMWorld> .Instance.addGameObjectToWMActor(objUid.go, ((Actor)objUid).wmActor);

                    PosObj posObj = (PosObj)objUid;
                    //if ((Int32)posObj.uid != (Int32)this._context.controlUID)
                    //    ;
                    ((Actor)objUid).wmActor.SetPosition(posObj.pos[0], posObj.pos[1], posObj.pos[2]);
                }
            }
        }
        this.requiredAddActor = false;
        this.toBeAddedObjUIDList.Clear();
    }
Exemple #3
0
    public static UInt32 RemoveStatus(BTL_DATA btl, UInt32 status)
    {
        STAT_INFO stat = btl.stat;

        if (((Int32)stat.permanent & (Int32)status) != 0 || ((Int32)stat.cur & (Int32)status) == 0 || btl.bi.player == 0 && FF9StateSystem.Battle.FF9Battle.btl_phase == 5 && (status & 4099L) != 0L)
        {
            return(1);
        }
        stat.cur &= ~status;
        switch ((BattleStatus)status)
        {
        case BattleStatus.Petrify:
            SetStatusClut(btl, false);
            break;

        case BattleStatus.Zombie:
        case BattleStatus.Heat:
        case BattleStatus.Freeze:
            if (Status.checkCurStat(btl, 50333760U))
            {
                SetStatusPolyColor(btl);
            }
            break;

        case BattleStatus.Death:
            btl.die_seq      = 0;
            btl.bi.dmg_mot_f = 0;
            btl.bi.cmd_idle  = 0;
            btl.bi.death_f   = 0;
            btl.bi.stop_anim = 0;
            btl.escape_key   = 0;
            if (btl_mot.checkMotion(btl, 4) || btl_mot.checkMotion(btl, 8))
            {
                GeoTexAnim.geoTexAnimPlay(btl.texanimptr, 2);
                if (btl.bi.player != 0)
                {
                    GeoTexAnim.geoTexAnimPlay(btl.tranceTexanimptr, 2);
                }
                btl_mot.setMotion(btl, 6);
                btl.evt.animFrame = 0;
            }
            if (FF9StateSystem.Battle.FF9Battle.cur_cmd.regist != btl || FF9StateSystem.Battle.FF9Battle.cur_cmd.cmd_no > 48)
            {
                btl.sel_mode = 0;
            }
            btl_cmd.KillSpecificCommand(btl, 60);
            if (((Int32)btl.stat.permanent & 262144) != 0)
            {
                SetOprStatusCount(btl, 18U);
            }
            break;

        case BattleStatus.Confuse:
            Vector3 eulerAngles = btl.rot.eulerAngles;
            eulerAngles.y = btl.evt.rotBattle.eulerAngles.y;
            btl.rot       = Quaternion.Euler(eulerAngles);
            StatusCommandCancel(btl, status);
            break;

        case BattleStatus.Berserk:
            StatusCommandCancel(btl, status);
            if (Status.checkCurStat(btl, 50333760U))
            {
                SetStatusPolyColor(btl);
            }
            break;

        case BattleStatus.Trance:
            btl.trance = 0;
            if (Status.checkCurStat(btl, 1073741824U))
            {
                RemoveStatus(btl, 1073741824U);
                btl.SetDisappear(0);
                btl_mot.setBasePos(btl);
                btl_mot.setMotion(btl, btl.bi.def_idle);
                btl.evt.animFrame = 0;
            }
            btl_cmd.SetCommand(btl.cmd[4], 59U, 0U, btl.btl_id, 0U);
            break;

        case BattleStatus.Haste:
        case BattleStatus.Slow:
            btl_para.InitATB(btl);
            break;

        case BattleStatus.Float:
            Single value = 0f;
            btl.pos[1]      = value;
            btl.base_pos[1] = value;
            break;

        case BattleStatus.Vanish:
            btl_mot.ShowMesh(btl, btl.mesh_banish, true);
            break;

        case BattleStatus.Doom:
            if (btl.deathMessage != null)
            {
                Singleton <HUDMessage> .Instance.ReleaseObject(btl.deathMessage);

                btl.deathMessage = null;
            }
            break;

        case BattleStatus.Mini:
            geo.geoScaleReset(btl);
            btlshadow.FF9ShadowSetScaleBattle(btl_util.GetFF9CharNo(btl), btl.shadow_x, btl.shadow_z);
            break;

        case BattleStatus.Jump:
            btl.tar_mode = 3;
            btl.bi.atb   = 1;
            if (btl.bi.player != 0 && !FF9StateSystem.Settings.IsATBFull)
            {
                btl.cur.at = 0;
            }
            btl.sel_mode      = 0;
            btl.cmd[3].cmd_no = 0;
            btl.cmd[3].tar_id = 0;
            break;

        case BattleStatus.GradualPetrify:
            if (btl.petrifyMessage != null)
            {
                Singleton <HUDMessage> .Instance.ReleaseObject(btl.petrifyMessage);

                btl.petrifyMessage = null;
            }
            btl_cmd.KillSpecificCommand(btl, 62);
            break;
        }
        HonoluluBattleMain.battleSPS.RemoveBtlSPSObj(btl, status);
        return(2);
    }
Exemple #4
0
 public static void geoTexAnimService(GEOTEXHEADER texHeader)
 {
     if (texHeader == null)
     {
         return;
     }
     for (Int32 i = 0; i < (Int32)texHeader.count; i++)
     {
         GEOTEXANIMHEADER geotexanimheader = texHeader.geotex[i];
         if ((geotexanimheader.flags & 1) != 0)
         {
             if (geotexanimheader.numframes != 0)
             {
                 Int32 num       = geotexanimheader.frame;
                 Int16 lastframe = geotexanimheader.lastframe;
                 Int16 num2      = (Int16)(num >> 12);
                 if (num2 >= 0)
                 {
                     if (num2 != lastframe)
                     {
                         for (Int32 j = 0; j < (Int32)geotexanimheader.count; j++)
                         {
                             if (texHeader.geotex != null)
                             {
                                 GeoTexAnim.MultiTexAnimService(geotexanimheader, texHeader, i, num2);
                             }
                         }
                         geotexanimheader.lastframe = num2;
                     }
                     Int16 rate = geotexanimheader.rate;
                     num += (Int32)rate;
                 }
                 else
                 {
                     num += 4096;
                 }
                 if (num >> 12 < (Int32)geotexanimheader.numframes)
                 {
                     geotexanimheader.frame = num;
                 }
                 else if (geotexanimheader.randrange > 0)
                 {
                     UInt32 num3 = (UInt32)UnityEngine.Random.Range((Int32)geotexanimheader.randmin, (Int32)(geotexanimheader.randrange + 1));
                     geotexanimheader.frame = (Int32)(-(Int32)((UInt64)((UInt64)num3 << 12)));
                 }
                 else if ((geotexanimheader.flags & 2) != 0)
                 {
                     Byte             b = 3;
                     GEOTEXANIMHEADER geotexanimheader2 = geotexanimheader;
                     geotexanimheader2.flags = (Byte)(geotexanimheader2.flags & (Byte)(~b));
                 }
                 else
                 {
                     geotexanimheader.frame = 0;
                 }
             }
             else if ((geotexanimheader.flags & 4) != 0)
             {
                 global::Debug.Log("SCROLL!!!");
             }
         }
     }
 }