Resurrection Effects:
Heya.
Just thought I'd make a quick post about two spells that I've noticed issues with. It seems that both Customer Service Resurrect and Divine Resurrect give Resurrection Effects as a debuff once the rez is accepted. Hadn't ever noticed this before because it was only recently that Derision's handy dandy pop-up windows made Rezzing worth paying attention to. Both give the correct text in the pop-up window (100% XP and the right spell name), so they aren't getting crossed anywhere. I'd imagine that there's some part of the code that deals with people being rezzed, and automatically slaps Resurrection Effects on them when it happens. Sometime down the line, this will have to have an exception put into place. Oh, and I know it's already been reported, but Resurrection Effects can be dispelled, which severely lessens its intended affect. Is that something that's dealt with in the spell file that we can't easily touch? Or is it code-based somewhere? Thanks for any feedback on either of these issues, anyone. |
Quote:
If these spells shouldn't give Rez effects: in zone/client_process.cpp, void Client::OPRezzAnswer(const EQApplicationPacket* app), around line 943, try changing Code:
SpellOnTarget(756,this); Code:
// No Rez effects for Customer Service Rez, or Divine Rez |
I think it would be nice if server code could recognize these spells by some OTHER value rather than the spell id#.
What if I want to have OTHER spell wihout rezurection sickness effect? What if I am using a totaly diffirent spell file where these id correspand to nuke and levitation? IMHO we should have a Rule to turn rez sickness effects on and off for all spells (so i can make all rez spells on my server sickness free) |
Quote:
Code:
id name player_1 teleport_zone you_cast other_casts cast_on_you cast_on_other spell_fades range aoerange pushback pushup cast_time recovery_time recast_time buffdurationformula buffduration AEDuration mana effect_base_value1 effect_base_value2 effect_base_value3 effect_base_value4 effect_base_value5 effect_base_value6 effect_base_value7 effect_base_value8 effect_base_value9 effect_base_value10 effect_base_value11 effect_base_value12 effect_limit_value1 effect_limit_value2 effect_limit_value3 effect_limit_value4 effect_limit_value5 effect_limit_value6 effect_limit_value7 effect_limit_value8 effect_limit_value9 effect_limit_value10 effect_limit_value11 effect_limit_value12 max1 max2 max3 max4 max5 max6 max7 max8 max9 max10 max11 max12 icon memicon components1 components2 components3 components4 component_counts1 component_counts2 component_counts3 component_counts4 NoexpendReagent1 NoexpendReagent2 NoexpendReagent3 NoexpendReagent4 formula1 formula2 formula3 formula4 formula5 formula6 formula7 formula8 formula9 formula10 formula11 formula12 LightType goodEffect Activated resisttype effectid1 effectid2 effectid3 effectid4 effectid5 effectid6 effectid7 effectid8 effectid9 effectid10 effectid11 effectid12 targettype basediff skill zonetype EnvironmentType TimeOfDay classes1 classes2 classes3 classes4 classes5 classes6 classes7 classes8 classes9 classes10 classes11 classes12 classes13 classes14 classes15 classes16 CastingAnim TargetAnim TravelType SpellAffectIndex field124 field125 deities1 deities2 deities3 deities4 deities5 deities6 deities7 deities8 deities9 deities10 deities11 deities12 deities13 deities14 deities15 deities16 field142 field143 new_icon spellanim uninterruptable ResistDiff dot_stacking_exempt deleteable RecourseLink field151 field152 field153 short_buff_box descnum typedescnum effectdescnum field158 field159 field160 field161 bonushate field163 field164 field165 EndurCost EndurTimerIndex field168 field169 field170 field171 field172 HateAdded EndurUpkeep field175 numhits pvpresistbase pvpresistcalc pvpresistcap spell_category field181 field182 field183 field184 can_mgb nodispell npc_category npc_usefulness field189 field190 field191 field192 field193 field194 field195 field196 field197 field198 field199 field200 field201 field202 field203 field204 field205 field206 spellgroup field208 field209 field210 field211 field212 field213 field214 Quote:
Quote:
Code:
if (RuleB(Spells,RezEffectOn) && (ra->spellid != 994) && (ra->spellid != 2738)) In common/ruletypes.h, around line 117, add: Code:
RULE_CATEGORY( Spells ) Code:
INSERT INTO rule_values VALUES (0, Spells:RezEffectOn, 1) |
Great work Andmetal! I hope the new rule would ne added to the code =)
BUT I have an idea how to make those spells stand out. we need to make rule: Special Rez spell Id: (x,x,x) how about that? them wihout altering the code the special spells can be listed in rules and code can adress them by whatever ID numbers entered there rather than have spell ID hard coded into the source I belive that all AA and discplines also have hard coded spell ids? I think we should make a separate table which would store ID to ABility/AA corespandance so in a custom spell file I coudl set for exmaple soem monk special discipline to point to some other spell wihout touching the code itself this woudl give me option fo complitly wiping the original spell file and build a new one where say all heals go one by one rather than been scatered all over the file, wihout having to go around hard coded spells cuase I can't touch their ID# think about this one =) |
I took a look at this and noticed something. There is a difference between the spells with Resurrection Effects and those that don't. However they are currently in "spacing158" fields.
If you look in spdat.h at the SPDat_Spell_Struct: Code:
/* 157 */ int effectdescnum; // eqstr of effect description In spells_us.txt those fields are: Code:
ID Name Nameeffectdescnum spacing158_1 spacing158_2 spacing158_3 spacing158_4 bonushate Code:
8106 Perfected Heal Code:
ID Name My guess is spacing158_3 is a super class of beneficial spells and spacing158_4 is a subclass. However, the rule you are looking for is: Code:
if(spacing158[3] == 82) { |
The completely untested code
In /zone/spdat.h ~line 388 Code:
+ #define SUBCLASS_REZZ_EFFECTS 82 Code:
- /* 158 */ int spacing158[4]; ~line 984 Code:
- for(y = 0; y < 3;y++) ~ line 943 Code:
- SpellOnTarget(756,this); |
Quote:
and in /zone/net.cpp ~line 984 Code:
- for(y = 0; y < 3;y++) |
I would like to make a somewhat major clarification: those values are actually in fields 156 (typedescnum) & 157 (effectdescnum), not 160 & 161 (still unknown, and all 0's for the resurrection spells).
However, they could definitely be used to separate out normal rez spells from ones that don't have a rez effect, since the ones without rez effects don't use either. For reference, here are the IDs, from dbstr_us.txt, that correspond to both: Code:
id text |
Thanks AndMetal, good catch. I managed to add some columns in my spreadsheet throwing everything off. And I don't know what I was thinking with the OPRezzAnswer bit. I obviously didn't have enough coffee yesterday. Wish I could go back and edit/delete those old posts.
Quote:
Code:
int GetSpellEffectDescNum(int16 spell_id); Code:
int GetSpellEffectDescNum(int16 spell_id) and then just use that in the client_process.cpp. However, if I were to rewrite this chunk of code, I would make a SpellFactory, which would have a method "getSpellById( int16 spell_id)" and have that return an instance of a class Spell. The class Spell would have accessor methods for things like GetEffectDescNum(). The laundry list of "IsWhatever(int spell_id)" is getting out of control. |
Quote:
|
Quote:
|
All times are GMT -4. The time now is 08:51 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.