ArcEmu: [priest] Mind Sear - ArcEmu

Jump to content

Toggle shoutbox Lastest Announcements

dfighter  : (07 December 2014 - 12:06 PM) Arcemu is in hibernation mode, please read http://arcemu.org/fo...showtopic=26903
dfighter  : (01 January 2013 - 05:56 PM) Arcemu wishes you all a happy new year!
Hasbro  : (12 September 2012 - 10:01 AM) Please excuse our outage from the web! Our web host had a major malfunction!
dfighter  : (01 September 2012 - 04:05 PM) Since the spam bots just don't want to stop, I've enabled admin verification when registering.
dfighter  : (23 January 2012 - 09:56 PM) Please note that from now on you will need to confirm your email on the wiki in order to edit it!
Hasbro  : (31 December 2011 - 12:50 PM) Happy New Years all!
Navid  : (26 December 2011 - 04:09 AM) Merry Christmas !!!!!! Happy holidays all :)
WAmadeus  : (24 December 2011 - 03:54 PM) Merry Christmas to all!
dfighter  : (24 December 2011 - 11:05 AM) The Arcemu team wishes y'all a Merry Christmukkah!
Hasbro  : (05 October 2011 - 12:53 PM) Looking for web designers for upcoming web related project. If you're interested in designing user interfaces contact me
dfighter  : (02 September 2011 - 03:47 PM) So who here wants vehicles in Arcemu? :P http://arcemu.org/fo...showtopic=25440
Hasbro  : (14 August 2011 - 03:25 PM) Join us on irc, grab an irc client and connect to irc.freenode.net join channel #arcemu /server irc.freenode.net:6667 /join #arcemu
jackpoz  : (03 August 2011 - 05:33 AM) to all Lua Engine (old one) users: please check http://arcemu.org/fo...showtopic=25274
Hasbro  : (20 May 2011 - 05:27 PM) Looking for people experienced with CMake configuration and setup! Contact me asap
Hasbro  : (15 May 2011 - 05:03 PM) ArcEmu is recruiting C++ programmers, contact Hasbro if interested.
paroxysm  : (03 May 2011 - 06:26 PM) Updated luabridge gossip example to describe the whole gossip creation process rather than just how to create menu. Gossip tutorial
paroxysm  : (23 April 2011 - 11:35 AM) Lua writers can refer to the Luabridge Tutorials section in the Wiki to learn how to write gossip code correctly.
Hasbro  : (20 April 2011 - 05:22 PM) Thank you for your continuous contribution of bug reports, we are working on them.
Hasbro  : (17 April 2011 - 03:20 AM) Please consider donating to support our bills. Donations can be sent using PayPal to donations@arcemu.org - Thank you for your support.
paroxysm  : (10 April 2011 - 12:43 AM) Refer to the Luabridge Tutorials section in the Wiki to learn the new syntax of luabridge.
Resize Shouts Area

Read:

When submitting patches - READ: http://arcemu.org/fo...?showtopic=2355 -
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[priest] Mind Sear

#1 User is offline   Neo_mat 

  • drunken bear rider
  • PipPipPip
  • Group: Developers
  • Posts: 278
  • Joined: 07-June 08
  • Gender:Male
  • Server OS:Linux

Posted 25 January 2012 - 08:03 AM

Priest: Mind Sear is working as it should be, triggered spell should get Aura's Caster as m_caster and m_DestX/Y/Z as Aura target's XYZ.


Though this shite is kinda hacky, but spells like Mind Sear and Mohawk Grenade are requiring some custom tweaking, while SpellTargeting system is handling most general cases, some spells are designed differently and I don't really want to touch SpellTargeting rules. /*You might try to do this other way, but if you will want to, don't forget to make sure that triggeredSpell will never get m_target as m_caster, because then spell will do damage at the end of channeling cast to the ChannelSpellTarget, what shouldn't happen at any time.*/
From 19dbf9809d068f69d70ca2be625720733af52950 Mon Sep 17 00:00:00 2001
From: Neo_mat <neomat.github@gmail.com>
Date: Wed, 25 Jan 2012 16:38:00 +0400
Subject: [PATCH] Priest: Mind Sear is working as it should be, triggered
 spell should get Aura's Caster as m_caster and m_DestX/Y/Z
 as Aura target's XYZ.

