View Single Post
  #4  
Old 10-05-2009, 04:06 PM
nilbog
Hill Giant
 
Join Date: Nov 2007
Posts: 198
Default

All the credit for this comes from Ladoth, from project 1999, not myself :o
Here is how we have it set up. Still more work to be done when we hit kunark.. because there are full duration invisibilities, but I hope this helps you out!


around line 100 in spdat.cpp

Code:
///////////////////////////////////////////////////////////////////////////////
// spell property testing functions

// @LADOTH 07182009 Is invis type spell
bool IsInvisibilitySpell(int16 spell_id)
{
	bool bResult = false;

	if( IsValidSpell(spell_id) && 
		(IsEffectInSpell(spell_id, SE_Invisibility) ||
		 IsEffectInSpell(spell_id, SE_Invisibility2) ||
		 IsEffectInSpell(spell_id, SE_InvisVsAnimals) ||
		 IsEffectInSpell(spell_id, SE_InvisVsUndead) ||
		 IsEffectInSpell(spell_id, SE_InvisVsUndead2))
		 )
	{
		bResult = true;
	}

	return bResult;
}
around line 610 of spdat.h

Code:
#endif
// @LADOTH 07182009 Is invis type spell
bool IsInvisibilitySpell(int16 spell_id);
bool IsTargetableAESpell(int16 spell_id);
around line 500 in spell_effects.cpp

Code:
#ifdef SPELL_EFFECT_SPAM
				snprintf(effect_desc, _EDLEN, "Invisibility");
#endif
				// solar: TODO already invis message and spell kill from SpellOnTarget
				SetInvisible(true);
				// @LADOTH 07252009 randomize time remaining for invis type spell
				float randscale = MakeRandomInt(1, 100) / 100.0f;
				buffs[buffslot].ticsremaining *= randscale;
around line 520 in spell_effects.cpp

Code:
#ifdef SPELL_EFFECT_SPAM
				snprintf(effect_desc, _EDLEN, "Invisibility to Animals");
#endif

				// @LADOTH 07252009 randomize time remaining for invis type spell
				float randscale = MakeRandomInt(1, 100) / 100.0f;
				buffs[buffslot].ticsremaining *= randscale;
around line 540 in spell_effects.cpp

Code:
#ifdef SPELL_EFFECT_SPAM
				snprintf(effect_desc, _EDLEN, "Invisibility to Undead");
#endif
				// @LADOTH 07252009 randomize time remaining for invis type spell
				float randscale = MakeRandomInt(1, 100) / 100.0f;
				buffs[buffslot].ticsremaining *= randscale;
Reply With Quote