Jump to content


Photo

Can't cast spells in the Govt district?


  • Please log in to reply
40 replies to this topic

#1 Vandervecken

Vandervecken
  • Member
  • 176 posts

Posted 30 November 2009 - 11:01 AM

So I'm in Ch 6, late game.
Whenever one of my characters casts a mage spell in the govt district, or uses an item with a mage spell effect, that character immediately drops all their equipment on the ground and runs away, leaving the party. Even <CHARNAME>.
Doesn't happen in other districts eg Waukeen's Promenade.

I have no idea what's going on.
Here's my Weidu.log
http://www.shsforums...t...st&id=18249

Cheers
Vandervecken

#2 Arkenor

Arkenor
  • Member
  • 255 posts

Posted 30 November 2009 - 11:28 AM

So I'm in Ch 6, late game.
Whenever one of my characters casts a mage spell in the govt district, or uses an item with a mage spell effect, that character immediately drops all their equipment on the ground and runs away, leaving the party. Even <CHARNAME>.
Doesn't happen in other districts eg Waukeen's Promenade.

I have no idea what's going on.
Here's my Weidu.log
http://www.shsforums...t...st&id=18249

Cheers
Vandervecken



I don't see anything in your log that I would expect to have anything like that sort of effect, but you do have an awful lot of mod components, many of which are trying to affect the same stuff, so there may have been a weird combination. It sounds vaguely cowled wizard related. Did you ever get yourself a wizard license?

Do you have AI running? Try turning it off and see if the same thing happens.

Edited by Arkenor, 30 November 2009 - 11:33 AM.

Arkenor Oakshadow
Ark's Ark Whois
Meddling in the affairs of modders. Modding in the affairs of genie.

#3 Arkenor

Arkenor
  • Member
  • 255 posts

Posted 30 November 2009 - 11:34 AM

So I'm in Ch 6, late game.
Whenever one of my characters casts a mage spell in the govt district, or uses an item with a mage spell effect, that character immediately drops all their equipment on the ground and runs away, leaving the party. Even <CHARNAME>.
Doesn't happen in other districts eg Waukeen's Promenade.

I have no idea what's going on.
Here's my Weidu.log
http://www.shsforums...t...st&id=18249

Cheers
Vandervecken



I don't see anything in your log that I would expect to have anything like that sort of effect, but you do have an awful lot of mod components, many of which are trying to affect the same stuff, so there may have been a weird combination. It sounds vaguely cowled wizard related. Did you ever get yourself a wizard license? Did the cowlies turn up normally on casting a mage spell at any point in your game?

Do you have AI running? Try turning it off and see if the same thing happens.


Edit: I really didn't mean to accidentally quote myself instead of editing my first post...

Using near infinity or other tool, can you take a look at AR1000.bcs and post it here?

Edited by Arkenor, 30 November 2009 - 11:50 AM.

Arkenor Oakshadow
Ark's Ark Whois
Meddling in the affairs of modders. Modding in the affairs of genie.

#4 Vandervecken

Vandervecken
  • Member
  • 176 posts

Posted 30 November 2009 - 11:59 AM

So I'm in Ch 6, late game.
Whenever one of my characters casts a mage spell in the govt district, or uses an item with a mage spell effect, that character immediately drops all their equipment on the ground and runs away, leaving the party. Even <CHARNAME>.
Doesn't happen in other districts eg Waukeen's Promenade.

I have no idea what's going on.
Here's my Weidu.log
http://www.shsforums...t...st&id=18249

Cheers
Vandervecken



I don't see anything in your log that I would expect to have anything like that sort of effect, but you do have an awful lot of mod components, many of which are trying to affect the same stuff, so there may have been a weird combination. It sounds vaguely cowled wizard related. Did you ever get yourself a wizard license? Did the cowlies turn up normally on casting a mage spell at any point in your game?

Do you have AI running? Try turning it off and see if the same thing happens.


Edit: I really didn't mean to accidentally quote myself instead of editing my first post...

Using near infinity or other tool, can you take a look at AR1000.bcs and post it here?


I don't use AI, I have had a wizard license for ages. They literally just immediately leave the party and run.
Attached is my AR1000.bcs

Attached Files



#5 Arkenor

Arkenor
  • Member
  • 255 posts

Posted 30 November 2009 - 12:22 PM

