You were right. The TLK string ref was wrong but I fixed that but it's still doing the same thing.
I think it has to do with it firing while in conversation.
Haaa!!! IT WORKED!!
void main() {
int int1 = 245;
object oAtton = GetObjectByTag("atton", 0);
object oBaoDur = GetObjectByTag("baodur", 0);
object oDisciple = GetObjectByTag("disciple", 0);
object oMira = GetObjectByTag("mira", 0);
object oKreia = GetObjectByTag("kreia", 0);
object oVisas = GetObjectByTag("visasmarr", 0);
object oHand = GetObjectByTag("handmaiden", 0);
int int2 = 136379;
string string1 = "if_schematic";
if (((GetTag(OBJECT_SELF) == "atton")) && (GetIsInConversation(oAtton) == 0)) {
GrantFeat(int1, oAtton);
DelayCommand(1.5, DisplayMessageBox(int2, string1));
}
if (((GetTag(OBJECT_SELF) == "atton")) && (GetIsInConversation(oAtton) == 1)) {
DelayCommand(0.5, ExecuteScript("kj_grant_read", oAtton));
return;
}
if (((GetTag(OBJECT_SELF) == "baodur")) && (GetIsInConversation(oBaoDur) == 0)) {
GrantFeat(int1, oBaoDur);
DelayCommand(1.5, DisplayMessageBox(int2, string1));
}
if (((GetTag(OBJECT_SELF) == "baodur")) && (GetIsInConversation(oBaoDur) == 1)) {
DelayCommand(0.5, ExecuteScript("kj_grant_read", oBaoDur));
return;
}
if (((GetTag(OBJECT_SELF) == "disciple")) && (GetIsInConversation(oDisciple) == 0)) {
GrantFeat(int1, oDisciple);
DelayCommand(1.5, DisplayMessageBox(int2, string1));
}
if (((GetTag(OBJECT_SELF) == "disciple")) && (GetIsInConversation(oDisciple) == 1)) {
DelayCommand(0.5, ExecuteScript("kj_grant_read", oDisciple));
return;
}
if (((GetTag(OBJECT_SELF) == "mira")) && (GetIsInConversation(oMira) == 0)) {
GrantFeat(int1, oMira);
DelayCommand(1.5, DisplayMessageBox(int2, string1));
}
if (((GetTag(OBJECT_SELF) == "mira")) && (GetIsInConversation(oMira) == 1)) {
DelayCommand(0.5, ExecuteScript("kj_grant_read", oMira));
return;
}
if (((GetTag(OBJECT_SELF) == "kreia")) && (GetIsInConversation(oKreia) == 0)) {
GrantFeat(int1, oKreia);
DelayCommand(1.5, DisplayMessageBox(int2, string1));
}
if (((GetTag(OBJECT_SELF) == "kreia")) && (GetIsInConversation(oKreia) == 1)) {
DelayCommand(0.5, ExecuteScript("kj_grant_read", oKreia));
return;
}
if (((GetTag(OBJECT_SELF) == "visasmarr")) && (GetIsInConversation(oVisas) == 0)) {
GrantFeat(int1, oVisas);
DelayCommand(1.5, DisplayMessageBox(int2, string1));
}
if (((GetTag(OBJECT_SELF) == "visasmarr")) && (GetIsInConversation(oVisas) == 1)) {
DelayCommand(0.5, ExecuteScript("kj_grant_read", oVisas));
return;
}
if (((GetTag(OBJECT_SELF) == "handmaiden")) && (GetIsInConversation(oHand) == 0)) {
GrantFeat(int1, oHand);
DelayCommand(1.5, DisplayMessageBox(int2, string1));
}
if (((GetTag(OBJECT_SELF) == "handmaiden")) && (GetIsInConversation(oHand) == 1)) {
DelayCommand(0.5, ExecuteScript("kj_grant_read", oHand));
return;
}
}
EDIT: Never mind it doesn't work.