391 lines
7.7 KiB
Plaintext
391 lines
7.7 KiB
Plaintext
//Script made by Drakaden
|
|
|
|
//iAreaZoneType1 = 1; Rural zone
|
|
//iAreaZoneType1 = 2; Cave zone
|
|
//iAreaZoneType1 = 3; Crypt zone
|
|
//iAreaZoneType1 = 4; Rest zone
|
|
//iAreaZoneType1 = 5; Reward zone
|
|
//iAreaZoneType1 = 6; Frozen wastes zone
|
|
|
|
void main()
|
|
{
|
|
|
|
object oPC = GetEnteringObject();
|
|
object oPCCheck1;
|
|
object oNPC = OBJECT_SELF;
|
|
object oOrb;
|
|
object oOrb2;
|
|
object oArea;
|
|
object oAreaChoose1;
|
|
object oDestination1;
|
|
|
|
int iRoll1;
|
|
int iRoll2;
|
|
int iAreaZoneType1;
|
|
int iAreaTag1;
|
|
int iNumber1;
|
|
int iTagCollide1;
|
|
|
|
string sAreaTag1;
|
|
string sAreaZone1;
|
|
string sLocalAreaString1;
|
|
|
|
location lSpawnpoint1;
|
|
|
|
SetLocalString(oNPC, "RandomArea1", "");
|
|
iNumber1 = 0;
|
|
oAreaChoose1 = OBJECT_INVALID;
|
|
oArea = GetArea(oNPC);
|
|
sAreaTag1 = GetTag(oArea);
|
|
|
|
if (GetLocalInt(oNPC, "RequirementMet1") >= 1)
|
|
{
|
|
FloatingTextStringOnCreature("You need to defeat " + IntToString(GetLocalInt(oNPC, "RequirementMet1")) + " more creatures before you may proceed.", oPC, TRUE);
|
|
return;
|
|
}
|
|
|
|
do
|
|
{
|
|
|
|
iTagCollide1 = 0;
|
|
GetLocalString(oNPC, "RandomArea1") == "";
|
|
|
|
if (!GetIsObjectValid(oAreaChoose1) ||
|
|
GetLocalString(oNPC, "RandomArea1") == "" ||
|
|
GetLocalString(oNPC, "RandomArea1") == sAreaTag1)
|
|
{
|
|
|
|
iAreaTag1 = FindSubString(sAreaTag1, "quest1_office1_");
|
|
|
|
if (iAreaTag1 >= 0)
|
|
{
|
|
iAreaZoneType1 = 1;
|
|
}
|
|
else
|
|
{
|
|
|
|
iAreaTag1 = FindSubString(sAreaTag1, "quest1_office2_");
|
|
|
|
if (iAreaTag1 >= 0)
|
|
{
|
|
iAreaZoneType1 = 2;
|
|
}
|
|
else
|
|
{
|
|
|
|
iAreaTag1 = FindSubString(sAreaTag1, "quest1_office1_");
|
|
|
|
if (iAreaTag1 >= 0)
|
|
{
|
|
iAreaZoneType1 = 3;
|
|
}
|
|
else
|
|
{
|
|
|
|
iAreaTag1 = FindSubString(sAreaTag1, "quest1_rest1_");
|
|
|
|
if (iAreaTag1 >= 0)
|
|
{
|
|
iAreaZoneType1 = 4;
|
|
}
|
|
else
|
|
{
|
|
|
|
iAreaTag1 = FindSubString(sAreaTag1, "quest1_office2_");
|
|
|
|
if (iAreaTag1 >= 0)
|
|
{
|
|
iAreaZoneType1 = 6;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iRoll2 = Random(10) + 1; //Random number for instances, make it higher if it exceed the wrote number.
|
|
|
|
if (iAreaZoneType1 == 1)
|
|
{
|
|
iRoll1 = Random(6) + 1;
|
|
|
|
switch (iRoll1)
|
|
{
|
|
case 1:
|
|
sAreaZone1 = "quest1_office1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 2:
|
|
sAreaZone1 = "quest1_office2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 3:
|
|
sAreaZone1 = "quest1_rest2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 4:
|
|
sAreaZone1 = "quest1_rest1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 5:
|
|
sAreaZone1 = "quest1_rew1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 6:
|
|
sAreaZone1 = "quest1_rew2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
if (iAreaZoneType1 == 2)
|
|
{
|
|
iRoll1 = Random(6) + 1;
|
|
|
|
switch (iRoll1)
|
|
{
|
|
case 1:
|
|
sAreaZone1 = "quest1_office1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 2:
|
|
sAreaZone1 = "quest1_office2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 3:
|
|
sAreaZone1 = "quest1_rest2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 4:
|
|
sAreaZone1 = "quest1_rest1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 5:
|
|
sAreaZone1 = "quest1_rew1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 6:
|
|
sAreaZone1 = "quest1_rew2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
if (iAreaZoneType1 == 3)
|
|
{
|
|
iRoll1 = Random(6) + 1;
|
|
|
|
switch (iRoll1)
|
|
{
|
|
case 1:
|
|
sAreaZone1 = "quest1_office1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 2:
|
|
sAreaZone1 = "quest1_office2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 3:
|
|
sAreaZone1 = "quest1_rest2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 4:
|
|
sAreaZone1 = "quest1_rest1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 5:
|
|
sAreaZone1 = "quest1_rew1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 6:
|
|
sAreaZone1 = "quest1_rew2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
if (iAreaZoneType1 == 4)
|
|
{
|
|
iRoll1 = Random(5) + 1;
|
|
|
|
switch (iRoll1)
|
|
{
|
|
case 1:
|
|
sAreaZone1 = "quest1_office1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 2:
|
|
sAreaZone1 = "quest1_office2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 3:
|
|
sAreaZone1 = "quest1_rest2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 4:
|
|
sAreaZone1 = "quest1_rest1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 5:
|
|
sAreaZone1 = "quest1_rew1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 6:
|
|
sAreaZone1 = "quest1_rew2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
/*if (iAreaZoneType1 == 5) //Not used, reward zone
|
|
{
|
|
iRoll1 = Random(1) + 1;
|
|
|
|
switch (iRoll1)
|
|
{
|
|
case 1:
|
|
break;
|
|
}
|
|
|
|
}*/
|
|
|
|
if (iAreaZoneType1 == 6)
|
|
{
|
|
iRoll1 = Random(5) + 1;
|
|
|
|
switch (iRoll1)
|
|
{
|
|
case 1:
|
|
sAreaZone1 = "quest1_office1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 2:
|
|
sAreaZone1 = "quest1_office2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 3:
|
|
sAreaZone1 = "quest1_rest2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 4:
|
|
sAreaZone1 = "quest1_rest1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 5:
|
|
sAreaZone1 = "quest1_rew1_" + IntToString(iRoll2) + "";
|
|
break;
|
|
case 6:
|
|
sAreaZone1 = "quest1_rew2_" + IntToString(iRoll2) + "";
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
SetLocalString(oNPC, "RandomArea1", sAreaZone1);
|
|
sLocalAreaString1 = GetLocalString(oNPC, "RandomArea1");
|
|
oAreaChoose1 = GetObjectByTag(sLocalAreaString1);
|
|
|
|
oPCCheck1 = GetFirstPC();
|
|
|
|
while (GetIsObjectValid(oPCCheck1))
|
|
{
|
|
|
|
oOrb = GetItemPossessedBy(oPCCheck1, "database");
|
|
oOrb2 = GetItemPossessedBy(oPC, "database");
|
|
|
|
if (GetTag(GetArea(oPCCheck1)) == GetTag(oAreaChoose1) &&
|
|
GetLocalInt(oOrb, "Quest1Tag1") != GetLocalInt(oOrb2, "Quest1Tag1") &&
|
|
oPCCheck1 != oPC)
|
|
{
|
|
iTagCollide1 = 1;
|
|
}
|
|
|
|
oPCCheck1 = GetNextPC();
|
|
}
|
|
|
|
}while(iTagCollide1 == 1 || !GetIsObjectValid(oAreaChoose1) || GetLocalString(oNPC, "RandomArea1") == sAreaTag1);
|
|
|
|
oOrb = GetItemPossessedBy(GetFactionLeader(oPC), "database");
|
|
oOrb2 = GetItemPossessedBy(oPC, "database");
|
|
|
|
if (GetArea(GetFactionLeader(oPC)) != GetArea(oPC) &&
|
|
GetFactionLeader(oPC) != oPC &&
|
|
GetLocalInt(oOrb, "Quest1Tag1") == GetLocalInt(oOrb2, "Quest1Tag1") &&
|
|
FindSubString(GetTag(GetArea(GetFactionLeader(oPC))), "quest1") >= 0)
|
|
{
|
|
oAreaChoose1 = GetObjectByTag(GetTag(GetArea(GetFactionLeader(oPC))));
|
|
}
|
|
|
|
if (GetFactionLeader(oPC) != oPC)
|
|
{
|
|
|
|
oAreaChoose1 = GetObjectByTag(GetTag(GetArea(GetFactionLeader(oPC))));
|
|
|
|
if (FindSubString(GetTag(GetArea(GetFactionLeader(oPC))), "quest1") < 0 ||
|
|
GetArea(GetFactionLeader(oPC)) == GetArea(oPC) ||
|
|
GetLocalInt(oOrb, "Quest1Tag1") != GetLocalInt(oOrb2, "Quest1Tag1"))
|
|
{
|
|
|
|
FloatingTextStringOnCreature("Your party leader isn't ahead of you yet.", oPC, FALSE);
|
|
return;
|
|
}
|
|
|
|
if (FindSubString(GetTag(GetArea(GetFactionLeader(oPC))), "quest1") >= 0 &&
|
|
GetLocalInt(oOrb, "Quest1Tag1") == GetLocalInt(oOrb2, "Quest1Tag1"))
|
|
{
|
|
|
|
oDestination1 = GetFirstObjectInArea(oAreaChoose1);
|
|
|
|
while (GetIsObjectValid(oDestination1) &&
|
|
iNumber1 == 0)
|
|
{
|
|
|
|
if (GetTag(oDestination1) == "quest1_spawnpoint1")
|
|
{
|
|
AssignCommand(oPC, JumpToObject(oDestination1));
|
|
iNumber1 = 1;
|
|
}
|
|
|
|
if (iNumber1 != 1)
|
|
{
|
|
oDestination1 = GetNextObjectInArea(oAreaChoose1);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (GetFactionLeader(oPC) == oPC)
|
|
{
|
|
|
|
oDestination1 = GetFirstObjectInArea(oAreaChoose1);
|
|
|
|
while (GetIsObjectValid(oDestination1) &&
|
|
iNumber1 == 0)
|
|
{
|
|
|
|
if (GetTag(oDestination1) == "quest1_spawnpoint1")
|
|
{
|
|
AssignCommand(oPC, JumpToObject(oDestination1));
|
|
|
|
iAreaTag1 = FindSubString(GetTag(oAreaChoose1), "quest1_rest1_");
|
|
|
|
if (iAreaTag1 >= 0)
|
|
{
|
|
SetLocalInt(GetNearestObjectByTag("quest1_nextzone1", oDestination1), "RequirementMet1", 0);
|
|
DelayCommand(10.0, FloatingTextStringOnCreature("You will need to defeat " + IntToString(GetLocalInt(GetNearestObjectByTag("quest1_nextzone1", oDestination1), "RequirementMet1")) + " creatures in this area.", oPC, TRUE));
|
|
}
|
|
else
|
|
{
|
|
|
|
iAreaTag1 = FindSubString(GetTag(oAreaChoose1), "quest1_rew1_");
|
|
|
|
if (iAreaTag1 >= 0)
|
|
{
|
|
SetLocalInt(GetNearestObjectByTag("quest1_nextzone1", oDestination1), "RequirementMet1", 0);
|
|
DelayCommand(10.0, FloatingTextStringOnCreature("You will need to defeat " + IntToString(GetLocalInt(GetNearestObjectByTag("quest1_nextzone1", oDestination1), "RequirementMet1")) + " creatures in this area.", oPC, TRUE));
|
|
}
|
|
else
|
|
{
|
|
SetLocalInt(GetNearestObjectByTag("quest1_nextzone1", oDestination1), "RequirementMet1", Random(8) + 3);
|
|
DelayCommand(10.0, FloatingTextStringOnCreature("You will need to defeat " + IntToString(GetLocalInt(GetNearestObjectByTag("quest1_nextzone1", oDestination1), "RequirementMet1")) + " creatures in this area.", oPC, TRUE));
|
|
}
|
|
|
|
}
|
|
iNumber1 = 1;
|
|
}
|
|
|
|
if (iNumber1 != 1)
|
|
{
|
|
oDestination1 = GetNextObjectInArea(oAreaChoose1);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|