Marathon 1 Redux

Discuss and unveil current Marathon projects.

Hardgrove's "Aliens Again" is VERY different from the original. Where should it be used?

On The Rose only, use the original for No Artificial Colours
1
33%
On The Rose AND No Artificial Colours
1
33%
On No Artificial Colours only, use the original for The Rose
0
No votes
Only use the original track on The Rose and No Artificial Colours
1
33%
 
Total votes : 3

Re: Marathon 1 Redux

Post Jul 9th '18, 11:51

I don't think I would accept those changes in the engine. If you want M1 rescue behavior, you need M1 civilians.
User avatar

treellama
Pittsburgh

Post Jul 9th '18, 20:44

Well, if you'd like to tell me how I can tell A1 that my BoBs are M1 civilians using an M∞ physics model, or implement this in Lua I'm all ears!

How about this? Instead of changing the lines in my previous post, add these lines after them:

Code: Select all
if ((static_world->mission_flags & _mission_rescue) &&
       monster_index!=NONE &&
       (definition->_class&_class_human_civilian))
   {
      dynamic_world->current_civilian_count+= 1;
   }

and
Code: Select all
               if ((static_world->mission_flags & _mission_rescue) && (definition->_class & _class_human_civilian))
               {
                  dynamic_world->current_civilian_causalties += 1;
               }


Maybe not as elegant as the other solution, but it keeps M2 and M1 stuff segregated. It's not like there are maps and films out there using the M2 rescue mission to break AFAIK.
User avatar

ravenshining
Hawai'i

Post Jul 9th '18, 21:27

It occurs to me that perhaps a new flag could simply be implemented for M2/∞ maps to make rescue missions function as they did in M1. I can’t think of any maps in M2 or M∞ that use rescue missions but it’s possible that some third-party map somewhere did. There are enough broken M∞ films already; I’ll try to remember to make a thread about that later.
People should not be afraid of their governments. Governments should be afraid of their people.

Fool's Gold · Last.fm · Marathon Chronicles · YouTube Vidmaster’s Challenge
User avatar

The Man
Sarasota, FL

Post Jul 9th '18, 22:21

It seems like an awful remote possibility - so far I've gone through and found no rescue flags set in Durandal, Infinity, Rubicon, Eternal, or Evil - but I think there is a way to handle that. Aleph One has a lot of film profile flags to deal with the many other things Aleph One has fixed over the years, so we (or I) could write in a new one, say rescue_mission_fixed which would be set to false for all but the most recent films.
User avatar

ravenshining
Hawai'i

Post Jul 9th '18, 22:47

You could probably just do something hacky with lua and have 2 different terminals, one with a success message, and one with a failure message. Then use lua to determine which one to show the player. At least then you wouldn't have to do anything hacky with the engine itself.
User avatar

Wrkncacnter

Post Jul 9th '18, 22:56

Is fixing something so it works as intended really that hacky?

Regardless, even if Treelama and Hopper and whoever else actually did want to fix Rescue, and even if the fix found it's way into Aleph One 1.3, I don't expect 1.3 to come out anytime soon, much less anything further.

So yes, I would LOVE to hear a Lua solution.
User avatar

ravenshining
Hawai'i

Post Jul 9th '18, 23:06

Well, it probably wouldn't be hacky for a source port that isn't trying to match the m2 behavior exactly. You call it "fixing" it, but if the m2 source didn't work that way, some would argue you'd be breaking it.

I've never done this specific thing with lua, but I'm guessing it'd be pretty easy. Off the top of my head, you'd have the terminal configured to show the success version in weland, but after X number of bobs die, you'd change the permutation on the terminal side to whatever terminal index is set up for the failure. Again, I'm making some assumptions, and am not positive that works the way I think it will.
User avatar

Wrkncacnter

Post Jul 9th '18, 23:42

I think Wrk is probably right. I haven’t attempted this yet, but you can have a function in triggers.init to determine the number of Bobs on the map when it loads, then have a function in triggers.idle that will determine whether 50% or more of them are dead to determine which terminal message to display on specific polygon sides. (I suspect you’d have to run a “for m in Monsters()” loop for both of them, but there might be a more elegant way to do it that I haven’t considered or am not aware of.) I don’t know for certain that you can control terminal messages with Lua, but I’d be surprised if you couldn’t. It should be pretty easy to code, and it’s probably the best solution. And if you can’t control terminal messages with Lua, that’s a feature that definitely should make its way into the next A1 release.
People should not be afraid of their governments. Governments should be afraid of their people.

