mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-07-31 00:15:54 -04:00
400 lines
10 KiB
Plaintext
400 lines
10 KiB
Plaintext
include library.utils;
|
|
include library.create;
|
|
include library.chat;
|
|
include library.ai_lib;
|
|
include library.locations;
|
|
|
|
const string SHUTTLE = "object/creature/npc/theme_park/player_shuttle.iff";
|
|
|
|
const string ESCORT = "wookiee_brawler";
|
|
|
|
const string CELEB = "trandoshan_slavemaster";
|
|
|
|
const string STF_FILE = "event/ep3_trando_herald";
|
|
|
|
const float ONE_HOUR = 60 * 60;
|
|
|
|
trigger OnInitialize()
|
|
{
|
|
|
|
location here = getLocation(self);
|
|
string myRegion = locations.getGuardSpawnerRegionName(here);
|
|
|
|
|
|
if(myRegion == "@naboo_region_names:theed" || myRegion == "@tatooine_region_names:bestine" || myRegion == "@corellia_region_names:coronet" || myRegion == "@tatooine_region_names:anchorhead")
|
|
{
|
|
removeObjVar(self, "event");
|
|
removeObjVar(self, "auto_invasion");
|
|
messageTo(self, "repurposeToNewGCWEvents", null, 30, false);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler repurposeToNewGCWEvents()
|
|
{
|
|
attachScript(self, "event.gcwraids.gcwraid");
|
|
messageTo(self, "detachGCWLaunchScript", null, 30, false);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler detachGCWLaunchScript()
|
|
{
|
|
detachScript(self, "event.gcwlaunch.gcwlaunch");
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
/***************** REPURPOSING to new GCW Events **************************
|
|
string setting = getConfigSetting("EventTeam", "ep3Herald");
|
|
|
|
if(setting == null || setting == "" || setting != "true")
|
|
return SCRIPT_CONTINUE;
|
|
|
|
|
|
location here = getLocation(self);
|
|
string myRegion = locations.getGuardSpawnerRegionName(here);
|
|
|
|
|
|
if(myRegion == "@naboo_region_names:theed" || myRegion == "@tatooine_region_names:bestine" || myRegion == "@corellia_region_names:coronet" )
|
|
{
|
|
setObjVar(self, "event.gcwlaunch.shuttle_type", 0);
|
|
}
|
|
|
|
if(myRegion == "@corellia_region_names:bela_vistal" || myRegion == "@tatooine_region_names:anchorhead" || myRegion == "@naboo_region_names:moenia")
|
|
{
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageTo(self, "shuttleLandingCheck", null, ONE_HOUR, false);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler shuttleLandingCheck()
|
|
{
|
|
int chance = rand(1, 3);
|
|
|
|
if(chance == 1)
|
|
{
|
|
messageTo(self, "createShuttle", null, 1, false);
|
|
}
|
|
|
|
messageTo(self, "shuttleLandingCheck", null, ONE_HOUR, false);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler createShuttle()
|
|
{
|
|
// int shuttleType = getIntObjVar(self, "event.gcwlaunch.shuttle_type");
|
|
location here = getLocation(self);
|
|
|
|
obj_id shuttle = create.object(SHUTTLE, here);
|
|
setObjVar(self, "event.gcwlaunch.shuttle", shuttle);
|
|
|
|
setYaw(shuttle, 179);
|
|
detachScript(shuttle, "ai.ai");
|
|
detachScript(shuttle, "ai.creature_combat");
|
|
detachScript(shuttle, "skeleton.humanoid");
|
|
detachScript(shuttle, "systems.combat.combat_actions_creature");
|
|
detachScript(shuttle, "systems.combat.credit_for_kills");
|
|
stop(shuttle);
|
|
|
|
setPosture(shuttle, POSTURE_PRONE);
|
|
|
|
messageTo(self, "landShuttle", null, 6, false);
|
|
|
|
obj_id[] objPlayers = getPlayerCreaturesInRange(self, 128.0f);
|
|
|
|
if (objPlayers != null && objPlayers.length>0)
|
|
{
|
|
for(int i = 0; i < objPlayers.length; i++)
|
|
{
|
|
sendSystemMessage(objPlayers[i], new string_id(STF_FILE, "areabroadcast") );
|
|
}
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler landShuttle()
|
|
{
|
|
obj_id shuttle = getObjIdObjVar(self, "event.gcwlaunch.shuttle");
|
|
|
|
queueCommand(shuttle, ##"stand", self, "", COMMAND_PRIORITY_FRONT);
|
|
setPosture(shuttle, POSTURE_UPRIGHT);
|
|
|
|
messageTo(self, "spawnEscorts", null, 20, false);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler spawnEscorts()
|
|
{
|
|
location here = getLocation(self);
|
|
|
|
for(int i = 0; i < 8; i++)
|
|
{
|
|
obj_id escort = create.object(ESCORT, here);
|
|
setObjVar(self, "event.gcwlaunch.escort" + i, escort);
|
|
|
|
setName(escort, getString(new string_id(STF_FILE, "wookiee_slave") ) );
|
|
attachScript(escort, "event.ep3_herald_wookiee");
|
|
}
|
|
|
|
messageTo(self, "spawnCeleb", null, 20, false);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler spawnCeleb()
|
|
{
|
|
location here = getLocation(self);
|
|
|
|
obj_id celeb = create.object(CELEB, here);
|
|
ai_lib.setDefaultCalmBehavior(celeb, ai_lib.BEHAVIOR_SENTINEL );
|
|
stop(celeb);
|
|
setInvulnerable(celeb, true);
|
|
setObjVar(self, "event.gcwlaunch.celeb", celeb);
|
|
|
|
obj_id[] objPlayers = getPlayerCreaturesInRange(self, 100.0f);
|
|
|
|
if (objPlayers != null && objPlayers.length>0)
|
|
{
|
|
for(int i = 0; i < objPlayers.length; i++)
|
|
{
|
|
if(shuttleType == 0)
|
|
playMusic(objPlayers[i], "sound/music_emperor_theme_stereo.snd");
|
|
|
|
if(shuttleType == 1)
|
|
playMusic(objPlayers[i], "sound/music_leia_theme_stereo.snd");
|
|
}
|
|
}
|
|
|
|
messageTo(self, "walkForwardCeleb", null, 3, false);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler walkForwardCeleb()
|
|
{
|
|
obj_id celeb = getObjIdObjVar(self, "event.gcwlaunch.celeb");
|
|
location there = getLocation(self);
|
|
there.z += -25;
|
|
|
|
ai_lib.aiPathTo(celeb, there);
|
|
setMovementRun(celeb);
|
|
|
|
chat.chat(celeb, chat.CHAT_SAY, chat.MOOD_ANGRY, new string_id(STF_FILE, "trando_warning") );
|
|
|
|
messageTo(self, "blowTheShuttle", null, 8, false);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler blowTheShuttle()
|
|
{
|
|
obj_id shuttle = getObjIdObjVar(self, "event.gcwlaunch.shuttle");
|
|
obj_id celeb = getObjIdObjVar(self, "event.gcwlaunch.celeb");
|
|
|
|
obj_id[] objPlayers = getPlayerCreaturesInRange(self, 32.0f);
|
|
|
|
if (objPlayers != null && objPlayers.length>0)
|
|
{
|
|
|
|
for(int i = 0; i < objPlayers.length; i++)
|
|
{
|
|
location myLoc = getLocation(self);
|
|
playClientEffectLoc(objPlayers[i], "clienteffect/combat_explosion_lair_large.cef", myLoc, 10f);
|
|
myLoc.x += 5.0f;
|
|
playClientEffectLoc(objPlayers[i], "clienteffect/combat_explosion_lair_large.cef", myLoc, 10f);
|
|
myLoc.z += 5.0f;
|
|
playClientEffectLoc(objPlayers[i], "clienteffect/combat_explosion_lair_large.cef", myLoc, 10f);
|
|
myLoc.x -= 10.0f;
|
|
playClientEffectLoc(objPlayers[i], "clienteffect/combat_explosion_lair_large.cef", myLoc, 10f);
|
|
myLoc.z -= 10.0f;
|
|
playClientEffectLoc(objPlayers[i], "clienteffect/combat_explosion_lair_large.cef", myLoc, 10f);
|
|
}
|
|
}
|
|
|
|
destroyObject(shuttle);
|
|
|
|
messageTo(self, "startConversing", null, 3, false);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler startConversing()
|
|
{
|
|
obj_id celeb = getObjIdObjVar(self, "event.gcwlaunch.celeb");
|
|
|
|
attachScript(celeb, "conversation.ep3_trando_herald");
|
|
messageTo(self, "poofTheTrandoAndDie", null, 1800, false); // 30 MINUTES ON FINAL
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler poofTheTrandoAndDie()
|
|
{
|
|
obj_id celeb = getObjIdObjVar(self, "event.gcwlaunch.celeb");
|
|
destroyObject(celeb);
|
|
removeObjVar(self, "event.gcwlaunch.shuttle");
|
|
removeObjVar(self, "event.gcwlaunch.celeb");
|
|
|
|
for(int i = 0; i < 8; i++)
|
|
{
|
|
removeObjVar(self, "event.gcwlaunch.escort" + i);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler engageInJingoisticRhetoric()
|
|
{
|
|
obj_id celeb = getObjIdObjVar(self, "event.gcwlaunch.celeb");
|
|
int shuttleType = getIntObjVar(self, "event.gcwlaunch.shuttle_type");
|
|
int dialogueSet = getIntObjVar(self, "event.gcwlaunch.dialogue_set");
|
|
int dialogueStep = utils.getIntScriptVar(self, "event.gcwlaunch.dialogue_step");
|
|
|
|
if(dialogueStep > 11)
|
|
{
|
|
messageTo(self, "everyoneWalkBack", null, 10, false);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
string_id myLine = new string_id("gcwlaunchevent", "dialogue_" + shuttleType + "_" + dialogueSet + "_" + dialogueStep);
|
|
|
|
chat.chat(celeb, chat.CHAT_SAY, chat.MOOD_NONE, myLine);
|
|
|
|
if(dialogueStep == 3 && shuttleType == 0)
|
|
doAnimationAction(celeb, "pound_fist_palm" );
|
|
|
|
if(dialogueStep == 5 && shuttleType == 0)
|
|
doAnimationAction(celeb, "force_push" );
|
|
|
|
if(dialogueStep == 7 && shuttleType == 0)
|
|
doAnimationAction(celeb, "force_choke" );
|
|
|
|
if(dialogueStep == 10 && shuttleType == 0)
|
|
doAnimationAction(celeb, "point_forward" );
|
|
|
|
if(dialogueStep == 3 && shuttleType == 1)
|
|
doAnimationAction(celeb, "point_right" );
|
|
|
|
if(dialogueStep == 5 && shuttleType == 1)
|
|
doAnimationAction(celeb, "pound_fist_palm" );
|
|
|
|
if(dialogueStep == 7 && shuttleType == 1)
|
|
doAnimationAction(celeb, "nod_head_once" );
|
|
|
|
if(dialogueStep == 10 && shuttleType == 1)
|
|
doAnimationAction(celeb, "point_forward" );
|
|
|
|
dialogueStep++;
|
|
utils.setScriptVar(self, "event.gcwlaunch.dialogue_step", dialogueStep);
|
|
|
|
messageTo(self, "engageInJingoisticRhetoric", null, 10, false);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler everyoneWalkBack()
|
|
{
|
|
location here = getLocation(self);
|
|
obj_id celeb = getObjIdObjVar(self, "event.gcwlaunch.celeb");
|
|
|
|
ai_lib.aiPathTo(celeb, here);
|
|
setMovementRun(celeb);
|
|
|
|
for(int i = 0; i < 8; i++)
|
|
{
|
|
obj_id escort = getObjIdObjVar(self, "event.gcwlaunch.escort" + i);
|
|
|
|
if(isIdValid(escort) )
|
|
{
|
|
ai_lib.aiPathTo(escort, here);
|
|
//ai_lib.run(escort);
|
|
}
|
|
}
|
|
|
|
messageTo(self, "endEvent", null, 10, false);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler endEvent()
|
|
{
|
|
int shuttleType = getIntObjVar(self, "event.gcwlaunch.shuttle_type");
|
|
obj_id shuttle = getObjIdObjVar(self, "event.gcwlaunch.shuttle");
|
|
obj_id celeb = getObjIdObjVar(self, "event.gcwlaunch.celeb");
|
|
destroyObject(celeb);
|
|
|
|
for(int i = 0; i < 8; i++)
|
|
{
|
|
obj_id escort = getObjIdObjVar(self, "event.gcwlaunch.escort" + i);
|
|
|
|
if(isIdValid(escort) )
|
|
{
|
|
destroyObject(escort);
|
|
}
|
|
}
|
|
|
|
if(shuttleType > 0)
|
|
{
|
|
queueCommand(shuttle, ##"prone", self, "", COMMAND_PRIORITY_FRONT);
|
|
setPosture(shuttle, POSTURE_PRONE);
|
|
}
|
|
|
|
if(shuttleType == 0)
|
|
{
|
|
queueCommand(shuttle, ##"stand", self, "", COMMAND_PRIORITY_FRONT);
|
|
setPosture(shuttle, POSTURE_UPRIGHT);
|
|
}
|
|
|
|
messageTo(self, "cleanupShuttleAndStuff", null, 20, false);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler cleanupShuttleAndStuff()
|
|
{
|
|
int shuttleType = getIntObjVar(self, "event.gcwlaunch.shuttle_type");
|
|
obj_id shuttle = getObjIdObjVar(self, "event.gcwlaunch.shuttle");
|
|
destroyObject(shuttle);
|
|
removeObjVar(self, "event.gcwlaunch.celeb");
|
|
|
|
for(int i = 0; i < 8; i++)
|
|
{
|
|
removeObjVar(self, "event.gcwlaunch.escort" + i);
|
|
}
|
|
|
|
obj_id[] objPlayers = getPlayerCreaturesInRange(self, 256.0f);
|
|
|
|
if (objPlayers != null && objPlayers.length>0)
|
|
{
|
|
for(int i = 0; i < objPlayers.length; i++)
|
|
{
|
|
sendSystemMessage(objPlayers[i], new string_id("gcwlaunchevent", "closingbroadcast_" + shuttleType));
|
|
}
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
|
|
trigger OnHearSpeech(obj_id objSpeaker, string strText) // Added for testing
|
|
{
|
|
|
|
if(isGod(objSpeaker))
|
|
{
|
|
if(strText.equals("forceep3heraldevent") )
|
|
{
|
|
messageTo(self, "createShuttle", null, 1, false);
|
|
}
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
********************** REPURPOSING ***********************/ |