Remade Dungeon Level One: Central

Remade Dungeon Level One: Central.  Added Didiamus' creature overrides.  Full compile.
This commit is contained in:
Jaysyn904
2023-09-17 23:08:55 -04:00
parent 84d583b489
commit d168e90e83
225 changed files with 189628 additions and 114247 deletions

View File

@@ -0,0 +1,16 @@
void main()
{
// Get the PC who is in this conversation.
object oPC = GetPCSpeaker();
object oSelf = OBJECT_SELF;
string sPlacableTag = GetTag(OBJECT_SELF);
// Give 20 gold to the PC.
GiveGoldToCreature(oPC, 20);
// And some fake coins.
CreateItemOnObject("itm_fakecoins001", oPC);
SetLocalInt(oPC, "PlayerLooted_" + sPlacableTag, 1);
SetLocalInt(oSelf, "BeenLooted1_" + sPlacableTag, 1);
}

View File

@@ -0,0 +1,17 @@
void main()
{
// Get the PC who is in this conversation.
object oPC = GetPCSpeaker();
object oSelf = OBJECT_SELF;
string sPlacableTag = GetTag(oSelf);
// Give stuff to the PC.
GiveXPToCreature(oPC, 50);
CreateItemOnObject("x1_it_spdvscr301", oPC); //:: Scroll of Continual Flame
CreateItemOnObject("prc_scr_936", oPC); //:: Scroll of Jump
CreateItemOnObject("nw_it_sparscr305", oPC); //:: Scroll of Stinking Cloud
SetLocalInt(oPC, "PlayerSearched_" + sPlacableTag, 1);
SetLocalInt(oSelf, "BeenLooted2_" + sPlacableTag, 1);
}

View File

@@ -0,0 +1,9 @@
void main()
{
// Get the PC who is in this conversation.
object oPC = GetPCSpeaker();
// Give 50 experience to the PC.
GiveXPToCreature(oPC, 50);
CreateItemOnObject("itm_dam_scuplt", oPC);
}

View File

@@ -0,0 +1,16 @@
void main()
{
object oSelf = OBJECT_SELF;
// Get the PC who is in this conversation.
object oPC = GetPCSpeaker();
effect eDeath = EffectDeath(FALSE, FALSE);
// Give 50 experience to the PC.
GiveXPToCreature(oPC, 50);
CreateItemOnObject("itm_deckofcards", oPC);
// Destroy an object (not fully effective until this script ends).
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oSelf, 0.0f);
}

View File

@@ -0,0 +1,15 @@
void main()
{
effect eEffect;
// Get the PC who is in this conversation.
object oPC = GetPCSpeaker();
// If a fortitude saving throw is successful.
if ( FortitudeSave(oPC, 12, SAVING_THROW_TYPE_POISON) )
{
// Apply an effect.
eEffect = SupernaturalEffect(EffectPoison(50)); //:: Strissic Extract
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC);
}
}

View File

@@ -0,0 +1,37 @@
// PnP Improved Grab Attack - Item Unique OnHit Script
//
#include "prc_inc_combmove"
#include "prc_misc_const"
void main()
{
object oPC = OBJECT_SELF;
object oItem = PRCGetSpellCastItem();
object oTarget = PRCGetSpellTargetObject();
string sGrapplerName = GetName(oPC);
int GrappleBonus = GetLocalInt(oPC, "GRAPPLE_BONUS");
int PCSize = PRCGetSizeModifier(oPC);
int TargetSize = PRCGetSizeModifier(oTarget);
int GrappleChance = d100();
// You automatically lose an attempt to hold if the target is two or more size categories larger than you are.
if (TargetSize - 2 >= PCSize)
{
//FloatingTextStringOnCreature("This creature is too large to grapple.", oPC);
return;
}
// Don't try to grapple on every attack.
if (GrappleChance >= 33)
{
return;
}
FloatingTextStringOnCreature("You're stuck to the " + sGrapplerName + " !", oTarget);
DoGrapple(oPC, oTarget, 0, FALSE, TRUE);
}

View File

@@ -0,0 +1,8 @@
void main()
{
// don't face the speaker
float fFacing = GetFacing(OBJECT_SELF);
if (GetListenPatternNumber()==-1)
BeginConversation();
SetFacing(fFacing);
}

View File

