static string DelveStyle(GameClient clt, int id)
        {
            var style = SkillBase.GetStyleByID(id, clt.Player.CharacterClass.ID);

            var dw = new DelveWriter()
                .Begin("Style").Value("Index", id);
            
            if (style != null) {
                // Not implemented:
                // (Style (FollowupStyle "Sapphire Slash")(LevelBonus "2")(OpeningDamage "16")(Skill "1")(Expires "1343375647"))
                // (Style (Fingerprint "1746652963")(FollowupStyle "Thigh Cut")(Hidden "1")OpeningDamage "55")(Skill "118")(SpecialNumber "1511")(SpecialType "1")(Expires "1342381240"))

            	dw
            		.Value("Name", style.Name)
            		.Value("Icon", style.Icon)
            		.Value("Level", style.Level)
            		.Value("Fatigue", style.EnduranceCost)
            		//.Value("SpecialType", (int)style.SpecialType, style.SpecialType != 0)
					//.Value("SpecialNumber", GetSpecialNumber(style), GetSpecialNumber(style)!=0)
            		.Value("DefensiveMod", style.BonusToDefense, style.BonusToDefense != 0)
            		.Value("AttackMod", style.BonusToHit, style.BonusToHit != 0)
            		.Value("OpeningType", (int)style.OpeningRequirementType)
					.Value("OpeningNumber", style.OpeningRequirementValue, style.OpeningRequirementType == Style.eOpening.Positional)
					//.Value("OpeningResult",GetOpeningResult(style,clt),GetOpeningResult(style,clt)>0)
					//.Value("OpeningStyle",GetOpeningStyle(style),(Style.eAttackResult)GetOpeningResult(style,clt) == Style.eAttackResult.Style)
            		.Value("Weapon", style.GetRequiredWeaponName(), style.WeaponTypeRequirement > 0)
            		.Value("Hidden", "1",style.StealthRequirement)
            		//.Value("TwoHandedIcon", 10, style.TwoHandAnimation > 0)
					//.Value("Skill",43)
					.Value("OpeningDamage",style.GrowthRate*100,style.GrowthRate>0)
					//.Value("SpecialValue", GetSpecialValue(style),GetSpecialValue(style)!=0)
					//.Value("FollowupStyle",style.DelveFollowUpStyles,!string.IsNullOrEmpty(style.DelveFollowUpStyles))
            		;
            }
            else {
                dw.Value("Name", "(not found)");
            }
            return dw.End().ToString();
        }
		/*
		public static int GetSpecialNumber(Style style)
		{
			if (style.SpecialType == Style.eSpecialType.Effect)
			{
				Spell spell = SkillBase.GetSpellById(style.SpecialValue);
				if (spell != null)
					return spell.ClientEffect;
			}
			return 0;
		}

		public static int GetSpecialValue(Style style)
		{
			switch(style.SpecialType)
			{
				case Style.eSpecialType.ExtendedRange:
					return 128; // Extended Range für Reaver style
				case Style.eSpecialType.Taunt:
					return style.SpecialValue;
			}
			return 0;
		}*/

		
		/*public static int GetOpeningResult(Style style,GameClient clt)
		{
			switch(StyleProcessor.ResolveAttackResult(style,clt.Player.PlayerCharacter.Class))
			{
				case GameLiving.eAttackResult.Any:
					return (int)Style.eAttackResult.Any;
				case GameLiving.eAttackResult.Missed:
					return (int) Style.eAttackResult.Miss;
				case GameLiving.eAttackResult.Parried:
					return (int)Style.eAttackResult.Parry;
				case GameLiving.eAttackResult.Evaded:
					return (int)Style.eAttackResult.Evade;
				case GameLiving.eAttackResult.Blocked:
					return (int)Style.eAttackResult.Block;
				case GameLiving.eAttackResult.Fumbled:
					return (int)Style.eAttackResult.Fumble;
				case GameLiving.eAttackResult.HitStyle:
					return (int)Style.eAttackResult.Style;
				case GameLiving.eAttackResult.HitUnstyled:
					return (int)Style.eAttackResult.Hit;
			}
			return 0;
		}*/
		/*
		public static string GetOpeningStyle(Style style)
		{
			if (style.OpeningRequirementValue > 0)
			{
				Style style2 = SkillBase.GetStyleByID(style.OpeningRequirementValue);
				if (style2!=null)
					return style2.Name;
				return "";
			}
			return "";
		}*/

		#endregion

		/// <summary>
		/// Delve the realm abilities for v1.110+ clients
		/// </summary>
		/// <param name="clt"></param>
		/// <param name="id"></param>
		/// <returns></returns>
        static string DelveRealmAbility(GameClient clt, int id) {
            var dw = new DelveWriter().Begin("RealmAbility").Value("Index", id);
            var ra = clt.Player.GetNonTrainableSkillList().Cast<Skill>().Where(sk => sk.ID == id).FirstOrDefault() as RealmAbility;
            if (ra != null)
            {
                ra.AddDelve(dw);
            }
            else dw.Value("Name", "(not found)");
            return dw.ToString();
        }
        /** General info @ v1.110:
         *  - Examples can be found at http://dl.dropbox.com/u/48908369/delve.txt
         *  - 'Expires' can be left out
         *  - No idea what 'Fingerprint' does
         **/

        static string DelveAbility(GameClient clt, int id) { /* or skill */
            Skill s = clt.Player.GetNonTrainableSkillList().Cast<Skill>().Where(sk => sk.ID == id).FirstOrDefault();
            var dw = new DelveWriter().Begin(s is Ability ? "Ability" : "Skill").Value("Index", id);
            if (s != null) {
                dw.Value("Name", s.Name);
            }
            else dw.Value("Name", "(not found)");
            return dw.ToString();
        }