---
 src/arcemu-world/Spell.h 		|    1 +
 src/arcemu-world/SpellAuras.cpp  |   17 +++++++++++++++++
 src/arcemu-world/SpellTarget.cpp |   18 ++++++++++++++++++
 3 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/src/arcemu-world/Spell.h b/src/arcemu-world/Spell.h
index c1383f7..fc74362 100644
--- a/src/arcemu-world/Spell.h
+++ b/src/arcemu-world/Spell.h
@@ -2219,6 +2219,7 @@ class SERVER_DECL Spell : public EventableObject
 		TargetsList m_targetUnits[3];
 		void SafeAddTarget(TargetsList* tgt, uint64 guid);
 
+		void RemoveTarget(uint32 i, Object* obj);
 		void SafeAddMissedTarget(uint64 guid);
 		void SafeAddModeratedTarget(uint64 guid, uint16 type);
 
diff --git a/src/arcemu-world/SpellAuras.cpp b/src/arcemu-world/SpellAuras.cpp
index 549a8ac..4356b2b 100644
--- a/src/arcemu-world/SpellAuras.cpp
+++ b/src/arcemu-world/SpellAuras.cpp
@@ -3103,6 +3103,22 @@ void Aura::SpellAuraPeriodicTriggerSpell(bool apply)
 
 void Aura::EventPeriodicTriggerSpell(SpellEntry* spellInfo, bool overridevalues, int32 overridevalue)
 {
+	Unit* u_caster = GetUnitCaster();
+
+	if(spellInfo->NameHash == SPELL_HASH_MIND_SEAR)
+	{
+		Spell *spell = sSpellFactoryMgr.NewSpell(u_caster, spellInfo, true, this);
+		SpellCastTargets targets;
+		//Mind Sear hackz
+		targets.m_unitTarget = m_target->GetGUID();
+		targets.m_destX = m_target->GetPositionX();
+		targets.m_destY = m_target->GetPositionY();
+		targets.m_destZ = m_target->GetPositionZ();
+		spell->prepare(&targets);
+		return; 
+	}
+	else
+	{
 	Spell* spell = sSpellFactoryMgr.NewSpell(m_target, spellInfo, true, this);
 	if(overridevalues)
 	{
@@ -3113,6 +3129,7 @@ void Aura::EventPeriodicTriggerSpell(SpellEntry* spellInfo, bool overridevalues,
 	SpellCastTargets targets;
 	spell->GenerateTargets(&targets);
 	spell->prepare(&targets);
+	}
 }
 
 void Aura::SpellAuraPeriodicEnergize(bool apply)
diff --git a/src/arcemu-world/SpellTarget.cpp b/src/arcemu-world/SpellTarget.cpp
index 1516459..83f5164 100644
--- a/src/arcemu-world/SpellTarget.cpp
+++ b/src/arcemu-world/SpellTarget.cpp
@@ -165,6 +165,13 @@ void Spell::FillTargetMap(uint32 i)
 
 	if(TargetType & SPELL_TARGET_OBJECT_SCRIPTED)
 		AddScriptedOrSpellFocusTargets(i, TargetType, GetRadius(i), m_spellInfo->MaxTargets);
+
+	//Mind Sear hackz
+	if(GetProto()->Id == 53022 || GetProto()->Id == 49821)
+	{
+		Object* target = m_caster->GetMapMgr()->_GetObject(m_targets.m_unitTarget);
+		RemoveTarget(i, target);
+	}
 }
 
 void Spell::AddScriptedOrSpellFocusTargets(uint32 i, uint32 TargetType, float r, uint32 maxtargets)
@@ -386,6 +393,17 @@ void Spell::AddAOETargets(uint32 i, uint32 TargetType, float r, uint32 maxtarget
 	}
 }
 
+void Spell::RemoveTarget(uint32 i, Object* obj)
+{
+	TargetsList* t = &m_targetUnits[i];
+
+	if(obj == NULL || !obj->IsInWorld())
+	return;
+
+	t->erase(std::remove(t->begin(), t->end(), obj->GetGUID()), t->end());
+
+}
+
 bool Spell::AddTarget(uint32 i, uint32 TargetType, Object* obj)
 {
 	TargetsList* t = &m_targetUnits[i];
-- 
1.7.8.msysgit.0

Attached File(s)


Posted Image
Posted Image
Posted Image
I am 91% addicted to World of Warcraft. What about you?
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users