@@ -13,9 +13,11 @@
void b_FollowMaster(object oMaster);
void main()
{
object oClicker = GetClickingObject();
object oSelf = OBJECT_SELF;
object oDest = GetTransitionTarget(OBJECT_SELF);
object oClicker = GetClickingObject();
object oSelf = OBJECT_SELF;
object oDest = GetTransitionTarget(OBJECT_SELF);
string sResRef = GetResRef(oClicker);
if(oDest == OBJECT_INVALID)
{
@@ -31,6 +33,15 @@ if(GetLocalInt(oClicker,"DoorOnce") == FALSE)
SetLocalInt(oClicker,"DoorOnce",TRUE);
DelayCommand(1.1,DeleteLocalInt(oClicker,"DoorOnce"));
//:: Prevents the Dung Monster from perma-chasing PC's
int nRandom = d4(1);
if (sResRef == "ra_dungmonster" && nRandom > 2)
{
DestroyObject(oClicker);
}
if(GetIsPC(oClicker)==TRUE)
{
SetLocalInt(oClicker,"PC_USED_DOOR",TRUE);

View File

@@ -0,0 +1,18 @@
/* Script generated by
Lilac Soul's NWN Script Generator, v. 2.0
For download info, please visit:
http://nwvault.ign.com/View.php?view=Other.Detail&id=4683&id=625 */
//Put this OnUsed
void main()
{
object oPC = GetLastUsedBy();
if (!GetIsPC(oPC)) return;
if(GetLocalInt(oPC,"Freed")==1) return;
object oTarget = GetObjectByTag("RustedDoor");
SetLocked(oTarget, FALSE);
AssignCommand(oTarget, ActionOpenDoor(oTarget));
FloatingTextStringOnCreature("You distinctly hear the sound of a door unlocking and opening behind you!!!", oPC);
SetLocalInt(oPC,"Freed",1);
}

View File

@@ -0,0 +1,21 @@
/* Script generated by
Lilac Soul's NWN Script Generator, v. 1.6
For download info, please visit:
http://www.lilacsoul.revility.com */
//Put this OnEnter
void main()
{
object oPC = GetEnteringObject();
if(!GetIsPC(oPC)) return;
if(GetLocalInt(oPC,"Trapped")==1) return;
object oTarget = GetObjectByTag("RustedDoor");
if(GetIsOpen(oTarget))
{
DelayCommand(3.0f,AssignCommand(oTarget, ActionCloseDoor(oTarget)));
}
DelayCommand(5.0f,SetLocked(oTarget, TRUE));
SetLocalInt(oPC,"Trapped",1);
}

View File

@@ -0,0 +1,30 @@
//::///////////////////////////////////////////////
//:: Name: Object Respawner
//:: FileName: object_respawner
//:://////////////////////////////////////////////
/*
Respawn an object after its destroyed.
*/
//:://////////////////////////////////////////////
//:: Created By: VorpalBlade
//:: Created On: 7/21/02
//:://////////////////////////////////////////////
void RespawnObject(int nType, string sTemp, location lRespawn);
void RespawnObject(int nType, string sTemp, location lRespawn)
{
CreateObject(nType, sTemp, lRespawn);
}
void main()
{
// Get the object's spawn point, Type and the template name as the Tag.
location lSpawn = GetLocation(OBJECT_SELF);
string sResref = GetResRef(OBJECT_SELF);
int nObjectType = GetObjectType(OBJECT_SELF);
// Send Respawn command to the module so it will execute even
// after this object is dead and buried
AssignCommand(GetModule(), DelayCommand(900.0, RespawnObject(nObjectType, sResref, lSpawn)));
}

View File

@@ -21,15 +21,16 @@ const int EVENT_USER_DEFINED_POSTSPAWN = 1511;
void main()
{
//:: Declare major variables
int nUser = GetUserDefinedEventNumber();
object oSelf = OBJECT_SELF;
int nUser = GetUserDefinedEventNumber();
int nFireDamage = 0;
int nAcidDamage = 0;
int nTotalHP = GetMaxHitPoints(OBJECT_SELF);
int nTotalHP = GetMaxHitPoints(oSelf);
string sResRef = GetResRef(OBJECT_SELF);
string sResRef = GetResRef(oSelf);
effect eSleep = EffectSleep();
effect eSlow = EffectSlow();
effect eSleep = EffectSleep();
effect eSlow = EffectSlow();
if(nUser == EVENT_HEARTBEAT ) //HEARTBEAT
{
@@ -44,18 +45,52 @@ void main()
RemoveEffect(OBJECT_SELF, eSleep);
}
SpeakString("My Subdual is now " + IntToString(GetLocalInt(OBJECT_SELF, "nSubDual")));
}
} */
}
else if(nUser == EVENT_PERCEIVE) // PERCEIVE
{
if (sResRef == "ra_ghast002")
{
SpeakString("Well hello to you, my first meal in a century!", TALKVOLUME_TALK);
}
}
else if(nUser == EVENT_END_COMBAT_ROUND) // END OF COMBAT
{
if (sResRef == "ra_ghast002")
{
// Randomly choose a threat message
int threatChoice = Random(4) + 1; // You can adjust the number of threats as needed
}
// Depending on the threatChoice, the NPC will say different things
string threatMessage = "";
switch (threatChoice)
{
case 1:
threatMessage = "You look delicious!!";
break;
case 2:
threatMessage = "Thank you so much!!";
break;
case 3:
threatMessage = "FREEEDOM!!";
break;
case 4:
threatMessage = "So sorry, I can't help it you see?";
break;
}
// Get the nearest enemy and make the NPC say the threat
object oNearestEnemy = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, PLAYER_CHAR_IS_PC, oSelf);
if (GetIsObjectValid(oNearestEnemy))
{
SpeakString(threatMessage, TALKVOLUME_TALK);
}
}
}
else if(nUser == EVENT_DIALOGUE) // ON DIALOGUE
{
@@ -73,21 +108,21 @@ void main()
if(GetDamageDealtByType(DAMAGE_TYPE_FIRE) >= 1)
{
nFireDamage = GetDamageDealtByType(DAMAGE_TYPE_FIRE);
SpeakString("Fire Damage: " + IntToString(nFireDamage));
SpeakString("Fire Damage: " + IntToString(nFireDamage));
}
if(GetDamageDealtByType(DAMAGE_TYPE_ACID) >= 1)
{
nAcidDamage = GetDamageDealtByType(DAMAGE_TYPE_ACID);
SpeakString("Acid Damage: " + IntToString(nAcidDamage));
SpeakString("Acid Damage: " + IntToString(nAcidDamage));
}
int nSubDmg = nTotalDamage - (nFireDamage + nAcidDamage);
int nActDmg = nFireDamage + nAcidDamage;
SpeakString("Real damage this attack: " + IntToString(nActDmg));
SetLocalInt(OBJECT_SELF, "nActDmg", nActDmg + GetLocalInt(OBJECT_SELF, "nActDmg"));
SpeakString("Real damage this attack: " + IntToString(nActDmg));
SetLocalInt(OBJECT_SELF, "nActDmg", nActDmg + GetLocalInt(OBJECT_SELF, "nActDmg"));
effect eHeal = EffectHeal(nSubDmg);
@@ -101,10 +136,10 @@ void main()
int nSD = GetLocalInt(OBJECT_SELF, "nSubDual");
int nCurrentHP = GetCurrentHitPoints(OBJECT_SELF);
SpeakString("SD: " + IntToString(nSD));
SpeakString("CH: " + IntToString(nCurrentHP));
SpeakString("ActDmg: " + IntToString(nActDmg));
SpeakString("ActDmg: " + IntToString(nActDmg));
if(nSD > nCurrentHP)
{
@@ -117,13 +152,13 @@ void main()
SpeakString("I am staggered!");
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSlow, OBJECT_SELF, 6.0f);
}
if ((nTotalHP - nActDmg) < nCurrentHP)
{
nCurrentHP = nTotalHP - nActDmg;
SpeakString("Setting HP to: " + IntToString(nCurrentHP));
SetCurrentHitPoints(OBJECT_SELF, nCurrentHP);
}
if ((nTotalHP - nActDmg) < nCurrentHP)
{
nCurrentHP = nTotalHP - nActDmg;
SpeakString("Setting HP to: " + IntToString(nCurrentHP));
SetCurrentHitPoints(OBJECT_SELF, nCurrentHP);
}
} */
}
else if(nUser == 1007) // DEATH - do not use for critical code, does not fire reliably all the time

