X-Git-Url: http://deadsoftware.ru/gitweb?p=d2df-sdl.git;a=blobdiff_plain;f=src%2Fgame%2Fg_player.pas;h=88070c61c04866a6c79bcea7dc8d39f88545fa12;hp=da4c43a84e12561afef525e41c84ce7eb8e04d4a;hb=0bae75d8258116d9079c1b7a4b50f334cc50973e;hpb=ba8cb4548eeab44bfe9c6db0081de5a9ac9600dd diff --git a/src/game/g_player.pas b/src/game/g_player.pas index da4c43a..88070c6 100644 --- a/src/game/g_player.pas +++ b/src/game/g_player.pas @@ -266,6 +266,7 @@ type FReady: Boolean; FDummy: Boolean; FFireTime: Integer; + FHandicap: Integer; // debug: viewport offset viewPortX, viewPortY, viewPortW, viewPortH: Integer; @@ -595,8 +596,8 @@ procedure g_Player_RemoveAllCorpses(); procedure g_Player_Corpses_SaveState (st: TStream); procedure g_Player_Corpses_LoadState (st: TStream); procedure g_Player_ResetReady(); -procedure g_Bot_Add(Team, Difficult: Byte); -procedure g_Bot_AddList(Team: Byte; lname: ShortString; num: Integer = -1); +procedure g_Bot_Add(Team, Difficult: Byte; Handicap: Integer = 100); +procedure g_Bot_AddList(Team: Byte; lname: ShortString; num: Integer = -1; Handicap: Integer = 100); procedure g_Bot_MixNames(); procedure g_Bot_RemoveAll(); @@ -885,6 +886,8 @@ begin if b = 1 then gPlayers[a].FDirection := TDirection.D_LEFT else gPlayers[a].FDirection := TDirection.D_RIGHT; // b = 2 // Çäîðîâüå gPlayers[a].FHealth := utils.readLongInt(st); + // Ôîðà + gPlayers[a].FHandicap := utils.readLongInt(st); // Æèçíè gPlayers[a].FLives := utils.readByte(st); // Áðîíÿ @@ -1006,7 +1009,7 @@ begin end; end; -procedure g_Bot_Add(Team, Difficult: Byte); +procedure g_Bot_Add(Team, Difficult: Byte; Handicap: Integer = 100); var m: SSArray; _name, _model: String; @@ -1095,6 +1098,8 @@ begin //FDifficult.SafeWeaponPrior[a] := WEAPON_PRIOR3[a]; end; + FHandicap := Handicap; + g_Console_Add(Format(_lc[I_PLAYER_JOIN], [Name]), True); if g_Game_IsNet then MH_SEND_PlayerCreate(UID); @@ -1103,7 +1108,7 @@ begin end; end; -procedure g_Bot_AddList(Team: Byte; lName: ShortString; num: Integer = -1); +procedure g_Bot_AddList(Team: Byte; lName: ShortString; num: Integer = -1; Handicap: Integer = 100); var m: SSArray; _name, _model: String; @@ -1166,6 +1171,8 @@ begin FDifficult.Cover := BotList[num].cover; FDifficult.CloseJump := BotList[num].close_jump; + FHandicap := Handicap; + for a := WP_FIRST to WP_LAST do begin FDifficult.WeaponPrior[a] := BotList[num].w_prior1[a]; @@ -2152,6 +2159,7 @@ begin FFireTime := 0; FFirePainTime := 0; FFireAttacker := 0; + FHandicap := 100; FActualModelName := 'doomer'; @@ -4526,7 +4534,7 @@ begin // Âîñêðåøåíèå áåç îðóæèÿ: if not FAlive then begin - FHealth := PLAYER_HP_SOFT; + FHealth := Round(PLAYER_HP_SOFT * (FHandicap / 100)); FArmor := 0; FAlive := True; FAir := AIR_DEF; @@ -5924,6 +5932,8 @@ begin utils.writeInt(st, Byte(b)); // Çäîðîâüå utils.writeInt(st, LongInt(FHealth)); + // Êîýôôèöèåíò èíâàëèäíîñòè + utils.writeInt(st, LongInt(FHandicap)); // Æèçíè utils.writeInt(st, Byte(FLives)); // Áðîíÿ @@ -6026,6 +6036,8 @@ begin if b = 1 then FDirection := TDirection.D_LEFT else FDirection := TDirection.D_RIGHT; // b = 2 // Çäîðîâüå FHealth := utils.readLongInt(st); + // Êîýôôèöèåíò èíâàëèäíîñòè + FHandicap := utils.readLongInt(st); // Æèçíè FLives := utils.readByte(st); // Áðîíÿ