|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Development::Feature Requests Post suggestions/feature requests here. |
10-17-2008, 07:33 PM
|
Demi-God
|
|
Join Date: May 2007
Posts: 1,032
|
|
Critical Spell casting Rule
we allready have Rule for Client and NPC critical melee - why not spell casting?
I recomend we add it
we will need CriticalSpellChance for NPC, general Client, and separatetly for Wizards I guess
|
10-21-2008, 06:00 PM
|
Sarnak
|
|
Join Date: Jun 2004
Posts: 67
|
|
Much indeed
|
|
|
|
10-21-2008, 09:00 PM
|
Developer
|
|
Join Date: Mar 2007
Location: Ohio
Posts: 648
|
|
Here's the spell crit code:
zone/effects.cpp, around line 95 in Client::GetActSpellDamage()
Code:
if(tt != ST_Self) {
int chance = 0;
sint32 ratio = 0;
//normal spell crit
if(GetClass() == WIZARD && GetLevel() > 11) {
chance += 7;
ratio += 15;
}
//Normal EQ: no class that has ingenuity has reg spell crit AAs too but people
//are free to customize so lets make sure they don't stack oddly.
//afaik all ranks provide a 100% bonus in damage on critical
switch(GetAA(aaIngenuity))
{
case 1:
case 2:
case 3:
if(ratio < 100)
ratio = 100;
break;
default:
break;
}
if(tt == ST_Target || tt == ST_Summoned || tt == ST_Undead) {
//DD spells only...
//reference: http://www.graffe.com/AA/
switch (GetAA(aaSpellCastingFury)) //not sure why this was different from Mastery before, both are DD only
{
case 1:
chance += 2;
ratio += 33;
break;
case 2:
chance += 4; //some reports between 4.5% & 5%, AA description indicates 4%
ratio += 66;
break;
case 3:
chance += 7;
ratio += 100;
break;
}
switch (GetAA(aaSpellCastingFuryMastery)) //ratio should carry over from Spell Casting Fury, which is 100% for all ranks
{
case 1:
chance += 3; //10%, Graffe = 9%?
break;
case 2:
chance += 5; //12%, Graffe = 11%?
break;
case 3:
chance += 7; //14%, Graffe = 13%?
break;
}
chance += GetAA(aaFuryofMagic) * 2; //doesn't look like this is used
chance += GetAA(aaFuryofMagicMastery) * 2; //doesn't look like this is used
chance += GetAA(aaFuryofMagicMastery2) * 2; //this is the current one used in DB; 16%, 18%, 20%; Graffe guesses 18-19% max
chance += GetAA(aaAdvancedFuryofMagicMastery) * 2; //guessing, not much data on it
if(ratio < 100) //chance increase and ratio are made up, not confirmed
ratio = 100;
} else if(tt == ST_Tap) {
if(ratio < 100) //chance increase and ratio are made up, not confirmed
ratio = 100;
if(spells[spell_id].classes[SHADOWKNIGHT-1] >= 254 && spell_id != SPELL_LEECH_TOUCH){
switch (GetAA(aaSoulAbrasion)) //Soul Abrasion
{
case 1:
modifier += 100;
break;
case 2:
modifier += 200;
break;
case 3:
modifier += 300;
break;
}
}
}
chance += GetAA(aaIngenuity); //nothing stating it's DD only, so we'll apply to all damage spells
chance += GetFocusEffect(focusImprovedCritical, spell_id);
//crit damage modifiers
if (GetClass() == WIZARD) { //wizards get an additional bonus
ratio += GetAA(aaDestructiveFury) * 8; //108%, 116%, 124%, close to Graffe's 207%, 215%, & 225%
} else {
switch (GetAA(aaDestructiveFury)) //not quite linear
{
case 1:
ratio += 4; //104%, Graffe = 103%
break;
case 2:
ratio += 8; //108%, Graffe = 107%
break;
case 3:
ratio += 16; //116%, Graffe = 115%
}
}
if(chance > 0 && MakeRandomInt(0,100) <= chance) {
modifier += modifier*ratio/100;
entity_list.MessageClose(this, false, 100, MT_SpellCrits, "%s delivers a critical blast! (%d)", GetName(), ((-value * modifier) / 100));
}
}
Are you thinking something like this?
Code:
if(tt != ST_Self) {
int chance = RuleI(Spells, BaseCritChance);
sint32 ratio = RuleI(Spells, BaseCritRatio);
//normal spell crit
if(GetClass() == WIZARD && GetLevel() > 11) {
chance += RuleI(Spells, WizCritChance);
ratio += RuleI(Spells, WizCritRatio);
}
|
|
|
|
10-21-2008, 10:23 PM
|
Demi-God
|
|
Join Date: May 2007
Posts: 1,032
|
|
you are the coder AndMetal
You are our only hope
|
10-25-2008, 01:51 PM
|
Sarnak
|
|
Join Date: Jun 2004
Posts: 67
|
|
Cool hope this gets implented
|
10-25-2008, 05:45 PM
|
Demi-God
|
|
Join Date: May 2007
Posts: 1,032
|
|
well some of us stil waiting for OFFICIAL release posted at download section =)
its been a while
but anyway I thank Addmetal for puting in the code on such short notice =)
|
10-25-2008, 09:30 PM
|
Demi-God
|
|
Join Date: May 2007
Posts: 1,032
|
|
ok i have looked at changelog and have few questions.
AndMetal: New rules for tweaking spell crits: Spells:BaseCritChance(0), Spells:BaseCritRatio(0), Spells:WizCritLevel(12), Spells:WizCritChance(7), Spells:WizCritRatio(15)
What the difirence bewten Ratio and Chance?
also dose Base only applies only to client (players) or NPCs too?
|
10-26-2008, 06:38 PM
|
Developer
|
|
Join Date: Mar 2007
Location: Ohio
Posts: 648
|
|
Quote:
Originally Posted by ChaosSlayer
AndMetal: New rules for tweaking spell crits: Spells:BaseCritChance(0), Spells:BaseCritRatio(0), Spells:WizCritLevel(12), Spells:WizCritChance(7), Spells:WizCritRatio(15)
What the difirence bewten Ratio and Chance?
|
Chance: % chance to crit
Ratio: % of additional damage (100% = 2x damage)
Quote:
Originally Posted by ChaosSlayer
dose Base only applies only to client (players) or NPCs too?
|
The function is in the Client class ( Client::GetActSpellDamage), so that means this would only apply towards clients. Honestly, I don't think there's anything that allows an NPC to crit. If we added this, it would have to be a part of the Mob class (so Mob::GetActSpellDamage, which applies towards both clients & NPCs), unless we wanted it to be different for NPCs (then NPC::GetActSpellDamage).
|
|
|
|
10-26-2008, 11:31 PM
|
Demi-God
|
|
Join Date: May 2007
Posts: 1,032
|
|
Quote:
Originally Posted by AndMetal
Chance: % chance to crit
Ratio: % of additional damage (100% = 2x damage)
The function is in the Client class (Client::GetActSpellDamage), so that means this would only apply towards clients. Honestly, I don't think there's anything that allows an NPC to crit. If we added this, it would have to be a part of the Mob class (so Mob::GetActSpellDamage, which applies towards both clients & NPCs), unless we wanted it to be different for NPCs (then NPC::GetActSpellDamage).
|
I see.
the reason I asked is cuase there is a melee critical for mobs in Rules which works rather nicely
|
10-27-2008, 12:35 AM
|
Developer
|
|
Join Date: Mar 2007
Location: Ohio
Posts: 648
|
|
I think the big question here is, do mobs crit spells on Live? I don't remember them critting, but it may have changed. If not, I'm sure this would do well as custom code.
Looking into the code, GetActSpellDamage is a virtual function already defined in zone/mob.h in the Mob class, and just returns the damage passed to it, unmodified, by default. That means we just need to add the function for NPCs somewhere (probably also in zone/effects.cpp & declared in zone/npc.h).
|
|
|
|
10-27-2008, 12:59 AM
|
Demi-God
|
|
Join Date: May 2007
Posts: 1,032
|
|
Quote:
Originally Posted by AndMetal
I think the big question here is, do mobs crit spells on Live? I don't remember them critting, but it may have changed. If not, I'm sure this would do well as custom code.
Looking into the code, GetActSpellDamage is a virtual function already defined in zone/mob.h in the Mob class, and just returns the damage passed to it, unmodified, by default. That means we just need to add the function for NPCs somewhere (probably also in zone/effects.cpp & declared in zone/npc.h).
|
well back from when I played on LIVE mobs did not melee critical neither - at least you would never know that unless mob woudl hit you for some abnormal ammount of damage.
with spell it was even greater mistery. For a very long time you did not even know how much you been nuked for (you would simply see a message like - "you are bathed in fire" and no dmg was specified), and considering that critical doubles dmg done (unlike other games like say WoW where critical automaticly outputs Max dmg posible and then doubles it) - its prety much imposible to check unless due to chance you get nuked for some ungoodly ammount of damage
Personaly I don't realy concern with it. I am simply coming from bases that if Mobs Melee Critical was put it - I don't see a reason not to put in mob spell critical
|
|
|
|
11-17-2008, 12:35 PM
|
Discordant
|
|
Join Date: Jan 2005
Posts: 320
|
|
Did this ever make it into the CVS? I was trying to look through it and figure out why it's not working on my server. Doesn't appear to be there but I have the rules for it in my DB.
|
11-17-2008, 12:49 PM
|
Discordant
|
|
Join Date: Jan 2005
Posts: 320
|
|
OK I didn't look very well, it is in the source actually. It doesn't work on my server at all though.
|
11-17-2008, 05:08 PM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
You need to be downloading the newer versions of the emu code from the new SVN here:
http://code.google.com/p/projecteqemu/
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 07:58 PM.
|
|
|
|
|
|
|
|
|
|
|
|
|