|Sҕ⏕@			|NX}X⏕@
|ID  lv name		val	|				{xml	custom.xml
|4322 1 WindWalk	33	|4262 2 Christmas.WindWalk	33	20 34
|4323 1 Shield		1.15	|4266 3 Christmas.Shield	1.15	1.08 1.12 1.15
|4338 1 Life Cubic	-	|
|4324 1 Bless the Body	1.35	|
|4325 1 Vampiric Rage	9	|
|4326 1 Regeneration	1.20	|
|4327 1 Haste		1.15	|4263 1 Christmas.Haste		1.15	1.15 1.33
|				|4264 1 Christmas.Empower	1.55	1.55
|				|4265 3 Christmas.Might		1.15	1.08 1.12 1.15
--------------------------------+--------------------------------
|4322 1 WindWalk		|4262   Christmas.WindWalk
|4323 1 Shield			|4266   Christmas.Shield
|4338 1 Life Cubic		|
|4328 1 Bless the Soul		|
|4329 1 Acumen			|
|4330 1 Concentration		|
|4331 1 Empower			|
|				|4263   Christmas.Haste
|				|4264   Christmas.Empower
|				|4265   Christmas.Might

ʏ㕔̃G`g ACR
4200-4299.xml -- levels ׂĂPɂȂĂ̂ŁAB
skillname-j.dat
4262	2	NX}X EBh EH[N	莞ԁAړxサԁB2B	none	none
4263	1	NX}X wCXg	ꎞIɍUxコB1B	none	none
4264	1	NX}X Gp[	ꎞIɖ͂サԁB1B	none	none
4265	3	NX}X }Cg	ꎞIɍU͂サԁB3B	none	none
4266	3	NX}X V[h	ꎞIɖh͂サԁB3B	none	none

t@C IWi4200-4299.xml  4200-4299.XML rĂ܂
***** IWi4200-4299.xml
<skill id="4262" levels="1" name="Holiday Wind Walk">
***** 4200-4299.XML
<skill id="4262" levels="2" name="Holiday Wind Walk">
*****

***** IWi4200-4299.xml
<skill id="4265" levels="1" name="Holiday Might">
***** 4200-4299.XML
<skill id="4265" levels="3" name="Holiday Might">
*****

***** IWi4200-4299.xml
<skill id="4266" levels="1" name="Holiday Shield">
***** 4200-4299.XML
<skill id="4266" levels="3" name="Holiday Shield">
*****

NX}X@PȂ
hitTime Ɋւ鏈

Ƃ肠A4200-4299.xml  hitTime= "500"  Oɂ

́AL2NpcInstance.java 
public void makeSupportMagic(L2PcInstance player)

[ύXO]
        for (L2HelperBuff helperBuffItem : HelperBuffTable.getInstance().getHelperBuffTable())
        {
           if( helperBuffItem.isMagicClassBuff() == player.isMageClass())
           {
              if(player_level>=helperBuffItem.getLowerLevel() && player_level<=helperBuffItem.getUpperLevel())
              {
                  skill = SkillTable.getInstance().getInfo(helperBuffItem.getSkillID(),helperBuffItem.getSkillLevel());
-                  if (skill.getSkillType() == SkillType.SUMMON)
-                      player.doCast(skill);
-                  else
-                      doCast(skill);
              }
           }
        }

[ύX]
        for (L2HelperBuff helperBuffItem : HelperBuffTable.getInstance().getHelperBuffTable())
        {
           if( helperBuffItem.isMagicClassBuff() == player.isMageClass())
           {
              if(player_level>=helperBuffItem.getLowerLevel() && player_level<=helperBuffItem.getUpperLevel())
              {
                  skill = SkillTable.getInstance().getInfo(helperBuffItem.getSkillID(),helperBuffItem.getSkillLevel());
+                  //XXX:[JOJO]
+            	  L2Character pc = skill.getSkillType() == SkillType.SUMMON ? player : this;
+            	  if (pc.isCastingNow())
+            	  {
+                	  long t = (pc.getCastEndTime() - GameTimeController.getGameTicks()) * GameTimeController.MILLIS_IN_TICK;
+                	  //player.sendMessage(pc.getName() + " is casting now. Time=" + t + " m-sec.");	//XXX:DEBUG
+            		  try { Thread.sleep(t); } catch (InterruptedException e) { }
+            	  }
+            	  pc.doCast(skill);
+                  //XXX:[/JOJO]
              }
           }
        }

helper_buff_list e[u
ύX
