X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=5f4692fc081d81b7aff0581eba151c96e73328bf;hb=61d62a1b2d465abbb7145ed44e826740e2eaf184;hp=7dd22f870f497aec99735edd27f4caa7887e7a60;hpb=ba177dd9743397cb43dad787fbe7748c8ea51cba;p=d2df-sdl.git diff --git a/src/game/g_player.pas b/src/game/g_player.pas index 7dd22f8..5f4692f 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -50,6 +50,11 @@ const A_SHELLS = 1; A_ROCKETS = 2; A_CELLS = 3; + A_HIGH = 3; + + AmmoLimits: Array [0..1] of Array [A_BULLETS..A_HIGH] of Word = + ((200, 50, 50, 300), + (400, 100, 100, 600)); K_SIMPLEKILL = 0; K_HARDKILL = 1; @@ -114,8 +119,8 @@ type CurrWeap: Byte; NextWeap: WORD; NextWeapDelay: Byte; - Ammo: Array [A_BULLETS..A_CELLS] of Word; - MaxAmmo: Array [A_BULLETS..A_CELLS] of Word; + 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; WaitRecall: Boolean; @@ -216,8 +221,8 @@ type public FDamageBuffer: Integer; - FAmmo: Array [A_BULLETS..A_CELLS] of Word; - FMaxAmmo: Array [A_BULLETS..A_CELLS] of Word; + 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; FBerserk: Integer; @@ -822,10 +827,10 @@ begin // Îáúåêò èãðîêà: Obj_LoadState(@gPlayers[a].FObj, Mem); // Òåêóùåå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.ReadWord(gPlayers[a].FAmmo[i]); // Ìàêñèìàëüíîå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.ReadWord(gPlayers[a].FMaxAmmo[i]); // Íàëè÷èå îðóæèÿ: for i := WP_FIRST to WP_LAST do @@ -3685,10 +3690,10 @@ begin (FAmmo[A_ROCKETS] < FMaxAmmo[A_ROCKETS]) or (FAmmo[A_CELLS] < FMaxAmmo[A_CELLS]) then begin - FMaxAmmo[A_BULLETS] := 400; - FMaxAmmo[A_SHELLS] := 100; - FMaxAmmo[A_ROCKETS] := 100; - FMaxAmmo[A_CELLS] := 600; + FMaxAmmo[A_BULLETS] := AmmoLimits[1, A_BULLETS]; + FMaxAmmo[A_SHELLS] := AmmoLimits[1, A_SHELLS]; + FMaxAmmo[A_ROCKETS] := AmmoLimits[1, A_ROCKETS]; + FMaxAmmo[A_CELLS] := AmmoLimits[1, A_CELLS]; if FAmmo[A_BULLETS] < FMaxAmmo[A_BULLETS] then IncMax(FAmmo[A_BULLETS], 10, FMaxAmmo[A_BULLETS]); @@ -4120,15 +4125,15 @@ begin FModel.SetWeapon(FCurrWeap); - for b := A_BULLETS to A_CELLS do + for b := A_BULLETS to A_HIGH do FAmmo[b] := 0; FAmmo[A_BULLETS] := 50; - FMaxAmmo[A_BULLETS] := 200; - FMaxAmmo[A_SHELLS] := 50; - FMaxAmmo[A_ROCKETS] := 50; - FMaxAmmo[A_CELLS] := 300; + FMaxAmmo[A_BULLETS] := AmmoLimits[0, A_BULLETS]; + FMaxAmmo[A_SHELLS] := AmmoLimits[0, A_SHELLS]; + FMaxAmmo[A_ROCKETS] := AmmoLimits[0, A_SHELLS]; + FMaxAmmo[A_CELLS] := AmmoLimits[0, A_CELLS]; if gGameSettings.GameMode in [GM_DM, GM_TDM, GM_CTF] then FRulez := [R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE] @@ -5392,10 +5397,10 @@ begin // Îáúåêò èãðîêà: Obj_SaveState(@FObj, Mem); // Òåêóùåå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.WriteWord(FAmmo[i]); // Ìàêñèìàëüíîå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.WriteWord(FMaxAmmo[i]); // Íàëè÷èå îðóæèÿ: for i := WP_FIRST to WP_LAST do @@ -5532,10 +5537,10 @@ begin // Îáúåêò èãðîêà: Obj_LoadState(@FObj, Mem); // Òåêóùåå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.ReadWord(FAmmo[i]); // Ìàêñèìàëüíîå êîëè÷åñòâî ïàòðîíîâ: - for i := A_BULLETS to A_CELLS do + for i := A_BULLETS to A_HIGH do Mem.ReadWord(FMaxAmmo[i]); // Íàëè÷èå îðóæèÿ: for i := WP_FIRST to WP_LAST do @@ -5605,7 +5610,7 @@ begin end; for a := WP_FIRST to WP_LAST do FWeapon[a] := True; - for a := A_BULLETS to A_CELLS do FAmmo[a] := 30000; + for a := A_BULLETS to A_HIGH do FAmmo[a] := 30000; FRulez := FRulez+[R_KEY_RED, R_KEY_GREEN, R_KEY_BLUE]; end; @@ -5737,10 +5742,10 @@ begin (FAmmo[A_ROCKETS] < FMaxAmmo[A_ROCKETS]) or (FAmmo[A_CELLS] < FMaxAmmo[A_CELLS]) then begin - FMaxAmmo[A_BULLETS] := 400; - FMaxAmmo[A_SHELLS] := 100; - FMaxAmmo[A_ROCKETS] := 100; - FMaxAmmo[A_CELLS] := 600; + FMaxAmmo[A_BULLETS] := AmmoLimits[1, A_BULLETS]; + FMaxAmmo[A_SHELLS] := AmmoLimits[1, A_SHELLS]; + FMaxAmmo[A_ROCKETS] := AmmoLimits[1, A_ROCKETS]; + FMaxAmmo[A_CELLS] := AmmoLimits[1, A_CELLS]; if FAmmo[A_BULLETS] < FMaxAmmo[A_BULLETS] then IncMax(FAmmo[A_BULLETS], 10, FMaxAmmo[A_BULLETS]); if FAmmo[A_SHELLS] < FMaxAmmo[A_SHELLS] then IncMax(FAmmo[A_SHELLS], 4, FMaxAmmo[A_SHELLS]);