Added barred doors, set up more city denizen spawners, cleaned up Baleas Town Guards, Faerunized the "Holy Paladins". Added character deleter NPC in the OOC Starting Area.
186 lines
7.7 KiB
Plaintext
186 lines
7.7 KiB
Plaintext
///////////////////////////////////
|
|
// Carcerian's BattleCry Script //
|
|
// "Evil Dead" Edition //
|
|
///////////////////////////////////
|
|
|
|
#include "NW_I0_GENERIC"
|
|
|
|
const int BattleCryChance = 15;
|
|
const int CombatCryChance = 20;
|
|
const int DeathCryChance = 20;
|
|
const int CustomUndeadChance = 50;
|
|
|
|
const string COLOR_RED = "<cþ >";
|
|
const string COLOR_DARK = "<cSSS>";
|
|
const string COLOR_GREEN = "<c þ >";
|
|
const string COLOR_WHITE = "<cþþþ>";
|
|
const string COLOR_VIOLET = "<c¥ ¥>";
|
|
const string COLOR_YELLOW = "<cþþ >";
|
|
|
|
int HasSpoken()
|
|
{
|
|
if (GetLocalInt(OBJECT_SELF,"HASSPOKEN")) return 1;
|
|
SetLocalInt(OBJECT_SELF,"HASSPOKEN",1);
|
|
DelayCommand(IntToFloat(d10(4)),SetLocalInt(OBJECT_SELF,"HASSPOKEN",0));
|
|
return 0;
|
|
}
|
|
|
|
void DoUndeadChatter()
|
|
{
|
|
string sMyTag = GetTag(OBJECT_SELF);
|
|
if ((FindSubString(sMyTag,"SKEL")>-1)||(FindSubString(sMyTag,"MOHRG")>-1))
|
|
{
|
|
switch (d3()) // Skeletons
|
|
{
|
|
case 1 : ActionSpeakString(COLOR_WHITE+"I got a bone to pick with you!",TALKVOLUME_TALK); break;
|
|
case 2 : ActionSpeakString(COLOR_WHITE+"Forward, you worthless bags of bones!",TALKVOLUME_TALK); break;
|
|
case 3 : ActionSpeakString(COLOR_WHITE+"CHARGE!",TALKVOLUME_TALK); break;
|
|
}
|
|
}
|
|
else if (FindSubString(sMyTag,"ZOMB")>-1)
|
|
{
|
|
if (Random(2)) ActionSpeakString(COLOR_GREEN+"Brains!",TALKVOLUME_TALK);
|
|
else ActionSpeakString(COLOR_GREEN+"BRAINS!",TALKVOLUME_TALK);
|
|
// "More brains!"
|
|
}
|
|
else if ((FindSubString(sMyTag,"GHOUL")>-1)||(FindSubString(sMyTag,"GHAST")>-1)
|
|
||(FindSubString(sMyTag,"WIGHT")>-1))
|
|
{
|
|
switch (d4()) // Flesh Eaters
|
|
{
|
|
case 1 : ActionSpeakString(COLOR_GREEN+"I'll feast on your entrails!",TALKVOLUME_TALK); break;
|
|
case 2 : ActionSpeakString(COLOR_GREEN+"FOOD!",TALKVOLUME_TALK); break;
|
|
case 3 : ActionSpeakString(COLOR_GREEN+"Live ones!!",TALKVOLUME_TALK); break;
|
|
case 4 : ActionSpeakString(COLOR_GREEN+"FLESSSSHHHH!!!",TALKVOLUME_TALK); break;
|
|
}
|
|
}
|
|
else if ((FindSubString(sMyTag,"WRAITH")>-1)||(FindSubString(sMyTag,"ALLIP")>-1)
|
|
||(FindSubString(sMyTag,"Bodak")>-1)||(FindSubString(sMyTag,"SHADOW")>-1)
|
|
||(FindSubString(sMyTag,"SHFIEND")>-1)||(FindSubString(sMyTag,"SPECTRE")>-1))
|
|
{
|
|
switch (d4()) // Soul Eaters
|
|
{
|
|
case 1 : ActionSpeakString(COLOR_VIOLET+"I'll swallow your soul!",TALKVOLUME_TALK); break;
|
|
case 2 : ActionSpeakString(COLOR_VIOLET+"Your soul will be mine!",TALKVOLUME_TALK); break;
|
|
case 3 : ActionSpeakString(COLOR_VIOLET+"Mine!!!!",TALKVOLUME_TALK); break;
|
|
case 4 : ActionSpeakString(COLOR_VIOLET+"The darkness calls for you...",TALKVOLUME_TALK); break;
|
|
}
|
|
}
|
|
else switch (d6()) // Generic Undead
|
|
{
|
|
case 1 : ActionSpeakString(COLOR_RED+"I'll swallow your soul!",TALKVOLUME_TALK); break;
|
|
case 2 : ActionSpeakString(COLOR_RED+"Blood and souls!",TALKVOLUME_TALK); break;
|
|
case 3 : ActionSpeakString(COLOR_RED+"Joinnnn usssssssss!",TALKVOLUME_TALK); break;
|
|
case 4 : ActionSpeakString(COLOR_RED+"For the Master!",TALKVOLUME_TALK); break;
|
|
case 5 : ActionSpeakString(COLOR_RED+"For the Master!",TALKVOLUME_TALK); break;
|
|
case 6 : ActionSpeakString(COLOR_RED+"One by one we will take you!",TALKVOLUME_TALK); break;
|
|
}
|
|
}
|
|
|
|
// For use on perception
|
|
void DoBattleCry()
|
|
{ //if undead spotted "i see dead people!" "Dead ahead!"
|
|
if (d100()<=BattleCryChance)
|
|
{
|
|
if (HasSpoken()) return;
|
|
if ((GetRacialType(OBJECT_SELF) == RACIAL_TYPE_UNDEAD)&&(d100()<=CustomUndeadChance))
|
|
{
|
|
DoUndeadChatter();
|
|
}
|
|
else switch (d10())
|
|
{
|
|
case 1: PlayVoiceChat(VOICE_CHAT_ATTACK); break;
|
|
case 2: PlayVoiceChat(VOICE_CHAT_BATTLECRY1); break;
|
|
case 3: PlayVoiceChat(VOICE_CHAT_BATTLECRY2); break;
|
|
case 4: PlayVoiceChat(VOICE_CHAT_BATTLECRY3); break;
|
|
case 5: PlayVoiceChat(VOICE_CHAT_THREATEN); break;
|
|
case 6: PlayVoiceChat(VOICE_CHAT_TAUNT); break;
|
|
case 7: PlayVoiceChat(VOICE_CHAT_ENEMIES); break;
|
|
case 8: PlayVoiceChat(VOICE_CHAT_CHEER); break;
|
|
case 9: PlayVoiceChat(VOICE_CHAT_FOLLOWME); break;
|
|
case 10: PlayVoiceChat(VOICE_CHAT_LOOKHERE); break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//For End of Combat Round
|
|
void DoCombatCry()
|
|
{
|
|
if (GetHasEffect(EFFECT_TYPE_FRIGHTENED))
|
|
{
|
|
if (d100()<=CombatCryChance)
|
|
{
|
|
if (HasSpoken()) return;
|
|
if ((GetRacialType(OBJECT_SELF) == RACIAL_TYPE_UNDEAD)&&(d100()<=CustomUndeadChance))
|
|
switch (d6()) //Turned undead :)
|
|
{
|
|
case 1 : ActionSpeakString(COLOR_YELLOW+"It Burns! It Burns!",TALKVOLUME_TALK); break;
|
|
case 2 : ActionSpeakString(COLOR_YELLOW+"Cursed Light!",TALKVOLUME_TALK); break;
|
|
case 3 : ActionSpeakString(COLOR_YELLOW+"Your faith is weak, I can feel your fear...",TALKVOLUME_TALK); break;
|
|
case 4 : ActionSpeakString(COLOR_YELLOW+"AAAIIIEEE!!!",TALKVOLUME_TALK); break;
|
|
case 5 : ActionSpeakString(COLOR_YELLOW+"NOOO!!!",TALKVOLUME_TALK); break;
|
|
case 6 : ActionSpeakString(COLOR_YELLOW+"It Burns!",TALKVOLUME_TALK); break;
|
|
}
|
|
else switch (d6())
|
|
{
|
|
case 1: PlayVoiceChat(VOICE_CHAT_FLEE); break;
|
|
case 2: PlayVoiceChat(VOICE_CHAT_HELP); break;
|
|
case 3: PlayVoiceChat(VOICE_CHAT_GUARDME); break;
|
|
case 4: PlayVoiceChat(VOICE_CHAT_CUSS); break;
|
|
case 5: PlayVoiceChat(VOICE_CHAT_BADIDEA); break;
|
|
case 6: PlayVoiceChat(VOICE_CHAT_NEARDEATH); break;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (d100()<=CombatCryChance)
|
|
{
|
|
if (HasSpoken()) return;
|
|
if ((GetRacialType(OBJECT_SELF) == RACIAL_TYPE_UNDEAD)&&(d100()<=CustomUndeadChance))
|
|
switch (d6())
|
|
{
|
|
DoUndeadChatter();
|
|
}
|
|
else switch (d6())
|
|
{
|
|
case 1: PlayVoiceChat(VOICE_CHAT_BATTLECRY1); break;
|
|
case 2: PlayVoiceChat(VOICE_CHAT_BATTLECRY2); break;
|
|
case 3: PlayVoiceChat(VOICE_CHAT_BATTLECRY3); break;
|
|
case 4: PlayVoiceChat(VOICE_CHAT_LAUGH); break;
|
|
case 5: PlayVoiceChat(VOICE_CHAT_TAUNT); break;
|
|
case 6: PlayVoiceChat(VOICE_CHAT_THREATEN); break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//For Creature Death
|
|
void DoDeathCry()
|
|
{
|
|
if (d100()<=DeathCryChance)
|
|
{
|
|
if (HasSpoken()) return;
|
|
if ((GetRacialType(OBJECT_SELF) == RACIAL_TYPE_UNDEAD)&&(d100()<=CustomUndeadChance))
|
|
switch (d6())
|
|
{
|
|
case 1 : ActionSpeakString(COLOR_RED+"Dead by dawn! Dead by dawn!",TALKVOLUME_TALK); break;
|
|
case 2 : ActionSpeakString(COLOR_RED+"Death is only the beginning!",TALKVOLUME_TALK); break;
|
|
case 3 : ActionSpeakString(COLOR_RED+"Darkness take me...",TALKVOLUME_TALK); break;
|
|
case 4 : ActionSpeakString(COLOR_RED+"Free at last...",TALKVOLUME_TALK); break;
|
|
case 5 : ActionSpeakString(COLOR_RED+"Time to die...",TALKVOLUME_TALK); break;
|
|
case 6 : ActionSpeakString(COLOR_RED+"Thank you...",TALKVOLUME_TALK); break;
|
|
} // "No more tears..."
|
|
else switch (d6())
|
|
{
|
|
case 1: PlayVoiceChat(VOICE_CHAT_CUSS); break;
|
|
case 2: PlayVoiceChat(VOICE_CHAT_DEATH); break;
|
|
case 3: PlayVoiceChat(VOICE_CHAT_NEARDEATH); break;
|
|
case 4: PlayVoiceChat(VOICE_CHAT_GOODBYE); break;
|
|
case 5: PlayVoiceChat(VOICE_CHAT_LAUGH); break;
|
|
case 6: PlayVoiceChat(VOICE_CHAT_HEALME); break;
|
|
}
|
|
}
|
|
}
|
|
//void main (){}
|