Fool's Gold · Last.fm · Marathon Chronicles · YouTube Vidmaster’s Challenge
User avatar

The Man
Sarasota, FL

Post Jul 10th '18, 00:08

Wrkncacnter wrote:Well, it probably wouldn't be hacky for a source port that isn't trying to match the m2 behavior exactly. You call it "fixing" it, but if the m2 source didn't work that way, some would argue you'd be breaking it.


Except a grand total of 0 levels in M2 and M∞ use the Rescue flag, and since it doesn't do anything, almost no one ever uses it ever, unless either they mistakenly think it works or are just messing around, in which case they will most likely be pleasantly surprised to see it working as advertised. Why do we even bother giving it editor support if no one is ever expected to use it? Why even have it in the engine at all if it does nothing?

Meanwhile, there are a grand total of 29 different ways that the engine has changed such that our developers saw fit to have Aleph One keep track of them for 5 different film versions, four of which are even different between M2 and M∞, and twenty-four of which are in use as of Aleph One 1.2. "We can't change how something works" seems like an awfully bogus argument.
User avatar

ravenshining
Hawai'i

Post Jul 10th '18, 00:28

I love seeing this project progress. Focusing on M1 and making it better is the best possible thing that the surviving community can do. Unfortunately, I don't believe that M1 Redux and what I envision are one in the same. I'd go into more detail about how I would "redux" M1, but I don't want to break anyone's spirit. M1 Redux is M1 Redux. When it's finished, I will enjoy it for what it is.
Flippant Sol

Post Jul 10th '18, 00:36

Except a grand total of 0 levels in M2 and M∞ use the Rescue flag, and since it doesn't do anything, almost no one ever uses it ever, unless either they mistakenly think it works or are just messing around, in which case they will most likely be pleasantly surprised to see it working as advertised. Why do we even bother giving it editor support if no one is ever expected to use it? Why even have it in the engine at all if it does nothing?

Meanwhile, there are a grand total of 29 different ways that the engine has changed such that our developers saw fit to have Aleph One keep track of them for 5 different film versions, four of which are even different between M2 and M∞, and twenty-four of which are in use as of Aleph One 1.2. "We can't change how something works" seems like an awfully bogus argument.

That’s a fair point. At the same time, if it’s possible to implement a feature using a quick Lua hack, it might not be worth altering the engine to add it, since that might unintentionally break something else down the line. 30+ years of writing computer code off and on have taught me that every time you alter code, there’s a risk of introducing a bug in the process, and you might not always even notice it until much later. I’m reasonably certain this should already be possible to do using Lua, and I might even be able to write the code to do it myself. If nothing else, it seems a lot more convenient to do it that way than submit a pull request and wait months or years for it to be implemented into non-beta releases of A1, even if it does end up finally getting accepted. And I could probably submit the Lua script to S7 so no one else has to worry about the problem either.
People should not be afraid of their governments. Governments should be afraid of their people.

Fool's Gold · Last.fm · Marathon Chronicles · YouTube Vidmaster’s Challenge
User avatar

The Man
Sarasota, FL

Post Jul 10th '18, 00:57

Sorry, I got a bit worked up there. I've loved this game so much for twenty-two years, and for the eighteen years it's been open source I've wanted to contribute in some way, and here I've found a way to fix something and people are like, "nah, we like it broken." wtf!?!?!?

Taking a step back for a second. It may be possible someone somewhere mistakenly set the flag on a map containing BoBs, and having done so mistakenly, would not have written a FAILED message. Under current rules, the "level_completion_state" of an M2/M∞/A1 map can never be "_level_failed," but if it were, the fallback for there being no FAILED message is to show the UNFINISHED message, so with this change, such a map would not display the FINISHED message if you killed all its BoBs.

To prevent this from happening, the terminal display logic could be altered, so that if the level_completion_state is _level_failed, and the map has flag _mission_rescue and NOT _mission_rescue_m1, it would fallback from FAILED to FINISHED and then to UNFINISHED instead of directly from FAILED to UNFINISHED. I really don't like that behaviour, but it would prevent breaking any mistakenly-flagged, BoB-containing maps.
Last edited by ravenshining on Jul 10th '18, 01:18, edited 1 time in total.
User avatar

