FS507D asset recovery, ConLobby V5.0.7Df promotion, mechlab New-Mech crash fix

FS507D_20161015 release analysis wrap-up (drop itself is gitignored; art-review
folder kept local for review):
- Recovered the only assets our tree lacked: 13 hsh HUD/radar/mech bmps and the
  two 5.07D lobby decals (decal_46/47.tga, extracted from release props.mw4 via
  a ported gos_LZDecompress).
- ResourceImagePool.cpp: missing-texture placeholder is now LAB_ONLY (editor
  keeps degraded mode); Release restores the original fatal STOP. Release +
  Profile rebuilt, 0 errors.

Console script reconciled:
- ConLobby.script.new ("BattleTech Console V5.0.7Df", newest revision anywhere)
  promoted to Content\ShellScripts\ConLobby.script; .new removed; stale loose
  deploy copy removed. Verified in-game (console title shows V5.0.7Df).
- Corrected CLAUDE.md: the release never "renamed" the console to
  ComputerPlayer.script -- the resource packer stores script contents under
  alphabetically skewed entry names (runtime resolves the same pairing).
  Packer quirks documented (stale entry carry-forward on incremental builds,
  name/content skew in directory sweeps).

Mechlab bug fix (first FireStorm bug hunt):
- New-Mech dialog showed blank rows for Wolfhound/Zeus and crashed (KERNELBASE
  read AV) when creating a Zeus. Root cause: newmech in chassis.script created
  its Type droplist without setting $$m_listBoxSize$$, so capacity defaulted to
  60 while 65 chassis were written in -- OOB script-array writes. Fixed by
  sizing the list from $$m_chassisCount$$. Latent stock-MW4 bug armed when the
  FireStorm roster passed 60 chassis. Verified: Zeus variant creates cleanly.

