summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a0e1ce4)
raw | patch | inline | side by side (parent: a0e1ce4)
author | Dmitry D. Chernov <blackdoomer@yandex.ru> | |
Fri, 10 Nov 2023 15:15:44 +0000 (01:15 +1000) | ||
committer | Dmitry D. Chernov <blackdoomer@yandex.ru> | |
Fri, 10 Nov 2023 15:15:44 +0000 (01:15 +1000) |
16 files changed:
diff --git a/src/game/g_console.pas b/src/game/g_console.pas
index 5315b351b7aa8d4999688a60b5cd9c456d65ee37..20b2b539d4757270aac580bf7bf4e51709ed7530 100644 (file)
--- a/src/game/g_console.pas
+++ b/src/game/g_console.pas
AddCommand('p2_autoswitch', PlayerSettingsCVars);
AddCommand('p1_switch_empty', PlayerSettingsCVars);
AddCommand('p2_switch_empty', PlayerSettingsCVars);
- AddCommand('p1_skip_fist', PlayerSettingsCVars);
- AddCommand('p2_skip_fist', PlayerSettingsCVars);
- AddCommand('p1_priority_kastet', PlayerSettingsCVars);
- AddCommand('p2_priority_kastet', PlayerSettingsCVars);
+ AddCommand('p1_skip_ironfist', PlayerSettingsCVars);
+ AddCommand('p2_skip_ironfist', PlayerSettingsCVars);
+ AddCommand('p1_priority_ironfist', PlayerSettingsCVars);
+ AddCommand('p2_priority_ironfist', PlayerSettingsCVars);
AddCommand('p1_priority_saw', PlayerSettingsCVars);
AddCommand('p2_priority_saw', PlayerSettingsCVars);
AddCommand('p1_priority_pistol', PlayerSettingsCVars);
AddCommand('p2_priority_plasma', PlayerSettingsCVars);
AddCommand('p1_priority_bfg', PlayerSettingsCVars);
AddCommand('p2_priority_bfg', PlayerSettingsCVars);
- AddCommand('p1_priority_super', PlayerSettingsCVars);
- AddCommand('p2_priority_super', PlayerSettingsCVars);
+ AddCommand('p1_priority_superchaingun', PlayerSettingsCVars);
+ AddCommand('p2_priority_superchaingun', PlayerSettingsCVars);
AddCommand('p1_priority_flamethrower', PlayerSettingsCVars);
AddCommand('p2_priority_flamethrower', PlayerSettingsCVars);
AddCommand('p1_priority_berserk', PlayerSettingsCVars);
WriteLn(f, 'g_maxlives ', gsMaxLives);
WriteLn(f, 'g_item_respawn_time ', gsItemRespawnTime);
WriteLn(f, 'g_item_time_random ', gsItemRespawnRandom);
- WriteLn(f, 'g_powerup_respawn_time ', gsRulezRespawnTime);
- WriteLn(f, 'g_powerup_time_random ', gsRulezRespawnRandom);
+ WriteLn(f, 'g_powerup_respawn_time ', gsPowerupRespawnTime);
+ WriteLn(f, 'g_powerup_time_random ', gsPowerupRespawnRandom);
WriteLn(f, 'g_spawn_invul ', gsSpawnInvul);
WriteLn(f, 'g_warmup_time ', gsWarmupTime);
WriteFlag('g_friendlyfire ', GAME_OPTION_TEAMDAMAGE);
WriteFlag('g_friendly_hit_trace ', GAME_OPTION_TEAMHITTRACE);
WriteFlag('g_friendly_hit_projectile ', GAME_OPTION_TEAMHITPROJECTILE);
- WriteFlag('g_powerup_randomize_respawn ', GAME_OPTION_RULEZRANDOM);
+ WriteFlag('g_powerup_randomize_respawn ', GAME_OPTION_POWERUPRANDOM);
WriteFlag('g_items_all_respawn_random ', GAME_OPTION_ITEMALLRANDOM);
WriteFlag('g_items_help_respawn_random ', GAME_OPTION_ITEMHELPRANDOM);
WriteFlag('g_items_ammo_respawn_random ', GAME_OPTION_ITEMAMMORANDOM);
WriteLn(f, 'p1_team ', FormatTeam(Team));
WriteLn(f, 'p1_autoswitch ', WeaponSwitch);
WriteLn(f, 'p1_switch_empty ', SwitchToEmpty);
- WriteLn(f, 'p1_priority_kastet ', Max(0, WeaponPreferences[WEAPON_KASTET]));
+ WriteLn(f, 'p1_priority_ironfist ', Max(0, WeaponPreferences[WEAPON_IRONFIST]));
WriteLn(f, 'p1_priority_saw ', Max(0, WeaponPreferences[WEAPON_SAW]));
WriteLn(f, 'p1_priority_pistol ', Max(0, WeaponPreferences[WEAPON_PISTOL]));
WriteLn(f, 'p1_priority_shotgun1 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1]));
- WriteLn(f, 'p1_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN2] ));
+ WriteLn(f, 'p1_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN2]));
WriteLn(f, 'p1_priority_chaingun ', Max(0, WeaponPreferences[WEAPON_CHAINGUN]));
WriteLn(f, 'p1_priority_rocketlauncher ', Max(0, WeaponPreferences[WEAPON_ROCKETLAUNCHER]));
WriteLn(f, 'p1_priority_plasma ', Max(0, WeaponPreferences[WEAPON_PLASMA]));
WriteLn(f, 'p1_priority_bfg ', Max(0, WeaponPreferences[WEAPON_BFG]));
- WriteLn(f, 'p1_priority_super ', Max(0, WeaponPreferences[WEAPON_SUPERPULEMET]));
+ WriteLn(f, 'p1_priority_superchaingun ', Max(0, WeaponPreferences[WEAPON_SUPERCHAINGUN]));
WriteLn(f, 'p1_priority_flamethrower ', Max(0, WeaponPreferences[WEAPON_FLAMETHROWER]));
WriteLn(f, 'p1_priority_berserk ', Max(0, WeaponPreferences[WP_LAST+1]));
- //
end;
with gPlayer2Settings do
begin
WriteLn(f, 'p2_team ', FormatTeam(Team));
WriteLn(f, 'p2_autoswitch ', WeaponSwitch);
WriteLn(f, 'p2_switch_empty ', SwitchToEmpty);
- WriteLn(f, 'p2_priority_kastet ', Max(0, WeaponPreferences[WEAPON_KASTET]));
+ WriteLn(f, 'p2_priority_ironfist ', Max(0, WeaponPreferences[WEAPON_IRONFIST]));
WriteLn(f, 'p2_priority_saw ', Max(0, WeaponPreferences[WEAPON_SAW]));
WriteLn(f, 'p2_priority_pistol ', Max(0, WeaponPreferences[WEAPON_PISTOL]));
WriteLn(f, 'p2_priority_shotgun1 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1]));
- WriteLn(f, 'p2_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN1]));
+ WriteLn(f, 'p2_priority_shotgun2 ', Max(0, WeaponPreferences[WEAPON_SHOTGUN2]));
WriteLn(f, 'p2_priority_chaingun ', Max(0, WeaponPreferences[WEAPON_CHAINGUN]));
WriteLn(f, 'p2_priority_rocketlauncher ', Max(0, WeaponPreferences[WEAPON_ROCKETLAUNCHER]));
WriteLn(f, 'p2_priority_plasma ', Max(0, WeaponPreferences[WEAPON_PLASMA]));
WriteLn(f, 'p2_priority_bfg ', Max(0, WeaponPreferences[WEAPON_BFG]));
- WriteLn(f, 'p2_priority_super ', Max(0, WeaponPreferences[WEAPON_SUPERPULEMET]));
+ WriteLn(f, 'p2_priority_superchaingun ', Max(0, WeaponPreferences[WEAPON_SUPERCHAINGUN]));
WriteLn(f, 'p2_priority_flamethrower ', Max(0, WeaponPreferences[WEAPON_FLAMETHROWER]));
WriteLn(f, 'p2_priority_berserk ', Max(0, WeaponPreferences[WP_LAST+1]));
end;
diff --git a/src/game/g_game.pas b/src/game/g_game.pas
index a35e2cba976e5c6c121c4d043cad3a8a169ca802..110fbe47c7e7435e82d8b5bede3ca16572e5f73f 100644 (file)
--- a/src/game/g_game.pas
+++ b/src/game/g_game.pas
SpawnInvul: Word;
ItemRespawnTime: Word;
ItemRespawnRandom: Word;
- RulezRespawnTime: Word;
- RulezRespawnRandom: Word;
+ PowerupRespawnTime: Word;
+ PowerupRespawnRandom: Word;
MaxLives: Byte;
Options: LongWord;
WAD: String;
WeaponSwitch: Byte;
WeaponPreferences: Array[WP_FIRST..WP_LAST+1] of Byte;
SwitchToEmpty: Byte;
- SkipFist: Byte;
+ SkipIronFist: Byte;
end;
TMegaWADInfo = record
EXIT_ENDLEVELSINGLE = 4;
EXIT_ENDLEVELCUSTOM = 5;
- GAME_OPTION_RESERVED = 1;
- GAME_OPTION_TEAMDAMAGE = 2;
- GAME_OPTION_ALLOWEXIT = 4;
- GAME_OPTION_WEAPONSTAY = 8;
- GAME_OPTION_MONSTERS = 16;
- GAME_OPTION_BOTVSPLAYER = 32;
- GAME_OPTION_BOTVSMONSTER = 64;
- GAME_OPTION_DMKEYS = 128;
- GAME_OPTION_TEAMHITTRACE = 256;
- GAME_OPTION_TEAMHITPROJECTILE = 512;
- GAME_OPTION_TEAMABSORBDAMAGE = 1024;
- GAME_OPTION_ALLOWDROPFLAG = 2048;
- GAME_OPTION_THROWFLAG = 4096;
- GAME_OPTION_RULEZRANDOM = 8192;
- GAME_OPTION_ITEMALLRANDOM = 16384;
- GAME_OPTION_ITEMHELPRANDOM = 32768;
- GAME_OPTION_ITEMAMMORANDOM = 65536;
- GAME_OPTION_ITEMWEAPONRANDOM = 131072;
+ GAME_OPTION_RESERVED = 1 shl 0;
+ GAME_OPTION_TEAMDAMAGE = 1 shl 1;
+ GAME_OPTION_ALLOWEXIT = 1 shl 2;
+ GAME_OPTION_WEAPONSTAY = 1 shl 3;
+ GAME_OPTION_MONSTERS = 1 shl 4;
+ GAME_OPTION_BOTVSPLAYER = 1 shl 5;
+ GAME_OPTION_BOTVSMONSTER = 1 shl 6;
+ GAME_OPTION_DMKEYS = 1 shl 7;
+ GAME_OPTION_TEAMHITTRACE = 1 shl 8;
+ GAME_OPTION_TEAMHITPROJECTILE = 1 shl 9;
+ GAME_OPTION_TEAMABSORBDAMAGE = 1 shl 10;
+ GAME_OPTION_ALLOWDROPFLAG = 1 shl 11;
+ GAME_OPTION_THROWFLAG = 1 shl 12;
+ GAME_OPTION_POWERUPRANDOM = 1 shl 13;
+ GAME_OPTION_ITEMALLRANDOM = 1 shl 14;
+ GAME_OPTION_ITEMHELPRANDOM = 1 shl 15;
+ GAME_OPTION_ITEMAMMORANDOM = 1 shl 16;
+ GAME_OPTION_ITEMWEAPONRANDOM = 1 shl 17;
STATE_NONE = 0;
STATE_MENU = 1;
p.DrawPain();
p.DrawPickup();
- p.DrawRulez();
+ p.DrawOverlay();
if gShowMap then DrawMinimap(p, _TRect(0, 0, 128, 128));
if g_Debug_Player then
g_Player_DrawDebug(p);
px: Integer = -1;
py: Integer = -1;
begin
- if g_profile_frame_draw and (profileFrameDraw <> nil) then px := px-drawProfiles(px, py, profileFrameDraw);
- if g_profile_collision and (profMapCollision <> nil) then begin px := px-drawProfiles(px, py, profMapCollision); py -= calcProfilesHeight(profMonsLOS); end;
- if g_profile_los and (profMonsLOS <> nil) then begin px := px-drawProfiles(px, py, profMonsLOS); py -= calcProfilesHeight(profMonsLOS); end;
+ if g_profile_frame_draw and (profileFrameDraw <> nil) then
+ px -= drawProfiles(px, py, profileFrameDraw);
+
+ if g_profile_collision and (profMapCollision <> nil) then
+ begin
+ px -= drawProfiles(px, py, profMapCollision);
+ py -= calcProfilesHeight(profMonsLOS);
+ end;
+
+ if g_profile_los and (profMonsLOS <> nil) then
+ begin
+ px -= drawProfiles(px, py, profMonsLOS);
+ py -= calcProfilesHeight(profMonsLOS);
+ end;
end;
procedure g_Game_Draw();
gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch;
gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences);
gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty;
- gPlayer1.SkipFist := gPlayer1Settings.SkipFist;
+ gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist;
g_Console_Add(Format(_lc[I_PLAYER_JOIN], [gPlayer1.Name]), True);
if g_Game_IsServer and g_Game_IsNet then
MH_SEND_PlayerCreate(gPlayer1.UID);
gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch;
gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences);
gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty;
- gPlayer2.SkipFist := gPlayer2Settings.SkipFist;
+ gPlayer2.SkipIronFist := gPlayer2Settings.SkipIronFist;
g_Console_Add(Format(_lc[I_PLAYER_JOIN], [gPlayer2.Name]), True);
if g_Game_IsServer and g_Game_IsNet then
MH_SEND_PlayerCreate(gPlayer2.UID);
g_Game_ClearLoading();
// Íàñòðîéêè èãðû:
- FillByte(gGameSettings, SizeOf(TGameSettings), 0);
+ gGameSettings := Default(TGameSettings);
gAimLine := False;
gShowMap := False;
gGameSettings.GameType := GT_SINGLE;
gGameSettings.MaxLives := 0;
- gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ALLOWEXIT;
- gGameSettings.Options := gGameSettings.Options + GAME_OPTION_MONSTERS;
- gGameSettings.Options := gGameSettings.Options + GAME_OPTION_BOTVSMONSTER;
- gGameSettings.Options := gGameSettings.Options + GAME_OPTION_TEAMHITPROJECTILE;
- gGameSettings.Options := gGameSettings.Options + GAME_OPTION_TEAMHITTRACE;
- gGameSettings.Options := gGameSettings.Options + GAME_OPTION_RULEZRANDOM;
- gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ITEMALLRANDOM;
- gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ITEMHELPRANDOM;
- gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ITEMAMMORANDOM;
- gGameSettings.Options := gGameSettings.Options + GAME_OPTION_ITEMWEAPONRANDOM;
+ gGameSettings.Options := GAME_OPTION_ALLOWEXIT
+ or GAME_OPTION_MONSTERS
+ or GAME_OPTION_BOTVSMONSTER
+ or GAME_OPTION_TEAMHITPROJECTILE
+ or GAME_OPTION_TEAMHITTRACE
+ or GAME_OPTION_POWERUPRANDOM
+ or GAME_OPTION_ITEMALLRANDOM
+ or GAME_OPTION_ITEMHELPRANDOM
+ or GAME_OPTION_ITEMAMMORANDOM
+ or GAME_OPTION_ITEMWEAPONRANDOM;
gSwitchGameMode := GM_SINGLE;
gLMSRespawn := LMS_RESPAWN_NONE;
gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch;
gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences);
gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty;
- gPlayer1.SkipFist := gPlayer1Settings.SkipFist;
+ gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist;
nPl := 1;
// Ñîçäàíèå âòîðîãî èãðîêà, åñëè åñòü:
gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch;
gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences);
gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty;
- gPlayer2.SkipFist := gPlayer2Settings.SkipFist;
+ gPlayer2.SkipIronFist := gPlayer2Settings.SkipIronFist;
Inc(nPl);
end;
gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch;
gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences);
gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty;
- gPlayer1.SkipFist := gPlayer1Settings.SkipFist;
+ gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist;
Inc(nPl);
end;
gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch;
gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences);
gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty;
- gPlayer2.SkipFist := gPlayer2Settings.SkipFist;
+ gPlayer2.SkipIronFist := gPlayer2Settings.SkipIronFist;
Inc(nPl);
end;
gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch;
gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences);
gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty;
- gPlayer1.SkipFist := gPlayer1Settings.SkipFist;
+ gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist;
end;
if nPlayers >= 2 then
gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch;
gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences);
gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty;
- gPlayer2.SkipFist := gPlayer2Settings.SkipFist;
+ gPlayer2.SkipIronFist := gPlayer2Settings.SkipIronFist;
end;
g_Game_SetLoadingText(_lc[I_LOAD_HOST], 0, False);
gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch;
gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences);
gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty;
- gPlayer1.SkipFist := gPlayer1Settings.SkipFist;
+ gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist;
gPlayer1.UID := NetPlrUID1;
gPlayer1.Reset(True);
if gGameSettings.GameMode = GM_COOP then
begin
gPlayers[i].Frags := 0;
- gPlayers[i].RecallState;
+ gPlayers[i].RestoreState;
end;
if (gPlayer1 = nil) and (gSpectLatchPID1 > 0) then
gPlayer1 := g_Player_Get(gSpectLatchPID1);
stat := nil;
cmd := LowerCase(P[0]);
- if cmd = 'g_gamemode' then
- begin
- if (Length(P) > 1) then
- begin
- a := g_Game_TextToMode(P[1]);
- if a = GM_SINGLE then a := GM_COOP;
- gsGameMode := g_Game_ModeToText(a);
- if g_Game_IsServer then
+ case cmd of
+ 'g_gamemode': begin
+ if (Length(P) > 1) then
begin
- gSwitchGameMode := a;
- if (gGameOn and (gGameSettings.GameMode = GM_SINGLE)) or
- (gState = STATE_INTERSINGLE) then
- gSwitchGameMode := GM_SINGLE;
- if not gGameOn then
- gGameSettings.GameMode := gSwitchGameMode;
+ a := g_Game_TextToMode(P[1]);
+ if a = GM_SINGLE then a := GM_COOP;
+ gsGameMode := g_Game_ModeToText(a);
+ if g_Game_IsServer then
+ begin
+ gSwitchGameMode := a;
+ if (gGameOn and (gGameSettings.GameMode = GM_SINGLE)) or
+ (gState = STATE_INTERSINGLE) then
+ gSwitchGameMode := GM_SINGLE;
+ if not gGameOn then
+ gGameSettings.GameMode := gSwitchGameMode;
+ end;
end;
- end;
- if gSwitchGameMode = gGameSettings.GameMode then
- g_Console_Add(Format(_lc[I_MSG_GAMEMODE_CURRENT],
- [g_Game_ModeToText(gGameSettings.GameMode)]))
- else
- g_Console_Add(Format(_lc[I_MSG_GAMEMODE_CHANGE],
- [g_Game_ModeToText(gGameSettings.GameMode),
- g_Game_ModeToText(gSwitchGameMode)]));
- end
- else if cmd = 'g_friendlyfire' then
- begin
- ParseGameFlag(GAME_OPTION_TEAMDAMAGE, I_MSG_FRIENDLY_FIRE_OFF, I_MSG_FRIENDLY_FIRE_ON);
- end
- else if cmd = 'g_friendly_absorb_damage' then
- begin
- ParseGameFlag(GAME_OPTION_TEAMABSORBDAMAGE, I_MSG_FRIENDLY_ABSORB_DAMAGE_OFF, I_MSG_FRIENDLY_ABSORB_DAMAGE_ON);
- end
- else if cmd = 'g_friendly_hit_trace' then
- begin
- ParseGameFlag(GAME_OPTION_TEAMHITTRACE, I_MSG_FRIENDLY_HIT_TRACE_OFF, I_MSG_FRIENDLY_HIT_TRACE_ON);
- end
- else if cmd = 'g_friendly_hit_projectile' then
- begin
- ParseGameFlag(GAME_OPTION_TEAMHITPROJECTILE, I_MSG_FRIENDLY_PROJECT_TRACE_OFF, I_MSG_FRIENDLY_PROJECT_TRACE_ON);
- end
- else if cmd = 'g_items_all_respawn_random' then
- begin
- ParseGameFlag(GAME_OPTION_ITEMALLRANDOM, I_MSG_ITEM_ALL_RANDOM_OFF, I_MSG_ITEM_ALL_RANDOM_ON, False);
- end
- else if cmd = 'g_items_help_respawn_random' then
- begin
- ParseGameFlag(GAME_OPTION_ITEMHELPRANDOM, I_MSG_ITEM_HELP_RANDOM_OFF, I_MSG_ITEM_HELP_RANDOM_ON, False);
- end
- else if cmd = 'g_items_ammo_respawn_random' then
- begin
- ParseGameFlag(GAME_OPTION_ITEMAMMORANDOM, I_MSG_ITEM_AMMO_RANDOM_OFF, I_MSG_ITEM_AMMO_RANDOM_ON, False);
- end
- else if cmd = 'g_items_weapon_respawn_random' then
- begin
- ParseGameFlag(GAME_OPTION_ITEMWEAPONRANDOM, I_MSG_ITEM_WEAPON_RANDOM_OFF, I_MSG_ITEM_WEAPON_RANDOM_ON);
- end
- else if cmd = 'g_powerup_randomize_respawn' then
- begin
- ParseGameFlag(GAME_OPTION_RULEZRANDOM, I_MSG_RULEZ_RANDOM_OFF, I_MSG_RULEZ_RANDOM_ON, False);
- end
- else if cmd = 'g_weaponstay' then
- begin
- ParseGameFlag(GAME_OPTION_WEAPONSTAY, I_MSG_WEAPONSTAY_OFF, I_MSG_WEAPONSTAY_ON);
- end
- else if cmd = 'g_allow_exit' then
- begin
- ParseGameFlag(GAME_OPTION_ALLOWEXIT, I_MSG_ALLOWEXIT_OFF, I_MSG_ALLOWEXIT_ON, True);
- end
- else if cmd = 'g_allow_monsters' then
- begin
- ParseGameFlag(GAME_OPTION_MONSTERS, I_MSG_ALLOWMON_OFF, I_MSG_ALLOWMON_ON, True);
- end
- else if cmd = 'g_allow_dropflag' then
- begin
- ParseGameFlag(GAME_OPTION_ALLOWDROPFLAG, I_MSG_ALLOWDROPFLAG_OFF, I_MSG_ALLOWDROPFLAG_ON);
- end
- else if cmd = 'g_throw_flag' then
- begin
- ParseGameFlag(GAME_OPTION_THROWFLAG, I_MSG_THROWFLAG_OFF, I_MSG_THROWFLAG_ON);
- end
- else if cmd = 'g_bot_vsplayers' then
- begin
- ParseGameFlag(GAME_OPTION_BOTVSPLAYER, I_MSG_BOTSVSPLAYERS_OFF, I_MSG_BOTSVSPLAYERS_ON);
- end
- else if cmd = 'g_bot_vsmonsters' then
- begin
- ParseGameFlag(GAME_OPTION_BOTVSMONSTER, I_MSG_BOTSVSMONSTERS_OFF, I_MSG_BOTSVSMONSTERS_ON);
- end
- else if cmd = 'g_dm_keys' then
- begin
- ParseGameFlag(GAME_OPTION_DMKEYS, I_MSG_DMKEYS_OFF, I_MSG_DMKEYS_ON, True);
- end
- else if cmd = 'g_gameflags' then
- begin
- if Length(P) > 1 then
- begin
- gsGameFlags := StrToDWordDef(P[1], gsGameFlags);
- if g_Game_IsServer then
+ if gSwitchGameMode = gGameSettings.GameMode then
+ g_Console_Add(Format(_lc[I_MSG_GAMEMODE_CURRENT],
+ [g_Game_ModeToText(gGameSettings.GameMode)]))
+ else
+ g_Console_Add(Format(_lc[I_MSG_GAMEMODE_CHANGE],
+ [g_Game_ModeToText(gGameSettings.GameMode),
+ g_Game_ModeToText(gSwitchGameMode)]));
+ end;
+
+ 'g_friendlyfire':
+ ParseGameFlag(GAME_OPTION_TEAMDAMAGE, I_MSG_FRIENDLY_FIRE_OFF, I_MSG_FRIENDLY_FIRE_ON);
+ 'g_friendly_absorb_damage':
+ ParseGameFlag(GAME_OPTION_TEAMABSORBDAMAGE, I_MSG_FRIENDLY_ABSORB_DAMAGE_OFF, I_MSG_FRIENDLY_ABSORB_DAMAGE_ON);
+ 'g_friendly_hit_trace':
+ ParseGameFlag(GAME_OPTION_TEAMHITTRACE, I_MSG_FRIENDLY_HIT_TRACE_OFF, I_MSG_FRIENDLY_HIT_TRACE_ON);
+ 'g_friendly_hit_projectile':
+ ParseGameFlag(GAME_OPTION_TEAMHITPROJECTILE, I_MSG_FRIENDLY_PROJECT_TRACE_OFF, I_MSG_FRIENDLY_PROJECT_TRACE_ON);
+ 'g_items_all_respawn_random':
+ ParseGameFlag(GAME_OPTION_ITEMALLRANDOM, I_MSG_ITEM_ALL_RANDOM_OFF, I_MSG_ITEM_ALL_RANDOM_ON, False);
+ 'g_items_help_respawn_random':
+ ParseGameFlag(GAME_OPTION_ITEMHELPRANDOM, I_MSG_ITEM_HELP_RANDOM_OFF, I_MSG_ITEM_HELP_RANDOM_ON, False);
+ 'g_items_ammo_respawn_random':
+ ParseGameFlag(GAME_OPTION_ITEMAMMORANDOM, I_MSG_ITEM_AMMO_RANDOM_OFF, I_MSG_ITEM_AMMO_RANDOM_ON, False);
+ 'g_items_weapon_respawn_random':
+ ParseGameFlag(GAME_OPTION_ITEMWEAPONRANDOM, I_MSG_ITEM_WEAPON_RANDOM_OFF, I_MSG_ITEM_WEAPON_RANDOM_ON);
+ 'g_powerup_randomize_respawn':
+ ParseGameFlag(GAME_OPTION_POWERUPRANDOM, I_MSG_POWERUP_RANDOM_OFF, I_MSG_POWERUP_RANDOM_ON, False);
+ 'g_weaponstay':
+ ParseGameFlag(GAME_OPTION_WEAPONSTAY, I_MSG_WEAPONSTAY_OFF, I_MSG_WEAPONSTAY_ON);
+ 'g_allow_exit':
+ ParseGameFlag(GAME_OPTION_ALLOWEXIT, I_MSG_ALLOWEXIT_OFF, I_MSG_ALLOWEXIT_ON, True);
+ 'g_allow_monsters':
+ ParseGameFlag(GAME_OPTION_MONSTERS, I_MSG_ALLOWMON_OFF, I_MSG_ALLOWMON_ON, True);
+ 'g_allow_dropflag':
+ ParseGameFlag(GAME_OPTION_ALLOWDROPFLAG, I_MSG_ALLOWDROPFLAG_OFF, I_MSG_ALLOWDROPFLAG_ON);
+ 'g_throw_flag':
+ ParseGameFlag(GAME_OPTION_THROWFLAG, I_MSG_THROWFLAG_OFF, I_MSG_THROWFLAG_ON);
+ 'g_bot_vsplayers':
+ ParseGameFlag(GAME_OPTION_BOTVSPLAYER, I_MSG_BOTSVSPLAYERS_OFF, I_MSG_BOTSVSPLAYERS_ON);
+ 'g_bot_vsmonsters':
+ ParseGameFlag(GAME_OPTION_BOTVSMONSTER, I_MSG_BOTSVSMONSTERS_OFF, I_MSG_BOTSVSMONSTERS_ON);
+ 'g_dm_keys':
+ ParseGameFlag(GAME_OPTION_DMKEYS, I_MSG_DMKEYS_OFF, I_MSG_DMKEYS_ON, True);
+
+ 'g_gameflags': begin
+ if Length(P) > 1 then
begin
- gGameSettings.Options := gsGameFlags;
- if g_Game_IsNet then MH_SEND_GameSettings;
+ gsGameFlags := StrToDWordDef(P[1], gsGameFlags);
+ if g_Game_IsServer then
+ begin
+ gGameSettings.Options := gsGameFlags;
+ if g_Game_IsNet then MH_SEND_GameSettings;
+ end;
end;
+
+ g_Console_Add(Format('%s %u', [cmd, gsGameFlags]));
end;
- g_Console_Add(Format('%s %u', [cmd, gsGameFlags]));
- end
- else if cmd = 'g_warmup_time' then
- begin
- if Length(P) > 1 then
- begin
- gsWarmupTime := nclamp(StrToIntDef(P[1], gsWarmupTime), 0, $FFFF);
- if g_Game_IsServer then
+ 'g_warmup_time': begin
+ if Length(P) > 1 then
begin
- gGameSettings.WarmupTime := gsWarmupTime;
- // extend warmup if it's already going
- if gLMSRespawn = LMS_RESPAWN_WARMUP then
+ gsWarmupTime := nclamp(StrToIntDef(P[1], gsWarmupTime), 0, $FFFF);
+ if g_Game_IsServer then
begin
- gLMSRespawnTime := gTime + gsWarmupTime * 1000;
- if g_Game_IsNet then MH_SEND_GameEvent(NET_EV_LMS_WARMUP, gLMSRespawnTime - gTime);
+ gGameSettings.WarmupTime := gsWarmupTime;
+ // extend warmup if it's already going
+ if gLMSRespawn = LMS_RESPAWN_WARMUP then
+ begin
+ gLMSRespawnTime := gTime + gsWarmupTime * 1000;
+ if g_Game_IsNet then MH_SEND_GameEvent(NET_EV_LMS_WARMUP, gLMSRespawnTime - gTime);
+ end;
+ if g_Game_IsNet then MH_SEND_GameSettings;
end;
- if g_Game_IsNet then MH_SEND_GameSettings;
end;
+
+ g_Console_Add(Format(_lc[I_MSG_WARMUP], [Integer(gsWarmupTime)]));
+ if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
end;
- g_Console_Add(Format(_lc[I_MSG_WARMUP], [Integer(gsWarmupTime)]));
- if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
- end
- else if cmd = 'g_spawn_invul' then
- begin
- if Length(P) > 1 then
- begin
- gsSpawnInvul := nclamp(StrToIntDef(P[1], gsSpawnInvul), 0, $FFFF);
- if g_Game_IsServer then
+ 'g_spawn_invul': begin
+ if Length(P) > 1 then
begin
- gGameSettings.SpawnInvul := gsSpawnInvul;
- if g_Game_IsNet then MH_SEND_GameSettings;
+ gsSpawnInvul := nclamp(StrToIntDef(P[1], gsSpawnInvul), 0, $FFFF);
+ if g_Game_IsServer then
+ begin
+ gGameSettings.SpawnInvul := gsSpawnInvul;
+ if g_Game_IsNet then MH_SEND_GameSettings;
+ end;
end;
+
+ g_Console_Add(Format('%s %d', [cmd, Integer(gsSpawnInvul)]));
end;
- g_Console_Add(Format('%s %d', [cmd, Integer(gsSpawnInvul)]));
- end
- else if cmd = 'g_item_respawn_time' then
- begin
- if Length(P) > 1 then
- begin
- gsItemRespawnTime := nclamp(StrToIntDef(P[1], gsItemRespawnTime), 0, $FFFF);
- if g_Game_IsServer then
+ 'g_item_respawn_time': begin
+ if Length(P) > 1 then
begin
- gGameSettings.ItemRespawnTime := gsItemRespawnTime;
- if g_Game_IsNet then MH_SEND_GameSettings;
+ gsItemRespawnTime := nclamp(StrToIntDef(P[1], gsItemRespawnTime), 0, $FFFF);
+ if g_Game_IsServer then
+ begin
+ gGameSettings.ItemRespawnTime := gsItemRespawnTime;
+ if g_Game_IsNet then MH_SEND_GameSettings;
+ end;
end;
+
+ g_Console_Add(Format('%s %d', [cmd, Integer(gsItemRespawnTime)]));
+ if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
end;
- g_Console_Add(Format('%s %d', [cmd, Integer(gsItemRespawnTime)]));
- if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
- end
- else if cmd = 'g_item_time_random' then
- begin
- if Length(P) > 1 then
- begin
- gsItemRespawnRandom := nclamp(StrToIntDef(P[1], gsItemRespawnRandom), 0, $FFFF);
- if g_Game_IsServer then
+ 'g_item_time_random': begin
+ if Length(P) > 1 then
begin
- gGameSettings.ItemRespawnRandom := gsItemRespawnRandom;
- if g_Game_IsNet then MH_SEND_GameSettings;
+ gsItemRespawnRandom := nclamp(StrToIntDef(P[1], gsItemRespawnRandom), 0, $FFFF);
+ if g_Game_IsServer then
+ begin
+ gGameSettings.ItemRespawnRandom := gsItemRespawnRandom;
+ if g_Game_IsNet then MH_SEND_GameSettings;
+ end;
end;
+
+ g_Console_Add(Format('%s %d', [cmd, Integer(gsItemRespawnRandom)]));
+ if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
end;
- g_Console_Add(Format('%s %d', [cmd, Integer(gsItemRespawnRandom)]));
- if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
- end
- else if cmd = 'g_powerup_respawn_time' then
- begin
- if Length(P) > 1 then
- begin
- gsRulezRespawnTime := nclamp(StrToIntDef(P[1], gsRulezRespawnTime), 0, $FFFF);
- if g_Game_IsServer then
+ 'g_powerup_respawn_time': begin
+ if Length(P) > 1 then
begin
- gGameSettings.RulezRespawnTime := gsRulezRespawnTime;
- if g_Game_IsNet then MH_SEND_GameSettings;
+ gsPowerupRespawnTime := nclamp(StrToIntDef(P[1], gsPowerupRespawnTime), 0, $FFFF);
+ if g_Game_IsServer then
+ begin
+ gGameSettings.PowerupRespawnTime := gsPowerupRespawnTime;
+ if g_Game_IsNet then MH_SEND_GameSettings;
+ end;
end;
+
+ g_Console_Add(Format('%s %d', [cmd, Integer(gsPowerupRespawnTime)]));
+ if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
end;
- g_Console_Add(Format('%s %d', [cmd, Integer(gsRulezRespawnTime)]));
- if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
- end
- else if cmd = 'g_powerup_time_random' then
- begin
- if Length(P) > 1 then
- begin
- gsRulezRespawnRandom := nclamp(StrToIntDef(P[1], gsRulezRespawnRandom), 0, $FFFF);
- if g_Game_IsServer then
+ 'g_powerup_time_random': begin
+ if Length(P) > 1 then
begin
- gGameSettings.RulezRespawnRandom := gsRulezRespawnRandom;
- if g_Game_IsNet then MH_SEND_GameSettings;
+ gsPowerupRespawnRandom := nclamp(StrToIntDef(P[1], gsPowerupRespawnRandom), 0, $FFFF);
+ if g_Game_IsServer then
+ begin
+ gGameSettings.PowerupRespawnRandom := gsPowerupRespawnRandom;
+ if g_Game_IsNet then MH_SEND_GameSettings;
+ end;
end;
+
+ g_Console_Add(Format('%s %d', [cmd, Integer(gsPowerupRespawnRandom)]));
+ if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
end;
- g_Console_Add(Format('%s %d', [cmd, Integer(gsRulezRespawnRandom)]));
- if g_Game_IsServer then g_Console_Add(_lc[I_MSG_ONMAPCHANGE]);
- end
- else if cmd = 'sv_intertime' then
- begin
- if (Length(P) > 1) then
- gDefInterTime := Min(Max(StrToIntDef(P[1], gDefInterTime), -1), 120);
+ 'sv_intertime': begin
+ if (Length(P) > 1) then
+ gDefInterTime := Min(Max(StrToIntDef(P[1], gDefInterTime), -1), 120);
- g_Console_Add(cmd + ' = ' + IntToStr(gDefInterTime));
- end
- else if cmd = 'g_max_particles' then
- begin
- if Length(p) = 2 then
- begin
- a := Max(0, StrToIntDef(p[1], 0));
- g_GFX_SetMax(a)
- end
- else if Length(p) = 1 then
- begin
- e_LogWritefln('%s', [g_GFX_GetMax()])
- end
- else
- begin
- e_LogWritefln('usage: %s <n>', [cmd])
- end
- end
- else if cmd = 'g_max_shells' then
- begin
- if Length(p) = 2 then
- begin
- a := Max(0, StrToIntDef(p[1], 0));
- g_Shells_SetMax(a)
- end
- else if Length(p) = 1 then
- begin
- e_LogWritefln('%s', [g_Shells_GetMax()])
- end
- else
- begin
- e_LogWritefln('usage: %s <n>', [cmd])
- end
- end
- else if cmd = 'g_max_gibs' then
- begin
- if Length(p) = 2 then
- begin
- a := Max(0, StrToIntDef(p[1], 0));
- g_Gibs_SetMax(a)
- end
- else if Length(p) = 1 then
- begin
- e_LogWritefln('%s', [g_Gibs_GetMax()])
- end
- else
- begin
- e_LogWritefln('usage: %s <n>', [cmd])
- end
- end
- else if cmd = 'g_max_corpses' then
- begin
- if Length(p) = 2 then
- begin
- a := Max(0, StrToIntDef(p[1], 0));
- g_Corpses_SetMax(a)
- end
- else if Length(p) = 1 then
- begin
- e_LogWritefln('%s', [g_Corpses_GetMax()])
- end
- else
- begin
- e_LogWritefln('usage: %s <n>', [cmd])
- end
- end
- else if cmd = 'g_force_model' then
- begin
- if Length(p) = 2 then
- begin
- a := StrToIntDef(p[1], 0);
- g_Force_Model_Set(a);
- if (g_Force_Model_Get() <> 0) and (gPlayers <> nil) then
+ g_Console_Add(cmd + ' = ' + IntToStr(gDefInterTime));
+ end;
+
+ 'g_max_particles': begin
+ if Length(p) = 2 then
begin
- for a := Low(gPlayers) to High(gPlayers) do
+ a := Max(0, StrToIntDef(p[1], 0));
+ g_GFX_SetMax(a)
+ end
+ else if Length(p) = 1 then
+ begin
+ e_LogWritefln('%s', [g_GFX_GetMax()])
+ end
+ else
+ begin
+ e_LogWritefln('usage: %s <n>', [cmd])
+ end
+ end;
+
+ 'g_max_shells': begin
+ if Length(p) = 2 then
+ begin
+ a := Max(0, StrToIntDef(p[1], 0));
+ g_Shells_SetMax(a)
+ end
+ else if Length(p) = 1 then
+ begin
+ e_LogWritefln('%s', [g_Shells_GetMax()])
+ end
+ else
+ begin
+ e_LogWritefln('usage: %s <n>', [cmd])
+ end
+ end;
+
+ 'g_max_gibs': begin
+ if Length(p) = 2 then
+ begin
+ a := Max(0, StrToIntDef(p[1], 0));
+ g_Gibs_SetMax(a)
+ end
+ else if Length(p) = 1 then
+ begin
+ e_LogWritefln('%s', [g_Gibs_GetMax()])
+ end
+ else
+ begin
+ e_LogWritefln('usage: %s <n>', [cmd])
+ end
+ end;
+
+ 'g_max_corpses': begin
+ if Length(p) = 2 then
+ begin
+ a := Max(0, StrToIntDef(p[1], 0));
+ g_Corpses_SetMax(a)
+ end
+ else if Length(p) = 1 then
+ begin
+ e_LogWritefln('%s', [g_Corpses_GetMax()])
+ end
+ else
+ begin
+ e_LogWritefln('usage: %s <n>', [cmd])
+ end
+ end;
+
+ 'g_force_model': begin
+ if Length(p) = 2 then
+ begin
+ a := StrToIntDef(p[1], 0);
+ g_Force_Model_Set(a);
+ if (g_Force_Model_Get() <> 0) and (gPlayers <> nil) then
begin
- if (gPlayers[a] <> nil) then
+ for a := Low(gPlayers) to High(gPlayers) do
begin
- if (gPlayers[a].UID = gPlayer1.UID) then
- continue
- else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then
- continue;
- gPlayers[a].setModel(g_Forced_Model_GetName());
- end;
+ if (gPlayers[a] <> nil) then
+ begin
+ if (gPlayers[a].UID = gPlayer1.UID) then
+ continue
+ else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then
+ continue;
+ gPlayers[a].setModel(g_Forced_Model_GetName());
+ end;
+ end
end
- end
- else if (g_Force_Model_Get() = 0) and (gPlayers <> nil) then
- begin
- for a := Low(gPlayers) to High(gPlayers) do
+ else if (g_Force_Model_Get() = 0) and (gPlayers <> nil) then
begin
- if (gPlayers[a] <> nil) then
+ for a := Low(gPlayers) to High(gPlayers) do
begin
- if (gPlayers[a].UID = gPlayer1.UID) then
- continue
- else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then
- continue;
- gPlayers[a].setModel(gPlayers[a].FActualModelName);
- end;
+ if (gPlayers[a] <> nil) then
+ begin
+ if (gPlayers[a].UID = gPlayer1.UID) then
+ continue
+ else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then
+ continue;
+ gPlayers[a].setModel(gPlayers[a].FActualModelName);
+ end;
+ end
end
end
- end
- end
- else if cmd = 'g_force_model_name' then
- begin
- if (Length(P) > 1) then
- begin
- cmd := b_Text_Unformat(P[1]);
- g_Forced_Model_SetName(cmd);
- if (g_Force_Model_Get() <> 0) and (gPlayers <> nil) then
+ end;
+
+ 'g_force_model_name': begin
+ if (Length(P) > 1) then
begin
- for a := Low(gPlayers) to High(gPlayers) do
+ cmd := b_Text_Unformat(P[1]);
+ g_Forced_Model_SetName(cmd);
+ if (g_Force_Model_Get() <> 0) and (gPlayers <> nil) then
begin
- if (gPlayers[a] <> nil) then
+ for a := Low(gPlayers) to High(gPlayers) do
begin
- if (gPlayers[a].UID = gPlayer1.UID) then
- continue
- else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then
- continue;
- gPlayers[a].setModel(g_Forced_Model_GetName());
- end;
+ if (gPlayers[a] <> nil) then
+ begin
+ if (gPlayers[a].UID = gPlayer1.UID) then
+ continue
+ else if (gPlayer2 <> nil) and (gPlayers[a].UID = gPlayer2.UID) then
+ continue;
+ gPlayers[a].setModel(g_Forced_Model_GetName());
+ end;
+ end
end
end
- end
- end
- else if cmd = 'g_scorelimit' then
- begin
- if Length(P) > 1 then
- begin
- gsScoreLimit := nclamp(StrToIntDef(P[1], gsScoreLimit), 0, $FFFF);
+ end;
- if g_Game_IsServer then
+ 'g_scorelimit': begin
+ if Length(P) > 1 then
begin
- b := 0;
- if gGameSettings.GameMode = GM_DM then
- begin // DM
- stat := g_Player_GetStats();
- if stat <> nil then
- for a := 0 to High(stat) do
- if stat[a].Frags > b then
- b := stat[a].Frags;
- end
- else // TDM/CTF
- b := Max(gTeamStat[TEAM_RED].Score, gTeamStat[TEAM_BLUE].Score);
+ gsScoreLimit := nclamp(StrToIntDef(P[1], gsScoreLimit), 0, $FFFF);
- // if someone has a higher score, set it to that instead
- gsScoreLimit := max(gsScoreLimit, b);
- gGameSettings.ScoreLimit := gsScoreLimit;
+ if g_Game_IsServer then
+ begin
+ b := 0;
+ if gGameSettings.GameMode = GM_DM then
+ begin // DM
+ stat := g_Player_GetStats();
+ if stat <> nil then
+ for a := 0 to High(stat) do
+ if stat[a].Frags > b then
+ b := stat[a].Frags;
+ end
+ else // TDM/CTF
+ b := Max(gTeamStat[TEAM_RED].Score, gTeamStat[TEAM_BLUE].Score);
- if g_Game_IsNet then MH_SEND_GameSettings;
+ // if someone has a higher score, set it to that instead
+ gsScoreLimit := max(gsScoreLimit, b);
+ gGameSettings.ScoreLimit := gsScoreLimit;
+
+ if g_Game_IsNet then MH_SEND_GameSettings;
+ end;
end;
+
+ g_Console_Add(Format(_lc[I_MSG_SCORE_LIMIT], [Integer(gsScoreLimit)]));
end;
- g_Console_Add(Format(_lc[I_MSG_SCORE_LIMIT], [Integer(gsScoreLimit)]));
- end
- else if cmd = 'g_timelimit' then
- begin
- if Length(P) > 1 then
- begin
- gsTimeLimit := nclamp(StrToIntDef(P[1], gsTimeLimit), 0, $FFFF);
- if g_Game_IsServer then
+ 'g_timelimit': begin
+ if Length(P) > 1 then
begin
- gGameSettings.TimeLimit := gsTimeLimit;
- if g_Game_IsNet then MH_SEND_GameSettings;
+ gsTimeLimit := nclamp(StrToIntDef(P[1], gsTimeLimit), 0, $FFFF);
+ if g_Game_IsServer then
+ begin
+ gGameSettings.TimeLimit := gsTimeLimit;
+ if g_Game_IsNet then MH_SEND_GameSettings;
+ end;
end;
+ g_Console_Add(Format(_lc[I_MSG_TIME_LIMIT],
+ [gsTimeLimit div 3600,
+ (gsTimeLimit div 60) mod 60,
+ gsTimeLimit mod 60]));
end;
- g_Console_Add(Format(_lc[I_MSG_TIME_LIMIT],
- [gsTimeLimit div 3600,
- (gsTimeLimit div 60) mod 60,
- gsTimeLimit mod 60]));
- end
- else if cmd = 'g_max_bots' then
- begin
- if Length(P) > 1 then
- gMaxBots := nclamp(StrToIntDef(P[1], gMaxBots), 0, 127);
- g_Console_Add('g_max_bots = ' + IntToStr(gMaxBots));
- end
- else if cmd = 'g_maxlives' then
- begin
- if Length(P) > 1 then
- begin
- gsMaxLives := nclamp(StrToIntDef(P[1], gsMaxLives), 0, $FFFF);
- if g_Game_IsServer then
+
+ 'g_max_bots': begin
+ if Length(P) > 1 then
+ gMaxBots := nclamp(StrToIntDef(P[1], gMaxBots), 0, 127);
+ g_Console_Add('g_max_bots = ' + IntToStr(gMaxBots));
+ end;
+
+ 'g_maxlives': begin
+ if Length(P) > 1 then
begin
- gGameSettings.MaxLives := gsMaxLives;
- if g_Game_IsNet then MH_SEND_GameSettings;
+ gsMaxLives := nclamp(StrToIntDef(P[1], gsMaxLives), 0, $FFFF);
+ if g_Game_IsServer then
+ begin
+ gGameSettings.MaxLives := gsMaxLives;
+ if g_Game_IsNet then MH_SEND_GameSettings;
+ end;
end;
- end;
- g_Console_Add(Format(_lc[I_MSG_LIVES], [Integer(gsMaxLives)]));
+ g_Console_Add(Format(_lc[I_MSG_LIVES], [Integer(gsMaxLives)]));
+ end;
end;
end;
if (Length(P) = 2) then
gPlayer2Settings.SwitchToEmpty := EnsureRange(StrTointDef(P[1], 0), 0, 1);
end;
- 'p1_skip_fist':
+ 'p1_skip_ironfist':
begin
if (Length(P) = 2) then
- gPlayer1Settings.SkipFist := EnsureRange(StrTointDef(P[1], 0), 0, 1);
+ gPlayer1Settings.SkipIronFist := EnsureRange(StrTointDef(P[1], 0), 0, 1);
end;
- 'p2_skip_fist':
+ 'p2_skip_ironfist':
begin
if (Length(P) = 2) then
- gPlayer2Settings.SkipFist := EnsureRange(StrTointDef(P[1], 0), 0, 1);
+ gPlayer2Settings.SkipIronFist := EnsureRange(StrTointDef(P[1], 0), 0, 1);
end;
- 'p1_priority_kastet':
+ 'p1_priority_ironfist':
begin
if (Length(P) = 2) then
- gPlayer1Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ gPlayer1Settings.WeaponPreferences[WEAPON_IRONFIST] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
end;
- 'p2_priority_kastet':
+ 'p2_priority_ironfist':
begin
if (Length(P) = 2) then
- gPlayer2Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ gPlayer2Settings.WeaponPreferences[WEAPON_IRONFIST] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
end;
'p1_priority_saw':
begin
'p1_priority_pistol':
begin
if (Length(P) = 2) then
- gPlayer1Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ gPlayer1Settings.WeaponPreferences[WEAPON_PISTOL] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
end;
'p2_priority_pistol':
begin
if (Length(P) = 2) then
- gPlayer2Settings.WeaponPreferences[WEAPON_KASTET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ gPlayer2Settings.WeaponPreferences[WEAPON_PISTOL] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
end;
'p1_priority_shotgun1':
begin
if (Length(P) = 2) then
gPlayer2Settings.WeaponPreferences[WEAPON_BFG] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
end;
- 'p1_priority_super':
+ 'p1_priority_superchaingun':
begin
if (Length(P) = 2) then
- gPlayer1Settings.WeaponPreferences[WEAPON_SUPERPULEMET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ gPlayer1Settings.WeaponPreferences[WEAPON_SUPERCHAINGUN] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
end;
- 'p2_priority_super':
+ 'p2_priority_superchaingun':
begin
if (Length(P) = 2) then
- gPlayer2Settings.WeaponPreferences[WEAPON_SUPERPULEMET] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
+ gPlayer2Settings.WeaponPreferences[WEAPON_SUPERCHAINGUN] := EnsureRange(StrToIntDef(P[1], WP_FIRST), WP_FIRST, WP_LAST+1);
end;
'p1_priority_flamethrower':
begin
if cmd = 'd_window' then
begin
g_Console_Add(Format('gScreenWidth = %d, gScreenHeight = %d', [gScreenWidth, gScreenHeight]));
- g_Console_Add(Format('gScreenWidth = %d, gScreenHeight = %d', [gScreenWidth, gScreenHeight]));
+ g_Console_Add(Format('gWinSizeX = %d, gWinSizeY = %d', [gWinSizeX, gWinSizeY]));
end
else if cmd = 'd_sounds' then
begin
begin
cmd := LowerCase(P[f]);
if cmd = 'health' then begin plr.RestoreHealthArmor(); g_Console_Add('player feels himself better'); continue; end;
- if (cmd = 'all') {or (cmd = 'weapons')} then begin plr.AllRulez(False); g_Console_Add('player got the gifts'); continue; end;
+ if (cmd = 'all') {or (cmd = 'weapons')} then begin plr.TankRamboCheats(False); g_Console_Add('player got the gifts'); continue; end;
if cmd = 'exit' then
begin
if gTriggers <> nil then
if cmd = 'plasmagunzz' then begin plr.GiveItem(ITEM_WEAPON_PLASMA); plr.GiveItem(ITEM_AMMO_CELL_BIG); g_Console_Add('player got a plasma gun'); continue; end;
if cmd = 'bfgzz' then begin plr.GiveItem(ITEM_WEAPON_BFG); plr.GiveItem(ITEM_AMMO_CELL_BIG); g_Console_Add('player got a BFG-9000'); continue; end;
- if cmd = 'superchaingun' then begin plr.GiveItem(ITEM_WEAPON_SUPERPULEMET); g_Console_Add('player got a superchaingun'); continue; end;
- if cmd = 'superchaingunzz' then begin plr.GiveItem(ITEM_WEAPON_SUPERPULEMET); plr.GiveItem(ITEM_AMMO_BULLETS_BOX); g_Console_Add('player got a superchaingun'); continue; end;
+ if cmd = 'superchaingun' then begin plr.GiveItem(ITEM_WEAPON_SUPERCHAINGUN); g_Console_Add('player got a superchaingun'); continue; end;
+ if cmd = 'superchaingunzz' then begin plr.GiveItem(ITEM_WEAPON_SUPERCHAINGUN); plr.GiveItem(ITEM_AMMO_BULLETS_BOX); g_Console_Add('player got a superchaingun'); continue; end;
if (cmd = 'flamer') or (cmd = 'flamethrower') or (cmd = 'ft') then begin plr.GiveItem(ITEM_WEAPON_FLAMETHROWER); g_Console_Add('player got a flame thrower'); continue; end;
if (cmd = 'flamerzz') or (cmd = 'flamethrowerzz') or (cmd = 'ftzz') then begin plr.GiveItem(ITEM_WEAPON_FLAMETHROWER); plr.GiveItem(ITEM_AMMO_FUELCAN); g_Console_Add('player got a flame thrower'); continue; end;
g_Console_Add(cmd + ' <WAD> [MAP] [# players]');
Exit;
end;
- // game not started yet, load fist map from some wad
+ // game not started yet, load first map from some wad
found := false;
s := addWadExtension(P[1]);
found := e_FindResource(AllMapDirs, s);
diff --git a/src/game/g_gui.pas b/src/game/g_gui.pas
index 2200703437db6be9fc693d2bdfbd83dc76a55b31..55302688c55c807547219faa4d47d2c81bf5d1e1 100644 (file)
--- a/src/game/g_gui.pas
+++ b/src/game/g_gui.pas
if FModel = nil then
Exit;
- if FModel.Weapon < WP_LAST then
- FModel.SetWeapon(FModel.Weapon+1)
- else
- FModel.SetWeapon(WEAPON_KASTET);
+ if FModel.Weapon < WP_LAST
+ then FModel.SetWeapon(FModel.Weapon+1)
+ else FModel.SetWeapon(WEAPON_IRONFIST);
end;
procedure TGUIModelView.OnMessage(var Msg: TMessage);
diff --git a/src/game/g_items.pas b/src/game/g_items.pas
index 4f0bd805167ee1d9f615b0900da7b4c05d25b43e..9784d39d5384ba29959e89b7daad1397b5feba6f 100644 (file)
--- a/src/game/g_items.pas
+++ b/src/game/g_items.pas
((62), (16)), // WEAPON_ROCKETLAUNCHER
((54), (16)), // WEAPON_PLASMA
((61), (36)), // WEAPON_BFG
- ((54), (16)), // WEAPON_SUPERPULEMET
+ ((54), (16)), // WEAPON_SUPERCHAINGUN
(( 9), (11)), // AMMO_BULLETS
((28), (16)), // AMMO_BULLETS_BOX
((15), ( 7)), // AMMO_SHELLS
((16), (16)), // KEY_RED
((16), (16)), // KEY_GREEN
((16), (16)), // KEY_BLUE
- (( 1), ( 1)), // WEAPON_KASTET
+ (( 1), ( 1)), // WEAPON_IRONFIST
((43), (16)), // WEAPON_PISTOL
((14), (18)), // BOTTLE
((16), (15)), // HELMET
g_Texture_Get('ITEM_MEDKIT_SMALL', gItemsTexturesID[ITEM_MEDKIT_SMALL]);
g_Texture_Get('ITEM_MEDKIT_LARGE', gItemsTexturesID[ITEM_MEDKIT_LARGE]);
g_Texture_Get('ITEM_MEDKIT_BLACK', gItemsTexturesID[ITEM_MEDKIT_BLACK]);
- g_Texture_Get('ITEM_SUIT', gItemsTexturesID[ITEM_SUIT]);
- g_Texture_Get('ITEM_OXYGEN', gItemsTexturesID[ITEM_OXYGEN]);
+ g_Texture_Get('ITEM_WEAPON_IRONFIST', gItemsTexturesID[ITEM_WEAPON_IRONFIST]);
g_Texture_Get('ITEM_WEAPON_SAW', gItemsTexturesID[ITEM_WEAPON_SAW]);
+ g_Texture_Get('ITEM_WEAPON_PISTOL', gItemsTexturesID[ITEM_WEAPON_PISTOL]);
g_Texture_Get('ITEM_WEAPON_SHOTGUN1', gItemsTexturesID[ITEM_WEAPON_SHOTGUN1]);
g_Texture_Get('ITEM_WEAPON_SHOTGUN2', gItemsTexturesID[ITEM_WEAPON_SHOTGUN2]);
g_Texture_Get('ITEM_WEAPON_CHAINGUN', gItemsTexturesID[ITEM_WEAPON_CHAINGUN]);
g_Texture_Get('ITEM_WEAPON_ROCKETLAUNCHER', gItemsTexturesID[ITEM_WEAPON_ROCKETLAUNCHER]);
g_Texture_Get('ITEM_WEAPON_PLASMA', gItemsTexturesID[ITEM_WEAPON_PLASMA]);
g_Texture_Get('ITEM_WEAPON_BFG', gItemsTexturesID[ITEM_WEAPON_BFG]);
- g_Texture_Get('ITEM_WEAPON_SUPERPULEMET', gItemsTexturesID[ITEM_WEAPON_SUPERPULEMET]);
+ g_Texture_Get('ITEM_WEAPON_SUPERCHAINGUN', gItemsTexturesID[ITEM_WEAPON_SUPERCHAINGUN]);
g_Texture_Get('ITEM_WEAPON_FLAMETHROWER', gItemsTexturesID[ITEM_WEAPON_FLAMETHROWER]);
g_Texture_Get('ITEM_AMMO_BULLETS', gItemsTexturesID[ITEM_AMMO_BULLETS]);
g_Texture_Get('ITEM_AMMO_BULLETS_BOX', gItemsTexturesID[ITEM_AMMO_BULLETS_BOX]);
g_Texture_Get('ITEM_KEY_RED', gItemsTexturesID[ITEM_KEY_RED]);
g_Texture_Get('ITEM_KEY_GREEN', gItemsTexturesID[ITEM_KEY_GREEN]);
g_Texture_Get('ITEM_KEY_BLUE', gItemsTexturesID[ITEM_KEY_BLUE]);
- g_Texture_Get('ITEM_WEAPON_KASTET', gItemsTexturesID[ITEM_WEAPON_KASTET]);
- g_Texture_Get('ITEM_WEAPON_PISTOL', gItemsTexturesID[ITEM_WEAPON_PISTOL]);
+ g_Texture_Get('ITEM_OXYGEN', gItemsTexturesID[ITEM_OXYGEN]);
+ g_Texture_Get('ITEM_SUIT', gItemsTexturesID[ITEM_SUIT]);
end;
procedure g_Items_LoadData();
e_WriteLog('Loading items data...', TMsgType.Notify);
g_Sound_CreateWADEx('SOUND_ITEM_RESPAWNITEM', GameWAD+':SOUNDS\RESPAWNITEM');
- g_Sound_CreateWADEx('SOUND_ITEM_GETRULEZ', GameWAD+':SOUNDS\GETRULEZ');
+ g_Sound_CreateWADEx('SOUND_ITEM_GETPOWERUP', GameWAD+':SOUNDS\GETPOWERUP');
g_Sound_CreateWADEx('SOUND_ITEM_GETWEAPON', GameWAD+':SOUNDS\GETWEAPON');
g_Sound_CreateWADEx('SOUND_ITEM_GETITEM', GameWAD+':SOUNDS\GETITEM');
g_Frames_CreateWAD(nil, 'FRAMES_FLAG_DOM', GameWAD+':TEXTURES\FLAGDOM', 64, 64, 5, False);
g_Texture_CreateWADEx('ITEM_MEDKIT_SMALL', GameWAD+':TEXTURES\MED1');
g_Texture_CreateWADEx('ITEM_MEDKIT_LARGE', GameWAD+':TEXTURES\MED2');
+ g_Texture_CreateWADEx('ITEM_MEDKIT_BLACK', GameWAD+':TEXTURES\BMED');
+ g_Texture_CreateWADEx('ITEM_WEAPON_IRONFIST', GameWAD+':TEXTURES\IRONFIST');
g_Texture_CreateWADEx('ITEM_WEAPON_SAW', GameWAD+':TEXTURES\SAW');
g_Texture_CreateWADEx('ITEM_WEAPON_PISTOL', GameWAD+':TEXTURES\PISTOL');
- g_Texture_CreateWADEx('ITEM_WEAPON_KASTET', GameWAD+':TEXTURES\KASTET');
g_Texture_CreateWADEx('ITEM_WEAPON_SHOTGUN1', GameWAD+':TEXTURES\SHOTGUN1');
g_Texture_CreateWADEx('ITEM_WEAPON_SHOTGUN2', GameWAD+':TEXTURES\SHOTGUN2');
g_Texture_CreateWADEx('ITEM_WEAPON_CHAINGUN', GameWAD+':TEXTURES\MGUN');
g_Texture_CreateWADEx('ITEM_WEAPON_ROCKETLAUNCHER', GameWAD+':TEXTURES\RLAUNCHER');
g_Texture_CreateWADEx('ITEM_WEAPON_PLASMA', GameWAD+':TEXTURES\PGUN');
g_Texture_CreateWADEx('ITEM_WEAPON_BFG', GameWAD+':TEXTURES\BFG');
- g_Texture_CreateWADEx('ITEM_WEAPON_SUPERPULEMET', GameWAD+':TEXTURES\SPULEMET');
+ g_Texture_CreateWADEx('ITEM_WEAPON_SUPERCHAINGUN', GameWAD+':TEXTURES\SCHAINGUN');
g_Texture_CreateWADEx('ITEM_WEAPON_FLAMETHROWER', GameWAD+':TEXTURES\FLAMETHROWER');
g_Texture_CreateWADEx('ITEM_AMMO_BULLETS', GameWAD+':TEXTURES\CLIP');
g_Texture_CreateWADEx('ITEM_AMMO_BULLETS_BOX', GameWAD+':TEXTURES\AMMO');
g_Texture_CreateWADEx('ITEM_KEY_BLUE', GameWAD+':TEXTURES\KEYB');
g_Texture_CreateWADEx('ITEM_OXYGEN', GameWAD+':TEXTURES\OXYGEN');
g_Texture_CreateWADEx('ITEM_SUIT', GameWAD+':TEXTURES\SUIT');
- g_Texture_CreateWADEx('ITEM_WEAPON_KASTET', GameWAD+':TEXTURES\KASTET');
- g_Texture_CreateWADEx('ITEM_MEDKIT_BLACK', GameWAD+':TEXTURES\BMED');
InitTextures();
e_WriteLog('Releasing items data...', TMsgType.Notify);
g_Sound_Delete('SOUND_ITEM_RESPAWNITEM');
- g_Sound_Delete('SOUND_ITEM_GETRULEZ');
+ g_Sound_Delete('SOUND_ITEM_GETPOWERUP');
g_Sound_Delete('SOUND_ITEM_GETWEAPON');
g_Sound_Delete('SOUND_ITEM_GETITEM');
g_Frames_DeleteByName('FRAMES_FLAG_DOM');
g_Texture_Delete('ITEM_MEDKIT_SMALL');
g_Texture_Delete('ITEM_MEDKIT_LARGE');
+ g_Texture_Delete('ITEM_MEDKIT_BLACK');
+ g_Texture_Delete('ITEM_WEAPON_IRONFIST');
g_Texture_Delete('ITEM_WEAPON_SAW');
g_Texture_Delete('ITEM_WEAPON_PISTOL');
- g_Texture_Delete('ITEM_WEAPON_KASTET');
g_Texture_Delete('ITEM_WEAPON_SHOTGUN1');
g_Texture_Delete('ITEM_WEAPON_SHOTGUN2');
g_Texture_Delete('ITEM_WEAPON_CHAINGUN');
g_Texture_Delete('ITEM_WEAPON_ROCKETLAUNCHER');
g_Texture_Delete('ITEM_WEAPON_PLASMA');
g_Texture_Delete('ITEM_WEAPON_BFG');
- g_Texture_Delete('ITEM_WEAPON_SUPERPULEMET');
+ g_Texture_Delete('ITEM_WEAPON_SUPERCHAINGUN');
g_Texture_Delete('ITEM_WEAPON_FLAMETHROWER');
g_Texture_Delete('ITEM_AMMO_BULLETS');
g_Texture_Delete('ITEM_AMMO_BULLETS_BOX');
g_Texture_Delete('ITEM_KEY_BLUE');
g_Texture_Delete('ITEM_OXYGEN');
g_Texture_Delete('ITEM_SUIT');
- g_Texture_Delete('ITEM_WEAPON_KASTET');
- g_Texture_Delete('ITEM_MEDKIT_BLACK');
freeIds.Free();
freeIds := nil;
i, j, k: Integer;
ID: DWord;
Anim: TAnimation;
- m, ItemRespawnTime, RulezRespawnTime: Word;
+ m, ItemRespawnTime{, PowerupRespawnTime}: Word;
r, nxt: Boolean;
begin
if (ggItems = nil) then exit;
// respawn items in 15 seconds regardless of settings during warmup
ItemRespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.ItemRespawnTime, 15);
- RulezRespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.RulezRespawnTime, 15);
+ //PowerupRespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.PowerupRespawnTime, 15);
for i := 0 to High(ggItems) do
begin
// Items respawn timer
ggItems[ID].RespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.ItemRespawnTime, 15) * 36;
- // Rulez respawn timer
+ // Powerup respawn timer
if ggItems[ID].ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL,
ITEM_INVIS, ITEM_MEDKIT_BLACK, ITEM_JETPACK, ITEM_SUIT] then
begin
- ggItems[ID].RespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.RulezRespawnTime, 15) * 36;
+ ggItems[ID].RespawnTime := IfThen(gLMSRespawn = LMS_RESPAWN_NONE, gGameSettings.PowerupRespawnTime, 15) * 36;
end;
// #### Random powerup respawn ####
- if LongBool(gGameSettings.Options and GAME_OPTION_RULEZRANDOM) then
+ if LongBool(gGameSettings.Options and GAME_OPTION_POWERUPRANDOM) then
begin
if ggItems[ID].ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL,
ITEM_INVIS, ITEM_MEDKIT_BLACK, ITEM_JETPACK, ITEM_SUIT] then
begin
- ggItems[ID].RespawnTime := Max(1, (gGameSettings.RulezRespawnTime + RandomRange(-gGameSettings.RulezRespawnRandom, gGameSettings.RulezRespawnRandom + 1)) * 36);
- //e_logwritefln ('Randomized rulez %s time: %s', [ggItems[ID].ItemType, ggItems[ID].RespawnTime]);
+ ggItems[ID].RespawnTime := Max(1, (gGameSettings.PowerupRespawnTime +
+ RandomRange(-gGameSettings.PowerupRespawnRandom, gGameSettings.PowerupRespawnRandom + 1)) * 36);
+ //e_logwritefln ('Randomized powerup %s time: %s', [ggItems[ID].ItemType, ggItems[ID].RespawnTime]);
end;
end;
// #### Random item respawn ####
- // Randomize respawn for all items (excluding rulez)
+ // Randomize respawn for all items (excluding powerups)
if LongBool(gGameSettings.Options and GAME_OPTION_ITEMALLRANDOM) then
begin
if ggItems[ID].ItemType in [ITEM_MEDKIT_SMALL, ITEM_MEDKIT_LARGE, ITEM_ARMOR_GREEN,
ITEM_AMMO_CELL, ITEM_AMMO_CELL_BIG, ITEM_AMMO_FUELCAN,
ITEM_AMMO_BACKPACK, ITEM_WEAPON_SAW, ITEM_WEAPON_SHOTGUN1,
ITEM_WEAPON_SHOTGUN2, ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER,
- ITEM_WEAPON_PLASMA, ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET,
+ ITEM_WEAPON_PLASMA, ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERCHAINGUN,
ITEM_WEAPON_FLAMETHROWER] then
begin
ggItems[ID].RespawnTime := Max(1, (gGameSettings.ItemRespawnTime + RandomRange(-gGameSettings.ItemRespawnRandom, gGameSettings.ItemRespawnRandom + 1)) * 36);
begin
if ggItems[ID].ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2,
ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA,
- ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_WEAPON_FLAMETHROWER] then
+ ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERCHAINGUN, ITEM_WEAPON_FLAMETHROWER] then
begin
ggItems[ID].RespawnTime := Max(1, (gGameSettings.ItemRespawnTime + RandomRange(-gGameSettings.ItemRespawnRandom, gGameSettings.ItemRespawnRandom + 1)) * 36);
//e_logwritefln ('Randomized weapon %s time: %s', [ggItems[ID].ItemType, ggItems[ID].RespawnTime]);
it := @ggItems[idx];
if gSoundEffectsDF then
begin
- if it.ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL,
- ITEM_INVIS, ITEM_MEDKIT_BLACK, ITEM_JETPACK] then
+ if it.ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL, ITEM_INVIS,
+ ITEM_JETPACK, ITEM_MEDKIT_BLACK] then
begin
- g_Sound_PlayExAt('SOUND_ITEM_GETRULEZ', x, y);
+ g_Sound_PlayExAt('SOUND_ITEM_GETPOWERUP', x, y);
end
else if it.ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_PISTOL, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2,
ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA,
- ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_WEAPON_FLAMETHROWER,
+ ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERCHAINGUN, ITEM_WEAPON_FLAMETHROWER,
ITEM_AMMO_BACKPACK] then
begin
g_Sound_PlayExAt('SOUND_ITEM_GETWEAPON', x, y);
end
else
begin
- if it.ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_SUIT,
- ITEM_MEDKIT_BLACK, ITEM_INVUL, ITEM_INVIS, ITEM_JETPACK] then
+ if it.ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL, ITEM_INVIS,
+ ITEM_SUIT, ITEM_JETPACK, ITEM_MEDKIT_BLACK] then
begin
- g_Sound_PlayExAt('SOUND_ITEM_GETRULEZ', x, y);
+ g_Sound_PlayExAt('SOUND_ITEM_GETPOWERUP', x, y);
end
else if it.ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_PISTOL, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2,
ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA,
- ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_WEAPON_FLAMETHROWER] then
+ ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERCHAINGUN, ITEM_WEAPON_FLAMETHROWER] then
begin
g_Sound_PlayExAt('SOUND_ITEM_GETWEAPON', x, y);
end
index 7fcf0dd1903f55813b848721e5e66d6109448b23..424e553cc7beb593ef8b8d4d5c53c1bfb830d91f 100644 (file)
--- a/src/game/g_language.pas
+++ b/src/game/g_language.pas
I_MENU_WEAPONS_STAY,
I_MENU_ENABLE_TEAM_DAMAGE_ABSOBR,
I_MENU_ENABLE_MONSTERS,
- I_MENU_ENABLE_RULEZ_RANDOM,
+ I_MENU_ENABLE_POWERUP_RANDOM,
I_MENU_ENABLE_ITEM_RANDOM,
- I_MENU_RULEZ_RESPAWN_TIME,
- I_MENU_RULEZ_RESPAWN_RANDOM,
+ I_MENU_POWERUP_RESPAWN_TIME,
+ I_MENU_POWERUP_RESPAWN_RANDOM,
I_MENU_BOTS_VS,
I_MENU_BOTS_VS_PLAYERS,
I_MENU_BOTS_VS_MONSTERS,
I_MENU_WEAPON_SWITCH_PREFERENCE,
I_MENU_WEAPON_SWITCH_PRIORITY,
I_MENU_WEAPON_ALLOW_EMPTY,
- I_MENU_KASTET_ALLOW,
- I_MENU_KASTET_ALLOW_BERSERK,
- I_MENU_KASTET_ALLOW_ALWAYS,
+ I_MENU_IRONFIST_ALLOW,
+ I_MENU_IRONFIST_ALLOW_BERSERK,
+ I_MENU_IRONFIST_ALLOW_ALWAYS,
I_MENU_WEAPON_PRIORITY_PLAYER_1,
I_MENU_WEAPON_PRIORITY_PLAYER_2,
I_MSG_SPECT_HUD_OFF,
I_MSG_PING_ON,
I_MSG_PING_OFF,
- I_MSG_RULEZ_RANDOM_ON,
- I_MSG_RULEZ_RANDOM_OFF,
+ I_MSG_POWERUP_RANDOM_ON,
+ I_MSG_POWERUP_RANDOM_OFF,
I_MSG_ITEM_ALL_RANDOM_ON,
I_MSG_ITEM_ALL_RANDOM_OFF,
I_MSG_ITEM_HELP_RANDOM_ON,
('GAME CHEAT AUTOMAP', 'ID2DT',
'ID2DT'),
- ('GAME WEAPON0', 'Fist',
+ ('GAME WEAPON0', 'Iron Fist',
'Êàñòåò'),
('GAME WEAPON1', 'Chainsaw',
'Áåíçîïèëà'),
'Ïîãëîùåíèå óðîíà ñîþçíèêàìè:'),
('MENU ENABLE MONSTERS', 'Enable monsters:',
'Ìîíñòðû:'),
- ('MENU ENABLE RULEZ RANDOM', 'Enable random powerup respawn:',
+ ('MENU ENABLE POWERUP RANDOM', 'Enable random powerup respawn:',
'Ñëó÷àéíîå âîñïîëíåíèå áîíóñîâ:'),
('MENU ENABLE ITEM RANDOM', 'Enable item powerup respawn:',
'Ñëó÷àéíî âîñïîëíÿåìûå ïðåäìåòû:'),
- ('MENU RULEZ RESPAWN TIME', 'Powerup respawn time:',
+ ('MENU POWERUP RESPAWN TIME', 'Powerup respawn time:',
'Âðåìÿ îòñóòñòâèÿ áîíóñîâ:'),
- ('MENU RULEZ RESPAWN RANDOM', 'Additive time for powerup timer:',
+ ('MENU POWERUP RESPAWN RANDOM', 'Additive time for powerup timer:',
'Ðàçáðîñ îòñ÷¸òà äëÿ áîíóñîâ:'),
('MENU BOTS VS', 'Bots fight with:',
'Áîòû ïðîòèâ:'),
'Ïðèîðèòåòíîñòü îðóæèÿ'),
('MENU WEAPON ALLOW EMPTY', 'Skip empty weapons',
'Ïðîïóñêàòü ïóñòîå îðóæèå'),
- ('MENU KASTET ALLOW', 'Switch to fist',
+ ('MENU IRON FIST ALLOW', 'Switch to Iron Fist',
'Âûáèðàòü êàñòåò'),
- ('MENU KASTET ALLOW BERSERK', 'Only with berserk',
+ ('MENU IRON FIST ALLOW BERSERK', 'Only with berserk',
'Òîëüêî ñ áåðñåðêîì'),
- ('MENU KASTET ALLOW ALWAYS', 'Always',
+ ('MENU IRON FIST ALLOW ALWAYS', 'Always',
'Âñåãäà'),
('MENU WEAPON PRIORITY PLAYER 1', 'Player 1 Priority',
'Ïðèîðèòåò îðóæèÿ (1)'),
'Ïèíã êëèåíòà ïîêàçûâàåòñÿ'),
('MSG PING OFF', 'Client ping display off',
'Ïèíã êëèåíòà íå ïîêàçûâàåòñÿ'),
- ('MSG RULEZ RANDOM ON', 'Random respawn enabled for powerups',
+ ('MSG POWERUP RANDOM ON', 'Random respawn enabled for powerups',
'Ñëó÷àéíîå âîñïîëíåíèå âêëþ÷åíî äëÿ áîíóñîâ'),
- ('MSG RULEZ RANDOM OFF', 'Random respawn for powerups disabled',
+ ('MSG POWERUP RANDOM OFF', 'Random respawn for powerups disabled',
'Ñëó÷àéíîå âîñïîëíåíèå äëÿ áîíóñîâ âûêëþ÷åíî'),
('MSG ITEM ALL RANDOM ON', 'Random respawn enabled for all items',
'Ñëó÷àéíîå âîñïîëíåíèå âêëþ÷åíî äëÿ âñåõ ïðåäìåòîâ'),
diff --git a/src/game/g_main.pas b/src/game/g_main.pas
index 3d7ee91f60d0a6be08cd598f9aa79838943c1e71..80b5e7ae6a4f1a58cfea5eb3af24e37be5c1cffd 100644 (file)
--- a/src/game/g_main.pas
+++ b/src/game/g_main.pas
// RAMBO
if CheckCheat(I_GAME_CHEAT_WEAPONS) then
begin
- if gPlayer1 <> nil then gPlayer1.AllRulez(False);
- if gPlayer2 <> nil then gPlayer2.AllRulez(False);
+ if gPlayer1 <> nil then gPlayer1.TankRamboCheats(False);
+ if gPlayer2 <> nil then gPlayer2.TankRamboCheats(False);
goto Cheated;
end;
// TANK
if CheckCheat(I_GAME_CHEAT_HEALTH) then
begin
- if gPlayer1 <> nil then gPlayer1.AllRulez(True);
- if gPlayer2 <> nil then gPlayer2.AllRulez(True);
+ if gPlayer1 <> nil then gPlayer1.TankRamboCheats(True);
+ if gPlayer2 <> nil then gPlayer2.TankRamboCheats(True);
goto Cheated;
end;
// IDDQD
diff --git a/src/game/g_menu.pas b/src/game/g_menu.pas
index 80989a887ad4a2d8d46a91a3afc4e992fd4c0559..fac3ca78f40f161031fbcd68254909343f475a64 100644 (file)
--- a/src/game/g_menu.pas
+++ b/src/game/g_menu.pas
menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1WeaponMenu').GetControl('mOptionsPlayersP1WeaponMenu'));
gPlayer1Settings.WeaponSwitch := TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex;
gPlayer1Settings.SwitchToEmpty := TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex;
- gPlayer1Settings.SkipFist := TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex;
+ gPlayer1Settings.SkipIronFist := TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex;
menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP1WeaponMenu').GetControl('mOptionsPreferencesP1WeaponMenu'));
with menu do
begin
menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2WeaponMenu').GetControl('mOptionsPlayersP2WeaponMenu'));
gPlayer2Settings.WeaponSwitch := TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex;
gPlayer2Settings.SwitchToEmpty := TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex;
- gPlayer2Settings.SkipFist := TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex;
+ gPlayer2Settings.SkipIronFist := TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex;
menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP2WeaponMenu').GetControl('mOptionsPreferencesP2WeaponMenu'));
with menu do
begin
gPlayer1.WeapSwitchMode := gPlayer1Settings.WeaponSwitch;
gPlayer1.setWeaponPrefs(gPlayer1Settings.WeaponPreferences);
gPlayer1.SwitchToEmpty := gPlayer1Settings.SwitchToEmpty;
- gPlayer1.SkipFist := gPlayer1Settings.SkipFist;
+ gPlayer1.SkipIronFist := gPlayer1Settings.SkipIronFist;
if g_Game_IsNet then MH_SEND_PlayerSettings(gPlayer1.UID);
end;
gPlayer2.WeapSwitchMode := gPlayer2Settings.WeaponSwitch;
gPlayer2.setWeaponPrefs(gPlayer2Settings.WeaponPreferences);
gPlayer2.SwitchToEmpty := gPlayer2Settings.SwitchToEmpty;
- gPlayer2.SkipFist := gPlayer2Settings.SkipFist;
+ gPlayer2.SkipIronFist := gPlayer2Settings.SkipIronFist;
//if g_Game_IsNet then MH_SEND_PlayerSettings(gPlayer2.UID);
end;
end;
menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP1WeaponMenu').GetControl('mOptionsPlayersP1WeaponMenu'));
TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex := gPlayer1Settings.WeaponSwitch;
TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex := gPlayer1Settings.SwitchToEmpty;
- TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex := gPlayer1Settings.SkipFist;
+ TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex := gPlayer1Settings.SkipIronFist;
menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP1WeaponMenu').GetControl('mOptionsPreferencesP1WeaponMenu'));
for i := WP_FIRST to WP_LAST+1 do
begin
menu := TGUIMenu(g_GUI_GetWindow('OptionsPlayersP2WeaponMenu').GetControl('mOptionsPlayersP2WeaponMenu'));
TGUISwitch(menu.GetControl('swWeaponAutoswitch')).ItemIndex := gPlayer2Settings.WeaponSwitch;
TGUISwitch(menu.GetControl('swWeaponAllowEmpty')).ItemIndex := gPlayer2Settings.SwitchToEmpty;
- TGUISwitch(menu.GetControl('swWeaponAllowFist')).ItemIndex := gPlayer2Settings.SkipFist;
+ TGUISwitch(menu.GetControl('swWeaponAllowIronFist')).ItemIndex := gPlayer2Settings.SkipIronFist;
menu := TGUIMenu(g_GUI_GetWindow('OptionsPreferencesP2WeaponMenu').GetControl('mOptionsPreferencesP2WeaponMenu'));
for i := WP_FIRST to WP_LAST+1 do
begin
begin
gsItemRespawnTime := StrToIntDef(TGUIEdit(GetControl('edItemRespawnTime')).Text, 0);
gsItemRespawnRandom := StrToIntDef(TGUIEdit(GetControl('edItemRespawnRandom')).Text, 0);
- gsRulezRespawnTime := StrToIntDef(TGUIEdit(GetControl('edRulezRespawnTime')).Text, 0);
- gsRulezRespawnRandom := StrToIntDef(TGUIEdit(GetControl('edRulezRespawnRandom')).Text, 0);
+ gsPowerupRespawnTime := StrToIntDef(TGUIEdit(GetControl('edPowerupRespawnTime')).Text, 0);
+ gsPowerupRespawnRandom := StrToIntDef(TGUIEdit(GetControl('edPowerupRespawnRandom')).Text, 0);
- if TGUISwitch(GetControl('swRulezRandom')).ItemIndex = 0 then
- gsGameFlags := gsGameFlags or GAME_OPTION_RULEZRANDOM;
+ if TGUISwitch(GetControl('swPowerupRandom')).ItemIndex = 0 then
+ gsGameFlags := gsGameFlags or GAME_OPTION_POWERUPRANDOM;
case TGUISwitch(GetControl('swItemsRandom')).ItemIndex of
1: gsGameFlags := gsGameFlags or GAME_OPTION_ITEMHELPRANDOM;
// TODO: get this crap out of here
gGameSettings.ItemRespawnTime := gsItemRespawnTime;
gGameSettings.ItemRespawnRandom := gsItemRespawnRandom;
- gGameSettings.RulezRespawnTime := gsRulezRespawnTime;
- gGameSettings.RulezRespawnRandom := gsRulezRespawnRandom;
+ gGameSettings.PowerupRespawnTime := gsPowerupRespawnTime;
+ gGameSettings.PowerupRespawnRandom := gsPowerupRespawnRandom;
end;
end;
Name := 'mItemsRespawnMenu';
// Switches separate from the time entry fields
- with AddSwitch(_lc[I_MENU_ENABLE_RULEZ_RANDOM]) do
+ with AddSwitch(_lc[I_MENU_ENABLE_POWERUP_RANDOM]) do
begin
- Name := 'swRulezRandom';
+ Name := 'swPowerupRandom';
AddItem(_lc[I_MENU_YES]);
AddItem(_lc[I_MENU_NO]);
- if LongBool(gsGameFlags and GAME_OPTION_RULEZRANDOM) then
+ if LongBool(gsGameFlags and GAME_OPTION_POWERUPRANDOM) then
ItemIndex := 0
else
ItemIndex := 1;
if gsItemRespawnTime > 0 then
Text := IntToStr(gsItemRespawnRandom);
end;
- // Rulez Respawn block
- with AddEdit(_lc[I_MENU_RULEZ_RESPAWN_TIME]) do
+ // Powerup Respawn block
+ with AddEdit(_lc[I_MENU_POWERUP_RESPAWN_TIME]) do
begin
- Name := 'edRulezRespawnTime';
+ Name := 'edPowerupRespawnTime';
OnlyDigits := True;
Width := 4;
MaxLength := 5;
- if gsRulezRespawnTime > 0 then
- Text := IntToStr(gsRulezRespawnTime);
+ if gsPowerupRespawnTime > 0 then
+ Text := IntToStr(gsPowerupRespawnTime);
end;
- with AddEdit(_lc[I_MENU_RULEZ_RESPAWN_RANDOM]) do
+ with AddEdit(_lc[I_MENU_POWERUP_RESPAWN_RANDOM]) do
begin
- Name := 'edRulezRespawnRandom';
+ Name := 'edPowerupRespawnRandom';
OnlyDigits := True;
Width := 4;
MaxLength := 5;
- if gsRulezRespawnRandom > 0 then
- Text := IntToStr(gsRulezRespawnRandom);
+ if gsPowerupRespawnRandom > 0 then
+ Text := IntToStr(gsPowerupRespawnRandom);
end;
AddSpace();
end;
AddItem(_lc[I_MENU_YES]);
AddItem(_lc[I_MENU_NO]);
end;
- with AddSwitch(_lc[I_MENU_KASTET_ALLOW]) do
+ with AddSwitch(_lc[I_MENU_IRONFIST_ALLOW]) do
begin
- Name := 'swWeaponAllowFist';
- AddItem(_lc[I_MENU_KASTET_ALLOW_ALWAYS]);
- AddItem(_lc[I_MENU_KASTET_ALLOW_BERSERK]);
+ Name := 'swWeaponAllowIronFist';
+ AddItem(_lc[I_MENU_IRONFIST_ALLOW_ALWAYS]);
+ AddItem(_lc[I_MENU_IRONFIST_ALLOW_BERSERK]);
end;
AddButton(@ProcOptionsPlayerP1WeaponPreferencesMenu, _lc[I_MENU_WEAPON_SWITCH_PRIORITY]);
ReAlign();
AddItem(_lc[I_MENU_YES]);
AddItem(_lc[I_MENU_NO]);
end;
- with AddSwitch(_lc[I_MENU_KASTET_ALLOW]) do
+ with AddSwitch(_lc[I_MENU_IRONFIST_ALLOW]) do
begin
- Name := 'swWeaponAllowFist';
- AddItem(_lc[I_MENU_KASTET_ALLOW_ALWAYS]);
- AddItem(_lc[I_MENU_KASTET_ALLOW_BERSERK]);
+ Name := 'swWeaponAllowIronFist';
+ AddItem(_lc[I_MENU_IRONFIST_ALLOW_ALWAYS]);
+ AddItem(_lc[I_MENU_IRONFIST_ALLOW_BERSERK]);
end;
AddButton(@ProcOptionsPlayerP2WeaponPreferencesMenu, _lc[I_MENU_WEAPON_SWITCH_PRIORITY]);
ReAlign();
index 875db7f0808e43f8f55293a62797790bad5704ca..4108d51a0cc611ef7987fd77b13f9f884fb6a047 100644 (file)
--- a/src/game/g_monsters.pas
+++ b/src/game/g_monsters.pas
if (gPlayers <> nil) then
for a := 0 to High(gPlayers) do
if (gPlayers[a] <> nil) and (gPlayers[a].alive)
- and (not gPlayers[a].NoTarget) and (gPlayers[a].FMegaRulez[MR_INVIS] < gTime) then
+ and (not gPlayers[a].NoTarget) and (gPlayers[a].FPowerups[MR_INVIS] < gTime) then
with gPlayers[a] do
if g_Look(@FObj, @Obj, FDirection) then
begin
(FBehaviour <> BH_CANNIBAL) and (FBehaviour <> BH_GOOD) then
for a := 0 to High(gPlayers) do
if (gPlayers[a] <> nil) and (gPlayers[a].alive)
- and (not gPlayers[a].NoTarget) and (gPlayers[a].FMegaRulez[MR_INVIS] < gTime) then
+ and (not gPlayers[a].NoTarget) and (gPlayers[a].FPowerups[MR_INVIS] < gTime) then
begin
if g_Look(@FObj, @gPlayers[a].Obj, FDirection) then
begin
diff --git a/src/game/g_netmsg.pas b/src/game/g_netmsg.pas
index b090aa30e08bdb690b645389cd73d22cfd6a9549..15da1c62189407cd450f4673a0432427273d0826 100644 (file)
--- a/src/game/g_netmsg.pas
+++ b/src/game/g_netmsg.pas
WeapSwitchMode := WeapSwitch;
SetWeaponPrefs(TmpPrefArray);
SwitchToEmpty := SwitchEmpty;
- SkipFist := SkipF;
+ SkipIronFist := SkipF;
if (g_Force_Model_Get() <> 0) then
SetModel(g_Forced_Model_GetName());
Reset(True);
if (TmpSwEmpty <> Pl.SwitchToEmpty) then
Pl.SwitchToEmpty := TmpSwEmpty;
- if (TmpSkipF <> Pl.SkipFist) then
- Pl.SkipFist := TmpSkipF;
+ if (TmpSkipF <> Pl.SkipIronFist) then
+ Pl.SkipIronFist := TmpSkipF;
MH_SEND_PlayerSettings(Pl.UID, TmpModel);
end;
NetOut.Write(FMaxAmmo[I]);
for I := MR_SUIT to MR_MAX do
- NetOut.Write(LongWord(FMegaRulez[I]));
+ NetOut.Write(LongWord(FPowerups[I]));
- NetOut.Write(Byte(R_ITEM_BACKPACK in FRulez));
- NetOut.Write(Byte(R_KEY_RED in FRulez));
- NetOut.Write(Byte(R_KEY_GREEN in FRulez));
- NetOut.Write(Byte(R_KEY_BLUE in FRulez));
- NetOut.Write(Byte(R_BERSERK in FRulez));
+ NetOut.Write(Byte(R_ITEM_BACKPACK in FInventory));
+ NetOut.Write(Byte(R_KEY_RED in FInventory));
+ NetOut.Write(Byte(R_KEY_GREEN in FInventory));
+ NetOut.Write(Byte(R_KEY_BLUE in FInventory));
+ NetOut.Write(Byte(R_BERSERK in FInventory));
NetOut.Write(Frags);
NetOut.Write(Death);
FMaxAmmo[I] := M.ReadWord();
for I := MR_SUIT to MR_MAX do
- FMegaRulez[I] := M.ReadLongWord();
-
- FRulez := [];
- if (M.ReadByte() <> 0) then
- FRulez := FRulez + [R_ITEM_BACKPACK];
- if (M.ReadByte() <> 0) then
- FRulez := FRulez + [R_KEY_RED];
- if (M.ReadByte() <> 0) then
- FRulez := FRulez + [R_KEY_GREEN];
- if (M.ReadByte() <> 0) then
- FRulez := FRulez + [R_KEY_BLUE];
- if (M.ReadByte() <> 0) then
- FRulez := FRulez + [R_BERSERK];
+ FPowerups[I] := M.ReadLongWord();
+
+ FInventory := [];
+ if (M.ReadByte() <> 0) then FInventory += [R_ITEM_BACKPACK];
+ if (M.ReadByte() <> 0) then FInventory += [R_KEY_RED];
+ if (M.ReadByte() <> 0) then FInventory += [R_KEY_GREEN];
+ if (M.ReadByte() <> 0) then FInventory += [R_KEY_BLUE];
+ if (M.ReadByte() <> 0) then FInventory += [R_BERSERK];
Frags := M.ReadLongInt();
Death := M.ReadLongInt();
for i := WP_FIRST to WP_LAST + 1 do
NetOut.Write(gPlayer1Settings.WeaponPreferences[i]);
NetOut.Write(gPlayer1Settings.SwitchToEmpty);
- NetOut.Write(gPlayer1Settings.SkipFist);
+ NetOut.Write(gPlayer1Settings.SkipIronFist);
g_Net_Client_Send(True);
end;
for i := WP_FIRST to WP_LAST + 1 do
NetOut.Write(gPlayer1Settings.WeaponPreferences[i]);
NetOut.Write(gPlayer1Settings.SwitchToEmpty);
- NetOut.Write(gPlayer1Settings.SkipFist);
+ NetOut.Write(gPlayer1Settings.SkipIronFist);
g_Net_Client_Send(True);
end;
diff --git a/src/game/g_options.pas b/src/game/g_options.pas
index 23bb91b30ed9ae2b1aaf091ba2d48f369c8f0e66..22ebe3e26e0da9f644d2bf142a33159a34350ec1 100644 (file)
--- a/src/game/g_options.pas
+++ b/src/game/g_options.pas
gsSpawnInvul: Integer = 0;
gsItemRespawnTime: Word = 60;
gsItemRespawnRandom: Word = 0;
- gsRulezRespawnTime: Word = 60;
- gsRulezRespawnRandom: Word = 0;
+ gsPowerupRespawnTime: Word = 60;
+ gsPowerupRespawnRandom: Word = 0;
gsWarmupTime: Word = 30;
implementation
gsSpawnInvul := 0;
gsItemRespawnTime := 60;
gsItemRespawnRandom := 0;
- gsRulezRespawnTime := 60;
- gsRulezRespawnRandom := 0;
+ gsPowerupRespawnTime := 60;
+ gsPowerupRespawnRandom := 0;
gsGameFlags := GAME_OPTION_ALLOWEXIT or GAME_OPTION_DMKEYS or
GAME_OPTION_BOTVSPLAYER or GAME_OPTION_BOTVSMONSTER or
GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMHITPROJECTILE or
SpawnInvul := gsSpawnInvul;
ItemRespawnTime := gsItemRespawnTime;
ItemRespawnRandom := gsItemRespawnRandom;
- RulezRespawnTime := gsRulezRespawnTime;
- RulezRespawnRandom := gsRulezRespawnRandom;
+ PowerupRespawnTime := gsPowerupRespawnTime;
+ PowerupRespawnRandom := gsPowerupRespawnRandom;
WarmupTime := gsWarmupTime;
Options := gsGameFlags;
end;
diff --git a/src/game/g_player.pas b/src/game/g_player.pas
index 790d419283314680739cebf3093014f842c0a6de..6b0c4f5bd75028389a8c06772ccdd32f5acb1d5c 100644 (file)
--- a/src/game/g_player.pas
+++ b/src/game/g_player.pas
Ammo: Array [A_BULLETS..A_HIGH] of Word;
MaxAmmo: Array [A_BULLETS..A_HIGH] of Word;
Weapon: Array [WP_FIRST..WP_LAST] of Boolean;
- Rulez: Set of R_ITEM_BACKPACK..R_BERSERK;
+ Inventory: Set of R_ITEM_BACKPACK..R_BERSERK;
Used: Boolean;
end;
procedure Jump();
procedure Use();
- function getNextWeaponIndex (): Byte; // return 255 for "no switch"
+ function getNextWeaponIndex (): Byte; // returns 255 for "no switch"
procedure resetWeaponQueue ();
function hasAmmoForWeapon (weapon: Byte): Boolean;
function hasAmmoForShooting (weapon: Byte): Boolean;
FAmmo: Array [A_BULLETS..A_HIGH] of Word;
FMaxAmmo: Array [A_BULLETS..A_HIGH] of Word;
FWeapon: Array [WP_FIRST..WP_LAST] of Boolean;
- FRulez: Set of R_ITEM_BACKPACK..R_BERSERK;
+ FInventory: Set of R_ITEM_BACKPACK..R_BERSERK;
FBerserk: Integer;
- FMegaRulez: Array [MR_SUIT..MR_MAX] of DWORD;
+ FPowerups: Array [MR_SUIT..MR_MAX] of DWORD;
FReloading: Array [WP_FIRST..WP_LAST] of Word;
FTime: Array [T_RESPAWN..T_FLAGCAP] of DWORD;
FKeys: Array [KEY_LEFT..KEY_CHAT] of TKeyState;
FWeapSwitchMode: Byte;
FWeapPreferences: Array [WP_FIRST .. WP_LAST+1] of Byte;
FSwitchToEmpty: Byte;
- FSkipFist: Byte;
+ FSkipIronFist: Byte;
FColor: TRGB;
FPreferredTeam: Byte;
FSpectator: Boolean;
procedure SetFlag(Flag: Byte);
function DropFlag(Silent: Boolean = True; DoThrow: Boolean = False): Boolean;
function TryDropFlag(): Boolean;
- procedure AllRulez(Health: Boolean);
+ procedure TankRamboCheats(Health: Boolean);
procedure RestoreHealthArmor();
procedure FragCombo();
procedure GiveItem(ItemType: Byte);
procedure Draw(); virtual;
procedure DrawPain();
procedure DrawPickup();
- procedure DrawRulez();
+ procedure DrawOverlay();
procedure DrawAim();
procedure DrawIndicator(Color: TRGB);
procedure DrawBubble();
procedure DrawGUI();
procedure PreUpdate();
procedure Update(); virtual;
- procedure RememberState();
- procedure RecallState();
+ procedure PreserveState();
+ procedure RestoreState();
procedure SaveState (st: TStream); virtual;
procedure LoadState (st: TStream); virtual;
procedure PauseSounds(Enable: Boolean);
property CurrWeap: Byte read FCurrWeap write FCurrWeap;
property WeapSwitchMode: Byte read FWeapSwitchMode write FWeapSwitchMode;
property SwitchToEmpty: Byte read FSwitchToEmpty write FSwitchToEmpty;
- property SkipFist: Byte read FSkipFist write FSkipFist;
+ property SkipIronFist: Byte read FSkipIronFist write FSkipIronFist;
property MonsterKills: Integer read FMonsterKills write FMonsterKills;
property Secrets: Integer read FSecrets;
property GodMode: Boolean read FGodMode write FGodMode;
FlyPrecision: 255; Cover: 255; CloseJump: 255;
WeaponPrior:(0,0,0,0,0,0,0,0,0,0,0); CloseWeaponPrior:(0,0,0,0,0,0,0,0,0,0,0));
WEAPON_PRIOR1: Array [WP_FIRST..WP_LAST] of Byte =
- (WEAPON_FLAMETHROWER, WEAPON_SUPERPULEMET,
+ (WEAPON_FLAMETHROWER, WEAPON_SUPERCHAINGUN,
WEAPON_SHOTGUN2, WEAPON_SHOTGUN1,
WEAPON_CHAINGUN, WEAPON_PLASMA, WEAPON_ROCKETLAUNCHER,
- WEAPON_BFG, WEAPON_PISTOL, WEAPON_SAW, WEAPON_KASTET);
+ WEAPON_BFG, WEAPON_PISTOL, WEAPON_SAW, WEAPON_IRONFIST);
WEAPON_PRIOR2: Array [WP_FIRST..WP_LAST] of Byte =
- (WEAPON_FLAMETHROWER, WEAPON_SUPERPULEMET,
+ (WEAPON_FLAMETHROWER, WEAPON_SUPERCHAINGUN,
WEAPON_BFG, WEAPON_ROCKETLAUNCHER,
WEAPON_SHOTGUN2, WEAPON_PLASMA, WEAPON_SHOTGUN1,
- WEAPON_CHAINGUN, WEAPON_PISTOL, WEAPON_SAW, WEAPON_KASTET);
+ WEAPON_CHAINGUN, WEAPON_PISTOL, WEAPON_SAW, WEAPON_IRONFIST);
//WEAPON_PRIOR3: Array [WP_FIRST..WP_LAST] of Byte =
- // (WEAPON_FLAMETHROWER, WEAPON_SUPERPULEMET,
+ // (WEAPON_FLAMETHROWER, WEAPON_SUPERCHAINGUN,
// WEAPON_BFG, WEAPON_PLASMA, WEAPON_SHOTGUN2,
// WEAPON_CHAINGUN, WEAPON_SHOTGUN1, WEAPON_SAW,
- // WEAPON_ROCKETLAUNCHER, WEAPON_PISTOL, WEAPON_KASTET);
+ // WEAPON_ROCKETLAUNCHER, WEAPON_PISTOL, WEAPON_IRONFIST);
WEAPON_RELOAD: Array [WP_FIRST..WP_LAST] of Byte =
(5, 2, 6, 18, 36, 2, 12, 2, 14, 2, 2);
begin
for i := Low(gPlayers) to High(gPlayers) do
if (gPlayers[i] <> nil) and gPlayers[i].alive then
- gPlayers[i].RememberState;
+ gPlayers[i].PreserveState;
end;
procedure g_Player_ResetAll(Force, Silent: Boolean);
for i := WP_FIRST to WP_LAST do
if FWeapon[i] and maySwitch(i) and (FWeapPreferences[i] > FWeapPreferences[testedWeap]) then
testedWeap := i;
- if (R_BERSERK in FRulez) and (FWeapPreferences[WP_LAST + 1] > FWeapPreferences[testedWeap]) then
- testedWeap := WEAPON_KASTET;
+ if (R_BERSERK in FInventory) and (FWeapPreferences[WP_LAST + 1] > FWeapPreferences[testedWeap]) then
+ testedWeap := WEAPON_IRONFIST;
result := testedWeap;
end;
function TPlayer.maySwitch(Weapon: Byte) : Boolean;
begin
result := true;
- if (Weapon = WEAPON_KASTET) and (FSkipFist <> 0) then
+ if (Weapon = WEAPON_IRONFIST) and (FSkipIronFist <> 0) then
begin
- if (FSkipFist = 1) and (not (R_BERSERK in FRulez)) then
+ if (FSkipIronFist = 1) and (not (R_BERSERK in FInventory)) then
result := false;
end
else if (FSwitchToEmpty = 0) and (not hasAmmoForShooting(Weapon)) then
if not PickItem(ItemType, gItems[i].Respawnable, r) then Continue;
if ItemType in [ITEM_SPHERE_BLUE, ITEM_SPHERE_WHITE, ITEM_INVUL] then
- g_Sound_PlayExAt('SOUND_ITEM_GETRULEZ', FObj.X, FObj.Y)
+ g_Sound_PlayExAt('SOUND_ITEM_GETPOWERUP', FObj.X, FObj.Y)
else if ItemType in [ITEM_MEDKIT_SMALL, ITEM_MEDKIT_LARGE, ITEM_MEDKIT_BLACK] then
g_Sound_PlayExAt('SOUND_ITEM_GETMED', FObj.X, FObj.Y)
else g_Sound_PlayExAt('SOUND_ITEM_GETITEM', FObj.X, FObj.Y);
- // Íàäî óáðàòü ñ êàðòû, åñëè ýòî íå êëþ÷, êîòîðûì íóæíî ïîäåëèòñÿ ñ äðóãèì èãðîêîì:
+ // Íàäî óáðàòü ñ êàðòû, åñëè ýòî íå êëþ÷, êîòîðûì íóæíî ïîäåëèòüñÿ ñ äðóãèì èãðîêîì:
if r and not ((ItemType in [ITEM_KEY_RED, ITEM_KEY_GREEN, ITEM_KEY_BLUE]) and
(gGameSettings.GameType = GT_SINGLE) and
(g_Player_GetCount() > 1)) then
end;
end;
// Îáíóëèòü äåéñòâèÿ ïðèìî÷åê, ÷òîáû ôîí ïðîïàë
- FMegaRulez[MR_SUIT] := 0;
- FMegaRulez[MR_INVUL] := 0;
- FMegaRulez[MR_INVIS] := 0;
+ FPowerups[MR_SUIT] := 0;
+ FPowerups[MR_INVUL] := 0;
+ FPowerups[MR_INVIS] := 0;
FSpawnInvul := 0;
FBerserk := 0;
end;
// Íî îò îñòàëüíîãî ñïàñàåò:
- if FMegaRulez[MR_INVUL] >= gTime then
+ if FPowerups[MR_INVUL] >= gTime then
Exit;
// ×èò-êîä "ÃÎÐÅÖ":
end;
end;
- if (FMegaRulez[MR_INVUL] > gTime) and ((gPlayerDrawn <> Self) or (FSpawnInvul >= gTime)) then
+ if (FPowerups[MR_INVUL] > gTime) and ((gPlayerDrawn <> Self) or (FSpawnInvul >= gTime)) then
if g_Texture_Get('TEXTURE_PLAYER_INVULPENTA', ID) then
begin
e_GetTextureSize(ID, @w, @h);
fY+FObj.Rect.Y+(FObj.Rect.Height div 2)-(h div 2)-7+fSlope, 0, True, False);
end;
- if FMegaRulez[MR_INVIS] > gTime then
+ if FPowerups[MR_INVIS] > gTime then
begin
if (gPlayerDrawn <> nil) and ((Self = gPlayerDrawn) or
((FTeam = gPlayerDrawn.Team) and (gGameSettings.GameMode <> GM_DM))) then
begin
- if (FMegaRulez[MR_INVIS] - gTime) <= 2100 then
- dr := not Odd((FMegaRulez[MR_INVIS] - gTime) div 300)
+ if (FPowerups[MR_INVIS] - gTime) <= 2100 then
+ dr := not Odd((FPowerups[MR_INVIS] - gTime) div 300)
else
dr := True;
if dr then
end;
if (gChatBubble > 0) and (FKeys[KEY_CHAT].Pressed) and not FGhost then
- if (FMegaRulez[MR_INVIS] <= gTime) or ((gPlayerDrawn <> nil) and ((Self = gPlayerDrawn) or
+ if (FPowerups[MR_INVIS] <= gTime) or ((gPlayerDrawn <> nil) and ((Self = gPlayerDrawn) or
((FTeam = gPlayerDrawn.Team) and (gGameSettings.GameMode <> GM_DM)))) then
DrawBubble();
// e_DrawPoint(5, 335, 288, 255, 0, 0); // DL, UR, DL, UR
e_CharFont_GetSize(gMenuSmallFont, FName, tw, th);
e_CharFont_PrintEx(gMenuSmallFont, X+98-(tw div 2), Y+8, FName, _RGB(255, 0, 0));
- if R_BERSERK in FRulez then
- e_Draw(gItemsTexturesID[ITEM_MEDKIT_BLACK], X+37, Y+45, 0, True, False)
- else
- e_Draw(gItemsTexturesID[ITEM_MEDKIT_LARGE], X+37, Y+45, 0, True, False);
+ if R_BERSERK in FInventory
+ then e_Draw(gItemsTexturesID[ITEM_MEDKIT_BLACK], X+37, Y+45, 0, True, False)
+ else e_Draw(gItemsTexturesID[ITEM_MEDKIT_LARGE], X+37, Y+45, 0, True, False);
if g_Texture_Get('TEXTURE_PLAYER_ARMORHUD', ID) then
e_Draw(ID, X+36, Y+77, 0, True, False);
s := IntToStr(GetAmmoByWeapon(FCurrWeap));
case FCurrWeap of
- WEAPON_KASTET:
+ WEAPON_IRONFIST:
begin
s := '--';
- ID := gItemsTexturesID[ITEM_WEAPON_KASTET];
+ ID := gItemsTexturesID[ITEM_WEAPON_IRONFIST];
end;
WEAPON_SAW:
begin
WEAPON_CHAINGUN: ID := gItemsTexturesID[ITEM_WEAPON_CHAINGUN];
WEAPON_SHOTGUN1: ID := gItemsTexturesID[ITEM_WEAPON_SHOTGUN1];
WEAPON_SHOTGUN2: ID := gItemsTexturesID[ITEM_WEAPON_SHOTGUN2];
- WEAPON_SUPERPULEMET: ID := gItemsTexturesID[ITEM_WEAPON_SUPERPULEMET];
+ WEAPON_SUPERCHAINGUN: ID := gItemsTexturesID[ITEM_WEAPON_SUPERCHAINGUN];
WEAPON_ROCKETLAUNCHER: ID := gItemsTexturesID[ITEM_WEAPON_ROCKETLAUNCHER];
WEAPON_PLASMA: ID := gItemsTexturesID[ITEM_WEAPON_PLASMA];
WEAPON_BFG: ID := gItemsTexturesID[ITEM_WEAPON_BFG];
e_CharFont_PrintEx(gMenuFont, X+178-tw, Y+158, s, _RGB(255, 0, 0));
e_Draw(ID, X+20, Y+160, 0, True, False);
- if R_KEY_RED in FRulez then
+ if R_KEY_RED in FInventory then
e_Draw(gItemsTexturesID[ITEM_KEY_RED], X+78, Y+214, 0, True, False);
- if R_KEY_GREEN in FRulez then
+ if R_KEY_GREEN in FInventory then
e_Draw(gItemsTexturesID[ITEM_KEY_GREEN], X+95, Y+214, 0, True, False);
- if R_KEY_BLUE in FRulez then
+ if R_KEY_BLUE in FInventory then
e_Draw(gItemsTexturesID[ITEM_KEY_BLUE], X+112, Y+214, 0, True, False);
if FJetFuel > 0 then
end;
end;
-procedure TPlayer.DrawRulez();
+procedure TPlayer.DrawOverlay();
var
dr: Boolean;
begin
// Ïðè âçÿòèè íåóÿçâèìîñòè ðèñóåòñÿ èíâåðñèîííûé áåëûé ôîí
- if (FMegaRulez[MR_INVUL] >= gTime) and (FSpawnInvul < gTime) then
+ if (FPowerups[MR_INVUL] >= gTime) and (FSpawnInvul < gTime) then
begin
- if (FMegaRulez[MR_INVUL]-gTime) <= 2100 then
- dr := not Odd((FMegaRulez[MR_INVUL]-gTime) div 300)
+ if (FPowerups[MR_INVUL]-gTime) <= 2100 then
+ dr := not Odd((FPowerups[MR_INVUL]-gTime) div 300)
else
dr := True;
end;
// Ïðè âçÿòèè çàùèòíîãî êîñòþìà ðèñóåòñÿ çåëåíîâàòûé ôîí
- if FMegaRulez[MR_SUIT] >= gTime then
+ if FPowerups[MR_SUIT] >= gTime then
begin
- if (FMegaRulez[MR_SUIT]-gTime) <= 2100 then
- dr := not Odd((FMegaRulez[MR_SUIT]-gTime) div 300)
+ if (FPowerups[MR_SUIT]-gTime) <= 2100 then
+ dr := not Odd((FPowerups[MR_SUIT]-gTime) div 300)
else
dr := True;
FPunchAnim := nil;
end;
st := 'FRAMES_PUNCH';
- if R_BERSERK in FRulez then
+ if R_BERSERK in FInventory then
st := st + '_BERSERK';
if FKeys[KEY_UP].Pressed then
st := st + '_UP'
yd := wy+firediry();
case FCurrWeap of
- WEAPON_KASTET:
+ WEAPON_IRONFIST:
begin
DoPunch();
- if R_BERSERK in FRulez then
+ if R_BERSERK in FInventory then
begin
//g_Weapon_punch(FObj.X+FObj.Rect.X, FObj.Y+FObj.Rect.Y, 75, FUID);
locobj.X := FObj.X+FObj.Rect.X;
DidFire := True;
end;
- WEAPON_SUPERPULEMET:
+ WEAPON_SUPERCHAINGUN:
if FAmmo[A_SHELLS] > 0 then
begin
g_Weapon_shotgun(wx, wy, xd, yd, FUID);
begin
case Weapon of
WEAPON_PISTOL, WEAPON_CHAINGUN: Result := FAmmo[A_BULLETS];
- WEAPON_SHOTGUN1, WEAPON_SHOTGUN2, WEAPON_SUPERPULEMET: Result := FAmmo[A_SHELLS];
+ WEAPON_SHOTGUN1, WEAPON_SHOTGUN2, WEAPON_SUPERCHAINGUN: Result := FAmmo[A_SHELLS];
WEAPON_ROCKETLAUNCHER: Result := FAmmo[A_ROCKETS];
WEAPON_PLASMA, WEAPON_BFG: Result := FAmmo[A_CELLS];
WEAPON_FLAMETHROWER: Result := FAmmo[A_FUEL];
@@ -3358,7 +3357,7 @@ procedure TPlayer.CatchFire(Attacker: Word; Timeout: Integer = PLAYER_BURN_TIME)
begin
if Timeout <= 0 then
exit;
- if (FMegaRulez[MR_SUIT] > gTime) or (FMegaRulez[MR_INVUL] > gTime) then
+ if (FPowerups[MR_SUIT] > gTime) or (FPowerups[MR_INVUL] > gTime) then
exit; // Íå çàãîðàåìñÿ êîãäà åñòü çàùèòà
if g_Obj_CollidePanel(@FObj, 0, 0, PANEL_WATER or PANEL_ACID1 or PANEL_ACID2) then
exit; // Íå ïîäãîðàåì â âîäå íà âñÿêèé ñëó÷àé
WEAPON_ROCKETLAUNCHER: i := ITEM_WEAPON_ROCKETLAUNCHER;
WEAPON_PLASMA: i := ITEM_WEAPON_PLASMA;
WEAPON_BFG: i := ITEM_WEAPON_BFG;
- WEAPON_SUPERPULEMET: i := ITEM_WEAPON_SUPERPULEMET;
+ WEAPON_SUPERCHAINGUN: i := ITEM_WEAPON_SUPERCHAINGUN;
WEAPON_FLAMETHROWER: i := ITEM_WEAPON_FLAMETHROWER;
else i := 0;
end;
end;
// Âûáðîñ ðþêçàêà:
- if R_ITEM_BACKPACK in FRulez then
+ if R_ITEM_BACKPACK in FInventory then
PushItem(ITEM_AMMO_BACKPACK);
// Âûáðîñ ðàêåòíîãî ðàíöà:
if (not (gGameSettings.GameMode in [GM_DM, GM_TDM, GM_CTF])) or
(not LongBool(gGameSettings.Options and GAME_OPTION_DMKEYS)) then
begin
- if R_KEY_RED in FRulez then
+ if R_KEY_RED in FInventory then
PushItem(ITEM_KEY_RED);
- if R_KEY_GREEN in FRulez then
+ if R_KEY_GREEN in FInventory then
PushItem(ITEM_KEY_GREEN);
- if R_KEY_BLUE in FRulez then
+ if R_KEY_BLUE in FInventory then
PushItem(ITEM_KEY_BLUE);
end;
begin
result := false;
case weapon of
- WEAPON_KASTET, WEAPON_SAW: result := true;
- WEAPON_SHOTGUN1, WEAPON_SHOTGUN2, WEAPON_SUPERPULEMET: result := (FAmmo[A_SHELLS] > 0);
+ WEAPON_IRONFIST, WEAPON_SAW: result := true;
+ WEAPON_SHOTGUN1, WEAPON_SHOTGUN2, WEAPON_SUPERCHAINGUN: result := (FAmmo[A_SHELLS] > 0);
WEAPON_PISTOL, WEAPON_CHAINGUN: result := (FAmmo[A_BULLETS] > 0);
WEAPON_ROCKETLAUNCHER: result := (FAmmo[A_ROCKETS] > 0);
WEAPON_PLASMA, WEAPON_BFG: result := (FAmmo[A_CELLS] > 0);
begin
result := false;
case weapon of
- WEAPON_KASTET, WEAPON_SAW: result := true;
- WEAPON_SHOTGUN1, WEAPON_SUPERPULEMET: result := (FAmmo[A_SHELLS] > 0);
+ WEAPON_IRONFIST, WEAPON_SAW: result := true;
+ WEAPON_SHOTGUN1, WEAPON_SUPERCHAINGUN: result := (FAmmo[A_SHELLS] > 0);
WEAPON_SHOTGUN2: result := (FAmmo[A_SHELLS] > 1);
WEAPON_PISTOL, WEAPON_CHAINGUN: result := (FAmmo[A_BULLETS] > 0);
WEAPON_ROCKETLAUNCHER: result := (FAmmo[A_ROCKETS] > 0);
if a and g_Game_IsNet then MH_SEND_Sound(GameX, GameY, 'SOUND_ITEM_GETWEAPON');
end;
- ITEM_WEAPON_SUPERPULEMET:
- if (FAmmo[A_SHELLS] < FMaxAmmo[A_SHELLS]) or not FWeapon[WEAPON_SUPERPULEMET] then
+ ITEM_WEAPON_SUPERCHAINGUN:
+ if (FAmmo[A_SHELLS] < FMaxAmmo[A_SHELLS]) or not FWeapon[WEAPON_SUPERCHAINGUN] then
begin
- if a and FWeapon[WEAPON_SUPERPULEMET] then Exit;
- switchWeapon := WEAPON_SUPERPULEMET;
- hadWeapon := FWeapon[WEAPON_SUPERPULEMET];
+ if a and FWeapon[WEAPON_SUPERCHAINGUN] then Exit;
+ switchWeapon := WEAPON_SUPERCHAINGUN;
+ hadWeapon := FWeapon[WEAPON_SUPERCHAINGUN];
IncMax(FAmmo[A_SHELLS], 4, FMaxAmmo[A_SHELLS]);
- FWeapon[WEAPON_SUPERPULEMET] := True;
+ FWeapon[WEAPON_SUPERCHAINGUN] := True;
Result := True;
if gFlash = 2 then Inc(FPickup, 5);
if a and g_Game_IsNet then MH_SEND_Sound(GameX, GameY, 'SOUND_ITEM_GETWEAPON');
end;
ITEM_AMMO_BACKPACK:
- if not(R_ITEM_BACKPACK in FRulez) or
+ if not(R_ITEM_BACKPACK in FInventory) or
(FAmmo[A_BULLETS] < FMaxAmmo[A_BULLETS]) or
(FAmmo[A_SHELLS] < FMaxAmmo[A_SHELLS]) or
(FAmmo[A_ROCKETS] < FMaxAmmo[A_ROCKETS]) or
if FAmmo[A_FUEL] < FMaxAmmo[A_FUEL] then
IncMax(FAmmo[A_FUEL], 50, FMaxAmmo[A_FUEL]);
- FRulez := FRulez + [R_ITEM_BACKPACK];
+ FInventory += [R_ITEM_BACKPACK];
Result := True;
remove := True;
- if gFlash = 2 then Inc(FPickup, 5);
+ if gFlash = 2 then FPickup += 5;
end;
ITEM_KEY_RED:
- if not(R_KEY_RED in FRulez) then
+ if not(R_KEY_RED in FInventory) then
begin
- Include(FRulez, R_KEY_RED);
+ FInventory += [R_KEY_RED];
Result := True;
remove := (gGameSettings.GameMode <> GM_COOP) and (g_Player_GetCount() < 2);
if gFlash = 2 then Inc(FPickup, 5);
end;
ITEM_KEY_GREEN:
- if not(R_KEY_GREEN in FRulez) then
+ if not(R_KEY_GREEN in FInventory) then
begin
- Include(FRulez, R_KEY_GREEN);
+ FInventory += [R_KEY_GREEN];
Result := True;
remove := (gGameSettings.GameMode <> GM_COOP) and (g_Player_GetCount() < 2);
if gFlash = 2 then Inc(FPickup, 5);
end;
ITEM_KEY_BLUE:
- if not(R_KEY_BLUE in FRulez) then
+ if not(R_KEY_BLUE in FInventory) then
begin
- Include(FRulez, R_KEY_BLUE);
+ FInventory += [R_KEY_BLUE];
Result := True;
remove := (gGameSettings.GameMode <> GM_COOP) and (g_Player_GetCount() < 2);
if gFlash = 2 then Inc(FPickup, 5);
end;
ITEM_SUIT:
- if FMegaRulez[MR_SUIT] < gTime+PLAYER_SUIT_TIME then
+ if FPowerups[MR_SUIT] < gTime+PLAYER_SUIT_TIME then
begin
- FMegaRulez[MR_SUIT] := gTime+PLAYER_SUIT_TIME;
+ FPowerups[MR_SUIT] := gTime+PLAYER_SUIT_TIME;
Result := True;
remove := True;
FFireTime := 0;
ITEM_MEDKIT_BLACK:
begin
- if not (R_BERSERK in FRulez) then
+ if not (R_BERSERK in FInventory) then
begin
- Include(FRulez, R_BERSERK);
+ FInventory += [R_BERSERK];
if (FBFGFireCounter = -1) then
begin
- FCurrWeap := WEAPON_KASTET;
+ FCurrWeap := WEAPON_IRONFIST;
resetWeaponQueue();
- FModel.SetWeapon(WEAPON_KASTET);
+ FModel.SetWeapon(WEAPON_IRONFIST);
end;
if gFlash <> 0 then
begin
- Inc(FPain, 100);
+ FPain += 100;
if gFlash = 2 then Inc(FPickup, 5);
end;
FBerserk := gTime+30000;
end;
ITEM_INVUL:
- if FMegaRulez[MR_INVUL] < gTime+PLAYER_INVUL_TIME then
+ if FPowerups[MR_INVUL] < gTime+PLAYER_INVUL_TIME then
begin
- FMegaRulez[MR_INVUL] := gTime+PLAYER_INVUL_TIME;
+ FPowerups[MR_INVUL] := gTime+PLAYER_INVUL_TIME;
FSpawnInvul := 0;
Result := True;
remove := True;
end;
ITEM_INVIS:
- if FMegaRulez[MR_INVIS] < gTime+PLAYER_INVIS_TIME then
+ if FPowerups[MR_INVIS] < gTime+PLAYER_INVIS_TIME then
begin
- FMegaRulez[MR_INVIS] := gTime+PLAYER_INVIS_TIME;
+ FPowerups[MR_INVIS] := gTime+PLAYER_INVIS_TIME;
Result := True;
remove := True;
if gFlash = 2 then Inc(FPickup, 5);
if (gGameSettings.GameType <> GT_SINGLE) and (gGameSettings.GameMode <> GM_COOP) then
begin // "Ñâîÿ èãðà"
// Áåðñåðê íå ñîõðàíÿåòñÿ ìåæäó óðîâíÿìè:
- FRulez := FRulez-[R_BERSERK];
+ FInventory -= [R_BERSERK];
end
else // "Îäèíî÷íàÿ èãðà"/"Êîîï"
begin
// Áåðñåðê è êëþ÷è íå ñîõðàíÿþòñÿ ìåæäó óðîâíÿìè:
- FRulez := FRulez-[R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE, R_BERSERK];
+ FInventory -= [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE, R_BERSERK];
end;
// Ïîëó÷àåì òî÷êó ñïàóíà èãðîêà:
end;
FWeapon[WEAPON_PISTOL] := True;
- FWeapon[WEAPON_KASTET] := True;
+ FWeapon[WEAPON_IRONFIST] := True;
FCurrWeap := WEAPON_PISTOL;
resetWeaponQueue();
if (gGameSettings.GameMode in [GM_DM, GM_TDM, GM_CTF]) and
LongBool(gGameSettings.Options and GAME_OPTION_DMKEYS) then
- FRulez := [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE]
+ FInventory := [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE]
else
- FRulez := [];
+ FInventory := [];
end;
// Ïîëó÷àåì êîîðäèíàòû òî÷êè âîçðîæäåíèÿ:
for a := Low(FTime) to High(FTime) do
FTime[a] := 0;
- for a := Low(FMegaRulez) to High(FMegaRulez) do
- FMegaRulez[a] := 0;
+ for a := Low(FPowerups) to High(FPowerups) do
+ FPowerups[a] := 0;
// Respawn invulnerability
if (gGameSettings.GameType <> GT_SINGLE) and (gGameSettings.SpawnInvul > 0) then
begin
- FMegaRulez[MR_INVUL] := gTime + gGameSettings.SpawnInvul * 1000;
- FSpawnInvul := FMegaRulez[MR_INVUL];
+ FPowerups[MR_INVUL] := gTime + gGameSettings.SpawnInvul * 1000;
+ FSpawnInvul := FPowerups[MR_INVUL];
end;
FDamageBuffer := 0;
if FAlive and (FObj.Y > Integer(gMapInfo.Height)+128) and AnyServer then
begin
// Îáíóëèòü äåéñòâèÿ ïðèìî÷åê, ÷òîáû ôîí ïðîïàë
- FMegaRulez[MR_SUIT] := 0;
- FMegaRulez[MR_INVUL] := 0;
- FMegaRulez[MR_INVIS] := 0;
+ FPowerups[MR_SUIT] := 0;
+ FPowerups[MR_INVUL] := 0;
+ FPowerups[MR_INVIS] := 0;
Kill(K_FALLKILL, 0, HIT_FALL);
end;
else
Dec(FBFGFireCounter);
- if (FMegaRulez[MR_SUIT] < gTime) and AnyServer then
+ if (FPowerups[MR_SUIT] < gTime) and AnyServer then
begin
b := g_GetAcidHit(FObj.X+PLAYER_RECT.X, FObj.Y+PLAYER_RECT.Y, PLAYER_RECT.Width, PLAYER_RECT.Height);
FFireTime := 0;
FFirePainTime := 0;
end
- else if FMegaRulez[MR_SUIT] >= gTime then
+ else if FPowerups[MR_SUIT] >= gTime then
begin
- if FMegaRulez[MR_SUIT] = gTime then
+ if FPowerups[MR_SUIT] = gTime then
FFireTime := 1;
FFirePainTime := 0;
end
end;
FFirePainTime := FFirePainTime - 1;
FFireTime := FFireTime - 1;
- if ((FFireTime mod 33) = 0) and (FMegaRulez[MR_INVUL] < gTime) then
+ if ((FFireTime mod 33) = 0) and (FPowerups[MR_INVUL] < gTime) then
FModel.PlaySound(MODELSOUND_PAIN, 1, FObj.X, FObj.Y);
if (FFireTime = 0) and g_Game_IsNet and g_Game_IsServer then
MH_SEND_PlayerStats(FUID);
begin
Result := 0;
- if R_KEY_RED in FRulez then Result := KEY_RED;
- if R_KEY_GREEN in FRulez then Result := Result or KEY_GREEN;
- if R_KEY_BLUE in FRulez then Result := Result or KEY_BLUE;
+ if R_KEY_RED in FInventory then Result := Result or KEY_RED;
+ if R_KEY_GREEN in FInventory then Result := Result or KEY_GREEN;
+ if R_KEY_BLUE in FInventory then Result := Result or KEY_BLUE;
if FTeam = TEAM_RED then Result := Result or KEY_REDTEAM;
if FTeam = TEAM_BLUE then Result := Result or KEY_BLUETEAM;
YD := AY;
case FCurrWeap of
- WEAPON_KASTET:
+ WEAPON_IRONFIST:
begin
visible := False;
DoPunch();
- if R_BERSERK in FRulez then
+ if R_BERSERK in FInventory then
begin
//g_Weapon_punch(FObj.X+FObj.Rect.X, FObj.Y+FObj.Rect.Y, 75, FUID);
locobj.X := FObj.X+FObj.Rect.X;
FFireAngle := FAngle;
end;
- WEAPON_SUPERPULEMET:
+ WEAPON_SUPERCHAINGUN:
begin
g_Sound_PlayExAt('SOUND_WEAPON_FIRESHOTGUN', Gamex, Gamey);
FFireAngle := FAngle;
else Result := 0;
end;
-procedure TPlayer.RememberState();
+procedure TPlayer.PreserveState();
var
i: Integer;
SavedState: TPlayerSavedState;
SavedState.Ammo[i] := FAmmo[i];
for i := Low(FMaxAmmo) to High(FMaxAmmo) do
SavedState.MaxAmmo[i] := FMaxAmmo[i];
- SavedState.Rulez := FRulez - [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE];
+ SavedState.Inventory := FInventory - [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE];
FSavedStateNum := -1;
for i := Low(SavedStates) to High(SavedStates) do
SavedStates[FSavedStateNum] := SavedState;
end;
-procedure TPlayer.RecallState();
+procedure TPlayer.RestoreState();
var
i: Integer;
SavedState: TPlayerSavedState;
FAmmo[i] := SavedState.Ammo[i];
for i := Low(FMaxAmmo) to High(FMaxAmmo) do
FMaxAmmo[i] := SavedState.MaxAmmo[i];
- FRulez := SavedState.Rulez;
+ FInventory := SavedState.Inventory;
if gGameSettings.GameType = GT_SERVER then
MH_SEND_PlayerStats(FUID);
// Âðåìÿ ïåðåçàðÿäêè îðóæèÿ
for i := WP_FIRST to WP_LAST do utils.writeInt(st, Word(FReloading[i]));
// Íàëè÷èå ðþêçàêà
- utils.writeBool(st, (R_ITEM_BACKPACK in FRulez));
+ utils.writeBool(st, (R_ITEM_BACKPACK in FInventory));
// Íàëè÷èå êðàñíîãî êëþ÷à
- utils.writeBool(st, (R_KEY_RED in FRulez));
+ utils.writeBool(st, (R_KEY_RED in FInventory));
// Íàëè÷èå çåëåíîãî êëþ÷à
- utils.writeBool(st, (R_KEY_GREEN in FRulez));
+ utils.writeBool(st, (R_KEY_GREEN in FInventory));
// Íàëè÷èå ñèíåãî êëþ÷à
- utils.writeBool(st, (R_KEY_BLUE in FRulez));
+ utils.writeBool(st, (R_KEY_BLUE in FInventory));
// Íàëè÷èå áåðñåðêà
- utils.writeBool(st, (R_BERSERK in FRulez));
+ utils.writeBool(st, (R_BERSERK in FInventory));
// Âðåìÿ äåéñòâèÿ ñïåöèàëüíûõ ïðåäìåòîâ
- for i := MR_SUIT to MR_MAX do utils.writeInt(st, LongWord(FMegaRulez[i]));
+ for i := MR_SUIT to MR_MAX do utils.writeInt(st, LongWord(FPowerups[i]));
// Âðåìÿ äî ïîâòîðíîãî ðåñïàóíà, ñìåíû îðóæèÿ, èñîëüçîâàíèÿ, çàõâàòà ôëàãà
for i := T_RESPAWN to T_FLAGCAP do utils.writeInt(st, LongWord(FTime[i]));
// Íàçâàíèå ìîäåëè
// Âðåìÿ ïåðåçàðÿäêè îðóæèÿ
for i := WP_FIRST to WP_LAST do FReloading[i] := utils.readWord(st);
// Íàëè÷èå ðþêçàêà
- if utils.readBool(st) then Include(FRulez, R_ITEM_BACKPACK);
+ if utils.readBool(st) then FInventory += [R_ITEM_BACKPACK];
// Íàëè÷èå êðàñíîãî êëþ÷à
- if utils.readBool(st) then Include(FRulez, R_KEY_RED);
+ if utils.readBool(st) then FInventory += [R_KEY_RED];
// Íàëè÷èå çåëåíîãî êëþ÷à
- if utils.readBool(st) then Include(FRulez, R_KEY_GREEN);
+ if utils.readBool(st) then FInventory += [R_KEY_GREEN];
// Íàëè÷èå ñèíåãî êëþ÷à
- if utils.readBool(st) then Include(FRulez, R_KEY_BLUE);
+ if utils.readBool(st) then FInventory += [R_KEY_BLUE];
// Íàëè÷èå áåðñåðêà
- if utils.readBool(st) then Include(FRulez, R_BERSERK);
+ if utils.readBool(st) then FInventory += [R_BERSERK];
// Âðåìÿ äåéñòâèÿ ñïåöèàëüíûõ ïðåäìåòîâ
- for i := MR_SUIT to MR_MAX do FMegaRulez[i] := utils.readLongWord(st);
+ for i := MR_SUIT to MR_MAX do FPowerups[i] := utils.readLongWord(st);
// Âðåìÿ äî ïîâòîðíîãî ðåñïàóíà, ñìåíû îðóæèÿ, èñîëüçîâàíèÿ, çàõâàòà ôëàãà
for i := T_RESPAWN to T_FLAGCAP do FTime[i] := utils.readLongWord(st);
// Íàçâàíèå ìîäåëè
end;
// Îáíîâëÿåì ìîäåëü èãðîêà
SetModel(str);
- if gGameSettings.GameMode in [GM_TDM, GM_CTF] then
- FModel.Color := TEAMCOLOR[FTeam]
- else
- FModel.Color := FColor;
+ if gGameSettings.GameMode in [GM_TDM, GM_CTF]
+ then FModel.Color := TEAMCOLOR[FTeam]
+ else FModel.Color := FColor;
end;
-procedure TPlayer.AllRulez(Health: Boolean);
+procedure TPlayer.TankRamboCheats(Health: Boolean);
var
a: Integer;
begin
for a := WP_FIRST to WP_LAST do FWeapon[a] := True;
for a := A_BULLETS to A_HIGH do FAmmo[a] := 30000;
- FRulez := FRulez+[R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE];
+ FInventory += [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE];
end;
procedure TPlayer.RestoreHealthArmor();
begin
case ItemType of
ITEM_SUIT:
- if FMegaRulez[MR_SUIT] < gTime+PLAYER_SUIT_TIME then
- begin
- FMegaRulez[MR_SUIT] := gTime+PLAYER_SUIT_TIME;
- end;
+ if FPowerups[MR_SUIT] < gTime+PLAYER_SUIT_TIME then
+ FPowerups[MR_SUIT] := gTime+PLAYER_SUIT_TIME;
ITEM_OXYGEN:
- if FAir < AIR_MAX then
- begin
- FAir := AIR_MAX;
- end;
+ if FAir < AIR_MAX then FAir := AIR_MAX;
ITEM_MEDKIT_BLACK:
+ begin
+ if not (R_BERSERK in FInventory) then
begin
- if not (R_BERSERK in FRulez) then
- begin
- Include(FRulez, R_BERSERK);
- if FBFGFireCounter < 1 then
- begin
- FCurrWeap := WEAPON_KASTET;
- resetWeaponQueue();
- FModel.SetWeapon(WEAPON_KASTET);
- end;
- if gFlash <> 0 then
- Inc(FPain, 100);
- FBerserk := gTime+30000;
- end;
- if FHealth < PLAYER_HP_SOFT then
+ FInventory += [R_BERSERK];
+ if FBFGFireCounter < 1 then
begin
- FHealth := PLAYER_HP_SOFT;
- FBerserk := gTime+30000;
+ FCurrWeap := WEAPON_IRONFIST;
+ resetWeaponQueue();
+ FModel.SetWeapon(WEAPON_IRONFIST);
end;
+ if gFlash <> 0 then FPain += 100;
+ FBerserk := gTime+30000;
+ end;
+ if FHealth < PLAYER_HP_SOFT then
+ begin
+ FHealth := PLAYER_HP_SOFT;
+ FBerserk := gTime+30000;
end;
+ end;
ITEM_INVUL:
- if FMegaRulez[MR_INVUL] < gTime+PLAYER_INVUL_TIME then
+ if FPowerups[MR_INVUL] < gTime+PLAYER_INVUL_TIME then
begin
- FMegaRulez[MR_INVUL] := gTime+PLAYER_INVUL_TIME;
+ FPowerups[MR_INVUL] := gTime+PLAYER_INVUL_TIME;
FSpawnInvul := 0;
end;
ITEM_INVIS:
- if FMegaRulez[MR_INVIS] < gTime+PLAYER_INVIS_TIME then
- begin
- FMegaRulez[MR_INVIS] := gTime+PLAYER_INVIS_TIME;
- end;
+ if FPowerups[MR_INVIS] < gTime+PLAYER_INVIS_TIME then
+ FPowerups[MR_INVIS] := gTime+PLAYER_INVIS_TIME;
ITEM_JETPACK:
- if FJetFuel < JET_MAX then
- begin
- FJetFuel := JET_MAX;
- end;
+ if FJetFuel < JET_MAX then FJetFuel := JET_MAX;
ITEM_MEDKIT_SMALL: if FHealth < PLAYER_HP_SOFT then IncMax(FHealth, 10, PLAYER_HP_SOFT);
ITEM_MEDKIT_LARGE: if FHealth < PLAYER_HP_SOFT then IncMax(FHealth, 25, PLAYER_HP_SOFT);
ITEM_WEAPON_ROCKETLAUNCHER: FWeapon[WEAPON_ROCKETLAUNCHER] := True;
ITEM_WEAPON_PLASMA: FWeapon[WEAPON_PLASMA] := True;
ITEM_WEAPON_BFG: FWeapon[WEAPON_BFG] := True;
- ITEM_WEAPON_SUPERPULEMET: FWeapon[WEAPON_SUPERPULEMET] := True;
+ ITEM_WEAPON_SUPERCHAINGUN: FWeapon[WEAPON_SUPERCHAINGUN] := True;
ITEM_WEAPON_FLAMETHROWER: FWeapon[WEAPON_FLAMETHROWER] := True;
ITEM_AMMO_BULLETS: if FAmmo[A_BULLETS] < FMaxAmmo[A_BULLETS] then IncMax(FAmmo[A_BULLETS], 10, FMaxAmmo[A_BULLETS]);
if FAmmo[A_ROCKETS] < FMaxAmmo[A_ROCKETS] then IncMax(FAmmo[A_ROCKETS], 1, FMaxAmmo[A_ROCKETS]);
if FAmmo[A_CELLS] < FMaxAmmo[A_CELLS] then IncMax(FAmmo[A_CELLS], 40, FMaxAmmo[A_CELLS]);
- FRulez := FRulez + [R_ITEM_BACKPACK];
+ FInventory += [R_ITEM_BACKPACK];
end;
- ITEM_KEY_RED: if not (R_KEY_RED in FRulez) then Include(FRulez, R_KEY_RED);
- ITEM_KEY_GREEN: if not (R_KEY_GREEN in FRulez) then Include(FRulez, R_KEY_GREEN);
- ITEM_KEY_BLUE: if not (R_KEY_BLUE in FRulez) then Include(FRulez, R_KEY_BLUE);
+ ITEM_KEY_RED: if not (R_KEY_RED in FInventory) then FInventory += [R_KEY_RED];
+ ITEM_KEY_GREEN: if not (R_KEY_GREEN in FInventory) then FInventory += [R_KEY_GREEN];
+ ITEM_KEY_BLUE: if not (R_KEY_BLUE in FInventory) then FInventory += [R_KEY_BLUE];
ITEM_BOTTLE: if FHealth < PLAYER_HP_LIMIT then IncMax(FHealth, 4, PLAYER_HP_LIMIT);
ITEM_HELMET: if FArmor < PLAYER_AP_LIMIT then IncMax(FArmor, 5, PLAYER_AP_LIMIT);
RemoveAIFlag('NEEDFIRE');
case FCurrWeap of
- WEAPON_PLASMA, WEAPON_SUPERPULEMET, WEAPON_CHAINGUN: PressKey(KEY_FIRE, 20);
- WEAPON_SAW, WEAPON_KASTET, WEAPON_FLAMETHROWER: PressKey(KEY_FIRE, 40);
+ WEAPON_PLASMA, WEAPON_SUPERCHAINGUN, WEAPON_CHAINGUN: PressKey(KEY_FIRE, 20);
+ WEAPON_SAW, WEAPON_IRONFIST, WEAPON_FLAMETHROWER: PressKey(KEY_FIRE, 40);
else PressKey(KEY_FIRE);
end;
end;
(gPlayers[a].FUID <> FUID) and
(not SameTeam(FUID, gPlayers[a].FUID)) and
(not gPlayers[a].NoTarget) and
- (gPlayers[a].FMegaRulez[MR_INVIS] < gTime) then
+ (gPlayers[a].FPowerups[MR_INVIS] < gTime) then
begin
if not TargetOnScreen(gPlayers[a].FObj.X + PLAYER_RECT.X,
gPlayers[a].FObj.Y + PLAYER_RECT.Y) then
begin // Öåëü - èãðîê
pla := g_Player_Get(Target.UID);
if (pla = nil) or (not pla.alive) or pla.NoTarget or
- (pla.FMegaRulez[MR_INVIS] >= gTime) then
+ (pla.FPowerups[MR_INVIS] >= gTime) then
Target.UID := 0; // òî çàáûòü öåëü
end
else
Jump(20);
// Âûáèðàåìñÿ èç êèñëîòû, åñëè íåò êîñòþìà, îáîæãëèñü, èëè ìàëî çäîðîâüÿ:
- if (FMegaRulez[MR_SUIT] < gTime) and ((FLastHit = HIT_ACID) or (Healthy() <= 1)) then
+ if (FPowerups[MR_SUIT] < gTime) and ((FLastHit = HIT_ACID) or (Healthy() <= 1)) then
if BodyInAcid(0, 0) then
Jump();
end;
WEAPON_ROCKETLAUNCHER: Result := FAmmo[A_ROCKETS] >= 1;
WEAPON_PLASMA: Result := FAmmo[A_CELLS] >= 10;
WEAPON_BFG: Result := FAmmo[A_CELLS] >= 40;
- WEAPON_SUPERPULEMET: Result := FAmmo[A_SHELLS] >= 1;
+ WEAPON_SUPERCHAINGUN: Result := FAmmo[A_SHELLS] >= 1;
WEAPON_FLAMETHROWER: Result := FAmmo[A_FUEL] >= 1;
else Result := True;
end;
function TBot.Healthy(): Byte;
begin
- if FMegaRulez[MR_INVUL] >= gTime then Result := 3
+ if FPowerups[MR_INVUL] >= gTime then Result := 3
else if (FHealth > 80) or ((FHealth > 50) and (FArmor > 20)) then Result := 3
else if (FHealth > 50) then Result := 2
else if (FHealth > 20) then Result := 1
index 6ffea1fbc3fc094fb714fb25df4ef20623235c4a..6ba81745efde669846f1f91ad94c9593174d7b59 100644 (file)
A_ATTACKDOWN = 8;
A_PAIN = 9;
// EXTENDED
- A_WALKATTACK = 10;
- A_WALKSEEUP = 11;
- A_WALKSEEDOWN = 12;
- A_WALKATTACKUP = 13;
- A_WALKATTACKDOWN = 14;
- A_FISTSTAND = 15;
- A_FISTWALK = 16;
- A_FISTATTACK = 17;
- A_FISTWALKATTACK = 18;
- A_FISTSEEUP = 19;
- A_FISTSEEDOWN = 20;
- A_FISTATTACKUP = 21;
- A_FISTATTACKDOWN = 22;
+ A_WALKATTACK = 10;
+ A_WALKSEEUP = 11;
+ A_WALKSEEDOWN = 12;
+ A_WALKATTACKUP = 13;
+ A_WALKATTACKDOWN = 14;
+ A_MELEESTAND = 15;
+ A_MELEEWALK = 16;
+ A_MELEEATTACK = 17;
+ A_MELEEWALKATTACK = 18;
+ A_MELEESEEUP = 19;
+ A_MELEESEEDOWN = 20;
+ A_MELEEATTACKUP = 21;
+ A_MELEEATTACKDOWN = 22;
A_LASTBASE = A_PAIN;
- A_LASTEXT = A_FISTATTACKDOWN;
+ A_LASTEXT = A_MELEEATTACKDOWN;
A_LAST = A_LASTEXT;
MODELSOUND_PAIN = 0;
'SeeUpAnim','SeeDownAnim','AttackUpAnim','AttackDownAnim','PainAnim',
// EXTENDED
'WalkAttackAnim', 'WalkSeeUpAnim', 'WalkSeeDownAnim',
- 'WalkAttackUpAnim', 'WalkAttackDownAnim', 'FistStandAnim', 'FistWalkAnim',
- 'FistAttackAnim', 'FistWalkAttackAnim', 'FistSeeUpAnim', 'FistSeeDownAnim',
- 'FistAttackUpAnim', 'FistAttackDownAnim');
+ 'WalkAttackUpAnim', 'WalkAttackDownAnim', 'MeleeStandAnim', 'MeleeWalkAnim',
+ 'MeleeAttackAnim', 'MeleeWalkAttackAnim', 'MeleeSeeUpAnim', 'MeleeSeeDownAnim',
+ 'MeleeAttackUpAnim', 'MeleeAttackDownAnim');
WeapNames: Array [WP_FIRST + 1..WP_LAST] of String =
('csaw', 'hgun', 'sg', 'ssg', 'mgun', 'rkt', 'plz', 'bfg', 'spl', 'flm');
index f8e9e02dcef20c79c8806218c459f79aa8056a93..8c11a474ff3928ea8466b19897f375993a360b49 100644 (file)
--- a/src/game/g_triggers.pas
+++ b/src/game/g_triggers.pas
begin
// Êèñëîòíûé óðîí íå íàíîñèòñÿ êîãäà åñòü êîñòþì
// "Âîäÿíîé" óðîí íå íàíîñèòñÿ êîãäà åñòü êèñëîðîä
- if not (((tgcKind = HIT_ACID) and (p.FMegaRulez[MR_SUIT] > gTime)) or
+ if not (((tgcKind = HIT_ACID) and (p.FPowerups[MR_SUIT] > gTime)) or
((tgcKind = HIT_WATER) and (p.Air > 0))) then
p.Damage(tgcAmount, 0, 0, 0, tgcKind);
if (tgcKind = HIT_FLAME) then p.CatchFire(0);
diff --git a/src/game/g_weapons.pas b/src/game/g_weapons.pas
index 86a9de5e15a45b072a8da158d9d981e84cc77dac..23898af54c2cd8dc5ceb1bec423edcbec626d448 100644 (file)
--- a/src/game/g_weapons.pas
+++ b/src/game/g_weapons.pas
procedure g_Weapon_AddDynLights();
const
- WEAPON_KASTET = 0;
+ WEAPON_IRONFIST = 0;
WEAPON_SAW = 1;
WEAPON_PISTOL = 2;
WEAPON_SHOTGUN1 = 3;
WEAPON_ROCKETLAUNCHER = 6;
WEAPON_PLASMA = 7;
WEAPON_BFG = 8;
- WEAPON_SUPERPULEMET = 9;
+ WEAPON_SUPERCHAINGUN = 9;
WEAPON_FLAMETHROWER = 10;
WEAPON_ZOMBY_PISTOL = 20;
WEAPON_IMP_FIRE = 21;
WEAPON_MANCUB_FIRE = 25;
WEAPON_SKEL_FIRE = 26;
- WP_FIRST = WEAPON_KASTET;
+ WP_FIRST = WEAPON_IRONFIST;
WP_LAST = WEAPON_FLAMETHROWER;
diff --git a/src/mapdef/mapdef.txt b/src/mapdef/mapdef.txt
index 6cd4c0c06db98c712cab4c83604184108a40cdd4..25590ccea4300b8235e42114951f07e8e9f39beb 100644 (file)
--- a/src/mapdef/mapdef.txt
+++ b/src/mapdef/mapdef.txt
ITEM_WEAPON_ROCKETLAUNCHER, // 15
ITEM_WEAPON_PLASMA, // 16
ITEM_WEAPON_BFG, // 17
- ITEM_WEAPON_SUPERPULEMET, // 18
+ ITEM_WEAPON_SUPERCHAINGUN, // 18
ITEM_AMMO_BULLETS, // 19
ITEM_AMMO_BULLETS_BOX, // 20
ITEM_AMMO_SHELLS, // 21
ITEM_KEY_RED, // 28
ITEM_KEY_GREEN, // 29
ITEM_KEY_BLUE, // 30
- ITEM_WEAPON_KASTET, // 31
+ ITEM_WEAPON_IRONFIST, // 31
ITEM_WEAPON_PISTOL, // 32
ITEM_BOTTLE, // 33
ITEM_HELMET, // 34
ITEM_INVIS, // 36
ITEM_WEAPON_FLAMETHROWER, // 37
ITEM_AMMO_FUELCAN, // 38
+ // backward compatibility aliases
+ ITEM_WEAPON_SUPERPULEMET = 18, // ITEM_WEAPON_SUPERCHAINGUN
//
ITEM_MAX = MAX, // store the last item's id in here use this in for loops
}
diff --git a/src/shared/mapdef.inc b/src/shared/mapdef.inc
index e159c5d9a689d36244901a66834a86320ea19353..d2d5f7d5d95586a0946ecf48940ab451787730a6 100644 (file)
--- a/src/shared/mapdef.inc
+++ b/src/shared/mapdef.inc
ITEM_WEAPON_ROCKETLAUNCHER = 15;
ITEM_WEAPON_PLASMA = 16;
ITEM_WEAPON_BFG = 17;
- ITEM_WEAPON_SUPERPULEMET = 18;
+ ITEM_WEAPON_SUPERCHAINGUN = 18;
ITEM_AMMO_BULLETS = 19;
ITEM_AMMO_BULLETS_BOX = 20;
ITEM_AMMO_SHELLS = 21;
ITEM_KEY_RED = 28;
ITEM_KEY_GREEN = 29;
ITEM_KEY_BLUE = 30;
- ITEM_WEAPON_KASTET = 31;
+ ITEM_WEAPON_IRONFIST = 31;
ITEM_WEAPON_PISTOL = 32;
ITEM_BOTTLE = 33;
ITEM_HELMET = 34;
ITEM_INVIS = 36;
ITEM_WEAPON_FLAMETHROWER = 37;
ITEM_AMMO_FUELCAN = 38;
+ ITEM_WEAPON_SUPERPULEMET = 18;
ITEM_MAX = 38;
// ItemOption
#114#118#101#115#32#98#111#116#104#32#97#115#32#102#111#114#109#97#116#32+
#100#101#115#99#114#105#112#116#105#111#110#32#97#110#100#32#97#115#32#116+
#101#109#112#108#97#116#101#32#102#111#114#32#99#111#100#101#32#103#101#110+
- #101#114#97#116#105#111#110#10#47#47#32#116#104#101#32#101#110#103#105#110+
- #101#32#119#105#108#108#32#117#115#101#32#116#104#105#115#32#100#101#115#99+
- #114#105#112#116#105#111#110#32#116#111#32#112#97#114#115#101#32#108#101#103+
- #97#99#121#32#98#105#110#97#114#121#32#109#97#112#32#102#111#114#109#97#116+
- #10#10#47#47#32#110#111#116#101#115#58#10#47#47#32#32#42#32#102#105#101#108+
- #100#32#119#105#116#104#111#117#116#32#111#102#102#115#101#116#32#105#115#32+
- #110#111#116#32#105#110#32#98#105#110#97#114#121#32#102#111#114#109#97#116+
- #10#47#47#32#32#42#32#102#105#101#108#100#115#32#119#105#116#104#32#96#119+
- #114#105#116#101#100#101#102#97#117#108#116#96#32#119#105#108#108#32#98#101+
- #32#119#114#105#116#116#101#110#32#101#118#101#110#32#105#102#32#116#104#101+
- #121#32#99#111#110#116#97#105#110#32#100#101#102#97#117#108#116#32#118#97+
- #108#117#101#115#10#47#47#32#32#42#32#102#105#101#108#100#115#32#119#105#116+
- #104#32#96#105#110#116#101#114#110#97#108#96#32#119#111#110#39#116#32#98#101+
- #32#119#114#105#116#116#101#110#32#116#111#32#97#110#121#32#102#105#108#101+
- #32#101#118#101#114#32#40#97#110#100#32#119#111#110#39#116#32#98#101#32#114+
- #101#97#100#41#10#47#47#32#32#42#32#96#117#98#121#116#101#96#32#105#115#32+
- #117#110#115#105#103#110#101#100#32#98#121#116#101#44#32#97#110#100#32#96#98+
- #121#116#101#96#32#105#115#32#115#105#103#110#101#100#32#98#121#116#101#10+
- #47#47#32#32#42#32#97#108#108#32#115#116#114#105#110#103#115#32#97#114#101+
- #32#105#110#32#117#116#102#45#56#10#47#47#32#32#42#32#115#116#114#117#99#116+
- #32#119#105#116#104#32#96#104#101#97#100#101#114#96#32#102#108#97#103#32#119+
- #105#108#108#32#99#111#110#116#97#105#110#32#97#108#108#32#111#116#104#101+
- #114#32#115#116#114#117#99#116#115#32#97#110#100#32#105#116#39#115#32#111+
- #119#110#32#102#105#101#108#100#115#32#97#115#32#116#111#112#45#108#101#118+
- #101#108#32#101#110#116#105#116#105#101#115#10#47#47#32#32#42#32#105#110#32+
- #98#105#110#97#114#121#44#32#96#115#105#122#101#96#32#105#115#32#116#119#111+
- #32#117#115#104#111#114#116#115#10#47#47#32#32#42#32#96#97#115#32#120#121#96+
- #32#119#105#108#108#32#117#115#101#32#96#88#96#32#97#110#100#32#96#89#96#32+
- #102#111#114#32#112#111#105#110#116#115#10#47#47#32#32#42#32#96#97#115#32+
- #116#120#121#96#32#119#105#108#108#32#117#115#101#32#96#116#88#96#32#97#110+
- #100#32#96#116#89#96#32#102#111#114#32#112#111#105#110#116#115#10#47#47#32+
- #32#42#32#96#97#115#32#119#104#96#32#119#105#108#108#32#117#115#101#32#96#87+
- #105#100#116#104#96#32#97#110#100#32#96#72#101#105#103#104#116#96#32#102#111+
- #114#32#115#105#122#101#10#47#47#32#32#42#32#96#97#115#32#116#119#104#96#32+
- #119#105#108#108#32#117#115#101#32#96#116#87#105#100#116#104#96#32#97#110+
- #100#32#96#116#72#101#105#103#104#116#96#32#102#111#114#32#115#105#122#101+
- #10#47#47#32#32#42#32#96#97#115#32#109#111#110#115#116#101#114#105#100#96#58+
- #32#115#112#101#99#105#97#108#32#104#97#99#107#32#102#111#114#32#116#114#105+
- #103#103#101#114#115#58#32#109#111#110#115#116#101#114#32#114#101#99#111#114+
- #100#32#110#117#109#98#101#114#43#49#32#105#110#32#98#105#110#97#114#121#32+
- #40#115#111#32#48#32#109#101#97#110#115#32#34#110#111#110#101#34#41#10#47#47+
- #32#32#42#32#96#98#105#110#98#108#111#99#107#96#32#97#110#100#32#96#111#102+
- #102#115#101#116#96#32#40#97#110#100#32#96#91#93#96#32#97#114#114#97#121#115+
- #41#32#97#114#101#32#117#115#101#100#32#116#111#32#112#97#114#115#101#32#108+
- #101#103#97#99#121#32#98#105#110#97#114#121#32#102#111#114#109#97#116#10#10+
+ #101#114#97#116#105#111#110#13#10#47#47#32#116#104#101#32#101#110#103#105+
+ #110#101#32#119#105#108#108#32#117#115#101#32#116#104#105#115#32#100#101#115+
+ #99#114#105#112#116#105#111#110#32#116#111#32#112#97#114#115#101#32#108#101+
+ #103#97#99#121#32#98#105#110#97#114#121#32#109#97#112#32#102#111#114#109#97+
+ #116#13#10#13#10#47#47#32#110#111#116#101#115#58#13#10#47#47#32#32#42#32#102+
+ #105#101#108#100#32#119#105#116#104#111#117#116#32#111#102#102#115#101#116+
+ #32#105#115#32#110#111#116#32#105#110#32#98#105#110#97#114#121#32#102#111+
+ #114#109#97#116#13#10#47#47#32#32#42#32#102#105#101#108#100#115#32#119#105+
+ #116#104#32#96#119#114#105#116#101#100#101#102#97#117#108#116#96#32#119#105+
+ #108#108#32#98#101#32#119#114#105#116#116#101#110#32#101#118#101#110#32#105+
+ #102#32#116#104#101#121#32#99#111#110#116#97#105#110#32#100#101#102#97#117+
+ #108#116#32#118#97#108#117#101#115#13#10#47#47#32#32#42#32#102#105#101#108+
+ #100#115#32#119#105#116#104#32#96#105#110#116#101#114#110#97#108#96#32#119+
+ #111#110#39#116#32#98#101#32#119#114#105#116#116#101#110#32#116#111#32#97+
+ #110#121#32#102#105#108#101#32#101#118#101#114#32#40#97#110#100#32#119#111+
+ #110#39#116#32#98#101#32#114#101#97#100#41#13#10#47#47#32#32#42#32#96#117#98+
+ #121#116#101#96#32#105#115#32#117#110#115#105#103#110#101#100#32#98#121#116+
+ #101#44#32#97#110#100#32#96#98#121#116#101#96#32#105#115#32#115#105#103#110+
+ #101#100#32#98#121#116#101#13#10#47#47#32#32#42#32#97#108#108#32#115#116#114+
+ #105#110#103#115#32#97#114#101#32#105#110#32#117#116#102#45#56#13#10#47#47+
+ #32#32#42#32#115#116#114#117#99#116#32#119#105#116#104#32#96#104#101#97#100+
+ #101#114#96#32#102#108#97#103#32#119#105#108#108#32#99#111#110#116#97#105+
+ #110#32#97#108#108#32#111#116#104#101#114#32#115#116#114#117#99#116#115#32+
+ #97#110#100#32#105#116#39#115#32#111#119#110#32#102#105#101#108#100#115#32+
+ #97#115#32#116#111#112#45#108#101#118#101#108#32#101#110#116#105#116#105#101+
+ #115#13#10#47#47#32#32#42#32#105#110#32#98#105#110#97#114#121#44#32#96#115+
+ #105#122#101#96#32#105#115#32#116#119#111#32#117#115#104#111#114#116#115#13+
+ #10#47#47#32#32#42#32#96#97#115#32#120#121#96#32#119#105#108#108#32#117#115+
+ #101#32#96#88#96#32#97#110#100#32#96#89#96#32#102#111#114#32#112#111#105#110+
+ #116#115#13#10#47#47#32#32#42#32#96#97#115#32#116#120#121#96#32#119#105#108+
+ #108#32#117#115#101#32#96#116#88#96#32#97#110#100#32#96#116#89#96#32#102#111+
+ #114#32#112#111#105#110#116#115#13#10#47#47#32#32#42#32#96#97#115#32#119#104+
+ #96#32#119#105#108#108#32#117#115#101#32#96#87#105#100#116#104#96#32#97#110+
+ #100#32#96#72#101#105#103#104#116#96#32#102#111#114#32#115#105#122#101#13#10+
+ #47#47#32#32#42#32#96#97#115#32#116#119#104#96#32#119#105#108#108#32#117#115+
+ #101#32#96#116#87#105#100#116#104#96#32#97#110#100#32#96#116#72#101#105#103+
+ #104#116#96#32#102#111#114#32#115#105#122#101#13#10#47#47#32#32#42#32#96#97+
+ #115#32#109#111#110#115#116#101#114#105#100#96#58#32#115#112#101#99#105#97+
+ #108#32#104#97#99#107#32#102#111#114#32#116#114#105#103#103#101#114#115#58+
+ #32#109#111#110#115#116#101#114#32#114#101#99#111#114#100#32#110#117#109#98+
+ #101#114#43#49#32#105#110#32#98#105#110#97#114#121#32#40#115#111#32#48#32+
+ #109#101#97#110#115#32#34#110#111#110#101#34#41#13#10#47#47#32#32#42#32#96+
+ #98#105#110#98#108#111#99#107#96#32#97#110#100#32#96#111#102#102#115#101#116+
+ #96#32#40#97#110#100#32#96#91#93#96#32#97#114#114#97#121#115#41#32#97#114+
+ #101#32#117#115#101#100#32#116#111#32#112#97#114#115#101#32#108#101#103#97+
+ #99#121#32#98#105#110#97#114#121#32#102#111#114#109#97#116#13#10#13#10#47#47+
#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+
#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+
#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+
- #47#47#47#47#47#10#47#47#32#109#97#105#110#32#98#108#111#99#107#115#10#34+
+ #47#47#47#13#10#47#47#32#109#97#105#110#32#98#108#111#99#107#115#13#10#34+
#109#97#112#34#32#115#105#122#101#32#52#53#50#32#98#121#116#101#115#32#104+
- #101#97#100#101#114#32#98#105#110#98#108#111#99#107#32#55#32#123#10#32#32#34+
- #110#97#109#101#34#32#116#121#112#101#32#99#104#97#114#91#51#50#93#32#111+
+ #101#97#100#101#114#32#98#105#110#98#108#111#99#107#32#55#32#123#13#10#32#32+
+ #34#110#97#109#101#34#32#116#121#112#101#32#99#104#97#114#91#51#50#93#32#111+
#102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116+
- #32#116#105#112#32#34#109#97#112#32#110#97#109#101#34#59#10#32#32#34#97#117+
- #116#104#111#114#34#32#116#121#112#101#32#99#104#97#114#91#51#50#93#32#111+
- #102#102#115#101#116#32#51#50#32#100#101#102#97#117#108#116#32#34#34#32#119+
- #114#105#116#101#100#101#102#97#117#108#116#32#116#105#112#32#34#109#97#112+
- #32#97#117#116#104#111#114#34#59#10#32#32#34#100#101#115#99#114#105#112#116+
- #105#111#110#34#32#116#121#112#101#32#99#104#97#114#91#50#53#54#93#32#111+
- #102#102#115#101#116#32#54#52#32#100#101#102#97#117#108#116#32#34#34#32#119+
- #114#105#116#101#100#101#102#97#117#108#116#32#116#105#112#32#34#109#97#112+
- #32#100#101#115#99#114#105#112#116#105#111#110#34#59#10#32#32#34#109#117#115+
- #105#99#34#32#116#121#112#101#32#99#104#97#114#91#54#52#93#32#111#102#102+
- #115#101#116#32#51#50#48#32#100#101#102#97#117#108#116#32#39#83#116#97#110+
- #100#97#114#116#46#119#97#100#58#68#50#68#77#85#83#92#208#159#208#160#208+
- #158#208#161#208#162#208#158#208#162#208#144#39#32#119#114#105#116#101#100+
- #101#102#97#117#108#116#32#116#105#112#32#34#109#117#115#105#99#32#114#101+
- #115#111#117#114#99#101#34#59#10#32#32#34#115#107#121#34#32#116#121#112#101+
- #32#99#104#97#114#91#54#52#93#32#111#102#102#115#101#116#32#51#56#52#32#100+
- #101#102#97#117#108#116#32#39#83#116#97#110#100#97#114#116#46#119#97#100#58+
- #68#50#68#83#75#89#92#82#83#75#89#49#39#32#119#114#105#116#101#100#101#102+
- #97#117#108#116#32#116#105#112#32#34#115#107#121#32#114#101#115#111#117#114+
- #99#101#34#59#10#32#32#34#115#105#122#101#34#32#116#121#112#101#32#115#105+
- #122#101#32#111#102#102#115#101#116#32#52#52#56#32#97#115#32#119#104#32#119+
- #114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#47#47#32#110#111#116+
- #32#105#110#32#98#105#110#97#114#121#10#32#32#47#47#32#116#101#109#112#111+
- #114#97#114#121#44#32#102#111#114#32#108#105#103#104#116#105#110#103#32#101+
- #120#112#101#114#105#109#101#110#116#115#10#32#32#34#108#105#103#104#116#95+
- #97#109#98#105#101#110#116#34#32#116#121#112#101#32#99#111#108#111#114#32+
- #100#101#102#97#117#108#116#32#40#48#32#48#32#48#32#50#53#53#41#32#116#105+
- #112#32#34#97#109#98#105#101#110#116#32#108#105#103#104#116#32#102#111#114+
- #32#116#104#101#32#119#104#111#108#101#32#108#101#118#101#108#34#59#10#125+
- #10#10#34#116#101#120#116#117#114#101#34#32#115#105#122#101#32#54#53#32#98+
- #121#116#101#115#32#98#105#110#98#108#111#99#107#32#49#32#123#10#32#32#34+
- #112#97#116#104#34#32#116#121#112#101#32#99#104#97#114#91#54#52#93#32#111+
- #102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116+
- #59#10#32#32#34#97#110#105#109#97#116#101#100#34#32#116#121#112#101#32#98+
- #111#111#108#32#111#102#102#115#101#116#32#54#52#32#100#101#102#97#117#108+
- #116#32#102#97#108#115#101#59#10#125#10#10#34#112#97#110#101#108#34#32#115+
- #105#122#101#32#49#56#32#98#121#116#101#115#32#98#105#110#98#108#111#99#107+
- #32#50#32#123#10#32#32#34#112#111#115#105#116#105#111#110#34#32#116#121#112+
- #101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32#97#115#32+
- #120#121#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+
- #115#105#122#101#34#32#116#121#112#101#32#115#105#122#101#32#111#102#102#115+
- #101#116#32#56#32#97#115#32#119#104#32#97#115#32#119#104#32#119#114#105#116+
- #101#100#101#102#97#117#108#116#59#10#32#32#34#116#101#120#116#117#114#101+
- #34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116+
- #32#49#50#32#116#101#120#116#117#114#101#32#119#114#105#116#101#100#101#102+
- #97#117#108#116#59#10#32#32#34#116#121#112#101#34#32#116#121#112#101#32#117+
- #115#104#111#114#116#32#111#102#102#115#101#116#32#49#52#32#98#105#116#115+
- #101#116#32#117#110#105#113#117#101#32#80#97#110#101#108#84#121#112#101#32+
- #119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#97#108#112+
- #104#97#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+
- #116#32#49#54#32#100#101#102#97#117#108#116#32#48#59#10#32#32#34#102#108#97+
- #103#115#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+
- #116#32#49#55#32#98#105#116#115#101#116#32#80#97#110#101#108#70#108#97#103+
- #32#100#101#102#97#117#108#116#32#80#65#78#69#76#95#70#76#65#71#95#78#79#78+
- #69#59#10#32#32#47#47#32#109#111#118#105#110#103#32#112#108#97#116#102#111+
- #114#109#32#111#112#116#105#111#110#115#44#32#110#111#116#32#105#110#32#98+
- #105#110#97#114#121#10#32#32#34#109#111#118#101#95#115#112#101#101#100#34#32+
- #116#121#112#101#32#112#111#105#110#116#32#100#101#102#97#117#108#116#32#40+
- #48#32#48#41#59#10#32#32#34#115#105#122#101#95#115#112#101#101#100#34#32#116+
- #121#112#101#32#112#111#105#110#116#32#100#101#102#97#117#108#116#32#40#48+
- #32#48#41#59#32#47#47#32#97#108#97#115#44#32#96#115#105#122#101#96#32#99#97+
- #110#110#111#116#32#98#101#32#110#101#103#97#116#105#118#101#10#32#32#34#109+
- #111#118#101#95#115#116#97#114#116#34#32#116#121#112#101#32#112#111#105#110+
- #116#32#100#101#102#97#117#108#116#32#40#48#32#48#41#59#10#32#32#34#109#111+
- #118#101#95#101#110#100#34#32#116#121#112#101#32#112#111#105#110#116#32#100+
- #101#102#97#117#108#116#32#40#48#32#48#41#59#10#32#32#34#115#105#122#101#95+
- #101#110#100#34#32#116#121#112#101#32#115#105#122#101#32#100#101#102#97#117+
- #108#116#32#40#48#32#48#41#59#10#32#32#34#109#111#118#101#95#97#99#116#105+
+ #32#116#105#112#32#34#109#97#112#32#110#97#109#101#34#59#13#10#32#32#34#97+
+ #117#116#104#111#114#34#32#116#121#112#101#32#99#104#97#114#91#51#50#93#32+
+ #111#102#102#115#101#116#32#51#50#32#100#101#102#97#117#108#116#32#34#34#32+
+ #119#114#105#116#101#100#101#102#97#117#108#116#32#116#105#112#32#34#109#97+
+ #112#32#97#117#116#104#111#114#34#59#13#10#32#32#34#100#101#115#99#114#105+
+ #112#116#105#111#110#34#32#116#121#112#101#32#99#104#97#114#91#50#53#54#93+
+ #32#111#102#102#115#101#116#32#54#52#32#100#101#102#97#117#108#116#32#34#34+
+ #32#119#114#105#116#101#100#101#102#97#117#108#116#32#116#105#112#32#34#109+
+ #97#112#32#100#101#115#99#114#105#112#116#105#111#110#34#59#13#10#32#32#34+
+ #109#117#115#105#99#34#32#116#121#112#101#32#99#104#97#114#91#54#52#93#32+
+ #111#102#102#115#101#116#32#51#50#48#32#100#101#102#97#117#108#116#32#39#83+
+ #116#97#110#100#97#114#116#46#119#97#100#58#68#50#68#77#85#83#92#208#159#208+
+ #160#208#158#208#161#208#162#208#158#208#162#208#144#39#32#119#114#105#116+
+ #101#100#101#102#97#117#108#116#32#116#105#112#32#34#109#117#115#105#99#32+
+ #114#101#115#111#117#114#99#101#34#59#13#10#32#32#34#115#107#121#34#32#116+
+ #121#112#101#32#99#104#97#114#91#54#52#93#32#111#102#102#115#101#116#32#51+
+ #56#52#32#100#101#102#97#117#108#116#32#39#83#116#97#110#100#97#114#116#46+
+ #119#97#100#58#68#50#68#83#75#89#92#82#83#75#89#49#39#32#119#114#105#116#101+
+ #100#101#102#97#117#108#116#32#116#105#112#32#34#115#107#121#32#114#101#115+
+ #111#117#114#99#101#34#59#13#10#32#32#34#115#105#122#101#34#32#116#121#112+
+ #101#32#115#105#122#101#32#111#102#102#115#101#116#32#52#52#56#32#97#115#32+
+ #119#104#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#47+
+ #47#32#110#111#116#32#105#110#32#98#105#110#97#114#121#13#10#32#32#47#47#32+
+ #116#101#109#112#111#114#97#114#121#44#32#102#111#114#32#108#105#103#104#116+
+ #105#110#103#32#101#120#112#101#114#105#109#101#110#116#115#13#10#32#32#34+
+ #108#105#103#104#116#95#97#109#98#105#101#110#116#34#32#116#121#112#101#32+
+ #99#111#108#111#114#32#100#101#102#97#117#108#116#32#40#48#32#48#32#48#32#50+
+ #53#53#41#32#116#105#112#32#34#97#109#98#105#101#110#116#32#108#105#103#104+
+ #116#32#102#111#114#32#116#104#101#32#119#104#111#108#101#32#108#101#118#101+
+ #108#34#59#13#10#125#13#10#13#10#34#116#101#120#116#117#114#101#34#32#115+
+ #105#122#101#32#54#53#32#98#121#116#101#115#32#98#105#110#98#108#111#99#107+
+ #32#49#32#123#13#10#32#32#34#112#97#116#104#34#32#116#121#112#101#32#99#104+
+ #97#114#91#54#52#93#32#111#102#102#115#101#116#32#48#32#119#114#105#116#101+
+ #100#101#102#97#117#108#116#59#13#10#32#32#34#97#110#105#109#97#116#101#100+
+ #34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#54#52+
+ #32#100#101#102#97#117#108#116#32#102#97#108#115#101#59#13#10#125#13#10#13+
+ #10#34#112#97#110#101#108#34#32#115#105#122#101#32#49#56#32#98#121#116#101+
+ #115#32#98#105#110#98#108#111#99#107#32#50#32#123#13#10#32#32#34#112#111#115+
+ #105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102+
+ #102#115#101#116#32#48#32#97#115#32#120#121#32#119#114#105#116#101#100#101+
+ #102#97#117#108#116#59#13#10#32#32#34#115#105#122#101#34#32#116#121#112#101+
+ #32#115#105#122#101#32#111#102#102#115#101#116#32#56#32#97#115#32#119#104#32+
+ #97#115#32#119#104#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+
+ #10#32#32#34#116#101#120#116#117#114#101#34#32#116#121#112#101#32#117#115+
+ #104#111#114#116#32#111#102#102#115#101#116#32#49#50#32#116#101#120#116#117+
+ #114#101#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34+
+ #116#121#112#101#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102+
+ #102#115#101#116#32#49#52#32#98#105#116#115#101#116#32#117#110#105#113#117+
+ #101#32#80#97#110#101#108#84#121#112#101#32#119#114#105#116#101#100#101#102+
+ #97#117#108#116#59#13#10#32#32#34#97#108#112#104#97#34#32#116#121#112#101#32+
+ #117#98#121#116#101#32#111#102#102#115#101#116#32#49#54#32#100#101#102#97+
+ #117#108#116#32#48#59#13#10#32#32#34#102#108#97#103#115#34#32#116#121#112+
+ #101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#55#32#98#105#116+
+ #115#101#116#32#80#97#110#101#108#70#108#97#103#32#100#101#102#97#117#108+
+ #116#32#80#65#78#69#76#95#70#76#65#71#95#78#79#78#69#59#13#10#32#32#47#47#32+
+ #109#111#118#105#110#103#32#112#108#97#116#102#111#114#109#32#111#112#116+
+ #105#111#110#115#44#32#110#111#116#32#105#110#32#98#105#110#97#114#121#13#10+
+ #32#32#34#109#111#118#101#95#115#112#101#101#100#34#32#116#121#112#101#32+
+ #112#111#105#110#116#32#100#101#102#97#117#108#116#32#40#48#32#48#41#59#13+
+ #10#32#32#34#115#105#122#101#95#115#112#101#101#100#34#32#116#121#112#101#32+
+ #112#111#105#110#116#32#100#101#102#97#117#108#116#32#40#48#32#48#41#59#32+
+ #47#47#32#97#108#97#115#44#32#96#115#105#122#101#96#32#99#97#110#110#111#116+
+ #32#98#101#32#110#101#103#97#116#105#118#101#13#10#32#32#34#109#111#118#101+
+ #95#115#116#97#114#116#34#32#116#121#112#101#32#112#111#105#110#116#32#100+
+ #101#102#97#117#108#116#32#40#48#32#48#41#59#13#10#32#32#34#109#111#118#101+
+ #95#101#110#100#34#32#116#121#112#101#32#112#111#105#110#116#32#100#101#102+
+ #97#117#108#116#32#40#48#32#48#41#59#13#10#32#32#34#115#105#122#101#95#101+
+ #110#100#34#32#116#121#112#101#32#115#105#122#101#32#100#101#102#97#117#108+
+ #116#32#40#48#32#48#41#59#13#10#32#32#34#109#111#118#101#95#97#99#116#105+
#118#101#34#32#116#121#112#101#32#98#111#111#108#32#100#101#102#97#117#108+
- #116#32#102#97#108#115#101#59#10#32#32#34#109#111#118#101#95#111#110#99#101+
- #34#32#116#121#112#101#32#98#111#111#108#32#100#101#102#97#117#108#116#32+
- #102#97#108#115#101#59#10#32#32#34#101#110#100#95#112#111#115#95#116#114#105+
- #103#103#101#114#34#32#116#114#105#103#103#101#114#32#100#101#102#97#117#108+
- #116#32#110#117#108#108#59#10#32#32#34#101#110#100#95#115#105#122#101#95#116+
+ #116#32#102#97#108#115#101#59#13#10#32#32#34#109#111#118#101#95#111#110#99+
+ #101#34#32#116#121#112#101#32#98#111#111#108#32#100#101#102#97#117#108#116+
+ #32#102#97#108#115#101#59#13#10#32#32#34#101#110#100#95#112#111#115#95#116+
#114#105#103#103#101#114#34#32#116#114#105#103#103#101#114#32#100#101#102#97+
- #117#108#116#32#110#117#108#108#59#10#125#10#10#34#105#116#101#109#34#32#115+
- #105#122#101#32#49#48#32#98#121#116#101#115#32#98#105#110#98#108#111#99#107+
- #32#51#32#123#10#32#32#34#112#111#115#105#116#105#111#110#34#32#116#121#112+
- #101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32#97#115#32+
- #120#121#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+
- #116#121#112#101#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+
- #115#101#116#32#56#32#101#110#117#109#32#73#116#101#109#32#119#114#105#116+
- #101#100#101#102#97#117#108#116#59#10#32#32#34#111#112#116#105#111#110#115+
- #34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32+
- #57#32#98#105#116#115#101#116#32#73#116#101#109#79#112#116#105#111#110#32+
- #100#101#102#97#117#108#116#32#73#84#69#77#95#79#80#84#73#79#78#95#78#79#78+
- #69#59#10#125#10#10#34#109#111#110#115#116#101#114#34#32#115#105#122#101#32+
- #49#48#32#98#121#116#101#115#32#98#105#110#98#108#111#99#107#32#53#32#123#10+
+ #117#108#116#32#110#117#108#108#59#13#10#32#32#34#101#110#100#95#115#105#122+
+ #101#95#116#114#105#103#103#101#114#34#32#116#114#105#103#103#101#114#32#100+
+ #101#102#97#117#108#116#32#110#117#108#108#59#13#10#125#13#10#13#10#34#105+
+ #116#101#109#34#32#115#105#122#101#32#49#48#32#98#121#116#101#115#32#98#105+
+ #110#98#108#111#99#107#32#51#32#123#13#10#32#32#34#112#111#115#105#116#105+
+ #111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102#102#115#101+
+ #116#32#48#32#97#115#32#120#121#32#119#114#105#116#101#100#101#102#97#117+
+ #108#116#59#13#10#32#32#34#116#121#112#101#34#32#116#121#112#101#32#117#98+
+ #121#116#101#32#111#102#102#115#101#116#32#56#32#101#110#117#109#32#73#116+
+ #101#109#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34+
+ #111#112#116#105#111#110#115#34#32#116#121#112#101#32#117#98#121#116#101#32+
+ #111#102#102#115#101#116#32#57#32#98#105#116#115#101#116#32#73#116#101#109+
+ #79#112#116#105#111#110#32#100#101#102#97#117#108#116#32#73#84#69#77#95#79+
+ #80#84#73#79#78#95#78#79#78#69#59#13#10#125#13#10#13#10#34#109#111#110#115+
+ #116#101#114#34#32#115#105#122#101#32#49#48#32#98#121#116#101#115#32#98#105+
+ #110#98#108#111#99#107#32#53#32#123#13#10#32#32#34#112#111#115#105#116#105+
+ #111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102#102#115#101+
+ #116#32#48#32#97#115#32#120#121#32#119#114#105#116#101#100#101#102#97#117+
+ #108#116#59#13#10#32#32#34#116#121#112#101#34#32#116#121#112#101#32#117#98+
+ #121#116#101#32#111#102#102#115#101#116#32#56#32#101#110#117#109#32#77#111+
+ #110#115#116#101#114#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+
+ #10#32#32#34#100#105#114#101#99#116#105#111#110#34#32#116#121#112#101#32#117+
+ #98#121#116#101#32#111#102#102#115#101#116#32#57#32#101#110#117#109#32#68+
+ #105#114#84#121#112#101#32#100#101#102#97#117#108#116#32#68#73#82#95#76#69+
+ #70#84#59#13#10#125#13#10#13#10#34#97#114#101#97#34#32#115#105#122#101#32#49+
+ #48#32#98#121#116#101#115#32#98#105#110#98#108#111#99#107#32#52#32#123#13#10+
#32#32#34#112#111#115#105#116#105#111#110#34#32#116#121#112#101#32#112#111+
#105#110#116#32#111#102#102#115#101#116#32#48#32#97#115#32#120#121#32#119+
- #114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#116#121#112#101+
- #34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32+
- #56#32#101#110#117#109#32#77#111#110#115#116#101#114#32#119#114#105#116#101+
- #100#101#102#97#117#108#116#59#10#32#32#34#100#105#114#101#99#116#105#111+
- #110#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+
- #32#57#32#101#110#117#109#32#68#105#114#84#121#112#101#32#100#101#102#97#117+
- #108#116#32#68#73#82#95#76#69#70#84#59#10#125#10#10#34#97#114#101#97#34#32+
- #115#105#122#101#32#49#48#32#98#121#116#101#115#32#98#105#110#98#108#111#99+
- #107#32#52#32#123#10#32#32#34#112#111#115#105#116#105#111#110#34#32#116#121+
- #112#101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32#97#115+
- #32#120#121#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+
- #116#121#112#101#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+
- #115#101#116#32#56#32#101#110#117#109#32#65#114#101#97#84#121#112#101#32#119+
- #114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#100#105#114#101+
- #99#116#105#111#110#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102+
- #102#115#101#116#32#57#32#101#110#117#109#32#68#105#114#84#121#112#101#32+
- #100#101#102#97#117#108#116#32#68#73#82#95#76#69#70#84#59#10#125#10#10#34+
- #116#114#105#103#103#101#114#34#32#115#105#122#101#32#49#52#56#32#98#121#116+
- #101#115#32#98#105#110#98#108#111#99#107#32#54#32#123#10#32#32#34#112#111+
- #115#105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111+
- #102#102#115#101#116#32#48#32#97#115#32#120#121#32#119#114#105#116#101#100+
- #101#102#97#117#108#116#59#10#32#32#34#115#105#122#101#34#32#116#121#112#101+
- #32#115#105#122#101#32#111#102#102#115#101#116#32#56#32#97#115#32#119#104#32+
- #119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#101#110#97#98+
- #108#101#100#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101+
- #116#32#49#50#32#100#101#102#97#117#108#116#32#116#114#117#101#59#10#32#32+
- #34#116#101#120#116#117#114#101#95#112#97#110#101#108#34#32#116#121#112#101+
- #32#105#110#116#32#111#102#102#115#101#116#32#49#51#32#112#97#110#101#108#32+
- #100#101#102#97#117#108#116#32#110#117#108#108#59#10#32#32#34#116#121#112+
+ #114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#116#121#112+
#101#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+
- #32#49#55#32#101#110#117#109#32#84#114#105#103#103#101#114#84#121#112#101#32+
- #119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#97#99#116#105+
- #118#97#116#101#95#116#121#112#101#34#32#116#121#112#101#32#117#98#121#116+
- #101#32#111#102#102#115#101#116#32#49#56#32#98#105#116#115#101#116#32#65#99+
- #116#105#118#97#116#101#84#121#112#101#59#10#32#32#34#107#101#121#115#34#32+
- #116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#57+
- #32#98#105#116#115#101#116#32#75#101#121#32#100#101#102#97#117#108#116#32#75+
- #69#89#95#78#79#78#69#59#10#32#32#47#47#87#65#82#78#73#78#71#58#32#34#116+
- #114#105#103#100#97#116#97#34#32#77#85#83#84#32#98#101#32#100#101#102#105+
- #110#101#100#32#98#101#102#111#114#101#32#34#116#121#112#101#34#44#32#97#110+
- #100#32#34#116#121#112#101#34#32#77#85#83#84#32#98#101#32#110#97#109#101#100+
- #32#34#116#121#112#101#34#32#40#102#111#114#32#110#111#119#44#32#99#97#110+
- #32#98#101#32#99#104#97#110#103#101#100#32#108#97#116#101#114#41#10#32#32#34+
- #116#114#105#103#103#101#114#100#97#116#97#34#32#116#121#112#101#32#116#114+
- #105#103#100#97#116#97#91#49#50#56#93#32#111#102#102#115#101#116#32#50#48#59+
- #32#47#47#32#116#104#101#32#111#110#108#121#32#115#112#101#99#105#97#108#32+
- #110#101#115#116#101#100#32#115#116#114#117#99#116#117#114#101#10#32#32#47+
- #47#68#79#32#78#79#84#32#85#83#69#33#32#101#120#112#101#114#105#109#101#110+
- #116#97#108#32#102#101#97#116#117#114#101#33#32#119#105#108#108#32#98#101#32+
- #114#101#109#111#118#101#100#33#10#32#32#34#101#120#111#109#97#95#105#110+
- #105#116#34#32#116#121#112#101#32#115#116#114#105#110#103#32#100#101#102#97+
- #117#108#116#32#34#34#32#116#105#112#32#34#119#105#108#108#32#98#101#32#99+
- #97#108#108#101#100#32#111#110#32#116#114#105#103#103#101#114#32#99#114#101+
- #97#116#105#111#110#34#59#10#32#32#34#101#120#111#109#97#95#116#104#105#110+
- #107#34#32#116#121#112#101#32#115#116#114#105#110#103#32#100#101#102#97#117+
- #108#116#32#34#34#32#116#105#112#32#34#119#105#108#108#32#98#101#32#99#97+
- #108#108#101#100#32#111#110#32#101#97#99#104#32#116#104#105#110#107#32#115+
- #116#101#112#34#59#10#32#32#34#101#120#111#109#97#95#99#104#101#99#107#34#32+
- #116#121#112#101#32#115#116#114#105#110#103#32#100#101#102#97#117#108#116#32+
- #34#34#32#116#105#112#32#34#119#105#108#108#32#98#101#32#99#97#108#108#101+
- #100#32#98#101#102#111#114#101#32#97#99#116#105#118#97#116#105#111#110#34#59+
- #10#32#32#34#101#120#111#109#97#95#97#99#116#105#111#110#34#32#116#121#112+
- #101#32#115#116#114#105#110#103#32#100#101#102#97#117#108#116#32#34#34#32+
- #116#105#112#32#34#119#105#108#108#32#98#101#32#99#97#108#108#101#100#32#111+
- #110#32#97#99#116#105#118#97#116#105#111#110#34#59#10#125#10#10#10#47#47#47+
- #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+
+ #32#56#32#101#110#117#109#32#65#114#101#97#84#121#112#101#32#119#114#105#116+
+ #101#100#101#102#97#117#108#116#59#13#10#32#32#34#100#105#114#101#99#116#105+
+ #111#110#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+
+ #116#32#57#32#101#110#117#109#32#68#105#114#84#121#112#101#32#100#101#102#97+
+ #117#108#116#32#68#73#82#95#76#69#70#84#59#13#10#125#13#10#13#10#34#116#114+
+ #105#103#103#101#114#34#32#115#105#122#101#32#49#52#56#32#98#121#116#101#115+
+ #32#98#105#110#98#108#111#99#107#32#54#32#123#13#10#32#32#34#112#111#115#105+
+ #116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102#102+
+ #115#101#116#32#48#32#97#115#32#120#121#32#119#114#105#116#101#100#101#102+
+ #97#117#108#116#59#13#10#32#32#34#115#105#122#101#34#32#116#121#112#101#32+
+ #115#105#122#101#32#111#102#102#115#101#116#32#56#32#97#115#32#119#104#32+
+ #119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#101#110#97+
+ #98#108#101#100#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115+
+ #101#116#32#49#50#32#100#101#102#97#117#108#116#32#116#114#117#101#59#13#10+
+ #32#32#34#116#101#120#116#117#114#101#95#112#97#110#101#108#34#32#116#121+
+ #112#101#32#105#110#116#32#111#102#102#115#101#116#32#49#51#32#112#97#110+
+ #101#108#32#100#101#102#97#117#108#116#32#110#117#108#108#59#13#10#32#32#34+
+ #116#121#112#101#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+
+ #115#101#116#32#49#55#32#101#110#117#109#32#84#114#105#103#103#101#114#84+
+ #121#112#101#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32+
+ #32#34#97#99#116#105#118#97#116#101#95#116#121#112#101#34#32#116#121#112#101+
+ #32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#56#32#98#105#116#115+
+ #101#116#32#65#99#116#105#118#97#116#101#84#121#112#101#59#13#10#32#32#34+
+ #107#101#121#115#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+
+ #115#101#116#32#49#57#32#98#105#116#115#101#116#32#75#101#121#32#100#101#102+
+ #97#117#108#116#32#75#69#89#95#78#79#78#69#59#13#10#32#32#47#47#87#65#82#78+
+ #73#78#71#58#32#34#116#114#105#103#100#97#116#97#34#32#77#85#83#84#32#98#101+
+ #32#100#101#102#105#110#101#100#32#98#101#102#111#114#101#32#34#116#121#112+
+ #101#34#44#32#97#110#100#32#34#116#121#112#101#34#32#77#85#83#84#32#98#101+
+ #32#110#97#109#101#100#32#34#116#121#112#101#34#32#40#102#111#114#32#110#111+
+ #119#44#32#99#97#110#32#98#101#32#99#104#97#110#103#101#100#32#108#97#116+
+ #101#114#41#13#10#32#32#34#116#114#105#103#103#101#114#100#97#116#97#34#32+
+ #116#121#112#101#32#116#114#105#103#100#97#116#97#91#49#50#56#93#32#111#102+
+ #102#115#101#116#32#50#48#59#32#47#47#32#116#104#101#32#111#110#108#121#32+
+ #115#112#101#99#105#97#108#32#110#101#115#116#101#100#32#115#116#114#117#99+
+ #116#117#114#101#13#10#32#32#47#47#68#79#32#78#79#84#32#85#83#69#33#32#101+
+ #120#112#101#114#105#109#101#110#116#97#108#32#102#101#97#116#117#114#101#33+
+ #32#119#105#108#108#32#98#101#32#114#101#109#111#118#101#100#33#13#10#32#32+
+ #34#101#120#111#109#97#95#105#110#105#116#34#32#116#121#112#101#32#115#116+
+ #114#105#110#103#32#100#101#102#97#117#108#116#32#34#34#32#116#105#112#32#34+
+ #119#105#108#108#32#98#101#32#99#97#108#108#101#100#32#111#110#32#116#114+
+ #105#103#103#101#114#32#99#114#101#97#116#105#111#110#34#59#13#10#32#32#34+
+ #101#120#111#109#97#95#116#104#105#110#107#34#32#116#121#112#101#32#115#116+
+ #114#105#110#103#32#100#101#102#97#117#108#116#32#34#34#32#116#105#112#32#34+
+ #119#105#108#108#32#98#101#32#99#97#108#108#101#100#32#111#110#32#101#97#99+
+ #104#32#116#104#105#110#107#32#115#116#101#112#34#59#13#10#32#32#34#101#120+
+ #111#109#97#95#99#104#101#99#107#34#32#116#121#112#101#32#115#116#114#105+
+ #110#103#32#100#101#102#97#117#108#116#32#34#34#32#116#105#112#32#34#119#105+
+ #108#108#32#98#101#32#99#97#108#108#101#100#32#98#101#102#111#114#101#32#97+
+ #99#116#105#118#97#116#105#111#110#34#59#13#10#32#32#34#101#120#111#109#97+
+ #95#97#99#116#105#111#110#34#32#116#121#112#101#32#115#116#114#105#110#103+
+ #32#100#101#102#97#117#108#116#32#34#34#32#116#105#112#32#34#119#105#108#108+
+ #32#98#101#32#99#97#108#108#101#100#32#111#110#32#97#99#116#105#118#97#116+
+ #105#111#110#34#59#13#10#125#13#10#13#10#13#10#47#47#47#47#47#47#47#47#47#47+
#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+
#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+
- #47#47#10#47#47#32#115#112#101#99#105#97#108#32#116#101#120#116#117#114#101+
- #32#105#100#101#110#116#105#102#105#101#114#115#44#32#117#115#101#100#32#116+
- #111#32#103#101#110#101#114#97#116#101#32#112#97#115#99#97#108#32#115#111+
- #117#114#99#101#115#10#101#110#117#109#32#84#101#120#116#117#114#101#83#112+
- #101#99#105#97#108#32#123#10#32#32#84#69#88#84#85#82#69#95#83#80#69#67#73#65+
- #76#95#87#65#84#69#82#32#61#32#45#49#44#10#32#32#84#69#88#84#85#82#69#95#83+
- #80#69#67#73#65#76#95#65#67#73#68#49#32#61#32#45#50#44#10#32#32#84#69#88#84+
- #85#82#69#95#83#80#69#67#73#65#76#95#65#67#73#68#50#32#61#32#45#51#44#10#32+
- #32#84#69#88#84#85#82#69#95#78#79#78#69#32#61#32#45#52#44#10#125#10#10#47#47+
- #32#100#105#114#101#99#116#105#111#110#115#10#101#110#117#109#32#68#105#114+
- #84#121#112#101#32#123#10#32#32#68#73#82#95#76#69#70#84#44#32#47#47#32#48#10+
- #32#32#68#73#82#95#82#73#71#72#84#44#32#47#47#32#49#10#32#32#68#73#82#95#80+
- #82#69#83#69#82#86#69#44#32#47#47#32#50#10#32#32#68#73#82#95#82#69#86#69#82+
- #83#69#44#32#47#47#32#51#10#125#10#10#47#47#32#116#114#105#103#103#101#114+
- #115#10#101#110#117#109#32#84#114#105#103#103#101#114#84#121#112#101#32#123+
- #10#32#32#84#82#73#71#71#69#82#95#78#79#78#69#44#32#47#47#32#48#10#32#32#84+
- #82#73#71#71#69#82#95#69#88#73#84#44#32#47#47#32#49#10#32#32#84#82#73#71#71+
- #69#82#95#84#69#76#69#80#79#82#84#44#32#47#47#32#50#10#32#32#84#82#73#71#71+
- #69#82#95#79#80#69#78#68#79#79#82#44#32#47#47#32#51#10#32#32#84#82#73#71#71+
- #69#82#95#67#76#79#83#69#68#79#79#82#44#32#47#47#32#52#10#32#32#84#82#73#71+
- #71#69#82#95#68#79#79#82#44#32#47#47#32#53#10#32#32#84#82#73#71#71#69#82#95+
- #68#79#79#82#53#44#32#47#47#32#54#10#32#32#84#82#73#71#71#69#82#95#67#76#79+
- #83#69#84#82#65#80#44#32#47#47#32#55#10#32#32#84#82#73#71#71#69#82#95#84#82+
- #65#80#44#32#47#47#32#56#10#32#32#84#82#73#71#71#69#82#95#80#82#69#83#83#44+
- #32#47#47#32#57#10#32#32#84#82#73#71#71#69#82#95#83#69#67#82#69#84#44#32#47+
- #47#32#49#48#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#85#80#44#32#47#47+
- #32#49#49#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#68#79#87#78#44#32#47+
- #47#32#49#50#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#44#32#47#47#32#49+
- #51#10#32#32#84#82#73#71#71#69#82#95#84#69#88#84#85#82#69#44#32#47#47#32#49+
- #52#10#32#32#84#82#73#71#71#69#82#95#79#78#44#32#47#47#32#49#53#10#32#32#84+
- #82#73#71#71#69#82#95#79#70#70#44#32#47#47#32#49#54#10#32#32#84#82#73#71#71+
- #69#82#95#79#78#79#70#70#44#32#47#47#32#49#55#10#32#32#84#82#73#71#71#69#82+
- #95#83#79#85#78#68#44#32#47#47#32#49#56#10#32#32#84#82#73#71#71#69#82#95#83+
- #80#65#87#78#77#79#78#83#84#69#82#44#32#47#47#32#49#57#10#32#32#84#82#73#71+
- #71#69#82#95#83#80#65#87#78#73#84#69#77#44#32#47#47#32#50#48#10#32#32#84#82+
- #73#71#71#69#82#95#77#85#83#73#67#44#32#47#47#32#50#49#10#32#32#84#82#73#71+
- #71#69#82#95#80#85#83#72#44#32#47#47#32#50#50#10#32#32#84#82#73#71#71#69#82+
- #95#83#67#79#82#69#44#32#47#47#32#50#51#10#32#32#84#82#73#71#71#69#82#95#77+
- #69#83#83#65#71#69#44#32#47#47#32#50#52#10#32#32#84#82#73#71#71#69#82#95#68+
- #65#77#65#71#69#44#32#47#47#32#50#53#10#32#32#84#82#73#71#71#69#82#95#72#69+
- #65#76#84#72#44#32#47#47#32#50#54#10#32#32#84#82#73#71#71#69#82#95#83#72#79+
- #84#44#32#47#47#32#50#55#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84+
- #44#32#47#47#32#50#56#10#32#32#84#82#73#71#71#69#82#95#83#67#82#73#80#84#44+
- #32#47#47#32#50#57#10#32#32#47#47#10#32#32#84#82#73#71#71#69#82#95#77#65#88+
- #32#61#32#77#65#88#44#10#125#10#10#47#47#32#34#97#115#32#88#88#88#34#32#109+
- #101#97#110#115#32#34#103#101#110#101#114#97#116#101#32#116#104#105#115#32+
- #105#100#101#110#116#105#102#105#101#114#32#102#111#114#32#112#97#115#99#97+
- #108#32#115#111#117#114#99#101#115#10#98#105#116#115#101#116#32#80#97#110+
- #101#108#84#121#112#101#32#123#10#32#32#80#65#78#69#76#95#78#79#78#69#32#61+
- #32#48#44#32#47#47#32#48#10#32#32#80#65#78#69#76#95#87#65#76#76#44#32#47#47+
- #32#49#10#32#32#80#65#78#69#76#95#66#65#67#75#44#32#47#47#32#50#10#32#32#80+
- #65#78#69#76#95#70#79#82#69#44#32#47#47#32#52#10#32#32#80#65#78#69#76#95#87+
- #65#84#69#82#44#32#47#47#32#56#10#32#32#80#65#78#69#76#95#65#67#73#68#49#44+
- #32#47#47#32#49#54#10#32#32#80#65#78#69#76#95#65#67#73#68#50#44#32#47#47#32+
- #51#50#10#32#32#80#65#78#69#76#95#83#84#69#80#44#32#47#47#32#54#52#10#32#32+
- #80#65#78#69#76#95#76#73#70#84#85#80#44#32#47#47#32#49#50#56#10#32#32#80#65+
- #78#69#76#95#76#73#70#84#68#79#87#78#44#32#47#47#32#50#53#54#10#32#32#80#65+
- #78#69#76#95#79#80#69#78#68#79#79#82#44#32#47#47#32#53#49#50#10#32#32#80#65+
- #78#69#76#95#67#76#79#83#69#68#79#79#82#44#32#47#47#32#49#48#50#52#10#32#32+
- #80#65#78#69#76#95#66#76#79#67#75#77#79#78#44#32#47#47#32#50#48#52#56#10#32+
- #32#80#65#78#69#76#95#76#73#70#84#76#69#70#84#44#32#47#47#32#52#48#57#54#10+
- #32#32#80#65#78#69#76#95#76#73#70#84#82#73#71#72#84#44#32#47#47#32#56#49#57+
- #50#10#125#10#10#98#105#116#115#101#116#32#80#97#110#101#108#70#108#97#103+
- #32#123#10#32#32#80#65#78#69#76#95#70#76#65#71#95#78#79#78#69#32#61#32#48#44+
- #32#47#47#32#48#10#32#32#80#65#78#69#76#95#70#76#65#71#95#66#76#69#78#68#73+
- #78#71#44#32#47#47#32#49#10#32#32#80#65#78#69#76#95#70#76#65#71#95#72#73#68+
- #69#44#32#47#47#32#50#10#32#32#80#65#78#69#76#95#70#76#65#71#95#87#65#84#69+
- #82#84#69#88#84#85#82#69#83#44#32#47#47#32#52#10#125#10#10#101#110#117#109+
- #32#69#102#102#101#99#116#65#99#116#105#111#110#32#123#10#32#32#69#70#70#69+
- #67#84#95#78#79#78#69#44#32#47#47#32#48#10#32#32#69#70#70#69#67#84#95#84#69+
- #76#69#80#79#82#84#44#32#47#47#32#49#10#32#32#69#70#70#69#67#84#95#82#69#83+
- #80#65#87#78#44#32#47#47#32#50#10#32#32#69#70#70#69#67#84#95#70#73#82#69#44+
- #32#47#47#32#51#10#125#10#10#47#47#87#65#82#78#73#78#71#33#32#109#97#120#32+
- #97#108#108#111#119#101#100#32#105#116#101#109#115#32#116#121#112#101#115#32+
- #105#115#32#49#50#55#10#101#110#117#109#32#73#116#101#109#32#123#10#32#32#73+
- #84#69#77#95#78#79#78#69#44#32#47#47#32#48#10#32#32#73#84#69#77#95#77#69#68+
- #75#73#84#95#83#77#65#76#76#44#32#47#47#32#49#10#32#32#73#84#69#77#95#77#69+
- #68#75#73#84#95#76#65#82#71#69#44#32#47#47#32#50#10#32#32#73#84#69#77#95#77+
- #69#68#75#73#84#95#66#76#65#67#75#44#32#47#47#32#51#10#32#32#73#84#69#77#95+
- #65#82#77#79#82#95#71#82#69#69#78#44#32#47#47#32#52#10#32#32#73#84#69#77#95+
- #65#82#77#79#82#95#66#76#85#69#44#32#47#47#32#53#10#32#32#73#84#69#77#95#83+
- #80#72#69#82#69#95#66#76#85#69#44#32#47#47#32#54#10#32#32#73#84#69#77#95#83+
- #80#72#69#82#69#95#87#72#73#84#69#44#32#47#47#32#55#10#32#32#73#84#69#77#95+
- #83#85#73#84#44#32#47#47#32#56#10#32#32#73#84#69#77#95#79#88#89#71#69#78#44+
- #32#47#47#32#57#10#32#32#73#84#69#77#95#73#78#86#85#76#44#32#47#47#32#49#48+
- #10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#83#65#87#44#32#47#47#32#49#49+
- #10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#83#72#79#84#71#85#78#49#44#32+
- #47#47#32#49#50#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#83#72#79#84#71+
- #85#78#50#44#32#47#47#32#49#51#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95+
- #67#72#65#73#78#71#85#78#44#32#47#47#32#49#52#10#32#32#73#84#69#77#95#87#69+
- #65#80#79#78#95#82#79#67#75#69#84#76#65#85#78#67#72#69#82#44#32#47#47#32#49+
- #53#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#80#76#65#83#77#65#44#32#47+
- #47#32#49#54#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#66#70#71#44#32#47+
- #47#32#49#55#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#83#85#80#69#82#80+
- #85#76#69#77#69#84#44#32#47#47#32#49#56#10#32#32#73#84#69#77#95#65#77#77#79+
- #95#66#85#76#76#69#84#83#44#32#47#47#32#49#57#10#32#32#73#84#69#77#95#65#77+
- #77#79#95#66#85#76#76#69#84#83#95#66#79#88#44#32#47#47#32#50#48#10#32#32#73+
- #84#69#77#95#65#77#77#79#95#83#72#69#76#76#83#44#32#47#47#32#50#49#10#32#32+
- #73#84#69#77#95#65#77#77#79#95#83#72#69#76#76#83#95#66#79#88#44#32#47#47#32+
- #50#50#10#32#32#73#84#69#77#95#65#77#77#79#95#82#79#67#75#69#84#44#32#47#47+
- #32#50#51#10#32#32#73#84#69#77#95#65#77#77#79#95#82#79#67#75#69#84#95#66#79+
- #88#44#32#47#47#32#50#52#10#32#32#73#84#69#77#95#65#77#77#79#95#67#69#76#76+
- #44#32#47#47#32#50#53#10#32#32#73#84#69#77#95#65#77#77#79#95#67#69#76#76#95+
- #66#73#71#44#32#47#47#32#50#54#10#32#32#73#84#69#77#95#65#77#77#79#95#66#65+
- #67#75#80#65#67#75#44#32#47#47#32#50#55#10#32#32#73#84#69#77#95#75#69#89#95+
- #82#69#68#44#32#47#47#32#50#56#10#32#32#73#84#69#77#95#75#69#89#95#71#82#69+
- #69#78#44#32#47#47#32#50#57#10#32#32#73#84#69#77#95#75#69#89#95#66#76#85#69+
- #44#32#47#47#32#51#48#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#75#65#83+
- #84#69#84#44#32#47#47#32#51#49#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95+
- #80#73#83#84#79#76#44#32#47#47#32#51#50#10#32#32#73#84#69#77#95#66#79#84#84+
- #76#69#44#32#47#47#32#51#51#10#32#32#73#84#69#77#95#72#69#76#77#69#84#44#32+
- #47#47#32#51#52#10#32#32#73#84#69#77#95#74#69#84#80#65#67#75#44#32#47#47#32+
- #51#53#10#32#32#73#84#69#77#95#73#78#86#73#83#44#32#47#47#32#51#54#10#32#32+
- #73#84#69#77#95#87#69#65#80#79#78#95#70#76#65#77#69#84#72#82#79#87#69#82#44+
- #32#47#47#32#51#55#10#32#32#73#84#69#77#95#65#77#77#79#95#70#85#69#76#67#65+
- #78#44#32#47#47#32#51#56#10#32#32#47#47#10#32#32#73#84#69#77#95#77#65#88#32+
- #61#32#77#65#88#44#32#47#47#32#115#116#111#114#101#32#116#104#101#32#108#97+
- #115#116#32#105#116#101#109#39#115#32#105#100#32#105#110#32#104#101#114#101+
- #32#117#115#101#32#116#104#105#115#32#105#110#32#102#111#114#32#108#111#111+
- #112#115#10#125#10#10#98#105#116#115#101#116#32#73#116#101#109#79#112#116+
- #105#111#110#32#123#10#32#32#73#84#69#77#95#79#80#84#73#79#78#95#78#79#78#69+
- #32#61#32#48#44#32#47#47#32#48#10#32#32#73#84#69#77#95#79#80#84#73#79#78#95+
- #79#78#76#89#68#77#44#32#47#47#32#49#10#32#32#73#84#69#77#95#79#80#84#73#79+
- #78#95#70#65#76#76#44#32#47#47#32#50#10#125#10#10#101#110#117#109#32#65#114+
- #101#97#84#121#112#101#32#123#10#32#32#65#82#69#65#95#78#79#78#69#44#32#47+
- #47#32#48#10#32#32#65#82#69#65#95#80#76#65#89#69#82#80#79#73#78#84#49#44#32+
- #47#47#32#49#10#32#32#65#82#69#65#95#80#76#65#89#69#82#80#79#73#78#84#50#44+
- #32#47#47#32#50#10#32#32#65#82#69#65#95#68#77#80#79#73#78#84#44#32#47#47#32+
- #51#10#32#32#65#82#69#65#95#82#69#68#70#76#65#71#44#32#47#47#32#52#10#32#32+
- #65#82#69#65#95#66#76#85#69#70#76#65#71#44#32#47#47#32#53#10#32#32#65#82#69+
- #65#95#68#79#77#70#76#65#71#44#32#47#47#32#54#10#32#32#65#82#69#65#95#82#69+
- #68#84#69#65#77#80#79#73#78#84#44#32#47#47#32#55#10#32#32#65#82#69#65#95#66+
- #76#85#69#84#69#65#77#80#79#73#78#84#44#32#47#47#32#56#10#125#10#10#101#110+
- #117#109#32#77#111#110#115#116#101#114#32#123#10#32#32#77#79#78#83#84#69#82+
- #95#78#79#78#69#44#32#47#47#32#48#10#32#32#77#79#78#83#84#69#82#95#68#69#77+
- #79#78#44#32#47#47#32#49#10#32#32#77#79#78#83#84#69#82#95#73#77#80#44#32#47+
- #47#32#50#10#32#32#77#79#78#83#84#69#82#95#90#79#77#66#89#44#32#47#47#32#51+
- #10#32#32#77#79#78#83#84#69#82#95#83#69#82#71#44#32#47#47#32#52#10#32#32#77+
- #79#78#83#84#69#82#95#67#89#66#69#82#44#32#47#47#32#53#10#32#32#77#79#78#83+
- #84#69#82#95#67#71#85#78#44#32#47#47#32#54#10#32#32#77#79#78#83#84#69#82#95+
- #66#65#82#79#78#44#32#47#47#32#55#10#32#32#77#79#78#83#84#69#82#95#75#78#73+
- #71#72#84#44#32#47#47#32#56#10#32#32#77#79#78#83#84#69#82#95#67#65#67#79#44+
- #32#47#47#32#57#10#32#32#77#79#78#83#84#69#82#95#83#79#85#76#44#32#47#47#32+
- #49#48#10#32#32#77#79#78#83#84#69#82#95#80#65#73#78#44#32#47#47#32#49#49#10+
- #32#32#77#79#78#83#84#69#82#95#83#80#73#68#69#82#44#32#47#47#32#49#50#10#32+
- #32#77#79#78#83#84#69#82#95#66#83#80#44#32#47#47#32#49#51#10#32#32#77#79#78+
- #83#84#69#82#95#77#65#78#67#85#66#44#32#47#47#32#49#52#10#32#32#77#79#78#83+
- #84#69#82#95#83#75#69#76#44#32#47#47#32#49#53#10#32#32#77#79#78#83#84#69#82+
- #95#86#73#76#69#44#32#47#47#32#49#54#10#32#32#77#79#78#83#84#69#82#95#70#73+
- #83#72#44#32#47#47#32#49#55#10#32#32#77#79#78#83#84#69#82#95#66#65#82#82#69+
- #76#44#32#47#47#32#49#56#10#32#32#77#79#78#83#84#69#82#95#82#79#66#79#44#32+
- #47#47#32#49#57#10#32#32#77#79#78#83#84#69#82#95#77#65#78#44#32#47#47#32#50+
- #48#10#32#32#47#47#32#97#108#105#97#115#101#115#32#40#102#105#120#109#101#58+
- #32#105#116#32#115#104#111#117#108#100#32#98#101#32#96#77#79#78#83#84#69#82+
- #95#90#79#77#66#73#69#32#61#32#77#79#78#83#84#69#82#95#90#79#77#66#89#96#33+
- #41#10#32#32#77#79#78#83#84#69#82#95#90#79#77#66#73#69#32#61#32#51#44#10#125+
- #10#10#101#110#117#109#32#77#111#110#115#116#101#114#66#101#104#97#118#105+
- #111#117#114#32#123#10#32#32#66#72#95#78#79#82#77#65#76#44#32#47#47#32#48#10+
- #32#32#66#72#95#75#73#76#76#69#82#44#32#47#47#32#49#10#32#32#66#72#95#77#65+
- #78#73#65#67#44#32#47#47#32#50#10#32#32#66#72#95#73#78#83#65#78#69#44#32#47+
- #47#32#51#10#32#32#66#72#95#67#65#78#78#73#66#65#76#44#32#47#47#32#52#10#32+
- #32#66#72#95#71#79#79#68#44#32#47#47#32#53#10#125#10#10#101#110#117#109#32+
- #84#114#105#103#103#101#114#83#104#111#116#32#123#10#32#32#84#82#73#71#71#69+
- #82#95#83#72#79#84#95#80#73#83#84#79#76#44#32#47#47#32#48#10#32#32#84#82#73+
- #71#71#69#82#95#83#72#79#84#95#66#85#76#76#69#84#44#32#47#47#32#49#10#32#32+
- #84#82#73#71#71#69#82#95#83#72#79#84#95#83#72#79#84#71#85#78#44#32#47#47#32+
- #50#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#83#83#71#44#32#47#47#32+
- #51#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#73#77#80#44#32#47#47#32+
- #52#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#80#76#65#83#77#65#44#32+
- #47#47#32#53#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#83#80#73#68#69+
- #82#44#32#47#47#32#54#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#67#65+
- #67#79#44#32#47#47#32#55#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#66+
- #65#82#79#78#44#32#47#47#32#56#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84+
- #95#77#65#78#67#85#66#44#32#47#47#32#57#10#32#32#84#82#73#71#71#69#82#95#83+
- #72#79#84#95#82#69#86#44#32#47#47#32#49#48#10#32#32#84#82#73#71#71#69#82#95+
- #83#72#79#84#95#82#79#67#75#69#84#44#32#47#47#32#49#49#10#32#32#84#82#73#71+
- #71#69#82#95#83#72#79#84#95#66#70#71#44#32#47#47#32#49#50#10#32#32#84#82#73+
- #71#71#69#82#95#83#72#79#84#95#69#88#80#76#44#32#47#47#32#49#51#10#32#32#84+
- #82#73#71#71#69#82#95#83#72#79#84#95#66#70#71#69#88#80#76#44#32#47#47#32#49+
- #52#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#70#76#65#77#69#44#32#47+
- #47#32#49#53#10#32#32#47#47#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95+
- #77#65#88#32#61#32#77#65#88#44#10#125#10#10#101#110#117#109#32#84#114#105+
- #103#103#101#114#83#104#111#116#84#97#114#103#101#116#32#123#10#32#32#84#82+
- #73#71#71#69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#78#79#78#69#44#32#47+
- #47#32#48#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71#69#84+
- #95#77#79#78#44#32#47#47#32#49#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84+
- #95#84#65#82#71#69#84#95#80#76#82#44#32#47#47#32#50#10#32#32#84#82#73#71#71+
- #69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#82#69#68#44#32#47#47#32#51#10+
- #32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#66#76#85+
- #69#44#32#47#47#32#52#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84#65+
- #82#71#69#84#95#77#79#78#80#76#82#44#32#47#47#32#53#10#32#32#84#82#73#71#71+
- #69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#80#76#82#77#79#78#44#32#47#47+
- #32#54#10#125#10#10#101#110#117#109#32#84#114#105#103#103#101#114#83#104#111+
- #116#65#105#109#32#123#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#65#73+
- #77#95#68#69#70#65#85#76#84#44#32#47#47#32#48#10#32#32#84#82#73#71#71#69#82+
- #95#83#72#79#84#95#65#73#77#95#65#76#76#77#65#80#44#32#47#47#32#49#10#32#32+
- #84#82#73#71#71#69#82#95#83#72#79#84#95#65#73#77#95#84#82#65#67#69#44#32#47+
- #47#32#50#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#65#73#77#95#84#82+
- #65#67#69#65#76#76#44#32#47#47#32#51#10#125#10#10#101#110#117#109#32#84#114+
- #105#103#103#101#114#69#102#102#101#99#116#32#123#10#32#32#84#82#73#71#71#69+
- #82#95#69#70#70#69#67#84#95#80#65#82#84#73#67#76#69#44#32#47#47#32#48#10#32+
- #32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#65#78#73#77#65#84#73#79#78+
- #44#32#47#47#32#49#10#125#10#10#101#110#117#109#32#84#114#105#103#103#101+
- #114#69#102#102#101#99#116#84#121#112#101#32#123#10#32#32#84#82#73#71#71#69+
- #82#95#69#70#70#69#67#84#95#83#76#73#81#85#73#68#44#32#47#47#32#48#10#32#32+
- #84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#76#76#73#81#85#73#68#44#32#47+
- #47#32#49#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#68#76#73#81+
- #85#73#68#44#32#47#47#32#50#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67+
- #84#95#66#76#79#79#68#44#32#47#47#32#51#10#32#32#84#82#73#71#71#69#82#95#69+
- #70#70#69#67#84#95#83#80#65#82#75#44#32#47#47#32#52#10#32#32#84#82#73#71#71+
- #69#82#95#69#70#70#69#67#84#95#66#85#66#66#76#69#44#32#47#47#32#53#10#32#32+
- #84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#77#65#88#32#61#32#77#65#88#44+
- #10#125#10#10#101#110#117#109#32#84#114#105#103#103#101#114#69#102#102#101+
- #99#116#80#111#115#32#123#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84+
- #95#80#79#83#95#67#69#78#84#69#82#44#32#47#47#32#48#10#32#32#84#82#73#71#71+
- #69#82#95#69#70#70#69#67#84#95#80#79#83#95#65#82#69#65#44#32#47#47#32#49#10+
- #125#10#10#101#110#117#109#32#84#114#105#103#103#101#114#77#117#115#105#99+
- #65#99#116#105#111#110#32#123#10#32#32#84#82#73#71#71#69#82#95#77#85#83#73+
- #67#95#65#67#84#73#79#78#95#83#84#79#80#44#32#47#47#32#48#10#32#32#84#82#73+
- #71#71#69#82#95#77#85#83#73#67#95#65#67#84#73#79#78#95#80#76#65#89#44#32#47+
- #47#32#49#59#32#117#110#112#97#117#115#101#32#111#114#32#114#101#115#116#97+
- #114#116#10#125#10#10#101#110#117#109#32#84#114#105#103#103#101#114#83#99+
- #111#114#101#65#99#116#105#111#110#32#123#10#32#32#84#82#73#71#71#69#82#95+
- #83#67#79#82#69#95#65#67#84#73#79#78#95#65#68#68#44#32#47#47#32#48#10#32#32+
- #84#82#73#71#71#69#82#95#83#67#79#82#69#95#65#67#84#73#79#78#95#83#85#66#44+
- #32#47#47#32#49#10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#65#67#84+
- #73#79#78#95#87#73#78#44#32#47#47#32#50#10#32#32#84#82#73#71#71#69#82#95#83+
- #67#79#82#69#95#65#67#84#73#79#78#95#76#79#79#83#69#44#32#47#47#32#51#10#125+
- #10#10#101#110#117#109#32#84#114#105#103#103#101#114#77#101#115#115#97#103+
- #101#68#101#115#116#32#123#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65+
- #71#69#95#68#69#83#84#95#77#69#44#32#47#47#32#48#10#32#32#84#82#73#71#71#69+
- #82#95#77#69#83#83#65#71#69#95#68#69#83#84#95#77#89#95#84#69#65#77#44#32#47+
- #47#32#49#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#68#69#83+
- #84#95#69#78#69#77#89#95#84#69#65#77#44#32#47#47#32#50#10#32#32#84#82#73#71+
- #71#69#82#95#77#69#83#83#65#71#69#95#68#69#83#84#95#82#69#68#95#84#69#65#77+
- #44#32#47#47#32#51#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95+
- #68#69#83#84#95#66#76#85#69#95#84#69#65#77#44#32#47#47#32#52#10#32#32#84#82+
- #73#71#71#69#82#95#77#69#83#83#65#71#69#95#68#69#83#84#95#69#86#69#82#89#79+
- #78#69#44#32#47#47#32#53#10#125#10#10#101#110#117#109#32#84#114#105#103#103+
- #101#114#77#101#115#115#97#103#101#75#105#110#100#32#123#10#32#32#84#82#73+
- #71#71#69#82#95#77#69#83#83#65#71#69#95#75#73#78#68#95#67#72#65#84#44#32#47+
- #47#32#48#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#75#73#78+
- #68#95#71#65#77#69#44#32#47#47#32#49#10#125#10#10#98#105#116#115#101#116#32+
- #65#99#116#105#118#97#116#101#84#121#112#101#32#123#10#32#32#65#67#84#73#86+
- #65#84#69#95#78#79#78#69#32#61#32#48#44#32#47#47#32#48#10#32#32#65#67#84#73+
- #86#65#84#69#95#80#76#65#89#69#82#67#79#76#76#73#68#69#44#32#47#47#32#49#10+
+ #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#13#10#47#47#32+
+ #115#112#101#99#105#97#108#32#116#101#120#116#117#114#101#32#105#100#101#110+
+ #116#105#102#105#101#114#115#44#32#117#115#101#100#32#116#111#32#103#101#110+
+ #101#114#97#116#101#32#112#97#115#99#97#108#32#115#111#117#114#99#101#115#13+
+ #10#101#110#117#109#32#84#101#120#116#117#114#101#83#112#101#99#105#97#108+
+ #32#123#13#10#32#32#84#69#88#84#85#82#69#95#83#80#69#67#73#65#76#95#87#65#84+
+ #69#82#32#61#32#45#49#44#13#10#32#32#84#69#88#84#85#82#69#95#83#80#69#67#73+
+ #65#76#95#65#67#73#68#49#32#61#32#45#50#44#13#10#32#32#84#69#88#84#85#82#69+
+ #95#83#80#69#67#73#65#76#95#65#67#73#68#50#32#61#32#45#51#44#13#10#32#32#84+
+ #69#88#84#85#82#69#95#78#79#78#69#32#61#32#45#52#44#13#10#125#13#10#13#10#47+
+ #47#32#100#105#114#101#99#116#105#111#110#115#13#10#101#110#117#109#32#68+
+ #105#114#84#121#112#101#32#123#13#10#32#32#68#73#82#95#76#69#70#84#44#32#47+
+ #47#32#48#13#10#32#32#68#73#82#95#82#73#71#72#84#44#32#47#47#32#49#13#10#32+
+ #32#68#73#82#95#80#82#69#83#69#82#86#69#44#32#47#47#32#50#13#10#32#32#68#73+
+ #82#95#82#69#86#69#82#83#69#44#32#47#47#32#51#13#10#125#13#10#13#10#47#47#32+
+ #116#114#105#103#103#101#114#115#13#10#101#110#117#109#32#84#114#105#103#103+
+ #101#114#84#121#112#101#32#123#13#10#32#32#84#82#73#71#71#69#82#95#78#79#78+
+ #69#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#69#88#73#84#44#32+
+ #47#47#32#49#13#10#32#32#84#82#73#71#71#69#82#95#84#69#76#69#80#79#82#84#44+
+ #32#47#47#32#50#13#10#32#32#84#82#73#71#71#69#82#95#79#80#69#78#68#79#79#82+
+ #44#32#47#47#32#51#13#10#32#32#84#82#73#71#71#69#82#95#67#76#79#83#69#68#79+
+ #79#82#44#32#47#47#32#52#13#10#32#32#84#82#73#71#71#69#82#95#68#79#79#82#44+
+ #32#47#47#32#53#13#10#32#32#84#82#73#71#71#69#82#95#68#79#79#82#53#44#32#47+
+ #47#32#54#13#10#32#32#84#82#73#71#71#69#82#95#67#76#79#83#69#84#82#65#80#44+
+ #32#47#47#32#55#13#10#32#32#84#82#73#71#71#69#82#95#84#82#65#80#44#32#47#47+
+ #32#56#13#10#32#32#84#82#73#71#71#69#82#95#80#82#69#83#83#44#32#47#47#32#57+
+ #13#10#32#32#84#82#73#71#71#69#82#95#83#69#67#82#69#84#44#32#47#47#32#49#48+
+ #13#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#85#80#44#32#47#47#32#49#49+
+ #13#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#68#79#87#78#44#32#47#47#32+
+ #49#50#13#10#32#32#84#82#73#71#71#69#82#95#76#73#70#84#44#32#47#47#32#49#51+
+ #13#10#32#32#84#82#73#71#71#69#82#95#84#69#88#84#85#82#69#44#32#47#47#32#49+
+ #52#13#10#32#32#84#82#73#71#71#69#82#95#79#78#44#32#47#47#32#49#53#13#10#32+
+ #32#84#82#73#71#71#69#82#95#79#70#70#44#32#47#47#32#49#54#13#10#32#32#84#82+
+ #73#71#71#69#82#95#79#78#79#70#70#44#32#47#47#32#49#55#13#10#32#32#84#82#73+
+ #71#71#69#82#95#83#79#85#78#68#44#32#47#47#32#49#56#13#10#32#32#84#82#73#71+
+ #71#69#82#95#83#80#65#87#78#77#79#78#83#84#69#82#44#32#47#47#32#49#57#13#10+
+ #32#32#84#82#73#71#71#69#82#95#83#80#65#87#78#73#84#69#77#44#32#47#47#32#50+
+ #48#13#10#32#32#84#82#73#71#71#69#82#95#77#85#83#73#67#44#32#47#47#32#50#49+
+ #13#10#32#32#84#82#73#71#71#69#82#95#80#85#83#72#44#32#47#47#32#50#50#13#10+
+ #32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#44#32#47#47#32#50#51#13#10#32+
+ #32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#44#32#47#47#32#50#52#13#10+
+ #32#32#84#82#73#71#71#69#82#95#68#65#77#65#71#69#44#32#47#47#32#50#53#13#10+
+ #32#32#84#82#73#71#71#69#82#95#72#69#65#76#84#72#44#32#47#47#32#50#54#13#10+
+ #32#32#84#82#73#71#71#69#82#95#83#72#79#84#44#32#47#47#32#50#55#13#10#32#32+
+ #84#82#73#71#71#69#82#95#69#70#70#69#67#84#44#32#47#47#32#50#56#13#10#32#32+
+ #84#82#73#71#71#69#82#95#83#67#82#73#80#84#44#32#47#47#32#50#57#13#10#32#32+
+ #47#47#13#10#32#32#84#82#73#71#71#69#82#95#77#65#88#32#61#32#77#65#88#44#13+
+ #10#125#13#10#13#10#47#47#32#34#97#115#32#88#88#88#34#32#109#101#97#110#115+
+ #32#34#103#101#110#101#114#97#116#101#32#116#104#105#115#32#105#100#101#110+
+ #116#105#102#105#101#114#32#102#111#114#32#112#97#115#99#97#108#32#115#111+
+ #117#114#99#101#115#13#10#98#105#116#115#101#116#32#80#97#110#101#108#84#121+
+ #112#101#32#123#13#10#32#32#80#65#78#69#76#95#78#79#78#69#32#61#32#48#44#32+
+ #47#47#32#48#13#10#32#32#80#65#78#69#76#95#87#65#76#76#44#32#47#47#32#49#13+
+ #10#32#32#80#65#78#69#76#95#66#65#67#75#44#32#47#47#32#50#13#10#32#32#80#65+
+ #78#69#76#95#70#79#82#69#44#32#47#47#32#52#13#10#32#32#80#65#78#69#76#95#87+
+ #65#84#69#82#44#32#47#47#32#56#13#10#32#32#80#65#78#69#76#95#65#67#73#68#49+
+ #44#32#47#47#32#49#54#13#10#32#32#80#65#78#69#76#95#65#67#73#68#50#44#32#47+
+ #47#32#51#50#13#10#32#32#80#65#78#69#76#95#83#84#69#80#44#32#47#47#32#54#52+
+ #13#10#32#32#80#65#78#69#76#95#76#73#70#84#85#80#44#32#47#47#32#49#50#56#13+
+ #10#32#32#80#65#78#69#76#95#76#73#70#84#68#79#87#78#44#32#47#47#32#50#53#54+
+ #13#10#32#32#80#65#78#69#76#95#79#80#69#78#68#79#79#82#44#32#47#47#32#53#49+
+ #50#13#10#32#32#80#65#78#69#76#95#67#76#79#83#69#68#79#79#82#44#32#47#47#32+
+ #49#48#50#52#13#10#32#32#80#65#78#69#76#95#66#76#79#67#75#77#79#78#44#32#47+
+ #47#32#50#48#52#56#13#10#32#32#80#65#78#69#76#95#76#73#70#84#76#69#70#84#44+
+ #32#47#47#32#52#48#57#54#13#10#32#32#80#65#78#69#76#95#76#73#70#84#82#73#71+
+ #72#84#44#32#47#47#32#56#49#57#50#13#10#125#13#10#13#10#98#105#116#115#101+
+ #116#32#80#97#110#101#108#70#108#97#103#32#123#13#10#32#32#80#65#78#69#76#95+
+ #70#76#65#71#95#78#79#78#69#32#61#32#48#44#32#47#47#32#48#13#10#32#32#80#65+
+ #78#69#76#95#70#76#65#71#95#66#76#69#78#68#73#78#71#44#32#47#47#32#49#13#10+
+ #32#32#80#65#78#69#76#95#70#76#65#71#95#72#73#68#69#44#32#47#47#32#50#13#10+
+ #32#32#80#65#78#69#76#95#70#76#65#71#95#87#65#84#69#82#84#69#88#84#85#82#69+
+ #83#44#32#47#47#32#52#13#10#125#13#10#13#10#101#110#117#109#32#69#102#102+
+ #101#99#116#65#99#116#105#111#110#32#123#13#10#32#32#69#70#70#69#67#84#95#78+
+ #79#78#69#44#32#47#47#32#48#13#10#32#32#69#70#70#69#67#84#95#84#69#76#69#80+
+ #79#82#84#44#32#47#47#32#49#13#10#32#32#69#70#70#69#67#84#95#82#69#83#80#65+
+ #87#78#44#32#47#47#32#50#13#10#32#32#69#70#70#69#67#84#95#70#73#82#69#44#32+
+ #47#47#32#51#13#10#125#13#10#13#10#47#47#87#65#82#78#73#78#71#33#32#109#97+
+ #120#32#97#108#108#111#119#101#100#32#105#116#101#109#115#32#116#121#112#101+
+ #115#32#105#115#32#49#50#55#13#10#101#110#117#109#32#73#116#101#109#32#123+
+ #13#10#32#32#73#84#69#77#95#78#79#78#69#44#32#47#47#32#48#13#10#32#32#73#84+
+ #69#77#95#77#69#68#75#73#84#95#83#77#65#76#76#44#32#47#47#32#49#13#10#32#32+
+ #73#84#69#77#95#77#69#68#75#73#84#95#76#65#82#71#69#44#32#47#47#32#50#13#10+
+ #32#32#73#84#69#77#95#77#69#68#75#73#84#95#66#76#65#67#75#44#32#47#47#32#51+
+ #13#10#32#32#73#84#69#77#95#65#82#77#79#82#95#71#82#69#69#78#44#32#47#47#32+
+ #52#13#10#32#32#73#84#69#77#95#65#82#77#79#82#95#66#76#85#69#44#32#47#47#32+
+ #53#13#10#32#32#73#84#69#77#95#83#80#72#69#82#69#95#66#76#85#69#44#32#47#47+
+ #32#54#13#10#32#32#73#84#69#77#95#83#80#72#69#82#69#95#87#72#73#84#69#44#32+
+ #47#47#32#55#13#10#32#32#73#84#69#77#95#83#85#73#84#44#32#47#47#32#56#13#10+
+ #32#32#73#84#69#77#95#79#88#89#71#69#78#44#32#47#47#32#57#13#10#32#32#73#84+
+ #69#77#95#73#78#86#85#76#44#32#47#47#32#49#48#13#10#32#32#73#84#69#77#95#87+
+ #69#65#80#79#78#95#83#65#87#44#32#47#47#32#49#49#13#10#32#32#73#84#69#77#95+
+ #87#69#65#80#79#78#95#83#72#79#84#71#85#78#49#44#32#47#47#32#49#50#13#10#32+
+ #32#73#84#69#77#95#87#69#65#80#79#78#95#83#72#79#84#71#85#78#50#44#32#47#47+
+ #32#49#51#13#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#67#72#65#73#78#71+
+ #85#78#44#32#47#47#32#49#52#13#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95+
+ #82#79#67#75#69#84#76#65#85#78#67#72#69#82#44#32#47#47#32#49#53#13#10#32#32+
+ #73#84#69#77#95#87#69#65#80#79#78#95#80#76#65#83#77#65#44#32#47#47#32#49#54+
+ #13#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#66#70#71#44#32#47#47#32#49+
+ #55#13#10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#83#85#80#69#82#67#72#65+
+ #73#78#71#85#78#44#32#47#47#32#49#56#13#10#32#32#73#84#69#77#95#65#77#77#79+
+ #95#66#85#76#76#69#84#83#44#32#47#47#32#49#57#13#10#32#32#73#84#69#77#95#65+
+ #77#77#79#95#66#85#76#76#69#84#83#95#66#79#88#44#32#47#47#32#50#48#13#10#32+
+ #32#73#84#69#77#95#65#77#77#79#95#83#72#69#76#76#83#44#32#47#47#32#50#49#13+
+ #10#32#32#73#84#69#77#95#65#77#77#79#95#83#72#69#76#76#83#95#66#79#88#44#32+
+ #47#47#32#50#50#13#10#32#32#73#84#69#77#95#65#77#77#79#95#82#79#67#75#69#84+
+ #44#32#47#47#32#50#51#13#10#32#32#73#84#69#77#95#65#77#77#79#95#82#79#67#75+
+ #69#84#95#66#79#88#44#32#47#47#32#50#52#13#10#32#32#73#84#69#77#95#65#77#77+
+ #79#95#67#69#76#76#44#32#47#47#32#50#53#13#10#32#32#73#84#69#77#95#65#77#77+
+ #79#95#67#69#76#76#95#66#73#71#44#32#47#47#32#50#54#13#10#32#32#73#84#69#77+
+ #95#65#77#77#79#95#66#65#67#75#80#65#67#75#44#32#47#47#32#50#55#13#10#32#32+
+ #73#84#69#77#95#75#69#89#95#82#69#68#44#32#47#47#32#50#56#13#10#32#32#73#84+
+ #69#77#95#75#69#89#95#71#82#69#69#78#44#32#47#47#32#50#57#13#10#32#32#73#84+
+ #69#77#95#75#69#89#95#66#76#85#69#44#32#47#47#32#51#48#13#10#32#32#73#84#69+
+ #77#95#87#69#65#80#79#78#95#73#82#79#78#70#73#83#84#44#32#47#47#32#51#49#13+
+ #10#32#32#73#84#69#77#95#87#69#65#80#79#78#95#80#73#83#84#79#76#44#32#47#47+
+ #32#51#50#13#10#32#32#73#84#69#77#95#66#79#84#84#76#69#44#32#47#47#32#51#51+
+ #13#10#32#32#73#84#69#77#95#72#69#76#77#69#84#44#32#47#47#32#51#52#13#10#32+
+ #32#73#84#69#77#95#74#69#84#80#65#67#75#44#32#47#47#32#51#53#13#10#32#32#73+
+ #84#69#77#95#73#78#86#73#83#44#32#47#47#32#51#54#13#10#32#32#73#84#69#77#95+
+ #87#69#65#80#79#78#95#70#76#65#77#69#84#72#82#79#87#69#82#44#32#47#47#32#51+
+ #55#13#10#32#32#73#84#69#77#95#65#77#77#79#95#70#85#69#76#67#65#78#44#32#47+
+ #47#32#51#56#13#10#32#32#47#47#32#98#97#99#107#119#97#114#100#32#99#111#109+
+ #112#97#116#105#98#105#108#105#116#121#32#97#108#105#97#115#101#115#13#10#32+
+ #32#73#84#69#77#95#87#69#65#80#79#78#95#83#85#80#69#82#80#85#76#69#77#69#84+
+ #32#61#32#49#56#44#32#32#47#47#32#73#84#69#77#95#87#69#65#80#79#78#95#83#85+
+ #80#69#82#67#72#65#73#78#71#85#78#13#10#32#32#47#47#13#10#32#32#73#84#69#77+
+ #95#77#65#88#32#61#32#77#65#88#44#32#47#47#32#115#116#111#114#101#32#116#104+
+ #101#32#108#97#115#116#32#105#116#101#109#39#115#32#105#100#32#105#110#32+
+ #104#101#114#101#32#117#115#101#32#116#104#105#115#32#105#110#32#102#111#114+
+ #32#108#111#111#112#115#13#10#125#13#10#13#10#98#105#116#115#101#116#32#73+
+ #116#101#109#79#112#116#105#111#110#32#123#13#10#32#32#73#84#69#77#95#79#80+
+ #84#73#79#78#95#78#79#78#69#32#61#32#48#44#32#47#47#32#48#13#10#32#32#73#84+
+ #69#77#95#79#80#84#73#79#78#95#79#78#76#89#68#77#44#32#47#47#32#49#13#10#32+
+ #32#73#84#69#77#95#79#80#84#73#79#78#95#70#65#76#76#44#32#47#47#32#50#13#10+
+ #125#13#10#13#10#101#110#117#109#32#65#114#101#97#84#121#112#101#32#123#13+
+ #10#32#32#65#82#69#65#95#78#79#78#69#44#32#47#47#32#48#13#10#32#32#65#82#69+
+ #65#95#80#76#65#89#69#82#80#79#73#78#84#49#44#32#47#47#32#49#13#10#32#32#65+
+ #82#69#65#95#80#76#65#89#69#82#80#79#73#78#84#50#44#32#47#47#32#50#13#10#32+
+ #32#65#82#69#65#95#68#77#80#79#73#78#84#44#32#47#47#32#51#13#10#32#32#65#82+
+ #69#65#95#82#69#68#70#76#65#71#44#32#47#47#32#52#13#10#32#32#65#82#69#65#95+
+ #66#76#85#69#70#76#65#71#44#32#47#47#32#53#13#10#32#32#65#82#69#65#95#68#79+
+ #77#70#76#65#71#44#32#47#47#32#54#13#10#32#32#65#82#69#65#95#82#69#68#84#69+
+ #65#77#80#79#73#78#84#44#32#47#47#32#55#13#10#32#32#65#82#69#65#95#66#76#85+
+ #69#84#69#65#77#80#79#73#78#84#44#32#47#47#32#56#13#10#125#13#10#13#10#101+
+ #110#117#109#32#77#111#110#115#116#101#114#32#123#13#10#32#32#77#79#78#83#84+
+ #69#82#95#78#79#78#69#44#32#47#47#32#48#13#10#32#32#77#79#78#83#84#69#82#95+
+ #68#69#77#79#78#44#32#47#47#32#49#13#10#32#32#77#79#78#83#84#69#82#95#73#77+
+ #80#44#32#47#47#32#50#13#10#32#32#77#79#78#83#84#69#82#95#90#79#77#66#89#44+
+ #32#47#47#32#51#13#10#32#32#77#79#78#83#84#69#82#95#83#69#82#71#44#32#47#47+
+ #32#52#13#10#32#32#77#79#78#83#84#69#82#95#67#89#66#69#82#44#32#47#47#32#53+
+ #13#10#32#32#77#79#78#83#84#69#82#95#67#71#85#78#44#32#47#47#32#54#13#10#32+
+ #32#77#79#78#83#84#69#82#95#66#65#82#79#78#44#32#47#47#32#55#13#10#32#32#77+
+ #79#78#83#84#69#82#95#75#78#73#71#72#84#44#32#47#47#32#56#13#10#32#32#77#79+
+ #78#83#84#69#82#95#67#65#67#79#44#32#47#47#32#57#13#10#32#32#77#79#78#83#84+
+ #69#82#95#83#79#85#76#44#32#47#47#32#49#48#13#10#32#32#77#79#78#83#84#69#82+
+ #95#80#65#73#78#44#32#47#47#32#49#49#13#10#32#32#77#79#78#83#84#69#82#95#83+
+ #80#73#68#69#82#44#32#47#47#32#49#50#13#10#32#32#77#79#78#83#84#69#82#95#66+
+ #83#80#44#32#47#47#32#49#51#13#10#32#32#77#79#78#83#84#69#82#95#77#65#78#67+
+ #85#66#44#32#47#47#32#49#52#13#10#32#32#77#79#78#83#84#69#82#95#83#75#69#76+
+ #44#32#47#47#32#49#53#13#10#32#32#77#79#78#83#84#69#82#95#86#73#76#69#44#32+
+ #47#47#32#49#54#13#10#32#32#77#79#78#83#84#69#82#95#70#73#83#72#44#32#47#47+
+ #32#49#55#13#10#32#32#77#79#78#83#84#69#82#95#66#65#82#82#69#76#44#32#47#47+
+ #32#49#56#13#10#32#32#77#79#78#83#84#69#82#95#82#79#66#79#44#32#47#47#32#49+
+ #57#13#10#32#32#77#79#78#83#84#69#82#95#77#65#78#44#32#47#47#32#50#48#13#10+
+ #32#32#47#47#32#97#108#105#97#115#101#115#32#40#102#105#120#109#101#58#32+
+ #105#116#32#115#104#111#117#108#100#32#98#101#32#96#77#79#78#83#84#69#82#95+
+ #90#79#77#66#73#69#32#61#32#77#79#78#83#84#69#82#95#90#79#77#66#89#96#33#41+
+ #13#10#32#32#77#79#78#83#84#69#82#95#90#79#77#66#73#69#32#61#32#51#44#13#10+
+ #125#13#10#13#10#101#110#117#109#32#77#111#110#115#116#101#114#66#101#104#97+
+ #118#105#111#117#114#32#123#13#10#32#32#66#72#95#78#79#82#77#65#76#44#32#47+
+ #47#32#48#13#10#32#32#66#72#95#75#73#76#76#69#82#44#32#47#47#32#49#13#10#32+
+ #32#66#72#95#77#65#78#73#65#67#44#32#47#47#32#50#13#10#32#32#66#72#95#73#78+
+ #83#65#78#69#44#32#47#47#32#51#13#10#32#32#66#72#95#67#65#78#78#73#66#65#76+
+ #44#32#47#47#32#52#13#10#32#32#66#72#95#71#79#79#68#44#32#47#47#32#53#13#10+
+ #125#13#10#13#10#101#110#117#109#32#84#114#105#103#103#101#114#83#104#111+
+ #116#32#123#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#80#73#83#84+
+ #79#76#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95+
+ #66#85#76#76#69#84#44#32#47#47#32#49#13#10#32#32#84#82#73#71#71#69#82#95#83+
+ #72#79#84#95#83#72#79#84#71#85#78#44#32#47#47#32#50#13#10#32#32#84#82#73#71+
+ #71#69#82#95#83#72#79#84#95#83#83#71#44#32#47#47#32#51#13#10#32#32#84#82#73+
+ #71#71#69#82#95#83#72#79#84#95#73#77#80#44#32#47#47#32#52#13#10#32#32#84#82+
+ #73#71#71#69#82#95#83#72#79#84#95#80#76#65#83#77#65#44#32#47#47#32#53#13#10+
+ #32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#83#80#73#68#69#82#44#32#47#47+
+ #32#54#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#67#65#67#79#44#32+
+ #47#47#32#55#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#66#65#82#79+
+ #78#44#32#47#47#32#56#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#77+
+ #65#78#67#85#66#44#32#47#47#32#57#13#10#32#32#84#82#73#71#71#69#82#95#83#72+
+ #79#84#95#82#69#86#44#32#47#47#32#49#48#13#10#32#32#84#82#73#71#71#69#82#95+
+ #83#72#79#84#95#82#79#67#75#69#84#44#32#47#47#32#49#49#13#10#32#32#84#82#73+
+ #71#71#69#82#95#83#72#79#84#95#66#70#71#44#32#47#47#32#49#50#13#10#32#32#84+
+ #82#73#71#71#69#82#95#83#72#79#84#95#69#88#80#76#44#32#47#47#32#49#51#13#10+
+ #32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#66#70#71#69#88#80#76#44#32#47+
+ #47#32#49#52#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#70#76#65#77+
+ #69#44#32#47#47#32#49#53#13#10#32#32#47#47#13#10#32#32#84#82#73#71#71#69#82+
+ #95#83#72#79#84#95#77#65#88#32#61#32#77#65#88#44#13#10#125#13#10#13#10#101+
+ #110#117#109#32#84#114#105#103#103#101#114#83#104#111#116#84#97#114#103#101+
+ #116#32#123#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71+
+ #69#84#95#78#79#78#69#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95+
+ #83#72#79#84#95#84#65#82#71#69#84#95#77#79#78#44#32#47#47#32#49#13#10#32#32+
+ #84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#80#76#82#44#32+
+ #47#47#32#50#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71+
+ #69#84#95#82#69#68#44#32#47#47#32#51#13#10#32#32#84#82#73#71#71#69#82#95#83+
+ #72#79#84#95#84#65#82#71#69#84#95#66#76#85#69#44#32#47#47#32#52#13#10#32#32+
+ #84#82#73#71#71#69#82#95#83#72#79#84#95#84#65#82#71#69#84#95#77#79#78#80#76+
+ #82#44#32#47#47#32#53#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#84+
+ #65#82#71#69#84#95#80#76#82#77#79#78#44#32#47#47#32#54#13#10#125#13#10#13#10+
+ #101#110#117#109#32#84#114#105#103#103#101#114#83#104#111#116#65#105#109#32+
+ #123#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#65#73#77#95#68#69#70+
+ #65#85#76#84#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#83#72#79+
+ #84#95#65#73#77#95#65#76#76#77#65#80#44#32#47#47#32#49#13#10#32#32#84#82#73+
+ #71#71#69#82#95#83#72#79#84#95#65#73#77#95#84#82#65#67#69#44#32#47#47#32#50+
+ #13#10#32#32#84#82#73#71#71#69#82#95#83#72#79#84#95#65#73#77#95#84#82#65#67+
+ #69#65#76#76#44#32#47#47#32#51#13#10#125#13#10#13#10#101#110#117#109#32#84+
+ #114#105#103#103#101#114#69#102#102#101#99#116#32#123#13#10#32#32#84#82#73+
+ #71#71#69#82#95#69#70#70#69#67#84#95#80#65#82#84#73#67#76#69#44#32#47#47#32+
+ #48#13#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#65#78#73#77#65+
+ #84#73#79#78#44#32#47#47#32#49#13#10#125#13#10#13#10#101#110#117#109#32#84+
+ #114#105#103#103#101#114#69#102#102#101#99#116#84#121#112#101#32#123#13#10+
+ #32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#83#76#73#81#85#73#68#44+
+ #32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#76+
+ #76#73#81#85#73#68#44#32#47#47#32#49#13#10#32#32#84#82#73#71#71#69#82#95#69+
+ #70#70#69#67#84#95#68#76#73#81#85#73#68#44#32#47#47#32#50#13#10#32#32#84#82+
+ #73#71#71#69#82#95#69#70#70#69#67#84#95#66#76#79#79#68#44#32#47#47#32#51#13+
+ #10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#83#80#65#82#75#44#32+
+ #47#47#32#52#13#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#66#85+
+ #66#66#76#69#44#32#47#47#32#53#13#10#32#32#84#82#73#71#71#69#82#95#69#70#70+
+ #69#67#84#95#77#65#88#32#61#32#77#65#88#44#13#10#125#13#10#13#10#101#110#117+
+ #109#32#84#114#105#103#103#101#114#69#102#102#101#99#116#80#111#115#32#123+
+ #13#10#32#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#80#79#83#95#67#69+
+ #78#84#69#82#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#69#70#70+
+ #69#67#84#95#80#79#83#95#65#82#69#65#44#32#47#47#32#49#13#10#125#13#10#13#10+
+ #101#110#117#109#32#84#114#105#103#103#101#114#77#117#115#105#99#65#99#116+
+ #105#111#110#32#123#13#10#32#32#84#82#73#71#71#69#82#95#77#85#83#73#67#95#65+
+ #67#84#73#79#78#95#83#84#79#80#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71+
+ #69#82#95#77#85#83#73#67#95#65#67#84#73#79#78#95#80#76#65#89#44#32#47#47#32+
+ #49#59#32#117#110#112#97#117#115#101#32#111#114#32#114#101#115#116#97#114+
+ #116#13#10#125#13#10#13#10#101#110#117#109#32#84#114#105#103#103#101#114#83+
+ #99#111#114#101#65#99#116#105#111#110#32#123#13#10#32#32#84#82#73#71#71#69+
+ #82#95#83#67#79#82#69#95#65#67#84#73#79#78#95#65#68#68#44#32#47#47#32#48#13+
+ #10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#65#67#84#73#79#78#95#83+
+ #85#66#44#32#47#47#32#49#13#10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69+
+ #95#65#67#84#73#79#78#95#87#73#78#44#32#47#47#32#50#13#10#32#32#84#82#73#71+
+ #71#69#82#95#83#67#79#82#69#95#65#67#84#73#79#78#95#76#79#79#83#69#44#32#47+
+ #47#32#51#13#10#125#13#10#13#10#101#110#117#109#32#84#114#105#103#103#101+
+ #114#77#101#115#115#97#103#101#68#101#115#116#32#123#13#10#32#32#84#82#73#71+
+ #71#69#82#95#77#69#83#83#65#71#69#95#68#69#83#84#95#77#69#44#32#47#47#32#48+
+ #13#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#68#69#83#84#95+
+ #77#89#95#84#69#65#77#44#32#47#47#32#49#13#10#32#32#84#82#73#71#71#69#82#95+
+ #77#69#83#83#65#71#69#95#68#69#83#84#95#69#78#69#77#89#95#84#69#65#77#44#32+
+ #47#47#32#50#13#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#68+
+ #69#83#84#95#82#69#68#95#84#69#65#77#44#32#47#47#32#51#13#10#32#32#84#82#73+
+ #71#71#69#82#95#77#69#83#83#65#71#69#95#68#69#83#84#95#66#76#85#69#95#84#69+
+ #65#77#44#32#47#47#32#52#13#10#32#32#84#82#73#71#71#69#82#95#77#69#83#83#65+
+ #71#69#95#68#69#83#84#95#69#86#69#82#89#79#78#69#44#32#47#47#32#53#13#10#125+
+ #13#10#13#10#101#110#117#109#32#84#114#105#103#103#101#114#77#101#115#115#97+
+ #103#101#75#105#110#100#32#123#13#10#32#32#84#82#73#71#71#69#82#95#77#69#83+
+ #83#65#71#69#95#75#73#78#68#95#67#72#65#84#44#32#47#47#32#48#13#10#32#32#84+
+ #82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#75#73#78#68#95#71#65#77#69#44+
+ #32#47#47#32#49#13#10#125#13#10#13#10#98#105#116#115#101#116#32#65#99#116+
+ #105#118#97#116#101#84#121#112#101#32#123#13#10#32#32#65#67#84#73#86#65#84+
+ #69#95#78#79#78#69#32#61#32#48#44#32#47#47#32#48#13#10#32#32#65#67#84#73#86+
+ #65#84#69#95#80#76#65#89#69#82#67#79#76#76#73#68#69#44#32#47#47#32#49#13#10+
#32#32#65#67#84#73#86#65#84#69#95#77#79#78#83#84#69#82#67#79#76#76#73#68#69+
- #44#32#47#47#32#50#10#32#32#65#67#84#73#86#65#84#69#95#80#76#65#89#69#82#80+
- #82#69#83#83#44#32#47#47#32#52#10#32#32#65#67#84#73#86#65#84#69#95#77#79#78+
- #83#84#69#82#80#82#69#83#83#44#32#47#47#32#56#10#32#32#65#67#84#73#86#65#84+
- #69#95#83#72#79#84#44#32#47#47#32#49#54#10#32#32#65#67#84#73#86#65#84#69#95+
- #78#79#77#79#78#83#84#69#82#44#32#47#47#32#51#50#10#32#32#65#67#84#73#86#65+
- #84#69#95#67#85#83#84#79#77#32#61#32#50#53#53#44#32#47#47#32#110#111#116#101+
- #32#116#104#97#116#32#34#100#105#114#101#99#116#32#97#115#115#105#103#110#34+
- #32#102#105#101#108#100#32#100#111#101#115#110#39#116#32#97#102#102#101#99+
- #116#32#98#105#116#32#99#111#117#110#116#101#114#10#125#10#10#98#105#116#115+
- #101#116#32#75#101#121#32#123#10#32#32#75#69#89#95#78#79#78#69#32#61#32#48+
- #44#32#47#47#32#48#10#32#32#75#69#89#95#82#69#68#44#32#47#47#32#49#10#32#32+
- #75#69#89#95#71#82#69#69#78#44#32#47#47#32#50#10#32#32#75#69#89#95#66#76#85+
- #69#44#32#47#47#32#52#10#32#32#75#69#89#95#82#69#68#84#69#65#77#44#32#47#47+
- #32#56#10#32#32#75#69#89#95#66#76#85#69#84#69#65#77#44#32#47#47#32#49#54#10+
- #125#10#10#101#110#117#109#32#72#105#116#84#121#112#101#32#123#10#32#32#72+
- #73#84#95#83#79#77#69#44#32#47#47#32#48#10#32#32#72#73#84#95#82#79#67#75#69+
- #84#44#32#47#47#32#49#10#32#32#72#73#84#95#66#70#71#44#32#47#47#32#50#10#32+
- #32#72#73#84#95#84#82#65#80#44#32#47#47#32#51#10#32#32#72#73#84#95#70#65#76+
- #76#44#32#47#47#32#52#10#32#32#72#73#84#95#87#65#84#69#82#44#32#47#47#32#53+
- #10#32#32#72#73#84#95#65#67#73#68#44#32#47#47#32#54#10#32#32#72#73#84#95#69+
- #76#69#67#84#82#79#44#32#47#47#32#55#10#32#32#72#73#84#95#70#76#65#77#69#44+
- #32#47#47#32#56#10#32#32#72#73#84#95#83#69#76#70#44#32#47#47#32#57#10#32#32+
- #72#73#84#95#68#73#83#67#79#78#44#32#47#47#32#49#48#10#125#10#10#10#47#47#47+
- #47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+
+ #44#32#47#47#32#50#13#10#32#32#65#67#84#73#86#65#84#69#95#80#76#65#89#69#82+
+ #80#82#69#83#83#44#32#47#47#32#52#13#10#32#32#65#67#84#73#86#65#84#69#95#77+
+ #79#78#83#84#69#82#80#82#69#83#83#44#32#47#47#32#56#13#10#32#32#65#67#84#73+
+ #86#65#84#69#95#83#72#79#84#44#32#47#47#32#49#54#13#10#32#32#65#67#84#73#86+
+ #65#84#69#95#78#79#77#79#78#83#84#69#82#44#32#47#47#32#51#50#13#10#32#32#65+
+ #67#84#73#86#65#84#69#95#67#85#83#84#79#77#32#61#32#50#53#53#44#32#47#47#32+
+ #110#111#116#101#32#116#104#97#116#32#34#100#105#114#101#99#116#32#97#115+
+ #115#105#103#110#34#32#102#105#101#108#100#32#100#111#101#115#110#39#116#32+
+ #97#102#102#101#99#116#32#98#105#116#32#99#111#117#110#116#101#114#13#10#125+
+ #13#10#13#10#98#105#116#115#101#116#32#75#101#121#32#123#13#10#32#32#75#69+
+ #89#95#78#79#78#69#32#61#32#48#44#32#47#47#32#48#13#10#32#32#75#69#89#95#82+
+ #69#68#44#32#47#47#32#49#13#10#32#32#75#69#89#95#71#82#69#69#78#44#32#47#47+
+ #32#50#13#10#32#32#75#69#89#95#66#76#85#69#44#32#47#47#32#52#13#10#32#32#75+
+ #69#89#95#82#69#68#84#69#65#77#44#32#47#47#32#56#13#10#32#32#75#69#89#95#66+
+ #76#85#69#84#69#65#77#44#32#47#47#32#49#54#13#10#125#13#10#13#10#101#110#117+
+ #109#32#72#105#116#84#121#112#101#32#123#13#10#32#32#72#73#84#95#83#79#77#69+
+ #44#32#47#47#32#48#13#10#32#32#72#73#84#95#82#79#67#75#69#84#44#32#47#47#32+
+ #49#13#10#32#32#72#73#84#95#66#70#71#44#32#47#47#32#50#13#10#32#32#72#73#84+
+ #95#84#82#65#80#44#32#47#47#32#51#13#10#32#32#72#73#84#95#70#65#76#76#44#32+
+ #47#47#32#52#13#10#32#32#72#73#84#95#87#65#84#69#82#44#32#47#47#32#53#13#10+
+ #32#32#72#73#84#95#65#67#73#68#44#32#47#47#32#54#13#10#32#32#72#73#84#95#69+
+ #76#69#67#84#82#79#44#32#47#47#32#55#13#10#32#32#72#73#84#95#70#76#65#77#69+
+ #44#32#47#47#32#56#13#10#32#32#72#73#84#95#83#69#76#70#44#32#47#47#32#57#13+
+ #10#32#32#72#73#84#95#68#73#83#67#79#78#44#32#47#47#32#49#48#13#10#125#13#10+
+ #13#10#13#10#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+
#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+
#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47#47+
- #47#47#10#47#47#32#118#97#114#105#111#117#115#32#116#114#105#103#103#101#114+
- #115#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73+
- #71#71#69#82#95#69#88#73#84#32#123#10#32#32#34#109#97#112#34#32#116#121#112+
- #101#32#99#104#97#114#91#49#54#93#32#111#102#102#115#101#116#32#48#32#119+
- #114#105#116#101#100#101#102#97#117#108#116#59#10#125#10#10#84#114#105#103+
- #103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#84#69#76+
- #69#80#79#82#84#32#123#10#32#32#34#116#97#114#103#101#116#34#32#116#121#112+
- #101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32#119#114#105+
- #116#101#100#101#102#97#117#108#116#59#10#32#32#34#100#50#100#34#32#116#121+
- #112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#56#32#100#101#102+
- #97#117#108#116#32#102#97#108#115#101#59#10#32#32#34#115#105#108#101#110#116+
- #34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#57#32+
- #100#101#102#97#117#108#116#32#102#97#108#115#101#59#10#32#32#34#100#105#114+
- #101#99#116#105#111#110#34#32#116#121#112#101#32#117#98#121#116#101#32#111+
- #102#102#115#101#116#32#49#48#32#101#110#117#109#32#68#105#114#84#121#112+
- #101#32#100#101#102#97#117#108#116#32#68#73#82#95#76#69#70#84#59#10#125#10+
- #10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#40#84#82#73#71+
- #71#69#82#95#79#80#69#78#68#79#79#82#44#32#84#82#73#71#71#69#82#95#67#76#79+
- #83#69#68#79#79#82#44#32#84#82#73#71#71#69#82#95#68#79#79#82#44#32#84#82#73+
- #71#71#69#82#95#68#79#79#82#53#44#32#84#82#73#71#71#69#82#95#67#76#79#83#69+
- #84#82#65#80#44#32#84#82#73#71#71#69#82#95#84#82#65#80#44#32#84#82#73#71#71+
- #69#82#95#76#73#70#84#85#80#44#32#84#82#73#71#71#69#82#95#76#73#70#84#68#79+
- #87#78#44#32#84#82#73#71#71#69#82#95#76#73#70#84#41#32#123#10#32#32#34#112+
- #97#110#101#108#105#100#34#32#116#121#112#101#32#105#110#116#32#111#102#102+
- #115#101#116#32#48#32#112#97#110#101#108#32#119#114#105#116#101#100#101#102+
- #97#117#108#116#59#10#32#32#34#115#105#108#101#110#116#34#32#116#121#112#101+
- #32#98#111#111#108#32#111#102#102#115#101#116#32#52#32#100#101#102#97#117+
- #108#116#32#102#97#108#115#101#59#10#32#32#34#100#50#100#34#32#116#121#112+
- #101#32#98#111#111#108#32#111#102#102#115#101#116#32#53#32#100#101#102#97+
- #117#108#116#32#102#97#108#115#101#59#10#125#10#10#84#114#105#103#103#101+
+ #47#47#47#47#47#47#47#47#47#13#10#47#47#32#118#97#114#105#111#117#115#32#116+
+ #114#105#103#103#101#114#115#13#10#84#114#105#103#103#101#114#68#97#116#97+
+ #32#102#111#114#32#84#82#73#71#71#69#82#95#69#88#73#84#32#123#13#10#32#32#34+
+ #109#97#112#34#32#116#121#112#101#32#99#104#97#114#91#49#54#93#32#111#102+
+ #102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59+
+ #13#10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111+
+ #114#32#84#82#73#71#71#69#82#95#84#69#76#69#80#79#82#84#32#123#13#10#32#32+
+ #34#116#97#114#103#101#116#34#32#116#121#112#101#32#112#111#105#110#116#32+
+ #111#102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108+
+ #116#59#13#10#32#32#34#100#50#100#34#32#116#121#112#101#32#98#111#111#108#32+
+ #111#102#102#115#101#116#32#56#32#100#101#102#97#117#108#116#32#102#97#108+
+ #115#101#59#13#10#32#32#34#115#105#108#101#110#116#34#32#116#121#112#101#32+
+ #98#111#111#108#32#111#102#102#115#101#116#32#57#32#100#101#102#97#117#108+
+ #116#32#102#97#108#115#101#59#13#10#32#32#34#100#105#114#101#99#116#105#111+
+ #110#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+
+ #32#49#48#32#101#110#117#109#32#68#105#114#84#121#112#101#32#100#101#102#97+
+ #117#108#116#32#68#73#82#95#76#69#70#84#59#13#10#125#13#10#13#10#84#114#105+
+ #103#103#101#114#68#97#116#97#32#102#111#114#32#40#84#82#73#71#71#69#82#95+
+ #79#80#69#78#68#79#79#82#44#32#84#82#73#71#71#69#82#95#67#76#79#83#69#68#79+
+ #79#82#44#32#84#82#73#71#71#69#82#95#68#79#79#82#44#32#84#82#73#71#71#69#82+
+ #95#68#79#79#82#53#44#32#84#82#73#71#71#69#82#95#67#76#79#83#69#84#82#65#80+
+ #44#32#84#82#73#71#71#69#82#95#84#82#65#80#44#32#84#82#73#71#71#69#82#95#76+
+ #73#70#84#85#80#44#32#84#82#73#71#71#69#82#95#76#73#70#84#68#79#87#78#44#32+
+ #84#82#73#71#71#69#82#95#76#73#70#84#41#32#123#13#10#32#32#34#112#97#110#101+
+ #108#105#100#34#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101#116+
+ #32#48#32#112#97#110#101#108#32#119#114#105#116#101#100#101#102#97#117#108+
+ #116#59#13#10#32#32#34#115#105#108#101#110#116#34#32#116#121#112#101#32#98+
+ #111#111#108#32#111#102#102#115#101#116#32#52#32#100#101#102#97#117#108#116+
+ #32#102#97#108#115#101#59#13#10#32#32#34#100#50#100#34#32#116#121#112#101#32+
+ #98#111#111#108#32#111#102#102#115#101#116#32#53#32#100#101#102#97#117#108+
+ #116#32#102#97#108#115#101#59#13#10#125#13#10#13#10#84#114#105#103#103#101+
#114#68#97#116#97#32#102#111#114#32#40#84#82#73#71#71#69#82#95#80#82#69#83+
#83#44#32#84#82#73#71#71#69#82#95#79#78#44#32#84#82#73#71#71#69#82#95#79#70+
- #70#44#32#84#82#73#71#71#69#82#95#79#78#79#70#70#41#32#123#10#32#32#34#112+
- #111#115#105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32+
- #111#102#102#115#101#116#32#48#32#97#115#32#116#120#121#32#100#101#102#97+
- #117#108#116#32#40#48#32#48#41#32#119#114#105#116#101#100#101#102#97#117#108+
- #116#59#10#32#32#34#115#105#122#101#34#32#116#121#112#101#32#115#105#122#101+
- #32#111#102#102#115#101#116#32#56#32#97#115#32#116#119#104#32#100#101#102#97+
- #117#108#116#32#40#48#32#48#41#59#10#32#32#34#119#97#105#116#34#32#116#121+
- #112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#49#50#32+
- #100#101#102#97#117#108#116#32#48#59#10#32#32#34#99#111#117#110#116#34#32#97+
- #108#105#97#115#32#112#114#101#115#115#67#111#117#110#116#32#116#121#112#101+
- #32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#49#52#32#100#101+
- #102#97#117#108#116#32#48#59#10#32#32#34#109#111#110#115#116#101#114#105#100+
- #34#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101#116#32#49#54#32+
- #109#111#110#115#116#101#114#32#97#115#32#109#111#110#115#116#101#114#105+
- #100#32#100#101#102#97#117#108#116#32#110#117#108#108#59#10#32#32#34#101#120+
- #116#95#114#97#110#100#111#109#34#32#116#121#112#101#32#98#111#111#108#32+
- #111#102#102#115#101#116#32#50#48#32#100#101#102#97#117#108#116#32#102#97+
- #108#115#101#59#10#32#32#47#47#32#116#104#105#115#32#111#110#101#32#105#115+
- #32#102#111#114#32#109#111#118#105#110#103#32#112#108#97#116#102#111#114#109+
- #115#10#32#32#34#112#97#110#101#108#105#100#34#32#112#97#110#101#108#32#100+
- #101#102#97#117#108#116#32#110#117#108#108#59#10#32#32#34#115#105#108#101+
- #110#116#34#32#116#121#112#101#32#98#111#111#108#32#100#101#102#97#117#108+
- #116#32#116#114#117#101#59#10#32#32#34#115#111#117#110#100#34#32#116#121#112+
- #101#32#115#116#114#105#110#103#32#100#101#102#97#117#108#116#32#34#34#59#10+
- #125#10#10#101#110#117#109#32#84#114#105#103#103#101#114#83#99#111#114#101+
- #84#101#97#109#32#123#10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#84+
- #69#65#77#95#77#73#78#69#95#82#69#68#44#32#47#47#32#48#10#32#32#84#82#73#71+
- #71#69#82#95#83#67#79#82#69#95#84#69#65#77#95#77#73#78#69#95#66#76#85#69#44+
- #32#47#47#32#49#10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#84#69#65+
- #77#95#70#79#82#67#69#95#82#69#68#44#32#47#47#32#50#10#32#32#84#82#73#71#71+
- #69#82#95#83#67#79#82#69#95#84#69#65#77#95#70#79#82#67#69#95#66#76#85#69#44+
- #32#47#47#32#51#10#125#10#10#84#114#105#103#103#101#114#68#97#116#97#32#102+
- #111#114#32#84#82#73#71#71#69#82#95#83#69#67#82#69#84#32#123#10#125#10#10#84+
- #114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82+
- #95#84#69#88#84#85#82#69#32#123#10#32#32#34#97#99#116#105#118#97#116#101#95+
- #111#110#99#101#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115+
- #101#116#32#48#32#100#101#102#97#117#108#116#32#102#97#108#115#101#32#119+
- #114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#97#110#105#109#97+
+ #70#44#32#84#82#73#71#71#69#82#95#79#78#79#70#70#41#32#123#13#10#32#32#34+
+ #112#111#115#105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110+
+ #116#32#111#102#102#115#101#116#32#48#32#97#115#32#116#120#121#32#100#101+
+ #102#97#117#108#116#32#40#48#32#48#41#32#119#114#105#116#101#100#101#102#97+
+ #117#108#116#59#13#10#32#32#34#115#105#122#101#34#32#116#121#112#101#32#115+
+ #105#122#101#32#111#102#102#115#101#116#32#56#32#97#115#32#116#119#104#32+
+ #100#101#102#97#117#108#116#32#40#48#32#48#41#59#13#10#32#32#34#119#97#105+
+ #116#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+
+ #116#32#49#50#32#100#101#102#97#117#108#116#32#48#59#13#10#32#32#34#99#111+
+ #117#110#116#34#32#97#108#105#97#115#32#112#114#101#115#115#67#111#117#110+
+ #116#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+
+ #116#32#49#52#32#100#101#102#97#117#108#116#32#48#59#13#10#32#32#34#109#111+
+ #110#115#116#101#114#105#100#34#32#116#121#112#101#32#105#110#116#32#111#102+
+ #102#115#101#116#32#49#54#32#109#111#110#115#116#101#114#32#97#115#32#109+
+ #111#110#115#116#101#114#105#100#32#100#101#102#97#117#108#116#32#110#117+
+ #108#108#59#13#10#32#32#34#101#120#116#95#114#97#110#100#111#109#34#32#116+
+ #121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#50#48#32#100+
+ #101#102#97#117#108#116#32#102#97#108#115#101#59#13#10#32#32#47#47#32#116+
+ #104#105#115#32#111#110#101#32#105#115#32#102#111#114#32#109#111#118#105#110+
+ #103#32#112#108#97#116#102#111#114#109#115#13#10#32#32#34#112#97#110#101#108+
+ #105#100#34#32#112#97#110#101#108#32#100#101#102#97#117#108#116#32#110#117+
+ #108#108#59#13#10#32#32#34#115#105#108#101#110#116#34#32#116#121#112#101#32+
+ #98#111#111#108#32#100#101#102#97#117#108#116#32#116#114#117#101#59#13#10#32+
+ #32#34#115#111#117#110#100#34#32#116#121#112#101#32#115#116#114#105#110#103+
+ #32#100#101#102#97#117#108#116#32#34#34#59#13#10#125#13#10#13#10#101#110#117+
+ #109#32#84#114#105#103#103#101#114#83#99#111#114#101#84#101#97#109#32#123#13+
+ #10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#84#69#65#77#95#77#73#78+
+ #69#95#82#69#68#44#32#47#47#32#48#13#10#32#32#84#82#73#71#71#69#82#95#83#67+
+ #79#82#69#95#84#69#65#77#95#77#73#78#69#95#66#76#85#69#44#32#47#47#32#49#13+
+ #10#32#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#84#69#65#77#95#70#79#82+
+ #67#69#95#82#69#68#44#32#47#47#32#50#13#10#32#32#84#82#73#71#71#69#82#95#83+
+ #67#79#82#69#95#84#69#65#77#95#70#79#82#67#69#95#66#76#85#69#44#32#47#47#32+
+ #51#13#10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111+
+ #114#32#84#82#73#71#71#69#82#95#83#69#67#82#69#84#32#123#13#10#125#13#10#13+
+ #10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71+
+ #69#82#95#84#69#88#84#85#82#69#32#123#13#10#32#32#34#97#99#116#105#118#97+
#116#101#95#111#110#99#101#34#32#116#121#112#101#32#98#111#111#108#32#111+
- #102#102#115#101#116#32#49#32#100#101#102#97#117#108#116#32#102#97#108#115+
- #101#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#125#10#10#84+
- #114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82+
- #95#83#79#85#78#68#32#123#10#32#32#34#115#111#117#110#100#95#110#97#109#101+
- #34#32#116#121#112#101#32#99#104#97#114#91#54#52#93#32#111#102#102#115#101+
- #116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+
- #118#111#108#117#109#101#34#32#116#121#112#101#32#117#98#121#116#101#32#111+
- #102#102#115#101#116#32#54#52#32#100#101#102#97#117#108#116#32#48#32#119#114+
- #105#116#101#100#101#102#97#117#108#116#59#32#47#47#63#63#63#32#100#101#102+
- #97#117#108#116#32#63#63#63#10#32#32#34#112#97#110#34#32#116#121#112#101#32+
- #117#98#121#116#101#32#111#102#102#115#101#116#32#54#53#32#100#101#102#97+
- #117#108#116#32#48#59#10#32#32#34#108#111#99#97#108#34#32#116#121#112#101#32+
- #98#111#111#108#32#111#102#102#115#101#116#32#54#54#32#100#101#102#97#117+
- #108#116#32#116#114#117#101#59#32#47#47#63#63#63#32#100#101#102#97#117#108+
- #116#32#63#63#63#10#32#32#34#112#108#97#121#95#99#111#117#110#116#34#32#116+
- #121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#54#55#32+
- #100#101#102#97#117#108#116#32#49#59#10#32#32#34#115#111#117#110#100#95#115+
- #119#105#116#99#104#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102+
- #115#101#116#32#54#56#32#100#101#102#97#117#108#116#32#102#97#108#115#101#59+
- #32#47#47#63#63#63#32#100#101#102#97#117#108#116#32#63#63#63#10#125#10#10#84+
- #114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82+
- #95#83#80#65#87#78#77#79#78#83#84#69#82#32#123#10#32#32#34#112#111#115#105+
- #116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102#102+
- #115#101#116#32#48#32#97#115#32#116#120#121#32#119#114#105#116#101#100#101+
- #102#97#117#108#116#59#10#32#32#34#116#121#112#101#34#32#97#108#105#97#115+
- #32#115#112#97#119#110#77#111#110#115#84#121#112#101#32#116#121#112#101#32+
- #117#98#121#116#101#32#111#102#102#115#101#116#32#56#32#101#110#117#109#32+
- #77#111#110#115#116#101#114#32#100#101#102#97#117#108#116#32#77#79#78#83#84+
- #69#82#95#73#77#80#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10+
- #32#32#34#104#101#97#108#116#104#34#32#116#121#112#101#32#105#110#116#32#111+
- #102#102#115#101#116#32#49#50#32#119#114#105#116#101#100#101#102#97#117#108+
- #116#59#10#32#32#34#100#105#114#101#99#116#105#111#110#34#32#116#121#112#101+
- #32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#54#32#101#110#117+
- #109#32#68#105#114#84#121#112#101#32#100#101#102#97#117#108#116#32#68#73#82+
- #95#76#69#70#84#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32+
- #32#34#97#99#116#105#118#101#34#32#116#121#112#101#32#98#111#111#108#32#111+
- #102#102#115#101#116#32#49#55#32#100#101#102#97#117#108#116#32#116#114#117+
- #101#59#10#32#32#34#99#111#117#110#116#34#32#97#108#105#97#115#32#109#111+
- #110#115#67#111#117#110#116#32#116#121#112#101#32#105#110#116#32#111#102#102+
- #115#101#116#32#50#48#32#100#101#102#97#117#108#116#32#49#32#119#114#105#116+
- #101#100#101#102#97#117#108#116#59#10#32#32#34#101#102#102#101#99#116#34#32+
- #116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#50#52+
- #32#101#110#117#109#32#69#102#102#101#99#116#65#99#116#105#111#110#32#100+
- #101#102#97#117#108#116#32#69#70#70#69#67#84#95#78#79#78#69#32#119#114#105+
- #116#101#100#101#102#97#117#108#116#59#10#32#32#34#109#97#120#34#32#116#121+
+ #102#102#115#101#116#32#48#32#100#101#102#97#117#108#116#32#102#97#108#115+
+ #101#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#97+
+ #110#105#109#97#116#101#95#111#110#99#101#34#32#116#121#112#101#32#98#111+
+ #111#108#32#111#102#102#115#101#116#32#49#32#100#101#102#97#117#108#116#32+
+ #102#97#108#115#101#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+
+ #10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114+
+ #32#84#82#73#71#71#69#82#95#83#79#85#78#68#32#123#13#10#32#32#34#115#111#117+
+ #110#100#95#110#97#109#101#34#32#116#121#112#101#32#99#104#97#114#91#54#52+
+ #93#32#111#102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97+
+ #117#108#116#59#13#10#32#32#34#118#111#108#117#109#101#34#32#116#121#112#101+
+ #32#117#98#121#116#101#32#111#102#102#115#101#116#32#54#52#32#100#101#102#97+
+ #117#108#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#32+
+ #47#47#63#63#63#32#100#101#102#97#117#108#116#32#63#63#63#13#10#32#32#34#112+
+ #97#110#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+
+ #116#32#54#53#32#100#101#102#97#117#108#116#32#48#59#13#10#32#32#34#108#111+
+ #99#97#108#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101+
+ #116#32#54#54#32#100#101#102#97#117#108#116#32#116#114#117#101#59#32#47#47+
+ #63#63#63#32#100#101#102#97#117#108#116#32#63#63#63#13#10#32#32#34#112#108+
+ #97#121#95#99#111#117#110#116#34#32#116#121#112#101#32#117#98#121#116#101#32+
+ #111#102#102#115#101#116#32#54#55#32#100#101#102#97#117#108#116#32#49#59#13+
+ #10#32#32#34#115#111#117#110#100#95#115#119#105#116#99#104#34#32#116#121#112+
+ #101#32#98#111#111#108#32#111#102#102#115#101#116#32#54#56#32#100#101#102#97+
+ #117#108#116#32#102#97#108#115#101#59#32#47#47#63#63#63#32#100#101#102#97+
+ #117#108#116#32#63#63#63#13#10#125#13#10#13#10#84#114#105#103#103#101#114#68+
+ #97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#83#80#65#87#78#77#79#78+
+ #83#84#69#82#32#123#13#10#32#32#34#112#111#115#105#116#105#111#110#34#32#116+
+ #121#112#101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32#97+
+ #115#32#116#120#121#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+
+ #10#32#32#34#116#121#112#101#34#32#97#108#105#97#115#32#115#112#97#119#110+
+ #77#111#110#115#84#121#112#101#32#116#121#112#101#32#117#98#121#116#101#32+
+ #111#102#102#115#101#116#32#56#32#101#110#117#109#32#77#111#110#115#116#101+
+ #114#32#100#101#102#97#117#108#116#32#77#79#78#83#84#69#82#95#73#77#80#32+
+ #119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#104#101#97+
+ #108#116#104#34#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101#116+
+ #32#49#50#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32+
+ #34#100#105#114#101#99#116#105#111#110#34#32#116#121#112#101#32#117#98#121+
+ #116#101#32#111#102#102#115#101#116#32#49#54#32#101#110#117#109#32#68#105+
+ #114#84#121#112#101#32#100#101#102#97#117#108#116#32#68#73#82#95#76#69#70#84+
+ #32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#97#99+
+ #116#105#118#101#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115+
+ #101#116#32#49#55#32#100#101#102#97#117#108#116#32#116#114#117#101#59#13#10+
+ #32#32#34#99#111#117#110#116#34#32#97#108#105#97#115#32#109#111#110#115#67+
+ #111#117#110#116#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101+
+ #116#32#50#48#32#100#101#102#97#117#108#116#32#49#32#119#114#105#116#101#100+
+ #101#102#97#117#108#116#59#13#10#32#32#34#101#102#102#101#99#116#34#32#116+
+ #121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#50#52#32+
+ #101#110#117#109#32#69#102#102#101#99#116#65#99#116#105#111#110#32#100#101+
+ #102#97#117#108#116#32#69#70#70#69#67#84#95#78#79#78#69#32#119#114#105#116+
+ #101#100#101#102#97#117#108#116#59#13#10#32#32#34#109#97#120#34#32#116#121+
#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#50#54#32+
#100#101#102#97#117#108#116#32#49#32#119#114#105#116#101#100#101#102#97#117+
- #108#116#59#10#32#32#34#100#101#108#97#121#34#32#116#121#112#101#32#117#115+
- #104#111#114#116#32#111#102#102#115#101#116#32#50#56#32#100#101#102#97#117+
- #108#116#32#49#48#48#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59+
- #10#32#32#34#98#101#104#97#118#105#111#117#114#34#32#116#121#112#101#32#117+
- #98#121#116#101#32#111#102#102#115#101#116#32#51#48#32#101#110#117#109#32#77+
- #111#110#115#116#101#114#66#101#104#97#118#105#111#117#114#32#100#101#102#97+
- #117#108#116#32#66#72#95#78#79#82#77#65#76#59#10#125#10#10#84#114#105#103+
- #103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#83#80#65+
- #87#78#73#84#69#77#32#123#10#32#32#34#112#111#115#105#116#105#111#110#34#32+
- #116#121#112#101#32#112#111#105#110#116#32#111#102#102#115#101#116#32#48#32+
- #97#115#32#116#120#121#32#119#114#105#116#101#100#101#102#97#117#108#116#59+
- #10#32#32#34#116#121#112#101#34#32#97#108#105#97#115#32#115#112#97#119#110+
- #73#116#101#109#84#121#112#101#32#116#121#112#101#32#117#98#121#116#101#32+
- #111#102#102#115#101#116#32#56#32#101#110#117#109#32#73#116#101#109#32#100+
- #101#102#97#117#108#116#32#73#84#69#77#95#78#79#78#69#32#119#114#105#116#101+
- #100#101#102#97#117#108#116#59#10#32#32#34#103#114#97#118#105#116#121#34#32+
- #116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#57#32#100+
- #101#102#97#117#108#116#32#116#114#117#101#59#10#32#32#34#100#109#111#110+
- #108#121#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116+
- #32#49#48#32#100#101#102#97#117#108#116#32#102#97#108#115#101#59#10#32#32#34+
- #99#111#117#110#116#34#32#97#108#105#97#115#32#105#116#101#109#67#111#117+
- #110#116#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101#116#32#49+
- #50#32#100#101#102#97#117#108#116#32#49#59#10#32#32#34#101#102#102#101#99+
- #116#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+
- #32#49#54#32#101#110#117#109#32#69#102#102#101#99#116#65#99#116#105#111#110+
- #32#100#101#102#97#117#108#116#32#69#70#70#69#67#84#95#78#79#78#69#32#119+
- #114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#109#97#120#34#32+
- #116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#49+
- #56#32#100#101#102#97#117#108#116#32#49#59#10#32#32#34#100#101#108#97#121#34+
- #32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32+
- #50#48#32#100#101#102#97#117#108#116#32#49#48#48#48#32#119#114#105#116#101+
- #100#101#102#97#117#108#116#59#10#125#10#10#84#114#105#103#103#101#114#68#97+
- #116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#77#85#83#73#67#32#123#10+
- #32#32#34#110#97#109#101#34#32#97#108#105#97#115#32#109#117#115#105#99#78#97+
- #109#101#32#116#121#112#101#32#99#104#97#114#91#54#52#93#32#111#102#102#115+
- #101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32+
- #34#97#99#116#105#111#110#34#32#97#108#105#97#115#32#109#117#115#105#99#65+
- #99#116#105#111#110#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+
- #115#101#116#32#54#52#32#101#110#117#109#32#84#114#105#103#103#101#114#77+
- #117#115#105#99#65#99#116#105#111#110#32#119#114#105#116#101#100#101#102#97+
- #117#108#116#59#10#125#10#10#84#114#105#103#103#101#114#68#97#116#97#32#102+
- #111#114#32#84#82#73#71#71#69#82#95#80#85#83#72#32#123#10#32#32#34#97#110+
+ #108#116#59#13#10#32#32#34#100#101#108#97#121#34#32#116#121#112#101#32#117+
+ #115#104#111#114#116#32#111#102#102#115#101#116#32#50#56#32#100#101#102#97+
+ #117#108#116#32#49#48#48#48#32#119#114#105#116#101#100#101#102#97#117#108+
+ #116#59#13#10#32#32#34#98#101#104#97#118#105#111#117#114#34#32#116#121#112+
+ #101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#51#48#32#101#110+
+ #117#109#32#77#111#110#115#116#101#114#66#101#104#97#118#105#111#117#114#32+
+ #100#101#102#97#117#108#116#32#66#72#95#78#79#82#77#65#76#59#13#10#125#13#10+
+ #13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71+
+ #71#69#82#95#83#80#65#87#78#73#84#69#77#32#123#13#10#32#32#34#112#111#115+
+ #105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102+
+ #102#115#101#116#32#48#32#97#115#32#116#120#121#32#119#114#105#116#101#100+
+ #101#102#97#117#108#116#59#13#10#32#32#34#116#121#112#101#34#32#97#108#105+
+ #97#115#32#115#112#97#119#110#73#116#101#109#84#121#112#101#32#116#121#112+
+ #101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#56#32#101#110#117+
+ #109#32#73#116#101#109#32#100#101#102#97#117#108#116#32#73#84#69#77#95#78#79+
+ #78#69#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34+
+ #103#114#97#118#105#116#121#34#32#116#121#112#101#32#98#111#111#108#32#111+
+ #102#102#115#101#116#32#57#32#100#101#102#97#117#108#116#32#116#114#117#101+
+ #59#13#10#32#32#34#100#109#111#110#108#121#34#32#116#121#112#101#32#98#111+
+ #111#108#32#111#102#102#115#101#116#32#49#48#32#100#101#102#97#117#108#116+
+ #32#102#97#108#115#101#59#13#10#32#32#34#99#111#117#110#116#34#32#97#108#105+
+ #97#115#32#105#116#101#109#67#111#117#110#116#32#116#121#112#101#32#105#110+
+ #116#32#111#102#102#115#101#116#32#49#50#32#100#101#102#97#117#108#116#32#49+
+ #59#13#10#32#32#34#101#102#102#101#99#116#34#32#116#121#112#101#32#117#98+
+ #121#116#101#32#111#102#102#115#101#116#32#49#54#32#101#110#117#109#32#69+
+ #102#102#101#99#116#65#99#116#105#111#110#32#100#101#102#97#117#108#116#32+
+ #69#70#70#69#67#84#95#78#79#78#69#32#119#114#105#116#101#100#101#102#97#117+
+ #108#116#59#13#10#32#32#34#109#97#120#34#32#116#121#112#101#32#117#115#104+
+ #111#114#116#32#111#102#102#115#101#116#32#49#56#32#100#101#102#97#117#108+
+ #116#32#49#59#13#10#32#32#34#100#101#108#97#121#34#32#116#121#112#101#32#117+
+ #115#104#111#114#116#32#111#102#102#115#101#116#32#50#48#32#100#101#102#97+
+ #117#108#116#32#49#48#48#48#32#119#114#105#116#101#100#101#102#97#117#108+
+ #116#59#13#10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102+
+ #111#114#32#84#82#73#71#71#69#82#95#77#85#83#73#67#32#123#13#10#32#32#34#110+
+ #97#109#101#34#32#97#108#105#97#115#32#109#117#115#105#99#78#97#109#101#32+
+ #116#121#112#101#32#99#104#97#114#91#54#52#93#32#111#102#102#115#101#116#32+
+ #48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#97+
+ #99#116#105#111#110#34#32#97#108#105#97#115#32#109#117#115#105#99#65#99#116+
+ #105#111#110#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+
+ #116#32#54#52#32#101#110#117#109#32#84#114#105#103#103#101#114#77#117#115+
+ #105#99#65#99#116#105#111#110#32#119#114#105#116#101#100#101#102#97#117#108+
+ #116#59#13#10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102+
+ #111#114#32#84#82#73#71#71#69#82#95#80#85#83#72#32#123#13#10#32#32#34#97#110+
#103#108#101#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102+
- #115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10+
- #32#32#34#102#111#114#99#101#34#32#116#121#112#101#32#117#98#121#116#101#32+
- #111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101#102#97#117#108+
- #116#59#10#32#32#34#114#101#115#101#116#95#118#101#108#111#99#105#116#121#34+
- #32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#51#32+
- #100#101#102#97#117#108#116#32#102#97#108#115#101#32#119#114#105#116#101#100+
- #101#102#97#117#108#116#59#10#125#10#10#84#114#105#103#103#101#114#68#97#116+
- #97#32#102#111#114#32#84#82#73#71#71#69#82#95#83#67#79#82#69#32#123#10#32#32+
- #34#97#99#116#105#111#110#34#32#97#108#105#97#115#32#115#99#111#114#101#65+
- #99#116#105#111#110#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+
- #115#101#116#32#48#32#101#110#117#109#32#84#114#105#103#103#101#114#83#99+
- #111#114#101#65#99#116#105#111#110#32#100#101#102#97#117#108#116#32#84#82#73+
- #71#71#69#82#95#83#67#79#82#69#95#65#67#84#73#79#78#95#65#68#68#32#119#114+
- #105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#99#111#117#110#116#34+
- #32#97#108#105#97#115#32#115#99#111#114#101#67#111#117#110#116#32#116#121+
- #112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#32#100#101+
- #102#97#117#108#116#32#49#32#119#114#105#116#101#100#101#102#97#117#108#116+
- #59#10#32#32#34#116#101#97#109#34#32#97#108#105#97#115#32#115#99#111#114#101+
- #84#101#97#109#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115+
- #101#116#32#50#32#101#110#117#109#32#84#114#105#103#103#101#114#83#99#111+
- #114#101#84#101#97#109#32#119#114#105#116#101#100#101#102#97#117#108#116#59+
- #10#32#32#34#99#111#110#115#111#108#101#34#32#97#108#105#97#115#32#115#99+
- #111#114#101#67#111#110#32#116#121#112#101#32#98#111#111#108#32#111#102#102+
- #115#101#116#32#51#32#100#101#102#97#117#108#116#32#102#97#108#115#101#32+
- #119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#109#101#115+
- #115#97#103#101#34#32#97#108#105#97#115#32#115#99#111#114#101#77#115#103#32+
- #116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32#52#32#100+
- #101#102#97#117#108#116#32#116#114#117#101#32#119#114#105#116#101#100#101+
- #102#97#117#108#116#59#10#125#10#10#84#114#105#103#103#101#114#68#97#116#97+
- #32#102#111#114#32#84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#32#123#10#32+
- #32#34#107#105#110#100#34#32#116#121#112#101#32#117#98#121#116#101#32#111+
- #102#102#115#101#116#32#48#32#101#110#117#109#32#84#114#105#103#103#101#114+
- #77#101#115#115#97#103#101#75#105#110#100#32#100#101#102#97#117#108#116#32+
- #84#82#73#71#71#69#82#95#77#69#83#83#65#71#69#95#75#73#78#68#95#71#65#77#69+
- #32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#100#101+
- #115#116#34#32#97#108#105#97#115#32#109#115#103#68#101#115#116#32#116#121+
- #112#101#32#117#98#121#116#101#32#101#110#117#109#32#84#114#105#103#103#101+
- #114#77#101#115#115#97#103#101#68#101#115#116#32#111#102#102#115#101#116#32+
- #49#59#10#32#32#34#116#101#120#116#34#32#116#121#112#101#32#99#104#97#114#91+
- #49#48#48#93#32#111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101+
- #102#97#117#108#116#59#10#32#32#34#116#105#109#101#34#32#97#108#105#97#115+
- #32#109#115#103#84#105#109#101#32#116#121#112#101#32#117#115#104#111#114#116+
- #32#111#102#102#115#101#116#32#49#48#50#32#119#114#105#116#101#100#101#102+
- #97#117#108#116#59#10#125#10#10#84#114#105#103#103#101#114#68#97#116#97#32+
- #102#111#114#32#84#82#73#71#71#69#82#95#68#65#77#65#71#69#32#123#10#32#32#34+
- #97#109#111#117#110#116#34#32#116#121#112#101#32#117#115#104#111#114#116#32+
- #111#102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108+
- #116#59#10#32#32#34#105#110#116#101#114#118#97#108#34#32#116#121#112#101#32+
- #117#115#104#111#114#116#32#111#102#102#115#101#116#32#50#32#119#114#105#116+
- #101#100#101#102#97#117#108#116#59#10#32#32#34#107#105#110#100#34#32#116#121+
- #112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#52#32#101#110+
- #117#109#32#72#105#116#84#121#112#101#32#100#101#102#97#117#108#116#32#72#73+
- #84#95#83#79#77#69#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10+
- #125#10#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82+
- #73#71#71#69#82#95#72#69#65#76#84#72#32#123#10#32#32#34#97#109#111#117#110+
+ #115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+
+ #10#32#32#34#102#111#114#99#101#34#32#116#121#112#101#32#117#98#121#116#101+
+ #32#111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101#102#97#117+
+ #108#116#59#13#10#32#32#34#114#101#115#101#116#95#118#101#108#111#99#105#116+
+ #121#34#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101#116#32+
+ #51#32#100#101#102#97#117#108#116#32#102#97#108#115#101#32#119#114#105#116+
+ #101#100#101#102#97#117#108#116#59#13#10#125#13#10#13#10#84#114#105#103#103+
+ #101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#83#67#79#82+
+ #69#32#123#13#10#32#32#34#97#99#116#105#111#110#34#32#97#108#105#97#115#32+
+ #115#99#111#114#101#65#99#116#105#111#110#32#116#121#112#101#32#117#98#121+
+ #116#101#32#111#102#102#115#101#116#32#48#32#101#110#117#109#32#84#114#105+
+ #103#103#101#114#83#99#111#114#101#65#99#116#105#111#110#32#100#101#102#97+
+ #117#108#116#32#84#82#73#71#71#69#82#95#83#67#79#82#69#95#65#67#84#73#79#78+
+ #95#65#68#68#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32+
+ #32#34#99#111#117#110#116#34#32#97#108#105#97#115#32#115#99#111#114#101#67+
+ #111#117#110#116#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115+
+ #101#116#32#49#32#100#101#102#97#117#108#116#32#49#32#119#114#105#116#101+
+ #100#101#102#97#117#108#116#59#13#10#32#32#34#116#101#97#109#34#32#97#108+
+ #105#97#115#32#115#99#111#114#101#84#101#97#109#32#116#121#112#101#32#117#98+
+ #121#116#101#32#111#102#102#115#101#116#32#50#32#101#110#117#109#32#84#114+
+ #105#103#103#101#114#83#99#111#114#101#84#101#97#109#32#119#114#105#116#101+
+ #100#101#102#97#117#108#116#59#13#10#32#32#34#99#111#110#115#111#108#101#34+
+ #32#97#108#105#97#115#32#115#99#111#114#101#67#111#110#32#116#121#112#101#32+
+ #98#111#111#108#32#111#102#102#115#101#116#32#51#32#100#101#102#97#117#108+
+ #116#32#102#97#108#115#101#32#119#114#105#116#101#100#101#102#97#117#108#116+
+ #59#13#10#32#32#34#109#101#115#115#97#103#101#34#32#97#108#105#97#115#32#115+
+ #99#111#114#101#77#115#103#32#116#121#112#101#32#98#111#111#108#32#111#102+
+ #102#115#101#116#32#52#32#100#101#102#97#117#108#116#32#116#114#117#101#32+
+ #119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#125#13#10#13#10#84+
+ #114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82+
+ #95#77#69#83#83#65#71#69#32#123#13#10#32#32#34#107#105#110#100#34#32#116#121+
+ #112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#48#32#101#110+
+ #117#109#32#84#114#105#103#103#101#114#77#101#115#115#97#103#101#75#105#110+
+ #100#32#100#101#102#97#117#108#116#32#84#82#73#71#71#69#82#95#77#69#83#83#65+
+ #71#69#95#75#73#78#68#95#71#65#77#69#32#119#114#105#116#101#100#101#102#97+
+ #117#108#116#59#13#10#32#32#34#100#101#115#116#34#32#97#108#105#97#115#32+
+ #109#115#103#68#101#115#116#32#116#121#112#101#32#117#98#121#116#101#32#101+
+ #110#117#109#32#84#114#105#103#103#101#114#77#101#115#115#97#103#101#68#101+
+ #115#116#32#111#102#102#115#101#116#32#49#59#13#10#32#32#34#116#101#120#116+
+ #34#32#116#121#112#101#32#99#104#97#114#91#49#48#48#93#32#111#102#102#115+
+ #101#116#32#50#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32+
+ #32#34#116#105#109#101#34#32#97#108#105#97#115#32#109#115#103#84#105#109#101+
+ #32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32+
+ #49#48#50#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#125#13+
+ #10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73+
+ #71#71#69#82#95#68#65#77#65#71#69#32#123#13#10#32#32#34#97#109#111#117#110+
#116#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+
- #116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+
- #105#110#116#101#114#118#97#108#34#32#116#121#112#101#32#117#115#104#111#114+
- #116#32#111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101#102#97+
- #117#108#116#59#10#32#32#34#109#97#120#34#32#97#108#105#97#115#32#104#101#97+
- #108#77#97#120#32#116#121#112#101#32#98#111#111#108#32#111#102#102#115#101+
- #116#32#52#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+
- #115#105#108#101#110#116#34#32#116#121#112#101#32#98#111#111#108#32#111#102+
- #102#115#101#116#32#53#32#119#114#105#116#101#100#101#102#97#117#108#116#59+
- #10#125#10#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84+
- #82#73#71#71#69#82#95#83#72#79#84#32#123#10#32#32#34#112#111#115#105#116#105+
- #111#110#34#32#116#121#112#101#32#112#111#105#110#116#32#111#102#102#115#101+
- #116#32#48#32#97#115#32#116#120#121#32#119#114#105#116#101#100#101#102#97+
- #117#108#116#59#10#32#32#34#116#121#112#101#34#32#97#108#105#97#115#32#115+
- #104#111#116#84#121#112#101#32#116#121#112#101#32#117#98#121#116#101#32#111+
- #102#102#115#101#116#32#56#32#101#110#117#109#32#84#114#105#103#103#101#114+
- #83#104#111#116#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32+
- #32#34#116#97#114#103#101#116#34#32#97#108#105#97#115#32#115#104#111#116#84+
- #97#114#103#101#116#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102+
- #115#101#116#32#57#32#101#110#117#109#32#84#114#105#103#103#101#114#83#104+
- #111#116#84#97#114#103#101#116#32#119#114#105#116#101#100#101#102#97#117#108+
- #116#59#10#32#32#34#115#111#117#110#100#34#32#97#108#105#97#115#32#115#104+
- #111#116#83#111#117#110#100#32#116#121#112#101#32#110#101#103#98#111#111#108+
- #32#111#102#102#115#101#116#32#49#48#59#32#47#47#32#110#101#103#98#111#111+
- #108#33#10#32#32#34#97#105#109#34#32#116#121#112#101#32#98#121#116#101#32+
- #111#102#102#115#101#116#32#49#49#32#101#110#117#109#32#84#114#105#103#103+
- #101#114#83#104#111#116#65#105#109#32#100#101#102#97#117#108#116#32#84#82#73+
- #71#71#69#82#95#83#72#79#84#95#65#73#77#95#68#69#70#65#85#76#84#59#10#32#32+
- #34#112#97#110#101#108#105#100#34#32#116#121#112#101#32#105#110#116#32#111+
- #102#102#115#101#116#32#49#50#32#112#97#110#101#108#32#100#101#102#97#117+
- #108#116#32#110#117#108#108#32#119#114#105#116#101#100#101#102#97#117#108+
- #116#59#10#32#32#34#115#105#103#104#116#34#32#116#121#112#101#32#117#115#104+
- #111#114#116#32#111#102#102#115#101#116#32#49#54#59#10#32#32#34#97#110#103+
- #108#101#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115+
- #101#116#32#49#56#59#10#32#32#34#119#97#105#116#34#32#116#121#112#101#32#117+
- #115#104#111#114#116#32#111#102#102#115#101#116#32#50#48#59#10#32#32#34#97+
- #99#99#117#114#97#99#121#34#32#116#121#112#101#32#117#115#104#111#114#116#32+
- #111#102#102#115#101#116#32#50#50#59#10#32#32#34#97#109#109#111#34#32#116+
- #121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#50#52+
- #59#10#32#32#34#114#101#108#111#97#100#34#32#116#121#112#101#32#117#115#104+
- #111#114#116#32#111#102#102#115#101#116#32#50#54#59#10#125#10#10#84#114#105+
- #103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#69+
- #70#70#69#67#84#32#123#10#32#32#34#99#111#117#110#116#34#32#97#108#105#97+
- #115#32#70#88#67#111#117#110#116#32#116#121#112#101#32#117#98#121#116#101#32+
- #111#102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108+
- #116#59#10#32#32#34#116#121#112#101#34#32#97#108#105#97#115#32#70#88#84#121+
+ #116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32+
+ #34#105#110#116#101#114#118#97#108#34#32#116#121#112#101#32#117#115#104#111+
+ #114#116#32#111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101#102+
+ #97#117#108#116#59#13#10#32#32#34#107#105#110#100#34#32#116#121#112#101#32+
+ #117#98#121#116#101#32#111#102#102#115#101#116#32#52#32#101#110#117#109#32+
+ #72#105#116#84#121#112#101#32#100#101#102#97#117#108#116#32#72#73#84#95#83+
+ #79#77#69#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#125#13+
+ #10#13#10#84#114#105#103#103#101#114#68#97#116#97#32#102#111#114#32#84#82#73+
+ #71#71#69#82#95#72#69#65#76#84#72#32#123#13#10#32#32#34#97#109#111#117#110+
+ #116#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+
+ #116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32+
+ #34#105#110#116#101#114#118#97#108#34#32#116#121#112#101#32#117#115#104#111+
+ #114#116#32#111#102#102#115#101#116#32#50#32#119#114#105#116#101#100#101#102+
+ #97#117#108#116#59#13#10#32#32#34#109#97#120#34#32#97#108#105#97#115#32#104+
+ #101#97#108#77#97#120#32#116#121#112#101#32#98#111#111#108#32#111#102#102+
+ #115#101#116#32#52#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+
+ #10#32#32#34#115#105#108#101#110#116#34#32#116#121#112#101#32#98#111#111#108+
+ #32#111#102#102#115#101#116#32#53#32#119#114#105#116#101#100#101#102#97#117+
+ #108#116#59#13#10#125#13#10#13#10#84#114#105#103#103#101#114#68#97#116#97#32+
+ #102#111#114#32#84#82#73#71#71#69#82#95#83#72#79#84#32#123#13#10#32#32#34+
+ #112#111#115#105#116#105#111#110#34#32#116#121#112#101#32#112#111#105#110+
+ #116#32#111#102#102#115#101#116#32#48#32#97#115#32#116#120#121#32#119#114+
+ #105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#116#121#112#101#34+
+ #32#97#108#105#97#115#32#115#104#111#116#84#121#112#101#32#116#121#112#101+
+ #32#117#98#121#116#101#32#111#102#102#115#101#116#32#56#32#101#110#117#109+
+ #32#84#114#105#103#103#101#114#83#104#111#116#32#119#114#105#116#101#100#101+
+ #102#97#117#108#116#59#13#10#32#32#34#116#97#114#103#101#116#34#32#97#108+
+ #105#97#115#32#115#104#111#116#84#97#114#103#101#116#32#116#121#112#101#32+
+ #117#98#121#116#101#32#111#102#102#115#101#116#32#57#32#101#110#117#109#32+
+ #84#114#105#103#103#101#114#83#104#111#116#84#97#114#103#101#116#32#119#114+
+ #105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#115#111#117#110+
+ #100#34#32#97#108#105#97#115#32#115#104#111#116#83#111#117#110#100#32#116+
+ #121#112#101#32#110#101#103#98#111#111#108#32#111#102#102#115#101#116#32#49+
+ #48#59#32#47#47#32#110#101#103#98#111#111#108#33#13#10#32#32#34#97#105#109+
+ #34#32#116#121#112#101#32#98#121#116#101#32#111#102#102#115#101#116#32#49#49+
+ #32#101#110#117#109#32#84#114#105#103#103#101#114#83#104#111#116#65#105#109+
+ #32#100#101#102#97#117#108#116#32#84#82#73#71#71#69#82#95#83#72#79#84#95#65+
+ #73#77#95#68#69#70#65#85#76#84#59#13#10#32#32#34#112#97#110#101#108#105#100+
+ #34#32#116#121#112#101#32#105#110#116#32#111#102#102#115#101#116#32#49#50#32+
+ #112#97#110#101#108#32#100#101#102#97#117#108#116#32#110#117#108#108#32#119+
+ #114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#115#105#103+
+ #104#116#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115+
+ #101#116#32#49#54#59#13#10#32#32#34#97#110#103#108#101#34#32#116#121#112#101+
+ #32#117#115#104#111#114#116#32#111#102#102#115#101#116#32#49#56#59#13#10#32+
+ #32#34#119#97#105#116#34#32#116#121#112#101#32#117#115#104#111#114#116#32+
+ #111#102#102#115#101#116#32#50#48#59#13#10#32#32#34#97#99#99#117#114#97#99+
+ #121#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+
+ #116#32#50#50#59#13#10#32#32#34#97#109#109#111#34#32#116#121#112#101#32#117+
+ #115#104#111#114#116#32#111#102#102#115#101#116#32#50#52#59#13#10#32#32#34+
+ #114#101#108#111#97#100#34#32#116#121#112#101#32#117#115#104#111#114#116#32+
+ #111#102#102#115#101#116#32#50#54#59#13#10#125#13#10#13#10#84#114#105#103+
+ #103#101#114#68#97#116#97#32#102#111#114#32#84#82#73#71#71#69#82#95#69#70#70+
+ #69#67#84#32#123#13#10#32#32#34#99#111#117#110#116#34#32#97#108#105#97#115+
+ #32#70#88#67#111#117#110#116#32#116#121#112#101#32#117#98#121#116#101#32#111+
+ #102#102#115#101#116#32#48#32#119#114#105#116#101#100#101#102#97#117#108#116+
+ #59#13#10#32#32#34#116#121#112#101#34#32#97#108#105#97#115#32#70#88#84#121+
#112#101#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+
#32#49#32#101#110#117#109#32#84#114#105#103#103#101#114#69#102#102#101#99+
#116#32#100#101#102#97#117#108#116#32#84#82#73#71#71#69#82#95#69#70#70#69#67+
#84#95#80#65#82#84#73#67#76#69#32#119#114#105#116#101#100#101#102#97#117#108+
- #116#59#10#32#32#34#115#117#98#116#121#112#101#34#32#97#108#105#97#115#32#70+
- #88#83#117#98#84#121#112#101#32#116#121#112#101#32#117#98#121#116#101#32#111+
- #102#102#115#101#116#32#50#32#101#110#117#109#32#84#114#105#103#103#101#114+
- #69#102#102#101#99#116#84#121#112#101#32#100#101#102#97#117#108#116#32#84#82+
- #73#71#71#69#82#95#69#70#70#69#67#84#95#83#80#65#82#75#32#119#114#105#116+
- #101#100#101#102#97#117#108#116#59#10#32#32#34#114#101#100#34#32#97#108#105+
- #97#115#32#70#88#82#101#100#32#116#121#112#101#32#117#98#121#116#101#32#111+
- #102#102#115#101#116#32#51#32#119#114#105#116#101#100#101#102#97#117#108#116+
- #59#10#32#32#34#103#114#101#101#110#34#32#97#108#105#97#115#32#70#88#71#114+
- #101#101#110#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101+
- #116#32#52#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+
- #98#108#117#101#34#32#97#108#105#97#115#32#70#88#66#108#117#101#32#116#121+
- #112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#53#32#119#114+
- #105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#112#111#115#34#32#97+
- #108#105#97#115#32#70#88#80#111#115#32#116#121#112#101#32#117#98#121#116#101+
- #32#111#102#102#115#101#116#32#54#32#101#110#117#109#32#84#114#105#103#103+
- #101#114#69#102#102#101#99#116#80#111#115#32#100#101#102#97#117#108#116#32+
- #84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#80#79#83#95#67#69#78#84#69#82+
- #32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34#119#97#105+
- #116#34#32#116#121#112#101#32#117#115#104#111#114#116#32#111#102#102#115#101+
- #116#32#56#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+
- #118#101#108#95#120#34#32#116#121#112#101#32#98#121#116#101#32#111#102#102+
- #115#101#116#32#49#48#32#119#114#105#116#101#100#101#102#97#117#108#116#59+
- #10#32#32#34#118#101#108#95#121#34#32#116#121#112#101#32#98#121#116#101#32+
- #111#102#102#115#101#116#32#49#49#32#119#114#105#116#101#100#101#102#97#117+
- #108#116#59#10#32#32#34#115#112#114#101#97#100#95#108#34#32#116#121#112#101+
- #32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#50#32#119#114#105+
- #116#101#100#101#102#97#117#108#116#59#10#32#32#34#115#112#114#101#97#100#95+
- #114#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116+
- #32#49#51#32#119#114#105#116#101#100#101#102#97#117#108#116#59#10#32#32#34+
- #115#112#114#101#97#100#95#117#34#32#116#121#112#101#32#117#98#121#116#101+
- #32#111#102#102#115#101#116#32#49#52#32#119#114#105#116#101#100#101#102#97+
- #117#108#116#59#10#32#32#34#115#112#114#101#97#100#95#100#34#32#116#121#112+
- #101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#53#32#119#114+
- #105#116#101#100#101#102#97#117#108#116#59#10#125#10
+ #116#59#13#10#32#32#34#115#117#98#116#121#112#101#34#32#97#108#105#97#115#32+
+ #70#88#83#117#98#84#121#112#101#32#116#121#112#101#32#117#98#121#116#101#32+
+ #111#102#102#115#101#116#32#50#32#101#110#117#109#32#84#114#105#103#103#101+
+ #114#69#102#102#101#99#116#84#121#112#101#32#100#101#102#97#117#108#116#32+
+ #84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#83#80#65#82#75#32#119#114#105+
+ #116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#114#101#100#34#32#97+
+ #108#105#97#115#32#70#88#82#101#100#32#116#121#112#101#32#117#98#121#116#101+
+ #32#111#102#102#115#101#116#32#51#32#119#114#105#116#101#100#101#102#97#117+
+ #108#116#59#13#10#32#32#34#103#114#101#101#110#34#32#97#108#105#97#115#32#70+
+ #88#71#114#101#101#110#32#116#121#112#101#32#117#98#121#116#101#32#111#102+
+ #102#115#101#116#32#52#32#119#114#105#116#101#100#101#102#97#117#108#116#59+
+ #13#10#32#32#34#98#108#117#101#34#32#97#108#105#97#115#32#70#88#66#108#117+
+ #101#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32+
+ #53#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#112+
+ #111#115#34#32#97#108#105#97#115#32#70#88#80#111#115#32#116#121#112#101#32+
+ #117#98#121#116#101#32#111#102#102#115#101#116#32#54#32#101#110#117#109#32+
+ #84#114#105#103#103#101#114#69#102#102#101#99#116#80#111#115#32#100#101#102+
+ #97#117#108#116#32#84#82#73#71#71#69#82#95#69#70#70#69#67#84#95#80#79#83#95+
+ #67#69#78#84#69#82#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13+
+ #10#32#32#34#119#97#105#116#34#32#116#121#112#101#32#117#115#104#111#114#116+
+ #32#111#102#102#115#101#116#32#56#32#119#114#105#116#101#100#101#102#97#117+
+ #108#116#59#13#10#32#32#34#118#101#108#95#120#34#32#116#121#112#101#32#98+
+ #121#116#101#32#111#102#102#115#101#116#32#49#48#32#119#114#105#116#101#100+
+ #101#102#97#117#108#116#59#13#10#32#32#34#118#101#108#95#121#34#32#116#121+
+ #112#101#32#98#121#116#101#32#111#102#102#115#101#116#32#49#49#32#119#114+
+ #105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#115#112#114#101#97+
+ #100#95#108#34#32#116#121#112#101#32#117#98#121#116#101#32#111#102#102#115+
+ #101#116#32#49#50#32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10+
+ #32#32#34#115#112#114#101#97#100#95#114#34#32#116#121#112#101#32#117#98#121+
+ #116#101#32#111#102#102#115#101#116#32#49#51#32#119#114#105#116#101#100#101+
+ #102#97#117#108#116#59#13#10#32#32#34#115#112#114#101#97#100#95#117#34#32+
+ #116#121#112#101#32#117#98#121#116#101#32#111#102#102#115#101#116#32#49#52+
+ #32#119#114#105#116#101#100#101#102#97#117#108#116#59#13#10#32#32#34#115#112+
+ #114#101#97#100#95#100#34#32#116#121#112#101#32#117#98#121#116#101#32#111+
+ #102#102#115#101#116#32#49#53#32#119#114#105#116#101#100#101#102#97#117#108+
+ #116#59#13#10#125#13#10
;
\ No newline at end of file