View Single Post
  #2  
Old 06-10-2014, 04:26 PM
Zaela_S
Hill Giant
 
Join Date: Jun 2012
Posts: 216
Default

I believe the struct in /common/spdat.h has the fields in the order they are in the file (plus helpful comments):

Code:
struct SPDat_Spell_Struct
{
/* 000 */	int id;	// not used
/* 001 */	char name[64]; // Name of the spell
/* 002 */	char player_1[32]; // "PLAYER_1"
/* 003 */	char teleport_zone[64];	// Teleport zone, pet name summoned, or item summoned
/* 004 */	char you_cast[64]; // Message when you cast
/* 005 */	char other_casts[64]; // Message when other casts
/* 006 */	char cast_on_you[64]; // Message when spell is cast on you
/* 007 */	char cast_on_other[64]; // Message when spell is cast on someone else
/* 008 */	char spell_fades[64]; // Spell fades
/* 009 */	float range;
/* 010 */	float aoerange;
/* 011 */	float pushback;
/* 012 */	float pushup;
/* 013 */	uint32 cast_time; // Cast time
/* 014 */	uint32 recovery_time; // Recovery time
/* 015 */	uint32 recast_time; // Recast same spell time
/* 016 */	uint32 buffdurationformula;
/* 017 */	uint32 buffduration;
/* 018 */	uint32 AEDuration;	// sentinel, rain of something
/* 019 */	uint16 mana; // Mana Used
/* 020 */	int base[EFFECT_COUNT];	//various purposes
/* 032 */	int base2[EFFECT_COUNT]; //various purposes
/* 044 */	int32 max[EFFECT_COUNT];
/* 056 */	//uint16 icon; // Spell icon
/* 057 */	//uint16 memicon; // Icon on membarthing
/* 058 */	int32 components[4]; // reagents
/* 062 */	int component_counts[4]; // amount of regents used
/* 066 */	int NoexpendReagent[4];	// focus items (Need but not used; Flame Lick has a Fire Beetle Eye focus.)
// If it is a number between 1-4 it means components[number] is a focus and not to expend it
// If it is a valid itemid it means this item is a focus as well
/* 070 */	uint16 formula[EFFECT_COUNT]; // Spell's value formula
/* 082 */	//int LightType; // probaly another effecttype flag
/* 083 */	int8 goodEffect; //0=detrimental, 1=Beneficial, 2=Beneficial, Group Only
/* 084 */	int Activated; // probably another effecttype flag
/* 085 */	int resisttype;
/* 086 */	int effectid[EFFECT_COUNT];	// Spell's effects
/* 098 */	SpellTargetType targettype;	// Spell's Target
/* 099 */	int basediff; // base difficulty fizzle adjustment
/* 100 */	SkillUseTypes skill;
/* 101 */	int8 zonetype; // 01=Outdoors, 02=dungeons, ff=Any
/* 102 */	int8 EnvironmentType;
/* 103 */	int8 TimeOfDay;
/* 104 */	uint8 classes[PLAYER_CLASS_COUNT]; // Classes, and their min levels
/* 120 */	uint8 CastingAnim;
/* 121 */	//uint8 TargetAnim;
/* 122 */	//uint32 TravelType;
/* 123 */	uint16 SpellAffectIndex;
/* 124 */	int8 disallow_sit; // 124: high-end Yaulp spells (V, VI, VII, VIII [Rk 1, 2, & 3], & Gallenite's Bark of Fury
/* 125 */	// 125: Words of the Skeptic
/* 126 */	int8 deities[16];	// Deity check. 201 - 216 per http://www.eqemulator.net/wiki/wikka.php?wakka=DeityList
// -1: Restrict to Deity; 1: Restrict to Deity, but only used on non-Live (Test Server "Blessing of ...") spells; 0: Don't restrict
/* 142 */	// 142: between 0 & 100
// 143: always set to 0
/* 144 */	//int16 new_icon // Spell icon used by the client in uifiles/default/spells??.tga, both for spell gems & buff window. Looks to depreciate icon & memicon
/* 145 */	//int16 spellanim; // Doesn't look like it's the same as #doanim, so not sure what this is
/* 146 */	int8 uninterruptable;	// Looks like anything != 0 is uninterruptable. Values are mostly -1, 0, & 1 (Fetid Breath = 90?)
/* 147 */	int16 ResistDiff;
/* 148 */	int8 dot_stacking_exempt; // If 1 doesn't stack with self cast by others. If -1 (not implemented) doesn't stack with same effect (???)
/* 149 */	//int deletable;
/* 150 */	uint16 RecourseLink;
/* 151 */	bool no_partial_resist;	// 151: -1, 0, or 1
// 152 & 153: all set to 0
/* 154 */	int8 short_buff_box;	// != 0, goes to short buff box.
/* 155 */	int descnum; // eqstr of description of spell
/* 156 */	//int typedescnum; // eqstr of type description
/* 157 */	int effectdescnum; // eqstr of effect description
/* 158 */ //Category Desc ID 3
/* 159 */	//bool npc_no_los;
/* 161 */	bool reflectable;
/* 162 */	int bonushate;
/* 163 */
/* 164 */	// for most spells this appears to mimic ResistDiff
/* 166 */	int EndurCost;
/* 167 */	int8 EndurTimerIndex;
/* 168 */	//int IsDisciplineBuff; //Will goto the combat window when cast
/* 169 */
/* 173 */	int HateAdded;
/* 174 */	int EndurUpkeep;
/* 175 */	int numhitstype; // defines which type of behavior will tick down the numhit counter.
/* 176 */	int numhits;
/* 177 */	int pvpresistbase;
/* 178 */	int pvpresistcalc;
/* 179 */	int pvpresistcap;
/* 180 */	int spell_category;
/* 181 */
/* 185 */	int8 can_mgb; // 0=no, -1 or 1 = yes
/* 186 */	int dispel_flag;
/* 189 */	int MinResist;
/* 190 */	int MaxResist;
/* 191 */	uint8 viral_targets;
/* 192 */	uint8 viral_timer;
/* 193 */	int NimbusEffect;
/* 194 */	float directional_start; //Cone Start Angle:
/* 195 */	float directional_end; // Cone End Angle:
/* 196 */
/* 197 */	bool not_extendable;
/* 198- 199 */
/* 200 */	bool suspendable; // buff is suspended in suspended buff zones
/* 201 - 202 */
/* 203 */	//int songcap; // individual song cap (how live currently does it, not implemented)
/* 204 - 206 */
/* 207 */	int spellgroup;
/* 208 */	// int rank - increments AA effects with same name
/* 209 */	int powerful_flag; // Need more investigation to figure out what to call this, for now we know -1 makes charm spells not break before their duration is complete, it does alot more though
/* 210 */	// bool DurationFrozen; ???
/* 211 */	int CastRestriction; //Various restriction categories for spells most seem targetable race related but have also seen others for instance only castable if target hp 20% or lower or only if target out of combat
/* 212 */	bool AllowRest;
/* 213 */	bool NotOutofCombat; //Fail if cast out of combat
/* 214 */ bool NotInCombat; //Fail if cast in combat
/* 215 - 218 */
/* 219 */	//int maxtargets; // is used for beam and ring spells for target # limits (not implemented)
/* 220 - 223 */
/* 224 */	bool persistdeath; // buff doesn't get stripped on death
/* 225 - 236 */ // Not in DB
	uint8 DamageShieldType; // This field does not exist in spells_us.txt
};
Reply With Quote