X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_game.pas;h=a35e2cba976e5c6c121c4d043cad3a8a169ca802;hb=493befdc432063207dc653ff49da645a567567ba;hp=9f399b6546609ef1568a5bf6f957e0f1f98d6f46;hpb=d0c37e245a31713f3207059347ded7e97dfb5564;p=d2df-sdl.git diff --git a/src/game/g_game.pas b/src/game/g_game.pas index 9f399b6..a35e2cb 100644 --- a/src/game/g_game.pas +++ b/src/game/g_game.pas @@ -33,6 +33,7 @@ type WarmupTime: Word; SpawnInvul: Word; ItemRespawnTime: Word; + ItemRespawnRandom: Word; RulezRespawnTime: Word; RulezRespawnRandom: Word; MaxLives: Byte; @@ -198,6 +199,10 @@ const 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; STATE_NONE = 0; STATE_MENU = 1; @@ -4499,6 +4504,10 @@ begin 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; gSwitchGameMode := GM_SINGLE; gLMSRespawn := LMS_RESPAWN_NONE; @@ -5615,6 +5624,22 @@ begin 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); @@ -5715,6 +5740,21 @@ begin 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 + 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 else if cmd = 'g_powerup_respawn_time' then begin if Length(P) > 1 then @@ -6440,8 +6480,8 @@ begin if cmd = 'greenarmor' then begin plr.GiveItem(ITEM_ARMOR_GREEN); g_Console_Add('player got a security armor'); continue; end; if cmd = 'bluearmor' then begin plr.GiveItem(ITEM_ARMOR_BLUE); g_Console_Add('player got a combat armor'); continue; end; - if (cmd = 'megasphere') or (cmd = 'mega') then begin plr.GiveItem(ITEM_SPHERE_BLUE); g_Console_Add('player got a megasphere'); continue; end; - if (cmd = 'soulsphere') or (cmd = 'soul')then begin plr.GiveItem(ITEM_SPHERE_WHITE); g_Console_Add('player got a soul sphere'); continue; end; + if (cmd = 'soulsphere') or (cmd = 'soul') then begin plr.GiveItem(ITEM_SPHERE_BLUE); g_Console_Add('player got a soul sphere'); continue; end; + if (cmd = 'megasphere') or (cmd = 'mega') then begin plr.GiveItem(ITEM_SPHERE_WHITE); g_Console_Add('player got a megasphere'); continue; end; if (cmd = 'invul') or (cmd = 'invulnerability') then begin plr.GiveItem(ITEM_INVUL); g_Console_Add('player got invulnerability'); continue; end; if (cmd = 'invis') or (cmd = 'invisibility') then begin plr.GiveItem(ITEM_INVIS); g_Console_Add('player got invisibility'); continue; end;