99 lines
2.6 KiB
Plaintext
99 lines
2.6 KiB
Plaintext
//Script Name: sc_npc_spelled
|
|
//////////////////////////////////////////
|
|
//Created By: Genisys (Guile)
|
|
//Created On: 8/19/08
|
|
/////////////////////////////////////////
|
|
/*
|
|
This will spawn in the Super Cop on
|
|
the PC for casting a spell at the NPC
|
|
*/
|
|
////////////////////////////////////////
|
|
//This include is used to penalize the PC
|
|
#include "setxp_inc"
|
|
|
|
//Main Script
|
|
void main()
|
|
{
|
|
//Declare Major Variables..
|
|
object oPlayer = GetLastSpellCaster();
|
|
object oTarget;
|
|
object oSpawn;
|
|
location lTarget;
|
|
|
|
//Let's make sure we define just who killed the NPC clearly..
|
|
if(!GetIsPC(oPlayer))
|
|
{
|
|
//if It's a DM stop here..
|
|
if(GetIsDMPossessed(GetLastSpellCaster()))
|
|
{ return; }
|
|
if(GetIsDM(oPlayer))
|
|
{ return; }
|
|
|
|
//IF It truly was an associate who attacked..
|
|
if(GetMaster(GetLastSpellCaster())!=OBJECT_INVALID)
|
|
{
|
|
oPlayer = GetMaster(oPlayer);
|
|
}
|
|
else
|
|
{
|
|
oPlayer = GetLastSpellCaster();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if(GetIsPC(oPlayer))
|
|
{
|
|
|
|
//Only Once Ever 30 Seconds!
|
|
int Do1Time = GetLocalInt(oPlayer, GetTag(OBJECT_SELF) + "SC");
|
|
if (Do1Time==TRUE) {return;}
|
|
|
|
SetLocalInt(oPlayer, GetTag(OBJECT_SELF) + "SC", TRUE);
|
|
DelayCommand(30.0, SetLocalInt(oPlayer, GetTag(OBJECT_SELF) + "SC", FALSE));
|
|
|
|
//Penalize the player!
|
|
ApplyRespawnPenalty(oPlayer);
|
|
|
|
oTarget = oPlayer;
|
|
|
|
lTarget = GetLocation(oTarget);
|
|
|
|
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "supercop", lTarget);
|
|
|
|
oTarget = oSpawn;
|
|
|
|
int nInt;
|
|
nInt = GetObjectType(oTarget);
|
|
|
|
if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD), oTarget));
|
|
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD), GetLocation(oTarget)));
|
|
|
|
|
|
AssignCommand(oPlayer, ClearAllActions());
|
|
|
|
//Clear Reputation of PC
|
|
if (GetStandardFactionReputation(STANDARD_FACTION_COMMONER, oPlayer) <= 10)
|
|
{ SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
|
|
SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 80, oPlayer);
|
|
}
|
|
if (GetStandardFactionReputation(STANDARD_FACTION_MERCHANT, oPlayer) <= 10)
|
|
{ SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
|
|
SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 80, oPlayer);
|
|
}
|
|
if (GetStandardFactionReputation(STANDARD_FACTION_DEFENDER, oPlayer) <= 10)
|
|
{ SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
|
|
SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 80, oPlayer);
|
|
}
|
|
|
|
}
|
|
|
|
//Otherwise protect the NPC from monsters!
|
|
else
|
|
{
|
|
ExecuteScript("nw_c2_defaultb", OBJECT_SELF);
|
|
}
|
|
|
|
//Main Script End
|
|
}
|