<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "Code for stopping AMs from dropping artifacts"]]></title>
		<link>https://www.disastrousconsequences.com/dcforum/posts/list/1.page</link>
		<description><![CDATA[Latest messages posted in the topic "Code for stopping AMs from dropping artifacts"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ Okay - mind you that this would be my first attempt at writing UnrealScript stuff.  And I haven't actually put this into anything and tried to compile it ... but ...

Dru and I discussed in PMs the whole idea of getting just AMs to stop dropping artifacts on death.  As you'll see, there are comments in the code containing questions that, if you know the answers to, I'd like to know.  Where this code would go into place is basically into any artifact that you wouldn't want to spill out of an AM when they died.  This code should (if I wrote it anywhere near correctly) allow all other classes to throw on death the artifact in question.  It should also allow an AM to toss the artifact while still alive.

The gotchas are probably many - one of which that just occurred to me:

If you wanted to allow an AM to drop on death an artifact they picked up (IE, they threw the one they started with, but then picked up the same one later), this wouldn't allow that.

Please review and critique.  I'm learning here ...

<span class="genmed"><b>Code:</b></span><br>
		<div style="overflow: auto; width: 100%;">
		<pre>function DropFrom&#40;vector StartLocation&#41;
{
	local int x;
	local bool ok;
	local RPGStatsInv StatsInv;

	if &#40;bActive&#41;
		GotoState&#40;''&#41;;

// All this is for finding out if the class of the player is AM.
	StatsInv = RPGStatsInv&#40;Instigator.FindInventoryType&#40;class'RPGStatsInv'&#41;&#41;;
	if&#40;StatsInv != None&#41;
		for &#40;x = 0; x &lt; StatsInv.Data.Abilities.length && !ok; x++&#41;
			if &#40;statsInv.Data.Abilities&#91;x&#93; == class'ClassAdrenalineMaster'&#41;
				ok = True;

// Now, depending on state of player and class:
	if &#40;Instigator.Health &lt;= 0 && ok&#41;
	{
		Destroy&#40;&#41;;
// If we're talking dead people, do we really need this?  It depends on
// what "NextItem" really means ... if it's just changing the active
// item for a living person, then we don't need this.  And there's a part of
// me that seriously wants to see this *before* Destroy&#40;&#41; - must be a hold
// over from my LPC days.
		Instigator.NextItem&#40;&#41;;
	}
	else
	{
// If "tossed", NextItem is called in TossArtifact function, BUT:
// if "NextItem" needed for dead people, it's needed somewhere here.
// However, that may be handled in "Super.DropFrom".  Or, would this
// possibly result in only the active item being dropped from non-
// adrens?
		Super.DropFrom&#40;StartLocation&#41;;
	}
}</pre>
		</div>
Dru mentioned that this solution is a bit inflexible - it can cause problems for folks that wish to extend his code.  I would guess the exact reason for that is the limitations of UnrealScript's inheritance (which I haven't quite gotten a grip on, but on some level understand)?  Is it because they'd be unable to reference Mysterial's version of the artifact while using/referencing any part of Dru's mod (if Dru's mod used artifact classes that contained the above code snippet)?

Would it be possible to set up the RPG INI to use either Dru's version of a particular artifact, or Mysterial's?  I would think so IIRC what I've seen in the INI.  Server owners could still mix and match, right?  It's just the "extenders" that are going to run into problems?]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#18960</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#18960</link>
				<pubDate><![CDATA[Sun, 23 Jul 2006 15:55:53]]> GMT</pubDate>
				<author><![CDATA[ BotFodder]]></author>
			</item>
			<item>
				<title>Re:Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ Also, would it be worth rewriting such that the "death" check occurs first (and if not dead, then just allow the throwing), and the class loop is not checked unless Instigator is dead?]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#18978</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#18978</link>
				<pubDate><![CDATA[Sun, 23 Jul 2006 18:01:41]]> GMT</pubDate>
				<author><![CDATA[ BotFodder]]></author>
			</item>
			<item>
				<title>Re:Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ Well, I guess everyone is ignoring this ...

