mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-07-31 00:15:54 -04:00
492 lines
12 KiB
Plaintext
492 lines
12 KiB
Plaintext
/**
|
|
* Copyright (c)2000-2002 Sony Online Entertainment Inc.
|
|
* All Rights Reserved
|
|
*
|
|
* Title: regions.scriptlib
|
|
* Description: Base library for spawn regions
|
|
* @author $Author:$
|
|
* @version $Revision:$
|
|
*/
|
|
|
|
/***** INCLUDES ********************************************************/
|
|
|
|
include library.gcw;
|
|
|
|
/***** CONSTANTS *******************************************************/
|
|
|
|
|
|
|
|
// GEOGRAPHICAL REGION DEFINITIONS [GEO]
|
|
const int GEO_DESERT = 0;
|
|
const int GEO_FOREST = 1;
|
|
const int GEO_JUNGLE = 2;
|
|
const int GEO_PLATEAU = 3;
|
|
const int GEO_OASIS = 4;
|
|
const int GEO_CANYON = 5;
|
|
const int GEO_LAKE = 6;
|
|
const int GEO_LAKESHORE = 7;
|
|
const int GEO_BEACH = 8;
|
|
const int GEO_OCEAN = 9;
|
|
const int GEO_UNDERWATER = 10;
|
|
const int GEO_RIVER = 11;
|
|
const int GEO_VOLCANO = 12;
|
|
const int GEO_SWAMP = 13;
|
|
const int GEO_PLAINS = 14;
|
|
const int GEO_PRAIRIE = 15;
|
|
const int GEO_MOUNTAINS = 16;
|
|
const int GEO_HILLS = 17;
|
|
const int GEO_GRASSLAND = 18;
|
|
const int GEO_WASTELAND = 19;
|
|
const int GEO_CITY = 20;
|
|
const int GEO_FICTIONAL = 21;
|
|
const int GEO_PATHFIND = 22;
|
|
const int GEO_DEFAULT = 23;
|
|
const int GEO_THEATER = 24;
|
|
const int GEO_OVERLOAD = 25;
|
|
const int GEO_MAX = 26; //must be last const + 1
|
|
|
|
// MISSION REGION DEFINITIONS [MISSION]
|
|
const int MISSION_NONE = 0;
|
|
const int MISSION_DESTROY = 1;
|
|
const int MISSION_OTHER = 2;
|
|
const int MISSION_TATOOINE_ANCHORHEAD = 3;
|
|
const int MISSION_TATOOINE_BESTINE = 4;
|
|
const int MISSION_TATOOINE_MOS_EISLEY = 5;
|
|
const int MISSION_TATOOINE_MOS_ENTHA = 6;
|
|
const int MISSION_TATOOINE_MOS_ESPA = 7;
|
|
const int MISSION_TATOOINE_MOS_TEIKE = 8;
|
|
const int MISSION_TATOOINE_WAYFAR = 9;
|
|
const int MISSION_NABOO_THEED =10;
|
|
const int MISSION_NABOO_DEEJA_PEAK =11;
|
|
const int MISSION_NABOO_KAADARA =12;
|
|
const int MISSION_NABOO_MOENIA =13;
|
|
const int MISSION_NABOO_KEREN =14;
|
|
const int MISSION_TATOOINE_BIB_1 =15;
|
|
const int MISSION_CORELLIA_CORONET =16;
|
|
const int MISSION_CORELLIA_TYRENA =17;
|
|
const int MISSION_CORELLIA_BELA_VISTAL =18;
|
|
const int MISSION_CORELLIA_VRENI_ISLAND =19;
|
|
const int MISSION_CORELLIA_KOR_VELLA =20;
|
|
const int MISSION_CORELLIA_DAOBA_GUERFEL=21;
|
|
const int MISSION_RORI_NARMLE =22;
|
|
const int MISSION_RORI_RESTUSS =23;
|
|
const int MISSION_TALUS_DEARIC =24;
|
|
const int MISSION_TALUS_NASHAL =25;
|
|
const int MISSION_YAVIN4_LABOR_OUTPOST = 26;
|
|
const int MISSION_YAVIN4_MINING_OUTPOST =27;
|
|
const int MISSION_ENDOR_NEUTRAL_OUTPOST =28;
|
|
const int MISSION_DANTOOINE_MINING_OUTPOST =29;
|
|
const int MISSION_DANTOOINE_PIRATE_OUTPOST =30;
|
|
const int MISSION_DATHOMIR_TRADE_OUTPOST =31;
|
|
const int MISSION_DATHOMIR_SURVEY_OUTPOST=32;
|
|
const int MISSION_LOK_NYMS_STRONGHOLD =33;
|
|
|
|
|
|
const int MISSION_MAX = 34; // DEPRACATED
|
|
|
|
// REGION DIFFICULTY DEFINITIONS [RD]
|
|
const int RD_NEWBIE = 0;
|
|
const int RD_EASY = 1;
|
|
const int RD_NORMAL = 2;
|
|
const int RD_MEDIUM = 3;
|
|
const int RD_HARD = 4;
|
|
const int RD_EXTREME = 5;
|
|
|
|
const int RD_MAX = 6; //must be last const + 1
|
|
|
|
// REGION PvP DEFINITIONS [PVP]
|
|
// IMPORTANT!!! DO NOT CHANGE THE VALUES OF PVP_REGION_TYPE_BATTLEFIELD_PVP OR PVP_REGION_TYPE_BATTLEFIELD_PVE WITHOUT CHANGING serverGame/RegionMaster.h !!!
|
|
const int PVP_REGION_TYPE_NORMAL = 0;
|
|
const int PVP_REGION_TYPE_TRUCE = 1;
|
|
const int PVP_REGION_TYPE_BATTLEFIELD_PVP = 2;
|
|
const int PVP_REGION_TYPE_BATTLEFIELD_PVE = 3;
|
|
const int PVP_REGION_TYPE_ADVANCED = 4;
|
|
|
|
const int PVP_REGION_TYPE_MAX = 5; //must be last const + 1 depracated?
|
|
|
|
// REGION BUILDABLE DEFINITIONS [BUILD]
|
|
const int BUILD_FALSE = 0;
|
|
const int BUILD_TRUE = 1;
|
|
|
|
const int BUILD_MAX = 2; //must be last const + 1 depracated
|
|
|
|
// REGION MUNICIPAL DEFINITIONS [MUNI]
|
|
const int MUNI_FALSE = 0;
|
|
const int MUNI_TRUE = 1;
|
|
|
|
const int MUNI_MAX = 2; //must be last const + 1 depracated
|
|
|
|
// REGION SPAWNABLE DEFINITIONS [SPAWN]
|
|
const int SPAWN_FALSE = 0;
|
|
const int SPAWN_TRUE = 1;
|
|
const int SPAWN_MISSION = 2;
|
|
const int SPAWN_DEFAULT = 3;
|
|
const int SPAWN_MAX = 4;// potentiall depracated
|
|
const int SPAWN_DIFFICULTY = 5;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/****************** Seperator *************************************/
|
|
|
|
// BIT CONSTANTS - FOR REGION TESTING [BIT]
|
|
const int BIT_PVP = 0; //set for PVP > 0
|
|
const int BIT_BUILD = 1; //set for BUILD > 0
|
|
const int BIT_MUNICIPAL = 2; //set for MUNI > 0
|
|
const int BIT_SPAWNABLE = 3; //set for SPAWN > 0
|
|
const int BIT_MISSION = 4; //set for MISSION > 0
|
|
|
|
/***** FUNCTIONS ****************************************************/
|
|
|
|
/*****************************************************************
|
|
* @brief returns an identifier string for the associate geo type
|
|
*
|
|
* @param int geo
|
|
*
|
|
* @return string; null on error
|
|
*****************************************************************/
|
|
string translateGeoToString(int geo)
|
|
{
|
|
if ( ( geo >= GEO_MAX ) || ( geo < 0) )
|
|
{
|
|
return null;
|
|
}
|
|
|
|
switch ( geo )
|
|
{
|
|
case GEO_DESERT: return "desert";
|
|
case GEO_FOREST: return "forest";
|
|
case GEO_JUNGLE: return "jungle";
|
|
case GEO_PLATEAU: return "plateau";
|
|
case GEO_OASIS: return "oasis";
|
|
case GEO_CANYON: return "canyon";
|
|
case GEO_LAKE: return "lake";
|
|
case GEO_LAKESHORE: return "lakeshore";
|
|
case GEO_BEACH: return "beach";
|
|
case GEO_OCEAN: return "ocean";
|
|
case GEO_UNDERWATER: return "underwater";
|
|
case GEO_RIVER: return "river";
|
|
case GEO_VOLCANO: return "volcano";
|
|
case GEO_SWAMP: return "swamp";
|
|
case GEO_PLAINS: return "plains";
|
|
case GEO_PRAIRIE: return "prairie";
|
|
case GEO_MOUNTAINS: return "mountains";
|
|
case GEO_HILLS: return "hills";
|
|
case GEO_GRASSLAND: return "grassland";
|
|
case GEO_WASTELAND: return "wasteland";
|
|
case GEO_CITY: return "city";
|
|
case GEO_FICTIONAL: return "fictional";
|
|
case GEO_OVERLOAD: return "overload";
|
|
case GEO_DEFAULT: return "default";
|
|
case GEO_THEATER: return "theater";
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
|
|
int getDeliverMissionRegionType(string strRegionName)
|
|
{
|
|
|
|
/*
|
|
switch(strRegionName)
|
|
{
|
|
case "anchorhead" : return MISSION_TATOOINE_ANCHORHEAD;
|
|
case "bestine" : return MISSION_TATOOINE_BESTINE;
|
|
case "mos_eisley" : return MISSION_TATOOINE_MOS_EISLEY;
|
|
case "mos_entha" : return MISSION_TATOOINE_MOS_ENTHA;
|
|
case "mos_espa" : return MISSION_TATOOINE_MOS_ESPA;
|
|
case "mos_teike" : return MISSION_TATOOINE_MOS_TEIKE;
|
|
case "wayfar" : return MISSION_TATOOINE_WAYFAR;
|
|
|
|
}
|
|
|
|
return 0;
|
|
*/
|
|
|
|
if(strRegionName=="anchorhead")
|
|
{
|
|
return MISSION_TATOOINE_ANCHORHEAD;
|
|
|
|
}
|
|
else if(strRegionName=="bestine")
|
|
{
|
|
return MISSION_TATOOINE_BESTINE;
|
|
|
|
}
|
|
else if(strRegionName=="mos_eisley")
|
|
{
|
|
return MISSION_TATOOINE_MOS_EISLEY;
|
|
}
|
|
else if(strRegionName=="mos_entha")
|
|
{
|
|
|
|
return MISSION_TATOOINE_MOS_ENTHA;
|
|
}
|
|
else if(strRegionName=="mos_espa")
|
|
{
|
|
|
|
return MISSION_TATOOINE_MOS_ESPA;
|
|
|
|
}
|
|
else if(strRegionName=="mos_teike")
|
|
{
|
|
return MISSION_TATOOINE_MOS_TEIKE;
|
|
}
|
|
else if (strRegionName=="wayfar")
|
|
{
|
|
return MISSION_TATOOINE_WAYFAR;
|
|
}
|
|
else if (strRegionName=="deeja_peak")
|
|
{
|
|
return MISSION_NABOO_DEEJA_PEAK;
|
|
}
|
|
else if (strRegionName=="theed")
|
|
{
|
|
return MISSION_NABOO_THEED;
|
|
|
|
}
|
|
else if(strRegionName=="keren")
|
|
{
|
|
return MISSION_NABOO_KEREN;
|
|
|
|
}
|
|
else if(strRegionName=="kaadara")
|
|
{
|
|
return MISSION_NABOO_KAADARA;
|
|
}
|
|
else if (strRegionName=="moenia")
|
|
{
|
|
return MISSION_NABOO_MOENIA;
|
|
}
|
|
else if(strRegionName=="coronet")
|
|
{
|
|
return MISSION_CORELLIA_CORONET;
|
|
}
|
|
else if(strRegionName=="tyrena")
|
|
{
|
|
return MISSION_CORELLIA_TYRENA;
|
|
}
|
|
else if(strRegionName=="bela_vistal")
|
|
{
|
|
return MISSION_CORELLIA_BELA_VISTAL;
|
|
}
|
|
else if(strRegionName=="vreni_island")
|
|
{
|
|
return MISSION_CORELLIA_VRENI_ISLAND;
|
|
}
|
|
else if(strRegionName=="kor_vella")
|
|
{
|
|
return MISSION_CORELLIA_KOR_VELLA;
|
|
}
|
|
else if(strRegionName=="daoba_guerfel")
|
|
{
|
|
return MISSION_CORELLIA_DAOBA_GUERFEL;
|
|
}
|
|
else if(strRegionName=="doaba_guerfel")
|
|
{
|
|
return MISSION_CORELLIA_DAOBA_GUERFEL;
|
|
}
|
|
else if(strRegionName=="narmle")
|
|
{
|
|
return MISSION_RORI_NARMLE;
|
|
}
|
|
else if(strRegionName=="restuss")
|
|
{
|
|
return MISSION_RORI_RESTUSS;
|
|
}
|
|
else if(strRegionName=="dearic")
|
|
{
|
|
return MISSION_TALUS_DEARIC;
|
|
}
|
|
else if(strRegionName=="nashal")
|
|
{
|
|
return MISSION_TALUS_NASHAL;
|
|
}
|
|
else if(strRegionName=="yavin4_labor_outpost")
|
|
{
|
|
return MISSION_YAVIN4_LABOR_OUTPOST;
|
|
}
|
|
else if(strRegionName=="yavin4_mining_outpost")
|
|
{
|
|
return MISSION_YAVIN4_MINING_OUTPOST;
|
|
}
|
|
else if(strRegionName=="endor_neutral_outpost")
|
|
{
|
|
return MISSION_ENDOR_NEUTRAL_OUTPOST;
|
|
|
|
}
|
|
else if(strRegionName=="dantooine_mining_outpost")
|
|
{
|
|
|
|
return MISSION_DANTOOINE_MINING_OUTPOST;
|
|
}
|
|
else if(strRegionName=="dantooine_pirate_outpost")
|
|
{
|
|
return MISSION_DANTOOINE_PIRATE_OUTPOST;
|
|
}
|
|
else if(strRegionName=="dathomir_trade_outpost")
|
|
{
|
|
|
|
return MISSION_DATHOMIR_TRADE_OUTPOST;
|
|
}
|
|
else if(strRegionName=="dathomir_survey_outpost")
|
|
{
|
|
return MISSION_DATHOMIR_SURVEY_OUTPOST;
|
|
}
|
|
else if(strRegionName=="lok_nyms_stronghold")
|
|
{
|
|
return MISSION_LOK_NYMS_STRONGHOLD;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
// hack remove later
|
|
string getPlanetNameByObjId(obj_id objPlanet)
|
|
{
|
|
// naboo
|
|
// tatooine
|
|
// corellia
|
|
// lok
|
|
// dathomir
|
|
//endor
|
|
//yavin4
|
|
LOG("regions_spam", "objPlanet is "+objPlanet);
|
|
|
|
obj_id objNamedPlanet = getPlanetByName("naboo");
|
|
LOG("regions_spam", "naboo is "+objNamedPlanet);
|
|
if(objNamedPlanet==objPlanet)
|
|
{
|
|
|
|
|
|
return "naboo";
|
|
}
|
|
|
|
objNamedPlanet = getPlanetByName("tatooine");
|
|
LOG("regions_spam", "tatooine is "+objNamedPlanet);
|
|
if(objNamedPlanet==objPlanet)
|
|
{
|
|
|
|
|
|
return "tatooine";
|
|
}
|
|
|
|
objNamedPlanet = getPlanetByName("dathomir");
|
|
LOG("regions_spam", "dathomir is "+objNamedPlanet);
|
|
if(objNamedPlanet==objPlanet)
|
|
{
|
|
|
|
|
|
return "dathomir";
|
|
}
|
|
|
|
objNamedPlanet = getPlanetByName("corellia");
|
|
LOG("regions_spam", "corellia is "+objNamedPlanet);
|
|
if(objNamedPlanet==objPlanet)
|
|
{
|
|
|
|
|
|
return "corellia";
|
|
}
|
|
|
|
objNamedPlanet = getPlanetByName("endor");
|
|
LOG("regions_spam", "endor is "+objNamedPlanet);
|
|
if(objNamedPlanet==objPlanet)
|
|
{
|
|
|
|
|
|
return "endor";
|
|
}
|
|
|
|
objNamedPlanet = getPlanetByName("yavin");
|
|
LOG("regions_spam", "yavin is "+objNamedPlanet);
|
|
if(objNamedPlanet==objPlanet)
|
|
{
|
|
|
|
|
|
return "yavin";
|
|
}
|
|
|
|
|
|
|
|
objNamedPlanet = getPlanetByName("lok");
|
|
LOG("regions_spam", "lok is "+objNamedPlanet);
|
|
if(objNamedPlanet==objPlanet)
|
|
{
|
|
|
|
|
|
return "lok";
|
|
}
|
|
|
|
|
|
objNamedPlanet = getPlanetByName("tanaab");
|
|
LOG("regions_spam", "tanaab is "+objNamedPlanet);
|
|
if(objNamedPlanet==objPlanet)
|
|
{
|
|
|
|
|
|
return "tanaab";
|
|
}
|
|
|
|
|
|
objNamedPlanet = getPlanetByName("talus");
|
|
LOG("regions_spam", "talus is "+objNamedPlanet);
|
|
if(objNamedPlanet==objPlanet)
|
|
{
|
|
|
|
|
|
return "talus";
|
|
}
|
|
|
|
|
|
objNamedPlanet = getPlanetByName("rori");
|
|
LOG("regions_spam", "rori is "+objNamedPlanet);
|
|
if(objNamedPlanet==objPlanet)
|
|
{
|
|
|
|
|
|
return "rori";
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
// end hack
|
|
|
|
//It's later, oh look... hack still here.
|
|
|
|
boolean isInPvPRegion(obj_id object)
|
|
{
|
|
//Check the planet tables here for pvp region if you wish, but setting a region to
|
|
//pvp enabled "Battlefield Region" breaks all combat. If that is ever fixed, feel free
|
|
//to come back here and add that check in. Until then, we are just looking for registered
|
|
//regions as that is what the GCW tracking does.
|
|
|
|
location loc = getLocation(object);
|
|
|
|
region[] regions = getRegionsAtPoint(loc);
|
|
|
|
if (regions == null || regions.length == 0)
|
|
return false;
|
|
|
|
for (int i=0;i<regions.length;i++)
|
|
{
|
|
string regionName = regions[i].getName();
|
|
|
|
if (isIdValid(gcw.getPvpRegionControllerIdByName(object, regionName)))
|
|
return true;
|
|
|
|
}
|
|
return false;
|
|
} |