Skip to content
This repository has been archived by the owner on Mar 19, 2023. It is now read-only.

Commit

Permalink
Triggers: Update targets order
Browse files Browse the repository at this point in the history
  • Loading branch information
binarymaster committed Jan 4, 2016
1 parent 8a232d0 commit d9f686b
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 42 deletions.
60 changes: 30 additions & 30 deletions DF Sources/g_triggers.pas
Expand Up @@ -1384,8 +1384,7 @@ function ActivateTrigger(var Trigger: TTrigger; actType: Byte): Boolean;
TargetUID := 0;

case Data.ShotTarget of
1: // monsters then players
begin
TRIGGER_SHOT_TARGET_MON: // monsters
if gMonsters <> nil then
for i := Low(gMonsters) to High(gMonsters) do
if (gMonsters[i] <> nil) and gMonsters[i].Live and
Expand All @@ -1396,7 +1395,9 @@ function ActivateTrigger(var Trigger: TTrigger; actType: Byte): Boolean;
TargetUID := gMonsters[i].UID;
break;
end;
if (TargetUID = 0) and (gPlayers <> nil) then

TRIGGER_SHOT_TARGET_PLR: // players
if gPlayers <> nil then
for i := Low(gPlayers) to High(gPlayers) do
if (gPlayers[i] <> nil) and gPlayers[i].Live and
(Data.ShotAllMap or g_Obj_Collide(X, Y, Width, Height, @(gPlayers[i].Obj))) then
Expand All @@ -1406,33 +1407,35 @@ function ActivateTrigger(var Trigger: TTrigger; actType: Byte): Boolean;
TargetUID := gPlayers[i].UID;
break;
end;
end;

2: // players then monsters
begin
TRIGGER_SHOT_TARGET_RED: // red team
if gPlayers <> nil then
for i := Low(gPlayers) to High(gPlayers) do
if (gPlayers[i] <> nil) and gPlayers[i].Live and
(gPlayers[i].Team = TEAM_RED) and
(Data.ShotAllMap or g_Obj_Collide(X, Y, Width, Height, @(gPlayers[i].Obj))) then
begin
xd := gPlayers[i].GameX + PLAYER_RECT_CX;
yd := gPlayers[i].GameY + PLAYER_RECT_CY;
TargetUID := gPlayers[i].UID;
break;
end;
if (TargetUID = 0) and (gMonsters <> nil) then
for i := Low(gMonsters) to High(gMonsters) do
if (gMonsters[i] <> nil) and gMonsters[i].Live and
(Data.ShotAllMap or g_Obj_Collide(X, Y, Width, Height, @(gMonsters[i].Obj))) then

TRIGGER_SHOT_TARGET_BLUE: // blue team
if gPlayers <> nil then
for i := Low(gPlayers) to High(gPlayers) do
if (gPlayers[i] <> nil) and gPlayers[i].Live and
(gPlayers[i].Team = TEAM_BLUE) and
(Data.ShotAllMap or g_Obj_Collide(X, Y, Width, Height, @(gPlayers[i].Obj))) then
begin
xd := gMonsters[i].GameX + gMonsters[i].Obj.Rect.Width div 2;
yd := gMonsters[i].GameY + gMonsters[i].Obj.Rect.Height div 2;
TargetUID := gMonsters[i].UID;
xd := gPlayers[i].GameX + PLAYER_RECT_CX;
yd := gPlayers[i].GameY + PLAYER_RECT_CY;
TargetUID := gPlayers[i].UID;
break;
end;
end;

3: // monsters
TRIGGER_SHOT_TARGET_MONPLR: // monsters then players
begin
if gMonsters <> nil then
for i := Low(gMonsters) to High(gMonsters) do
if (gMonsters[i] <> nil) and gMonsters[i].Live and
Expand All @@ -1443,9 +1446,7 @@ function ActivateTrigger(var Trigger: TTrigger; actType: Byte): Boolean;
TargetUID := gMonsters[i].UID;
break;
end;

4: // players
if gPlayers <> nil then
if (TargetUID = 0) and (gPlayers <> nil) then
for i := Low(gPlayers) to High(gPlayers) do
if (gPlayers[i] <> nil) and gPlayers[i].Live and
(Data.ShotAllMap or g_Obj_Collide(X, Y, Width, Height, @(gPlayers[i].Obj))) then
Expand All @@ -1455,32 +1456,31 @@ function ActivateTrigger(var Trigger: TTrigger; actType: Byte): Boolean;
TargetUID := gPlayers[i].UID;
break;
end;
end;