View File

@@ -0,0 +1,110 @@
//:: Returns true if the PC passes a DC 10 appraise check.
//:: Only allows one chance to appraise
int StartingConditional()
{
object oPC = GetPCSpeaker();
string sPlacableTag = GetTag(OBJECT_SELF);
int nPlayerAppraised = GetLocalInt(oPC, "PlayerAppraise_" + sPlacableTag); // Unique flag for each player
// Check if the player has already attempted appraisal at this placable
if (nPlayerAppraised == 1)
{
return FALSE;
}
// Check if the player's appraise skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_APPRAISE, 10))
{
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerAppraise_" + sPlacableTag, 1);
return TRUE; // Condition met, continue with the conversation
}
else
{
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerAppraise_" + sPlacableTag, 1);
return FALSE;
}
}
//:: Returns true if PC passes a DC 10 search check
/*int StartingConditional()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
// Check if the player's search skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 10))
{
//:: Player passed the search check
return TRUE;
}
else
{
//:: Player failed the search check
return FALSE;
}
} */
//:: Returns true if PC passes a DC 10 search check
/*int StartingConditional()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
// Check if the player's search skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 10))
{
//:: Player passed the search check
return TRUE;
}
else
{
//:: Player failed the search check
return FALSE;
}
} */

View File

@@ -0,0 +1,20 @@
int StartingConditional()
{
object oPC = GetPCSpeaker();
object oSelf = OBJECT_SELF;
string sPlacableTag = GetTag(oSelf);
int nPlayerLooted = GetLocalInt(oPC, "PlayerLooted_" + sPlacableTag); // Unique flag for each player
int nBeenLooted1 = GetLocalInt(oSelf, "BeenLooted1_" + sPlacableTag);
// Check if the player has already attempted searching this placable
if (nPlayerLooted == 1 || nBeenLooted1 == 1)
{
return FALSE;
}
else
{
return TRUE;
}
}

View File