ravenshining
Hawai'i

Post Jul 10th '18, 01:15

Flippant Sol wrote:I love seeing this project progress. Focusing on M1 and making it better is the best possible thing that the surviving community can do. Unfortunately, I don't believe that M1 Redux and what I envision are one in the same. I'd go into more detail about how I would "redux" M1, but I don't want to break anyone's spirit. M1 Redux is M1 Redux. When it's finished, I will enjoy it for what it is.


Thank you for the encouragement.

I know there are a lot of people who have this "don't change anything!" mentality, but the only way for anything to happen is for there to be change. Otherwise, there's no reason do to anything, and if no one does anything, there's no community.

I have made a *lot* of changes in M1R, just for the sake of making changes, that are not necessarily set in stone - that's part of why I'm still calling this alpha even though in the next release you'll be able to play all the way to the canonical end. If people feel these break from the Marathon spirit, and would contribute to the project were they reverted, then I would revert them.

For example:
•the secondary fire on the SPNKR and TOZT - the few people I've tested them with online loved them, but I understand how they are rather far off canon.
•Friendly MADDs firing dud grenades, or how I've implemented them doing so
•Various alien's abilities to make short-range underwater attacks
•I think some of my writing is a bit melodramatic, and could be toned down a notch
•Radix's animé terminal art. Currently the plan is to use it as "bones" on to which I'll overlay photos and sprites, but she also provided some abstract art you may not have seen that would fit right in.
•Changes to sounds and what sounds are played when - I've gotten no feedback on this

If you do have a vision for an aspect of M1 that could be improved, updated, etc., do share even if it's different from how I am currently going about it.
User avatar

ravenshining
Hawai'i

Post Jul 10th '18, 01:27

If marathon was more popular, it would have attracted enough developers to create a source port that throws out all of the restrictions that AlephOne has to deal with. That would have been really cool. However, if I had to choose between either an accurate port or one with a bunch of modern improvements and breaking changes, I'd choose the accurate port. Because at the end of the day, I just really like the feel of marathon and the gameplay.

Having said that, I really don't know TL's exact reasons for not wanting to accept your change, I'm just speaking generally here. It sounds like you've put some thought into it already, but you'd have to make damn sure you're not breaking any existing custom maps if you want it to go into AlephOne. And there are a ton of them.
User avatar

Wrkncacnter

Post Jul 10th '18, 08:06

Well, thank you Wrk and Aaron for your Lua suggestions. I knew as soon as I saw that A1's rescue code is broken that I'd have to do this in Lua, I just wasn't prepared to have my suggestion dismissed so readily, and for Treelama to have to be a jerk about it. I guess you weren't being a total jerk about this particular issue, Wrk, but I was still feeling hurt over the way you brought up the whole copyright issue last night... and a lot of other things... and that coloured my perception.

Writing a Lua script from scratch is, for me, a whole other level of programming than just copying some C, changing a few variables, and analysing how it affects other code, so I will sadly have to leave that for later unless someone who knows what they are doing feels up to it.

For now, I'll set The Rose and Bob-B-Q as Extermination/Exploration, leave the M1 #failure messages under #failed since it won't be called, and comment out the "You have done well" lines from the #finished (m1 #success) messages. If you're curious, this:
Code: Select all
#INFORMATION
***INCOMING MESSAGE FROM LEELA***
;
;You have done well. 
;
;The surviving
#4Fc#O32C <
;B.O.B.> reported seeing the Pf
hor transferring some kind of large device towards Reactor Are
;a 3. From the description it must be a bomb.
;
;If a large bomb is allowed to detonate in the Engineering Section, the Marathon would be
^&2``~<Colloquialism Search Error #F9C>

We must head off the Pfhor threat to the Engineering section.  I am going to send you into the primary re~Tick Count=>$Bfirst_thought$b $U#49$u. 
You must clear the area of all aliens before they destroy the Primary Reactors.

~[p[]]*kc3sla/.U

***MESSAGE INTERRUPTED***

$B***JUMP PAD ACTIVATION INITIATION START***
***TRANSPORT WHEN READY***
gets rendered as this:
bbq.png
User avatar

ravenshining
Hawai'i

Post Jul 10th '18, 12:39

ravenshining wrote:Well, if you'd like to tell me how I can tell A1 that my BoBs are M1 civilians using an M∞ physics model

