X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_triggers.pas;h=9f6df9f5ded1502c244836da3a402ad20c3c76b9;hb=ba69b47c522858ed70d450d1fec26933472c080b;hp=ee77fded2fcf6630294bd53e9e3568412fa1ece5;hpb=72c94c713a86da5372ab1f09c185ec0d8cc4499d;p=d2df-sdl.git diff --git a/src/game/g_triggers.pas b/src/game/g_triggers.pas index ee77fde..9f6df9f 100644 --- a/src/game/g_triggers.pas +++ b/src/game/g_triggers.pas @@ -1,4 +1,4 @@ -(* Copyright (C) DooM 2D:Forever Developers +(* 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 @@ -24,8 +24,6 @@ uses xdynrec, hashtable, exoma; type - THashStrVariant = specialize THashBase; - TActivator = record UID: Word; TimeOut: Word; @@ -237,7 +235,7 @@ begin if (Length(afldname) > 4) and (afldname[1] = 'u') and (afldname[2] = 's') and (afldname[3] = 'e') and (afldname[4] = 'r') then begin - if (me.userVars = nil) then me.userVars := THashStrVariant.Create(hashStrHash, hashStrEqu); + if (me.userVars = nil) then me.userVars := THashStrVariant.Create(); me.userVars.put(afldname, aval); exit; end; @@ -594,17 +592,17 @@ begin if (gLifts[PanelID].PanelType = PANEL_LIFTUP) or (gLifts[PanelID].PanelType = PANEL_LIFTDOWN) then begin case d of - 0: t := 0; - 1: t := 1; - else t := IfThen(gLifts[PanelID].LiftType = 1, 0, 1); + 0: t := LIFTTYPE_UP; + 1: t := LIFTTYPE_DOWN; + else t := IfThen(gLifts[PanelID].LiftType = LIFTTYPE_DOWN, LIFTTYPE_UP, LIFTTYPE_DOWN); end end else if (gLifts[PanelID].PanelType = PANEL_LIFTLEFT) or (gLifts[PanelID].PanelType = PANEL_LIFTRIGHT) then begin case d of - 0: t := 2; - 1: t := 3; - else t := IfThen(gLifts[PanelID].LiftType = 2, 3, 2); + 0: t := LIFTTYPE_LEFT; + 1: t := LIFTTYPE_RIGHT; + else t := IfThen(gLifts[PanelID].LiftType = LIFTTYPE_LEFT, LIFTTYPE_RIGHT, LIFTTYPE_LEFT); end; end; @@ -808,6 +806,12 @@ begin snd := 'SOUND_WEAPON_EXPLODEBFG'; end; + TRIGGER_SHOT_FLAME: + begin + g_Weapon_flame(wx, wy, dx, dy, 0, -1, True); + //snd := 'SOUND_WEAPON_FIREPLASMA'; + end; + else exit; end; @@ -2304,6 +2308,7 @@ begin Dec(idx); end; TimeOut := tgcWait; + result := true; end; end; end; @@ -2437,7 +2442,7 @@ begin // update cached trigger variables trigUpdateCacheData(ptg^, ptg.trigDataRec); - ptg.userVars := nil; //THashStrVariant.Create(hashStrHash, hashStrEqu); + ptg.userVars := nil; try ptg.exoThink := TExprBase.parseStatList(tgclist, VarToStr(trec.user['exoma_think'])); @@ -3338,7 +3343,7 @@ begin if (uvcount < 0) or (uvcount > 1024*1024) then raise XStreamError.Create('invalid number of user vars in trigger'); if (uvcount > 0) then begin - gTriggers[i].userVars := THashStrVariant.Create(hashStrHash, hashStrEqu); + gTriggers[i].userVars := THashStrVariant.Create(); vv := Unassigned; while (uvcount > 0) do begin