Forum posts

Posted 2 years ago2021-09-21 19:03:27 UTC
in Programming video tutorials Post #345946
At last, entity properties and precaching.
Part 2.2
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-09-15 17:53:25 UTC
in [help] Rendering a model fullbright Post #345935
You can set the light sample colour and value around line 1240 in StudioModelRenderer.cpp:
lighting.plightvec = dir;
// After StudioDynamicLight is called, lighting is initialised
IEngineStudio.StudioDynamicLight(m_pCurrentEntity, &lighting );

// We can then begin changing it around
lighting.ambientlight = 0;
lighting.shadelight = 0;

// The rest will apply the lighting onto the model
IEngineStudio.StudioEntityLight( &lighting );
I believe you could, maybe, somehow modify lighting to get fullbright...
digs around a little bit
WOO! I was silly all along. You could just set ambientlight to 255 and shadelight to 0.
This scientist is afraid of his own brightnessThis scientist is afraid of his own brightness
So yea, the code just becomes:
lighting.plightvec = dir;
IEngineStudio.StudioDynamicLight(m_pCurrentEntity, &lighting );

// Fullbright
lighting.color = Vector( 1.0f, 1.0f, 1.0f );
lighting.ambientlight = 255;
lighting.shadelight = 0;

IEngineStudio.StudioEntityLight( &lighting );
Now, the only thing left to do is to check whether it's a specific entity or not. I guess you can check if m_pCurrentEntity->index is a certain number or something like that. Or, even better, add a special render FX value for that. :)
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-09-15 14:52:07 UTC
in [help] Rendering a model fullbright Post #345934
One hacky way would be to render the model black (render it with regular diffuse lighting, with 0 0 0 for the light sample colour, which it'd normally pick up from the ground or ceiling), then render it again with the additive render mode. It's been a while since I looked at the studio model renderer stuff, but I'll try to get a better answer tonight.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-09-01 20:03:55 UTC
in Programming video tutorials Post #345910
Aaaaand another one! Mainly about SetThink and stuff :>
Part 2.1.2
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-08-22 22:28:42 UTC
in Programming video tutorials Post #345891
New video's out! Today's topic: player usage and TakeDamage
Part 2.1.1
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-08-14 11:55:22 UTC
in Post your screenshots! WIP thread Post #345880
Very nice!
You could alternatively convert that cylinder brush to be a part of the model as well, but, that's just me. :lol:
Admer456 Admer456If it ain't broken, don't fox it!
You should look at the player movement code.
hldll -> Source Files -> pm_shared -> pm_shared.c or .cpp (if you're using halflife-updated, these are converted to C++)

Then, scroll down to the bottom until you find the PM_Move function. PM_Move calls PM_PlayerMove which contains all the pseudo-physics code for player movement, so you can modify all the "formulas" there, so to speak.

I think the functionality you're looking for is in PM_WalkMove, perhaps around this part:
User posted image
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-08-02 21:12:20 UTC
in Programming video tutorials Post #345832
A bit behind schedule, but, the 'fun' stuff is about to start:
Part 2.1: Think, Touch, Use
Admer456 Admer456If it ain't broken, don't fox it!
"I somehow couldn't find a link to it."
Here be the invite: https://discord.gg/hDSrpCDXhD (and if that's expired: https://discord.gg/8VhuRpNt)
"the spawned func_train didn't do what you think spawned func_trains are supposed to do – to immediately teleport to its first stop target"
Solokiller explained it pretty well. In the HL SDK at least, func_train doesn't do anything special in Spawn:
Move train to the "origin" keyvalueMove train to the "origin" keyvalue
Only after all entities have spawned, Activate() is called, which does the actual first path corner logic:
Move train to the target path_corner, align it to the bounding box centre tho'Move train to the target path_corner, align it to the bounding box centre tho'
This here is what effectively "ignores" origin brushes.

Also, in trigger_createentity, you seem to copy the parent train's rendermode. I'm assuming it's anything but Normal. It'd be a good idea to copy renderamt as well, otherwise it'll default to 0, which means invisible.
"it's already started..."
'w'
I gotta say, that's actually quite compact. But, you didn't answer my question: how did you exactly use trigger_random? What was the expected output? What did it (not) do?
Admer456 Admer456If it ain't broken, don't fox it!
I haven't mapped for SC in a long time, but how are you sure trigger_createentity is creating nothing? In my test map, with basically the same keyvalues as yours (except the rendermode), it created a train at the trigger_createentity's position, but it didn't start moving. Not even triggering made it move. (note: the train had also an origin brush so I could see where it spawned)

I suppose there is a way to make them work, involving a bunch of trigger_changevalue, but depending on what you wanna do, it can evolve into entity spaghetti real quick.

BTW every time you'd shoot at the train, bullethole decals would be duplicated, since all instances are using the same brush model.
User posted image
Not sure how applicable this could be, but I'd personally keep things super simple but slightly more laborious, and have a line of 10 or so trains waiting in a queue in a separate room, to be teleported into action. I think this is something the Sven Co-op Developers Discord could resolve much better.

What about trigger_random?
Admer456 Admer456If it ain't broken, don't fox it!
Alright, so the problem comes from two things:
  • according to the HL SDK code, the train explicitly sets its position as the centre of its bounding box
  • according to VHLT code, origin brushes do not count towards the bounding box
Maybe you could try using the BOUNDINGBOX tool texture instead of the origin brush:
User posted image
User posted image
Just make sure it's large enough to encompass most of the train, otherwise it'll start disappearing when the boundingbox brush goes outside your FOV, like it did for me:
User posted image
Well, in that instance it works fine, but if I look slightly up, it disappears.

Either way, yeah, this is one hacky workaround you could use.

Edit:
BTW you might wanna describe how exactly you're using trigger_random & trigger_createentity, i.e. post their keyvalues :>
Admer456 Admer456If it ain't broken, don't fox it!
Somebody did, in fact, bring up func_trains with origins for their iceberg on the TWHL Discord. I believe the map compilers are to blame, because they're the ones which generate a brush model and give the brush entity an "origin" keyvalue to position it.

I'm gonna look at VHLT's source code to see if it does anything counter-productive with func_train.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-07-10 13:10:45 UTC
in SolidBSP [hull 0] Warning Post #345757
Are you sure it's not any game_text entity with too many characters, or a map chapter title with too many characters that crashes the game instead?

Cuz', those are just compiler warnings, means your geometry is a bit more complex than usual, still, I get thousands of these and my maps work perfectly fine. :>
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-07-07 11:36:33 UTC
in Liblist.gam/ custom game problems Post #345743
If you wanna launch your mod directly, by the way, create a shortcut to hl.exe and edit its parameters to include -game mymodfolder, where mymodfolder is, in fact, your mod folder as it appears in the Half-Life folder.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-07-06 21:42:59 UTC
in Liblist.gam/ custom game problems Post #345739
Restart Steam and your mod should appear in the library.
Your .wad folder must go into your mod folder, i.e. next to liblist.gam.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-07-03 20:38:52 UTC
in Programming video tutorials Post #345725
As outlined in #0: Introduction, you absolutely must learn C++ basics first. So, start with that first, and then you're surely on the right way.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-06-28 13:12:57 UTC
in Programming video tutorials Post #345710
We got not one, but two new videos:
Part 1.1: Additional setup
Part 2: Creating new entities
It's summer, so, I guess I can put out 2 more of them by the time college starts.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-06-27 09:40:34 UTC
in Post your screenshots! WIP thread Post #345706
Nice!

I have been experimenting with a fork of Doom 3 BFG Edition, RBDoom3:
User posted image
Mainly because it has indirect lighting and TrenchBroom support:
User posted image
Thinking about making it more suitable for Half-Life-style game development and somehow bringing in J.A.C.K. support. We'll see.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 2 years ago2021-05-19 15:51:50 UTC
in Post Your Photos Post #345639
"Just gotta wait until it's more green"
Colour-corrected:
User posted image
Yea, it's green now:
User posted image
User posted image
My cousins and I went on some other hill but were stopped by some cows and a crazy farmer.
User posted image
Friendly village cat says hi, despite his almost menacing look:
Name's SivacName's Sivac
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-04-19 17:21:02 UTC
in Post Your Photos Post #345548
@I have a plan

Your image link is wrong.
You pasted https://imgur.com/MiRTCIM instead of the one ending with .png or .jpg or whatever original format it is. Gotta copy the Direct Link if you're using Imgur non-beta.

Otherwise, I've no idea. Imgur seems to be more suited for sharing pictures on itself, instead of embedding into forums and whatnot.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-04-18 19:06:42 UTC
in Post Your Photos Post #345542
Yesterday I went into a previously unexplored forest with my cousins. It was quite cloudy, so it's not the kinda weather I wanted, but eh, I took photos anyway cuz' our parents didn't know that we went there at all, and I didn't know if they'd find out. Spoilers, they did not. :walter:
User posted image
User posted image
User posted image
User posted image
User posted image
Heard a fox screaming around here lolHeard a fox screaming around here lol
User posted image
User posted image
User posted image
And, eventually, we managed to reach the town. Cool.
User posted image
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-04-08 16:45:39 UTC
in Post Your Photos Post #345521
Not only abandoned industrial buildings, but also abandoned construction sites.
I should find some one day. :walter:
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-04-08 09:36:36 UTC
in Post Your Photos Post #345519
I know the last post was a year ago, but I wanna share this stuff so badly. I started, like, actually going outside and walking'n'stuff. So, naturally, I took a buncha photos along the way. ^^
When I startedWhen I started
User posted image
A dangerous, but exciting shortcut to my hometownA dangerous, but exciting shortcut to my hometown
When my cousins and I took this shortcut, we almost fell down these rocksWhen my cousins and I took this shortcut, we almost fell down these rocks
Good ol' hometown, I remember when I went to elementary school hereGood ol' hometown, I remember when I went to elementary school here
I haven't been to that fort in a whileI haven't been to that fort in a while
Always wanted to take a photo here but I could never stop to do so, cuz' someone was driving meAlways wanted to take a photo here but I could never stop to do so, cuz' someone was driving me
User posted image
And, lastly for today, I took a quick morning walk.
Just gotta wait until it's more greenJust gotta wait until it's more green
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-03-17 14:18:45 UTC
in env_spark Post #345446
This isn't a system configuration problem @BernullyBites. It's a mapping one. I now suspect this might be a bot.

@Aladad
No, I don't think there's a way to disable the sound for env_spark. Worst you can do is overwrite the spark sound file with a silent sound, but then there won't be sparks sounds at all, anywhere in the game.

If you're making a custom mod, you can modify the entity's code to have a flag that disables its sound.
Admer456 Admer456If it ain't broken, don't fox it!
You need to use FStrEq and have the two as its parameters:
if ( FStrEq( GETPLAYERAUTHID( pl->edict() ), "my_steamid" ) )
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-02-26 08:49:19 UTC
in light_environment not casting light. Post #345371
No, don't use trigger/sky for backfaces. Use null instead.
But yeah, it doesn't matter in 90% of the cases. It does matter, however, inside the map editor, so you can easily see the rooms in your map, without having to hide the ceilings etc. In J.A.C.K., you can toggle NULL-textured faces.

BTW you should've created a new thread instead of bumping this one.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-27 10:30:47 UTC
in The mods that never were Post #345287
In 2015 or so, I started working on this little mod I stupidly called "Admer: The Game".
It was originally gonna be the FPS adaptation of my QBasic text adventure of the same name.

The original text game went something like this: the player woke up in a cave with some TNT and a hungry zombie, with absolutely no memories of how they got there. The player was offered 3 options, only one of which would kill the zombie and blow up the cave, sending the player flying upwards, landing into a wheat field.

The original version of the mod, however, started like this, mostly due to my back-then low mapping experience: the player woke up in a cave with TNT. The player could activate the timer, then run and hide from the blast. Once up there, you could see a house, in which there was a pistol and a note. In the forest ahead, there were 2 zombies. Once you passed that area, you'd find a wheat field.
The cave exit holeThe cave exit hole
It went in a totally different direction. So did I. I was no longer gonna be just a mapper. I was expanding to other areas: texturing, sound editing, modelling, music production, and last but probably also the least, in a way, programming.
The most complex thing I'd done were probably the smoke puffs, and an NPCThe most complex thing I'd done were probably the smoke puffs, and an NPC
That was quite a bite to chew. Almost the entire plate. It would've all been fine if I didn't have scope creep. I went from a very simple idea to an idea that just kept growing and growing so that I could never finish it. I couldn't even do 10% of it, with the skills I had back then.

I did not realise that until the summer of 2016, however.
In the summer of 2015, I renamed the mod to "An unknown game", for obvious reasons. My programming "skill" still didn't exist, so the only thing I was able to do was change some constants and copy-paste from tutorials. That presented quite the roadblock.

I could not fix the crash that came with this NPC I copy-pasted from one of the tutorials here:
User posted image
Another roadblock was the huge lack of experience I had in modelling. I wanted to have custom hand models. I tried, two times at least. But I could never make a hand that looked alright. Funnily enough, this month I made low-poly hands in 2 or 3 days. 6 years really does change things.

And, perhaps the most critical obstacle was voice acting. Let alone trying to find a voice actor, my microphone was bad, my voice was bad too.

So, I just worked on that mod less and less, and I moved back to CS 1.6 mapping. It was a lesson that I learned, but understood only years later, but I didn't feel bad about it at all. It was really fun to work on it in that first-to-second year of modding.

The spirit of "An unknown game" carried over to my Far Cry mod project in 2016, then in 2019, I thought about "reviving" the HL mod under a new name, in the latest iteration of the story. That revival was gonna be called Utopia at Stake. However, I don't think I'll start working on that until the 2030s. I'm working on a game now, which I'm planning to publish on Steam when it gets done in 5 or 6 years.

Nowadays, in the context of Half-Life modding, I work on and maintain ADM. I started working on it in 2018, and it's still an active project, even though I don't work on it in winter months.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-24 19:52:58 UTC
in Programming video tutorials Post #345270
Wew, it's been a good while, but hey, better late than never.
Part 1: Initial setup
Admer456 Admer456If it ain't broken, don't fox it!
This post was made on a thread that has been deleted.
Posted 3 years ago2021-01-24 15:27:12 UTC
in Half-Life texture sources Post #345265
This is crazy! I've recognised 15 textures so far in there.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-18 17:51:14 UTC
in light_environment not casting light. Post #345247
Yeah, looking at that screenshot, it seems that only one face is covered with SKY, and the rest are covered with AAATRIGGER
User posted image
This is a major issue.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-18 17:49:11 UTC
in light_environment not casting light. Post #345245
Oh yeah, two more things.
The sky brush, are all of its sides covered with the SKY texture?
Can you paste the whole compile log here too?

@Urby
The problem ain't solved yet LOL
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-18 09:57:30 UTC
in light_environment not casting light. Post #345241
First, why are you using AAATRIGGER for the backfaces? You should use NULL instead.
Second, give us all your light_environment keyvalues (properties) so we can figure out what might be wrong. In that specific setup, the light_environment would need a yaw of 180 and a pitch of 0.
Admer456 Admer456If it ain't broken, don't fox it!
You might wanna also do this, for convenience:
class CWatson : public CBarney
{
public:
    void BarneyFirePistol() override;
};
The override part lets the programmer be 100% sure that it's overriding something. It will cause errors if the method you're overriding isn't virtual, which wouldn't happen otherwise.
class MyClass
{
public:
    void MyMethod();
};

class MySecondClass
{
public:
    void MyMethod() override; // ERROR because MyClass::MyMethod isn't virtual
};
It's useful in situations like these, and in general to keep track of what overrides what.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-10 17:57:19 UTC
in Brushes rotated incorrectly after compiling Post #345196
You have some non-planar faces.
User posted image
This is wrong, because the upper and lower faces aren't flat in the 4 corner brushes. The compilers don't know how to work with these "bent" faces.
Your best solution is to clip those into triangles:
User posted image
Then, optionally, merge them:
User posted image
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-06 16:19:06 UTC
in Entity brushes are fullbright Post #345173
You can mostly reply with blockquotes.
Just use the > character, like so:
> "Stuff"
Becomes:
"Stuff"
Or use this:
User posted image
OR
[quote=Admer456]something[/quote]
Admer456 said:something
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-06 15:12:20 UTC
in Entity brushes are fullbright Post #345168
How many such lights do you have in that area?
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-06 01:40:57 UTC
in Post your screenshots! WIP thread Post #345160
Yes, in blessed 2021 I will. :walter:

That's ets_mostar BTW. The ets prefix doesn't stand for a gamemode (Electro-Technical School), but someone ought to make another ets map in the future lol
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-05 22:15:55 UTC
in Post your screenshots! WIP thread Post #345158
Dunno. If you're referring to the elementary school map, then that one's kinda dead right now lol. If you're referring to the high school map, then it's probably somewhere in the future, April or May 2021.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-05 20:24:46 UTC
in Post your screenshots! WIP thread Post #345156
It's that time of the year again...
Glock 40, about 480 trisGlock 40, about 480 tris
My hand but it's low-poly; about 770 tris totalMy hand but it's low-poly; about 770 tris total
It's time for actionIt's time for action
Brothers in armsBrothers in arms
I had begun working on this thing I call Cirkuz 33. I could describe its genre as a "half-like immersive sim", where "half-like" means it's like Half-Life, and immersive sim... y'all know that, just imagine Deus Ex, Thief 2 and System Shock 2.

Its development is now going roughly in parallel with my ioquake3 fork.
And, oh, I guess I could use these same hands for Utopia at Stake when I start working on it one day. :P
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-05 14:07:41 UTC
in SoHL: Opposing Force? Post #345152
It requires version 4.32.09
/*
    FMOD version number.  Check this against FMOD::System::getVersion.
    0xaaaabbcc -> aaaa = major version number.  bb = minor version number.  cc = development version number.
*/

#define FMOD_VERSION    0x00043209
HLFX.ru [...] HLEnhanced [...] dislike
Well, I'm a Slav myself (Bosnia and Herzegovina), yet I love many aspects of HLEnhanced. Oh, I'm not 30 though, much younger. :lol:

HLEnhanced is basically a very cleaned-up HL SDK with bug fixes and things done properly, also using a nice cross-platform build system that is CMake. And, most importantly, it's got documentation.

My guess is that they dislike it because it's different. HL SDK is one big mess of code, so if someone gets very used to it (especially for over 6 years), they start disliking and avoiding anything that's actually better, because they don't know better and don't wanna change. Design patterns? Style consistency? Namespaces? What are those? Global functions and variables everywhere! :walter:

Another guess is CMake and dependencies. You need to build the XercesC library, and use CMake to generate project files for Visual Studio, if I recall correctly. That probably pushes away many people, especially beginners. But then again, it's 2021, programmers are supposed to be familiar with at least one or two build systems. :/

So, with all that said, there aren't, almost any, valid reasons to dislike HLEnhanced. However, it's not being worked on any more, and Solo advises to not use it.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-04 11:30:52 UTC
in SoHL: Opposing Force? Post #345144
Well, the problem is, you can't just rename fmod.dll to fmodex.dll, cuz' FMOD is basically "FMOD 3.x", and FMOD Ex is a designation for "FMOD 4.x". Nowadays you got FMOD Studio and FMOD Core.
The if (!_FMOD_System_Create || part checks if all the "functions were loaded", or to be exact, if any of the function pointers are nullptr.

Since fmod.dll and fmodex.dll have different functions, not all of these function pointers are gonna get properly initialised.
The biggest problem is, FMOD Ex seems impossible to find nowadays as well as any ancient FMOD version. (I think Sven Co-op uses FMOD Ex tho', you could find it there)

As a complete alternative, you could try ripping out FMOD Ex and integrating FMOD Core.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-03 12:09:04 UTC
in SoHL: Opposing Force? Post #345141
I don't feel tired, but since you do have a modern IDE now (I'm guessing VS2017 or VS2019), I no longer feel the need to fix things.
You could try to compile in debug mode and see if that'll work at all.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-02 15:43:48 UTC
in SoHL: Opposing Force? Post #345132
In that case, I'll try to get it running on my end. If I succeed, I'll tell you what is required.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-02 11:44:47 UTC
in SoHL: Opposing Force? Post #345130
You're linking the album, you need to link the actual image itself:
[img:https://i.imgur.com/ohF3X8y.png]
User posted image
This sounds like you need an old version of FMOD. You should be able to find FMOD DLLs in SoHL 1.8 or so.
Also, no, I haven't tried it on my system.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2021-01-01 16:34:16 UTC
in FUNC_VEHICLE 2020 Post #345127
ve_tractoriade has been updated - now it can be played by up to 6 people
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2020-12-31 21:28:26 UTC
in SoHL: Opposing Force? Post #345125
DONE, try it out ^w^

https://github.com/Admer456/SOHL-V1.9-Opposing-Force-Edition/releases/tag/v1.0

Note: you may also need Cg.dll and those other ones which may come with SoHL 1.9
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2020-12-31 17:48:39 UTC
in SoHL: Opposing Force? Post #345124
I'm compiling it right now, seems to have a bunch of issues in release mode. But I think I'll get it done in an hour or so.

Edit 2:
Nope, gonna continue tomorrow. My Internet speed is ABSOLUTE garbage right now, so I can't even upload a thing without timing out...

Edit:
Okay, the DLLs manage to compile in release mode. I've forked this thing and now I'm just gonna put a release there and post here again when that's done.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2020-12-31 17:27:53 UTC
in Happy 2021! Post #345123
2020 is over soon, yay!

New Year's coming to Bosnia in about 3 and a half hours, and once it does, I'll post something special here lol

Edit: HAPPY NEW YEAR FROM BOSNIA FOLKS
The something specialThe something special
Also, I think it does make sense to call it '21 now. At least to me.
Admer456 Admer456If it ain't broken, don't fox it!
Posted 3 years ago2020-12-30 09:40:51 UTC
in SoHL: Opposing Force? Post #345118
I'll try to compile them for ya this weekend.
Admer456 Admer456If it ain't broken, don't fox it!