5: // red team
TRIGGER_SHOT_TARGET_PLRMON: // players then monsters
begin
if gPlayers <> nil then
for i := Low(gPlayers) to High(gPlayers) do
if (gPlayers[i] <> nil) and gPlayers[i].Live and
(gPlayers[i].Team = TEAM_RED) and
(Data.ShotAllMap or g_Obj_Collide(X, Y, Width, Height, @(gPlayers[i].Obj))) then
begin
xd := gPlayers[i].GameX + PLAYER_RECT_CX;
yd := gPlayers[i].GameY + PLAYER_RECT_CY;
TargetUID := gPlayers[i].UID;
break;
end;

6: // blue team
if gPlayers <> nil then
for i := Low(gPlayers) to High(gPlayers) do
if (gPlayers[i] <> nil) and gPlayers[i].Live and
(gPlayers[i].Team = TEAM_BLUE) and
(Data.ShotAllMap or g_Obj_Collide(X, Y, Width, Height, @(gPlayers[i].Obj))) then
if (TargetUID = 0) and (gMonsters <> nil) then
for i := Low(gMonsters) to High(gMonsters) do
if (gMonsters[i] <> nil) and gMonsters[i].Live and
(Data.ShotAllMap or g_Obj_Collide(X, Y, Width, Height, @(gMonsters[i].Obj))) then
begin
xd := gPlayers[i].GameX + PLAYER_RECT_CX;
yd := gPlayers[i].GameY + PLAYER_RECT_CY;
TargetUID := gPlayers[i].UID;
xd := gMonsters[i].GameX + gMonsters[i].Obj.Rect.Width div 2;
yd := gMonsters[i].GameY + gMonsters[i].Obj.Rect.Height div 2;
TargetUID := gMonsters[i].UID;
break;
end;
end;

else TargetUID := ActivateUID;
end;
Expand Down
16 changes: 8 additions & 8 deletions Editor2 Source/g_language.pas
Expand Up @@ -1034,18 +1034,18 @@ procedure g_Language_Dump(fileName: String);
'Àâòîíàâåäåíèå'),
('PROP TR SHOT TO 0', 'None',
'Íåò'),
('PROP TR SHOT TO 1', 'Monsters, players',
'Ìîíñòðû, èãðîêè'),
('PROP TR SHOT TO 2', 'Players, monsters',
'Èãðîêè, ìîíñòðû'),
('PROP TR SHOT TO 3', 'Monsters',
('PROP TR SHOT TO 1', 'Monsters',
'Ìîíñòðû'),
('PROP TR SHOT TO 4', 'Players',
('PROP TR SHOT TO 2', 'Players',
'Èãðîêè'),
('PROP TR SHOT TO 5', 'Red team',
('PROP TR SHOT TO 3', 'Red team',
'Êðàñíàÿ êîìàíäà'),
('PROP TR SHOT TO 6', 'Blue team',
('PROP TR SHOT TO 4', 'Blue team',
'Ñèíÿÿ êîìàíäà'),
('PROP TR SHOT TO 5', 'Monsters, players',
'Ìîíñòðû, èãðîêè'),
('PROP TR SHOT TO 6', 'Players, monsters',
'Èãðîêè, ìîíñòðû'),
('PROP TR SHOT ALLMAP', 'On entire map',
'Ïî âñåé êàðòå'),
('PROP TR MESSAGE KIND', 'Message kind',
Expand Down
11 changes: 7 additions & 4 deletions Shared Source/MAPDEF.pas
Expand Up @@ -158,10 +158,13 @@ interface
TRIGGER_SHOT_ROCKET = 11;
TRIGGER_SHOT_BFG = 12;

TRIGGER_SHOT_TARGET_NIL = 0;
TRIGGER_SHOT_TARGET_PLR = 1;
TRIGGER_SHOT_TARGET_MON = 2;
TRIGGER_SHOT_TARGET_ALL = 3;
TRIGGER_SHOT_TARGET_NONE = 0;
TRIGGER_SHOT_TARGET_MON = 1;
TRIGGER_SHOT_TARGET_PLR = 2;
TRIGGER_SHOT_TARGET_RED = 3;
TRIGGER_SHOT_TARGET_BLUE = 4;
TRIGGER_SHOT_TARGET_MONPLR = 5;
TRIGGER_SHOT_TARGET_PLRMON = 6;

ACTIVATE_PLAYERCOLLIDE = 1;
ACTIVATE_MONSTERCOLLIDE = 2;
Expand Down

0 comments on commit d9f686b

Please sign in to comment.