DM-Chemosh wrote...
* The Boss is spawned by a trigger at the start of the level, naturally
Make an encounter that fires once or however you want, put it down. Right-click the encounter area to set a spawn point. Move that spawn point to where you want the boss to be.
* She should say a few 5 sentences to the players (in which time I want them to not be able to attack her!), then spawn 2 associates I made and allow players to attack her.
* fight will be on a round platform (you know the tile with the invisible bridge) and I want her and her associates NOT to follow players away from the platform (make her not lureable)
In the properties of the boss, you'll have to make a custom script for the OnSpawn event (i.e. edit the existing one, just give it a new name when you save it and only use it for that boss version) You'd need to add something like this within that script:
//these next 4 lines need to go at the very top of the OnSpawn script right after the #include statements and before the void main(). We need to use this non-standard function later, so we have to define it first.
void CreateObjectVoid(int nObjectType, string sTemplate, location lLoc, int bUseAppearAnimation = FALSE)
{
CreateObject(nObjectType, sTemplate, lLoc, bUseAppearAnimation);
}
object oArea = GetArea(OBJECT_SELF); //determines the area the boss that just spawned is in
string sAreaTag = GetTag(oArea);
object oTarget = GetFirstObjectInArea(oArea); //Get the first thing in the area
//create an effect that we can apply to PC/NPCs so they can't do anything while the boss is talking to them
effect eNoMove = EffectCutSceneParalyze(); //or maybe EffectCutSceneDominated();
while( GetIsObjectValid(oTarget) ) //start a loop that will cycle thru all objects in the area until it runs out of valid things to check
{
//if the thing we're looking at is a creature then...
if( GetObjectType(oTarget) == OBJECT_TYPE_CREATURE )
{
//Freeze the object for 40.0 seconds with the paralyze or dominated effect we made
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eNoMove, oTarget, 40.0);
}
//cycle to next object in the area and do the same thing
oTarget = GetNextObjectInArea(oArea);
}
//set up a few lines for our actress to spout off before annhiliating your players. add more as you like
string sBossChatter1 = "I are going to pwn you.";
string sBossChatter2 = "Look 'round you, this be your eternal resting place. Like it?";
string sBossChatter3 = "'nuf talk, it's dying time!";
string sBossChatter4 = "Oh and where are my cronies...";
//Recite the lines at 5, 15, 25 and 35 second intervals. Hopefully the players are close enough to hear/see them
//Remember we froze everyone in place for 40seconds
DelayCommand(5.0, SpeakString(sBossChatter1, TALKVOLUME_TALK));
DelayCommand(15.0, SpeakString(sBossChatter2, TALKVOLUME_TALK));
DelayCommand(25.0, SpeakString(sBossChatter3, TALKVOLUME_TALK));
DelayCommand(35.0, SpeakString(sBossChatter4, TALKVOLUME_TALK));
//You'll have to put down 2 waypoints where you want the "associates" to be. Their tags need to be: cronie_WP1 and 2
object oWP1 = GetNearestObjectByTag("cronie_WP1");
object oWP2 = GetNearestObjectByTag("cronie_WP2");
//Now that we have the WPs, get their locations so we can create the "associates" there
location locWP1 = GetLocation(oWP1);
location locWP2 = GetLocation(oWP2);
//After 36 seconds, create the associates at their respective waypoints.
//In this case, the associates' blueprint resrefs are "cronie1" and "cronie2"
DelayCommand(36.0, CreateObjectVoid(OBJECT_TYPE_CREATURE, "cronie1", locWP1));
DelayCommand(36.0, CreateObjectVoid(OBJECT_TYPE_CREATURE, "cronie2", locWP2));
Her Abilities should be something like this:
* call in 2 more associates every 2 min if the first ones have been slain
* have stages of combat:
Stage 1 (change visual, high melee resistances, only truely damageable by Clerics)
Stage 2 (change visual again, high magical resistances, only truely damageable by melee)
Stage 3 (again change to another form and causing visual effects randomly in a sphere if possible everytime she gets hit by melee weapons only, for example the "mystical explosion", while trying to keep any magician wizs and sorcs stunned if in range of touch attack then hurrying back to attack the melees)
Stage 4 (visual change to her true form, pulling ALL players close to her and knocking them down, then pushing them away so they are "sent flying off the platform" and would have to run back to her to face her again. In this form have 50% immunity to every damage type)
Question is: Is all of that possible without a heartbeat? Or at least, only a heartbeat that fires while in combat mode, so the server doesn't get stressed too much? And would someone be willing to script that? I'd would be really happy if someone could help me out there...
Well, I gave you what I could in the time I have. I think *most* of this is possible, though I don't know how to do all of it or necessarily have time.
When the associates spawn (in their OnSpawn handles), you could have them set a variable on the boss that deletes after 120.0 seconds (2min). In the boss's OnDamaged handle (?? better spot ??) you could have it check to see if the associates are still there. If not, and if the variable has been deleted, then it would create a new one. Also in the boss's OnDamaged you could see what % of the boss's HP are left. If it is say <25%, then it could destroy that boss and create the next version (Stage2) from the palette. You'd need to create a different version for each stage in the palette with the immunities you want.
There's still quite a bit of scripting work needed to make an aura that does what you want and to simulate the stage4 effects.
Gotta run. gl