@@ -0,0 +1,30 @@
int StartingConditional()
{
object oPC = GetPCSpeaker();
object oSelf = OBJECT_SELF;
string sPlacableTag = GetTag(OBJECT_SELF);
int nPlayerSearched = GetLocalInt(oPC, "PlayerSearched_" + sPlacableTag); // Unique flag for each player
int nBeenLooted2 = GetLocalInt(oSelf, "BeenLooted2_" + sPlacableTag);
// Check if the player has already attempted searching this placable
if (nPlayerSearched == 1 || nBeenLooted2 == 1)
{
return FALSE;
}
// Check if the player's search skill check is successful against DC 20
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 20))
{
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSearched_" + sPlacableTag, 1);
return TRUE; // Condition met, continue with the conversation
}
else
{
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSearched_" + sPlacableTag, 1);
return FALSE;
}
}

View File

@@ -0,0 +1,12 @@
int StartingConditional()
{
// Get the PC who is involved in this conversation
object oPC = GetPCSpeaker();
// The PC must pass a DC 10 disable trap check.
if ( !GetHasSkill(SKILL_DISABLE_TRAP, oPC) || !GetIsSkillSuccessful(oPC, SKILL_DISABLE_TRAP, 10) )
return FALSE;
// If we make it this far, we have passed all tests.
return TRUE;
}

View File

@@ -1,16 +1,14 @@
#include "x0_i0_partywide"
//:: Returns true if PC passes a DC 10 search check.
//:: Returns true if the PC passes a DC 10 search check.
//:: Only allows one chance to search
int StartingConditional()
{
object oPC = GetPCSpeaker();
object oPC = GetPCSpeaker();
string sPlacableTag = GetTag(OBJECT_SELF);
int nPartySearched = GetLocalInt(oPC, "PartySearched_" + sPlacableTag); // Unique flag for each placable
int nPlayerSearched = GetLocalInt(oPC, "PlayerSearched_" + sPlacableTag); // Unique flag for each player
// Check if the party has already successfully searched at this placable
if (nPartySearched == 1)
// Check if the player has already attempted searching this placable
if (nPlayerSearched == 1)
{
return FALSE;
}
@@ -18,13 +16,15 @@ int StartingConditional()
// Check if the player's search skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 10))
{
// Set the flag on every member of the party to ensure it's only run once per party
SetLocalIntOnAll(oPC, "PartySearched_" + sPlacableTag, 1);
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSearched_" + sPlacableTag, 1);
return TRUE; // Condition met, continue with the conversation
}
else
{
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSearched_" + sPlacableTag, 1);
return FALSE;
}
}
@@ -37,6 +37,33 @@ int StartingConditional()
//:: Returns true if PC passes a DC 10 search check
/*int StartingConditional()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
// Check if the player's search skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 10))
{
//:: Player passed the search check
return TRUE;
}
else
{
//:: Player failed the search check
return FALSE;
}
} */

View File

@@ -0,0 +1,28 @@
int StartingConditional()
{
object oPC = GetPCSpeaker();
string sPlacableTag = GetTag(OBJECT_SELF);
int nPlayerSearched = GetLocalInt(oPC, "PlayerSearched_" + sPlacableTag); // Unique flag for each player
// Check if the player has already attempted searching this placable
if (nPlayerSearched == 1)
{
return FALSE;
}
// Check if the player's search skill check is successful against DC 20
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 20))
{
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSearched_" + sPlacableTag, 1);
return TRUE; // Condition met, continue with the conversation
}
else
{
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSearched_" + sPlacableTag, 1);
return FALSE;
}
}

View File

@@ -1,19 +1,31 @@
//:: Returns true if PC passes a DC 5 search check
//:: Returns true if the PC passes a DC 5 search check.
//:: Only allows one chance to search
int StartingConditional()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
string sPlacableTag = GetTag(OBJECT_SELF);
int nPlayerSearched = GetLocalInt(oPC, "PlayerSearched_" + sPlacableTag); // Unique flag for each player
// Check if the player's search skill check is successful against DC 5
// Check if the player has already attempted searching this placable
if (nPlayerSearched == 1)
{
return FALSE;
}
// Check if the player's search skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 5))
{
//:: Player passed the search check
return TRUE;
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSearched_" + sPlacableTag, 1);
return TRUE; // Condition met, continue with the conversation
}
else
{
//:: Player failed the search check
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSearched_" + sPlacableTag, 1);
return FALSE;
}
}

View File

@@ -0,0 +1,12 @@
int StartingConditional()
{
// Get the PC who is involved in this conversation
object oPC = GetPCSpeaker();
// The PC must pass a DC 15 search check.
if ( !GetIsSkillSuccessful(oPC, SKILL_SEARCH, 15) )
return FALSE;
// If we make it this far, we have passed all tests.
return TRUE;
}

View File