props.mw4 fully repacked (decals + promoted console + mechlab fix, junk
.new/.org entries gone); game deploy refreshed at MW4\. Gitignore: FS507D drop
and player-created MW4\Resource\Variants.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-02 13:04:45 -05:00
co-authored by Claude Fable 5
parent 2cfb14ab98
commit 2f17631081
108 changed files with 32230 additions and 43498 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -382,7 +382,13 @@ void
Verify(!extension[3]);
if (!gos_DoesFileExist(file_name))
#endif
file_name = "content\\textures\\01AACA1.tga"; /* [editor degraded-mode] substitute placeholder for missing texture instead of fatal STOP, so downstream gets a valid handle (was: STOP("Texture %s could not be found!")) */
{
#ifdef LAB_ONLY
file_name = "content\\textures\\01AACA1.tga"; /* [editor degraded-mode] LAB builds (editor/Profile) substitute a placeholder for missing WIP textures instead of fatal STOP, so downstream gets a valid handle */
#else
STOP(("Texture %s could not be found!", (const char *)file_name)); /* Release: fail loud, ship no placeholder */
#endif
}
}
//
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+306 -246
View File
@@ -13,6 +13,7 @@
// 08/05/03 MSL Changed Team Player limit from 4 to 7
// 10/10/03 MSL Added Cameraship to RESET_AFTER_LAUNCH
// 10/17/05 MSL Added all remaining Mechs (55)
// 06/19/18 AVB Update tab stops
//-------------------------------------------------------------------------
@@ -80,7 +81,7 @@
#define MAX_SKIN_COUNT 16
// MSL 5.05
#define MAX_DECAL_COUNT 17
#define MAX_DECAL_COUNT 20 //jpp decal total num in dropdown
#define DO_VIRTUAL_TEST 0
#define USE_ALLOWED_MECHS 1
@@ -154,7 +155,19 @@
#define ERROR_STRING_Y 535
#define ERROR_STRING_Y2 (535 + 41) // see o_launch_button
#define MAX_SLOT_ITEMS 5 // bot-type, edit-field, mech-type, team/camo, decal
#define ROWFIELD_TYPE_BOTTYPE 0
#define ROWFIELD_TYPE_EDITBOX 1
#define ROWFIELD_TYPE_MECH 2
#if USE_O_MECH_VARIANT2
#define ROWFIELD_TYPE_MECHVARIANT 3
#define ROWFIELD_TYPE_TEAMCAMO 4
#define ROWFIELD_TYPE_TEAMDECAL 5
#define MAX_SLOT_ITEMS 6
#else
#define ROWFIELD_TYPE_TEAMCAMO 3
#define ROWFIELD_TYPE_TEAMDECAL 4
#define MAX_SLOT_ITEMS 5
#endif // USE_O_MECH_VARIANT2
#define MAIL_ROSTER_LIST_MAXDISPLAY 19999
#define MAIL_ROSTER_LIST_CHANGED 20000
@@ -163,6 +176,10 @@
#define MAIL_REMOVE_ALL_BOTS 20003
#define MAIL_CHANGE_LAUNCH_STATE 20004
#define MAIL_GET_SLOTTYPE 20005 // cur-row, return: 0: none, +1: user, +2: bot, 3: currently used
#define MAIL_SLOTTYPE_NONE 0
#define MAIL_SLOTTYPE_USER 1
#define MAIL_SLOTTYPE_BOT 2
#define MAIL_SLOTTYPE_USED 3
#define MAIL_PROCESS_TABEVENT 20006 // slot_item-index, dir(-1,+1)
#define MAIL_POSSIBLE_TABEVENT 20007 // row, slottype, item_index
#define MAIL_SET_ROOKIE_MISSION -1111 // sync with conlobby.script
@@ -229,7 +246,7 @@ main
o_frame.type = 0
o_frame.location = 0, 0, 100
// MSL Version
o_frame.screen_name = "BattleTech Console V5.07" // localize$(IDS_MP_LOBBY_GAME_LOBBY)
o_frame.screen_name = "BattleTech Console V5.0.7Df" // localize$(IDS_MP_LOBBY_GAME_LOBBY)
initialize(o_frame)
int team_camo[16] // team_camo[selected team number] is skin number(0..36)...
@@ -250,27 +267,27 @@ main
team_camo[14] = 36 //
team_camo[15] = 37 //
int team_decal[17] // team_decal[selected team number] is decal number(0..63)...
team_decal[0] = 3 // Steiner
team_decal[1] = 4 // Kurita
team_decal[2] = 2 // Davion
team_decal[3] = 5 // Liao
team_decal[4] = 6 // Marik
team_decal[5] = 9 // Comstar
team_decal[6] = 50 // VGL
team_decal[7] = 10 // Star League
team_decal[8] = 11 // Wolf
team_decal[9] = 12 // Falcon
team_decal[10] = 16 // Ghost Bear
team_decal[11] = 20 // Hell Horses
team_decal[12] = 21 // Coyote
team_decal[13] = 22 // Blood Spirit
team_decal[14] = 24 // Ice Hellion
team_decal[15] = 27 // Goliath Scorpian
team_decal[16] = 48 // 331st
int TEAM_DECAL[17] // team_decal[selected team number] is decal number(0..63)...
TEAM_DECAL[0] = 3 // Steiner
TEAM_DECAL[1] = 4 // Kurita
TEAM_DECAL[2] = 2 // Davion
TEAM_DECAL[3] = 5 // Liao
TEAM_DECAL[4] = 6 // Marik
TEAM_DECAL[5] = 9 // Comstar
TEAM_DECAL[6] = 50 // VGL
TEAM_DECAL[7] = 10 // Star League
TEAM_DECAL[8] = 11 // Wolf
TEAM_DECAL[9] = 12 // Falcon
TEAM_DECAL[10] = 16 // Ghost Bear
TEAM_DECAL[11] = 20 // Hell Horses
TEAM_DECAL[12] = 21 // Coyote
TEAM_DECAL[13] = 22 // Blood Spirit
TEAM_DECAL[14] = 24 // Ice Hellion
TEAM_DECAL[15] = 27 // Goliath Scorpian
TEAM_DECAL[16] = 48 // 331st
int ffa_decal[36] // ffa_decal[selected skin number] is decal number(0..63)...
// currently, these values is useless... just for later usage
// currently, these values is useless... just for later usage //JPP add new decal here for in game use
ffa_decal[0] = 3
ffa_decal[1] = 4
ffa_decal[2] = 2
@@ -289,7 +306,9 @@ main
ffa_decal[15] = 27 // Goliath Scorpion
ffa_decal[16] = 48 // 331st
ffa_decal[17] = 49 // ddc
ffa_decal[18] = 0 // below will not used, because "o_skins[x].list_size = 16"
ffa_decal[18] = 47 // FSA
ffa_decal[19] = 46 // BKG
ffa_decal[20] = 0 // below will not used, because "o_skins[x].list_size = 16"
//ffa_decal[18-36] = ...
int drop_count_mech[ROSTER_DISPLAY_COUNT]
@@ -327,7 +346,7 @@ main
int team_param = TEAM_PARAMETER
int team_max_plyrs = TEAM_MAX_PLAYERS
int teamskin = TEAM_SKIN
int teamdecal = TEAM_DECAL
int teamdecal = TEAM_DECAL[6]
int k
int x
@@ -349,7 +368,7 @@ main
int update_skin = false
// MSL 5.05
int decal_id ///////VERY IMPORTANT FOR NEW DECAL INTERFACE
int decal_ids[18]
int decal_ids[20] //JPP was 18
int update_decal = false
int ROSTER_top_of_list = 0
int block_launch_or_ready = FALSE
@@ -516,73 +535,73 @@ main
if (USE_ALLOWED_MECHS)
{
// MSL ADD MECH
// MSL ADD MECH
allowed_mechs[ 0 ] = 0 // Annihilator
allowed_mechs[ 1 ] = 1 // Archer
allowed_mechs[ 2 ] = 2 // Arctic Wolf
allowed_mechs[ 3 ] = 3 // Ares
allowed_mechs[ 4 ] = 4 // Argus
allowed_mechs[ 5 ] = 5 // Assassin2
allowed_mechs[ 6 ] = 6 // Atlas
allowed_mechs[ 7 ] = 7 // Avatar
allowed_mechs[ 8 ] = 8 // Awesome
allowed_mechs[ 9 ] = 9 // Battlemaster
allowed_mechs[ 10 ] = 10 // Battlemasteriic
allowed_mechs[ 11 ] = 11 // Behemoth
allowed_mechs[ 12 ] = 12 // Behemoth II
allowed_mechs[ 13 ] = 13 // Black Hawk
allowed_mechs[ 14 ] = 14 // Black Knight
allowed_mechs[ 15 ] = 15 // Black Lanner
allowed_mechs[ 16 ] = 16 // Brigand
allowed_mechs[ 17 ] = 17 // Bushwacker
allowed_mechs[ 18 ] = 18 // Catapult
allowed_mechs[ 19 ] = 19 // cauldron-born
allowed_mechs[ 20 ] = 20 // Chimera
allowed_mechs[ 21 ] = 21 // Commando
allowed_mechs[ 22 ] = 22 // Cougar
allowed_mechs[ 23 ] = 23 // Cyclops
allowed_mechs[ 24 ] = 24 // Daishi
allowed_mechs[ 25 ] = 25 // Deimos
allowed_mechs[ 26 ] = 26 // Dragon
allowed_mechs[ 27 ] = 27 // Fafnir
allowed_mechs[ 28 ] = 28 // Flea
allowed_mechs[ 29 ] = 29 // Gladiator
allowed_mechs[ 30 ] = 30 // Grizzly
allowed_mechs[ 31 ] = 31 // Hauptmann
allowed_mechs[ 32 ] = 32 // Hellhound
allowed_mechs[ 33 ] = 33 // Hellspawn
allowed_mechs[ 34 ] = 34 // Highlander
allowed_mechs[ 35 ] = 35 // Hollander II
allowed_mechs[ 36 ] = 36 // Hunchback
allowed_mechs[ 37 ] = 37 // Kodiak
allowed_mechs[ 38 ] = 38 // Loki
allowed_mechs[ 39 ] = 39 // Longbow
allowed_mechs[ 40 ] = 40 // Madcat
allowed_mechs[ 41 ] = 41 // Madcat Mk. II
allowed_mechs[ 42 ] = 42 // Masakari
allowed_mechs[ 43 ] = 43 // Mauler
allowed_mechs[ 44 ] = 44 // Novacat
allowed_mechs[ 45 ] = 45 // Osiris
allowed_mechs[ 46 ] = 46 // Owens
allowed_mechs[ 47 ] = 47 // Puma
allowed_mechs[ 48 ] = 48 // Raven
allowed_mechs[ 49 ] = 49 // Rifleman
allowed_mechs[ 50 ] = 50 // Ryoken
allowed_mechs[ 51 ] = 51 // Shadowcat
allowed_mechs[ 52 ] = 52 // Solitaire
allowed_mechs[ 53 ] = 53 // Sunder
allowed_mechs[ 54 ] = 54 // Templar
allowed_mechs[ 55 ] = 55 // Thanatos
allowed_mechs[ 56 ] = 56 // Thor
allowed_mechs[ 57 ] = 57 // Uller
allowed_mechs[ 58 ] = 58 // Urbanmech
allowed_mechs[ 59 ] = 59 // Uziel
allowed_mechs[ 60 ] = 60 // Victor
allowed_mechs[ 61 ] = 61 // Vulture
allowed_mechs[ 62 ] = 62 // Warhammer
allowed_mechs[ 63 ] = 63 // Wolfhound
allowed_mechs[ 64 ] = 64 // Zeus
allowed_mechs[ 0 ] = 0 // Annihilator
allowed_mechs[ 1 ] = 1 // Archer
allowed_mechs[ 2 ] = 2 // Arctic Wolf
allowed_mechs[ 3 ] = 3 // Ares
allowed_mechs[ 4 ] = 4 // Argus
allowed_mechs[ 5 ] = 5 // Assassin2
allowed_mechs[ 6 ] = 6 // Atlas
allowed_mechs[ 7 ] = 7 // Avatar
allowed_mechs[ 8 ] = 8 // Awesome
allowed_mechs[ 9 ] = 9 // Battlemaster
allowed_mechs[ 10 ] = 10 // Battlemasteriic
allowed_mechs[ 11 ] = 11 // Behemoth
allowed_mechs[ 12 ] = 12 // Behemoth II
allowed_mechs[ 13 ] = 13 // Black Hawk
allowed_mechs[ 14 ] = 14 // Black Knight
allowed_mechs[ 15 ] = 15 // Black Lanner
allowed_mechs[ 16 ] = 16 // Brigand
allowed_mechs[ 17 ] = 17 // Bushwacker
allowed_mechs[ 18 ] = 18 // Catapult
allowed_mechs[ 19 ] = 19 // cauldron-born
allowed_mechs[ 20 ] = 20 // Chimera
allowed_mechs[ 21 ] = 21 // Commando
allowed_mechs[ 22 ] = 22 // Cougar
allowed_mechs[ 23 ] = 23 // Cyclops
allowed_mechs[ 24 ] = 24 // Daishi
allowed_mechs[ 25 ] = 25 // Deimos
allowed_mechs[ 26 ] = 26 // Dragon
allowed_mechs[ 27 ] = 27 // Fafnir
allowed_mechs[ 28 ] = 28 // Flea
allowed_mechs[ 29 ] = 29 // Gladiator
allowed_mechs[ 30 ] = 30 // Grizzly
allowed_mechs[ 31 ] = 31 // Hauptmann
allowed_mechs[ 32 ] = 32 // Hellhound
allowed_mechs[ 33 ] = 33 // Hellspawn
allowed_mechs[ 34 ] = 34 // Highlander
allowed_mechs[ 35 ] = 35 // Hollander II
allowed_mechs[ 36 ] = 36 // Hunchback
allowed_mechs[ 37 ] = 37 // Kodiak
allowed_mechs[ 38 ] = 38 // Loki
allowed_mechs[ 39 ] = 39 // Longbow
allowed_mechs[ 40 ] = 40 // Madcat
allowed_mechs[ 41 ] = 41 // Madcat Mk. II
allowed_mechs[ 42 ] = 42 // Masakari
allowed_mechs[ 43 ] = 43 // Mauler
allowed_mechs[ 44 ] = 44 // Novacat
allowed_mechs[ 45 ] = 45 // Osiris
allowed_mechs[ 46 ] = 46 // Owens
allowed_mechs[ 47 ] = 47 // Puma
allowed_mechs[ 48 ] = 48 // Raven
allowed_mechs[ 49 ] = 49 // Rifleman
allowed_mechs[ 50 ] = 50 // Ryoken
allowed_mechs[ 51 ] = 51 // Shadowcat
allowed_mechs[ 52 ] = 52 // Solitaire
allowed_mechs[ 53 ] = 53 // Sunder
allowed_mechs[ 54 ] = 54 // Templar
allowed_mechs[ 55 ] = 55 // Thanatos
allowed_mechs[ 56 ] = 56 // Thor
allowed_mechs[ 57 ] = 57 // Uller
allowed_mechs[ 58 ] = 58 // Urbanmech
allowed_mechs[ 59 ] = 59 // Uziel
allowed_mechs[ 60 ] = 60 // Victor
allowed_mechs[ 61 ] = 61 // Vulture
allowed_mechs[ 62 ] = 62 // Warhammer
allowed_mechs[ 63 ] = 63 // Wolfhound
allowed_mechs[ 64 ] = 64 // Zeus
}
@@ -655,6 +674,7 @@ allowed_mechs[ 64 ] = 64 // Zeus
player_num = -1
// ComboBox for the Player Type
object o_BotList[17]
object o_BotList_bu[17]
int m_naLastSelected[17]
@@ -831,14 +851,15 @@ allowed_mechs[ 64 ] = 64 // Zeus
stock_size = 0
if (USE_ALLOWED_MECHS)
{
o_mech_variant[x].list_size = MAX_ALLOWED_MECHS
for k = 0; k < MAX_ALLOWED_MECHS; k++
{
o_mech_variant[x].list_item[stock_size] = mech[stock_array[allowed_mechs[k]]]
stock_size++
}
}
else
{
else
{
for k = 0; k < $$m_mechCount$$; k++
{
if (stock_id[k] == 1)
@@ -1126,6 +1147,8 @@ allowed_mechs[ 64 ] = 64 // Zeus
initialize (o_cam_status)
MAX_ITEMS = 1 + (MAXTESLA - MAXTESLA_P) // 1(blank) + (MAXTESLA - MAXTESLA_P)
// Live Cam Drop Box
object o_cam_list = s_droplistbox
MAX_ITEMS = 60
o_cam_list.location = BOT_LIST_X, CAM_STATUS_Y,10
@@ -1160,11 +1183,13 @@ allowed_mechs[ 64 ] = 64 // Zeus
object o_cam_print_text = s_print_text
o_cam_print_text.location = PRINT_TEXT_X, CAM_STATUS_Y + 3,5
// Let's move this so it's clearly not in the same line as the o_cam_list
o_cam_print_text.location = (PRINT_TEXT_X + PLAYER_EDIT_WIDTH + ROSTER_GAP2), (CAM_STATUS_Y + ROSTER_GAP2),5
o_cam_print_text.id = -1
o_cam_print_text.text_font = FPATH localize$(IDS_F_ML_LABEL)
o_cam_print_text.text_color = packcolor(255,255,255,255)
o_cam_print_text.text = "DEFAULT" // Give it some default value to start up with.
activate(o_cam_print_text)
object o_reprint = s_multistatepane
@@ -1277,74 +1302,83 @@ allowed_mechs[ 64 ] = 64 // Zeus
GUI_MAILBOX
{
// GetSlotType
if (sender == this) && (getmessage() == MAIL_GET_SLOTTYPE)
{
int cur_row = getmessage(1)
if (cur_row < MAXTESLA_P)
{
//mLauncherConnection = callback($$CTCL_Get$$, _CTCL_GetTeslaInfo, k, mConnection2, mApplType, mApplState, mGameState, mGameTime, mGameIsServer)
//if (mGameState != _EGS_Idle) // ((mLauncherConnection == 1) && (mConnection2 == 1) && (mApplType == _EAT_MW4))
// return 3
if (o_BotList[cur_row].nselected == 1)
return 1
{
return MAIL_SLOTTYPE_USER
}
}
if (o_BotList[cur_row].nselected == 0)
return 0
{
return MAIL_SLOTTYPE_NONE
}
else
return 2
{
return MAIL_SLOTTYPE_BOT
}
}
// IsPossibleTabEvent(cur_row, slottype, cur_item)
if (sender == this) && (getmessage() == MAIL_POSSIBLE_TABEVENT)
{
int cur_row = getmessage(1)
int slottype = getmessage(2)
int cur_item = getmessage(3)
if (cur_item == 0)
int cur_row = getmessage(1)
int slottype = getmessage(2)
int cur_item = getmessage(3)
if (cur_item == ROWFIELD_TYPE_BOTTYPE)
{
return 1
}
if (cur_item == 1)
{
if (slottype == 1)
return 1
return 0
return 1
}
if (cur_item == 2)
if (cur_item == ROWFIELD_TYPE_EDITBOX)
{
if (slottype == 1) || (slottype == 2)
if (slottype == MAIL_SLOTTYPE_USER)
{
return 1
}
return 0
}
if (cur_item == ROWFIELD_TYPE_MECH)
{
if (slottype == MAIL_SLOTTYPE_USER) || (slottype == MAIL_SLOTTYPE_BOT)
{
return 1
return 0
}
return 0
}
if (cur_item == 3)
#if USE_O_MECH_VARIANT2
if (cur_item == ROWFIELD_TYPE_MECHVARIANT)
{
if (slottype == 2)
{
if (cur_team_val)
return 1
if (slottype == MAIL_SLOTTYPE_USER) || (slottype == MAIL_SLOTTYPE_BOT)
{
return 1
}
return 0
}
if (slottype == 1)
{
return 1
}
}
if (cur_item == 4)
}
#endif // USE_O_MECH_VARIANT2
if (cur_item == ROWFIELD_TYPE_TEAMCAMO) || (cur_item == ROWFIELD_TYPE_TEAMDECAL)
{
if (slottype == 2)
{
if (cur_team_val)
return 1
return 0
if (slottype == MAIL_SLOTTYPE_USER)
{
return 1
}
if (slottype == MAIL_SLOTTYPE_BOT)
{
if (cur_team_val)
{
return 1
}
return 0
}
}
if (slottype == 1)
{
return 1
}
}
return 0
}
if (sender == this) && (getmessage() == MAIL_PROCESS_TABEVENT)
{
int cur_index = getmessage(1) // row * MAX_SLOT_ITEMS + slot-item-index(bot-type, edit-field, mech-type, team/camo)
}
// ProcessTabEvent
if (sender == this) && (getmessage() == MAIL_PROCESS_TABEVENT)
{
int cur_index = getmessage(1) // row * MAX_SLOT_ITEMS + slot-item-index(bot-type, edit-field, mech-type, ?mech-variant,? team/camo, decal)
int tab_dir = getmessage(2) // -1 or +1
int old_row = -1
int cur_row
@@ -1354,46 +1388,60 @@ allowed_mechs[ 64 ] = 64 // Zeus
while(!done)
{
cur_index = cur_index + tab_dir
if !done && (cur_index < 0)
{
done = 1
focus(o_cam_list) // focus(@ConLobbyMission@o_game_options[13]) // MAX_OPTIONS-1
}
if !done && (nRosterCount * MAX_SLOT_ITEMS <= cur_index)
{
done = 1
focus(@ConLobbyMission@o_game_options[0])
}
if (!done)
{
cur_row = cur_index / MAX_SLOT_ITEMS
cur_item = cur_index % MAX_SLOT_ITEMS
if (old_row != cur_row)
{
old_row = cur_row
slottype = mail(MAIL_GET_SLOTTYPE, cur_row, this)
}
if mail(MAIL_POSSIBLE_TABEVENT, cur_row, slottype, cur_item, this)
cur_index = cur_index + tab_dir
if !done && (cur_index < 0)
{
done = 1
if (cur_item == 0)
focus(o_BotList[cur_row])
if (cur_item == 1)
focus(o_Editbox[cur_row])
if (cur_item == 2)
focus(o_mech_variant[cur_row])
if (cur_item == 3)
{
if (cur_team_val)
focus(o_team[cur_row])
else
focus(o_skins[cur_row])
}
if (cur_item == 4)
focus(o_decal[cur_row])
focus(o_cam_list) // focus(@ConLobbyMission@o_game_options[13]) // MAX_OPTIONS-1
}
if !done && (nRosterCount * MAX_SLOT_ITEMS <= cur_index)
{
done = 1
focus(@ConLobbyMission@o_game_options[0])
}
if (!done)
{
cur_row = cur_index / MAX_SLOT_ITEMS
cur_item = cur_index % MAX_SLOT_ITEMS
if (old_row != cur_row)
{
old_row = cur_row
slottype = mail(MAIL_GET_SLOTTYPE, cur_row, this)
}
if mail(MAIL_POSSIBLE_TABEVENT, cur_row, slottype, cur_item, this)
{
done = 1
if (cur_item == 0)
{
focus(o_BotList[cur_row])
}
if (cur_item == 1) // Bot Select
{
focus(o_Editbox[cur_row])
}
if (cur_item == 2) // Edit Box
{
focus(o_mech_variant[cur_row])
}
#if USE_O_MECH_VARIANT2
if (cur_item == 3) // Mech Box
{
focus(o_mech_variant2[cur_row])
}
#endif // USE_O_MECH_VARIANT2
if (cur_item == 4)
{
if (cur_team_val)
focus(o_team[cur_row])
else
focus(o_skins[cur_row])
}
if (cur_item == ROWFIELD_TYPE_TEAMDECAL)
{
focus(o_decal[cur_row])
}
}
}
}
}
return
}
@@ -1415,78 +1463,83 @@ allowed_mechs[ 64 ] = 64 // Zeus
nTabDir = +1
if (sender == o_cam_list)
{
if (nTabDir == -1)
focus(@ConLobbyMission@o_game_options[14]) // MAX_OPTIONS-1
else
mail(MAIL_PROCESS_TABEVENT, -1, +1, this)
return
}
if (nTabDir == -1)
focus(@ConLobbyMission@o_game_options[14]) // MAX_OPTIONS-1
else
mail(MAIL_PROCESS_TABEVENT, -1, +1, this)
return
}
int cur_index = 0
int nItemFound = 0
for (k = 0; k < nRosterCount; k++)
{
if (sender == o_BotList[k])
{
nItemFound++
cur_index = cur_index + 0
}
if (sender == o_Editbox[k])
{
nItemFound++
cur_index = cur_index + 1
}
int cur_index = 0
int nItemFound = 0
for (k = 0; k < nRosterCount; k++)
{
if (sender == o_BotList[k])
{
nItemFound++
cur_index = cur_index + ROWFIELD_TYPE_BOTTYPE
}
if (sender == o_Editbox[k])
{
nItemFound++
cur_index = cur_index + ROWFIELD_TYPE_EDITBOX
}
if (sender == o_mech_variant[k])
{
nItemFound++
cur_index = cur_index + 2
nItemFound++
cur_index = cur_index + ROWFIELD_TYPE_MECH
}
if (sender == o_mech_variant2[k])
{
nItemFound++
cur_index = cur_index + ROWFIELD_TYPE_MECHVARIANT
}
if (sender == o_skins[k]) || (sender == o_team[k])
{
nItemFound++
cur_index = cur_index + 3
}
nItemFound++
cur_index = cur_index + ROWFIELD_TYPE_TEAMCAMO
}
if (sender == o_decal[k])
{
nItemFound++
cur_index = cur_index + 4
}
if (nItemFound)
{
//play press,1
nItemFound++
cur_index = cur_index + ROWFIELD_TYPE_TEAMDECAL
}
if (nItemFound)
{
//play press,1
mail(MAIL_PROCESS_TABEVENT, cur_index, nTabDir, this)
break
}
cur_index = cur_index + MAX_SLOT_ITEMS
}
return
}
if (sender == o_roster_list_scroll_controls)
{
if (getmessage() == MAIL_ROSTER_LIST_MAXDISPLAY)
mail(MAIL_ROSTER_LIST_MAXDISPLAY, getmessage(1), this)
if (getmessage() == MAIL_ROSTER_LIST_CHANGED)
mail(MAIL_ROSTER_LIST_CHANGED, getmessage(1), this)
return
}
return
} // End TAB_EVENT
if (sender == o_roster_list_scroll_controls)
{
if (getmessage() == MAIL_ROSTER_LIST_MAXDISPLAY)
mail(MAIL_ROSTER_LIST_MAXDISPLAY, getmessage(1), this)
if (getmessage() == MAIL_ROSTER_LIST_CHANGED)
mail(MAIL_ROSTER_LIST_CHANGED, getmessage(1), this)
return
}
// MSL 5.02 Recall Button
if (sender == o_recall)
{
if (sender == o_recall)
{
play press,1
mail(MAIL_PREVIOUS_MISSION, @ConLobbyMission@) // // set rookie, see conlobbymission.script
mail(MAIL_PREVIOUS_MISSION, @ConLobbyMission@) // // set rookie, see conlobbymission.script
for (k = 0; k < nRosterCount; k++)
{
o_BotList[k].nselected = o_BotList_bu[k].nselected
if (o_BotList[k].nselected > 0)
{
o_BotList[k].nselected = o_BotList_bu[k].nselected
if (o_BotList[k].nselected > 0)
{
activate(o_BotList[k])
}
o_Editbox[k].boxValue = o_Editbox[k].backup
if (o_BotList[k].nselected == 1)
{
initialize(o_Editbox[k])
activate(o_Editbox[k])
}
activate(o_BotList[k])
}
o_Editbox[k].boxValue = o_Editbox[k].backup
if (o_BotList[k].nselected == 1)
{
initialize(o_Editbox[k])
activate(o_Editbox[k])
}
mail(MAIL_PLAYER_TYPE_CHANGED, k, this)
m_naLastSelected[k] = o_BotList[k].nselected
@@ -1866,18 +1919,18 @@ allowed_mechs[ 64 ] = 64 // Zeus
}
else
{ // hidden
deactivate(o_status[k])
deactivate(o_status[k])
deactivate(o_BotList[k])
deactivate(o_Editbox[k])
deactivate(o_print_text[k])
deactivate(o_mech_variant[k])
deactivate(o_mech_variant[k])
#if USE_O_MECH_VARIANT2
deactivate(o_mech_variant2[k])
#endif // USE_O_MECH_VARIANT2
deactivate(o_mech_rand[k])
deactivate(o_skins[k])
deactivate(o_decal[k])
deactivate(o_team[k])
deactivate(o_skins[k])
deactivate(o_decal[k])
deactivate(o_team[k])
deactivate(o_skin_box[k])
deactivate(o_decal_box[k])
}
@@ -2097,7 +2150,7 @@ allowed_mechs[ 64 ] = 64 // Zeus
else
nMissionReview = 0
callback($$CTCL_DoMission$$, 0, team_camo[0], team_decal[0], ffa_decal[0], nPrintOut, nMissionReview) // prepare to add player...
callback($$CTCL_DoMission$$, 0, team_camo[0], TEAM_DECAL[0], ffa_decal[0], nPrintOut, nMissionReview) // prepare to add player...
for (k = 0; k < nRosterCount; k++)
{
if (0 < o_BotList[k].nselected)
@@ -2351,6 +2404,7 @@ allowed_mechs[ 64 ] = 64 // Zeus
}
else
{
// Writing out the time to each pod status
timeString = conv$(mGameTime / 60)
timeTemp = conv$(mGameTime % 60)
if length$(timeTemp) == 1
@@ -2552,7 +2606,7 @@ allowed_mechs[ 64 ] = 64 // Zeus
{
if (mLauncherConnection == -1)
{
//o_cam_print_text.text = "Connecting..."
o_cam_print_text.text = "Connecting..."
processing = o_cam_print_text.text
if equal$(processing, ".")
processing = ".."
@@ -2579,7 +2633,7 @@ allowed_mechs[ 64 ] = 64 // Zeus
}
else
{
o_cam_print_text.text = "" // !ready"
o_cam_print_text.text = "!" // !ready"
}
}
if ((mLauncherConnection == 1) && (mConnection2 == 1) && (mApplType == _EAT_MW4) && (mGameState == _EGS_Idle))
@@ -2882,7 +2936,7 @@ skin_box
letters[35] = "Z"
letters[36] = "_" // MSL Bot color
string decals[18]
string decals[21] //JPP Add Decal here
decals[0] = "03"
decals[1] = "04"
decals[2] = "02"
@@ -2900,7 +2954,10 @@ skin_box
decals[14] = "24"
decals[15] = "27"
decals[16] = "48"
decals[17] = "00" // MSL Bot color
decals[17] = "49"
decals[18] = "47"
decals[19] = "46"
decals[20] = "00" // MSL Bot color
framerate = 10
}
@@ -2987,7 +3044,7 @@ decal_box
letters[35] = "Z"
letters[36] = "_" // MSL Bot color
string decals[18]
string decals[21] //JPP Decal add here
decals[0] = "03"
decals[1] = "04"
decals[2] = "02"
@@ -3005,7 +3062,10 @@ decal_box
decals[14] = "24"
decals[15] = "27"
decals[16] = "48"
decals[17] = "00" // MSL Bot color
decals[17] = "49"
decals[18] = "47"
decals[19] = "46"
decals[20] = "00" // MSL Bot color
framerate = 10
}
@@ -3023,7 +3083,7 @@ decal_box
}
else
{
dstate = 17 // MSL Bot color
dstate = 20 // MSL Bot color jpp decal change for bot
}
}
if (dstate != nLastdState)
@@ -4042,4 +4102,4 @@ s_error_string
print3d text
}
}
}
}
File diff suppressed because it is too large Load Diff
@@ -1,5 +1,5 @@
// Mechwarrior: Vengeance
// Copyright © 1999-2000
// Copyright 1999-2000
// Mechbay_main.script
// Paolo Malabuyo
// July 12, 2000
@@ -2171,6 +2171,11 @@ newmech
int boxy2 = 425
int boxz = 65
// [mechlab data fix] s_droplistbox takes its capacity from $$m_listBoxSize$$ (then resets it
// to 60). Nothing set it here, so this list held 60 items while list_size = m_chassisCount
// (65 mechs) -> the last chassis rows showed blank and selecting the final one crashed
// (garbage string pointer into CreateNewMech). Size it to the actual chassis count.
$$m_listBoxSize$$ = $$m_chassisCount$$
object o_chassisdroplistbox = s_droplistbox
o_chassisdroplistbox.boxFont3d = FPATH localize$(IDS_F_ML_LABEL)
o_chassisdroplistbox.backColor = packcolor (0, 0, 0, 255)
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.