Reaver - Is it worth it?
#1
Posté 10 mars 2011 - 10:50
#2
Posté 11 mars 2011 - 04:57
#3
Posté 11 mars 2011 - 01:43
#4
Posté 12 mars 2011 - 03:31
#5
Posté 19 mars 2011 - 06:46
Any way to re-recrute her after she walks off?
Modifié par Nortath, 19 mars 2011 - 06:47 .
#6
Posté 19 mars 2011 - 11:10
edit: I finally tried it on Alistar and aura of pain is great on a tank for threat. Make sure you have a tactic for "surrounded by no enemies- deactivate" and "health <25%- deactivate" though. Devour could be useful in theory for a tank.
Modifié par Gravbh, 21 mars 2011 - 12:38 .
#7
Posté 20 mars 2011 - 12:18
Usually just pick the 1st 2 powers (Devour & Frightening Appearance) and usually only set up tactics for Devour: Self >at least 5 (or 3) enemies are dead > Devour (sometimes saves on using a heal)
I suppose one could make fights easier by: Enemy > surrounded by 2 (or more) allies > Frightening Appearance... That would leave enemy quaking whilst being owned.
Personally I only see the spec as made for Sten, same as Berserker for Ogren, Templar for Alistair and Champion for the PC
#8
Posté 20 mars 2011 - 06:42
#9
Posté 20 mars 2011 - 10:23
#10
Posté 21 mars 2011 - 04:32
#11
Posté 26 mars 2011 - 09:19
I do a ton of damage with my Reaver with medium armor (Wades Sup Medium) and have tons of stamina. Aura of Pain works well with Blood Frenzy because the more damage you take the more damage you dish out.
On Nightmare Aura of Pain does a lot less damage sadly. I wouldn't recommend going Reaver unless you just want to role-play, like I am. I selected Reaver and Berserker on my new playthrough and overall I'm not getting much use. Devour is useful at times and so is frightneing apperance sometimes but overall Reaver abilities pale compared to Templar and Champion abilities.
I'm having fun with it though, I'm utterly destroying mobs on Nightmare right now with my current setup. Aura of Pain only does 6 damage per bolt which is pathetic IMO, but it does damage to the PC so that's all that matters.
Going to respect in Awakening.
Modifié par Soilborn88, 26 mars 2011 - 09:20 .
#12
Posté 30 mars 2011 - 02:50
#13
Posté 30 mars 2011 - 04:06
frightening appearance ->aura of pain -> devour -> blood frenzy.
#14
Posté 30 mars 2011 - 08:50
#15
Posté 01 avril 2011 - 11:14
Heal on CD? Some Enemies already dead? => Devour: it can easily fill your healthbar by a fair amount. It seems to be buggy though, as you sometimes get a chunk of hp while the ability is on cooldown (kinda like Death Syphon/Death Magic).
Frightening Appearance buffs your taunt and gives you a fairly good CC.
Im running Reaver/Templer on my current 2H-tank and she just obliterates everything. If she gets to <20% health its a onehit-KO on Genlocks. And even at such low health it is still safe to fight if you have Force Field/Heal/Glyph of Warding etc. to help out in a pinch.
Aura of Pain? Meh, sounds good on paper and even works while being in a Force Field, but the damage is pathetic on Nightmare. They should rename it to "Aura of fluffy cushions". As for the self damage, I'd rather rely on the enemy than to have 60 less stamina due to upkeep.
#16
Posté 01 avril 2011 - 01:24
#17
Posté 01 avril 2011 - 07:11
Yes Aura of Pain is weak, but it helps keep continual aggro on surrounding enemies so it still has its uses. As for Devour, sure it's fine as is IF you are controlling that character in that situation, but it's pretty difficult to use effectively otherwise. Also, with the change i made to the talent it can be a useful abilty for ENEMY reavers. I decided to keep the talent indescriminant for who it targets since I think that better suits the bamf reaver personality that I envision
#18
Posté 01 avril 2011 - 10:20
Nortath wrote...
I'm also very dissappointed in the over all outcome, and it's use/talent. It is so off morally, and eval in how you get it. Expecially if you still have Wynne, you will loose her. I feel it should have had more thought placed into it, ans it's final talents. The only aspect I find usefull is the Frightening Apperance talent. Like stun. But there are other talents that do the same. But multiple stun talents can be quite usable when you consider cooldown times, and whatever your attacking.
Any way to re-recrute her after she walks off?
How is it evil? You are helping one insane cult against another insane cult no matter how you look at it!
Especially if you're a Dalish Elf, I can see a non evil person doing this. It is a symbol for the Chantry, and after you beat the game after discovering it, pilgrims flock there in droves. It also "proves" the Chant is the truth to a lot of less intelligent people (who don't realize that if Andraste was just a powerful mage, and since the temple was Full to the brim with Lyrium as Oghren tells you, the ashes are quite possible without any Maker needed).
This is the same religion that said to the elves "worship our god or die". And this is after the elves helped liberate them from Tevinter. And once more Andraste nutjobs wonder into ferelden things are going to get very bad for the Dalish elves.
On the other hand, you're killing a dragon, a really interesting and majestic animal on the verge of extinction that is at least as intelligent as a dolphin and is only trying to survive, desptie the lunatic people around it.
#19
Posté 03 avril 2011 - 06:11
#20
Posté 04 avril 2011 - 03:59
stragonar wrote...
I couldn't be satisfied with the reaver class until i changed the devour ability myself. Made it so that devour works on living foes and not dead, basically making it a self centered aoe drain life, and scaled it with constitution for power. Makes for a much better tree overall, since you can actually use the talent effectively with health<% and/or surrounded by # enemies tactics. Of course, this makes the ability significantly more powerful so i rearranged the reaver skill tree to:
frightening appearance ->aura of pain -> devour -> blood frenzy.
Is there a way that someone else can make that change to Devour through the DAO toolset?
btw some mods like Combat Tweaks make the Reaver spec a little bit better but by the looks of most of the posts here I don't think any mod would make much of a difference.
#21
Posté 04 avril 2011 - 03:45
This works along with CT fine, however if you are also using AT; due to the addition targetting scripts in AT it will cause this talent to also hit the caster. Don't have a workaround for that yet since that would involve modifying the AT scripts and I'm not going there (not yet anyway).
If you scroll down to the case 90210 section of the script you will note I have commented this out.
I don't think it was ever intended to be applied to multiple targets at once, has caused crashes so i decided to go with the damage_effect_flag_leech instead. There are several options for this in the toolset, I just decided to go with 75% for balance. This means it still inflicts the full spirit damage aoe, but you only get 75% healing returned from each hit. Still very powerful though.
Ok, how to implement this if you so desire:
Create a new talent script in the toolset, name it something similar ( I went with talent_davour)
compile this script. if all goes well you should end up with davour.ncs in your toolsetexport directory. From here you will need to edit the abi_base.gda, replace talent_devour.ncs in the spellscript string with whatever you named the new script. You can further edit other portions of the abi_gda as you see fit to balance it (cost cooldown etc.). I would highly recommend using the taunt animation (2005) in the castanim column for devour. I find it suits the ability well.
If you want to try this and none of this makes any sense to you I'd suggest checking out the tutorials on the toolset. This post is already getting too long
// -----------------------------------------------------------------------------
// spell_aoe_instant
// -----------------------------------------------------------------------------
/*
Script for Area of Effect spells that have an instant effect.
*/
// -----------------------------------------------------------------------------
// petert
// -----------------------------------------------------------------------------
#include "log_h"
#include "abi_templates"
#include "combat_h"
#include "talent_constants_h"
const float DRAIN_LIFE_DAMAGE_FACTOR = 1.1f;
const int DEVOUR_PROJECTILE = 104;
const resource SCRIPT_SPELL_DEATH_MAGIC = R"talent_devour.ncs";
void main()
{
event ev = GetCurrentEvent();
int nEventType = GetEventType(ev); // CAST (directly from engine) or COMMAND_PENDING (re-directed by rules_core)
switch(nEventType)
{
case EVENT_TYPE_SPELLSCRIPT_PENDING:
{
// Get a structure with the event parameters
struct EventSpellScriptCastStruct stEvent = Events_GetEventSpellScriptCastParameters(ev);
#ifdef DEBUG
Log_Trace(LOG_CHANNEL_COMBAT_ABILITY, GetCurrentScriptName() + ".EVENT_TYPE_SPELLSCRIPT_PENDING", Log_GetAbilityNameById(stEvent.nAbility));
#endif
// Setting Return Value
Ability_SetSpellscriptPendingEventResult(COMMAND_RESULT_SUCCESS);
break;
}
case EVENT_TYPE_SPELLSCRIPT_CAST:
{
// Get a structure with the event parameters
struct EventSpellScriptCastStruct stEvent = Events_GetEventSpellScriptCastParameters(ev);
#ifdef DEBUG
Log_Trace(LOG_CHANNEL_COMBAT_ABILITY, GetCurrentScriptName() + ".EVENT_TYPE_SPELLSCRIPT_CAST",Log_GetAbilityNameById(stEvent.nAbility));
#endif
// hand this through to cast_impact
SetAbilityResult(stEvent.oCaster, stEvent.nResistanceCheckResult);
break;
}
case EVENT_TYPE_SPELLSCRIPT_IMPACT:
{
// Get a structure with the event parameters
struct EventSpellScriptImpactStruct stEvent = Events_GetEventSpellScriptImpactParameters(ev);
#ifdef DEBUG
Log_Trace(LOG_CHANNEL_COMBAT_ABILITY, GetCurrentScriptName() + ".EVENT_TYPE_SPELLSCRIPT_IMPACT",Log_GetAbilityNameById(stEvent.nAbility));
#endif
// location impact vfx
if (stEvent.oTarget != OBJECT_INVALID)
{
stEvent.lTarget = GetLocation(stEvent.oTarget);
}
float fRadius = GetM2DAFloat(TABLE_ABILITIES_SPELLS, "aoe_param1", stEvent.nAbility);
// get objects in area of effect
object[] oTargets = GetObjectsInShape(OBJECT_TYPE_CREATURE, SHAPE_SPHERE, stEvent.lTarget, fRadius);
// cycle through objects
int nCount = 0;
int nMax = GetArraySize(oTargets);
effect eEffect;
float fDamage = 0.0f;
object oTarget;
for (nCount = 0; nCount < nMax; nCount++)
{
/*#ifdef DEBUG
LogTrace(LOG_CHANNEL_COMBAT_ABILITY, " Object " + ToString(nCount) + " = " + GetTag(oTargets[nCount]));
#endif*/
Log_Trace_Spell("_ApplyImpactDamageAndEffects"," Target is " + ToString(oTargets[nCount]), stEvent.nAbility, oTargets[nCount]);
if (GetGroupId(oTargets[nCount]) != GetGroupId(stEvent.oCaster))//(IsObjectHostile(stEvent.oCaster, oTargets[nCount]) == TRUE)
{
#ifdef DEBUG
LogTrace(LOG_CHANNEL_COMBAT_ABILITY, " Is hostile");
#endif
{
fDamage = (10.0f + GetAttributeModifier(stEvent.oCaster, PROPERTY_ATTRIBUTE_CONSTITUTION)) * DRAIN_LIFE_DAMAGE_FACTOR;
}
Log_Trace(LOG_CHANNEL_COMBAT_ABILITY, "Spellpower = " + ToString(GetCreatureSpellPower(stEvent.oCaster)));
Log_Trace(LOG_CHANNEL_COMBAT_ABILITY, "fDamage = " + ToString(fDamage));
eEffect = EffectDamage(fDamage, DAMAGE_TYPE_SPIRIT, DAMAGE_EFFECT_FLAG_LEECH_75, Ability_GetImpactObjectVfxId(stEvent.nAbility));
}
// if target can be damaged
if (fDamage > 0.0f)
{
ApplyEffectOnObject(EFFECT_DURATION_TYPE_INSTANT, eEffect, oTargets[nCount], 0.0f, stEvent.oCaster, stEvent.nAbility);
// create event
event ev = Event(90210);
ev = SetEventInteger(ev, 0, stEvent.nAbility);
ev = SetEventObject(ev, 0, stEvent.oCaster);
ev = SetEventObject(ev, 1, stEvent.oCaster);
ev = SetEventFloat(ev, 0, fDamage);
// fire projectile
vector v = GetPosition(oTargets[nCount]);
object oProjectile = FireHomingProjectile(DEVOUR_PROJECTILE, v, stEvent.oCaster, 0, stEvent.oCaster);
SetProjectileImpactEvent(oProjectile, ev);
}
}
break;
}
/*case 90210:
{
// Get a structure with the event parameters
struct EventSpellScriptImpactStruct stEvent = Events_GetEventSpellScriptImpactParameters(ev);
// heal
float fHeal = GetEventFloat(ev, 0);
effect eEffect = EffectHeal(fHeal);
eEffect = SetEffectEngineInteger(eEffect, EFFECT_INTEGER_VFX, DEVOUR_HEAL_VFX);
ApplyEffectOnObject(EFFECT_DURATION_TYPE_INSTANT, eEffect, stEvent.oCaster, 0.0f, stEvent.oCaster, stEvent.nAbility);
break;
}*/
}
}
#22
Posté 04 avril 2011 - 10:03
stragonar wrote...
Below is the current script I modified for my own personal preference of the devour ability in the toolset. Hopefully it is still readable in here but I have my doubts.
This works along with CT fine, however if you are also using AT; due to the addition targetting scripts in AT it will cause this talent to also hit the caster. Don't have a workaround for that yet since that would involve modifying the AT scripts and I'm not going there (not yet anyway).
If you scroll down to the case 90210 section of the script you will note I have commented this out.
I don't think it was ever intended to be applied to multiple targets at once, has caused crashes so i decided to go with the damage_effect_flag_leech instead. There are several options for this in the toolset, I just decided to go with 75% for balance. This means it still inflicts the full spirit damage aoe, but you only get 75% healing returned from each hit. Still very powerful though.
Ok, how to implement this if you so desire:
Create a new talent script in the toolset, name it something similar ( I went with talent_davour)
compile this script. if all goes well you should end up with davour.ncs in your toolsetexport directory. From here you will need to edit the abi_base.gda, replace talent_devour.ncs in the spellscript string with whatever you named the new script. You can further edit other portions of the abi_gda as you see fit to balance it (cost cooldown etc.). I would highly recommend using the taunt animation (2005) in the castanim column for devour. I find it suits the ability well.
If you want to try this and none of this makes any sense to you I'd suggest checking out the tutorials on the toolset. This post is already getting too long
// -----------------------------------------------------------------------------
// spell_aoe_instant
// -----------------------------------------------------------------------------
/*
Script for Area of Effect spells that have an instant effect.
*/
// -----------------------------------------------------------------------------
// petert
// -----------------------------------------------------------------------------
#include "log_h"
#include "abi_templates"
#include "combat_h"
#include "talent_constants_h"
const float DRAIN_LIFE_DAMAGE_FACTOR = 1.1f;
const int DEVOUR_PROJECTILE = 104;
const resource SCRIPT_SPELL_DEATH_MAGIC = R"talent_devour.ncs";
void main()
{
event ev = GetCurrentEvent();
int nEventType = GetEventType(ev); // CAST (directly from engine) or COMMAND_PENDING (re-directed by rules_core)
switch(nEventType)
{
case EVENT_TYPE_SPELLSCRIPT_PENDING:
{
// Get a structure with the event parameters
struct EventSpellScriptCastStruct stEvent = Events_GetEventSpellScriptCastParameters(ev);
#ifdef DEBUG
Log_Trace(LOG_CHANNEL_COMBAT_ABILITY, GetCurrentScriptName() + ".EVENT_TYPE_SPELLSCRIPT_PENDING", Log_GetAbilityNameById(stEvent.nAbility));
#endif
// Setting Return Value
Ability_SetSpellscriptPendingEventResult(COMMAND_RESULT_SUCCESS);
break;
}
case EVENT_TYPE_SPELLSCRIPT_CAST:
{
// Get a structure with the event parameters
struct EventSpellScriptCastStruct stEvent = Events_GetEventSpellScriptCastParameters(ev);
#ifdef DEBUG
Log_Trace(LOG_CHANNEL_COMBAT_ABILITY, GetCurrentScriptName() + ".EVENT_TYPE_SPELLSCRIPT_CAST",Log_GetAbilityNameById(stEvent.nAbility));
#endif
// hand this through to cast_impact
SetAbilityResult(stEvent.oCaster, stEvent.nResistanceCheckResult);
break;
}
case EVENT_TYPE_SPELLSCRIPT_IMPACT:
{
// Get a structure with the event parameters
struct EventSpellScriptImpactStruct stEvent = Events_GetEventSpellScriptImpactParameters(ev);
#ifdef DEBUG
Log_Trace(LOG_CHANNEL_COMBAT_ABILITY, GetCurrentScriptName() + ".EVENT_TYPE_SPELLSCRIPT_IMPACT",Log_GetAbilityNameById(stEvent.nAbility));
#endif
// location impact vfx
if (stEvent.oTarget != OBJECT_INVALID)
{
stEvent.lTarget = GetLocation(stEvent.oTarget);
}
float fRadius = GetM2DAFloat(TABLE_ABILITIES_SPELLS, "aoe_param1", stEvent.nAbility);
// get objects in area of effect
object[] oTargets = GetObjectsInShape(OBJECT_TYPE_CREATURE, SHAPE_SPHERE, stEvent.lTarget, fRadius);
// cycle through objects
int nCount = 0;
int nMax = GetArraySize(oTargets);
effect eEffect;
float fDamage = 0.0f;
object oTarget;
for (nCount = 0; nCount < nMax; nCount++)
{
/*#ifdef DEBUG
LogTrace(LOG_CHANNEL_COMBAT_ABILITY, " Object " + ToString(nCount) + " = " + GetTag(oTargets[nCount]));
#endif*/
Log_Trace_Spell("_ApplyImpactDamageAndEffects"," Target is " + ToString(oTargets[nCount]), stEvent.nAbility, oTargets[nCount]);
if (GetGroupId(oTargets[nCount]) != GetGroupId(stEvent.oCaster))//(IsObjectHostile(stEvent.oCaster, oTargets[nCount]) == TRUE)
{
#ifdef DEBUG
LogTrace(LOG_CHANNEL_COMBAT_ABILITY, " Is hostile");
#endif
{
fDamage = (10.0f + GetAttributeModifier(stEvent.oCaster, PROPERTY_ATTRIBUTE_CONSTITUTION)) * DRAIN_LIFE_DAMAGE_FACTOR;
}
Log_Trace(LOG_CHANNEL_COMBAT_ABILITY, "Spellpower = " + ToString(GetCreatureSpellPower(stEvent.oCaster)));
Log_Trace(LOG_CHANNEL_COMBAT_ABILITY, "fDamage = " + ToString(fDamage));
eEffect = EffectDamage(fDamage, DAMAGE_TYPE_SPIRIT, DAMAGE_EFFECT_FLAG_LEECH_75, Ability_GetImpactObjectVfxId(stEvent.nAbility));
}
// if target can be damaged
if (fDamage > 0.0f)
{
ApplyEffectOnObject(EFFECT_DURATION_TYPE_INSTANT, eEffect, oTargets[nCount], 0.0f, stEvent.oCaster, stEvent.nAbility);
// create event
event ev = Event(90210);
ev = SetEventInteger(ev, 0, stEvent.nAbility);
ev = SetEventObject(ev, 0, stEvent.oCaster);
ev = SetEventObject(ev, 1, stEvent.oCaster);
ev = SetEventFloat(ev, 0, fDamage);
// fire projectile
vector v = GetPosition(oTargets[nCount]);
object oProjectile = FireHomingProjectile(DEVOUR_PROJECTILE, v, stEvent.oCaster, 0, stEvent.oCaster);
SetProjectileImpactEvent(oProjectile, ev);
}
}
break;
}
/*case 90210:
{
// Get a structure with the event parameters
struct EventSpellScriptImpactStruct stEvent = Events_GetEventSpellScriptImpactParameters(ev);
// heal
float fHeal = GetEventFloat(ev, 0);
effect eEffect = EffectHeal(fHeal);
eEffect = SetEffectEngineInteger(eEffect, EFFECT_INTEGER_VFX, DEVOUR_HEAL_VFX);
ApplyEffectOnObject(EFFECT_DURATION_TYPE_INSTANT, eEffect, stEvent.oCaster, 0.0f, stEvent.oCaster, stEvent.nAbility);
break;
}*/
}
}
Thanks,
#23
Posté 07 avril 2011 - 06:18
I don't think you were supposed to kill anything with Aura of Pain, much less in nightmare. With just a single reaver, anyway.
#24
Posté 07 avril 2011 - 04:48
#25
Posté 08 avril 2011 - 12:33





Retour en haut







