48 lines
1.7 KiB
Plaintext
48 lines
1.7 KiB
Plaintext
|
#include "prc_class_const"
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
object oPC = GetItemActivator();
|
||
|
string sPearl = GetLocalString(oPC, "sPearlBomb");
|
||
|
object oTarget = GetObjectByTag(sPearl);
|
||
|
int iRogue = GetLevelByClass(CLASS_TYPE_ROGUE, oPC)
|
||
|
+ GetLevelByClass(CLASS_TYPE_SCOUT, oPC)
|
||
|
+ GetLevelByClass(CLASS_TYPE_NINJA, oPC)
|
||
|
+ GetLevelByClass(CLASS_TYPE_FACTOTUM, oPC)
|
||
|
+ GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oPC);
|
||
|
|
||
|
int iMult = iRogue / 5;
|
||
|
int bdam = d100(1)* iMult + 100;
|
||
|
|
||
|
if(oTarget == OBJECT_INVALID)
|
||
|
{
|
||
|
SendMessageToPC(oPC, "No bomb laid.");
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
object oCaster = OBJECT_SELF;
|
||
|
float fDelay;
|
||
|
effect eExplode = EffectVisualEffect(VFX_FNF_ELECTRIC_EXPLOSION);
|
||
|
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
|
||
|
effect eShk = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
|
||
|
effect eDam;
|
||
|
location lTarget = GetLocation(oTarget);
|
||
|
|
||
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
|
||
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eShk, lTarget);
|
||
|
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||
|
|
||
|
while (GetIsObjectValid(oTarget))
|
||
|
{
|
||
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(bdam, DAMAGE_TYPE_ELECTRICAL), oTarget, 0.0f);
|
||
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
||
|
AssignCommand(oTarget, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK, 1.0, 5.0));
|
||
|
AssignCommand(oTarget, PlayVoiceChat(VOICE_CHAT_CUSS));
|
||
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||
|
}
|
||
|
|
||
|
ActionDoCommand(PlaySound("zep_explosion"));
|
||
|
DestroyObject(GetObjectByTag(sPearl));
|
||
|
}
|
||
|
}
|