DEADSOFTWARE

fix script bugs; allow require()
[d2df-sdl.git] / src / game / g_triggers.pas
index 8e8cf44e9a8bbb282b541828fc6ee83517e5bad4..2ff21708160b0e1e063545a508f405f87453be4a 100644 (file)
@@ -1,3 +1,19 @@
+(* 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_triggers;
 
 interface
@@ -72,7 +88,7 @@ uses
   g_player, g_map, Math, g_gfx, g_game, g_textures,
   g_console, g_monsters, g_items, g_phys, g_weapons,
   wadreader, g_main, SysUtils, e_log, g_language,
-  g_options, g_net, g_netmsg;
+  g_options, g_net, g_netmsg, g_scripts;
 
 const
   TRIGGER_SIGNATURE = $52475254; // 'TRGR'
@@ -193,7 +209,6 @@ begin
           MH_SEND_Sound(X, Y, 'SOUND_GAME_SWITCH1');
       end;
 
-
     with gWalls[PanelID] do
     begin
       if gPlayers <> nil then
@@ -1930,6 +1945,13 @@ begin
           end;
           TimeOut := Data.FXWait;
         end;
+
+      TRIGGER_SCRIPT:
+        begin
+          g_Scripts_ProcExec(Data.SCRProc, [ID, ActivateUID, actType, Data.SCRArg], 'map');
+          TimeOut := 0;
+          Result := True;
+        end;
     end;
   end;
 
@@ -1992,12 +2014,12 @@ begin
   // Åùå íåò òàêîãî çâóêà:
     if not g_Sound_Exists(Trigger.Data.SoundName) then
     begin
-      g_ProcessResourceStr(Trigger.Data.SoundName, @fn, nil, nil);
+      fn := g_ExtractWadName(Trigger.Data.SoundName);
 
       if fn = '' then
         begin // Çâóê â ôàéëå ñ êàðòîé
-          g_ProcessResourceStr(gMapInfo.Map, @mapw, nil, nil);
-          fn := mapw + Trigger.Data.SoundName;
+          mapw := g_ExtractWadName(gMapInfo.Map);
+          fn := mapw+':'+g_ExtractFilePathName(Trigger.Data.SoundName);
         end
       else // Çâóê â îòäåëüíîì ôàéëå
         fn := GameDir + '/wads/' + Trigger.Data.SoundName;
@@ -2025,12 +2047,12 @@ begin
   // Åùå íåò òàêîé ìóçûêè:
     if not g_Sound_Exists(Trigger.Data.MusicName) then
     begin
-      g_ProcessResourceStr(Trigger.Data.MusicName, @fn, nil, nil);
+      fn := g_ExtractWadName(Trigger.Data.MusicName);
 
       if fn = '' then
         begin // Ìóçûêà â ôàéëå ñ êàðòîé
-          g_ProcessResourceStr(gMapInfo.Map, @mapw, nil, nil);
-          fn := mapw + Trigger.Data.MusicName;
+          mapw := g_ExtractWadName(gMapInfo.Map);
+          fn := mapw+':'+g_ExtractFilePathName(Trigger.Data.MusicName);
         end
       else // Ìóçûêà â ôàéëå ñ êàðòîé
         fn := GameDir+'/wads/'+Trigger.Data.MusicName;