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
+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)