Dru, would it be worth anything to you if I took this code, changed it in DruidsRPG200, and tested it "locally"?  (I've gotten 200 running on my home box as a "listen" server).]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19023</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19023</link>
				<pubDate><![CDATA[Tue, 25 Jul 2006 06:55:44]]> GMT</pubDate>
				<author><![CDATA[ BotFodder]]></author>
			</item>
			<item>
				<title>Re:Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ I didn't ignore it... I just chose not to comment.   :D 

Reading through the code, I guess it would work.  I would very much like not being a pinata whenever that shield nali comes up behind me, so I hope it works too... just without the errors it had before.  I might be willing to help test it - but I'm sure there are others who could help ya more.

Hope it works!]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19024</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19024</link>
				<pubDate><![CDATA[Tue, 25 Jul 2006 07:28:52]]> GMT</pubDate>
				<author><![CDATA[ kyraeu]]></author>
			</item>
			<item>
				<title>Re:Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ <p></p>

		<cite>BotFodder wrote:</cite><br>
		<blockquote>Also, would it be worth rewriting such that the "death" check occurs first (and if not dead, then just allow the throwing), and the class loop is not checked unless Instigator is dead?&nbsp;
		</blockquote>
Yes]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19029</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19029</link>
				<pubDate><![CDATA[Tue, 25 Jul 2006 13:08:44]]> GMT</pubDate>
				<author><![CDATA[ Szlat]]></author>
			</item>
			<item>
				<title>Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ <p></p>

		<cite>BotFodder wrote:</cite><br>
		<blockquote>Okay - mind you that this would be my first attempt at writing UnrealScript stuff.  And I haven't actually put this into anything and tried to compile it ... but ...

Dru and I discussed in PMs the whole idea of getting just AMs to stop dropping artifacts on death.  As you'll see, there are comments in the code containing questions that, if you know the answers to, I'd like to know.  Where this code would go into place is basically into any artifact that you wouldn't want to spill out of an AM when they died.  This code should (if I wrote it anywhere near correctly) allow all other classes to throw on death the artifact in question.  It should also allow an AM to toss the artifact while still alive.

The gotchas are probably many - one of which that just occurred to me:

If you wanted to allow an AM to drop on death an artifact they picked up (IE, they threw the one they started with, but then picked up the same one later), this wouldn't allow that.

Please review and critique.  I'm learning here ...

<span class="genmed"><b>Code:</b></span><br>
		<div style="overflow: auto; width: 100%;">
		<pre>function DropFrom&#40;vector StartLocation&#41;
{
	local int x;
	local bool ok;
	local RPGStatsInv StatsInv;

	if &#40;bActive&#41;
		GotoState&#40;''&#41;;

// All this is for finding out if the class of the player is AM.
	StatsInv = RPGStatsInv&#40;Instigator.FindInventoryType&#40;class'RPGStatsInv'&#41;&#41;;
	if&#40;StatsInv != None&#41;
		for &#40;x = 0; x &lt; StatsInv.Data.Abilities.length && !ok; x++&#41;
			if &#40;statsInv.Data.Abilities&#91;x&#93; == class'ClassAdrenalineMaster'&#41;
				ok = True;

// Now, depending on state of player and class:
	if &#40;Instigator.Health &lt;= 0 && ok&#41;
	{
		Destroy&#40;&#41;;
// If we're talking dead people, do we really need this?  It depends on
// what "NextItem" really means ... if it's just changing the active
// item for a living person, then we don't need this.  And there's a part of
// me that seriously wants to see this *before* Destroy&#40;&#41; - must be a hold
// over from my LPC days.
		Instigator.NextItem&#40;&#41;;
	}
	else
	{
// If "tossed", NextItem is called in TossArtifact function, BUT:
// if "NextItem" needed for dead people, it's needed somewhere here.
// However, that may be handled in "Super.DropFrom".  Or, would this
// possibly result in only the active item being dropped from non-
// adrens?
		Super.DropFrom&#40;StartLocation&#41;;
	}
}</pre>
		</div>
&nbsp;
		</blockquote>
I have only had a quick scan through what you have suggested, but it all looks quite reasonable.
in the bit where you check if (bActive), I would set bActive to be false.
I would also check for DruidArtifactLoaded rather than ClassAdrenalineMaster
But it looks ok to me.

