DEADSOFTWARE

Player model: Add new die level 5 for corpse slop
[d2df-sdl.git] / src / game / g_playermodel.pas
index 7cb1eda9e73daef7156d92e48cb59b49b497cb09..b5978c926654f1c705cede3e42f2b2d7c1bf55e0 100644 (file)
@@ -1,3 +1,18 @@
+(* Copyright (C)  DooM 2D:Forever Developers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *)
 {$MODE DELPHI}
 unit g_playermodel;
 
@@ -231,7 +246,7 @@ end;
 function g_PlayerModel_Load(FileName: string): Boolean;
 var
   ID: DWORD;
-  a, b, len, aa, bb, f: Integer;
+  a, b, len, lenpd, lenpd2, aa, bb, f: Integer;
   cc: TDirection;
   config: TConfig;
   pData, pData2: Pointer;
@@ -253,7 +268,7 @@ begin
     Exit;
   end;
 
-  if not WAD.GetResource('TEXT', 'MODEL', pData, len) then
+  if not WAD.GetResource('TEXT/MODEL', pData, len) then
   begin
     WAD.Free();
     Exit;
@@ -358,12 +373,12 @@ begin
     SetLength(Gibs, ReadInt('Gibs', 'count', 0));
 
     if (Gibs <> nil) and
-       (WAD.GetResource('TEXTURES', config.ReadStr('Gibs', 'resource', 'GIBS'), pData, len)) and
-       (WAD.GetResource('TEXTURES', config.ReadStr('Gibs', 'mask', 'GIBSMASK'), pData2, len)) then
+       (WAD.GetResource('TEXTURES/'+config.ReadStr('Gibs', 'resource', 'GIBS'), pData, lenpd)) and
+       (WAD.GetResource('TEXTURES/'+config.ReadStr('Gibs', 'mask', 'GIBSMASK'), pData2, lenpd2)) then
     begin
       for a := 0 to High(Gibs) do
-        if e_CreateTextureMemEx(pData, Gibs[a].ID, a*32, 0, 32, 32) and
-          e_CreateTextureMemEx(pData2, Gibs[a].MaskID, a*32, 0, 32, 32) then
+        if e_CreateTextureMemEx(pData, lenpd, Gibs[a].ID, a*32, 0, 32, 32) and
+          e_CreateTextureMemEx(pData2, lenpd2, Gibs[a].MaskID, a*32, 0, 32, 32) then
         begin
           Gibs[a].Rect := e_GetTextureSize2(Gibs[a].ID);
           with Gibs[a].Rect do
@@ -783,7 +798,7 @@ begin
   end
   else
   begin
-    if (Level in [2, 3]) and (FSlopSound > 0) then
+    if (Level in [2, 3, 5]) and (FSlopSound > 0) then
     begin
       g_Sound_PlayExAt('SOUND_MONSTER_SLOP', X, Y);
       if FSlopSound = 1 then
@@ -800,6 +815,12 @@ begin
         SetLength(TempArray, Length(TempArray)+1);
         TempArray[High(TempArray)] := FDieSounds[a].ID;
       end;
+    if (TempArray = nil) and (Level = 5) then
+    begin
+      g_Sound_PlayExAt('SOUND_MONSTER_SLOP', X, Y);
+      Result := True;
+      Exit;
+    end;
   end;
 
   if TempArray = nil then Exit;