816 lines
32 KiB
Plaintext
816 lines
32 KiB
Plaintext
#include "craft_inc"
|
|
#include "horse_include"
|
|
#include "prc_class_const"
|
|
|
|
void ApplyAdditionalHP(object oPC, int iAmount, float fDuration)
|
|
{
|
|
effect eHP;
|
|
eHP=GetFirstEffect(oPC);
|
|
while(GetIsEffectValid(eHP))
|
|
{
|
|
if(GetEffectType(eHP)==EFFECT_TYPE_TEMPORARY_HITPOINTS)
|
|
{
|
|
RemoveEffect(oPC, eHP);
|
|
SendMessageToPC(oPC, "Removing Existing HP Buff");
|
|
}
|
|
eHP=GetNextEffect(oPC);
|
|
}
|
|
|
|
eHP=EffectTemporaryHitpoints(iAmount);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oPC, fDuration);
|
|
eHP=EffectVisualEffect(VFX_IMP_HOLY_AID);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oPC, fDuration);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oItem = GetItemActivated();
|
|
object oActivator = GetItemActivator();
|
|
object oPC = GetItemActivator();
|
|
object oTarget=GetItemActivatedTarget();
|
|
location lActivator = GetLocation(oActivator);
|
|
string sItemTag = GetTag(oItem);
|
|
string sItemTag2 = GetResRef(oTarget);
|
|
|
|
location lTarget = GetLocation(oTarget);
|
|
int iSkill = GetSkillRank(SKILL_PERFORM, oPC); //Skill Modifier for ranks in perform
|
|
int iRoll = d20(); //Skill Roll
|
|
int iTotal = iRoll + iSkill; //DC Check
|
|
string sTotal = IntToString(iTotal);
|
|
effect eSong = EffectVisualEffect(VFX_DUR_BARD_SONG);
|
|
GPA_OnActivate(oPC,oItem);
|
|
|
|
ExecuteScript(GetTag(GetItemActivated()), OBJECT_SELF);
|
|
|
|
int iBardic = GetLevelByClass(CLASS_TYPE_BARD, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_DIRGESINGER, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_DRAGONSONG_LYRIST, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_SUBLIME_CHORD, oPC)
|
|
+ GetLevelByClass(CLASS_TYPE_VIRTUOSO, oPC);
|
|
|
|
if (sItemTag == "em_bindstone")
|
|
{
|
|
ExecuteScript("em_onitmactvt", oPC);
|
|
}
|
|
|
|
if (sItemTag == "DyeKit")
|
|
{
|
|
AssignCommand(oPC, ActionStartConversation(oPC, "dye_dyekit", TRUE));
|
|
}
|
|
if (sItemTag == "ULITEM_139")
|
|
{
|
|
AssignCommand(oPC, ActionStartConversation(oPC, "dye_dyekit", TRUE));
|
|
}
|
|
if (sItemTag == "ULITEM_191")
|
|
{
|
|
GiveXPToCreature(oPC, 200);
|
|
ExecuteScript("wizlevel1", oPC);
|
|
ExecuteScript("wizlevel1", oPC);
|
|
ExecuteScript("wizlevel1", oPC);
|
|
ExecuteScript("wizlevel1", oPC);
|
|
}
|
|
if (sItemTag == "ULITEM_192")
|
|
{
|
|
GiveXPToCreature(oPC, 250);
|
|
ExecuteScript("wizlevel1", oPC);
|
|
ExecuteScript("wizlevel2", oPC);
|
|
ExecuteScript("wizlevel2", oPC);
|
|
ExecuteScript("wizlevel2", oPC);
|
|
ExecuteScript("wizlevel2", oPC);
|
|
}
|
|
if (sItemTag == "ULITEM_193")
|
|
{
|
|
GiveXPToCreature(oPC, 300);
|
|
ExecuteScript("wizlevel1", oPC);
|
|
ExecuteScript("wizlevel2", oPC);
|
|
ExecuteScript("wizlevel3", oPC);
|
|
ExecuteScript("wizlevel3", oPC);
|
|
ExecuteScript("wizlevel3", oPC);
|
|
ExecuteScript("wizlevel3", oPC);
|
|
}
|
|
if (sItemTag=="EXPBOOK")
|
|
{
|
|
GiveXPToCreature(oPC, 1000);
|
|
effect eHP;
|
|
eHP=EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oPC, 0.0f);
|
|
}
|
|
if ((sItemTag=="ULITEM_111")||(sItemTag=="ULITEM_112")||(sItemTag=="ULITEM_113")||(sItemTag=="ULITEM_114")||(sItemTag=="ULITEM_115")||(sItemTag=="ULITEM_116")||(sItemTag=="ULITEM_117"))
|
|
{
|
|
GiveXPToCreature(oPC, 500);
|
|
effect eHP;
|
|
eHP=EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_HOLY);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHP, oPC, 0.0f);
|
|
}
|
|
|
|
if (sItemTag=="hornofpaerun")
|
|
{
|
|
ExecuteScript("hornofpaerun", OBJECT_SELF);
|
|
}
|
|
if (sItemTag=="Gher2")
|
|
{
|
|
ExecuteScript("gherportal", OBJECT_SELF);
|
|
}
|
|
if (sItemTag=="ULITEM_127")
|
|
{
|
|
ExecuteScript("gherportal", OBJECT_SELF);
|
|
}
|
|
|
|
|
|
if (sItemTag=="ML1")
|
|
{
|
|
//get object that activated item
|
|
object oActivator = GetItemActivator();
|
|
|
|
// some speech (for debugging too)
|
|
//AssignCommand(oActivator, SpeakString("Hi! I'm the sword."));
|
|
|
|
//create TalkingSwordAvator object
|
|
//ActionJumpToLocation and JumpToLocation don't seem to work with placeable objects...
|
|
object oSwordAvatar = CreateObject(OBJECT_TYPE_PLACEABLE, "talkingbeads", GetLocation(oActivator), FALSE);
|
|
|
|
//for some reason if I swap oActvator and oSwordAvatar around it doesn't work.
|
|
AssignCommand(oActivator, ActionStartConversation(oSwordAvatar, "", FALSE));
|
|
|
|
//In the conversation script when the conversation ends, I destroy the object
|
|
}
|
|
|
|
|
|
if (sItemTag=="ML2")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_LIGHT_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
ApplyAdditionalHP(oPC, 30, 3600.0);
|
|
ActionStartConversation(oPC,"prayerbeads",TRUE);
|
|
}
|
|
if (sItemTag=="ML3")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_MODERATE_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
ApplyAdditionalHP(oPC, 40, 3600.0);
|
|
ActionStartConversation(oPC,"prayerbeads",TRUE);
|
|
}
|
|
if (sItemTag=="ML4")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_SERIOUS_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
ApplyAdditionalHP(oPC, 50, 3600.0);
|
|
ActionStartConversation(oPC,"prayerbeads",TRUE);
|
|
}
|
|
if (sItemTag=="ML5")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_CRITICAL_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
ApplyAdditionalHP(oPC, 60, 3600.0);
|
|
ActionStartConversation(oPC,"prayerbeads",TRUE);
|
|
}
|
|
if (sItemTag=="ML6")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_CRITICAL_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
ApplyAdditionalHP(oPC, 60, 3600.0);
|
|
ActionStartConversation(oPC,"prayerbeads",TRUE);
|
|
}
|
|
if (sItemTag=="ML7")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_CRITICAL_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
ApplyAdditionalHP(oPC, 80, 3600.0);
|
|
ActionStartConversation(oPC,"prayerbeads",TRUE);
|
|
}
|
|
if (sItemTag=="ML8")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
ApplyAdditionalHP(oPC, 100, 3600.0);
|
|
ActionStartConversation(oPC,"prayerbeads",TRUE);
|
|
}
|
|
if (sItemTag=="ML9")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_MASS_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
ApplyAdditionalHP(oPC, 200, 3600.0);
|
|
ActionStartConversation(oPC,"prayerbeads",TRUE);
|
|
}
|
|
if (sItemTag=="MLavenger")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_na_lavaburst1"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_MASS_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
ApplyAdditionalHP(oPC, 200, 3600.0);
|
|
ActionStartConversation(oPC,"prayerbeads",TRUE);
|
|
}
|
|
if (sItemTag=="HradicTome")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_na_lavaburst2"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_STONESKIN, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEALING_CIRCLE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
}
|
|
|
|
if (sItemTag=="LQ6")
|
|
{
|
|
ExecuteScript("hornofpaerun", OBJECT_SELF);
|
|
}
|
|
if (sItemTag=="KelObjectHigh183")
|
|
{
|
|
ExecuteScript("gaunt_sapph", OBJECT_SELF);
|
|
}
|
|
if (sItemTag=="KelObjectHigh184")
|
|
{
|
|
ExecuteScript("gaunt_ruby", OBJECT_SELF);
|
|
}
|
|
if (sItemTag=="KelObjectHigh185")
|
|
{
|
|
ExecuteScript("gaunt_emer", OBJECT_SELF);
|
|
}
|
|
if (sItemTag=="AshenEnt1")
|
|
{
|
|
ExecuteScript("entwater", OBJECT_SELF);
|
|
}
|
|
if (sItemTag=="KryxStaff")
|
|
{
|
|
ExecuteScript("kryxstaff2", OBJECT_SELF);
|
|
}
|
|
if (sItemTag=="ExplosiveKeg")
|
|
{
|
|
CreateObject(OBJECT_TYPE_PLACEABLE, "explosivekeg", lActivator);
|
|
}
|
|
if (sItemTag=="friedgal3")
|
|
{
|
|
CreateObject(OBJECT_TYPE_CREATURE, "summonedsloven", lActivator);
|
|
CreateObject(OBJECT_TYPE_CREATURE, "summonedsloven", lActivator);
|
|
CreateObject(OBJECT_TYPE_CREATURE, "summonedsloven", lActivator);
|
|
CreateObject(OBJECT_TYPE_CREATURE, "summonedsloven", lActivator);
|
|
CreateObject(OBJECT_TYPE_CREATURE, "summonedsloven", lActivator);
|
|
}
|
|
if (sItemTag=="ssrall0012")
|
|
{
|
|
ExecuteScript("underworldstaff", OBJECT_SELF);
|
|
}
|
|
if (sItemTag=="Qetesh2")
|
|
{
|
|
ApplyAdditionalHP(oPC, 1000, 3600.0);
|
|
}
|
|
if (sItemTag=="OL1")
|
|
{
|
|
ApplyAdditionalHP(oPC, 10, 3600.0);
|
|
}
|
|
if (sItemTag=="OL2")
|
|
{
|
|
ApplyAdditionalHP(oPC, 10, 3600.0);
|
|
}
|
|
if (sItemTag=="OL3")
|
|
{
|
|
ApplyAdditionalHP(oPC, 20, 3600.0);
|
|
}
|
|
if (sItemTag=="OL4")
|
|
{
|
|
ApplyAdditionalHP(oPC, 20, 3600.0);
|
|
}
|
|
if (sItemTag=="OL5")
|
|
{
|
|
ApplyAdditionalHP(oPC, 50, 3600.0);
|
|
}
|
|
if (sItemTag=="OL6")
|
|
{
|
|
ApplyAdditionalHP(oPC, 75, 3600.0);
|
|
}
|
|
if (sItemTag=="OL7")
|
|
{
|
|
ApplyAdditionalHP(oPC, 75, 3600.0);
|
|
}
|
|
if (sItemTag=="REDEMPTION")
|
|
{
|
|
ApplyAdditionalHP(oPC, 100, 3600.0);
|
|
}
|
|
if (sItemTag=="HP_ITEM_05")
|
|
{
|
|
ApplyAdditionalHP(oPC, 5, 3600.0);
|
|
}
|
|
if (sItemTag=="HP_ITEM_10")
|
|
{
|
|
ApplyAdditionalHP(oPC, 10, 3600.0);
|
|
}
|
|
if (sItemTag=="HP_ITEM_15")
|
|
{
|
|
ApplyAdditionalHP(oPC, 15, 3600.0);
|
|
}
|
|
if (sItemTag=="HP_ITEM_20")
|
|
{
|
|
ApplyAdditionalHP(oPC, 20, 3600.0);
|
|
}
|
|
if (sItemTag=="HeijanMist")
|
|
{
|
|
ApplyAdditionalHP(oPC, 20, 3600.0);
|
|
}
|
|
if (sItemTag=="WaeyBread")
|
|
{
|
|
ApplyAdditionalHP(oPC, 20, 3600.0);
|
|
}
|
|
if (sItemTag=="MilitiaRations")
|
|
{
|
|
ApplyAdditionalHP(oPC, 20, 3600.0);
|
|
}
|
|
if (sItemTag=="Chimay")
|
|
{
|
|
ApplyAdditionalHP(oPC, 200, 3600.0);
|
|
}
|
|
if (sItemTag=="AmanbrakulHoney")
|
|
{
|
|
ApplyAdditionalHP(oPC, 30, 3600.0);
|
|
}
|
|
if (sItemTag=="OpiumSyrup")
|
|
{
|
|
ApplyAdditionalHP(oPC, 35, 3600.0);
|
|
}
|
|
if (sItemTag=="MilitiaRations2")
|
|
{
|
|
ApplyAdditionalHP(oPC, 30, 3600.0);
|
|
}
|
|
if (sItemTag=="HurWhiskey")
|
|
{
|
|
ApplyAdditionalHP(oPC, 25, 3600.0);
|
|
}
|
|
if (sItemTag=="DracheBrau")
|
|
{
|
|
ApplyAdditionalHP(oPC, 20, 3600.0);
|
|
}
|
|
if (sItemTag=="ChurchBlessing")
|
|
{
|
|
ApplyAdditionalHP(oPC, 50, 3600.0);
|
|
}
|
|
if (sItemTag=="PearlBombDet")
|
|
{
|
|
ExecuteScript("pearlbombactivat", OBJECT_SELF);
|
|
}
|
|
if (sItemTag=="PearlBombKit")
|
|
{
|
|
ExecuteScript("pearlbomb", OBJECT_SELF);
|
|
}
|
|
if (sItemTag=="Garganibil3")
|
|
{
|
|
ApplyAdditionalHP(oPC, 40, 3600.0);
|
|
}
|
|
if (sItemTag=="HP_ITEM_40")
|
|
{
|
|
ApplyAdditionalHP(oPC, 40, 3600.0);
|
|
}
|
|
if (sItemTag=="HP_ITEM_50")
|
|
{
|
|
ApplyAdditionalHP(oPC, 50, 3600.0);
|
|
}
|
|
if (sItemTag=="HP_ITEM_75")
|
|
{
|
|
ApplyAdditionalHP(oPC, 75, 3600.0);
|
|
}
|
|
if (sItemTag=="Rath3")
|
|
{
|
|
ApplyAdditionalHP(oPC, 100, 3600.0);
|
|
}
|
|
if (sItemTag=="BL1")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_an_crynight1"));
|
|
DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_LIGHT_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(4.0, ApplyAdditionalHP(oPC, 40, 3600.0));
|
|
}
|
|
if (sItemTag=="BL2")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_an_crynight2"));
|
|
DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_MODERATE_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(4.0, ApplyAdditionalHP(oPC, 60, 3600.0));
|
|
}
|
|
if (sItemTag=="BL3")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_an_crynight2"));
|
|
DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_SERIOUS_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(4.0, ApplyAdditionalHP(oPC, 80, 3600.0));
|
|
}
|
|
|
|
string sHealers = GetStringRight(sItemTag, 10);
|
|
if (sHealers=="HealersEye")
|
|
{
|
|
ExecuteScript("eyerez", oTarget);
|
|
}
|
|
|
|
if (sItemTag=="BL4")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_an_crynight4"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_BALAGARNSIRONHORN, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CURE_CRITICAL_WOUNDS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(4.0, ApplyAdditionalHP(oPC, 100, 3600.0));
|
|
}
|
|
if (sItemTag=="BL5")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_an_crynight3"));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_BALAGARNSIRONHORN, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(4.0, ApplyAdditionalHP(oPC, 150, 3600.0));
|
|
}
|
|
if (sItemTag=="thebutcher2")
|
|
{
|
|
AssignCommand(oPC, PlaySound("as_pl_cryingf3"));
|
|
ExecuteScript("wallspike", oPC);
|
|
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
|
while (GetIsObjectValid(oTarget))
|
|
{
|
|
ActionWait(0.5);
|
|
ExecuteScript("suicidethentil", oTarget);
|
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
|
}
|
|
}
|
|
|
|
if (sItemTag=="Eraiduln")
|
|
{
|
|
effect eAmulet1 = EffectVisualEffect(VFX_BEAM_BLACK);
|
|
effect eAmulet2 = EffectVisualEffect(VFX_BEAM_CHAIN);
|
|
DelayCommand(1.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eAmulet1, lActivator));
|
|
DelayCommand(2.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eAmulet2, lActivator));
|
|
AssignCommand(oPC, PlaySound("sim_shwngevil01"));
|
|
DelayCommand(0.5, AssignCommand(oPC, PlaySound("c_shadow_bat1")));
|
|
SendMessageToPC(oPC, "Baron Eraiduln is with you.");
|
|
DelayCommand(2.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(2.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_CIRCLE_OF_DEATH, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(3.0, ApplyAdditionalHP(oPC, 1000, 3600.0));
|
|
DelayCommand(5.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_BLESS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(7.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_BULLS_STRENGTH, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(8.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_CATS_GRACE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(10.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_EPIC_MAGE_ARMOR, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(15.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_DARKVISION, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(20.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_EAGLE_SPLENDOR, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(25.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GHOSTLY_VISAGE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(35.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_FOXS_CUNNING, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(40.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_OWLS_WISDOM, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(43.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GREATER_STONESKIN, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(47.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_GHOSTLY_VISAGE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(50.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_SHADOW_SHIELD, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(55.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_ROD_OF_WONDER, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(56.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_ROD_OF_WONDER, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(57.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_ROD_OF_WONDER, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(58.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_ROD_OF_WONDER, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(59.5, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_ROD_OF_WONDER, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(60.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
}
|
|
if (sItemTag=="TomeofAmon")
|
|
{
|
|
effect eAmulet = EffectVisualEffect(VFX_IMP_PULSE_HOLY);
|
|
DelayCommand(3.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eAmulet, lActivator));
|
|
AssignCommand(oPC, PlaySound("as_wt_thundercl3"));
|
|
SendMessageToPC(oPC, "Amon's grace is bestowed upon you.");
|
|
DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HASTE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HOLY_AURA, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(4.0, ApplyAdditionalHP(oPC, 800, 3600.0));
|
|
}
|
|
if (sItemTag=="IL9")
|
|
{
|
|
effect eAmulet = EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE);
|
|
DelayCommand(3.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eAmulet, lActivator));
|
|
AssignCommand(oPC, PlaySound("as_an_wolfhowl2"));
|
|
SendMessageToPC(oPC, "The spirit of the wolf fills you.");
|
|
DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HASTE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(3.0, AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HEAL, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
DelayCommand(4.0, ApplyAdditionalHP(oPC, 500, 3600.0));
|
|
}
|
|
if (sItemTag=="LootRation1")
|
|
{
|
|
ApplyAdditionalHP(oPC, 20, 3600.0);
|
|
}
|
|
if (sItemTag=="LootRation2")
|
|
{
|
|
ApplyAdditionalHP(oPC, 30, 3600.0);
|
|
}
|
|
if (sItemTag=="LootRation3")
|
|
{
|
|
ApplyAdditionalHP(oPC, 40, 3600.0);
|
|
}
|
|
if (sItemTag=="SeaRations")
|
|
{
|
|
ApplyAdditionalHP(oPC, 40, 3600.0);
|
|
}
|
|
if (sItemTag=="ConstableSupply")
|
|
{
|
|
ApplyAdditionalHP(oPC, 40, 3600.0);
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_BLESS, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
AssignCommand(oPC, ActionCastSpellAtObject(SPELL_HASTE, oTarget, METAMAGIC_ANY, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
}
|
|
if (sItemTag=="LootRation4")
|
|
{
|
|
ApplyAdditionalHP(oPC, 50, 3600.0);
|
|
}
|
|
if (sItemTag=="LootRation5")
|
|
{
|
|
ApplyAdditionalHP(oPC, 100, 3600.0);
|
|
}
|
|
if (sItemTag=="WytalinGeneralsSword")
|
|
{
|
|
ExecuteScript("set_wytalin", oPC);
|
|
}
|
|
if (sItemTag=="IantakGeneralsSword")
|
|
{
|
|
ExecuteScript("set_iantak", oPC);
|
|
}
|
|
if (sItemTag=="GhulumGeneralsSword")
|
|
{
|
|
ExecuteScript("set_ghulum", oPC);
|
|
}
|
|
if (sItemTag=="StaffofMithangard")
|
|
{
|
|
ExecuteScript("staffofmith", oPC);
|
|
}
|
|
|
|
//CRAFTING BOOKS
|
|
if(GetTag(oItem)=="BakingCraft")
|
|
{
|
|
int smithNumber = GetCampaignInt(GZ_AMON_CRAFT, "GZ_DB_BAKING!", oPC);
|
|
FloatingTextStringOnCreature("Your Baking Skill is " + IntToString(smithNumber),oPC);
|
|
}
|
|
|
|
if(GetTag(oItem)=="CraftBook")
|
|
{
|
|
int woodNumber = GetCampaignInt(GZ_AMON_CRAFT, "GZ_BD_WOODCRAFT!", oPC);
|
|
FloatingTextStringOnCreature("Your Wood Crafting Skill is " + IntToString(woodNumber),oPC);
|
|
}
|
|
|
|
if(GetTag(oItem)=="SmeltingCraftBook")
|
|
{
|
|
int smithNumber = GetCampaignInt(GZ_AMON_CRAFT, "GZ_DB_SMELTING!", oPC);
|
|
FloatingTextStringOnCreature("Your smelting Skill is " + IntToString(smithNumber),oPC);
|
|
}
|
|
|
|
if(GetTag(oItem)=="SmithingCraftBook")
|
|
{
|
|
int smithNumber = GetCampaignInt(GZ_AMON_CRAFT, "GZ_DB_SMITHING!", oPC);
|
|
FloatingTextStringOnCreature("Your smithing Skill is " + IntToString(smithNumber),oPC);
|
|
}
|
|
|
|
if (sItemTag=="mc_it_quickslot")
|
|
{
|
|
ExecuteScript("mc_it_quickslot", OBJECT_SELF);
|
|
}
|
|
if (GetTag(oItem)=="BardsLuteofPlay")
|
|
{
|
|
AssignCommand(oPC, ActionStartConversation(oPC, "bards_music", TRUE));
|
|
return;
|
|
}
|
|
//CRAFT ITEMS
|
|
if(GetTag(oItem)=="CraftKnife")
|
|
{
|
|
AssignCommand(oPC, ActionStartConversation(oPC, "tr_woodcraft", TRUE));
|
|
return;
|
|
}
|
|
if(GetTag(oItem)=="BriarPipe")
|
|
{
|
|
ExecuteScript("briarpipe", oPC);
|
|
}
|
|
if(GetTag(oItem)=="AmonDT01")
|
|
{
|
|
ExecuteScript("create_amonkey", oPC);
|
|
}
|
|
if(GetTag(oItem)=="AL9")
|
|
{
|
|
ExecuteScript("amonsblessing", oPC);
|
|
}
|
|
if(GetTag(oItem)=="StaffofStorms")
|
|
{
|
|
ExecuteScript("staffofstorms2", oPC);
|
|
}
|
|
if(GetTag(oItem)=="SummonStaff1")
|
|
{
|
|
ExecuteScript("staffsummon1", oPC);
|
|
}
|
|
if(GetTag(oItem)=="SummonStaff2")
|
|
{
|
|
ExecuteScript("staffsummon2", oPC);
|
|
}
|
|
|
|
if(GetTag(oItem)=="KeltriaItemDeleteWand")
|
|
{
|
|
if (GetStringLeft(sItemTag2, 9) == "kelobject")
|
|
{
|
|
DestroyObject(oTarget);
|
|
}
|
|
}
|
|
if(GetTag(oItem)== "Drum")
|
|
{
|
|
/* int iBard = GetLevelByClass(CLASS_TYPE_BARD, oPC); */
|
|
if (iBardic >0)
|
|
{
|
|
if (iTotal >= 20) //DC for using a Drum is 15
|
|
{
|
|
int i;
|
|
int done;
|
|
effect eHaste;
|
|
object oGroup;
|
|
effect eCast = EffectVisualEffect(VFX_IMP_HASTE);
|
|
FloatingTextStringOnCreature("*Bard Song Success*", oPC, TRUE);
|
|
SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 15");
|
|
eHaste = EffectHaste();
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSong, oPC, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oPC);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHaste, oPC, 18.0);
|
|
for (i = 0; i < 6 && !done; i++) //Apply Bardsong to up to 6 faction members (PCs) within 30 meters
|
|
{
|
|
oGroup = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i);
|
|
if ( oGroup != OBJECT_INVALID && (GetDistanceBetween(oPC, oGroup) <= 30.0) )
|
|
{
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHaste, oGroup, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oGroup);
|
|
}
|
|
else
|
|
{
|
|
done = TRUE;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FloatingTextStringOnCreature("*Bard Song Failure*", oPC, TRUE);
|
|
SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 15");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AssignCommand(oPC, ActionSpeakString("Only a bard has the experience to use this item properly."));
|
|
}
|
|
}
|
|
|
|
if(GetTag(oItem)=="Mandolin")
|
|
{
|
|
/* int iBard = GetLevelByClass(CLASS_TYPE_BARD, oPC); */
|
|
if (iBardic > 0)
|
|
{
|
|
if (iTotal >= 20) //DC for using a Mandolin is 15
|
|
{
|
|
int i;
|
|
int done;
|
|
effect eRegen;
|
|
object oGroup;
|
|
effect eCast = EffectVisualEffect(VFX_IMP_HEALING_G);
|
|
FloatingTextStringOnCreature("*Bard Song Success*", oPC, TRUE);
|
|
SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 15");
|
|
eRegen = EffectRegenerate(1, 3.0);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSong, oPC, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRegen, oPC, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oPC);
|
|
for (i = 0; i < 6 && !done; i++) //Apply Bardsong to up to 6 faction members (PCs) within 30 meters
|
|
{
|
|
oGroup = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i);
|
|
if ( oGroup != OBJECT_INVALID && (GetDistanceBetween(oPC, oGroup) <= 30.0) )
|
|
{
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRegen, oGroup, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oGroup);
|
|
}
|
|
else
|
|
{
|
|
done = TRUE;
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
FloatingTextStringOnCreature("*Bard Song Failure*", oPC, TRUE);
|
|
SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 15");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AssignCommand(oPC, ActionSpeakString("Only a bard has the experience to use this item properly."));
|
|
}
|
|
}
|
|
|
|
if(GetTag(oItem)=="Pipes")
|
|
{
|
|
/* int iBard = GetLevelByClass(CLASS_TYPE_BARD, oPC); */
|
|
if (iBardic > 0)
|
|
{
|
|
if (iTotal >=20) //DC for using Pipes is 18
|
|
{
|
|
int i;
|
|
int done;
|
|
effect eInvis;
|
|
object oGroup;
|
|
FloatingTextStringOnCreature("*Bard Song Success*", oPC, TRUE);
|
|
SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 18");
|
|
eInvis = EffectInvisibility(INVISIBILITY_TYPE_NORMAL);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSong, oPC, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eInvis, oPC, 18.0);
|
|
for (i = 0; i < 6 && !done; i++) //Apply Bardsong to up to 6 faction members (PCs) within 30 meters
|
|
{
|
|
oGroup = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i);
|
|
if ( oGroup != OBJECT_INVALID && (GetDistanceBetween(oPC, oGroup) <= 30.0) )
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eInvis, oGroup, 18.0);
|
|
else
|
|
done = TRUE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FloatingTextStringOnCreature("*Bard Song Failure*", oPC, TRUE);
|
|
SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 18");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AssignCommand(oPC, ActionSpeakString("Only a bard has the experience to use this item properly."));
|
|
}
|
|
}
|
|
|
|
if(GetTag(oItem)=="Horn")
|
|
{
|
|
/* int iBard = GetLevelByClass(CLASS_TYPE_BARD, oPC); */
|
|
if (iBardic > 0)
|
|
{
|
|
if (iTotal >=20) //DC for using a Horn is 18
|
|
{
|
|
int i;
|
|
int done;
|
|
effect eShield;
|
|
object oGroup;
|
|
effect eCast = EffectVisualEffect(VFX_IMP_AC_BONUS);
|
|
FloatingTextStringOnCreature("*Bard Song Success*", oPC, TRUE);
|
|
SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 18");
|
|
eShield = EffectDamageShield(1, DAMAGE_BONUS_1d10, DAMAGE_TYPE_SONIC);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSong, oPC, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eShield, oPC, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oPC);
|
|
for (i = 0; i < 6 && !done; i++) //Apply Bardsong to up to 6 faction members (PCs) within 30 meters
|
|
{
|
|
oGroup = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i);
|
|
if ( oGroup != OBJECT_INVALID && (GetDistanceBetween(oPC, oGroup) <= 30.0) )
|
|
{
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eShield, oGroup, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oGroup);
|
|
}
|
|
else
|
|
{
|
|
done = TRUE;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FloatingTextStringOnCreature("*Bard Song Failure*", oPC, TRUE);
|
|
SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 18");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AssignCommand(oPC, ActionSpeakString("Only a bard has the experience to use this item properly."));
|
|
}
|
|
}
|
|
|
|
if(GetTag(oItem)=="Harp")
|
|
{
|
|
/* int iBard = GetLevelByClass(CLASS_TYPE_BARD, oPC); */
|
|
if (iBardic > 0)
|
|
{
|
|
if (iTotal >=20) //DC for using a Harp is 21
|
|
{
|
|
int i;
|
|
int done;
|
|
effect eSpell;
|
|
object oGroup;
|
|
effect eCast = EffectVisualEffect(VFX_IMP_GLOBE_USE);
|
|
FloatingTextStringOnCreature("*Bard Song Success*", oPC, TRUE);
|
|
SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 21");
|
|
eSpell = EffectSpellImmunity(SPELL_ALL_SPELLS);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSong, oPC, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSpell, oPC, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oPC);
|
|
for (i = 0; i < 6 && !done; i++) //Apply Bardsong to up to 6 faction members (PCs) within 30 meters
|
|
{
|
|
oGroup = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_FRIEND, oPC, i);
|
|
if ( oGroup != OBJECT_INVALID && (GetDistanceBetween(oPC, oGroup) <= 30.0) )
|
|
{
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSpell, oGroup, 18.0);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eCast, oGroup);
|
|
}
|
|
else
|
|
{
|
|
done = TRUE;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FloatingTextStringOnCreature("*Bard Song Failure*", oPC, TRUE);
|
|
SendMessageToPC(oPC, "Skill Roll: " + sTotal + ". Target DC 21");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AssignCommand(oPC, ActionSpeakString("Only a bard has the experience to use this item properly."));
|
|
}
|
|
}
|
|
}
|
|
|