OK, your ar1000.bcs says:

[codebox]IF
SpellCast([PC],0)
!GlobalTimerNotExpired("SpellsBad","GLOBAL")
Global("BribedCowled","GLOBAL",0)
GlobalLT("CowledWarning","GLOBAL",7)
THEN
RESPONSE #100
ActionOverride(Player1,DisplayString(Myself,338342))
CreateCreatureObjectDoor("COWENF2",LastTrigger,0,0,0)
SetGlobalTimer("SpellsBad","GLOBAL",ONE_HOUR)
END

IF
SpellCast([PC],0)
Global("BribedCowled","GLOBAL",0)
GlobalTimerNotExpired("SpellsBad","GLOBAL")
THEN
RESPONSE #100
ActionOverride(Player1,DisplayString(Myself,338343))
Wait(1)
END
[/codebox]

Whereas mine says:

[codebox]IF
SpellCast([PC],0)
!GlobalTimerNotExpired("SpellsBad","GLOBAL")
Global("BribedCowled","GLOBAL",0)
GlobalLT("CowledWarning","GLOBAL",7)
THEN
RESPONSE #100
CreateCreatureObjectDoor("COWENF2",LastTrigger,0,0,0) // Cowled Enforcer
SetGlobalTimer("SpellsBad","GLOBAL",ONE_HOUR)
END

IF
SpellCast([PC],0)
Global("BribedCowled","GLOBAL",0)
GlobalTimerNotExpired("SpellsBad","GLOBAL")
THEN
RESPONSE #100
Wait(1)
END[/codebox]

The difference between the two is "ActionOverride(Player1,DisplayString(Myself,338342))"

I'm not entirely sure what that line does. I'd have thought it would just display a string, but maybe it does something terrible. Try putting what I have in place of what you've got, and see if that makes a difference.

Edited by Arkenor, 30 November 2009 - 12:23 PM.

Arkenor Oakshadow
Ark's Ark Whois
Meddling in the affairs of modders. Modding in the affairs of genie.

#6 Vandervecken

Vandervecken
  • Member
  • 176 posts

Posted 30 November 2009 - 12:30 PM

[quote name='Arkenor' post='469745' date='Nov 30 2009, 12:22 PM']OK, your ar1000.bcs says:

[codebox]IF
SpellCast([PC],0)
!GlobalTimerNotExpired("SpellsBad","GLOBAL")
Global("BribedCowled","GLOBAL",0)
GlobalLT("CowledWarning","GLOBAL",7)
THEN
RESPONSE #100
ActionOverride(Player1,DisplayString(Myself,338342))
CreateCreatureObjectDoor("COWENF2",LastTrigger,0,0,0)
SetGlobalTimer("SpellsBad","GLOBAL",ONE_HOUR)
END

IF
SpellCast([PC],0)
Global("BribedCowled","GLOBAL",0)
GlobalTimerNotExpired("SpellsBad","GLOBAL")
THEN
RESPONSE #100
ActionOverride(Player1,DisplayString(Myself,338343))
Wait(1)
END
[/codebox]

Whereas mine says:

[codebox]IF
SpellCast([PC],0)
!GlobalTimerNotExpired("SpellsBad","GLOBAL")
Global("BribedCowled","GLOBAL",0)
GlobalLT("CowledWarning","GLOBAL",7)
THEN
RESPONSE #100
CreateCreatureObjectDoor("COWENF2",LastTrigger,0,0,0) // Cowled Enforcer
SetGlobalTimer("SpellsBad","GLOBAL",ONE_HOUR)
END

IF
SpellCast([PC],0)
Global("BribedCowled","GLOBAL",0)
GlobalTimerNotExpired("SpellsBad","GLOBAL")
THEN
RESPONSE #100
Wait(1)
END[/codebox]

The difference between the two is "ActionOverride(Player1,DisplayString(Myself,338342))"

I'm not entirely sure what that line does. I'd have thought it would just display a string, but maybe it does something terrible. Try putting what I have in place of what you've got, and see if that makes a difference.[/quote]

Oh, sorry.
That is something from a previous problem, where we ran a stutter test. There is a line attached to every single if/then statement, that tells me when one has been triggered. I keep this set of BAFs so that if I have a major stutter issue, I can see which script is causing it. I just gave you AR1000 from that set of BAFs. In my real game, none of those DisplayString lines exist.
Ignore all those lines.

