Initial Commit

Initial Commit.
This commit is contained in:
Jaysyn904
2025-09-14 15:40:46 -04:00
parent 7083b33d71
commit 1eefc84201
19230 changed files with 11539227 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
/*
Rune Puzzle
Jirtan, Inc.
The rune puzzle script is used on the onused event of "rune" palceables.
The palceables' tags should be as follows...
rune1_keyresref
rune2_keyresref
rune3_keyresref
rune4_keyresref
rune5_keyresref
rune6_keyresref
etc
"keyresref" is the resref for the key you want to be created.
The number is the order in which it goes, so putting them in a
row of 1, 2, 3, 4, 5, 6, etc, would be way too easy. Mix them up a bit.
Set the integer "LAST_RUNE" equal to 1 on the last rune. It would look like:
"LAST_RUNE" int 1
in the toolest, in the last rune's advanced tab, in the variables window.
The order of them is stored on the PC as temporary integer.
If the PC doesn't follow the order, it is reset.
*/
void main()
{
object oRune = OBJECT_SELF;
object oPC = GetLastUsedBy();
string sRuneTag = GetTag(oRune);
string sKeyResref = GetStringRight(sRuneTag, GetStringLength(sRuneTag) - 6);
int nNumber = StringToInt(GetSubString(sRuneTag, 4, 1));
int nLastRuneUsed = GetLocalInt(oPC, "RUNE_" + sKeyResref);
int nIsFinalRune = GetLocalInt(oRune, "LAST_RUNE");
//Debugger - Safegaurd
if ((oRune == OBJECT_INVALID) || (oPC == OBJECT_INVALID) || (nNumber == 0))
{
SpeakString("Error! Rune tag is set incorrectly, or Rune or PC do not exist.");
return;
}
//The correct rune was used...
else if (nLastRuneUsed + 1 == nNumber)
{
effect eComplete = EffectVisualEffect(VFX_DUR_GLOW_YELLOW);
effect eCorrect = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_YELLOW);
//Completed the puzzle...
if (nIsFinalRune != 0)
{
DeleteLocalInt(oPC, "RUNE_" + sKeyResref);
CreateItemOnObject(sKeyResref, oPC);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eComplete, oRune, 2.0);
}
//Not done, but picked the right rune..
else
{
SetLocalInt(oPC, "RUNE_" + sKeyResref, nNumber);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCorrect, oRune, 2.0);
}
}
//The wrong rune was used...
else
{
effect eWrong = EffectVisualEffect(VFX_DUR_GLOW_GREEN);
effect ePenalize = EffectLinkEffects(EffectDamage(d3(), DAMAGE_TYPE_ACID, DAMAGE_POWER_PLUS_ONE), EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_ACID));
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eWrong, oRune, 2.0);
ApplyEffectToObject(DURATION_TYPE_INSTANT, ePenalize, oPC);
DeleteLocalInt(oPC, "RUNE_" + sKeyResref);
}
//: This is just for Debug purposes!
//SpeakString("Debug! Last Rune Used: " + IntToString(nLastRuneUsed) + ", Current Rune: " + IntToString(nNumber) + ", Key Resref: " + sKeyResref + ", Rune Tag: " + sRuneTag + ".");
//: Everything below is needed, however.
}