Remade Dungeon Level One: Central
Remade Dungeon Level One: Central. Added Didiamus' creature overrides. Full compile.
This commit is contained in:
16
_module/nss/at_ghoulchest1.nss
Normal file
16
_module/nss/at_ghoulchest1.nss
Normal 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);
|
||||
}
|
17
_module/nss/at_ghoulchest2.nss
Normal file
17
_module/nss/at_ghoulchest2.nss
Normal 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);
|
||||
}
|
9
_module/nss/at_givehrsesculp.nss
Normal file
9
_module/nss/at_givehrsesculp.nss
Normal 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);
|
||||
}
|
16
_module/nss/at_gotplaycards.nss
Normal file
16
_module/nss/at_gotplaycards.nss
Normal 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);
|
||||
}
|
15
_module/nss/at_grabcards.nss
Normal file
15
_module/nss/at_grabcards.nss
Normal 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);
|
||||
}
|
||||
}
|
37
_module/nss/cr_dung_slam.nss
Normal file
37
_module/nss/cr_dung_slam.nss
Normal 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);
|
||||
}
|
8
_module/nss/dont_look.nss
Normal file
8
_module/nss/dont_look.nss
Normal file
@@ -0,0 +1,8 @@
|
||||
void main()
|
||||
{
|
||||
// don't face the speaker
|
||||
float fFacing = GetFacing(OBJECT_SELF);
|
||||
if (GetListenPatternNumber()==-1)
|
||||
BeginConversation();
|
||||
SetFacing(fFacing);
|
||||
}
|
@@ -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);
|
||||
|
18
_module/nss/floodtraplever.nss
Normal file
18
_module/nss/floodtraplever.nss
Normal 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);
|
||||
}
|
21
_module/nss/lockflooddoor.nss
Normal file
21
_module/nss/lockflooddoor.nss
Normal 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);
|
||||
}
|
30
_module/nss/object_respawner.nss
Normal file
30
_module/nss/object_respawner.nss
Normal 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)));
|
||||
}
|
||||
|
@@ -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
|
||||
|
110
_module/nss/sc_appraise_dc10.nss
Normal file
110
_module/nss/sc_appraise_dc10.nss
Normal 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;
|
||||
}
|
||||
} */
|
20
_module/nss/sc_chk_looted.nss
Normal file
20
_module/nss/sc_chk_looted.nss
Normal 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;
|
||||
}
|
||||
}
|
30
_module/nss/sc_ck_ghoulchst.nss
Normal file
30
_module/nss/sc_ck_ghoulchst.nss
Normal 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;
|
||||
}
|
||||
}
|
12
_module/nss/sc_remtoxcards.nss
Normal file
12
_module/nss/sc_remtoxcards.nss
Normal 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;
|
||||
}
|
@@ -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;
|
||||
}
|
||||
} */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
28
_module/nss/sc_search_dc20.nss
Normal file
28
_module/nss/sc_search_dc20.nss
Normal 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;
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
12
_module/nss/sc_seetoxcards.nss
Normal file
12
_module/nss/sc_seetoxcards.nss
Normal 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;
|
||||
}
|
110
_module/nss/sc_spot_dc10.nss
Normal file
110
_module/nss/sc_spot_dc10.nss
Normal 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
110
_module/nss/sc_spot_dc5.nss
Normal 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;
|
||||
}
|
||||
} */
|
@@ -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);
|
||||
}
|
||||
|
@@ -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")
|
||||
|
@@ -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))
|
||||
|
Reference in New Issue
Block a user