X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_game.pas;h=2d80b3aaa32ea394316d5b13bae7ca799bcde2f2;hb=cdade5490e36128b921033b93777e29be803a0dd;hp=87a928f962588bcd69f470206a0399d85155f175;hpb=c80103f4512aa43ff38aa01395944f277266e359;p=d2df-sdl.git diff --git a/src/game/g_game.pas b/src/game/g_game.pas index 87a928f..2d80b3a 100644 --- a/src/game/g_game.pas +++ b/src/game/g_game.pas @@ -33,7 +33,9 @@ type WarmupTime: Word; SpawnInvul: Word; ItemRespawnTime: Word; - RulezTimeMultiplier: Word; + ItemRespawnRandom: Word; + RulezRespawnTime: Word; + RulezRespawnRandom: Word; MaxLives: Byte; Options: LongWord; WAD: String; @@ -197,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; @@ -4498,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; @@ -5616,7 +5626,7 @@ begin end else if cmd = 'g_powerup_randomize_respawn' then begin - ParseGameFlag(GAME_OPTION_RULEZRANDOM, I_MSG_RULEZ_RANDOM_OFF, I_MSG_RULEZ_RANDOM_ON); + ParseGameFlag(GAME_OPTION_RULEZRANDOM, I_MSG_RULEZ_RANDOM_OFF, I_MSG_RULEZ_RANDOM_ON, False); end else if cmd = 'g_weaponstay' then begin @@ -5714,19 +5724,49 @@ 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_powerup_time_multiplier' then + else if cmd = 'g_item_time_random' then begin if Length(P) > 1 then begin - gsRulezTimeMultiplier := nclamp(StrToIntDef(P[1], gsRulezTimeMultiplier), 0, $FFFF); + gsItemRespawnRandom := nclamp(StrToIntDef(P[1], gsItemRespawnRandom), 0, $FFFF); if g_Game_IsServer then begin - gGameSettings.RulezTimeMultiplier := gsRulezTimeMultiplier; + gGameSettings.ItemRespawnRandom := gsItemRespawnRandom; if g_Game_IsNet then MH_SEND_GameSettings; end; end; - g_Console_Add(Format('%s %d', [cmd, Integer(gsRulezTimeMultiplier)])); + 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 + begin + gGameSettings.RulezRespawnTime := gsRulezRespawnTime; + if g_Game_IsNet then MH_SEND_GameSettings; + end; + 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 + begin + gGameSettings.RulezRespawnRandom := gsRulezRespawnRandom; + if g_Game_IsNet then MH_SEND_GameSettings; + end; + 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 @@ -6424,8 +6464,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;