Skip to content

Commit 40926c6

Browse files
authored
Merge pull request #19 from shrimpza/607
Monster Hunt 607
2 parents e0a8cc9 + 043dc99 commit 40926c6

File tree

16 files changed

+248
-40
lines changed

16 files changed

+248
-40
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## 606 to 607:
4+
- Introduction of support for optional objectives in maps, which can show up on the HUD, and tell players what they need to be doing
5+
- Cleaned up some chat log kill messaging, and do not show suicide messages as "Player1 killed Player1"
6+
- Polish pass for MH-Lonely][, fixing bad geometry, general cleanup and visual improvements
7+
- Added objectives to all standard MH maps
8+
39
## 605 to 606:
410
- Fix incorrect view offsets for U1 weapons making them seem invisible
511

buildscript/buildconfig.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ SCRIPTS_DIR=$(dirname $(realpath $0))
77

88
export name="Monster Hunt"
99
export package=MonsterHunt
10-
export build=606
11-
export version=606
10+
export build=607
11+
export version=607
1212
export packagefull=$package
1313
export packagedist=$package$version
1414
export debug=1

resources/Help/MonsterHunt/ReadMe.html

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ <h2 id="mapping">Mapping</h2>
151151
<h3>Monster Hunt</h3>
152152
</p>
153153
<ul>
154-
<li>Before you start on a map, open the MonsterHunt.u package in the class-browser so you have access to all the Monster Hunt-specific
154+
<li>Before you start on a map, open the MonsterHunt.u package in the class browser, so you have access to all the Monster Hunt-specific
155155
stuff.
156156
</li>
157157
<li>Maps should be more of a single player style,
@@ -163,13 +163,13 @@ <h3>Monster Hunt</h3>
163163
to worry about the surrounding architecture.
164164
</li>
165165
<li>Make an escape route for the players to run
166-
through and place a MonsterEnd trigger (found in the classe-browser: Triggers
167-
-> Trigger -> MonsterEnd) where the players will run to end the level.
166+
through and place a MonsterEnd trigger (found in the class browser: Triggers
167+
-&gt; Trigger -&gt; MonsterEnd) where the players will run to end the level.
168168
</li>
169169
<li>If you want to add bot support to your map (very highly recommended), you can use the MonsterWaypoint actor (found in the
170-
classe-browser: Keypoint
171-
-> MonsterWaypoint). Just put the MonsterWaypoint actors wherever you want a bot waypoint to be, like near a button or a lever, or
172-
just along the path through the level. Set it's Position property to tell the bots in which order the waypoints must be visited. Set
170+
class browser: Keypoint
171+
-&gt; MonsterWaypoint). Just put the MonsterWaypoint actors wherever you want a bot waypoint to be, like near a button or a lever, or
172+
just along the path through the level. Set its Position property to tell the bots in which order the waypoints must be visited. Set
173173
the first one at 1, the next at 2, then 3, and so on. You can also enter the Event tag of a particular actor so when the bot gets to
174174
the waypoint, something can be triggered to happen.
175175
</li>
@@ -198,18 +198,37 @@ <h3>Monster Hunt</h3>
198198
<li>Don't put any monsters near to where the players
199199
will start, they'll all be slaughtered as soon as they spawn.
200200
</li>
201-
<li>Environmental hazzards (slime, lava, huge drops,
201+
<li>Environmental hazards (slime, lava, huge drops,
202202
etc.) are great, but make sure the boss monster(s) can't fall in, or it'll spoil
203203
the fun of defeating them.
204204
</li>
205205
<li>Don't give the players the best guns at the
206206
beginning, or they'll mow through the monsters too easily.
207207
</li>
208-
<li>Use the MonsterEvent (under Triggers &gt; SpecialEvent)
208+
<li>Use the MonsterEvent (under Triggers -&gt; SpecialEvent)
209209
to display messages for the players, everything has already been pre-configured,
210210
just type the message and connect it to a trigger.
211211
</li>
212212
<li>Set the boss monster's bIsBoss to True so the player can get extra points for killing him.</li>
213+
<li><b>Objectives</b>
214+
<ul>
215+
<li>Objectives can be used to guide players or provide story details and context for the map play-through.</li>
216+
<li>To add an objective, add a MonsterHuntObjective (under Keypoints in the class browser) to your map. Each
217+
MonsterHuntObjective represents a single objective, and you can add up to 16 per map.</li>
218+
<li>Active objectives are shown on the player's HUD. If an objective has bAlwaysShown, it will be visible even
219+
when not active, with an icon matching its complete or incomplete status.
220+
If an objective has bShowWhenComplete, it will continue to be shown on the HUD after it's completed, even if
221+
not bAlwaysShown.</li>
222+
<li>An objective will become active when it's triggered based on its Tag, and triggering it again will make it
223+
completed. An objective may have a separate CompletedEvent set, which corresponds to an event which will
224+
set this objective as complete. So for example, one event (matching the Tag) will set an objective as active
225+
and another event (matching the CompletedEvent) will set the objective as completed.</li>
226+
<li>Multiple objectives may be active at once, and similarly it's not required for any objectives to be active
227+
at any given time.</li>
228+
<li>Sounds may be configured for when the objective becomes active, and when it's completed. These are UI sounds
229+
broadcast to players, and not played in-map like a sound effect.</li>
230+
</ul>
231+
</li>
213232
</ul>
214233

215234
<p>
@@ -287,6 +306,14 @@ <h2 id="credits">Credits</h2>
287306
<section>
288307
<h2 id="history">Release History</h2>
289308

309+
<h3>Release 13 (607)</h3>
310+
<ul>
311+
<li>Introduction of support for optional objectives in maps, which can show up on the HUD, and tell players what they need to be doing
312+
<li>Cleaned up some chat log kill messaging, and do not show suicide messages as "Player1 killed Player1"
313+
<li>Polish pass for MH-Lonely][, fixing bad geometry, general cleanup and visual improvements
314+
<li>Added objectives to all standard MH maps
315+
</ul>
316+
290317
<h3>Release 12 (606)</h3>
291318
<ul>
292319
<li>Fix incorrect view offsets for U1 weapons making them seem invisible

resources/Maps/MH-Canyon.unr

1.64 KB
Binary file not shown.

resources/Maps/MH-Forbidden.unr

-58.6 KB
Binary file not shown.

resources/Maps/MH-Lonely][.unr

99.9 KB
Binary file not shown.
1.06 KB
Binary file not shown.

resources/Maps/MH-Revenge][.unr

539 Bytes
Binary file not shown.

resources/Maps/MH-Trials.unr

1.47 KB
Binary file not shown.

src/Classes/MonsterHUD.uc

Lines changed: 53 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99

1010
class MonsterHUD extends ChallengeTeamHUD;
1111

12-
#exec TEXTURE IMPORT NAME=HudIcon FILE=Textures\hudicon.PCX GROUP="Hud" MIPS=OFF LODSET=0
13-
#exec TEXTURE IMPORT NAME=BlackStuff FILE=Textures\BlackStuff.PCX GROUP="Hud" MIPS=OFF LODSET=0
14-
#exec TEXTURE IMPORT NAME=BlackStuff2 FILE=Textures\BlackStuff2.PCX GROUP="Hud" MIPS=OFF LODSET=0
12+
#exec TEXTURE IMPORT NAME=HudIcon FILE=Textures\HUDIcon.PCX GROUP=Hud MIPS=OFF LODSET=0
13+
#exec TEXTURE IMPORT NAME=BlackStuff FILE=Textures\BlackStuff.PCX GROUP=Hud MIPS=OFF LODSET=0
14+
#exec TEXTURE IMPORT NAME=BlackStuff2 FILE=Textures\BlackStuff2.PCX GROUP=Hud MIPS=OFF LODSET=0
15+
#exec TEXTURE IMPORT NAME=ObjComplete FILE=Textures\ObjComplete.pcx GROUP=Hud MIPS=OFF LODSET=0
16+
#exec TEXTURE IMPORT NAME=ObjIncomplete FILE=Textures\ObjIncomplete.pcx GROUP=Hud MIPS=OFF LODSET=0
1517

1618
var localized string TimeRemainingLabel;
1719
var localized string LivesRemainLabel;
@@ -26,10 +28,13 @@ simulated function PostBeginPlay() {
2628
}
2729

2830
simulated function DrawGameSynopsis(Canvas Canvas) {
29-
local float XL, YL, YOffset;
31+
local float XL, YL, YOffset, XOffset;
3032
local string escapesString;
3133
local MonsterReplicationInfo mri;
32-
local int Minutes, Seconds;
34+
local int Minutes, Seconds, i;
35+
local MonsterHuntObjective obj;
36+
37+
XOffset = 10;
3338

3439
if ((PawnOwner.PlayerReplicationInfo == None) || PawnOwner.PlayerReplicationInfo.bIsSpectator) return;
3540

@@ -48,17 +53,17 @@ simulated function DrawGameSynopsis(Canvas Canvas) {
4853
}
4954

5055
if (mri != None) {
51-
Canvas.SetPos(0, YOffset);
52-
Canvas.DrawText(" " $ MonstersRemainLabel $ ": " $ string(mri.Monsters), False);
56+
Canvas.SetPos(XOffset, YOffset);
57+
Canvas.DrawText(MonstersRemainLabel $ ": " $ string(mri.Monsters), False);
5358
YOffset -= YL;
5459
55-
Canvas.SetPos(0, YOffset);
56-
Canvas.DrawText(" " $ HuntersRemainLabel $ ": " $ string(mri.Hunters), False);
60+
Canvas.SetPos(XOffset, YOffset);
61+
Canvas.DrawText(HuntersRemainLabel $ ": " $ string(mri.Hunters), False);
5762
YOffset -= YL;
5863
5964
if (Level.Game.IsA('MonsterHuntDefence')) {
60-
Canvas.SetPos(0, YOffset);
61-
escapesString = " " $ EscapedMonstersLabel $ ": " $ string(mri.Escapees);
65+
Canvas.SetPos(XOffset, YOffset);
66+
escapesString = EscapedMonstersLabel $ ": " $ string(mri.Escapees);
6267
if (mri.MaxEscapees > 0) {
6368
escapesString = escapesString $ "/" $ string(mri.MaxEscapees);
6469
if (mri.MaxEscapees - mri.Escapees < 5) Canvas.DrawColor = RedColor;
@@ -72,20 +77,53 @@ simulated function DrawGameSynopsis(Canvas Canvas) {
7277
if (mri.bUseLives) {
7378
if (PawnOwner.PlayerReplicationInfo.Deaths < 3) Canvas.DrawColor = RedColor;
7479
else Canvas.DrawColor = WhiteColor;
75-
Canvas.SetPos(0, YOffset);
76-
Canvas.DrawText(" " $ LivesRemainLabel $ ": " $ int(PawnOwner.PlayerReplicationInfo.Deaths), False);
80+
Canvas.SetPos(XOffset, YOffset);
81+
Canvas.DrawText(LivesRemainLabel $ ": " $ int(PawnOwner.PlayerReplicationInfo.Deaths), False);
7782
YOffset -= YL;
7883
}
7984
8085
if (mri.RemainingTime > 0) {
8186
if (mri.RemainingTime < 30) Canvas.DrawColor = RedColor;
8287
else Canvas.DrawColor = WhiteColor;
83-
Canvas.SetPos(0, YOffset);
88+
Canvas.SetPos(XOffset, YOffset);
8489
Minutes = mri.RemainingTime / 60;
8590
Seconds = mri.RemainingTime % 60;
86-
Canvas.DrawText(" " $ TimeRemainingLabel $ ": " $ TwoDigitString(Minutes) $ ":" $ TwoDigitString(Seconds), true);
91+
Canvas.DrawText(TimeRemainingLabel $ ": " $ TwoDigitString(Minutes) $ ":" $ TwoDigitString(Seconds), true);
8792
YOffset -= YL;
8893
}
94+
95+
//
96+
// objectives rendering
97+
YOffset -= YL;
98+
for (i = 15; i >= 0; i--) { // backwards, since we're rendering hud elements from bottom up
99+
obj = mri.objectives[i];
100+
if (obj != None) {
101+
if (!obj.bActive && !obj.bAlwaysShown) {
102+
if (!obj.bCompleted || (obj.bCompleted && !obj.bShowWhenComplete)) continue;
103+
}
104+
if (!obj.bActive) {
105+
Canvas.Style = ERenderStyle.STY_Translucent;
106+
Canvas.DrawColor = WhiteColor * 0.5;
107+
} else {
108+
Canvas.DrawColor = GoldColor;
109+
}
110+
111+
Canvas.SetPos(XOffset + YL, YOffset);
112+
Canvas.DrawText(obj.message, False);
113+
114+
Canvas.Style = ERenderStyle.STY_Translucent;
115+
Canvas.SetPos(XOffset + 4, YOffset + 4);
116+
if (obj.bCompleted) {
117+
Canvas.DrawTile(Texture'{{package}}.Hud.ObjComplete', (YL - 8) * Scale, (YL - 8) * Scale, 0, 0, 32, 32);
118+
} else {
119+
Canvas.DrawTile(Texture'{{package}}.Hud.ObjIncomplete', (YL - 8) * Scale, (YL - 8) * Scale, 0, 0, 32, 32);
120+
}
121+
122+
Canvas.Style = Style;
123+
124+
YOffset -= YL;
125+
}
126+
}
89127
}
90128
}
91129

0 commit comments

Comments
 (0)