<p></p>

		<cite>BotFodder wrote:</cite><br>
		<blockquote>Dru mentioned that this solution is a bit inflexible - it can cause problems for folks that wish to extend his code.  I would guess the exact reason for that is the limitations of UnrealScript's inheritance (which I haven't quite gotten a grip on, but on some level understand)?  Is it because they'd be unable to reference Mysterial's version of the artifact while using/referencing any part of Dru's mod (if Dru's mod used artifact classes that contained the above code snippet)?&nbsp;
		</blockquote>
Not sure what Dru is getting at here. You could make it configurable in the RPG.ini file to allow these artifacts to be dropped or not. Have a flag, and only check your classes code if the flag is set.
So, at the top of each artifact have
<span class="genmed"><b>Code:</b></span><br>
		<div style="overflow: auto; width: 100%;">
		<pre>var config bool bAllowDrops;</pre>
		</div>
and in the defaultproperties section
<span class="genmed"><b>Code:</b></span><br>
		<div style="overflow: auto; width: 100%;">
		<pre>bAllowDrops=false</pre>
		</div>
then put the test <span class="genmed"><b>Code:</b></span><br>
		<div style="overflow: auto; width: 100%;">
		<pre>if&#40;!bAllowDrops&#41;</pre>
		</div> before doing your class search.
Then you can set the value of bAllowDrops in the RPG ini file.
However, these changes will not affect artifacts that Druid hasn't written. So if someone used Mysterials triple, or somebody else's megablast artifact, those artifacts wouldn't have the code in, and so would still drop. Still, they could always copy your code!  :D 
But that is all minor stuff. What you have there looks ok to me. Try editing it in and compiling. However, remember to save your proper DruidsRPG200.u so you can put it back later.  :) 

<p></p>

		<cite>BotFodder wrote:</cite><br>
		<blockquote>Would it be possible to set up the RPG INI to use either Dru's version of a particular artifact, or Mysterial's?  I would think so IIRC what I've seen in the INI.  Server owners could still mix and match, right?  It's just the "extenders" that are going to run into problems?&nbsp;
		</blockquote> Yes, that is always possible. In the list of Artifacts they either list Druids or Mysterials.]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19030</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19030</link>
				<pubDate><![CDATA[Tue, 25 Jul 2006 13:27:13]]> GMT</pubDate>
				<author><![CDATA[ Szlat]]></author>
			</item>
			<item>
				<title>Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ <p></p>

		<cite>Szlat wrote:</cite><br>
		<blockquote>I have only had a quick scan through what you have suggested, but it all looks quite reasonable.
in the bit where you check if (bActive), I would set bActive to be false.
I would also check for DruidArtifactLoaded rather than ClassAdrenalineMaster
But it looks ok to me.&nbsp;
		</blockquote>
Yeah you know something itched me about that (bActive) sequence but I didn't look at it too closely.  Thing is, I think it's practically verbatim from some of Dru's (and possibly Mysterial's) stuff.

As for what to look for, I guess I get it in theory - you could concievably (if someone didn't know what they were doing when they built their skills) have an AM without LA; any AM without LA would be treated as any other class, and drop artifacts on death.

Also, the code snippet could be backported (if someone so desired - doesn't sound appealing to me but you never know) to older (classless) versions of the mod.
<p></p>

		<cite>Szlat wrote:</cite><br>
		<blockquote>Not sure what Dru is getting at here.&nbsp;
		</blockquote>
I think he means that if someone wanted to code extensions to his mod, they'd be stuck at a certain point having to use his code, or rewrite his mod to suit their needs.  I think this has to do with the limits on inheritance in UnrealScript.

As far as testing this solution is concerned, I'm a weekend code warrior - during the week I've already done my 8 every day and want to just play.  Also, I don't want to expend too much energy if it isn't eventually of use to someone.

If I do go about testing it, I will rewrite it to be a bit more optimized, and possibly include the suggested config. ;)]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19044</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19044</link>
				<pubDate><![CDATA[Tue, 25 Jul 2006 19:35:15]]> GMT</pubDate>
				<author><![CDATA[ BotFodder]]></author>
			</item>
			<item>
				<title>Re:Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ Another option would be to modify the DruidArtifactLoaded class. When a player is about to die, the code calls the PreventDeath function for each ability.  So, we could add a PreventDeath function to the DruidArtifactLoaded class, which destroys the artifacts as the player is about to die. Then there is nothing to drop, and it works for any artifact.

However, it is possible that after PreventDeath is called for the DruidArtifactLoaded class, it is then called for another ability (e.g. Ghost) which decides you shouldn't die after all. Which would be a bit of a pain, because now you don't have the artifacts and you are still alive.

