85 lines
2.8 KiB
Plaintext
85 lines
2.8 KiB
Plaintext
//
|
|
// dn_w_name_wand
|
|
//
|
|
|
|
//::///////////////////////////////////////////////
|
|
//:: Tagbased Item Scripting Template
|
|
//:: tagased item template.txt
|
|
//:://////////////////////////////////////////////
|
|
|
|
// Template by shadguy based on stuff by Axe Murderer and Drycona on the BW forums
|
|
// unused event hooks can be deleted.
|
|
//
|
|
|
|
#include "dn_inc_dm"
|
|
#include "dn_inc_switches"
|
|
|
|
// The only reason this is a function is so I can delay it if the Fairy needs to be summoned first.
|
|
//
|
|
void DN_SpeakInstructions( object oTarget, object oItemUser )
|
|
{
|
|
object oFairy = GetAssociate( ASSOCIATE_TYPE_SUMMONED, oItemUser );
|
|
|
|
// Speak instructions for the user
|
|
string sInstructions = "Speak a new name for " + GetName( oTarget ) +
|
|
". You must be visible, so I can hear you, for this to work. " +
|
|
"To revert an object to it's original name, speak only a period, now.";
|
|
DelayCommand( 0.1f, AssignCommand( oFairy, SpeakString( sInstructions ) ) );
|
|
DelayCommand( 0.1f, SetListening( oFairy, TRUE ) );
|
|
}
|
|
|
|
|
|
void main()
|
|
{
|
|
switch( GetTagBasedItemEventNumber() ) {
|
|
|
|
case X2_ITEM_EVENT_ACTIVATE:
|
|
object oItemUser = GetItemActivator();
|
|
object oItem = GetItemActivated();
|
|
object oTarget = GetItemActivatedTarget();
|
|
|
|
// only allow DMs to use this tool
|
|
if( !DN_GetIsDM( oItemUser ) ) {
|
|
SpeakString( "Nothing happens!" );
|
|
return;
|
|
}
|
|
|
|
//verify target is valid
|
|
int nType = GetObjectType( oTarget );
|
|
if( !GetIsObjectValid( oTarget ) ||
|
|
GetIsPC( oTarget ) ||
|
|
GetArea( oTarget ) == oTarget ||
|
|
GetModule() == oTarget ||
|
|
nType == OBJECT_TYPE_AREA_OF_EFFECT ||
|
|
nType == OBJECT_TYPE_ENCOUNTER ||
|
|
nType == OBJECT_TYPE_STORE ||
|
|
nType == OBJECT_TYPE_TRIGGER ||
|
|
nType == OBJECT_TYPE_WAYPOINT ) {
|
|
AssignCommand( oItemUser, SpeakString( "Invalid target! The Wand of Naming only works on items, placeables, doors, monsters, and NPCs." ) );
|
|
return;
|
|
}
|
|
SetLocalObject( oItemUser, "oNamingWandTarget", oTarget );
|
|
|
|
// Get Naming Fairy!
|
|
object oFairy = GetAssociate( ASSOCIATE_TYPE_SUMMONED, oItemUser );
|
|
float tDelay = 0.01f;
|
|
if( !GetIsObjectValid( oFairy ) ||
|
|
"dn_w_name_fairy" != GetTag( oFairy ) ) {
|
|
ApplyEffectToObject( DURATION_TYPE_PERMANENT, EffectSummonCreature( "dn_w_name_fairy", VFX_FNF_SUMMON_UNDEAD ), oItemUser );
|
|
tDelay = 3.0f;
|
|
}
|
|
|
|
// use a bigger delay if Fairy was not already present
|
|
DelayCommand( tDelay, DN_SpeakInstructions( oTarget, oItemUser ) );
|
|
|
|
SetTagBasedScriptExitBehavior( X2_EXECUTE_SCRIPT_END );
|
|
return;
|
|
}
|
|
SetTagBasedScriptExitBehavior( X2_EXECUTE_SCRIPT_CONTINUE );
|
|
}
|
|
|
|
|
|
|
|
|
|
|