[Guide] Ninja Skills On CoEmu v2

05/27/2009 04:23 BrokeN^WinG#1
I see Many People Say Ninja Skills Dont Work and it was
with me i`ll tell you how to make it work really simple :D

buy dragon gems from shoping mail

go to pc here the command /scroll pc get the item u wanna socket a gem on it

put the item put the 2 gems on all ur gears

go and try ninja skills now

Sorry if my english is bad and the guide 2 :(

here some a screen shot

[Only registered and activated users can see links. Click Here To Register...]
05/27/2009 04:37 BrokeN^WinG#2
Dude i put dragons gems on all my gears after that ninja skills working with me

not this skill only
05/27/2009 04:44 BrokeN^WinG#3
yea it always miss hmm this skill working great "TwoFoldBlades"
05/27/2009 05:36 Epic-Chaos#4
TwoFolds failed i had to rewrite it to be stronger. and i have the code Toxic Fog almost fully complet which i will release tommrow or later tonight "hopeufully"
05/27/2009 05:50 BrokeN^WinG#5
we Wait your release any way
05/27/2009 10:35 jvt619#6
good many coders=)
05/27/2009 11:27 alexbigfoot#7
Its not about the dragon gems or what ever, its about the damage calculation. The ninja skills are sent as thunder or like other 'normal' skills, so you have to modify the calculation process. Like:

if (SkillID <= 6011 && SkillID >= 6000)
Damage = Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);

Anyway i kinda fixed it, how ever its not fixed, i`m still working on it.
Code:
/*
 * Created by SharpDevelop.
 * User: sams
 * Date: 3/20/2009
 * Time: 12:35 PM
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections;
using System.Collections.Generic;
using CoEmu_v2_GameServer.Connections;
using CoEmu_v2_GameServer.Entities;
using CoEmu_v2_GameServer.Structs;
using CoEmu_v2_GameServer.Packets;

namespace CoEmu_v2_GameServer.Calculations
{
	/// <summary>
	/// Calculates damage to a character or monster.
	/// </summary>
	public partial class Calculation
	{
		public static int Damage(Character Attacker, Character Attacked, int AType, int SkillID, int SkillLevel)
		{
			if(Attacker.MinAttack > Attacker.MaxAttack)
			{
				return 0;
			}
			if(AType == 2)
			{
				int Damage = Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
				Damage -= Attacked.Defense;
				if(Attacked.Reborn == 1)
				{
					Damage = (int)Math.Floor(Damage*.7);
				}
				else if(Attacked.Reborn == 2)
				{
					Damage = (int)Math.Floor(Damage*.7);
					if(Attacker.Reborn < 2)
						Damage = (int)Math.Floor(Damage*.5);
				}
				double Tort = 0;
				Tort += Attacked.NTG*0.02;
				Tort += Attacked.RTG*0.04;
				Tort += Attacked.STG*0.06;
				Damage = (int)Math.Floor(Damage*(1-Tort));
				if(Attacked.Bless > 0)
				{
					Damage = (int)Math.Floor(Damage * (1 - (Attacked.Bless*0.01)));
				}
				//TODO: Superman
				if(Damage < 0)
					Damage = 1;
				if((Attacked.isGM || Attacked.isPM) && Attacked.Invincible)
					Damage = 0;
                Damage += (int)Attacker.PlusDamage;
                Damage -= (int)Attacked.MinusDamage;
                if (Damage < 2) Damage = 1;
				return Damage;
			}
			else if(AType == 21)
			{
                int Damage = AddedMagicDamage(SkillID, SkillLevel);
                if (SkillID <= 6011 && SkillID >= 6000)
                    Damage += Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
                else
                    Damage += Attacker.MagicAttack;
				if(Attacked.MagicDefense > 0)
				{
					double MDef = 1;
					if(Attacked.MagicDefense < 90)
					{
						MDef = (Attacked.MagicDefense * 0.01);
					}
					else
					{
						MDef = (90 * 0.01);
					}
					Damage = (int)Math.Floor(Damage - (Damage*MDef));
				}
				Damage = Convert.ToInt32(Damage*0.75);
				if(Attacked.Reborn == 1)
				{
					Damage = (int)Math.Floor(Damage*.7);
				}
				else if(Attacked.Reborn == 2)
				{
					Damage = (int)Math.Floor(Damage*.7);
					if(Attacker.Reborn < 2)
						Damage = (int)Math.Floor(Damage*.5);
				}
				Damage += Attacker.BonusMagicAttack;
				Damage -= Attacked.BonusMagicDefense;
				double Tort = 0;
				Tort += Attacked.NTG*0.02;
				Tort += Attacked.RTG*0.04;
				Tort += Attacked.STG*0.06;
				Damage = (int)Math.Floor(Damage*(1-Tort));
				if(Attacked.Bless > 0)
				{
					Damage = (int)Math.Floor(Damage * (1 - (Attacked.Bless*0.01)));
				}
				if(Damage < 0)
					Damage = 1;
				if((Attacked.isGM || Attacked.isPM) && Attacked.Invincible)
					Damage = 0;
                Damage += (int)Attacker.PlusMagicDamage;
                Damage -= (int)Attacked.MinusMagicDamage;
                if (Damage < 2) Damage = 1;
				return Damage;
			}
			else if(AType == 25)
			{
				int Damage = Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
				if(Attacked.Dodge > 0)
				{
					double Dodge = 0;
					if(Attacked.Dodge <= 94)
						Dodge = Attacked.Dodge*0.01;
					else
						Dodge = 94*0.01;
					Damage = (int)Math.Floor(Damage - (Damage*Dodge));
				}
				if(Attacked.Reborn == 1)
				{
					Damage = (int)Math.Floor(Damage*.7);
				}
				else if(Attacked.Reborn == 2)
				{
					Damage = (int)Math.Floor(Damage*.7);
					if(Attacker.Reborn < 2)
						Damage = (int)Math.Floor(Damage*.5);
				}
				Damage += Attacker.BonusMagicAttack;
				Damage -= Attacked.BonusMagicDefense;
				double Tort = 0;
				Tort += Attacked.NTG*0.02;
				Tort += Attacked.RTG*0.04;
				Tort += Attacked.STG*0.06;
				Damage = (int)Math.Floor(Damage*(1-Tort));
				if(Attacked.Bless > 0)
				{
					Damage = (int)Math.Floor(Damage * (1 - (Attacked.Bless*0.01)));
				}
				if(Damage < 0)
					Damage = 1;
				if((Attacked.isGM || Attacked.isPM) && Attacked.Invincible)
					Damage = 0;
                Damage += (int)Attacker.PlusDamage;
                Damage -= (int)Attacked.MinusDamage;
                if (Damage < 2) Damage = 1;
				return Damage;
			}
			return 0;
		}
		public static int Damage(Character Attacker, Monster Attacked, int AType, int MagicID, int MagicLevel)
		{
			if(Attacker.MinAttack > Attacker.MaxAttack)
			{
				return 0;
			}
			//TODO: Magic, Archer
			if(AType == 2)
			{
				int Damage = Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
				if(Attacked.Info.Name != "CoEmuGuard" && Attacked.Info.Name != "CoEmuPatrol" && Attacked.Info.Name != "GuildPatrol" && Attacked.Info.Name != "GuardReviver")
				{
					int Leveldiff = (Attacker.Level+2) - Attacked.Level;
					int Damageadd = (int)Math.Floor(1 + (Leveldiff/5)*0.8);
					if(Damageadd > 1)
						Damage = Damageadd * Damage;
				}
				Damage -= Attacked.Info.Defense;
				if(Damage < 0)
					Damage = 1;
                Damage += (int)Attacker.PlusDamage;
				//TODO: Superman
				return Damage;
			}
            else if (AType == 21)
            {
                int Damage = AddedMagicDamage(MagicID, MagicLevel); ;
                if (MagicID <= 6011 && MagicID >= 6000)
                    Damage += Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
                else
                    Damage += Attacker.MagicAttack;
                if (Attacked.Info.MDefense > 0)
                {
                    double MDef = (Attacked.Info.MDefense * 0.01);
                    Damage = (int)Math.Floor(Damage - (Damage * MDef));
                }
                if (Attacked.Info.Name != "CoEmuGuard" && Attacked.Info.Name != "CoEmuPatrol" && Attacked.Info.Name != "GuildPatrol" && Attacked.Info.Name != "GuardReviver")
                {
                    int Leveldiff = (Attacker.Level + 2) - Attacked.Level;
                    int Damageadd = (int)Math.Floor(1 + (Leveldiff / 5) * 0.8);
                    if (Damageadd > 1)
                        Damage = Damageadd * Damage;
                }
                if (Damage < 0)
                    Damage = 1;
                Damage += (int)Attacker.PlusDamage;
                return Damage;
            }
            else if (AType == 25)
            {
                int Damage = Nano.Rand.Next(Attacker.MinAttack, Attacker.MaxAttack);
                if (Attacked.Info.Dodge > 0)
                {
                    double Dodge = Attacked.Info.Dodge * 0.01;
                    Damage = (int)Math.Floor(Damage - (Damage * Dodge));
                }
                if (Attacked.Info.Name != "CoEmuGuard" && Attacked.Info.Name != "CoEmuPatrol" && Attacked.Info.Name != "GuildPatrol" && Attacked.Info.Name != "GuardReviver")
                {
                    int Leveldiff = (Attacker.Level + 2) - Attacked.Level;
                    int Damageadd = (int)Math.Floor(1 + (Leveldiff / 5) * 0.8);
                    if (Damageadd > 1)
                        Damage = Damageadd * Damage;
                }
                if (Damage < 0)
                    Damage = 1;
                Damage += (int)Attacker.PlusDamage;
                return Damage;
            }
			return 0;
		}
	}
}
06/14/2009 05:38 editor05#8
what .cs should i messed up with for this calculation...
06/14/2009 21:46 igorzver#9
hey guys can someone help me how to get 2 katanas?
06/14/2009 22:00 Kiyono#10
/item EmperorKatana 9 2 12 7 255 0
06/15/2009 20:00 dextercsar#11
I cant fixed any guideee please....