@@ -0,0 +1,110 @@
//:: Returns true if the PC passes a DC 10 spot check.
//:: Only allows one chance to search
int StartingConditional()
{
object oPC = GetPCSpeaker();
string sPlacableTag = GetTag(OBJECT_SELF);
int nPlayerSpotted = GetLocalInt(oPC, "PlayerSpotted_" + sPlacableTag); // Unique flag for each player
// Check if the player has already attempted spotting at this placable
if (nPlayerSpotted == 1)
{
return FALSE;
}
// Check if the player's search skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_SPOT, 10))
{
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSpotted_" + sPlacableTag, 1);
return TRUE; // Condition met, continue with the conversation
}
else
{
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSpotted_" + sPlacableTag, 1);
return FALSE;
}
}
//:: Returns true if PC passes a DC 10 search check
/*int StartingConditional()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
// Check if the player's search skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 10))
{
//:: Player passed the search check
return TRUE;
}
else
{
//:: Player failed the search check
return FALSE;
}
} */
//:: Returns true if PC passes a DC 10 search check
/*int StartingConditional()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
// Check if the player's search skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 10))
{
//:: Player passed the search check
return TRUE;
}
else
{
//:: Player failed the search check
return FALSE;
}
} */

110
_module/nss/sc_spot_dc5.nss Normal file
View File

@@ -0,0 +1,110 @@
//:: Returns true if the PC passes a DC 5 spot check.
//:: Only allows one chance to search
int StartingConditional()
{
object oPC = GetPCSpeaker();
string sPlacableTag = GetTag(OBJECT_SELF);
int nPlayerSearched = GetLocalInt(oPC, "PlayerSpotted_" + sPlacableTag); // Unique flag for each player
// Check if the player has attempted spotting at this placable
if (nPlayerSearched == 1)
{
return FALSE;
}
// Check if the player's search skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_SPOT, 5))
{
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSpotted_" + sPlacableTag, 1);
return TRUE; // Condition met, continue with the conversation
}
else
{
// Set the flag on the player to ensure it's only run once per player
SetLocalInt(oPC, "PlayerSpotted_" + sPlacableTag, 1);
return FALSE;
}
}
//:: Returns true if PC passes a DC 10 search check
/*int StartingConditional()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
// Check if the player's search skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 10))
{
//:: Player passed the search check
return TRUE;
}
else
{
//:: Player failed the search check
return FALSE;
}
} */
//:: Returns true if PC passes a DC 10 search check
/*int StartingConditional()
{
//:: Declare major variables
object oPC = GetPCSpeaker();
// Check if the player's search skill check is successful against DC 10
if (GetIsSkillSuccessful(oPC, SKILL_SEARCH, 10))
{
//:: Player passed the search check
return TRUE;
}
else
{
//:: Player failed the search check
return FALSE;
}
} */

View File

@@ -1,4 +1,12 @@
void main()
{
ActionSit( GetNearestObjectByTag( "Chair"));
DelayCommand(0.2f, ActionSit( GetNearestObjectByTag( "RA_PLC_CHAIR001")));
// Create a cutscene paralysis effect
effect eParalyze = EffectCutsceneParalyze();
eParalyze = UnyieldingEffect(eParalyze);
// Apply the paralysis effect to the chair
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eParalyze, OBJECT_SELF);
}

View File

