mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-07-31 00:15:54 -04:00
276 lines
7.9 KiB
Plaintext
276 lines
7.9 KiB
Plaintext
/**
|
|
* Copyright (c)2000-2004 Sony Online Entertainment Inc.
|
|
* All Rights Reserved
|
|
*
|
|
* Title: fs_quests_sad.scriptlib
|
|
* Description: scriptlib for force sensitive search and destroy mission
|
|
* @author $Author:$
|
|
* @version $Revision:$
|
|
*/
|
|
|
|
//Whether the player has an active SAD task
|
|
const string SAD_OBJVAR_TASK_ACTIVE = "fs_quest_sad.task_active";
|
|
const string SAD_OBJVAR_TIMESTAMP = "fs_quest_sad.timestamp";
|
|
const string SAD_OBJVAR_TAKEN_SINCE_TIMESTAMP = "fs_quest_sad.taken_since_timestamp";
|
|
|
|
const int SAD_MAX_IN_TIME_PERIOD = 3; // Most quests you can do in one time period
|
|
|
|
const string SAD_OBJVAR_WAYPOINT = "fs_quest_sad.waypoint";
|
|
const string SAD_OBJVAR_MASTER_THEATER = "fs_quest_sad.theater";
|
|
const string SAD_OBJVAR_KILLABLE = "fs_quest_sad.quantity_killable";
|
|
|
|
int getTimePeriod()
|
|
{
|
|
int timePeriod;
|
|
String setting = getConfigSetting("GameServer", "forceSensitiveSadTimeRestrict");
|
|
if(setting != null)
|
|
timePeriod = Integer.parseInt(setting);
|
|
else
|
|
timePeriod = 24 * 60 * 60;
|
|
return timePeriod;
|
|
}
|
|
|
|
//
|
|
//Returns true if this player has an outstanding SAD mission
|
|
//
|
|
boolean hasTask(obj_id player)
|
|
{
|
|
for(int i = 0;i < 8; i++)
|
|
{
|
|
if(quests.isActive("fs_quests_sad_task" + i, player))
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
//
|
|
//Returns true if this player has an outstanding SAD mission
|
|
//
|
|
boolean hasTask2(obj_id player)
|
|
{
|
|
for(int i = 0;i < 8; i++)
|
|
{
|
|
if(quests.isActive("fs_quests_sad2_task" + i, player))
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
//
|
|
//Returns true if this player has exceeded their daily task limit
|
|
boolean hasExceededTaskLimit(obj_id player)
|
|
{
|
|
if(hasObjVar(player, SAD_OBJVAR_TIMESTAMP))
|
|
{
|
|
int lastTimestamp = utils.getIntObjVar(player, SAD_OBJVAR_TIMESTAMP);
|
|
int takenSinceTimestamp = utils.getIntObjVar(player, SAD_OBJVAR_TAKEN_SINCE_TIMESTAMP);
|
|
int curTime = getGameTime();
|
|
if((curTime - lastTimestamp < getTimePeriod()) && (takenSinceTimestamp >= SAD_MAX_IN_TIME_PERIOD))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
//
|
|
//Records the fact that the player took a task (to make sure they don't exceed rate)
|
|
// Assumes that hasExceededTaskLimit == false
|
|
//
|
|
void recordTookTask(obj_id player)
|
|
{
|
|
LOG("newquests", "recordTookTask");
|
|
int curTime = getGameTime();
|
|
if(hasObjVar(player, SAD_OBJVAR_TIMESTAMP))
|
|
{
|
|
int lastTimestamp = utils.getIntObjVar(player, SAD_OBJVAR_TIMESTAMP);
|
|
int takenSinceTimestamp = utils.getIntObjVar(player, SAD_OBJVAR_TAKEN_SINCE_TIMESTAMP);
|
|
if(curTime - lastTimestamp > getTimePeriod())
|
|
{
|
|
utils.setObjVar(player, SAD_OBJVAR_TIMESTAMP, curTime);
|
|
utils.setObjVar(player, SAD_OBJVAR_TAKEN_SINCE_TIMESTAMP, 1);
|
|
}
|
|
else
|
|
{
|
|
utils.setObjVar(player, SAD_OBJVAR_TAKEN_SINCE_TIMESTAMP, ++takenSinceTimestamp);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
utils.setObjVar(player, SAD_OBJVAR_TIMESTAMP, curTime);
|
|
utils.setObjVar(player, SAD_OBJVAR_TAKEN_SINCE_TIMESTAMP, 1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
//
|
|
//Records the fact that the player succeeded at a task
|
|
//
|
|
void recordTaskSuccess(obj_id player)
|
|
{
|
|
LOG("newquests", "recordTaskSuccess");
|
|
//Doesn't do anything right now
|
|
return;
|
|
}
|
|
|
|
//
|
|
//Records the fact that the player failed at a task
|
|
//
|
|
void recordTaskFailure(obj_id player)
|
|
{
|
|
LOG("newquests", "recordTaskFailure");
|
|
//Doesn't do anything right now
|
|
return;
|
|
}
|
|
|
|
//
|
|
//Returns true if the player has completed enough tasks to be a success
|
|
//
|
|
boolean hasCompletedAllTasks(obj_id player)
|
|
{
|
|
LOG("newquests", "hasCompletedAllTasks");
|
|
return (quests.isComplete("fs_quests_sad_finish", player));
|
|
}
|
|
|
|
|
|
boolean hasCompletedAllTasks2(obj_id player)
|
|
{
|
|
LOG("newquests", "hasCompletedAllTasks");
|
|
return (quests.isComplete("fs_quests_sad2_finish", player));
|
|
}
|
|
|
|
//
|
|
//Returns how many tasks the player has finished
|
|
//
|
|
int getNumberTasksCompleted(obj_id player)
|
|
{
|
|
LOG("newquests", "getNumberTasksCompleted");
|
|
if(quests.isComplete("fs_quests_sad_task8", player))
|
|
return 7;
|
|
else if(quests.isComplete("fs_quests_sad_task7", player))
|
|
return 6;
|
|
else if(quests.isComplete("fs_quests_sad_task6", player))
|
|
return 5;
|
|
else if(quests.isComplete("fs_quests_sad_task5", player))
|
|
return 4;
|
|
else if(quests.isComplete("fs_quests_sad_task4", player))
|
|
return 3;
|
|
else if(quests.isComplete("fs_quests_sad_task3", player))
|
|
return 2;
|
|
else if(quests.isComplete("fs_quests_sad_task2", player))
|
|
return 1;
|
|
else if(quests.isComplete("fs_quests_sad_task1", player))
|
|
return 0;
|
|
else
|
|
return -1;
|
|
}
|
|
|
|
//
|
|
//Returns how many tasks the player has finished
|
|
//
|
|
int getNumberTasksCompleted2(obj_id player)
|
|
{
|
|
LOG("newquests", "getNumberTasksCompleted");
|
|
if(quests.isComplete("fs_quests_sad2_task8", player))
|
|
return 7;
|
|
else if(quests.isComplete("fs_quests_sad2_task7", player))
|
|
return 6;
|
|
else if(quests.isComplete("fs_quests_sad2_task6", player))
|
|
return 5;
|
|
else if(quests.isComplete("fs_quests_sad2_task5", player))
|
|
return 4;
|
|
else if(quests.isComplete("fs_quests_sad2_task4", player))
|
|
return 3;
|
|
else if(quests.isComplete("fs_quests_sad2_task3", player))
|
|
return 2;
|
|
else if(quests.isComplete("fs_quests_sad2_task2", player))
|
|
return 1;
|
|
else if(quests.isComplete("fs_quests_sad2_task1", player))
|
|
return 0;
|
|
else
|
|
return -1;
|
|
}
|
|
|
|
//
|
|
//Performs the actions appropriate for the end of the entire quest - namely, granting skills
|
|
// and-or rewards
|
|
//
|
|
void performEndOfQuest(obj_id player)
|
|
{
|
|
cleanup(player);
|
|
fs_quests.unlockBranch(player, "force_sensitive_combat_prowess_melee_speed");
|
|
fs_quests.setQuestCompleted(player, "force_sensitive_combat_prowess_melee_speed");
|
|
}
|
|
|
|
//
|
|
//Performs the actions appropriate for the end of the entire quest - namely, granting skills
|
|
// and-or rewards
|
|
//
|
|
void performEndOfQuest2(obj_id player)
|
|
{
|
|
cleanup(player);
|
|
fs_quests.unlockBranch(player, "force_sensitive_combat_prowess_ranged_defense");
|
|
fs_quests.setQuestCompleted(player, "force_sensitive_combat_prowess_ranged_defense");
|
|
}
|
|
|
|
void cleanup(obj_id player)
|
|
{
|
|
|
|
int x = 0;
|
|
|
|
for (x = 1; x < 9; x++)
|
|
{
|
|
if(hasObjVar(player, "quest.fs_quests_sad2_return" + x + ".waypoint"))
|
|
{
|
|
obj_id point = getObjIdObjVar (player, "quest.fs_quests_sad2_return" + x + ".waypoint");
|
|
destroyWaypointInDatapad(point, player);
|
|
removeObjVar(player, "quest.fs_quests_sad2_return" + x + ".waypoint");
|
|
}
|
|
}
|
|
|
|
for (x = 1; x < 9; x++)
|
|
{
|
|
if(hasObjVar(player, "quest.fs_quests_sad_return" + x + ".waypoint"))
|
|
{
|
|
obj_id point2 = getObjIdObjVar (player, "quest.fs_quests_sad_return" + x + ".waypoint");
|
|
destroyWaypointInDatapad(point2, player);
|
|
removeObjVar(player, "quest.fs_quests_sad_return" + x + ".waypoint");
|
|
}
|
|
}
|
|
|
|
|
|
if(hasObjVar(player, SAD_OBJVAR_WAYPOINT))
|
|
{
|
|
obj_id wp = getObjIdObjVar (player, SAD_OBJVAR_WAYPOINT);
|
|
destroyWaypointInDatapad(wp, player);
|
|
removeObjVar(player, SAD_OBJVAR_WAYPOINT);
|
|
}
|
|
if(hasObjVar(player, SAD_OBJVAR_TASK_ACTIVE))
|
|
removeObjVar(player, SAD_OBJVAR_TASK_ACTIVE);
|
|
if(hasObjVar(player, SAD_OBJVAR_TIMESTAMP))
|
|
removeObjVar(player, SAD_OBJVAR_TIMESTAMP);
|
|
if(hasObjVar(player, SAD_OBJVAR_TAKEN_SINCE_TIMESTAMP))
|
|
removeObjVar(player, SAD_OBJVAR_TAKEN_SINCE_TIMESTAMP);
|
|
//if(hasObjVar(player, geiger.OBJVAR_GEIGER_LOCATION_X))
|
|
// removeObjVar(player, geiger.OBJVAR_GEIGER_LOCATION_X);
|
|
if(hasObjVar(player, SAD_OBJVAR_KILLABLE))
|
|
removeObjVar(player, SAD_OBJVAR_KILLABLE);
|
|
//if(hasObjVar(player, geiger.OBJVAR_GEIGER_LOCATION_Z))
|
|
// removeObjVar(player, geiger.OBJVAR_GEIGER_LOCATION_Z);
|
|
if(hasObjVar(player, geiger.OBJVAR_GEIGER_FACTOR))
|
|
removeObjVar(player, geiger.OBJVAR_GEIGER_FACTOR);
|
|
if(hasObjVar(player, geiger.OBJVAR_GEIGER_PID))
|
|
removeObjVar(player, geiger.OBJVAR_GEIGER_PID);
|
|
if(utils.hasScriptVar(player, geiger.SCRIPTVAR_GEIGER_LAST))
|
|
utils.removeScriptVar(player, geiger.SCRIPTVAR_GEIGER_LAST);
|
|
if(hasObjVar(player, SAD_OBJVAR_MASTER_THEATER))
|
|
removeObjVar(player, SAD_OBJVAR_MASTER_THEATER);
|
|
if(hasObjVar(player, geiger.OBJVAR_GEIGER_LOCATION))
|
|
removeObjVar(player, geiger.OBJVAR_GEIGER_LOCATION);
|
|
if(hasObjVar(player, geiger.OBJVAR_GEIGER_PID))
|
|
removeObjVar(player, geiger.OBJVAR_GEIGER_PID);
|
|
if(hasObjVar(player, geiger.OBJVAR_GEIGER_OBJECT))
|
|
removeObjVar(player, geiger.OBJVAR_GEIGER_OBJECT);
|
|
geiger.removeGeiger(player);
|
|
}
|