So, you would have to kick off a timer, that in a second could decide if you were not dead after all, and give you the artifacts back. Messy.

It would have been nice to put the destroy code in DruidArtifactLoadeds ScoreKill function, but unfortunately that is called after the artifacts have been dropped.

I suppose an alternative would be to let the artifacts be dropped, but kick off another object in the same location, which, one second later destroys all artifacts within a small radius. A bit like the ultima bomb, but no graphics and just takes out the artifacts.
EDIT: or sets the Lifetime of the artifact pickups to be less than a second. So, the artifacts are spawned, but not for long. ]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19049</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19049</link>
				<pubDate><![CDATA[Wed, 26 Jul 2006 00:37:32]]> GMT</pubDate>
				<author><![CDATA[ Szlat]]></author>
			</item>
			<item>
				<title>Re:Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ Okay how about:

Hmmm ... perhaps there's a way to add code to either Ghost (to query if Ghost will or already has kicked in - but again you have to figure out the sequencing) or ArtifactLoaded to take care of the artifacts ... hmmm ...

I don't know how tightly intertwined Druid would want to make Ghost and another class.  And I haven't poked around at the Ghost code yet.  The thing is, I'm always one for simplicity in code, and this sounds like it would heavily complicate something somewhere along the lines ...]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19050</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19050</link>
				<pubDate><![CDATA[Wed, 26 Jul 2006 03:41:36]]> GMT</pubDate>
				<author><![CDATA[ BotFodder]]></author>
			</item>
			<item>
				<title>Re:Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ You could add the code to Ghost, but what if someone replaced Druid's Ghost by their own Ghost? Or ran Mysterial's instead of Druid's Ghost? 
So you can't rely on the code being there.

The simplest option is probably for the ScoreKill function of DruidLoadedArtifacts to set all artifacts in the immediate locality to have a LifeTime of 0.5 secs.]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19051</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19051</link>
				<pubDate><![CDATA[Wed, 26 Jul 2006 04:50:53]]> GMT</pubDate>
				<author><![CDATA[ Szlat]]></author>
			</item>
			<item>
				<title>Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ Okay, I only read the first four posts or so, but to fix the 'picked up/loaded artifacts' difference, give the artifacts a boolean value, say, bAbilityInduced or something, and set it to true on each artifact you make using Loaded Artifacts.  Then when you run this check you have created (good work, btw, you're learning a lot faster than did), you can check each artifact to see if it was picked up (or 'not ability-induced'), and if so, negate the stop-dropping effect.

Did you get all that?  Seems sort of confusing to me as I read it...  Good luck with your scripting :D.]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19077</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19077</link>
				<pubDate><![CDATA[Wed, 26 Jul 2006 11:44:36]]> GMT</pubDate>
				<author><![CDATA[ KohanX]]></author>
			</item>
			<item>
				<title>Re:Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ Kohan - it took me a while but I got it ...

And it's a very elegant solution.  Except:

1. It doesn't avoid the problem with locking people in due to the inheritance limitations (if I understand even partially what Dru was getting at)

2. To get it to work, you either have to:

-1. Edit every object to work appropriately with the new variable, or

-2. The more elegant but possibly less desirable solution being to extend (or flat out rewrite) Mysterial's RPGArtifact class, which would probably cause you to rewrite all artifacts (which is what we'd be doing in any "change to nodrop" solution)

So really, there are any number of ways to deal with this situation - but it sounds like there are gotchas that Dru's not willing to deal with yet in pretty much any solution at the moment.]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19151</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19151</link>
				<pubDate><![CDATA[Sat, 29 Jul 2006 08:23:36]]> GMT</pubDate>
				<author><![CDATA[ BotFodder]]></author>
			</item>
			<item>
				<title>Re:Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ Since LA's are an additional class do they even need to get the default artifacts? You could give them an extended version that youve modified to prevent dropping (could even make an abstract class that they all extended from if you needed to).]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19157</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19157</link>
				<pubDate><![CDATA[Sat, 29 Jul 2006 10:58:50]]> GMT</pubDate>
				<author><![CDATA[ Continuum]]></author>
			</item>
			<item>
				<title>Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ Um, Bot, all you'd need to do is extend the RPGArtifact and add a single boolean value, with a default value of false...  Then change LA to mark all its created artifacts...