#7 Arkenor

Arkenor
  • Member
  • 255 posts

Posted 30 November 2009 - 12:35 PM

The BCS from the game that's actually crashing would be a lot more use. Or did that BAF have exactly the same mods installed? If so, then I'm stumped. Those were the only SpellCast references in it.

There could be something bizarre hiding on a creature script in the zone, I guess. Not sure what else could trigger such a strange situation in only a single zone.

Edited by Arkenor, 30 November 2009 - 12:44 PM.

Arkenor Oakshadow
Ark's Ark Whois
Meddling in the affairs of modders. Modding in the affairs of genie.

#8 Creepin

Creepin
  • Administrator
  • 1676 posts

Posted 30 November 2009 - 01:26 PM

Obviously it is either script or spell based. It's hard to believe that some mod went as far as altering all spells to having this effect if cast in ar1000 so you're better off searching scripts. Check with any tool what (if any) scripts are assigned to your chars on other levels than "override" (scripts you've assigned to your chars in game goes there iirc). There should be at least dplayer3.bcs, perhaps others if some mod cared enough. Also it might worth a shot to check baldur.bcs, which is run constantly through the game. It's huge but you could Ctrl-F ar1000 therein. That's all that comes to my mind in regard of script, hope that helps.

The Old Gold - v0.2 WIP (mod for BGT/BWP/BWS)


#9 Miloch

Miloch

    Barbarian

  • Modder
  • 6573 posts

Posted 30 November 2009 - 01:43 PM

Does it happen with the AI lantern off? If so, that should rule out character scripts.

Infinity Engine Contributions
Aurora * BG1 NPC * BG1 Fixpack * Haiass * Infinity Animations * Level 1 NPCs * P5Tweaks
PnP Free Action * Thrown Hammers * Unique Containers * BG:EE * BGII:EE * IWD:EE
================================================================
Player & Modder Resources
BAM Batcher * Creature Lister * Creature Checker * Creature Fixer * Tutu/BGT Area Map & List * Tutu Mod List
================================================================
"Infinity turns out to be the opposite of what people say it is. It is not 'that which has nothing beyond itself' that is infinite, but 'that which always has something beyond itself'." -Aristotle


#10 Creepin

Creepin
  • Administrator
  • 1676 posts

Posted 30 November 2009 - 01:52 PM

Does it happen with the AI lantern off? If so, that should rule out character scripts.

I might be mistaken but I'm rather sure that "AI lantern" turns off only override level script. Remember Charlotte NPC in old versions of SoS, and how much complain there were about her being suicidal even when "AI lantern" was off?

Edited by Creepin, 30 November 2009 - 02:40 PM.

The Old Gold - v0.2 WIP (mod for BGT/BWP/BWS)


#11 Wisp

Wisp
  • Modder
  • 1353 posts

Posted 30 November 2009 - 02:49 PM

The stutter debugger should be effective at identifying the script, if it is a script that is causing this. Just look at what scripts are triggering when your guys start running for their lives.

#12 Vandervecken

Vandervecken
  • Member
  • 176 posts

Posted 01 December 2009 - 01:04 AM

The stutter debugger should be effective at identifying the script, if it is a script that is causing this. Just look at what scripts are triggering when your guys start running for their lives.


When I put all the stutter scripts in, this doesn't happen.
When I take them out, it does.
I looked again at AR1000, but it has no SpellCast effects other than the cowled wizard ones above.
Also, it doesn't happen with Cleric casting.
I have no idea what's going on.

#13 Arkenor

Arkenor
  • Member
  • 255 posts

Posted 01 December 2009 - 01:08 AM

The stutter debugger should be effective at identifying the script, if it is a script that is causing this. Just look at what scripts are triggering when your guys start running for their lives.


When I put all the stutter scripts in, this doesn't happen.
When I take them out, it does.
I looked again at AR1000, but it has no SpellCast effects other than the cowled wizard ones above.
Also, it doesn't happen with Cleric casting.
I have no idea what's going on.


If the stutter scripts are truly identical to your other ones, with the exception of the string displaying, then that makes absolutely no sense to me at all. You are completely certain that the stutter scripts were made from this exact same modded install?

Edited by Arkenor, 01 December 2009 - 01:09 AM.

Arkenor Oakshadow
Ark's Ark Whois
Meddling in the affairs of modders. Modding in the affairs of genie.

#14 Wisp

Wisp
  • Modder
  • 1353 posts

Posted 01 December 2009 - 05:44 AM

When I put all the stutter scripts in, this doesn't happen.
When I take them out, it does.
I looked again at AR1000, but it has no SpellCast effects other than the cowled wizard ones above.
Also, it doesn't happen with Cleric casting.
I have no idea what's going on.

Then it is a script that is causing it and you are overwriting it by using your other set of files. If you want to identify the script, you need to actually install the stutter debugger. Copying over scripts is no way of debugging stutter or anything else. Don't do that.

#15 Vandervecken

Vandervecken
  • Member
  • 176 posts

Posted 01 December 2009 - 08:10 AM

When I put all the stutter scripts in, this doesn't happen.
When I take them out, it does.
I looked again at AR1000, but it has no SpellCast effects other than the cowled wizard ones above.
Also, it doesn't happen with Cleric casting.
I have no idea what's going on.

Then it is a script that is causing it and you are overwriting it by using your other set of files. If you want to identify the script, you need to actually install the stutter debugger. Copying over scripts is no way of debugging stutter or anything else. Don't do that.


I found the offending script piece:
IF
Global("CbAngryVillagersRevolt","GLOBAL",4)
OR(17)
Exists("CBAVRCWa")
Exists("CBAVRCWb")
Exists("CBAVRCWc")
Exists("CBAVRVLa")
Exists("CBAVRVLb")
Exists("CBAVRVLc")
Exists("CBAVRVLd")
Exists("CBAVRVLe")
Exists("CBAVRVLf")
Exists("CBAVRSLa")
Exists("CBAVRSLb")
Exists("CBAVRSLc")
Exists("CBAVRSLd")
Exists("CBAVRSLe")
Exists("CBAVRSLf")
Exists("CBAVRSLg")
Exists("m05pcspy")
THEN
RESPONSE #100
ActionOverride(Player1,DisplayString(Myself,338339))
ActionOverride(LastTrigger,EscapeAreaDestroy(90))
Continue()
END

in AR1000.
It runs constantly, even though AFAIK I killed everyone involved in the villager revolt.
Set the variable in it to 5, and the problem goes away.
What the hell?

#16 Arkenor

Arkenor
  • Member
  • 255 posts

Posted 01 December 2009 - 08:43 AM

When I put all the stutter scripts in, this doesn't happen.
When I take them out, it does.
I looked again at AR1000, but it has no SpellCast effects other than the cowled wizard ones above.
Also, it doesn't happen with Cleric casting.
I have no idea what's going on.

Then it is a script that is causing it and you are overwriting it by using your other set of files. If you want to identify the script, you need to actually install the stutter debugger. Copying over scripts is no way of debugging stutter or anything else. Don't do that.


I found the offending script piece:
IF
Global("CbAngryVillagersRevolt","GLOBAL",4)
OR(17)
Exists("CBAVRCWa")
Exists("CBAVRCWb")
Exists("CBAVRCWc")
Exists("CBAVRVLa")
Exists("CBAVRVLb")
Exists("CBAVRVLc")
Exists("CBAVRVLd")
Exists("CBAVRVLe")
Exists("CBAVRVLf")
Exists("CBAVRSLa")
Exists("CBAVRSLb")
Exists("CBAVRSLc")
Exists("CBAVRSLd")
Exists("CBAVRSLe")
Exists("CBAVRSLf")
Exists("CBAVRSLg")
Exists("m05pcspy")
THEN
RESPONSE #100
ActionOverride(Player1,DisplayString(Myself,338339))
ActionOverride(LastTrigger,EscapeAreaDestroy(90))
Continue()
END

in AR1000.
It runs constantly, even though AFAIK I killed everyone involved in the villager revolt.
Set the variable in it to 5, and the problem goes away.
What the hell?


If I'm not mistaken, I detect the hand of Mr Ceeb Ison in all of this. Presumably that EscapeAreaDestroy is supposed to be acting on leftover Angry Villagers rather than you though.

However, I notice that is from your stutter detecting script version that you said doesn't suffer from the bug anyway rather than the one you're using in game that does suffer from the bug. Would you please stop using that, and let us see the actual one in your actual game that is causing the problem.

Edit: So when it causes you to destroy yourself for casting a spell, it is because it has decided that the character that just cast a spell is now the LastTrigger. I don't know enough about triggers, and specifically, how the LastTrigger is decided, to be able to debug this properly. The Spellcast references take place after this part of the script anyway, so I'm not sure how they're interacting.

Edited by Arkenor, 01 December 2009 - 09:04 AM.

Arkenor Oakshadow
Ark's Ark Whois
Meddling in the affairs of modders. Modding in the affairs of genie.

#17 Vandervecken

Vandervecken
  • Member
  • 176 posts

Posted 01 December 2009 - 12:22 PM

When I put all the stutter scripts in, this doesn't happen.
When I take them out, it does.
I looked again at AR1000, but it has no SpellCast effects other than the cowled wizard ones above.
Also, it doesn't happen with Cleric casting.
I have no idea what's going on.

Then it is a script that is causing it and you are overwriting it by using your other set of files. If you want to identify the script, you need to actually install the stutter debugger. Copying over scripts is no way of debugging stutter or anything else. Don't do that.


I found the offending script piece:
IF
Global("CbAngryVillagersRevolt","GLOBAL",4)
OR(17)
Exists("CBAVRCWa")
Exists("CBAVRCWb")
Exists("CBAVRCWc")
Exists("CBAVRVLa")
Exists("CBAVRVLb")
Exists("CBAVRVLc")
Exists("CBAVRVLd")
Exists("CBAVRVLe")
Exists("CBAVRVLf")
Exists("CBAVRSLa")
Exists("CBAVRSLb")
Exists("CBAVRSLc")
Exists("CBAVRSLd")
Exists("CBAVRSLe")
Exists("CBAVRSLf")
Exists("CBAVRSLg")
Exists("m05pcspy")
THEN
RESPONSE #100
ActionOverride(Player1,DisplayString(Myself,338339))
ActionOverride(LastTrigger,EscapeAreaDestroy(90))
Continue()
END

in AR1000.
It runs constantly, even though AFAIK I killed everyone involved in the villager revolt.
Set the variable in it to 5, and the problem goes away.
What the hell?


If I'm not mistaken, I detect the hand of Mr Ceeb Ison in all of this. Presumably that EscapeAreaDestroy is supposed to be acting on leftover Angry Villagers rather than you though.

However, I notice that is from your stutter detecting script version that you said doesn't suffer from the bug anyway rather than the one you're using in game that does suffer from the bug. Would you please stop using that, and let us see the actual one in your actual game that is causing the problem.

Edit: So when it causes you to destroy yourself for casting a spell, it is because it has decided that the character that just cast a spell is now the LastTrigger. I don't know enough about triggers, and specifically, how the LastTrigger is decided, to be able to debug this properly. The Spellcast references take place after this part of the script anyway, so I'm not sure how they're interacting.


I had made a mistake in copying the bcs files before, when I said it goes away with the stutter test. It does not. What I had done was copy the decompiled bcses, not the compiled ones, so I was wrong to make that assertion.

When using the stutter tested properly compiled BCSes, this section is constantly running. When I set the variable to 5, this section stops running.
While the section is running, spellcasting makes you run away. When the section stops running, the effect goes away.

So I'm fairly sure it's case closed on what section is causing the effect.
Now why it's being confused in this way, I don't know.
I tried killing everyone I could find in AR1000, but apparently, whoever survived the massacre still exists, because the IF clause is being fulfilled.

#18 Arkenor

Arkenor
  • Member
  • 255 posts

Posted 01 December 2009 - 12:49 PM

It's an OR statment, so as long as Global("CbAngryVillagersRevolt","GLOBAL",4) is true, you're going to get the THEN even if you have killed them all. As you say, setting it to something other than 4 fixes your problem. Whatever was supposed to change it from 4 apparently either failed, or doesn't exist. It might have been intended for 4 to be its end state, not expecting it to start bumping off player characters. (Be a bit sloppy if that is so, as it leads to going through that code unnecessarily each time through.) Might have been nobbled by another mod, or could just be awful coding. We need someone who understands how LastTrigger works to take a look at this. From what's happening I'm guessing that it expects the LastTrigger to be the poor soul who EXISTS, but in the absence of any of them existing the later SpellCast sections are making the caster of the spell to be the LastTrigger, but not knowing enough about Triggers prevents me from being sure.

I assume the SpellCast portions of the script are after the ActionOverride(LastTrigger,EscapeAreaDestroy(90)) portion in your script. It is in mine at any rate, but for all I know LastTrigger is preserved between iterations.

I've just looked through all the scripts and dialgoues, and I don't see anything that sets CbAngryVillagersRevolt to anything beyond 4, so that does seem to be it's end state. I think all we need is to insert a line somewhere that sets it to 5 when the quest is all done and dusted, and the NPCs cleaned up.

I'm not even sure why that chunk in the area code is needed anyway, as all the listed NPCs (apart from m05pcspy, and he has his own cleanup code) have this in their creature scripts anyway:

[codebox]IF
Global("CbAngryVillagersRevolt","GLOBAL",4)
THEN
RESPONSE #100
EscapeArea()
END[/codebox]

So *I think* you could just remove that entire chunk of added area code with no ill effects. I wonder if it is left over from a time before it was added to the creatures override scripts.

Not quite sure what m05pcspy is all about anyway. He seems to be all about removing all the items you'd normally steal from Drizzt, but he's not Malchor Harpell. No name, and completely invisible. Expects to die in AR2800. He doesn't even seem to be from Check the Bodies, so I'm not sure how he's gotten himself injected into the same bits of script.

Edited by Arkenor, 01 December 2009 - 01:41 PM.

Arkenor Oakshadow
Ark's Ark Whois
Meddling in the affairs of modders. Modding in the affairs of genie.

#19 Miloch

Miloch

    Barbarian

  • Modder
  • 6573 posts

Posted 01 December 2009 - 01:48 PM

I think all we need is to insert a line somewhere that sets it to 5 when the quest is all done and dusted, and the NPCs cleaned up.

Well yes... I'm not sure the intention of this script, but the problem is it doesn't set the variable it's checking to something else, so it will loop indefinitely. So it should do something like:

IF
Global("CbAngryVillagersRevolt","GLOBAL",4)
OR(17)
Exists("CBAVRCWa")
Exists("CBAVRCWb")
Exists("CBAVRCWc")
Exists("CBAVRVLa")
Exists("CBAVRVLb")
Exists("CBAVRVLc")
Exists("CBAVRVLd")
Exists("CBAVRVLe")
Exists("CBAVRVLf")
Exists("CBAVRSLa")
Exists("CBAVRSLb")
Exists("CBAVRSLc")
Exists("CBAVRSLd")
Exists("CBAVRSLe")
Exists("CBAVRSLf")
Exists("CBAVRSLg")
Exists("m05pcspy")
THEN
RESPONSE #100
SetGlobal("CbAngryVillagersRevolt","GLOBAL",5)
ActionOverride(Player1,DisplayString(Myself,338339))
ActionOverride(LastTrigger,EscapeAreaDestroy(90))
Continue()
END

Continue() is evil too, unless it's absolutely necessary (it usually isn't). In this case, it probably causes the entire script to loop rather than just the block and preceding portions. And it probably needs a check to make sure it doesn't fire for an NPC if the variable is 4 and none of those creatures exists.

What is this from, Check the Bodies or something?

Infinity Engine Contributions
Aurora * BG1 NPC * BG1 Fixpack * Haiass * Infinity Animations * Level 1 NPCs * P5Tweaks
PnP Free Action * Thrown Hammers * Unique Containers * BG:EE * BGII:EE * IWD:EE
================================================================
Player & Modder Resources
BAM Batcher * Creature Lister * Creature Checker * Creature Fixer * Tutu/BGT Area Map & List * Tutu Mod List
================================================================
"Infinity turns out to be the opposite of what people say it is. It is not 'that which has nothing beyond itself' that is infinite, but 'that which always has something beyond itself'." -Aristotle


#20 Arkenor

Arkenor
  • Member
  • 255 posts

Posted 01 December 2009 - 01:50 PM

Most of it is from Check the Bodies. I've not figured out where m05pcspy is coming from.

Given that the creatures have cleanup in their own scripts though, might just be tidier to remove the entire chunk from ar1000.bcs

Edited by Arkenor, 01 December 2009 - 02:33 PM.

Arkenor Oakshadow
Ark's Ark Whois
Meddling in the affairs of modders. Modding in the affairs of genie.