summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 8255279)
raw | patch | inline | side by side (parent: 8255279)
author | Ketmar Dark <ketmar@ketmar.no-ip.org> | |
Wed, 6 Sep 2017 20:23:18 +0000 (23:23 +0300) | ||
committer | Ketmar Dark <ketmar@ketmar.no-ip.org> | |
Wed, 6 Sep 2017 20:24:09 +0000 (23:24 +0300) |
src/game/g_triggers.pas | patch | blob | history |
index 97648af9e91d01cbbf3bdec3123aa363864d80fc..cf039ba3913cddd0cc29331efe034f57377e3861 100644 (file)
--- a/src/game/g_triggers.pas
+++ b/src/game/g_triggers.pas
@@ -687,7 +687,7 @@ procedure MakeShot (var Trigger: TTrigger; wx, wy, dx, dy: Integer; TargetUID: W
begin
with Trigger do
begin
- if (trigData.trigShotAmmo = 0) or ((trigData.trigShotAmmo > 0) and (ShotAmmoCount > 0)) then
+ if (trigData.trigAmmo = 0) or ((trigData.trigAmmo > 0) and (ShotAmmoCount > 0)) then
begin
if (trigShotPanelGUID <> -1) and (ShotPanelTime = 0) then
begin
ShotPanelTime := 4; // òèêîâ íà âñïûøêó âûñòðåëà
end;
- if (trigData.trigShotIntSight > 0) then ShotSightTimeout := 180; // ~= 5 ñåêóíä
+ if (trigData.trigSight > 0) then ShotSightTimeout := 180; // ~= 5 ñåêóíä
if (ShotAmmoCount > 0) then Dec(ShotAmmoCount);
- dx += Random(trigData.trigShotAccuracy)-Random(trigData.trigShotAccuracy);
- dy += Random(trigData.trigShotAccuracy)-Random(trigData.trigShotAccuracy);
+ dx += Random(trigData.trigAccuracy)-Random(trigData.trigAccuracy);
+ dy += Random(trigData.trigAccuracy)-Random(trigData.trigAccuracy);
- tr_SpawnShot(trigData.trigShotType, wx, wy, dx, dy, trigData.trigShotSound, TargetUID);
+ tr_SpawnShot(trigData.trigShotType, wx, wy, dx, dy, not trigData.trigQuiet, TargetUID);
end
else
begin
- if (trigData.trigShotIntReload > 0) and (ShotReloadTime = 0) then
+ if (trigData.trigReload > 0) and (ShotReloadTime = 0) then
begin
- ShotReloadTime := trigData.trigShotIntReload; // òèêîâ íà ïåðåçàðÿäêó ïóøêè
+ ShotReloadTime := trigData.trigReload; // òèêîâ íà ïåðåçàðÿäêó ïóøêè
end;
end;
end;
if (ActivateUID < 0) or (ActivateUID > $FFFF) then Exit;
msg := b_Text_Format(MText);
case MSendTo of
- 0: // activator
+ TRIGGER_MESSAGE_DEST_ME: // activator
begin
if g_GetUIDType(ActivateUID) = UID_PLAYER then
begin
if g_Game_IsWatchedPlayer(ActivateUID) then
begin
- if MKind = 0 then g_Console_Add(msg, True)
- else if MKind = 1 then g_Game_Message(msg, MTime);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then g_Console_Add(msg, True)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then g_Game_Message(msg, MTime);
end
else
begin
p := g_Player_Get(ActivateUID);
if g_Game_IsNet and (p.FClientID >= 0) then
begin
- if MKind = 0 then MH_SEND_Chat(msg, NET_CHAT_SYSTEM, p.FClientID)
- else if MKind = 1 then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg, p.FClientID);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then MH_SEND_Chat(msg, NET_CHAT_SYSTEM, p.FClientID)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg, p.FClientID);
end;
end;
end;
end;
- 1: // activator's team
+ TRIGGER_MESSAGE_DEST_MY_TEAM: // activator's team
begin
if g_GetUIDType(ActivateUID) = UID_PLAYER then
begin
p := g_Player_Get(ActivateUID);
if g_Game_IsWatchedTeam(p.Team) then
begin
- if MKind = 0 then g_Console_Add(msg, True)
- else if MKind = 1 then g_Game_Message(msg, MTime);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then g_Console_Add(msg, True)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then g_Game_Message(msg, MTime);
end;
if g_Game_IsNet then
begin
if (gPlayers[i].Team = p.Team) and (gPlayers[i].FClientID >= 0) then
begin
- if MKind = 0 then MH_SEND_Chat(msg, NET_CHAT_SYSTEM, gPlayers[i].FClientID)
- else if MKind = 1 then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg, gPlayers[i].FClientID);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then MH_SEND_Chat(msg, NET_CHAT_SYSTEM, gPlayers[i].FClientID)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg, gPlayers[i].FClientID);
end;
end;
end;
end;
end;
- 2: // activator's enemy team
+ TRIGGER_MESSAGE_DEST_ENEMY_TEAM: // activator's enemy team
begin
if g_GetUIDType(ActivateUID) = UID_PLAYER then
begin
p := g_Player_Get(ActivateUID);
if g_Game_IsWatchedTeam(p.Team) then
begin
- if MKind = 0 then g_Console_Add(msg, True)
- else if MKind = 1 then g_Game_Message(msg, MTime);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then g_Console_Add(msg, True)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then g_Game_Message(msg, MTime);
end;
if g_Game_IsNet then
begin
if (gPlayers[i].Team <> p.Team) and (gPlayers[i].FClientID >= 0) then
begin
- if MKind = 0 then MH_SEND_Chat(msg, NET_CHAT_SYSTEM, gPlayers[i].FClientID)
- else if MKind = 1 then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg, gPlayers[i].FClientID);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then MH_SEND_Chat(msg, NET_CHAT_SYSTEM, gPlayers[i].FClientID)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg, gPlayers[i].FClientID);
end;
end;
end;
end;
end;
- 3: // red team
+ TRIGGER_MESSAGE_DEST_RED_TEAM: // red team
begin
if g_Game_IsWatchedTeam(TEAM_RED) then
begin
- if MKind = 0 then g_Console_Add(msg, True)
- else if MKind = 1 then g_Game_Message(msg, MTime);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then g_Console_Add(msg, True)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then g_Game_Message(msg, MTime);
end;
if g_Game_IsNet then
begin
if (gPlayers[i].Team = TEAM_RED) and (gPlayers[i].FClientID >= 0) then
begin
- if MKind = 0 then MH_SEND_Chat(msg, NET_CHAT_SYSTEM, gPlayers[i].FClientID)
- else if MKind = 1 then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg, gPlayers[i].FClientID);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then MH_SEND_Chat(msg, NET_CHAT_SYSTEM, gPlayers[i].FClientID)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg, gPlayers[i].FClientID);
end;
end;
end;
end;
- 4: // blue team
+ TRIGGER_MESSAGE_DEST_BLUE_TEAM: // blue team
begin
if g_Game_IsWatchedTeam(TEAM_BLUE) then
begin
- if MKind = 0 then g_Console_Add(msg, True)
- else if MKind = 1 then g_Game_Message(msg, MTime);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then g_Console_Add(msg, True)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then g_Game_Message(msg, MTime);
end;
if g_Game_IsNet then
begin
if (gPlayers[i].Team = TEAM_BLUE) and (gPlayers[i].FClientID >= 0) then
begin
- if MKind = 0 then MH_SEND_Chat(msg, NET_CHAT_SYSTEM, gPlayers[i].FClientID)
- else if MKind = 1 then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg, gPlayers[i].FClientID);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then MH_SEND_Chat(msg, NET_CHAT_SYSTEM, gPlayers[i].FClientID)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg, gPlayers[i].FClientID);
end;
end;
end;
end;
- 5: // everyone
+ TRIGGER_MESSAGE_DEST_EVERYONE: // everyone
begin
- if MKind = 0 then g_Console_Add(msg, True)
- else if MKind = 1 then g_Game_Message(msg, MTime);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then g_Console_Add(msg, True)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then g_Game_Message(msg, MTime);
if g_Game_IsNet then
begin
- if MKind = 0 then MH_SEND_Chat(msg, NET_CHAT_SYSTEM)
- else if MKind = 1 then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg);
+ if MKind = TRIGGER_MESSAGE_KIND_CHAT then MH_SEND_Chat(msg, NET_CHAT_SYSTEM)
+ else if MKind = TRIGGER_MESSAGE_KIND_GAME then MH_SEND_GameEvent(NET_EV_BIGTEXT, MTime, msg);
end;
end;
end;
with Trigger do
begin
if TriggerType <> TRIGGER_SHOT then Exit;
- result := (trigData.trigShotAim and TRIGGER_SHOT_AIM_ALLMAP > 0)
+ result := (trigData.trigAim and TRIGGER_SHOT_AIM_ALLMAP > 0)
or g_Obj_Collide(X, Y, Width, Height, Obj);
- if result and (trigData.trigShotAim and TRIGGER_SHOT_AIM_TRACE > 0) then
+ if result and (trigData.trigAim and TRIGGER_SHOT_AIM_TRACE > 0) then
begin
- result := g_TraceVector(trigData.trigShotPos.X, trigData.trigShotPos.Y,
+ result := g_TraceVector(trigData.trigTX, trigData.trigTY,
Obj^.X + Obj^.Rect.X + (Obj^.Rect.Width div 2),
Obj^.Y + Obj^.Rect.Y + (Obj^.Rect.Height div 2));
end;
g_Sound_PlayEx('SOUND_GAME_SWITCH0');
if g_Game_IsNet then MH_SEND_Sound(X, Y, 'SOUND_GAME_SWITCH0');
gExitByTrigger := True;
- g_Game_ExitLevel(trigData.trigMapName);
+ g_Game_ExitLevel(trigData.trigMap);
TimeOut := 18;
Result := True;
TRIGGER_TELEPORT:
begin
Result := tr_Teleport(ActivateUID,
- trigData.trigTargetPoint.X, trigData.trigTargetPoint.Y,
- trigData.trigTlpDir, trigData.trigsilent_teleport,
- trigData.trigd2d_teleport);
+ trigData.trigTarget.X, trigData.trigTarget.Y,
+ trigData.trigDirection, trigData.trigSilent,
+ trigData.trigD2d);
TimeOut := 0;
end;
TRIGGER_OPENDOOR:
begin
- Result := tr_OpenDoor(trigPanelGUID, trigData.trigNoSound, trigData.trigd2d_doors);
+ Result := tr_OpenDoor(trigPanelGUID, trigData.trigSilent, trigData.trigD2d);
TimeOut := 0;
end;
TRIGGER_CLOSEDOOR:
begin
- Result := tr_CloseDoor(trigPanelGUID, trigData.trigNoSound, trigData.trigd2d_doors);
+ Result := tr_CloseDoor(trigPanelGUID, trigData.trigSilent, trigData.trigD2d);
TimeOut := 0;
end;
begin
if gWalls[{trigPanelID}pan.arrIdx].Enabled then
begin
- result := tr_OpenDoor(trigPanelGUID, trigData.trigNoSound, trigData.trigd2d_doors);
+ result := tr_OpenDoor(trigPanelGUID, trigData.trigSilent, trigData.trigD2d);
if (TriggerType = TRIGGER_DOOR5) then DoorTime := 180;
end
else
begin
- result := tr_CloseDoor(trigPanelGUID, trigData.trigNoSound, trigData.trigd2d_doors);
+ result := tr_CloseDoor(trigPanelGUID, trigData.trigSilent, trigData.trigD2d);
end;
if result then TimeOut := 18;
TRIGGER_CLOSETRAP, TRIGGER_TRAP:
begin
- tr_CloseTrap(trigPanelGUID, trigData.trigNoSound, trigData.trigd2d_doors);
+ tr_CloseTrap(trigPanelGUID, trigData.trigSilent, trigData.trigD2d);
if TriggerType = TRIGGER_TRAP then
begin
TRIGGER_LIFTUP:
begin
- Result := tr_SetLift(trigPanelGUID, 0, trigData.trigNoSound, trigData.trigd2d_doors);
+ Result := tr_SetLift(trigPanelGUID, 0, trigData.trigSilent, trigData.trigD2d);
TimeOut := 0;
- if (not trigData.trigNoSound) and Result then begin
+ if (not trigData.trigSilent) and Result then begin
g_Sound_PlayExAt('SOUND_GAME_SWITCH0',
X + (Width div 2),
Y + (Height div 2));
TRIGGER_LIFTDOWN:
begin
- Result := tr_SetLift(trigPanelGUID, 1, trigData.trigNoSound, trigData.trigd2d_doors);
+ Result := tr_SetLift(trigPanelGUID, 1, trigData.trigSilent, trigData.trigD2d);
TimeOut := 0;
- if (not trigData.trigNoSound) and Result then begin
+ if (not trigData.trigSilent) and Result then begin
g_Sound_PlayExAt('SOUND_GAME_SWITCH0',
X + (Width div 2),
Y + (Height div 2));
TRIGGER_LIFT:
begin
- Result := tr_SetLift(trigPanelGUID, 3, trigData.trigNoSound, trigData.trigd2d_doors);
+ Result := tr_SetLift(trigPanelGUID, 3, trigData.trigSilent, trigData.trigD2d);
if Result then
begin
TimeOut := 18;
- if (not trigData.trigNoSound) and Result then begin
+ if (not trigData.trigSilent) and Result then begin
g_Sound_PlayExAt('SOUND_GAME_SWITCH0',
X + (Width div 2),
Y + (Height div 2));
else
TimeOut := 0;
- animonce := trigData.trigAnimOnce;
+ animonce := trigData.trigAnimateOnce;
Result := True;
end;
end;
TRIGGER_SPAWNMONSTER:
- if (trigData.trigMonType in [MONSTER_DEMON..MONSTER_MAN]) then
+ if (trigData.trigSpawnMonsType in [MONSTER_DEMON..MONSTER_MAN]) then
begin
Result := False;
- if (trigData.trigMonDelay > 0) and (actType <> ACTIVATE_CUSTOM) then
+ if (trigData.trigDelay > 0) and (actType <> ACTIVATE_CUSTOM) then
begin
AutoSpawn := not AutoSpawn;
SpawnCooldown := 0;
Result := True;
end;
- if ((trigData.trigMonDelay = 0) and (actType <> ACTIVATE_CUSTOM))
- or ((trigData.trigMonDelay > 0) and (actType = ACTIVATE_CUSTOM)) then
- for k := 1 to trigData.trigMonCount do
+ if ((trigData.trigDelay = 0) and (actType <> ACTIVATE_CUSTOM))
+ or ((trigData.trigDelay > 0) and (actType = ACTIVATE_CUSTOM)) then
+ for k := 1 to trigData.trigMonsCount do
begin
- if (actType = ACTIVATE_CUSTOM) and (trigData.trigMonDelay > 0) then
- SpawnCooldown := trigData.trigMonDelay;
- if (trigData.trigMonMax > 0) and (SpawnedCount >= trigData.trigMonMax) then
+ if (actType = ACTIVATE_CUSTOM) and (trigData.trigDelay > 0) then
+ SpawnCooldown := trigData.trigDelay;
+ if (trigData.trigMax > 0) and (SpawnedCount >= trigData.trigMax) then
Break;
- mon := g_Monsters_Create(trigData.trigMonType,
- trigData.trigMonPos.X, trigData.trigMonPos.Y,
- TDirection(trigData.trigMonDir), True);
+ mon := g_Monsters_Create(trigData.trigSpawnMonsType,
+ trigData.trigTX, trigData.trigTY,
+ TDirection(trigData.trigDirection), True);
Result := True;
// Çäîðîâüå:
- if (trigData.trigMonHealth > 0) then
- mon.SetHealth(trigData.trigMonHealth);
+ if (trigData.trigHealth > 0) then
+ mon.SetHealth(trigData.trigHealth);
// Óñòàíàâëèâàåì ïîâåäåíèå:
- mon.MonsterBehaviour := trigData.trigMonBehav;
+ mon.MonsterBehaviour := trigData.trigBehaviour;
mon.FNoRespawn := True;
if g_Game_IsNet then
MH_SEND_MonsterSpawn(mon.UID);
// Èäåì èñêàòü öåëü, åñëè íàäî:
- if trigData.trigMonActive then
+ if trigData.trigActive then
mon.WakeUp();
- if trigData.trigMonType <> MONSTER_BARREL then Inc(gTotalMonsters);
+ if trigData.trigSpawnMonsType <> MONSTER_BARREL then Inc(gTotalMonsters);
if g_Game_IsNet then
begin
gMonstersSpawned[High(gMonstersSpawned)] := mon.UID;
end;
- if trigData.trigMonMax > 0 then
+ if trigData.trigMax > 0 then
begin
mon.SpawnTrigger := ID;
Inc(SpawnedCount);
end;
- case trigData.trigMonEffect of
+ case trigData.trigEffect of
EFFECT_TELEPORT: begin
if g_Frames_Get(FramesID, 'FRAMES_TELEPORT') then
begin
Anim := TAnimation.Create(FramesID, False, 3);
- g_Sound_PlayExAt('SOUND_GAME_TELEPORT', trigData.trigMonPos.X, trigData.trigMonPos.Y);
+ g_Sound_PlayExAt('SOUND_GAME_TELEPORT', trigData.trigTX, trigData.trigTY);
g_GFX_OnceAnim(mon.Obj.X+mon.Obj.Rect.X+(mon.Obj.Rect.Width div 2)-32,
mon.Obj.Y+mon.Obj.Rect.Y+(mon.Obj.Rect.Height div 2)-32, Anim);
Anim.Free();
if g_Frames_Get(FramesID, 'FRAMES_ITEM_RESPAWN') then
begin
Anim := TAnimation.Create(FramesID, False, 4);
- g_Sound_PlayExAt('SOUND_ITEM_RESPAWNITEM', trigData.trigMonPos.X, trigData.trigMonPos.Y);
+ g_Sound_PlayExAt('SOUND_ITEM_RESPAWNITEM', trigData.trigTX, trigData.trigTY);
g_GFX_OnceAnim(mon.Obj.X+mon.Obj.Rect.X+(mon.Obj.Rect.Width div 2)-16,
mon.Obj.Y+mon.Obj.Rect.Y+(mon.Obj.Rect.Height div 2)-16, Anim);
Anim.Free();
if g_Frames_Get(FramesID, 'FRAMES_FIRE') then
begin
Anim := TAnimation.Create(FramesID, False, 4);
- g_Sound_PlayExAt('SOUND_FIRE', trigData.trigMonPos.X, trigData.trigMonPos.Y);
+ g_Sound_PlayExAt('SOUND_FIRE', trigData.trigTX, trigData.trigTY);
g_GFX_OnceAnim(mon.Obj.X+mon.Obj.Rect.X+(mon.Obj.Rect.Width div 2)-32,
mon.Obj.Y+mon.Obj.Rect.Y+mon.Obj.Rect.Height-128, Anim);
Anim.Free();
end;
TRIGGER_SPAWNITEM:
- if (trigData.trigItemType in [ITEM_MEDKIT_SMALL..ITEM_MAX]) then
+ if (trigData.trigSpawnItemType in [ITEM_MEDKIT_SMALL..ITEM_MAX]) then
begin
Result := False;
- if (trigData.trigItemDelay > 0) and (actType <> ACTIVATE_CUSTOM) then
+ if (trigData.trigDelay > 0) and (actType <> ACTIVATE_CUSTOM) then
begin
AutoSpawn := not AutoSpawn;
SpawnCooldown := 0;
Result := True;
end;
- if ((trigData.trigItemDelay = 0) and (actType <> ACTIVATE_CUSTOM))
- or ((trigData.trigItemDelay > 0) and (actType = ACTIVATE_CUSTOM)) then
- if (not trigData.trigItemOnlyDM) or
+ if ((trigData.trigDelay = 0) and (actType <> ACTIVATE_CUSTOM))
+ or ((trigData.trigDelay > 0) and (actType = ACTIVATE_CUSTOM)) then
+ if (not trigData.trigDmonly) or
(gGameSettings.GameMode in [GM_DM, GM_TDM, GM_CTF]) then
for k := 1 to trigData.trigItemCount do
begin
- if (actType = ACTIVATE_CUSTOM) and (trigData.trigItemDelay > 0) then
- SpawnCooldown := trigData.trigItemDelay;
- if (trigData.trigItemMax > 0) and (SpawnedCount >= trigData.trigItemMax) then
+ if (actType = ACTIVATE_CUSTOM) and (trigData.trigDelay > 0) then
+ SpawnCooldown := trigData.trigDelay;
+ if (trigData.trigMax > 0) and (SpawnedCount >= trigData.trigMax) then
Break;
- iid := g_Items_Create(trigData.trigItemPos.X, trigData.trigItemPos.Y,
- trigData.trigItemType, trigData.trigItemFalls, False, True);
+ iid := g_Items_Create(trigData.trigTX, trigData.trigTY,
+ trigData.trigSpawnItemType, trigData.trigGravity, False, True);
Result := True;
- if trigData.trigItemMax > 0 then
+ if trigData.trigMax > 0 then
begin
it := g_Items_ByIdx(iid);
it.SpawnTrigger := ID;
Inc(SpawnedCount);
end;
- case trigData.trigItemEffect of
+ case trigData.trigEffect of
EFFECT_TELEPORT: begin
it := g_Items_ByIdx(iid);
if g_Frames_Get(FramesID, 'FRAMES_TELEPORT') then
begin
Anim := TAnimation.Create(FramesID, False, 3);
- g_Sound_PlayExAt('SOUND_GAME_TELEPORT', trigData.trigItemPos.X, trigData.trigItemPos.Y);
+ g_Sound_PlayExAt('SOUND_GAME_TELEPORT', trigData.trigTX, trigData.trigTY);
g_GFX_OnceAnim(it.Obj.X+it.Obj.Rect.X+(it.Obj.Rect.Width div 2)-32,
it.Obj.Y+it.Obj.Rect.Y+(it.Obj.Rect.Height div 2)-32, Anim);
Anim.Free();
if g_Frames_Get(FramesID, 'FRAMES_ITEM_RESPAWN') then
begin
Anim := TAnimation.Create(FramesID, False, 4);
- g_Sound_PlayExAt('SOUND_ITEM_RESPAWNITEM', trigData.trigItemPos.X, trigData.trigItemPos.Y);
+ g_Sound_PlayExAt('SOUND_ITEM_RESPAWNITEM', trigData.trigTX, trigData.trigTY);
g_GFX_OnceAnim(it.Obj.X+it.Obj.Rect.X+(it.Obj.Rect.Width div 2)-16,
it.Obj.Y+it.Obj.Rect.Y+(it.Obj.Rect.Height div 2)-16, Anim);
Anim.Free();
if g_Frames_Get(FramesID, 'FRAMES_FIRE') then
begin
Anim := TAnimation.Create(FramesID, False, 4);
- g_Sound_PlayExAt('SOUND_FIRE', trigData.trigItemPos.X, trigData.trigItemPos.Y);
+ g_Sound_PlayExAt('SOUND_FIRE', trigData.trigTX, trigData.trigTY);
g_GFX_OnceAnim(it.Obj.X+it.Obj.Rect.X+(it.Obj.Rect.Width div 2)-32,
it.Obj.Y+it.Obj.Rect.Y+it.Obj.Rect.Height-128, Anim);
Anim.Free();
gMusic.Play();
end;
- if Trigger.trigData.trigMusicAction = 1 then
- begin // Âêëþ÷èòü
+ case Trigger.trigData.trigMusicAction of
+ TRIGGER_MUSIC_ACTION_STOP: // Âûêëþ÷èòü
+ gMusic.SpecPause := True; // Ïàóçà
+ TRIGGER_MUSIC_ACTION_PLAY: // Âêëþ÷èòü
if gMusic.SpecPause then // Áûëà íà ïàóçå => èãðàòü
gMusic.SpecPause := False
else // Èãðàëà => ñíà÷àëà
gMusic.SetPosition(0);
- end
- else // Âûêëþ÷èòü
- begin
- // Ïàóçà:
- gMusic.SpecPause := True;
- end;
+ end;
if coolDown then
TimeOut := 36
TRIGGER_PUSH:
begin
- pAngle := -DegToRad(trigData.trigPushAngle);
+ pAngle := -DegToRad(trigData.trigAngle);
Result := tr_Push(ActivateUID,
- Floor(Cos(pAngle)*trigData.trigPushForce),
- Floor(Sin(pAngle)*trigData.trigPushForce),
- trigData.trigResetVel);
+ Floor(Cos(pAngle)*trigData.trigForce),
+ Floor(Sin(pAngle)*trigData.trigForce),
+ trigData.trigResetVelocity);
TimeOut := 0;
end;
begin
Result := False;
// Ïðèáàâèòü èëè îòíÿòü î÷êî
- if (trigData.trigScoreAction in [0..1]) and (trigData.trigScoreCount > 0) then
+ if (trigData.trigScoreAction in [TRIGGER_SCORE_ACTION_ADD, TRIGGER_SCORE_ACTION_SUB]) and (trigData.trigScoreCount > 0) then
begin
// Ñâîåé èëè ÷óæîé êîìàíäå
- if (trigData.trigScoreTeam in [0..1]) and (g_GetUIDType(ActivateUID) = UID_PLAYER) then
+ if (trigData.trigScoreTeam in [TRIGGER_SCORE_TEAM_MINE_RED, TRIGGER_SCORE_TEAM_MINE_BLUE]) and (g_GetUIDType(ActivateUID) = UID_PLAYER) then
begin
p := g_Player_Get(ActivateUID);
- if ((trigData.trigScoreAction = 0) and (trigData.trigScoreTeam = 0) and (p.Team = TEAM_RED))
- or ((trigData.trigScoreAction = 0) and (trigData.trigScoreTeam = 1) and (p.Team = TEAM_BLUE)) then
+ if ((trigData.trigScoreAction = TRIGGER_SCORE_ACTION_ADD) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) and (p.Team = TEAM_RED))
+ or ((trigData.trigScoreAction = TRIGGER_SCORE_ACTION_ADD) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_BLUE) and (p.Team = TEAM_BLUE)) then
begin
Inc(gTeamStat[TEAM_RED].Goals, trigData.trigScoreCount); // Red Scores
if trigData.trigScoreCon then
- if trigData.trigScoreTeam = 0 then
+ begin
+ if (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) then
begin
g_Console_Add(Format(_lc[I_PLAYER_SCORE_ADD_OWN], [p.Name, trigData.trigScoreCount, _lc[I_PLAYER_SCORE_TO_RED]]), True);
if g_Game_IsServer and g_Game_IsNet then
if g_Game_IsServer and g_Game_IsNet then
MH_SEND_GameEvent(NET_EV_SCORE, p.UID or (trigData.trigScoreCount shl 16), '+re');
end;
+ end;
if trigData.trigScoreMsg then
begin
MH_SEND_GameEvent(NET_EV_SCORE_MSG, TEAM_RED);
end;
end;
- if ((trigData.trigScoreAction = 1) and (trigData.trigScoreTeam = 0) and (p.Team = TEAM_RED))
- or ((trigData.trigScoreAction = 1) and (trigData.trigScoreTeam = 1) and (p.Team = TEAM_BLUE)) then
+ if ((trigData.trigScoreAction = TRIGGER_SCORE_ACTION_SUB) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) and (p.Team = TEAM_RED))
+ or ((trigData.trigScoreAction = TRIGGER_SCORE_ACTION_SUB) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_BLUE) and (p.Team = TEAM_BLUE)) then
begin
Dec(gTeamStat[TEAM_RED].Goals, trigData.trigScoreCount); // Red Fouls
if trigData.trigScoreCon then
- if trigData.trigScoreTeam = 0 then
+ begin
+ if (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) then
begin
g_Console_Add(Format(_lc[I_PLAYER_SCORE_SUB_OWN], [p.Name, trigData.trigScoreCount, _lc[I_PLAYER_SCORE_TO_RED]]), True);
if g_Game_IsServer and g_Game_IsNet then
if g_Game_IsServer and g_Game_IsNet then
MH_SEND_GameEvent(NET_EV_SCORE, p.UID or (trigData.trigScoreCount shl 16), '-re');
end;
+ end;
if trigData.trigScoreMsg then
begin
MH_SEND_GameEvent(NET_EV_SCORE_MSG, -TEAM_RED);
end;
end;
- if ((trigData.trigScoreAction = 0) and (trigData.trigScoreTeam = 0) and (p.Team = TEAM_BLUE))
- or ((trigData.trigScoreAction = 0) and (trigData.trigScoreTeam = 1) and (p.Team = TEAM_RED)) then
+ if ((trigData.trigScoreAction = TRIGGER_SCORE_ACTION_ADD) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) and (p.Team = TEAM_BLUE))
+ or ((trigData.trigScoreAction = TRIGGER_SCORE_ACTION_ADD) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_BLUE) and (p.Team = TEAM_RED)) then
begin
Inc(gTeamStat[TEAM_BLUE].Goals, trigData.trigScoreCount); // Blue Scores
if trigData.trigScoreCon then
- if trigData.trigScoreTeam = 0 then
+ begin
+ if (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) then
begin
g_Console_Add(Format(_lc[I_PLAYER_SCORE_ADD_OWN], [p.Name, trigData.trigScoreCount, _lc[I_PLAYER_SCORE_TO_BLUE]]), True);
if g_Game_IsServer and g_Game_IsNet then
if g_Game_IsServer and g_Game_IsNet then
MH_SEND_GameEvent(NET_EV_SCORE, p.UID or (trigData.trigScoreCount shl 16), '+be');
end;
+ end;
if trigData.trigScoreMsg then
begin
MH_SEND_GameEvent(NET_EV_SCORE_MSG, TEAM_BLUE);
end;
end;
- if ((trigData.trigScoreAction = 1) and (trigData.trigScoreTeam = 0) and (p.Team = TEAM_BLUE))
- or ((trigData.trigScoreAction = 1) and (trigData.trigScoreTeam = 1) and (p.Team = TEAM_RED)) then
+ if ((trigData.trigScoreAction = TRIGGER_SCORE_ACTION_SUB) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) and (p.Team = TEAM_BLUE))
+ or ((trigData.trigScoreAction = TRIGGER_SCORE_ACTION_SUB) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_BLUE) and (p.Team = TEAM_RED)) then
begin
Dec(gTeamStat[TEAM_BLUE].Goals, trigData.trigScoreCount); // Blue Fouls
if trigData.trigScoreCon then
- if trigData.trigScoreTeam = 0 then
+ begin
+ if (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) then
begin
g_Console_Add(Format(_lc[I_PLAYER_SCORE_SUB_OWN], [p.Name, trigData.trigScoreCount, _lc[I_PLAYER_SCORE_TO_BLUE]]), True);
if g_Game_IsServer and g_Game_IsNet then
if g_Game_IsServer and g_Game_IsNet then
MH_SEND_GameEvent(NET_EV_SCORE, p.UID or (trigData.trigScoreCount shl 16), '-be');
end;
+ end;
if trigData.trigScoreMsg then
begin
Result := (p.Team = TEAM_RED) or (p.Team = TEAM_BLUE);
end;
// Êàêîé-òî êîíêðåòíîé êîìàíäå
- if trigData.trigScoreTeam in [2..3] then
+ if trigData.trigScoreTeam in [TRIGGER_SCORE_TEAM_FORCE_RED, TRIGGER_SCORE_TEAM_FORCE_BLUE] then
begin
- if (trigData.trigScoreAction = 0) and (trigData.trigScoreTeam = 2) then
+ if (trigData.trigScoreAction = TRIGGER_SCORE_ACTION_ADD) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_FORCE_RED) then
begin
Inc(gTeamStat[TEAM_RED].Goals, trigData.trigScoreCount); // Red Scores
MH_SEND_GameEvent(NET_EV_SCORE_MSG, TEAM_RED);
end;
end;
- if (trigData.trigScoreAction = 1) and (trigData.trigScoreTeam = 2) then
+ if (trigData.trigScoreAction = TRIGGER_SCORE_ACTION_SUB) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_FORCE_RED) then
begin
Dec(gTeamStat[TEAM_RED].Goals, trigData.trigScoreCount); // Red Fouls
MH_SEND_GameEvent(NET_EV_SCORE_MSG, -TEAM_RED);
end;
end;
- if (trigData.trigScoreAction = 0) and (trigData.trigScoreTeam = 3) then
+ if (trigData.trigScoreAction = TRIGGER_SCORE_ACTION_ADD) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_FORCE_BLUE) then
begin
Inc(gTeamStat[TEAM_BLUE].Goals, trigData.trigScoreCount); // Blue Scores
MH_SEND_GameEvent(NET_EV_SCORE_MSG, TEAM_BLUE);
end;
end;
- if (trigData.trigScoreAction = 1) and (trigData.trigScoreTeam = 3) then
+ if (trigData.trigScoreAction = TRIGGER_SCORE_ACTION_SUB) and (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_FORCE_BLUE) then
begin
Dec(gTeamStat[TEAM_BLUE].Goals, trigData.trigScoreCount); // Blue Fouls
end;
end;
// Âûèãðûø
- if (trigData.trigScoreAction = 2) and (gGameSettings.GoalLimit > 0) then
+ if (trigData.trigScoreAction = TRIGGER_SCORE_ACTION_WIN) and (gGameSettings.GoalLimit > 0) then
begin
// Ñâîåé èëè ÷óæîé êîìàíäû
- if (trigData.trigScoreTeam in [0..1]) and (g_GetUIDType(ActivateUID) = UID_PLAYER) then
+ if (trigData.trigScoreTeam in [TRIGGER_SCORE_TEAM_MINE_RED, TRIGGER_SCORE_TEAM_MINE_BLUE]) and (g_GetUIDType(ActivateUID) = UID_PLAYER) then
begin
p := g_Player_Get(ActivateUID);
- if ((trigData.trigScoreTeam = 0) and (p.Team = TEAM_RED)) // Red Wins
- or ((trigData.trigScoreTeam = 1) and (p.Team = TEAM_BLUE)) then
+ if ((trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) and (p.Team = TEAM_RED)) // Red Wins
+ or ((trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_BLUE) and (p.Team = TEAM_BLUE)) then
+ begin
if gTeamStat[TEAM_RED].Goals < SmallInt(gGameSettings.GoalLimit) then
begin
gTeamStat[TEAM_RED].Goals := gGameSettings.GoalLimit;
if trigData.trigScoreCon then
- if trigData.trigScoreTeam = 0 then
+ begin
+ if (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) then
begin
g_Console_Add(Format(_lc[I_PLAYER_SCORE_WIN_OWN], [p.Name, _lc[I_PLAYER_SCORE_TO_RED]]), True);
if g_Game_IsServer and g_Game_IsNet then
if g_Game_IsServer and g_Game_IsNet then
MH_SEND_GameEvent(NET_EV_SCORE, p.UID, 'wre');
end;
+ end;
Result := True;
end;
- if ((trigData.trigScoreTeam = 0) and (p.Team = TEAM_BLUE)) // Blue Wins
- or ((trigData.trigScoreTeam = 1) and (p.Team = TEAM_RED)) then
+ end;
+ if ((trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) and (p.Team = TEAM_BLUE)) // Blue Wins
+ or ((trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_BLUE) and (p.Team = TEAM_RED)) then
+ begin
if gTeamStat[TEAM_BLUE].Goals < SmallInt(gGameSettings.GoalLimit) then
begin
gTeamStat[TEAM_BLUE].Goals := gGameSettings.GoalLimit;
if trigData.trigScoreCon then
- if trigData.trigScoreTeam = 0 then
+ begin
+ if (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) then
begin
g_Console_Add(Format(_lc[I_PLAYER_SCORE_WIN_OWN], [p.Name, _lc[I_PLAYER_SCORE_TO_BLUE]]), True);
if g_Game_IsServer and g_Game_IsNet then
if g_Game_IsServer and g_Game_IsNet then
MH_SEND_GameEvent(NET_EV_SCORE, p.UID, 'wbe');
end;
+ end;
Result := True;
end;
+ end;
end;
// Êàêîé-òî êîíêðåòíîé êîìàíäû
- if trigData.trigScoreTeam in [2..3] then
+ if trigData.trigScoreTeam in [TRIGGER_SCORE_TEAM_FORCE_RED, TRIGGER_SCORE_TEAM_FORCE_BLUE] then
begin
- if trigData.trigScoreTeam = 2 then // Red Wins
+ if (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_FORCE_RED) then // Red Wins
+ begin
if gTeamStat[TEAM_RED].Goals < SmallInt(gGameSettings.GoalLimit) then
begin
gTeamStat[TEAM_RED].Goals := gGameSettings.GoalLimit;
Result := True;
end;
- if trigData.trigScoreTeam = 3 then // Blue Wins
+ end;
+ if (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_FORCE_BLUE) then // Blue Wins
+ begin
if gTeamStat[TEAM_BLUE].Goals < SmallInt(gGameSettings.GoalLimit) then
begin
gTeamStat[TEAM_BLUE].Goals := gGameSettings.GoalLimit;
Result := True;
end;
+ end;
end;
end;
// Ïðîèãðûø
- if (trigData.trigScoreAction = 3) and (gGameSettings.GoalLimit > 0) then
+ if (trigData.trigScoreAction = TRIGGER_SCORE_ACTION_LOOSE) and (gGameSettings.GoalLimit > 0) then
begin
// Ñâîåé èëè ÷óæîé êîìàíäû
- if (trigData.trigScoreTeam in [0..1]) and (g_GetUIDType(ActivateUID) = UID_PLAYER) then
+ if (trigData.trigScoreTeam in [TRIGGER_SCORE_TEAM_MINE_RED, TRIGGER_SCORE_TEAM_MINE_BLUE]) and (g_GetUIDType(ActivateUID) = UID_PLAYER) then
begin
p := g_Player_Get(ActivateUID);
- if ((trigData.trigScoreTeam = 0) and (p.Team = TEAM_BLUE)) // Red Wins
- or ((trigData.trigScoreTeam = 1) and (p.Team = TEAM_RED)) then
+ if ((trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) and (p.Team = TEAM_BLUE)) // Red Wins
+ or ((trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_BLUE) and (p.Team = TEAM_RED)) then
if gTeamStat[TEAM_RED].Goals < SmallInt(gGameSettings.GoalLimit) then
begin
gTeamStat[TEAM_RED].Goals := gGameSettings.GoalLimit;
if trigData.trigScoreCon then
- if trigData.trigScoreTeam = 0 then
+ if trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED then
begin
g_Console_Add(Format(_lc[I_PLAYER_SCORE_WIN_ENEMY], [p.Name, _lc[I_PLAYER_SCORE_TO_RED]]), True);
if g_Game_IsServer and g_Game_IsNet then
Result := True;
end;
- if ((trigData.trigScoreTeam = 0) and (p.Team = TEAM_RED)) // Blue Wins
- or ((trigData.trigScoreTeam = 1) and (p.Team = TEAM_BLUE)) then
+ if ((trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED) and (p.Team = TEAM_RED)) // Blue Wins
+ or ((trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_BLUE) and (p.Team = TEAM_BLUE)) then
if gTeamStat[TEAM_BLUE].Goals < SmallInt(gGameSettings.GoalLimit) then
begin
gTeamStat[TEAM_BLUE].Goals := gGameSettings.GoalLimit;
if trigData.trigScoreCon then
- if trigData.trigScoreTeam = 0 then
+ if trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_MINE_RED then
begin
g_Console_Add(Format(_lc[I_PLAYER_SCORE_WIN_ENEMY], [p.Name, _lc[I_PLAYER_SCORE_TO_BLUE]]), True);
if g_Game_IsServer and g_Game_IsNet then
end;
end;
// Êàêîé-òî êîíêðåòíîé êîìàíäû
- if trigData.trigScoreTeam in [2..3] then
+ if trigData.trigScoreTeam in [TRIGGER_SCORE_TEAM_FORCE_BLUE, TRIGGER_SCORE_TEAM_FORCE_RED] then
begin
- if trigData.trigScoreTeam = 3 then // Red Wins
+ if (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_FORCE_BLUE) then // Red Wins
+ begin
if gTeamStat[TEAM_RED].Goals < SmallInt(gGameSettings.GoalLimit) then
begin
gTeamStat[TEAM_RED].Goals := gGameSettings.GoalLimit;
Result := True;
end;
- if trigData.trigScoreTeam = 2 then // Blue Wins
+ end;
+ if (trigData.trigScoreTeam = TRIGGER_SCORE_TEAM_FORCE_RED) then // Blue Wins
+ begin
if gTeamStat[TEAM_BLUE].Goals < SmallInt(gGameSettings.GoalLimit) then
begin
gTeamStat[TEAM_BLUE].Goals := gGameSettings.GoalLimit;
Result := True;
end;
+ end;
end;
end;
if Result then begin
TRIGGER_MESSAGE:
begin
- Result := tr_Message(trigData.trigMessageKind, trigData.trigMessageText,
- trigData.trigMessageSendTo, trigData.trigMessageTime,
+ Result := tr_Message(trigData.trigKind, trigData.trigText,
+ trigData.trigMsgDest, trigData.trigMsgTime,
ActivateUID);
TimeOut := 18;
end;
end else
begin // Óæå âèäåëè åãî
// Åñëè èíòåðâàë îòêëþ÷¸í, íî îí âñ¸ åù¸ â çîíå ïîðàæåíèÿ, äà¸ì åìó âðåìÿ
- if (trigData.trigDamageInterval = 0) and (Activators[k].TimeOut > 0) then
+ if (trigData.trigInterval = 0) and (Activators[k].TimeOut > 0) then
Activators[k].TimeOut := 65535;
// Òàéìàóò ïðîø¸ë - ðàáîòàåì
Result := Activators[k].TimeOut = 0;
Exit;
// Íàíîñèì óðîí èãðîêó
- if (TriggerType = TRIGGER_DAMAGE) and (trigData.trigDamageValue > 0) then
- p.Damage(trigData.trigDamageValue, 0, 0, 0, HIT_SOME);
+ if (TriggerType = TRIGGER_DAMAGE) and (trigData.trigAmount > 0) then
+ p.Damage(trigData.trigAmount, 0, 0, 0, HIT_SOME);
// Ëå÷èì èãðîêà
- if (TriggerType = TRIGGER_HEALTH) and (trigData.trigHealValue > 0) then
- if p.Heal(trigData.trigHealValue, not trigData.trigHealMax) and (not trigData.trigHealSilent) then
+ if (TriggerType = TRIGGER_HEALTH) and (trigData.trigAmount > 0) then
+ if p.Heal(trigData.trigAmount, not trigData.trigHealMax) and (not trigData.trigSilent) then
begin
g_Sound_PlayExAt('SOUND_ITEM_GETITEM', p.Obj.X, p.Obj.Y);
if g_Game_IsServer and g_Game_IsNet then
Exit;
// Íàíîñèì óðîí ìîíñòðó
- if (TriggerType = TRIGGER_DAMAGE) and (trigData.trigDamageValue > 0) then
- m.Damage(trigData.trigDamageValue, 0, 0, 0, HIT_SOME);
+ if (TriggerType = TRIGGER_DAMAGE) and (trigData.trigAmount > 0) then
+ m.Damage(trigData.trigAmount, 0, 0, 0, HIT_SOME);
// Ëå÷èì ìîíñòðà
- if (TriggerType = TRIGGER_HEALTH) and (trigData.trigHealValue > 0) then
- if m.Heal(trigData.trigHealValue) and (not trigData.trigHealSilent) then
+ if (TriggerType = TRIGGER_HEALTH) and (trigData.trigAmount > 0) then
+ if m.Heal(trigData.trigAmount) and (not trigData.trigSilent) then
begin
g_Sound_PlayExAt('SOUND_ITEM_GETITEM', m.Obj.X, m.Obj.Y);
if g_Game_IsServer and g_Game_IsNet then
end;
end;
// Íàçíà÷àåì âðåìÿ ñëåäóþùåãî âîçäåéñòâèÿ
- if TriggerType = TRIGGER_DAMAGE then
- idx := trigData.trigDamageInterval
- else
- idx := trigData.trigHealInterval;
+ idx := trigData.trigInterval;
if coolDown then
if idx > 0 then
Activators[k].TimeOut := idx
Exit;
// put this at the beginning so it doesn't trigger itself
- TimeOut := trigData.trigShotWait + 1;
+ TimeOut := trigData.trigWait + 1;
- wx := trigData.trigShotPos.X;
- wy := trigData.trigShotPos.Y;
- pAngle := -DegToRad(trigData.trigShotAngle);
+ wx := trigData.trigTX;
+ wy := trigData.trigTY;
+ pAngle := -DegToRad(trigData.trigAngle);
xd := wx + Round(Cos(pAngle) * 32.0);
yd := wy + Round(Sin(pAngle) * 32.0);
TargetUID := 0;
((trigData.trigShotTarget > TRIGGER_SHOT_TARGET_NONE) and (TargetUID = 0)) then
begin
Result := True;
- if (trigData.trigShotIntSight = 0) or
+ if (trigData.trigSight = 0) or
(trigData.trigShotTarget = TRIGGER_SHOT_TARGET_NONE) or
(TargetUID = ShotSightTarget) then
MakeShot(Trigger, wx, wy, xd, yd, TargetUID)
else
begin
- ShotSightTime := trigData.trigShotIntSight;
+ ShotSightTime := trigData.trigSight;
ShotSightTargetN := TargetUID;
if trigData.trigShotType = TRIGGER_SHOT_BFG then
begin
wy := Y + Height div 2;
end;
end;
- xd := trigData.trigFXVelX;
- yd := trigData.trigFXVelY;
- if trigData.trigFXSpreadL > 0 then xd := xd - Random(trigData.trigFXSpreadL + 1);
- if trigData.trigFXSpreadR > 0 then xd := xd + Random(trigData.trigFXSpreadR + 1);
- if trigData.trigFXSpreadU > 0 then yd := yd - Random(trigData.trigFXSpreadU + 1);
- if trigData.trigFXSpreadD > 0 then yd := yd + Random(trigData.trigFXSpreadD + 1);
+ xd := trigData.trigVelX;
+ yd := trigData.trigVelY;
+ if trigData.trigSpreadL > 0 then xd -= Random(trigData.trigSpreadL+1);
+ if trigData.trigSpreadR > 0 then xd += Random(trigData.trigSpreadR+1);
+ if trigData.trigSpreadU > 0 then yd -= Random(trigData.trigSpreadU+1);
+ if trigData.trigSpreadD > 0 then yd += Random(trigData.trigSpreadD+1);
tr_MakeEffect(wx, wy, xd, yd,
trigData.trigFXType, trigData.trigFXSubType,
- trigData.trigFXColorR, trigData.trigFXColorG, trigData.trigFXColorB, True, False);
+ trigData.trigFXRed, trigData.trigFXGreen, trigData.trigFXBlue, True, False);
Dec(idx);
end;
- TimeOut := trigData.trigFXWait;
+ TimeOut := trigData.trigWait;
end;
end;
end;
ShotSightTimeout := 0;
ShotSightTarget := 0;
ShotSightTargetN := 0;
- ShotAmmoCount := Trigger.trigData.trigShotAmmo;
+ ShotAmmoCount := Trigger.trigData.trigAmmo;
ShotReloadTime := 0;
end;
continue;
end;
// Ñ÷èòàåì, ÷òî îáúåêò ïîêèíóë çîíó äåéñòâèÿ òðèããåðà
- if (trigData.trigDamageInterval = 0) and (Activators[b].TimeOut < 65530) then Activators[b].TimeOut := 0;
+ if (trigData.trigInterval = 0) and (Activators[b].TimeOut < 65530) then Activators[b].TimeOut := 0;
end;
end;
if SpawnCooldown = 0 then
begin
// Åñëè ïðèøëî âðåìÿ, ñïàâíèì ìîíñòðà
- if (TriggerType = TRIGGER_SPAWNMONSTER) and (trigData.trigMonDelay > 0) then
+ if (TriggerType = TRIGGER_SPAWNMONSTER) and (trigData.trigDelay > 0) then
begin
ActivateUID := 0;
ActivateTrigger(gTriggers[a], ACTIVATE_CUSTOM);
end;
// Åñëè ïðèøëî âðåìÿ, ñïàâíèì ïðåäìåò
- if (TriggerType = TRIGGER_SPAWNITEM) and (trigData.trigItemDelay > 0) then
+ if (TriggerType = TRIGGER_SPAWNITEM) and (trigData.trigDelay > 0) then
begin
ActivateUID := 0;
ActivateTrigger(gTriggers[a], ACTIVATE_CUSTOM);
if ShotReloadTime > 0 then
begin
Dec(ShotReloadTime);
- if ShotReloadTime = 0 then ShotAmmoCount := trigData.trigShotAmmo;
+ if ShotReloadTime = 0 then ShotAmmoCount := trigData.trigAmmo;
end;
end;
// Òðèããåð "Ëîâóøêà" - ïîðà îòêðûâàòü
if (TriggerType = TRIGGER_TRAP) and (DoorTime = 0) and (g_Map_PanelByGUID(trigPanelGUID) <> nil) then
begin
- tr_OpenDoor(trigPanelGUID, trigData.trigNoSound, trigData.trigd2d_doors);
+ tr_OpenDoor(trigPanelGUID, trigData.trigSilent, trigData.trigD2d);
DoorTime := -1;
end;
else
begin
// Ïîêà îòêðûòà - çàêðûâàåì
- if tr_CloseDoor(trigPanelGUID, trigData.trigNoSound, trigData.trigd2d_doors) then DoorTime := -1;
+ if tr_CloseDoor(trigPanelGUID, trigData.trigSilent, trigData.trigD2d) then DoorTime := -1;
end;
end;
end;
// Òðèããåð - ðàñøèðèòåëü èëè ïåðåêëþ÷àòåëü, è ïðîøëà çàäåðæêà, è íàæàëè íóæíîå ÷èñëî ðàç:
if (TriggerType in [TRIGGER_PRESS, TRIGGER_ON, TRIGGER_OFF, TRIGGER_ONOFF]) and
- (PressTime = 0) and (PressCount >= trigData.trigCount) then
+ (PressTime = 0) and (PressCount >= trigData.trigPressCount) then
begin
// Ñáðàñûâàåì çàäåðæêó àêòèâàöèè:
PressTime := -1;
// Ñáðàñûâàåì ñ÷åò÷èê íàæàòèé:
- if trigData.trigCount > 0 then PressCount -= trigData.trigCount else PressCount := 0;
+ if trigData.trigPressCount > 0 then PressCount -= trigData.trigPressCount else PressCount := 0;
// Îïðåäåëÿåì èçìåíÿåìûå èì òðèããåðû:
for b := 0 to High(gTriggers) do
(TriggerType = TRIGGER_DOOR5) or
(TriggerType = TRIGGER_DOOR) then
begin
- tr_OpenDoor(trigPanelGUID, True, trigData.trigd2d_doors);
+ tr_OpenDoor(trigPanelGUID, True, trigData.trigD2d);
if TriggerType = TRIGGER_DOOR5 then DoorTime := 180;
b := True;
end;