Let's start with this: what have you tried? Have you tried just setting the M1 rescue flag (with a hex editor, sorry about that) before submitting pull requests, soliciting the help of Pfhorums-goers to write Lua, etc? Because I think that's all you should need to do.

I won't accept a change to the original Marathon 2 behavior because there are so many maps out there that depend on the existing behavior. Especially when there is already a flag that makes it behave exactly the way you want. I regret that that makes you think I'm a jerk, but I accept that seems to be my lot here sometimes.
User avatar

treellama
Pittsburgh

Post Jul 10th '18, 16:20

ravenshining wrote:I was still feeling hurt over the way you brought up the whole copyright issue last night

Was the copyright message not funny? I thought it was funny.
User avatar

Wrkncacnter

Post Jul 10th '18, 22:25

treellama wrote:
ravenshining wrote:Well, if you'd like to tell me how I can tell A1 that my BoBs are M1 civilians using an M∞ physics model

Let's start with this: what have you tried? Have you tried just setting the M1 rescue flag (with a hex editor, sorry about that) before submitting pull requests, soliciting the help of Pfhorums-goers to write Lua, etc? Because I think that's all you should need to do.

I won't accept a change to the original Marathon 2 behavior because there are so many maps out there that depend on the existing behavior. Especially when there is already a flag that makes it behave exactly the way you want. I regret that that makes you think I'm a jerk, but I accept that seems to be my lot here sometimes.


I appreciate the further explanation. Your first response came off to me as saying, "I don't want you to fix anything, and you shouldn't be making this project." Not anything like a "Nice work / good idea, but there are big problems with that which prevent it's implementation, try this instead." Between that, my exhaustion from working on this so hard, and M1R generally being the butt of people's jokes, I was literally in tears over it all yesterday. Still am.

As for maps depending on Rescue not working, it seems to me that they'd be few & far between, and only that way because someone goofed up making them- no one could possibly set that flag intentionally unless they mistakenly believe it actually works. However much I disagree, I accept that protecting those cases is the level of precaution that you're comfortable with.

What I've tried... I've spent hours, a full day, at least two all-nighters, researching and trying many different ways of trying to get this working, and I don't want to bore you with all the dead ends and failures.

I vaugely recall that it may be possible to set M1 mission types via hex editor, but finding documentation for stuff like that isn't easy. I really should be keeping my own library of Marathon links and documents, so many are scattered or dead these days and search engines are almost no help at all.

I can see that setting the M1 rescue flag would trigger A1 to start keeping track of civillian and casualtiy numbers, and to evaluate whether or not to display a FAILED terminal. However, it's only looking for monsters with the M1 human civillian class, not just any BoB. From what I can see, it looks like classes in M1 and M2 are set differently? In the code I see a list of flags of the type you add together for M1 (but no idea where to find them), and just a list of classes for M2, it doesn't look like the same kind of thing but I don't really understand what I'm looking at there.
User avatar

ravenshining
Hawai'i

Post Jul 11th '18, 01:54

ravenshining wrote:Thank you for the encouragement.
I know there are a lot of people who have this "don't change anything!" mentality, but the only way for anything to happen is for there to be change. Otherwise, there's no reason do to anything, and if no one does anything, there's no community.
I have made a *lot* of changes in M1R, just for the sake of making changes, that are not necessarily set in stone - that's part of why I'm still calling this alpha even though in the next release you'll be able to play all the way to the canonical end. If people feel these break from the Marathon spirit, and would contribute to the project were they reverted, then I would revert them.
For example:
•the secondary fire on the SPNKR and TOZT - the few people I've tested them with online loved them, but I understand how they are rather far off canon.
•Friendly MADDs firing dud grenades, or how I've implemented them doing so
•Various alien's abilities to make short-range underwater attacks
•I think some of my writing is a bit melodramatic, and could be toned down a notch
•Radix's animé terminal art. Currently the plan is to use it as "bones" on to which I'll overlay photos and sprites, but she also provided some abstract art you may not have seen that would fit right in.
•Changes to sounds and what sounds are played when - I've gotten no feedback on this
If you do have a vision for an aspect of M1 that could be improved, updated, etc., do share even if it's different from how I am currently going about it.


From what I've played of M1R, what you are doing is taking M1 and making it... more of M1. That is a good idea, especially if you want to create more content for existing fans of M1. I am one of those fans.