@@ -2260,9 +2260,10 @@ road; +2 if the encounter occurs at night. */
// Set Creature 11 and Spawn Flags
SetLocalString(oCamp, "CampC11", "ghoul001");
SetLocalString(oCamp, "CampC11_Flags", "SP_RW_CD10_RH30");
break;
}
//:: (1) Ghast & (4-6) Ghouls [2 HD]
DelayCommand(0.0f, SpeakString("Encounter # is: "+IntToString(nSpawn), TALKVOLUME_SHOUT));
}
@@ -2272,7 +2273,6 @@ road; +2 if the encounter occurs at night. */
//:: End Horsefly Swamp Random Encounters
/* Sea Coast Road Wandering Monsters
Check for encounters at 4 a.m. (just before
dawn), 9 a.m., noon, dusk, 9 p.m., and midnight.
@@ -8297,6 +8297,382 @@ at night. */
//:: Great Northern Desert Random Encounters
//:: Dungeon Level 1 Random Encounters
if (sCamp == "enc_level01")
{
int nSpawn = Random(20) + 1;
switch(nSpawn)
{
case 1:
//:: 3d6 Dire Rats + 1d2 Wererats
{
int nRats = d6(3) + d2(1);
// Set Number of Placeables
SetLocalInt(oCamp, "CampNumP", 0);
// Set Number of Creatures
SetLocalInt(oCamp, "CampNumC", nRats);
// Set Radius of Camp
SetLocalFloat(oCamp, "CampRadius", 10.0);
// Set Creature 0 to be Trigger
// Script 00 : Kill him and the Camp Despawns
// SetLocalString(oCamp, "CampTrigger", "C0");
// SetLocalInt(oCamp, "CampTriggerScript", 0);
// Set Placeable 0 to be Camp Center
//SetLocalString(oCamp, "CampCenter", "P0");
// Set Placeable 0 and Spawn Flags
// First Placeable always Spawns at Center of Camp
// If CampCenter Is Not Set
//SetLocalString(oCamp, "CampP0", "plc_campfrwspit");
SetLocalString(oCamp, "CampP0_Flags", "SP_SF");
// Set Placeable 1 and Spawn Flags
//SetLocalString(oCamp, "CampP1", "plc_chest1");
//SetLocalString(oCamp, "CampP1_Flags", "SP_PL3T80P30");
// Set Creature 0 and Spawn Flags
SetLocalString(oCamp, "CampC0", "RA_DIRERAT001");
SetLocalString(oCamp, "CampC0_Flags", "SP_RW_CD060");
// Set Creature 1 and Spawn Flags
SetLocalString(oCamp, "CampC1", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC1_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC1_Flags", "SP_RW_CD060");
// Set Creature 2 and Spawn Flags
SetLocalString(oCamp, "CampC2", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC2_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC2_Flags", "SP_RW_CD060");
// Set Creature 3 and Spawn Flags
SetLocalString(oCamp, "CampC3", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC3_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC3_Flags", "SP_RW_CD060");
// Set Creature 4 and Spawn Flags
SetLocalString(oCamp, "CampC4", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC4_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC4_Flags", "SP_RW_CD060");
// Set Creature 5 and Spawn Flags
SetLocalString(oCamp, "CampC5", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC5_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC5_Flags", "SP_RW_CD060");
// Set Creature 6 and Spawn Flags
SetLocalString(oCamp, "CampC6", "ra_wererat001");
// SetLocalString(oCamp, "CampC6_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC6_Flags", "SP_RW_CD060");
// Set Creature 7 and Spawn Flags
SetLocalString(oCamp, "CampC7", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC7_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC7_Flags", "SP_RW_CD060");
// Set Creature 8 and Spawn Flags
SetLocalString(oCamp, "CampC8", "RA_DIRERAT001");
SetLocalString(oCamp, "CampC8_Flags", "SP_RW_CD060");
// Set Creature 9 and Spawn Flags
SetLocalString(oCamp, "CampC9", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC9_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC9_Flags", "SP_RW_CD060");
// Set Creature 10 and Spawn Flags
SetLocalString(oCamp, "CampC10", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC10_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC10_Flags", "SP_RW_CD060");
// Set Creature 11 and Spawn Flags
SetLocalString(oCamp, "CampC11", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC11_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC11_Flags", "SP_RW_CD060");
// Set Creature 12 and Spawn Flags
SetLocalString(oCamp, "CampC12", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC12_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC12_Flags", "SP_RW_CD060");
// Set Creature 13 and Spawn Flags
SetLocalString(oCamp, "CampC13", "ra_wererat001");
// SetLocalString(oCamp, "CampC13_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC13_Flags", "SP_RW_CD060");
// Set Creature 14 and Spawn Flags
SetLocalString(oCamp, "CampC14", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC14_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC14_Flags", "SP_RW_CD060");
// Set Creature 15 and Spawn Flags
SetLocalString(oCamp, "CampC15", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC15_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC15_Flags", "SP_RW_CD060");
// Set Creature 16 and Spawn Flags
SetLocalString(oCamp, "CampC16", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC16_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC16_Flags", "SP_RW_CD060");
// Set Creature 17 and Spawn Flags
SetLocalString(oCamp, "CampC17", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC17_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC17_Flags", "SP_RW_CD060");
// Set Creature 18 and Spawn Flags
SetLocalString(oCamp, "CampC18", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC18_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC18_Flags", "SP_RW_CD060");
// Set Creature 19 and Spawn Flags
SetLocalString(oCamp, "CampC19", "RA_DIRERAT001");
// SetLocalString(oCamp, "CampC19_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC19_Flags", "SP_RW_CD060");
break;
}
//:: 3d6 Dire Rats + 1d2 Wererats
case 2:
//:: 2d6 Ghouls [2 HD] + 25% chance of 1d3 Ghouls [4HD]
{
int nSpawnNum = 3 + d6(2);
int randomNum;
// Set Number of Placeables
SetLocalInt(oCamp, "CampNumP", 0);
// Set Number of Creatures
SetLocalInt(oCamp, "CampNumC", nSpawnNum);
// Set Radius of Camp
SetLocalFloat(oCamp, "CampRadius", 10.0);
// Set Creature 0 to be Trigger
// Script 00 : Kill him and the Camp Despawns
SetLocalString(oCamp, "CampTrigger", "C0");
SetLocalInt(oCamp, "CampTriggerScript", 0);
// Set Placeable 0 to be Camp Center
//SetLocalString(oCamp, "CampCenter", "P0");
// Set Placeable 0 and Spawn Flags
// First Placeable always Spawns at Center of Camp
// If CampCenter Is Not Set
//SetLocalString(oCamp, "CampP0", "plc_campfrwspit");
SetLocalString(oCamp, "CampP0_Flags", "SP_SF");
// Set Placeable 1 and Spawn Flags
//SetLocalString(oCamp, "CampP1", "plc_chest1");
//SetLocalString(oCamp, "CampP1_Flags", "SP_PL3T80P30");
randomNum = d100(1);
if (randomNum < 10)
{
// Set Creature 0 and Spawn Flags
SetLocalString(oCamp, "CampC0", "ghast001");
SetLocalString(oCamp, "CampC0_Flags", "SP_RW_CD10_RH30");
}
else
{
// Set Creature 0 and Spawn Flags
SetLocalString(oCamp, "CampC0", "ghoul001");
SetLocalString(oCamp, "CampC0_Flags", "SP_RW_CD10_RH30");
}
randomNum = d100(1);
if (randomNum < 10)
{
// Set Creature 1 and Spawn Flags
SetLocalString(oCamp, "CampC1", "ghast001");
// SetLocalString(oCamp, "CampC1_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC1_Flags", "SP_RW_CD10_RH30");
}
else
{
// Set Creature 1 and Spawn Flags
SetLocalString(oCamp, "CampC1", "ghoul001");
SetLocalString(oCamp, "CampC1_Flags", "SP_RW_CD10_RH30");
}
randomNum = d100(1);
if (randomNum < 10)
{
// Set Creature 2 and Spawn Flags
SetLocalString(oCamp, "CampC2", "ghast001");
// SetLocalString(oCamp, "CampC2_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC2_Flags", "SP_RW_CD10_RH30");
}
else
{
// Set Creature 2 and Spawn Flags
SetLocalString(oCamp, "CampC2", "ghoul001");
SetLocalString(oCamp, "CampC2_Flags", "SP_RW_CD10_RH30");
}
// Set Creature 3 and Spawn Flags
SetLocalString(oCamp, "CampC3", "ghoul001");
// SetLocalString(oCamp, "CampC3_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC3_Flags", "SP_RW_CD10_RH30");
// Set Creature 4 and Spawn Flags
SetLocalString(oCamp, "CampC4", "ghoul001");
// SetLocalString(oCamp, "CampC4_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC4_Flags", "SP_RW_CD10_RH30");
// Set Creature 5 and Spawn Flags
SetLocalString(oCamp, "CampC5", "ghoul001");
// SetLocalString(oCamp, "CampC5_Flags", "SP_SF_RW_CD60_RH");
SetLocalString(oCamp, "CampC5_Flags", "SP_RW_CD10_RH30");
// Set Creature 6 and Spawn Flags
SetLocalString(oCamp, "CampC6", "ghoul001");
SetLocalString(oCamp, "CampC6_Flags", "SP_RW_CD10_RH30");
// Set Creature 7 and Spawn Flags
SetLocalString(oCamp, "CampC7", "ghast001");
SetLocalString(oCamp, "CampC7_Flags", "SP_RW_CD10_RH30");
// Set Creature 8 and Spawn Flags
SetLocalString(oCamp, "CampC8", "ghoul001");
SetLocalString(oCamp, "CampC8_Flags", "SP_RW_CD10_RH30");
// Set Creature 9 and Spawn Flags
SetLocalString(oCamp, "CampC9", "ghoul001");
SetLocalString(oCamp, "CampC9_Flags", "SP_RW_CD10_RH30");
// Set Creature 10 and Spawn Flags
SetLocalString(oCamp, "CampC10", "ghoul001");
SetLocalString(oCamp, "CampC10_Flags", "SP_RW_CD10_RH30");
// Set Creature 11 and Spawn Flags
SetLocalString(oCamp, "CampC11", "ghoul001");
SetLocalString(oCamp, "CampC11_Flags", "SP_RW_CD10_RH30");
// Set Creature 12 and Spawn Flags
SetLocalString(oCamp, "CampC12", "ghoul001");
SetLocalString(oCamp, "CampC12_Flags", "SP_RW_CD10_RH30");
// Set Creature 13 and Spawn Flags
SetLocalString(oCamp, "CampC13", "ghoul001");
SetLocalString(oCamp, "CampC13_Flags", "SP_RW_CD10_RH30");
// Set Creature 14 and Spawn Flags
SetLocalString(oCamp, "CampC14", "ghoul001");
SetLocalString(oCamp, "CampC14_Flags", "SP_RW_CD10_RH30");
break;
}
//:: 2d6 Ghouls [2 HD] + 25% chance of 1d3 Ghouls [4HD]
case 3:
//:: 1 Gelatinous Cube: 04 HD
{
// Set Number of Placeables
SetLocalInt(oCamp, "CampNumP", 0);
// Set Number of Creatures
SetLocalInt(oCamp, "CampNumC", 1);
// Set Radius of Camp
SetLocalFloat(oCamp, "CampRadius", 10.0);
// Set Creature 0 to be Trigger
// Script 00 : Kill him and the Camp Despawns
// SetLocalString(oCamp, "CampTrigger", "C0");
// SetLocalInt(oCamp, "CampTriggerScript", 0);
// Set Placeable 0 to be Camp Center
//SetLocalString(oCamp, "CampCenter", "P0");
// Set Placeable 0 and Spawn Flags
// First Placeable always Spawns at Center of Camp
// If CampCenter Is Not Set
//SetLocalString(oCamp, "CampP0", "plc_campfrwspit");
SetLocalString(oCamp, "CampP0_Flags", "SP_SF");
// Set Placeable 1 and Spawn Flags
//SetLocalString(oCamp, "CampP1", "plc_chest1");
//SetLocalString(oCamp, "CampP1_Flags", "SP_PL3T80P30");
// Set Creature 0 and Spawn Flags
SetLocalString(oCamp, "CampC0", "RA_GELCUBE001");
SetLocalString(oCamp, "CampC0_Flags", "SP_RW_CD060");
break;
}
//:: 1 Gelatinous Cube: 04 HD
case 4:
//:: 1 Dung Monster: 10 HD
{
// Set Number of Placeables
SetLocalInt(oCamp, "CampNumP", 0);
// Set Number of Creatures
SetLocalInt(oCamp, "CampNumC", 1);
// Set Radius of Camp
SetLocalFloat(oCamp, "CampRadius", 10.0);
// Set Creature 0 to be Trigger
// Script 00 : Kill him and the Camp Despawns
// SetLocalString(oCamp, "CampTrigger", "C0");
// SetLocalInt(oCamp, "CampTriggerScript", 0);
// Set Placeable 0 to be Camp Center
//SetLocalString(oCamp, "CampCenter", "P0");
// Set Placeable 0 and Spawn Flags
// First Placeable always Spawns at Center of Camp
// If CampCenter Is Not Set
//SetLocalString(oCamp, "CampP0", "plc_campfrwspit");
SetLocalString(oCamp, "CampP0_Flags", "SP_SF");
// Set Placeable 1 and Spawn Flags
//SetLocalString(oCamp, "CampP1", "plc_chest1");
//SetLocalString(oCamp, "CampP1_Flags", "SP_PL3T80P30");
// Set Creature 0 and Spawn Flags
SetLocalString(oCamp, "CampC0", "ra_dungmonster01");
SetLocalString(oCamp, "CampC0_Flags", "SP_RW_CD060");
break;
}
//:: 1 Dung Monster: 10 HD
case 5: case 6: case 7: case 8: case 10: case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20:
//:: 1 Dire Rat
{
// Set Number of Placeables
SetLocalInt(oCamp, "CampNumP", 0);
// Set Number of Creatures
SetLocalInt(oCamp, "CampNumC", 1);
// Set Radius of Camp
SetLocalFloat(oCamp, "CampRadius", 10.0);
// Set Creature 0 to be Trigger
// Script 00 : Kill him and the Camp Despawns
// SetLocalString(oCamp, "CampTrigger", "C0");
// SetLocalInt(oCamp, "CampTriggerScript", 0);
// Set Placeable 0 to be Camp Center
//SetLocalString(oCamp, "CampCenter", "P0");
// Set Placeable 0 and Spawn Flags
// First Placeable always Spawns at Center of Camp
// If CampCenter Is Not Set
//SetLocalString(oCamp, "CampP0", "plc_campfrwspit");
SetLocalString(oCamp, "CampP0_Flags", "SP_SF");
// Set Placeable 1 and Spawn Flags
//SetLocalString(oCamp, "CampP1", "plc_chest1");
//SetLocalString(oCamp, "CampP1_Flags", "SP_PL3T80P30");
// Set Creature 0 and Spawn Flags
SetLocalString(oCamp, "CampC0", "RA_DIRERAT001");
SetLocalString(oCamp, "CampC0_Flags", "SP_RW_CD060");
break;
}
//:: 1 Dire Rat
}
}
//:: Dungeon Level 1 Random Encounters
//:: The Dishonest Patrol (EL 11)
if (sCamp == "dishonest_patrol")

View File

@@ -33,7 +33,7 @@ void main()
effect ePoison = EffectPoison(POISON_LARGE_SCORPION_VENOM);
ePoison = ExtraordinaryEffect(ePoison);
effect eLink1 = EffectLinkEffects(eVis1, eDamage);
effect eLink1 = EffectLinkEffects(eStopped, eVis1);
eLink1 = ExtraordinaryEffect(eLink1);
//Find first target in the size
@@ -44,8 +44,8 @@ void main()
if(!MySavingThrow(SAVING_THROW_REFLEX, oTarget, 20, SAVING_THROW_TYPE_NONE))
{
//:: Apply damage & hold effect
ApplyEffectToObject(DURATION_TYPE_INSTANT, eLink1, oTarget);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eStopped, oTarget, RoundsToSeconds(nDuration));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink1, oTarget, RoundsToSeconds(nDuration));
SendMessageToPC(oTarget, "You've stepped thru a false floor, into a spiked trap.");
if(!MySavingThrow(SAVING_THROW_FORT, oTarget, 18, SAVING_THROW_TYPE_POISON))