Adn what's this about inheritance limitations?]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19159</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19159</link>
				<pubDate><![CDATA[Sat, 29 Jul 2006 11:02:41]]> GMT</pubDate>
				<author><![CDATA[ KohanX]]></author>
			</item>
			<item>
				<title>Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ <p></p>

		<cite>KohanX wrote:</cite><br>
		<blockquote>Adn what's this about inheritance limitations?&nbsp;
		</blockquote>
Actually rereading some stuff I've misunderstood a few things regarding "single inheritance" - and I don't think it has anything to do with the issue Dru apparently wants to avoid.  But now I think I have a handle on it.  I could be wrong - someone will please correct me if I'm grossly mistaken.

Dru seems (from what I can tell - which means I could be wrong) to be hesitant to lock people into certain things.  Only he can tell you if I've misinterpreted what he's said to me.  His concern appears to be that:

If someone wants to extend his mod (remember they'd be forced when using the DruidsRPG to use UT2004RPG), but Dru's mod extends (or are we talking purely in terms of "replacing" a base class? I dunno) something from Mysterial's mod, they would then have to either:

- Use the class as is in Dru's mod
- Extend the class in Dru's mod

What I can say with some confidence is that (according to Dru) they would <b>not</b> be able to extend the class from Mysterial's mod.  I get the impression that once Dru creates a "base" class that overwrites/overrides Mysterial's, an extender cannot extend Mysterial's version, and has to deal with Dru's.  Dru (or so it seems) does not want this.  So if Dru did extend RPGArtifact, and someone wanted to use all of Dru's mod but extend Mysterial's version of RPGArtifact (and not at all deal with Dru's), they would not (not out of the box anyway).

(NOTE: the term "class" applies in terms of programming languages, not the implementation of "player classes", for those of you not in the programming frame of mind when you read this post)]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19165</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19165</link>
				<pubDate><![CDATA[Sat, 29 Jul 2006 12:24:19]]> GMT</pubDate>
				<author><![CDATA[ BotFodder]]></author>
			</item>
			<item>
				<title>Re:Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ <p></p>

		<cite>Continuum wrote:</cite><br>
		<blockquote>Since LA's are an additional class do they even need to get the default artifacts? You could give them an extended version that youve modified to prevent dropping (could even make an abstract class that they all extended from if you needed to).&nbsp;
		</blockquote>
I have a feeling Dru may have tried something along those lines, but it resulted in LA's being able to pick up multiple versions of the "same" artifact (IE, since you technically have two "different" triples, you can pick up both at the same time).

I'm going to step back from this thread (and the topic as a whole) until such time as I hear something from Dru that makes me think it's worth persuing (and I haven't grossly misinterpreted him, and I'm on the right track, yadda yadda yadda).  I feel like (for a variety of reasons) I'm walking around knee deep in cloudy water and I don't want to suddenly sink into a hole.]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19166</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19166</link>
				<pubDate><![CDATA[Sat, 29 Jul 2006 12:30:05]]> GMT</pubDate>
				<author><![CDATA[ BotFodder]]></author>
			</item>
			<item>
				<title>Code for stopping AMs from dropping artifacts</title>
				<description><![CDATA[ Personally, I think the whole deal is sort of dumb...  If I was to make a mod for UT2004RPG with some features from DruidsRPG, I'd just make the features myself and extend from UT2004RPG.  For example, I once attempted to create a Vehicle Master type thing, much like SonicRPG's (UnrealInsanity).  It didn't end up working, but my point is that it becomes very difficult to keep track fo things when you're in the third generation of a mod (UT2004RPG -> DruidsRPG -> NewRPG), and ti is much easier just to create a whole new mod yourself and give credit to those whose work you used.  Bah, that's just me.

And aside, like I said, it's only one variable.  Heck, you could just prefix the existing artifacts with some letter, and check for the letter when you go through the check or something.]]></description>
				<guid isPermaLink="true">https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19173</guid>
				<link>https://www.disastrousconsequences.com/dcforum/posts/list/2243.page#19173</link>
				<pubDate><![CDATA[Sat, 29 Jul 2006 13:30:27]]> GMT</pubDate>
				<author><![CDATA[ KohanX]]></author>
			</item>
	</channel>
</rss>