100 lines
4.0 KiB
Plaintext
100 lines
4.0 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name: pgs_terr_claim
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Claim the selected territory for the player's
|
|
guild.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Samius Maximus
|
|
//:: Created On:
|
|
//:://////////////////////////////////////////////
|
|
#include "inc_gsystem"
|
|
#include "inc_gsystem_terr"
|
|
|
|
void main()
|
|
{
|
|
object oPlayer = GetPCSpeaker();
|
|
int iPlayerGuild = GetLocalInt (oPlayer, "Player_Guild_Number");
|
|
int iTerritory = GetLocalInt (oPlayer, "Territory_Number");
|
|
int iGuildTerritory = GetTerritoryGuildNumber (iTerritory);
|
|
|
|
if (iGuildTerritory == 0) /*Check if territory is claimed.*/
|
|
{
|
|
string sArea = GetName (GetArea (GetObjectByTag ("Territory_Flag_" +
|
|
IntToString (iTerritory))));
|
|
|
|
//--------------------------------------------
|
|
//Claim the territory for the player's guild.
|
|
//--------------------------------------------
|
|
SetTerritoryGuildNumber (iTerritory, iPlayerGuild);
|
|
SetTerritoryName (iTerritory, GetModuleGuildName (iPlayerGuild) + "'s " +
|
|
"Territory");
|
|
ApplyEffectToObject (DURATION_TYPE_INSTANT, EffectVisualEffect
|
|
(VFX_IMP_DIVINE_STRIKE_HOLY), OBJECT_SELF);
|
|
SendPGSGuildNotice (iPlayerGuild, "A new territory, located in " +
|
|
sArea + ", has been claimed!");
|
|
SetModuleRecentPGSActivity (GetModuleGuildName (iPlayerGuild) + " " +
|
|
"claimed a territory in " + sArea + ".");
|
|
}
|
|
else
|
|
{
|
|
object oArea = GetArea (oPlayer);
|
|
object oLoop = GetFirstPC();
|
|
|
|
//--------------------------------------------
|
|
//Territory is claimed - check for members.
|
|
//--------------------------------------------
|
|
while (GetIsObjectValid (oLoop))
|
|
{
|
|
//--------------------------------------------
|
|
//Check for nearby guild members for this terr.
|
|
//--------------------------------------------
|
|
if ((GetArea (oLoop) == oArea) && (GetLocalInt (oLoop, "Player_Guild_Number") == iGuildTerritory))
|
|
{
|
|
SendMessageToPC (oPlayer, "This territory cannot be claimed, " +
|
|
"as there are guild members for this territory nearby.");
|
|
return;
|
|
}
|
|
|
|
oLoop = GetNextPC();
|
|
}
|
|
|
|
int iTerrCount = GetGuildTerritoryCount (iPlayerGuild);
|
|
//--------------------------------------------
|
|
//Check if territory limit has been reached.
|
|
//--------------------------------------------
|
|
if (iTerrCount >= PGS_GUILD_TERRITORY_LIMIT)
|
|
{
|
|
SendMessageToPC (oPlayer, "Your have reached the limit for " +
|
|
"number of claimable territories per guild (" + IntToString
|
|
(PGS_GUILD_TERRITORY_LIMIT) + ").");
|
|
return;
|
|
}
|
|
|
|
string sArea = GetName (GetArea (GetObjectByTag ("Territory_Flag_" +
|
|
IntToString (iTerritory))));
|
|
|
|
//--------------------------------------------
|
|
//No members found - claim territory.
|
|
//--------------------------------------------
|
|
SetTerritoryGuildNumber (iTerritory, iPlayerGuild);
|
|
SetTerritoryName (iTerritory, GetModuleGuildName (iPlayerGuild) + "'s " +
|
|
"Territory");
|
|
ApplyEffectToObject (DURATION_TYPE_INSTANT, EffectVisualEffect
|
|
(VFX_IMP_DIVINE_STRIKE_HOLY), OBJECT_SELF);
|
|
SendPGSGuildNotice (iPlayerGuild, "A new territory, located in " +
|
|
sArea + ", has been claimed!");
|
|
SetGuildTerritoryCount (iPlayerGuild, iTerrCount + 1);
|
|
SetModuleRecentPGSActivity (GetModuleGuildName (iPlayerGuild) + " " +
|
|
"claimed a territory in " + sArea + ".");
|
|
}
|
|
|
|
//------------------------------------------------
|
|
//Check if we need to update max territory number.
|
|
//------------------------------------------------
|
|
if (iTerritory > GetMaxTerritoryNumber())
|
|
SetMaxTerritoryNumber (iTerritory);
|
|
}
|