But it's not going to rub bad tastes out of people's mouths; who play it for a few minutes, and then go back to playing GZDoom. Aleph One can do things that GZDoom can't, and I want to see Marathon take advantage of them.

Let's talk about the advantages of Aleph One:
We have an entire high level interpreter language, Lua, that can interact with what's happening inside the game at our disposal; anyone can write and embed Lua code into levels / plugins; and it's all on-the-fly!
We can render the game with all 8192x8192 (15.2K) textures with anisotropic 16x filtering. Sure, it will take five minutes to load (and probably 8GB of VRAM), but it will run at solid 30fps if you tell it to.
We can have five variations of any one 16-bit sound, and there's like a hundred sounds!
M1's entire arsenal for the whole game is six weapons. Aleph One can have TEN unique weapons for each LEVEL. Same goes for monsters.
Maps can go from -100 WU to 100 WU! Bump mapping and normal mapping! Circles in Weland! For God's sake, 5-D Space!

If you had to explain the standout characteristics of Marathon as a series to someone uninitiated, what are the first five or ten?

Now personally, here's a few things that, if I were re-imagining M1, would always be treated within a tight policy:

-Terminal text
I think the manual text belongs in the manual. The plot of M1 is the plot. That said, when changing the weapons, levels, or enemy types, I think original terminal content could be implemented, but very carefully. Interestingly, A person could make all of the non-transport terminals into audio terminals with pictures only (Lua music controls), but they would need a voice actor and probably some foley.

-Level design
One thing about M1 in particular is that a lot of areas are tight corridors and claustrophobic. The areas where this happen should be dark, atmospheric, and passive, while the combat heavy levels are usually open. Either scrap mostly everything, or keep mostly everything.

-Sound (and Guns)
Here's an unpopular opinion: Craig Hardgrove's soundtrack works great for Eternal X, not for M1! Atmosphere and tone are important. Not every level can play Swirls, some levels need to get the blood pumping. And to quote the Marathon-hating Doom community, "The gun sounds are anemic; the shotgun sounds like my grandma sneezing across a dinner table". Also, if you can make new music, why not use Lua to make it dynamic and segmented according to where the player is?

-Graphics (and more Guns)
I think the ship should look more industrial in the industrial areas (Arrival), and more commercial in the commercial areas (The Rose). I think the Pfhor as a race should look more humanoid, ironically. And they should wear more armor. Aaand their movement frames should be running, not tiptoeing. Guns should look gritty, worn, and empowering. You are the space cowboy, after all. Revolvers should use quick change cylinders, not magazines in the hand grip. And that scope is wimpy. Adding weapon inertia? Should've, would've, could've.

It is very clear to me that I would redux weapons, AI, and movement the most, if given the opportunity. I know that these ideas won't fly over very well with some of the veterans, but I mustn't say something were it not true. This is all I have to say on the matter for now. I'm willing to contribute if need be. Now if you'll excuse me, I need to learn digital art hastily.
Flippant Sol

Post Jul 11th '18, 05:50

An excellent treatise, Flippant Sol. I'm too exhausted to get into specifics right now, but I largely agree with what you're saying.

Speaking of exhaustion, I should really take a break for a a week or so. Getting the conversion work done, from Arrival - Ingue Ferroque, was a big milestone, and if if the above is any indication, I should probably focus on something else for a bit so I'm not too emotionally involved. Probably should finish that motorcycle I've been working on.

That said, 0.0.11-alpha is up on Simplici7y and GitHub.
User avatar

ravenshining
Hawai'i

Post Jul 11th '18, 06:20

@Flippant Sol: Man, is the Doom community THAT harsh on Marathon? How high are their standards if they think the shotguns' sound effects are "anemic"?

wrt: your terminal idea, I'm not sure about having all non-transport terminals be audio, but maybe the AIs could periodically contact the SO via their helmet comm? With subtitles in case they start speaking in the middle of a firefight. (What say you, Lia?)

As for the Pfhor and how you think they ought to look more humanoid/need more armour, I've got some redesigns that might interest you; here's the sheets I made for the Fighter and Trooper, Hunter, and Enforcer.

I only recently recovered from straining the hell out of my back, so I'm not sure I could make graphics for these if Lia approves. Might at least be able to do some movement concepts or something...
welcome to the scene of the crash
User avatar

General-RADIX

Post Jul 11th '18, 06:42

