Very Helpful! Do you happen to know if anyone ever made a list of them? Are there any unused spell sounds hanging around?
I don't know if anyone ever compiled a list of unused spell effects, as for the sounds I know there are bunch of unused sounds for spells that were never implemented in game as I copied them all to an old mobile phone, and set up a sound board app to play them for my live tabletop games at home, and I'd never heard many of them before.
If you extract ToEE2.dat they're in the Sounds/Spells folder, the visual effects are defined in rules/partsys1.tab, and can be seen using V2Brute. The spells that have both art and sounds that I don't remember ever seeing in ToEE, and I'll probably mis-remember some (so please forgive mistakes) are as follows: Arcane Eye Arcane Lock Clairaudience/Clairvoyance Darkness Darkvision Daylight? Deeper Darkness Disease (all types) Emotion (all types) Glitter Dust Hold Portal Hypnotic Pattern? Identify Insect Plague? Mage Hand Polymorph Other? Polymorph Self? Protective Ward Pyrotechnics Quench Rainbow Pattern Sunburst Teleport Wall of Fire/Force/Ice
Great work Al. Doug - I'm going through the spell effects but for Wave of Fatigue, I recommend the particles for sp-Emotion - a nice cone-shaped wave that would go with the instantaneous effect. This would require no tinkering on your part, you could just call it straight in the spell's .py file.. If you want to tinker with the effects in partsys.tab, then any of the 'Detect' spells (or Find Traps, Cone of Cold etc - even Gust of Wind) could be used as a starting point. VampiricPuppy wrote a guide for memory, someone could doubtless find it around here. For Touch of Fatigue, I recommend one of the sp-Inflict-X-wounds-HELD spells (they all look the same) for the caster when he is holding the touch spell - anything marked 'held' is worth a look - then sp-Rarys Mnemonic Enhancer for the monster hit. Just a small subtle effect that sorta matches the colours of the held effect. Use V2Brute to see spell effects with all the extracted partsys.tab files in your data/rules folder (you probably knew that). For sounds, I'm not much use - I did the first round of spell sounds for things like Scorching Ray, and my efforts were roundly hated and quickly replaced. Everyone's a critic
Allyx: Thanks for the list. I could see making use of some of those effects. Ted: Thanks for the ideas. I'll give adding the 4 fatigue related spells a try and let you know how it goes. I have found some guides already and messed around with spell effects. What I have been able to produce is unfortunately not that great...
Sitra: I need to access more than arg1 and arg2 in python from DispIoCondStruct. Adding a function that returns an arbitrary argument would seem easy enough, but I can't figure out how to get access to the other args. Do you have any suggestions? Thanks!
Why ask why? I am adding a fatigue/exhaust condition. Fatigue upgrades to exhaustion so I want to see all the arguments when a duplicate condition gets added to determine if I should upgrade the current condition (and tell TOEE not to add the duplicate). There are 4 arguments that I am interested in when a duplicate is added. The python hook looks like: Fatigue.AddHook(ET_OnConditionAddPre, EK_NONE, DoubleAddCondition, ()) There may be a better way to do what I want but this seemed like the most natural way to me.
Been a while since I asked a question here I ran into difficulty removing a spell during a touch attack. It seems that the remove spell function in the temple dll will not remove a spell if the request comes from a touch attack handler. I was able to add code in temple+ to change the signal type to one that remove spell likes and then change it back after removing the spell. But I was wondering if there was a cleaner way to pull that off. I don't want to try rewriting the whole plate of spaghetti that is the TOEE remove spell function... Here is what the code I used to force it to work:
I've seen vanilla code do a similar thing, but outside the actual removespell code - it'd create a copy of the args and change the key and type, and then call removespell on that. I prefer that approach in this case since it won't potentially affect other spells.
Vanilla code does that. Yikes! The call is ultimately coming from python so it's unfortunately not as easy to copy and change the args before the call.