ravenshining wrote:An excellent treatise, Flippant Sol. I'm too exhausted to get into specifics right now, but I largely agree with what you're saying.

Speaking of exhaustion, I should really take a break for a a week or so. Getting the conversion work done, from Arrival - Ingue Ferroque, was a big milestone, and if if the above is any indication, I should probably focus on something else for a bit so I'm not too emotionally involved. Probably should finish that motorcycle I've been working on.

That said, 0.0.11-alpha is up on Simplici7y and GitHub.

Everyone needs to take breaks. Bungie's been taking a 7939 day break :D. Get some rest. You deserve it.

General-RADIX wrote:@Flippant Sol:As for the Pfhor and how you think they ought to look more humanoid/need more armour, I've got some redesigns that might interest you...

I only recently recovered from straining the hell out of my back, so I'm not sure I could make graphics for these if Lia approves. Might at least be able to do some movement concepts or something...


Good lord, man. Your work is fantastic! The question is whether or not you're still in the game, and whether you can do "dark, gritty, and edgy". I especially liked those bottom three. Goddammit, now I'm thinking up fan-fiction about inter-species romance. This is all of your fault.

Good night, you beautiful people.
Flippant Sol

Post Jul 11th '18, 12:24

ravenshining wrote:Your first response came off to me as saying, "I don't want you to fix anything, and you shouldn't be making this project."

That's a lot to read into a patch being rejected.

ravenshining wrote:As for maps depending on Rescue not working, it seems to me that they'd be few & far between, and only that way because someone goofed up making them- no one could possibly set that flag intentionally unless they mistakenly believe it actually works.

Lua scripts can read it and enable their own rescue behavior when they see it present. That's a solution I might suggest for your own project if the M1 behavior didn't already exist.

ravenshining wrote:I vaugely recall that it may be possible to set M1 mission types via hex editor, but finding documentation for stuff like that isn't easy. I really should be keeping my own library of Marathon links and documents, so many are scattered or dead these days and search engines are almost no help at all.

I intend to add them to Weland at some point. For some reason I had recalled you setting map flags by hand before, but my memory isn't what it used to be.

ravenshining wrote:I can see that setting the M1 rescue flag would trigger A1 to start keeping track of civillian and casualtiy numbers, and to evaluate whether or not to display a FAILED terminal. However, it's only looking for monsters with the M1 human civillian class, not just any BoB. From what I can see, it looks like classes in M1 and M2 are set differently? In the code I see a list of flags of the type you add together for M1 (but no idea where to find them), and just a list of classes for M2, it doesn't look like the same kind of thing but I don't really understand what I'm looking at there.

They both use the same field in the monster definition (int32 _class). Monster classes are set in the physics file, so if you're using Marathon 2 physics you just need to set the M2 class that corresponds to _class_human_civilian_m1. Looking in monster_definitions.h:

Code: Select all
_class_human_civilian_m1 = 0x02

So we just have to find the M2 class that corresponds to 0x02. In the M2 section they're defined by their bit shift, so solve for 1 << _class_x_bit = 2.

Answer is: _class_human_civilian_bit.

Then:

Code: Select all
_class_human_civilian= 1<<_class_human_civilian_bit


:)
User avatar

treellama
Pittsburgh

Post Jul 12th '18, 07:19

Aw, shucks. Now I feel like a jerk for calling you a jerk and making all this fuss. Forgive me, Treelama.

That's really awesome of you to go though and explain how that data works! And you're right, now I remember I did do some editing by hand, but couldn't remember when, where I found the info, and I wasn't editing mission flags - but I've found where I did that, and where I got the info from, and in that info is also mission flags!

I'm still going to give myself a bit before I actually look at any of that though. This weekend I'm going to relax, ride a bike, read my Bible, and I'll come back to Marathon next week.

The other night I managed to complete Arrival on Insane difficulty, I'll put it up on YouTube tomorrow in case anyone is interested (The Man, I know that's your thing!)
User avatar

ravenshining
Hawai'i

Post Jul 12th '18, 12:19

ravenshining wrote:I'm still going to give myself a bit before I actually look at any of that though. This weekend I'm going to relax, ride a bike, read my Bible, and I'll come back to Marathon next week.

I think that's a good idea. That's what I did this morning before work! Except for the come back to Marathon part...
User avatar

treellama
Pittsburgh

PreviousNext

Return to Projects



Who is online

Users browsing this forum: No registered users