浏览代码

Merge remote-tracking branch 'upstream/master' into refactor/cmake

Vincent Stumpf 1 年之前
父节点
当前提交
8f15bc2117
共有 62 个文件被更改,包括 1852 次插入99 次删除
  1. 4 4
      conf/atcommands.yml
  2. 6 1
      conf/maps_athena.conf
  3. 二进制
      db/map_cache.dat
  4. 3 0
      db/map_index.txt
  5. 523 1
      db/re/item_combos.yml
  6. 609 1
      db/re/item_db_equip.yml
  7. 508 1
      db/re/item_db_etc.yml
  8. 35 0
      db/re/skill_db.yml
  9. 18 2
      doc/script_commands.txt
  10. 1 1
      npc/airports/airships.txt
  11. 1 1
      npc/battleground/bg_common.txt
  12. 4 4
      npc/battleground/flavius/flavius_enter.txt
  13. 1 1
      npc/battleground/kvm/kvm_item_pay.txt
  14. 4 4
      npc/battleground/tierra/tierra_enter.txt
  15. 1 1
      npc/cities/lutie.txt
  16. 1 1
      npc/custom/etc/quest_warper.txt
  17. 1 1
      npc/custom/events/holiday/uneasy_cemetery.txt
  18. 2 2
      npc/custom/events/holiday/valentinesdayexp.txt
  19. 1 1
      npc/custom/jobmaster.txt
  20. 6 6
      npc/events/gdevent_aru.txt
  21. 6 6
      npc/events/gdevent_sch.txt
  22. 1 1
      npc/events/valentinesday.txt
  23. 1 1
      npc/guild/agit_main.txt
  24. 1 1
      npc/jobs/2-1/assassin.txt
  25. 1 1
      npc/jobs/2-1/hunter.txt
  26. 1 1
      npc/jobs/2-2/monk.txt
  27. 4 4
      npc/other/poring_war.txt
  28. 1 1
      npc/pre-re/guides/guides_ayothaya.txt
  29. 1 1
      npc/pre-re/warps/fields/morroc_fild.txt
  30. 1 1
      npc/quests/counteragent_mixture.txt
  31. 1 1
      npc/quests/first_class/tu_acolyte.txt
  32. 1 1
      npc/quests/newgears/2004_headgears.txt
  33. 4 4
      npc/quests/quests_13_1.txt
  34. 3 3
      npc/quests/quests_alberta.txt
  35. 1 1
      npc/quests/quests_gonryun.txt
  36. 1 1
      npc/quests/quests_lighthalzen.txt
  37. 1 1
      npc/quests/quests_moscovia.txt
  38. 2 2
      npc/quests/quests_yuno.txt
  39. 1 1
      npc/quests/the_sign_quest.txt
  40. 1 1
      npc/re/custom/lasagna/lasagna_npcs.txt
  41. 1 1
      npc/re/guild3/agit_main_te.txt
  42. 1 1
      npc/re/instances/NightmarishJitterbug.txt
  43. 1 1
      npc/re/jobs/3-1/archbishop.txt
  44. 1 1
      npc/re/jobs/3-2/minstrel.txt
  45. 1 1
      npc/re/jobs/3-2/wanderer.txt
  46. 3 3
      npc/re/jobs/novice/academy.txt
  47. 2 2
      npc/re/merchants/eden_market.txt
  48. 1 1
      npc/re/quests/eden/eden_common.txt
  49. 1 1
      npc/re/quests/eden/eden_quests.txt
  50. 3 3
      npc/re/quests/eden/eden_tutorial.txt
  51. 1 1
      npc/re/quests/quests_16_1.txt
  52. 1 1
      npc/re/quests/quests_16_2.txt
  53. 2 2
      npc/re/quests/quests_17_1.txt
  54. 1 1
      npc/re/quests/quests_17_2.txt
  55. 1 1
      npc/re/warps/fields/morroc_fild.txt
  56. 15 8
      src/map/battle.cpp
  57. 2 1
      src/map/clif.hpp
  58. 2 0
      src/map/mob.cpp
  59. 5 0
      src/map/pc.cpp
  60. 36 0
      src/map/script.cpp
  61. 3 0
      src/map/skill.cpp
  62. 5 2
      src/map/status.cpp

+ 4 - 4
conf/atcommands.yml

@@ -685,20 +685,20 @@ Body:
       Gives you the desired item.
   - Command: pvpon
     Help: |
-      Turns pvp on on the current map
+      Enables PvP on the current map
   - Command: pvpoff
     Help: |
-      Turns pvp off on the current map
+      Disables PvP on the current map
   - Command: gvgon
     Aliases:
       - gpvpon
     Help: |
-      Turns gvg on on the current map
+      Enables GvG on the current map
   - Command: gvgoff
     Aliases:
       - gpvpoff
     Help: |
-      Turns gvg off on the current map
+      Disables GvG on the current map
   - Command: agitstart
     Help: |
       Starts War of Emperium

+ 6 - 1
conf/maps_athena.conf

@@ -1592,7 +1592,7 @@ map: jor_sanct
 map: jor_twice
 map: jor_twig
 
-// Biosphere 1st floor
+// Depth biosphere 1st floor
 map: bl_depth1
 
 // Garden of Time
@@ -1602,5 +1602,10 @@ map: for_dun01
 map: for_dun02
 map: t_garden
 
+// Fantasy Series - Rainbow Lake
+map: 1@vrpop
+map: 2@vrpop
+map: 3@vrpop
+
 //------------------------- Clone Maps ---------------------------
 //------------------------- Extra Maps ---------------------------

二进制
db/map_cache.dat


+ 3 - 0
db/map_index.txt

@@ -1236,6 +1236,9 @@ bl_depth1
 for_dun01
 for_dun02
 t_garden
+1@vrpop
+2@vrpop
+3@vrpop
 
 //======================================================================================
 // - Other/Extra maps -

+ 523 - 1
db/re/item_combos.yml

@@ -44727,7 +44727,7 @@ Body:
          skill "RK_IGNITIONBREAK",5;
          bonus2 bSkillAtk,"RK_IGNITIONBREAK",7*(getequiprefinerycnt(EQI_HAND_R)/2);
       }
-    - Combos:
+  - Combos:
       - Combo:
           - Remorse_Crown    # 400474
           - Poenitentia_Clava    # 590016
@@ -46133,3 +46133,525 @@ Body:
       .@r = getequiprefinerycnt(EQI_HEAD_TOP);
       bonus2 bMagicAddRace,RC_All,3*(.@r/3);
       bonus2 bSkillAtk,"SO_PSYCHIC_WAVE",10*(.@r/3);
+  - Combos:
+      - Combo:
+          - S_Full_Power_Armor   # 24872
+          - S_P_Power_Weapon   # 24751
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON);
+      bonus bAtkRate,3;
+      if (.@sum>=18) {
+         bonus bPAtk,3;
+         bonus bPow,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Full_Power_Armor   # 24872
+          - S_Full_Power_Shoes   # 24873
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=18) {
+         bonus2 bAddSize,Size_All,10;
+         bonus bLongAtkRate,5;
+         bonus bShortAtkRate,5;
+      }
+  - Combos:
+      - Combo:
+          - S_Full_Power_Shoes   # 24873
+          - S_P_Power_Shield   # 24752
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_SHIELD);
+      bonus bAtkRate,3;
+      if (.@sum>=18) {
+         bonus bPAtk,3;
+         bonus bPow,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Full_Rate_Armor   # 24874
+          - S_Creative_Weapon   # 24761
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON);
+      bonus bAtkRate,3;
+      if (.@sum>=18) {
+         bonus bCRate,3;
+         bonus bCrt,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Full_Rate_Armor   # 24874
+          - S_Full_Rate_Shoes   # 24875
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bCRate,2;
+      bonus bAtkRate,2;
+      if (.@sum>=18) {
+         bonus2 bAddSize,Size_All,10;
+         bonus bCritAtkRate,5;
+      }
+  - Combos:
+      - Combo:
+          - S_Full_Rate_Shoes   # 24875
+          - S_Creative_Shield   # 24762
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_SHIELD);
+      bonus bAtkRate,3;
+      if (.@sum>=18) {
+         bonus bCRate,3;
+         bonus bCrt,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Focusing_Pendant   # 24876
+          - S_Concentration_Weapon   # 24755
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_WEAPON);
+      bonus bAtkRate,3;
+      if (.@sum>=18) {
+         bonus bPAtk,3;
+         bonus bCon,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Focusing_Pendant   # 24876
+          - S_Focusing_Earring   # 24877
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R);
+      bonus bPAtk,2;
+      bonus bAtkRate,2;
+      if (.@sum>=18) {
+         bonus2 bAddEle,Ele_All,10;
+      }
+  - Combos:
+      - Combo:
+          - S_Focusing_Earring   # 24877
+          - S_Concentration_Shield   # 24756
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_SHIELD);
+      bonus bAtkRate,3;
+      if (.@sum>=18) {
+         bonus bPAtk,3;
+         bonus bCon,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Stout_Pendant   # 24878
+          - S_Stamina_Weapon   # 24759
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_WEAPON);
+      bonus bRes,15;
+      if (.@sum>=18) {
+         bonus bMaxHPrate,5;
+         bonus bSta,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Stout_Pendant   # 24878
+          - S_Stout_Earring   # 24879
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R);
+      bonus bDef,15;
+      bonus bRes,25;
+      if (.@sum>=18) {
+         bonus bMaxHPrate,7;
+      }
+  - Combos:
+      - Combo:
+          - S_Stout_Earring   # 24879
+          - S_Stamina_Shield   # 24760
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_SHIELD);
+      bonus bRes,15;
+      if (.@sum>=18) {
+         bonus bMaxHPrate,5;
+         bonus bSta,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Full_Spell_Armor   # 24883
+          - S_M_Spell_Weapon   # 24753
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_WEAPON);
+      bonus bMatkRate,3;
+      if (.@sum>=18) {
+         bonus bSMatk,3;
+         bonus bSpl,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Full_Spell_Armor   # 24883
+          - S_Full_Spell_Shoes   # 24884
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ARMOR)+getequiprefinerycnt(EQI_SHADOW_SHOES);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=18) {
+         bonus2 bMagicAtkEle,Ele_All,5;
+         bonus2 bMagicAddSize,Size_All,10;
+      }
+  - Combos:
+      - Combo:
+          - S_Full_Spell_Shoes   # 24884
+          - S_M_Spell_Shield   # 24754
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_SHOES)+getequiprefinerycnt(EQI_SHADOW_SHIELD);
+      bonus bMatkRate,3;
+      if (.@sum>=18) {
+         bonus bSMatk,3;
+         bonus bSpl,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Centering_Pendant   # 24885
+          - S_Concentration_Weapon   # 24755
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_WEAPON);
+      bonus bMatkRate,3;
+      if (.@sum>=18) {
+         bonus bSMatk,3;
+         bonus bCon,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Centering_Pendant   # 24885
+          - S_Centering_Earring   # 24886
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R);
+      bonus bSMatk,2;
+      bonus bMatkRate,2;
+      if (.@sum>=18) {
+         bonus2 bMagicAddEle,Ele_All,10;
+      }
+  - Combos:
+      - Combo:
+          - S_Centering_Earring   # 24886
+          - S_Concentration_Shield   # 24756
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_SHIELD);
+      bonus bMatkRate,3;
+      if (.@sum>=18) {
+         bonus bSMatk,3;
+         bonus bCon,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Witty_Pendant   # 24887
+          - S_Wisdom_Weapon   # 24757
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_WEAPON);
+      bonus bMRes,15;
+      if (.@sum>=18) {
+         bonus bMaxSPrate,5;
+         bonus bWis,3;
+      }
+  - Combos:
+      - Combo:
+          - S_Witty_Pendant   # 24887
+          - S_Witty_Earring   # 24888
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_L)+getequiprefinerycnt(EQI_SHADOW_ACC_R);
+      bonus bMdef,15;
+      bonus bMRes,25;
+      if (.@sum>=18) {
+         bonus bMaxSPrate,7;
+      }
+  - Combos:
+      - Combo:
+          - S_Witty_Earring   # 24888
+          - S_Wisdom_Shield   # 24758
+    Script: |
+      .@sum = getequiprefinerycnt(EQI_SHADOW_ACC_R)+getequiprefinerycnt(EQI_SHADOW_SHIELD);
+      bonus bMRes,15;
+      if (.@sum>=18) {
+         bonus bMaxSPrate,5;
+         bonus bWis,3;
+      }
+  - Combos:
+      - Combo:
+          - aegis_300487   # 300487
+          - aegis_300489   # 300489
+    Script: |
+      bonus2 bAddRace,RC_Formless,15;
+      bonus2 bAddRace,RC_DemiHuman,15;
+      bonus2 bAddRace,RC_Player_Human,15;
+      bonus2 bAddSize,Size_Small,15;
+      bonus2 bAddSize,Size_Large,15;
+  - Combos:
+      - Combo:
+          - aegis_300491   # 300491
+          - aegis_300493   # 300493
+    Script: |
+      bonus2 bAddRace,RC_Formless,15;
+      bonus2 bAddRace,RC_DemiHuman,15;
+      bonus2 bAddRace,RC_Player_Human,15;
+      bonus2 bAddSize,Size_Small,15;
+      bonus2 bAddSize,Size_Large,15;
+  - Combos:
+      - Combo:
+          - aegis_300495   # 300495
+          - aegis_300497   # 300497
+    Script: |
+      bonus2 bMagicAddSize,Size_Small,15;
+      bonus2 bMagicAddSize,Size_Large,15;
+      bonus2 bMagicAddRace,RC_DemiHuman,15;
+      bonus2 bMagicAddRace,RC_Player_Human,15;
+      bonus2 bMagicAddRace,RC_Formless,15;
+  - Combos:
+      - Combo:
+          - Justice_Vigor_ABC   # 312685
+          - Justice_Power   # 312014
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bAspdRate,5;
+      bonus2 bSkillAtk,"ABC_DEFT_STAB",40;
+      bonus2 bSkillAtk,"ABC_ABYSS_DAGGER",20;
+  - Combos:
+      - Combo:
+          - Injustice_Vigor_ABC   # 312686
+          - Injustice_Power   # 312021
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bCritical,5;
+      bonus2 bSkillAtk,"ABC_FRENZY_SHOT",40;
+      bonus2 bSkillAtk,"ABC_CHAIN_REACTION_SHOT_ATK",20;
+  - Combos:
+      - Combo:
+          - Justice_Vigor_TR   # 312687
+          - Justice_Power   # 312014
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bAspdRate,5;
+      bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",40;
+      bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",20;
+  - Combos:
+      - Combo:
+          - Injustice_Vigor_TR   # 312688
+          - Injustice_Power   # 312021
+    Script: |
+      bonus2 bMagicAddEle,Ele_All,20;
+      bonus bVariableCastrate,-5;
+      bonus2 bSkillAtk,"TR_SOUNDBLEND",40;
+      bonus2 bSkillAtk,"TR_METALIC_FURY",20;
+  - Combos:
+      - Combo:
+          - Justice_Vigor_HN   # 312689
+          - Justice_Power   # 312014
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bAspdRate,5;
+      bonus2 bSkillAtk,"HN_SPIRAL_PIERCE_MAX",40;
+      bonus2 bSkillAtk,"HN_SHIELD_CHAIN_RUSH",20;
+  - Combos:
+      - Combo:
+          - Injustice_Vigor_HN   # 312690
+          - Injustice_Power   # 312021
+    Script: |
+      bonus2 bMagicAddEle,Ele_All,20;
+      bonus bVariableCastrate,-5;
+      bonus2 bSkillAtk,"HN_GROUND_GRAVITATION",40;
+      bonus2 bSkillAtk,"HN_NAPALM_VULCAN_STRIKE",20;
+  - Combos:
+      - Combo:
+          - aegis_312692   # 312692
+          - Shadowchaser_Top3   # 311362
+    Script: |
+      bonus2 bAddSize,Size_All,3*(getskilllv("ABC_DAGGER_AND_BOW_M")/2);
+  - Combos:
+      - Combo:
+          - aegis_312692   # 312692
+          - Shadowchaser_Middle3   # 311363
+    Script: |
+      bonus bCritical,10;
+      bonus2 bSkillAtk,"ABC_FRENZY_SHOT",10;
+  - Combos:
+      - Combo:
+          - aegis_312692   # 312692
+          - Shadowchaser_Bottom3   # 311364
+    Script: |
+      bonus2 bSkillAtk,"ABC_CHAIN_REACTION_SHOT",15;
+      bonus2 bSkillAtk,"ABC_CHAIN_REACTION_SHOT_ATK",15;
+  - Combos:
+      - Combo:
+          - aegis_312693   # 312693
+          - WanderMins_Top3   # 311005
+    Script: |
+      bonus2 bAddEle,Ele_All,3*getskilllv("TR_STAGE_MANNER");
+  - Combos:
+      - Combo:
+          - aegis_312693   # 312693
+          - WanderMins_Middle3   # 311006
+    Script: |
+      bonus2 bSkillAtk,"TR_ROSEBLOSSOM",10;
+      bonus2 bSkillAtk,"TR_ROSEBLOSSOM_ATK",10;
+  - Combos:
+      - Combo:
+          - aegis_312693   # 312693
+          - WanderMins_Bottom3   # 311007
+    Script: |
+      bonus bPAtk,3;
+      bonus2 bSkillAtk,"TR_RHYTHMSHOOTING",15;
+  - Combos:
+      - Combo:
+          - aegis_312694   # 312694
+          - aegis_312403   # 312403
+    Script: |
+      bonus2 bMagicAddEle,Ele_All,3*(getskilllv("HN_JACK_FROST_NOVA")/2);
+  - Combos:
+      - Combo:
+          - aegis_312694   # 312694
+          - aegis_312404   # 312404
+    Script: |
+      bonus bSMatk,5;
+      bonus2 bSkillAtk,"HN_JUPITEL_THUNDER_STORM",10;
+  - Combos:
+      - Combo:
+          - aegis_312694   # 312694
+          - aegis_312405   # 312405
+    Script: |
+      bonus2 bSkillAtk,"HN_JACK_FROST_NOVA",10;
+  - Combos:
+      - Combo:
+          - Justice_Vigor_IG   # 312801
+          - Justice_Power   # 312014
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bShortAtkRate,20;
+      bonus bAspdRate,5;
+      bonus2 bSkillAtk,"IG_OVERSLASH",30;
+  - Combos:
+      - Combo:
+          - Injustice_Vigor_IG   # 312802
+          - Injustice_Power   # 312021
+    Script: |
+      bonus2 bMagicAddEle,Ele_All,20;
+      bonus2 bMagicAtkEle,Ele_Holy,20;
+      bonus bVariableCastrate,-5;
+      bonus2 bSkillAtk,"IG_CROSS_RAIN",30;
+  - Combos:
+      - Combo:
+          - Justice_Vigor_AG   # 312803
+          - Justice_Power   # 312014
+    Script: |
+      bonus2 bMagicAddEle,Ele_All,20;
+      bonus bDelayrate,-5;
+      bonus2 bSkillAtk,"AG_RAIN_OF_CRYSTAL",40;
+      bonus2 bSkillAtk,"AG_FROZEN_SLASH",20;
+  - Combos:
+      - Combo:
+          - Injustice_Vigor_AG   # 312804
+          - Injustice_Power   # 312021
+    Script: |
+      bonus2 bMagicAddEle,Ele_All,20;
+      bonus bVariableCastrate,-5;
+      bonus2 bSkillAtk,"AG_MYSTERY_ILLUSION",40;
+      bonus2 bSkillAtk,"AG_SOUL_VC_STRIKE",20;
+  - Combos:
+      - Combo:
+          - Justice_Vigor_NW   # 312805
+          - Justice_Power   # 312014
+          - GoodnEvil_Circlet_NW   # 400391
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bLongAtkRate,20;
+      bonus bAspdRate,5;
+      bonus2 bSkillAtk,"NW_WILD_FIRE",30;
+  - Combos:
+      - Combo:
+          - Justice_Vigor_NW   # 312805
+          - Justice_Power   # 312014
+          - GoodnEvil_Circlet_NW2   # 400392
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bLongAtkRate,20;
+      bonus bCritical,5;
+      bonus2 bSkillAtk,"NW_MAGAZINE_FOR_ONE",30;
+  - Combos:
+      - Combo:
+          - Justice_Vigor_NW   # 312805
+          - Justice_Power   # 312014
+          - GoodnEvil_Circlet_NW3   # 400393
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bLongAtkRate,20;
+      bonus bDelayrate,-5;
+      bonus2 bSkillAtk,"NW_MAGAZINE_FOR_ONE",30;
+  - Combos:
+      - Combo:
+          - Justice_Vigor_NW   # 312805
+          - Justice_Power   # 312014
+          - GoodnEvil_Circlet_NW4   # 400394
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bLongAtkRate,20;
+      bonus bDelayrate,-5;
+      bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT",30;
+  - Combos:
+      - Combo:
+          - Justice_Vigor_NW   # 312805
+          - Justice_Power   # 312014
+          - GoodnEvil_Circlet_NW5   # 400395
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bAspdRate,5;
+      bonus2 bSkillAtk,"NW_ONLY_ONE_BULLET",40;
+      bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",20;
+  - Combos:
+      - Combo:
+          - Injustice_Vigor_NW   # 312806
+          - Injustice_Power   # 312021
+          - GoodnEvil_Circlet_NW   # 400391
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bLongAtkRate,20;
+      bonus bDelayrate,-5;
+      bonus2 bSkillAtk,"NW_SPIRAL_SHOOTING",30;
+  - Combos:
+      - Combo:
+          - Injustice_Vigor_NW   # 312806
+          - Injustice_Power   # 312021
+          - GoodnEvil_Circlet_NW2   # 400392
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bLongAtkRate,20;
+      bonus bAspdRate,5;
+      bonus2 bSkillAtk,"NW_ONLY_ONE_BULLET",30;
+  - Combos:
+      - Combo:
+          - Injustice_Vigor_NW   # 312806
+          - Injustice_Power   # 312021
+          - GoodnEvil_Circlet_NW3   # 400393
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bLongAtkRate,20;
+      bonus bDelayrate,-5;
+      bonus2 bSkillAtk,"NW_THE_VIGILANTE_AT_NIGHT",30;
+  - Combos:
+      - Combo:
+          - Injustice_Vigor_NW   # 312806
+          - Injustice_Power   # 312021
+          - GoodnEvil_Circlet_NW4   # 400394
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bLongAtkRate,20;
+      bonus bAspdRate,5;
+      bonus2 bSkillAtk,"NW_WILD_FIRE",30;
+  - Combos:
+      - Combo:
+          - Injustice_Vigor_NW   # 312806
+          - Injustice_Power   # 312021
+          - GoodnEvil_Circlet_NW5   # 400395
+    Script: |
+      bonus2 bAddEle,Ele_All,20;
+      bonus bAspdRate,5;
+      bonus2 bSkillAtk,"NW_GRENADES_DROPPING",40;
+      bonus2 bSkillAtk,"NW_HASTY_FIRE_IN_THE_HOLE",20;
+  - Combos:
+      - Combo:
+          - Clover_Ace_Defense   # 420269
+          - Gambler_Seal_KR_   # 410233
+    Script: |
+      bonus bMaxHPrate,5;
+      bonus bMdef,30;
+      bonus bDef,200;

+ 609 - 1
db/re/item_db_equip.yml

@@ -106141,6 +106141,22 @@ Body:
       NoAuction: true
     ArmorLevel: 1
     View: 183
+  - Id: 20626
+    AegisName: C_ROS2023_Cape_2
+    Name: 2023 ROS Figurine Cloak    # !todo check english name
+    Type: Armor
+    Locations:
+      Costume_Garment: true
+    ArmorLevel: 1
+    View: 198
+    Trade:
+      NoDrop: true
+      NoTrade: true
+      NoSell: true
+      NoCart: true
+      NoGuildStorage: true
+      NoMail: true
+      NoAuction: true
   - Id: 20700
     AegisName: Egir_Manteau
     Name: Egir Manteau
@@ -130552,6 +130568,224 @@ Body:
     Refineable: true
     Script: |
       bonus bMaxHP,getrefine()*10;
+  - Id: 24872
+    AegisName: S_Full_Power_Armor
+    Name: Full Power Shadow Armor
+    Type: ShadowGear
+    Locations:
+      Shadow_Armor: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bAtkRate,3;
+      bonus bLongAtkRate,(.@r/2);
+      bonus bShortAtkRate,(.@r/2);
+      if (.@r>=10) {
+         bonus bPAtk,2;
+      }
+  - Id: 24873
+    AegisName: S_Full_Power_Shoes
+    Name: Full Power Shadow Shoes
+    Type: ShadowGear
+    Locations:
+      Shadow_Shoes: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bAtkRate,3;
+      bonus bLongAtkRate,(.@r/2);
+      bonus bShortAtkRate,(.@r/2);
+      if (.@r>=10) {
+         bonus bPAtk,2;
+      }
+  - Id: 24874
+    AegisName: S_Full_Rate_Armor
+    Name: Full Rate Shadow Armor
+    Type: ShadowGear
+    Locations:
+      Shadow_Armor: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bCritical,3;
+      bonus bCritAtkRate,(.@r/2);
+      if (.@r>=10) {
+         bonus bCRate,2;
+      }
+  - Id: 24875
+    AegisName: S_Full_Rate_Shoes
+    Name: Full Rate Shadow Shoes
+    Type: ShadowGear
+    Locations:
+      Shadow_Shoes: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bCritical,3;
+      bonus bCritAtkRate,(.@r/2);
+      if (.@r>=10) {
+         bonus bCRate,2;
+      }
+  - Id: 24876
+    AegisName: S_Focusing_Pendant
+    Name: Focusing Shadow Pendant
+    Type: ShadowGear
+    Locations:
+      Shadow_Left_Accessory: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bAtkRate,3;
+      bonus bVariableCastrate,-(.@r/2);
+      if (.@r>=10) {
+         bonus bPAtk,2;
+      }
+  - Id: 24877
+    AegisName: S_Focusing_Earring
+    Name: Focusing Shadow Earring
+    Type: ShadowGear
+    Locations:
+      Shadow_Right_Accessory: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bAtkRate,3;
+      bonus bVariableCastrate,-(.@r/2);
+      if (.@r>=10) {
+         bonus bPAtk,2;
+      }
+  - Id: 24878
+    AegisName: S_Stout_Pendant
+    Name: Stout Shadow Pendant
+    Type: ShadowGear
+    Locations:
+      Shadow_Left_Accessory: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bDef,30;
+      bonus bRes,3*(.@r/2);
+      if (.@r>=10) {
+         bonus bRes,15;
+      }
+  - Id: 24879
+    AegisName: S_Stout_Earring
+    Name: Stout Shadow Earring
+    Type: ShadowGear
+    Locations:
+      Shadow_Right_Accessory: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bDef,30;
+      bonus bRes,3*(.@r/2);
+      if (.@r>=10) {
+         bonus bRes,15;
+      }
+  - Id: 24883
+    AegisName: S_Full_Spell_Armor
+    Name: Full Spell Shadow Armor
+    Type: ShadowGear
+    Locations:
+      Shadow_Armor: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bMaxHP,.@r*10;
+      bonus bMatkRate,3;
+      bonus2 bMagicAtkEle,Ele_All,(.@r/2);
+      if (.@r>=10) {
+         bonus bSMatk,2;
+      }
+  - Id: 24884
+    AegisName: S_Full_Spell_Shoes
+    Name: Full Spell Shadow Shoes
+    Type: ShadowGear
+    Locations:
+      Shadow_Shoes: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bMaxHP,.@r*10;
+      bonus bMatkRate,3;
+      bonus2 bMagicAtkEle,Ele_All,(.@r/2);
+      if (.@r>=10) {
+         bonus bSMatk,2;
+      }
+  - Id: 24885
+    AegisName: S_Centering_Pendant
+    Name: Centering Shadow Pendant
+    Type: ShadowGear
+    Locations:
+      Shadow_Left_Accessory: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bMaxHP,.@r*10;
+      bonus bMatkRate,3;
+      bonus bVariableCastrate,-(.@r/2);
+      if (.@r>=10) {
+         bonus bSMatk,2;
+      }
+  - Id: 24886
+    AegisName: S_Centering_Earring
+    Name: Centering Shadow Earring
+    Type: ShadowGear
+    Locations:
+      Shadow_Right_Accessory: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bMaxHP,.@r*10;
+      bonus bMatkRate,3;
+      bonus bVariableCastrate,-(.@r/2);
+      if (.@r>=10) {
+         bonus bSMatk,2;
+      }
+  - Id: 24887
+    AegisName: S_Witty_Pendant
+    Name: Witty Shadow Pendant
+    Type: ShadowGear
+    Locations:
+      Shadow_Left_Accessory: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bMaxHP,.@r*10;
+      bonus bMdef,10;
+      bonus bMRes,3*(.@r/2);
+      if (.@r>=10) {
+         bonus bMRes,15;
+      }
+  - Id: 24888
+    AegisName: S_Witty_Earring
+    Name: Witty Shadow Earring
+    Type: ShadowGear
+    Locations:
+      Shadow_Right_Accessory: true
+    EquipLevelMin: 200
+    Refineable: true
+    Script: |
+      .@r = getrefine();
+      bonus bMaxHP,.@r*10;
+      bonus bMdef,10;
+      bonus bMRes,3*(.@r/2);
+      if (.@r>=10) {
+         bonus bMRes,15;
+      }
   - Id: 26001
     AegisName: Toughen_Metal_Lance
     Name: Enhanced Metal Lance
@@ -162390,7 +162624,7 @@ Body:
       bonus bHit,30;
       bonus2 bAddRace,RC_DemiHuman,5;
       if (eaclass()&EAJL_THIRD && BaseJob == Job_Rogue)
-         bonus2 bSkillAtk,"RG_BACKSTAP",5*getrefine();         
+         bonus2 bSkillAtk,"RG_BACKSTAP",5*getrefine();
   - Id: 400480
     AegisName: aegis_400480
     Name: Costume Cat Straw Hat
@@ -162878,6 +163112,14 @@ Body:
       }
       /*Todo : After Using Transformation Scroll (Horn Scaraba) (22750)*/
       /*Physical and Magical Damage to All Race 5% for 5 Minute*/
+  - Id: 400557
+    AegisName: aegis_400557
+    Name: Costume Al Picky Doll    # !todo check english name
+    Type: Armor
+    Locations:
+      Costume_Head_Top: true
+    ArmorLevel: 1
+    View: 1001
   - Id: 410000
     AegisName: Resonate_Taego_J
     Name: Ancient Resonance
@@ -165378,6 +165620,22 @@ Body:
       Costume_Head_Mid: true
     ArmorLevel: 1
     View: 2378
+  - Id: 410238
+    AegisName: aegis_410238
+    Name: "Costume: Adventurer Pope Mini-Me"
+    Type: Armor
+    Locations:
+      Costume_Head_Mid: true
+    ArmorLevel: 1
+    View: 2384
+  - Id: 410239
+    AegisName: aegis_410239
+    Name: Costume Flying Tilby
+    Type: Armor
+    Locations:
+      Costume_Head_Mid: true
+    ArmorLevel: 1
+    View: 2386
   - Id: 410240
     AegisName: aegis_410240
     Name: Costume White Rabbit
@@ -165528,6 +165786,38 @@ Body:
       Costume_Head_Mid: true
     ArmorLevel: 1
     View: 2423
+  - Id: 410267
+    AegisName: C_Cinnamon
+    Name: Costume Cinnamoroll
+    Type: Armor
+    Locations:
+      Costume_Head_Mid: true
+    ArmorLevel: 1
+    View: 2427
+    Trade:
+      NoDrop: true
+      NoTrade: true
+      NoSell: true
+      NoCart: true
+      NoGuildStorage: true
+      NoMail: true
+      NoAuction: true
+  - Id: 410268
+    AegisName: C_Cinnamon2
+    Name: Costume Cinnamoroll in the Sky
+    Type: Armor
+    Locations:
+      Costume_Head_Mid: true
+    ArmorLevel: 1
+    View: 2427
+    Trade:
+      NoDrop: true
+      NoTrade: true
+      NoSell: true
+      NoCart: true
+      NoGuildStorage: true
+      NoMail: true
+      NoAuction: true
   - Id: 420000
     AegisName: Isabella_Carrot
     Name: Isabella Carrot
@@ -167536,6 +167826,23 @@ Body:
     View: 571
     Script: |
       bonus2 bExpAddRace,RC_All,8;
+  - Id: 420242
+    AegisName: C_Fluttering_Haze
+    Name: Costume Long Stretching Fog    # !todo check english name
+    Type: Armor
+    Locations:
+      Costume_Head_Mid: true
+    ArmorLevel: 1
+  - Id: 420269
+    AegisName: Clover_Ace_Defense
+    Name: Ace of Clovers in Mouth (Defense)
+    Type: Armor
+    Weight: 100
+    Locations:
+      Head_Low: true
+    ArmorLevel: 1
+    EquipLevelMin: 150
+    View: 2448
   - Id: 430002
     AegisName: Rachel_Helmet
     Name: Awakened Glacier Helm
@@ -181310,6 +181617,299 @@ Body:
             }
          }
       }
+  - Id: 470224
+    AegisName: FateSin_Boots_ABC
+    Name: Boots of Good and Evil (Abyss Chaser)
+    Type: Armor
+    Weight: 600
+    Defense: 20
+    Slots: 1
+    Jobs:
+      Rogue: true
+    Classes:
+      Fourth: true
+    Locations:
+      Shoes: true
+    ArmorLevel: 2
+    EquipLevelMin: 210
+    Refineable: true
+    Gradable: true
+    Script: |
+      .@g = getenchantgrade();
+      .@r = getrefine();
+      bonus bMaxHP,500;
+      bonus bMaxSP,100;
+      bonus bMaxHPrate,(.@r/2);
+      bonus bMaxSPrate,(.@r/2);
+      if (.@r>=7) {
+         bonus bAtkRate,7;
+         if (.@r>=9) {
+            bonus bLongAtkRate,10;
+            bonus bShortAtkRate,10;
+            if (.@r>=11) {
+               bonus bFixedCast,-500;
+            }
+         }
+      }
+      if (.@g>=ENCHANTGRADE_D) {
+         bonus bMRes,50;
+         bonus bRes,50;
+         if (.@g>=ENCHANTGRADE_C) {
+            bonus2 bAddSize,Size_All,10;
+            if (.@g>=ENCHANTGRADE_B) {
+               bonus bPAtk,7;
+               bonus bSMatk,7;
+               if (.@g>=ENCHANTGRADE_A) {
+                  bonus bFixedCast,-500;
+               }
+            }
+         }
+      }
+  - Id: 470225
+    AegisName: FateSin_Boots_TR
+    Name: Boots of Good and Evil (Troubadour & Trouvere)
+    Type: Armor
+    Weight: 600
+    Defense: 20
+    Slots: 1
+    Jobs:
+      BardDancer: true
+    Classes:
+      Fourth: true
+    Locations:
+      Shoes: true
+    ArmorLevel: 2
+    EquipLevelMin: 210
+    Refineable: true
+    Gradable: true
+    Script: |
+      .@g = getenchantgrade();
+      .@r = getrefine();
+      bonus bMaxHP,500;
+      bonus bMaxSP,100;
+      bonus bMaxHPrate,(.@r/2);
+      bonus bMaxSPrate,(.@r/2);
+      if (.@r>=7) {
+         bonus bAtkRate,7;
+         bonus bMatkRate,7;
+         if (.@r>=9) {
+            bonus2 bMagicAtkEle,Ele_All,10;
+            bonus bLongAtkRate,10;
+            if (.@r>=11) {
+               bonus bFixedCast,-500;
+            }
+         }
+      }
+      if (.@g>=ENCHANTGRADE_D) {
+         bonus bMRes,50;
+         bonus bRes,50;
+         if (.@g>=ENCHANTGRADE_C) {
+            bonus2 bAddSize,Size_All,10;
+            bonus2 bMagicAddSize,Size_All,10;
+            if (.@g>=ENCHANTGRADE_B) {
+               bonus bPAtk,7;
+               bonus bSMatk,7;
+               if (.@g>=ENCHANTGRADE_A) {
+                  bonus bFixedCast,-500;
+               }
+            }
+         }
+      }
+  - Id: 470226
+    AegisName: FateSin_Boots_HN
+    Name: Boots of Good and Evil (Hyper Novice)
+    Type: Armor
+    Weight: 600
+    Defense: 20
+    Slots: 1
+    Jobs:
+      SuperNovice: true
+    Classes:
+      Fourth: true
+    Locations:
+      Shoes: true
+    ArmorLevel: 2
+    EquipLevelMin: 210
+    Refineable: true
+    Gradable: true
+    Script: |
+      .@g = getenchantgrade();
+      .@r = getrefine();
+      bonus bMaxHP,500;
+      bonus bMaxSP,100;
+      bonus bMaxHPrate,(.@r/2);
+      bonus bMaxSPrate,(.@r/2);
+      if (.@r>=7) {
+         bonus bAtkRate,7;
+         bonus bMatkRate,7;
+         if (.@r>=9) {
+            bonus2 bMagicAtkEle,Ele_All,10;
+            bonus bLongAtkRate,10;
+            if (.@r>=11) {
+               bonus bFixedCast,-500;
+            }
+         }
+      }
+      if (.@g>=ENCHANTGRADE_D) {
+         bonus bMRes,50;
+         bonus bRes,50;
+         if (.@g>=ENCHANTGRADE_C) {
+            bonus2 bAddSize,Size_All,10;
+            bonus2 bMagicAddSize,Size_All,10;
+            if (.@g>=ENCHANTGRADE_B) {
+               bonus bPAtk,7;
+               bonus bSMatk,7;
+               if (.@g>=ENCHANTGRADE_A) {
+                  bonus bFixedCast,-500;
+               }
+            }
+         }
+      }
+  - Id: 470236
+    AegisName: FateSin_Boots_IG
+    Name: Boots of Good and Evil (Imperial Guard)
+    Type: Armor
+    Weight: 600
+    Defense: 20
+    Slots: 1
+    Jobs:
+      Crusader: true
+    Classes:
+      Fourth: true
+    Locations:
+      Shoes: true
+    ArmorLevel: 2
+    EquipLevelMin: 210
+    Refineable: true
+    Gradable: true
+    Script: |
+      .@g = getenchantgrade();
+      .@r = getrefine();
+      bonus bMaxHP,500;
+      bonus bMaxSP,100;
+      bonus bMaxHPrate,(.@r/2);
+      bonus bMaxSPrate,(.@r/2);
+      if (.@r>=7) {
+         bonus bAtkRate,7;
+         bonus bMatkRate,7;
+         if (.@r>=9) {
+            bonus2 bMagicAtkEle,Ele_Holy,10;
+            if (.@r>=11) {
+               bonus bFixedCast,-500;
+            }
+         }
+      }
+      if (.@g>=ENCHANTGRADE_D) {
+         bonus bMRes,50;
+         bonus bRes,50;
+         if (.@g>=ENCHANTGRADE_C) {
+            bonus2 bAddSize,Size_All,10;
+            bonus2 bMagicAddSize,Size_All,10;
+            if (.@g>=ENCHANTGRADE_B) {
+               bonus bPAtk,7;
+               bonus bSMatk,7;
+               if (.@g>=ENCHANTGRADE_A) {
+                  bonus bFixedCast,-500;
+               }
+            }
+         }
+      }
+  - Id: 470237
+    AegisName: FateSin_Boots_AG
+    Name: Boots of Good and Evil (Arch Mage)
+    Type: Armor
+    Weight: 600
+    Defense: 20
+    Slots: 1
+    Jobs:
+      Wizard: true
+    Classes:
+      Fourth: true
+    Locations:
+      Shoes: true
+    ArmorLevel: 2
+    EquipLevelMin: 210
+    Refineable: true
+    Gradable: true
+    Script: |
+      .@g = getenchantgrade();
+      .@r = getrefine();
+      bonus bMaxHP,500;
+      bonus bMaxSP,100;
+      bonus bMaxHPrate,(.@r/2);
+      bonus bMaxSPrate,(.@r/2);
+      if (.@r>=7) {
+         bonus bMatkRate,7;
+         if (.@r>=9) {
+            bonus2 bMagicAtkEle,Ele_Water,10;
+            bonus2 bMagicAtkEle,Ele_Ghost,10;
+            bonus2 bMagicAtkEle,Ele_Dark,10;
+            if (.@r>=11) {
+               bonus bFixedCast,-500;
+            }
+         }
+      }
+      if (.@g>=ENCHANTGRADE_D) {
+         bonus bMRes,50;
+         bonus bRes,50;
+         if (.@g>=ENCHANTGRADE_C) {
+            bonus2 bMagicAddSize,Size_All,10;
+            if (.@g>=ENCHANTGRADE_B) {
+               bonus bPAtk,7;
+               bonus bSMatk,7;
+               if (.@g>=ENCHANTGRADE_A) {
+                  bonus bFixedCast,-500;
+               }
+            }
+         }
+      }
+  - Id: 470238
+    AegisName: FateSin_Boots_NW
+    Name: Boots of Good and Evil (Night Watch)
+    Type: Armor
+    Weight: 600
+    Defense: 20
+    Slots: 1
+    Jobs:
+      Rebellion: true
+    Classes:
+      Fourth: true
+    Locations:
+      Shoes: true
+    ArmorLevel: 2
+    EquipLevelMin: 210
+    Refineable: true
+    Gradable: true
+    Script: |
+      .@g = getenchantgrade();
+      .@r = getrefine();
+      bonus bMaxHP,500;
+      bonus bMaxSP,100;
+      bonus bMaxHPrate,(.@r/2);
+      bonus bMaxSPrate,(.@r/2);
+      if (.@r>=7) {
+         bonus bAtkRate,7;
+         if (.@r>=9) {
+            bonus bLongAtkRate,10;
+            if (.@r>=11) {
+               bonus bFixedCast,-500;
+            }
+         }
+      }
+      if (.@g>=ENCHANTGRADE_D) {
+         bonus bMRes,50;
+         bonus bRes,50;
+         if (.@g>=ENCHANTGRADE_C) {
+            bonus2 bAddSize,Size_All,10;
+            if (.@g>=ENCHANTGRADE_B) {
+               bonus bPAtk,7;
+               bonus bSMatk,7;
+               if (.@g>=ENCHANTGRADE_A) {
+                  bonus bFixedCast,-500;
+               }
+            }
+         }
+      }
   - Id: 480000
     AegisName: Atker_Manteau
     Name: Attacker Booster Manteau
@@ -186955,6 +187555,14 @@ Body:
          bonus bLongAtkRate,7;
       if (.@r>=11)
          bonus bDelayrate,-10;
+  - Id: 480362
+    AegisName: C_Ninetail_Tail_WH
+    Name: Costume White Nine-Tailed Fox's Tail    # !todo check english name
+    Type: Armor
+    Locations:
+      Costume_Garment: true
+    ArmorLevel: 1
+    View: 192
   - Id: 480363
     AegisName: aegis_480363
     Name: Costume Oversized Miss Rabbit

+ 508 - 1
db/re/item_db_etc.yml

@@ -46793,7 +46793,7 @@ Body:
       DropEffect: CLIENT
     Script: |
       bonus bMatkRate,10;
-      bonus5 bAutoSpell,"NPC_CRITICALWOUND",3,5+(10*(getrefine()/3)),BF_MAGIC,1;
+      bonus5 bAutoSpell,"NPC_WIDECRITICALWOUND",8,5+(10*(getrefine()/3)),BF_MAGIC,1;
   - Id: 31024
     AegisName: As_Bdy_Knight_Card
     Name: Immortal Cursed Knight Card
@@ -52450,6 +52450,184 @@ Body:
       DropEffect: CLIENT
     Script: |
       bonus bMaxSPrate,15;
+  - Id: 300486
+    AegisName: aegis_300486
+    Name: Elena Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+  - Id: 300487
+    AegisName: aegis_300487
+    Name: Rebellion Elena Volkova Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+    Script: |
+      bonus bShortAtkRate,10;
+      bonus2 bAddSize,Size_Small,15;
+      bonus2 bAddSize,Size_Large,15;
+      .@i = getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_VIEW);
+      if (.@i == W_2HSWORD || .@i == W_2HSPEAR || .@i == W_2HSTAFF || .@i == W_2HAXE || .@i == W_KATAR || .@i == W_BOW || .@i == W_HUUMA || .@i == W_REVOLVER || .@i == W_RIFLE || .@i == W_GATLING || .@i == W_SHOTGUN || .@i == W_GRENADE) {
+         bonus2 bSubSize,Size_Small,7;
+         bonus2 bSubSize,Size_Large,7;
+      }
+  - Id: 300488
+    AegisName: aegis_300488
+    Name: Lookie Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+  - Id: 300489
+    AegisName: aegis_300489
+    Name: Rebellion Lookie Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+    Script: |
+      bonus bShortAtkRate,10;
+      bonus2 bAddRace,RC_Formless,15;
+      bonus2 bAddRace,RC_DemiHuman,15;
+      bonus2 bAddRace,RC_Player_Human,15;
+      .@i = getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_VIEW);
+      if (.@i == W_2HSWORD || .@i == W_2HSPEAR || .@i == W_2HSTAFF || .@i == W_2HAXE || .@i == W_KATAR || .@i == W_BOW || .@i == W_HUUMA || .@i == W_REVOLVER || .@i == W_RIFLE || .@i == W_GATLING || .@i == W_SHOTGUN || .@i == W_GRENADE) {
+         bonus2 bSubRace,RC_Formless,7;
+         bonus2 bSubRace,RC_DemiHuman,7;
+         bonus2 bSubRace,RC_Player_Human,7;
+      }
+  - Id: 300490
+    AegisName: aegis_300490
+    Name: Est Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+  - Id: 300491
+    AegisName: aegis_300491
+    Name: Rebellion Est Loveroy Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+    Script: |
+      bonus bLongAtkRate,10;
+      bonus2 bAddSize,Size_Small,15;
+      bonus2 bAddSize,Size_Large,15;
+      .@i = getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_VIEW);
+      if (.@i == W_2HSWORD || .@i == W_2HSPEAR || .@i == W_2HSTAFF || .@i == W_2HAXE || .@i == W_KATAR || .@i == W_BOW || .@i == W_HUUMA || .@i == W_REVOLVER || .@i == W_RIFLE || .@i == W_GATLING || .@i == W_SHOTGUN || .@i == W_GRENADE) {
+         bonus2 bSubSize,Size_Small,7;
+         bonus2 bSubSize,Size_Large,7;
+      }
+  - Id: 300492
+    AegisName: aegis_300492
+    Name: Gony Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+  - Id: 300493
+    AegisName: aegis_300493
+    Name: Rebellion Gony Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+    Script: |
+      bonus bLongAtkRate,10;
+      bonus2 bAddRace,RC_Formless,15;
+      bonus2 bAddRace,RC_DemiHuman,15;
+      bonus2 bAddRace,RC_Player_Human,15;
+      .@i = getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_VIEW);
+      if (.@i == W_2HSWORD || .@i == W_2HSPEAR || .@i == W_2HSTAFF || .@i == W_2HAXE || .@i == W_KATAR || .@i == W_BOW || .@i == W_HUUMA || .@i == W_REVOLVER || .@i == W_RIFLE || .@i == W_GATLING || .@i == W_SHOTGUN || .@i == W_GRENADE) {
+         bonus2 bSubRace,RC_Formless,7;
+         bonus2 bSubRace,RC_DemiHuman,7;
+         bonus2 bSubRace,RC_Player_Human,7;
+      }
+  - Id: 300494
+    AegisName: aegis_300494
+    Name: Tes Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+  - Id: 300495
+    AegisName: aegis_300495
+    Name: Secret Wing Philopontes Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+    Script: |
+      bonus2 bMagicAtkEle,Ele_All,10;
+      bonus2 bMagicAddSize,Size_Small,15;
+      bonus2 bMagicAddSize,Size_Large,15;
+      .@i = getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_VIEW);
+      if (.@i == W_2HSWORD || .@i == W_2HSPEAR || .@i == W_2HSTAFF || .@i == W_2HAXE || .@i == W_KATAR || .@i == W_BOW || .@i == W_HUUMA || .@i == W_REVOLVER || .@i == W_RIFLE || .@i == W_GATLING || .@i == W_SHOTGUN || .@i == W_GRENADE) {
+         bonus2 bSubSize,Size_Small,7;
+         bonus2 bSubSize,Size_Large,7;
+      }
+  - Id: 300496
+    AegisName: aegis_300496
+    Name: Leizi Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+  - Id: 300497
+    AegisName: aegis_300497
+    Name: Secret Wing Leizi Card
+    Type: Card
+    Weight: 10
+    Locations:
+      Right_Hand: true
+    Flags:
+      BuyingStore: true
+      DropEffect: CLIENT
+    Script: |
+      bonus2 bMagicAtkEle,Ele_All,10;
+      bonus2 bMagicAtkEle,Ele_Neutral,15;
+      .@i = getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_VIEW);
+      if (.@i == W_2HSWORD || .@i == W_2HSPEAR || .@i == W_2HSTAFF || .@i == W_2HAXE || .@i == W_KATAR || .@i == W_BOW || .@i == W_HUUMA || .@i == W_REVOLVER || .@i == W_RIFLE || .@i == W_GATLING || .@i == W_SHOTGUN || .@i == W_GRENADE) {
+         bonus2 bSubRace,RC_Formless,7;
+         bonus2 bSubRace,RC_DemiHuman,7;
+         bonus2 bSubRace,RC_Player_Human,7;
+      }
   - Id: 310000
     AegisName: Ranger_Top2
     Name: Sniper Stone II (Top)
@@ -75199,6 +75377,302 @@ Body:
     Name: Evil Energy (Shinkiro & Shiranui)    # !todo check english name
     Type: Card
     SubType: Enchant
+  - Id: 312655
+    AegisName: Shadow_ATK_1
+    Name: S. Attack Power 1Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bAtkRate,1;
+  - Id: 312656
+    AegisName: Shadow_ATK_2
+    Name: S. Attack Power 2Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bAtkRate,2;
+  - Id: 312657
+    AegisName: Shadow_ATK_3
+    Name: S. Attack Power 3Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bAtkRate,3;
+  - Id: 312658
+    AegisName: Shadow_ATK_4
+    Name: S. Attack Power 4Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bAtkRate,4;
+  - Id: 312659
+    AegisName: Shadow_ATK_5
+    Name: S. Attack Power 5Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bAtkRate,5;
+  - Id: 312660
+    AegisName: Shadow_MATK_1
+    Name: S. Magic Power 1Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMatkRate,1;
+  - Id: 312661
+    AegisName: Shadow_MATK_2
+    Name: S. Magic Power 2Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMatkRate,2;
+  - Id: 312662
+    AegisName: Shadow_MATK_3
+    Name: S. Magic Power 3Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMatkRate,3;
+  - Id: 312663
+    AegisName: Shadow_MATK_4
+    Name: S. Magic Power 4Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMatkRate,4;
+  - Id: 312664
+    AegisName: Shadow_MATK_5
+    Name: S. Magic Power 5Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMatkRate,5;
+  - Id: 312665
+    AegisName: Shadow_CRI_1
+    Name: S. Critical 1Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bCritical,1;
+  - Id: 312666
+    AegisName: Shadow_CRI_2
+    Name: S. Critical 2Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bCritical,2;
+  - Id: 312667
+    AegisName: Shadow_CRI_3
+    Name: S. Critical 3Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bCritical,3;
+  - Id: 312668
+    AegisName: Shadow_CRI_4
+    Name: S. Critical 4Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bCritical,4;
+  - Id: 312669
+    AegisName: Shadow_CRI_5
+    Name: S. Critical 5Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bCritical,5;
+  - Id: 312670
+    AegisName: Shadow_CAST_1
+    Name: S. Casting 1Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bVariableCastrate,-1;
+  - Id: 312671
+    AegisName: Shadow_CAST_2
+    Name: S. Casting 2Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bVariableCastrate,-2;
+  - Id: 312672
+    AegisName: Shadow_CAST_3
+    Name: S. Casting 3Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bVariableCastrate,-3;
+  - Id: 312673
+    AegisName: Shadow_CAST_4
+    Name: S. Casting 4Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bVariableCastrate,-4;
+  - Id: 312674
+    AegisName: Shadow_CAST_5
+    Name: S. Casting 5Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bVariableCastrate,-5;
+  - Id: 312675
+    AegisName: Shadow_HP_1
+    Name: S. Vitality 1Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMaxHPrate,1;
+  - Id: 312676
+    AegisName: Shadow_HP_2
+    Name: S. Vitality 2Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMaxHPrate,2;
+  - Id: 312677
+    AegisName: Shadow_HP_3
+    Name: S. Vitality 3Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMaxHPrate,3;
+  - Id: 312678
+    AegisName: Shadow_HP_4
+    Name: S. Vitality 4Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMaxHPrate,4;
+  - Id: 312679
+    AegisName: Shadow_HP_5
+    Name: S. Vitality 5Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMaxHPrate,5;
+  - Id: 312680
+    AegisName: Shadow_SP_1
+    Name: S. Mentality 1Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMaxSPrate,1;
+  - Id: 312681
+    AegisName: Shadow_SP_2
+    Name: S. Mentality 2Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMaxSPrate,2;
+  - Id: 312682
+    AegisName: Shadow_SP_3
+    Name: S. Mentality 3Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMaxSPrate,3;
+  - Id: 312683
+    AegisName: Shadow_SP_4
+    Name: S. Mentality 4Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMaxSPrate,4;
+  - Id: 312684
+    AegisName: Shadow_SP_5
+    Name: S. Mentality 5Lv
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bMaxSPrate,5;
+  - Id: 312685
+    AegisName: Justice_Vigor_ABC
+    Name: Good Vigor (Abyss Chaser)
+    Type: Card
+    SubType: Enchant
+  - Id: 312686
+    AegisName: Injustice_Vigor_ABC
+    Name: Evil Vigor (Abyss Chaser)
+    Type: Card
+    SubType: Enchant
+  - Id: 312687
+    AegisName: Justice_Vigor_TR
+    Name: Good Vigor (Troubadour & Trouvere)
+    Type: Card
+    SubType: Enchant
+  - Id: 312688
+    AegisName: Injustice_Vigor_TR
+    Name: Evil Vigor (Troubadour & Trouvere)
+    Type: Card
+    SubType: Enchant
+  - Id: 312689
+    AegisName: Justice_Vigor_HN
+    Name: Good Vigor (Hyper Novice)
+    Type: Card
+    SubType: Enchant
+  - Id: 312690
+    AegisName: Injustice_Vigor_HN
+    Name: Evil Vigor (Hyper Novice)
+    Type: Card
+    SubType: Enchant
+  - Id: 312692
+    AegisName: aegis_312692
+    Name: Abyss Chaser Stone (Garment)
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus2 bAddRace,RC_All,(getskilllv("ABC_FRENZY_SHOT")/2);
+      bonus2 bAddRace,RC_Player_Human,-(getskilllv("ABC_FRENZY_SHOT")/2);
+      bonus2 bAddRace,RC_Player_Doram,-(getskilllv("ABC_FRENZY_SHOT")/2);
+  - Id: 312693
+    AegisName: aegis_312693
+    Name: Troubadour & Trouvere Stone (Garment)
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus bLongAtkRate,2*getskilllv("TR_RHYTHMSHOOTING");
+  - Id: 312694
+    AegisName: aegis_312694
+    Name: Hyper Novice Stone (Garment)
+    Type: Card
+    SubType: Enchant
+    Script: |
+      bonus2 bSkillAtk,"HN_NAPALM_VULCAN_STRIKE",10;
+      bonus2 bMagicAtkEle,Ele_Ghost,getskilllv("HN_SELFSTUDY_SOCERY");
+      bonus2 bMagicAtkEle,Ele_Wind,getskilllv("HN_SELFSTUDY_SOCERY");
+      bonus2 bMagicAtkEle,Ele_Water,getskilllv("HN_SELFSTUDY_SOCERY");
+  - Id: 312801
+    AegisName: Justice_Vigor_IG
+    Name: Good Vigor (Imperial Guard)
+    Type: Card
+    SubType: Enchant
+  - Id: 312802
+    AegisName: Injustice_Vigor_IG
+    Name: Evil Vigor (Imperial Guard)
+    Type: Card
+    SubType: Enchant
+  - Id: 312803
+    AegisName: Justice_Vigor_AG
+    Name: Good Vigor (Arch Mage)
+    Type: Card
+    SubType: Enchant
+  - Id: 312804
+    AegisName: Injustice_Vigor_AG
+    Name: Evil Vigor (Arch Mage)
+    Type: Card
+    SubType: Enchant
+  - Id: 312805
+    AegisName: Justice_Vigor_NW
+    Name: Good Vigor (Night Watch)
+    Type: Card
+    SubType: Enchant
+  - Id: 312806
+    AegisName: Injustice_Vigor_NW
+    Name: Evil Vigor (Night Watch)
+    Type: Card
+    SubType: Enchant
   - Id: 1000000
     AegisName: IDTest_event
     Name: IDTest event
@@ -80712,6 +81186,24 @@ Body:
     Weight: 10
     Flags:
       BuyingStore: true
+  - Id: 1001338
+    AegisName: aegis_1001338
+    Name: Adventurer's Bag
+    Type: Etc
+    Flags:
+      BuyingStore: true
+  - Id: 1001339
+    AegisName: aegis_1001339
+    Name: Homemade Jerky
+    Type: Etc
+    Flags:
+      BuyingStore: true
+  - Id: 1001340
+    AegisName: aegis_1001340
+    Name: Fairy Tale Book
+    Type: Etc
+    Flags:
+      BuyingStore: true
   - Id: 1001355
     AegisName: aegis_1001355
     Name: Ancient Hero's Modification Coupon I
@@ -81663,6 +82155,21 @@ Body:
     Weight: 300
     Flags:
       DropEffect: CLIENT
+  - Id: 1001487
+    AegisName: AbysschaserStone_Robe
+    Name: Abyss Chaser Stone (Garment)
+    Type: Etc
+    Weight: 100
+  - Id: 1001488
+    AegisName: TRTRStone_Robe
+    Name: Troubadour & Trouvere Stone (Garment)
+    Type: Etc
+    Weight: 100
+  - Id: 1001489
+    AegisName: HNoviceStone_Robe
+    Name: Hyper Novice Stone (Garment)
+    Type: Etc
+    Weight: 100
   - Id: 1220001
     AegisName: Kunai
     Name: Kunai

+ 35 - 0
db/re/skill_db.yml

@@ -17953,6 +17953,41 @@ Body:
     Hit: Single
     HitCount: 1
     SplashArea: -1
+  - Id: 749
+    Name: NPC_WIDECRITICALWOUND
+    Description: Wide Critical Wounds
+    MaxLevel: 10
+    Type: Weapon
+    TargetType: Self
+    DamageFlags:
+      Splash: true
+    Flags:
+      IsNpc: true
+    Hit: Single
+    HitCount: 1
+    SplashArea:
+      - Level: 1
+        Area: 2
+      - Level: 2
+        Area: 5
+      - Level: 3
+        Area: 8
+      - Level: 4
+        Area: 11
+      - Level: 5
+        Area: 14
+      - Level: 6
+        Area: 14
+      - Level: 7
+        Area: 14
+      - Level: 8
+        Area: 14
+      - Level: 9
+        Area: 14
+      - Level: 10
+        Area: 2
+    Element: Weapon
+    Duration2: 30000
   - Id: 751
     Name: NPC_ALL_STAT_DOWN
     Description: Decrease All Stats

+ 18 - 2
doc/script_commands.txt

@@ -8413,6 +8413,14 @@ error message instead.
 
 This command requires packet version 2021-11-03 or newer.
 
+---------------------------------------
+
+*opentips({<Tip ID>,{<char ID>}});
+
+Opens the tip box UI for the attached player or the given character ID.
+
+This command requires packet version 2017-11-22 or newer.
+
 ---------------------------------------
 \\
 6,1.- Unit-related commands
@@ -10013,7 +10021,7 @@ Remove the quest of the given <ID> from the user's quest log.
 *changequest <ID>,<ID2>{,<char_id>};
 
 Remove quest of the given <ID> from the user's quest log.
-Add quest of the <ID2> to the the quest log, and the state is "active".
+Add quest <ID2> to the quest log, and the state is "active".
 
 ---------------------------------------
 
@@ -11117,7 +11125,7 @@ Use <color> hex code to set the color for this channel, if not defined, default
 channel color will be used.
 
 If <char_id> is defined, the channel will be a private channel and the player
-will be the the channel owner.
+will be the channel owner.
 
 Returns 1 on success.
 
@@ -11359,3 +11367,11 @@ Note: Only works with classes that use the ranking system.
 Returns true if the player is dead else false.
 
 ---------------------------------------
+
+*has_autoloot({<char_id>});
+
+This command checks whether a player configured autoloot.
+Returns current autoloot value on success.
+
+---------------------------------------
+

+ 1 - 1
npc/airports/airships.txt

@@ -823,7 +823,7 @@ airplane_01,50,66,5	script	Apple Merchant#air01	86,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Meltz]";

+ 1 - 1
npc/battleground/bg_common.txt

@@ -389,7 +389,7 @@ bat_room,160,150,3	script	Erundek	109,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Erundek]";

+ 4 - 4
npc/battleground/flavius/flavius_enter.txt

@@ -18,7 +18,7 @@ bat_room,133,178,5	script	Flavius Officer#01a	418,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Guillaume Army Officer]";
@@ -87,7 +87,7 @@ bat_room,133,121,1	script	Flavius Officer#01b	414,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Croix Army Officer]";
@@ -220,7 +220,7 @@ bat_room,148,178,5	script	Flavius Officer#02a	418,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Guillaume Army Officer]";
@@ -289,7 +289,7 @@ bat_room,148,121,1	script	Flavius Officer#02b	414,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Croix Army Officer]";

+ 1 - 1
npc/battleground/kvm/kvm_item_pay.txt

@@ -30,7 +30,7 @@ bat_room,151,144,3	script	KVM Logistic Officer#a	734,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Logistics]";

+ 4 - 4
npc/battleground/tierra/tierra_enter.txt

@@ -19,7 +19,7 @@ bat_room,124,178,5	script	Tierra Gorge Officer#01a	418,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Guillaume Army Officer]";
@@ -88,7 +88,7 @@ bat_room,140,178,5	script	Tierra Gorge Officer#02a	418,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Guillaume Army Officer]";
@@ -225,7 +225,7 @@ bat_room,125,121,1	script	Tierra Gorge Officer#01b	414,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Croix Army Officer]";
@@ -294,7 +294,7 @@ bat_room,140,121,1	script	Tierra Gorge Officer#02b	414,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Croix Army Officer]";

+ 1 - 1
npc/cities/lutie.txt

@@ -455,7 +455,7 @@ xmas,134,112,4	script	Snowman	710,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close2;
 		cutin "",255;
 		end;

+ 1 - 1
npc/custom/etc/quest_warper.txt

@@ -34,7 +34,7 @@
 //= 1.6 - Dungeon warp [Neouni] (beta only)
 // - added option to add a extra fee for going down deeper into dungeon
 // partly by rebuilding the dungeon warping into variable menu's
-//= 1.6a - alot of fixes for beta release [Neouni] (public release)
+//= 1.6a - a lot of fixes for beta release [Neouni] (public release)
 // - fixed syntax problems
 // - fixed missing pyramid gats in @DGat$ array
 // - removed the culver level 5 that didn't exist

+ 1 - 1
npc/custom/events/holiday/uneasy_cemetery.txt

@@ -14,7 +14,7 @@
 //= with needed amount of Holy Water. Every citizen can take his part in the 
 //= saving of Prontera city. After some days of quiet life... the Cemetery strikes back.
 //===== Additional Comments: ================================= 
-//= 1.1 More advanced ver. Added some bonus the the one who'd kill the last walking undead
+//= 1.1 More advanced ver. Added some bonus for the one who'd kill the last walking undead
 //= 1.2 Added coords to the script to make label OmMobDead working
 //= 1.2a Changed item names to item IDs. [Samuray22]
 //============================================================ 

+ 2 - 2
npc/custom/events/holiday/valentinesdayexp.txt

@@ -97,7 +97,7 @@ M_CHOCO:
 	mes "[Stephen]";
 	mes "Hah!";
 	mes "I knew it!";
-	mes "But I can't sell you more then 5 at once....but, if you really need more....";
+	mes "But I can't sell you more than 5 at once....but, if you really need more....";
 	mes "you can come back again.";
 	mes "So how many do you want?";
 	next;
@@ -158,7 +158,7 @@ alberta,29,243,4	script	Jainie#val1	53,{
 
 M_CHOCO:
 	mes "[Jainie]";
-	mes "I can't sell you more then 5 at once....but, if you really need more....";
+	mes "I can't sell you more than 5 at once....but, if you really need more....";
 	mes "you can come back again.";
 	mes "So how many do you want? 1 portion is 4500z + 1 Milk.";
 	next;

+ 1 - 1
npc/custom/jobmaster.txt

@@ -155,7 +155,7 @@ function	Job_Options	{
 	//dispbottom "Debug: eac ("+.@eac+"), third ("+.@third_possible+"), rebirth("+.@rebirth_possible+"), BaseClass ("+BaseClass+"), BaseJob ("+BaseJob+")";
 		
 	// From here on the jobmaster checks the current class
-	// and fills the the array `.@job_opt` with possible
+	// and fills the array `.@job_opt` with possible
 	// job options for the player.
 	
 	if( .@rebirth_possible ) {

+ 6 - 6
npc/events/gdevent_aru.txt

@@ -81,7 +81,7 @@ arug_dun01,199,195,5	script	Dwarf#aru_gd	826,{
 				mes "I am Morestone and I collect rare gems.";
 				next;
 				mes "[Morestone]";
-				mes "In my travels, I was told that there were alot of gems in Valfreyja and Nidhoggur, so I came down here.";
+				mes "In my travels, I was told that there were a lot of gems in Valfreyja and Nidhoggur, so I came down here.";
 				mes "But here, the soil is very hard to dig into. Fortunately, my ^3131FFPickaxe^000000 never lets me down!";
 				next;
 				select("Pickaxe!");
@@ -95,7 +95,7 @@ arug_dun01,199,195,5	script	Dwarf#aru_gd	826,{
 				next;
 				select("Something strange??");
 				mes "[Morestone]";
-				mes "No, but it was worth quite alot.";
+				mes "No, but it was worth quite a lot.";
 				mes "But we did not have much time to celebrate. Suddenly, a monster appeared that stole my pickaxe.";
 				mes "His name was^3131FFKublin^000000!";
 				next;
@@ -214,7 +214,7 @@ arug_dun01,199,195,5	script	Dwarf#aru_gd	826,{
 					mes "I am Morestone and I collect rare gems.";
 					next;
 					mes "[Morestone]";
-					mes "In my travels, I was told that there were alot of gems in Valfreyja and Nidhoggur, so I came down here.";
+					mes "In my travels, I was told that there were a lot of gems in Valfreyja and Nidhoggur, so I came down here.";
 					mes "But here, the soil is very hard to dig into. Fortunately, my ^3131FFPickaxe^000000 never lets me down!";
 					next;
 					select("Pickaxe!");
@@ -228,7 +228,7 @@ arug_dun01,199,195,5	script	Dwarf#aru_gd	826,{
 					next;
 					select("Something strange??");
 					mes "[Morestone]";
-					mes "No, but it was worth quite alot.";
+					mes "No, but it was worth quite a lot.";
 					mes "But we did not have much time to celebrate. Suddenly, a monster appeared that stole my pickaxe.";
 					mes "His name was^3131FFKublin^000000!";
 					next;
@@ -358,7 +358,7 @@ arug_dun01,199,195,5	script	Dwarf#aru_gd	826,{
 					mes "I am Morestone and I collect rare gems.";
 					next;
 					mes "[Morestone]";
-					mes "In my travels, I was told that there were alot of gems in Valfreyja and Nidhoggur, so I came down here.";
+					mes "In my travels, I was told that there were a lot of gems in Valfreyja and Nidhoggur, so I came down here.";
 					mes "But here, the soil is very hard to dig into. Fortunately, my ^3131FFPickaxe^000000 never lets me down!";
 					next;
 					select("Pickaxe!");
@@ -372,7 +372,7 @@ arug_dun01,199,195,5	script	Dwarf#aru_gd	826,{
 					next;
 					select("Something strange??");
 					mes "[Morestone]";
-					mes "No, but it was worth quite alot.";
+					mes "No, but it was worth quite a lot.";
 					mes "But we did not have much time to celebrate. Suddenly, a monster appeared that stole my pickaxe.";
 					mes "His name was^3131FFKublin^000000!";
 					next;

+ 6 - 6
npc/events/gdevent_sch.txt

@@ -81,7 +81,7 @@ schg_dun01,194,148,5	script	Dwarf#sch_gd	826,{
 				mes "I am Morestone and I collect rare gems.";
 				next;
 				mes "[Morestone]";
-				mes "In my travels, I was told that there were alot of gems in Valfreyja and Nidhoggur, so I came down here.";
+				mes "In my travels, I was told that there were a lot of gems in Valfreyja and Nidhoggur, so I came down here.";
 				mes "But here, the soil is very hard to dig into. Fortunately, my ^3131FFPickaxe^000000 never lets me down!";
 				next;
 				select("Pickaxe!");
@@ -95,7 +95,7 @@ schg_dun01,194,148,5	script	Dwarf#sch_gd	826,{
 				next;
 				select("Something strange??");
 				mes "[Morestone]";
-				mes "No, but it was worth quite alot.";
+				mes "No, but it was worth quite a lot.";
 				mes "But we did not have much time to celebrate. Suddenly, a monster appeared that stole my pickaxe.";
 				mes "His name was^3131FFKublin^000000!";
 				next;
@@ -214,7 +214,7 @@ schg_dun01,194,148,5	script	Dwarf#sch_gd	826,{
 					mes "I am Morestone and I collect rare gems.";
 					next;
 					mes "[Morestone]";
-					mes "In my travels, I was told that there were alot of gems in Valfreyja and Nidhoggur, so I came down here.";
+					mes "In my travels, I was told that there were a lot of gems in Valfreyja and Nidhoggur, so I came down here.";
 					mes "But here, the soil is very hard to dig into. Fortunately, my ^3131FFPickaxe^000000 never lets me down!";
 					next;
 					select("Pickaxe!");
@@ -228,7 +228,7 @@ schg_dun01,194,148,5	script	Dwarf#sch_gd	826,{
 					next;
 					select("Something strange??");
 					mes "[Morestone]";
-					mes "No, but it was worth quite alot.";
+					mes "No, but it was worth quite a lot.";
 					mes "But we did not have much time to celebrate. Suddenly, a monster appeared that stole my pickaxe.";
 					mes "His name was^3131FFKublin^000000!";
 					next;
@@ -357,7 +357,7 @@ schg_dun01,194,148,5	script	Dwarf#sch_gd	826,{
 					mes "I am Morestone and I collect rare gems.";
 					next;
 					mes "[Morestone]";
-					mes "In my travels, I was told that there were alot of gems in Valfreyja and Nidhoggur, so I came down here.";
+					mes "In my travels, I was told that there were a lot of gems in Valfreyja and Nidhoggur, so I came down here.";
 					mes "But here, the soil is very hard to dig into. Fortunately, my ^3131FFPickaxe^000000 never lets me down!";
 					next;
 					select("Pickaxe!");
@@ -371,7 +371,7 @@ schg_dun01,194,148,5	script	Dwarf#sch_gd	826,{
 					next;
 					select("Something strange??");
 					mes "[Morestone]";
-					mes "No, but it was worth quite alot.";
+					mes "No, but it was worth quite a lot.";
 					mes "But we did not have much time to celebrate. Suddenly, a monster appeared that stole my pickaxe.";
 					mes "His name was^3131FFKublin^000000!";
 					next;

+ 1 - 1
npc/events/valentinesday.txt

@@ -37,7 +37,7 @@ alberta,26,243,4	script	Stephen	58,{
 	mes "[Stephen]";
 	mes "Hah!";
 	mes "I knew it!";
-	mes "But I can't sell you more then 5 at once... but, if you really need more....";
+	mes "But I can't sell you more than 5 at once... but, if you really need more....";
 	mes "you can come back again.";
 	mes "So how many do you want?";
 	next;

+ 1 - 1
npc/guild/agit_main.txt

@@ -885,7 +885,7 @@ OnRecvCastle:
 			next;
 			cutin "",255;
 			mes "["+strnpcinfo(1)+"]";
-			mes "The Contract terms of the hired Kafra Employee are for 1 month and after this term, you will need to to pay an additional fee.";
+			mes "The Contract terms of the hired Kafra Employee are for 1 month and after this term, you will need to pay an additional fee.";
 			mes "It will be useful for our members.";
 			close;
 		case 2:

+ 1 - 1
npc/jobs/2-1/assassin.txt

@@ -833,7 +833,7 @@ OnTouch_:
 			mes "Now, we shall test you once more! Keep in mind, you must answer 9 questions out of 10 correctly. Remember I am doing you a favor...";
 			next;
 			mes "[The Anonymous One]";
-			mes "You must answer 9 questions out of 10 correctly. If you miss more then one question, you can never become an Assassin.";
+			mes "You must answer 9 questions out of 10 correctly. If you miss more than one question, you can never become an Assassin.";
 			next;
 			mes "[The Anonymous One]";
 			mes "Okay,";

+ 1 - 1
npc/jobs/2-1/hunter.txt

@@ -1272,7 +1272,7 @@ OnTouch_:
 	case 4: mapannounce "job_hunte",strcharinfo(0) + ", has failed me! Go back to where you started!",bc_map; break;
 	case 5: mapannounce "job_hunte",strcharinfo(0) + ", you have blundered into a trap. I'm sorry, but for now, YOU LOSE.",bc_map; break;
 	case 6: mapannounce "job_hunte",strcharinfo(0) + ", what are you doing!? Go back and do it again!",bc_map; break;
-	case 7: mapannounce "job_hunte",strcharinfo(0) + ", come on! You can do better then this!! Try again!",bc_map; break;
+	case 7: mapannounce "job_hunte",strcharinfo(0) + ", come on! You can do better than this!! Try again!",bc_map; break;
 	case 8: mapannounce "job_hunte",strcharinfo(0) + ", has fallen into a trap...again. But don't worry, you're getting better.",bc_map; break;
 	case 9: mapannounce "job_hunte",strcharinfo(0) + ", fail, fail, fail... Go back to where you started!",bc_map; break;
 	case 10: mapannounce "job_hunte",strcharinfo(0) + "... aww~ Try again! You can do it!",bc_map; break;

+ 1 - 1
npc/jobs/2-2/monk.txt

@@ -2165,7 +2165,7 @@ monk_test,319,139,1	script	Tomoon#mk	52,{
 		mes "My name is Tomoon, I am in charge of the last test of spiritual training!";
 		next;
 		mes "[Tomoon]";
-		mes "Now you don't need to be instructed any more then this:";
+		mes "Now you don't need to be instructed any more than this:";
 		mes "^990000Terminate every living thing in your way!^000000 That's all!";
 		next;
 		mes "[Tomoon]";

+ 4 - 4
npc/other/poring_war.txt

@@ -228,7 +228,7 @@ poring_w01,96,97,3	script	Sweet Devi#wop	738,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Deviruchi]";
@@ -626,7 +626,7 @@ poring_w02,26,181,3	script	Mr. Doppel#wop_team_a	739,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	set .@a_tname$,getpartyname($@wop_team_a);
@@ -757,7 +757,7 @@ poring_w02,170,181,3	script	Mr. Doppel#wop_team_d	739,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	set .@d_tname$,getpartyname($@wop_team_d);
@@ -1221,7 +1221,7 @@ poring_w02,99,201,3	script	Deviruchi#wop_endmaster	738,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	set .@a_point,$@wop_deadcount_a;

+ 1 - 1
npc/pre-re/guides/guides_ayothaya.txt

@@ -21,7 +21,7 @@ ayothaya,203,169,3	script	Noi#ayo	839,{
 	mes "by a dense forest.";
 	next;
 	mes "[Noi]";
-	mes "There are many tourist attractions in this village that you won't be able to find anywhere else. Our fish markets and the the unique architecture of our buildings is enough reason to visit Ayotaya.";
+	mes "There are many tourist attractions in this village that you won't be able to find anywhere else. Our fish markets and the unique architecture of our buildings are enough reason to visit Ayotaya.";
 	next;
 	mes "[Noi]";
 	mes "Please feel free";

+ 1 - 1
npc/pre-re/warps/fields/morroc_fild.txt

@@ -17,7 +17,7 @@
 //= 1.4b Uncommented ANOTHER warp! Yay! :D [L0ne_W0lf]
 //============================================================
 
-//= Sograt Dessert ===========================================
+//= Sograt Desert ===========================================
 //moc_fild01,101,16,0	warp	mocf01-1	15,3,moc_fild04,317,376
 moc_fild01,101,16,0	warp	mocf01-1	15,3,moc_fild20,210,342
 moc_fild01,22,242,0	warp	mocf005	2,2,prt_fild09,380,237

+ 1 - 1
npc/quests/counteragent_mixture.txt

@@ -401,7 +401,7 @@ geffen_in,141,140,3	script	Morgenstein#cm	121,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	if (MISC_QUEST & 4) {

+ 1 - 1
npc/quests/first_class/tu_acolyte.txt

@@ -605,7 +605,7 @@ prt_monk,230,106,3	script	Asthe#tu	1_F_PRIEST,{
 		mes "After learning Level 2 Teleport, you can learn ^3131FFWarp Portal^000000 which will allow you to warp to a Memo Point, or saved destination, by consuming ^FF00001 Blue Gemstone^000000.";
 		next;
 		mes "[Asthe]";
-		mes "Once you have mastered Warp Portal you can ^3131FFremember three Memo Points^000000. You can't save Memo Points in in most fields or dungeons, but you can use the ^FF0000/memo^000000 command in";
+		mes "Once you have mastered Warp Portal you can ^3131FFremember three Memo Points^000000. You can't save Memo Points in most fields or dungeons, but you can use the ^FF0000/memo^000000 command in";
 		mes "towns and certain fields.";
 		next;
 		mes "[Asthe]";

+ 1 - 1
npc/quests/newgears/2004_headgears.txt

@@ -1804,7 +1804,7 @@ yuno_in03,20,18,6	script	Nehris#1	726,{
 		close;
 	case 2:
 		mes "[Nehris]";
-		mes "This crown is inspired by the the one worn by the 'Isis' monster. It has a elegant look fitting for ancient royalty.";
+		mes "This crown is inspired by the one worn by the 'Isis' monster. It has an elegant look fitting for ancient royalty.";
 		next;
 		if (countitem(10006) > 0 && countitem(714) > 0 && countitem(969) > 2 && Zeny > 19999) {
 			mes "[Nehris]";

+ 4 - 4
npc/quests/quests_13_1.txt

@@ -2720,7 +2720,7 @@ mid_camp,123,290,4	script	Otto#ep13bs	967,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	if (ep13_newbs == 23) {
@@ -3049,7 +3049,7 @@ mid_campin,106,122,4	script	Receptionist Brink#ep13b	89,{
 			mes "- Currently you're carrying -";
 			mes "- too many items with you. -";
 			mes "- Please try again -";
-			mes "- after you loose some weight. -";
+			mes "- after you lose some weight. -";
 			close;
 		}
 		else {
@@ -3448,7 +3448,7 @@ spl_fild02,348,76,0	script	Tree#ep13bs1::ep13tree	111,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	if (ep13_newbs == 6) {
@@ -9263,7 +9263,7 @@ mid_campin,94,118,3	script	Staff Officer Abidal	755,{
 			mes "As a last resort, they had to select Commander Agip since he's unaffiliated with any of those countries, but is talented enough to lead the expedition.";
 			next;
 			mes "[Staff Officer Abidal]";
-			mes "We, the commander, Igrid, and I aren't used to the the leadership role. We're having trouble taking care of everything that's happening. *Sigh*";
+			mes "We, the commanders, Igrid, and I aren't used to the leadership role. We're having trouble taking care of everything that's happening. *Sigh*";
 			next;
 			mes "[Staff Officer Abidal]";
 			mes "The members of the Midgard Expedition are conducting various kinds of research about the Ash-Vacuum searching for possible living creatures and studying what might be beneficial for the development of the mainland.";

+ 3 - 3
npc/quests/quests_alberta.txt

@@ -743,7 +743,7 @@ alberta,136,79,1	script	Hat store girl#new30	71,{
 					}
 					else {
 						mes "[Tempestra]";
-						mes "I will tell you a secret, beause you gave me the Yellow Potion~";
+						mes "I will tell you a secret, because you gave me the Yellow Potion~";
 						next;
 						mes "[Tempestra]";
 						mes "I'm looking forward seeing you again~~";
@@ -808,7 +808,7 @@ alberta,136,79,1	script	Hat store girl#new30	71,{
 					}
 					else {
 						mes "[Tempestra]";
-						mes "I will tell you a secret, beause you gave me the Yellow Potion~";
+						mes "I will tell you a secret, because you gave me the Yellow Potion~";
 						next;
 						mes "[Tempestra]";
 						mes "I'm looking forward seeing you again~~";
@@ -872,7 +872,7 @@ alberta,136,79,1	script	Hat store girl#new30	71,{
 					}
 					else {
 						mes "[Tempestra]";
-						mes "I will tell you a secret, beause you gave me the Yellow Potion~";
+						mes "I will tell you a secret, because you gave me the Yellow Potion~";
 						next;
 						mes "[Tempestra]";
 						mes "I'm looking forward seeing you again~~";

+ 1 - 1
npc/quests/quests_gonryun.txt

@@ -2922,7 +2922,7 @@ geffen_in,71,112,2	script	Blacksmith#SaYumMoon	731,{
 				mes "5 Live Coals^000000";
 				next;
 				mes "[Aumgarl]";
-				mes "It's quite alot, huh?";
+				mes "It's quite a lot, huh?";
 				mes "These are necessary supplies.";
 				mes "We need them to repair the sword.";
 				mes "I'll go find some other materials.";

+ 1 - 1
npc/quests/quests_lighthalzen.txt

@@ -6399,7 +6399,7 @@ lighthalzen,179,170,4	script	Ordinary Man	4W_M_02,{
 				mes "Ghalstein that you";
 				mes "just heard, he reacted";
 				mes "pretty strongly to what";
-				mes "you said to to him. Almost";
+				mes "you said to him. Almost";
 				mes "as if he had something to hide... ^000000";
 				close;
 		}

+ 1 - 1
npc/quests/quests_moscovia.txt

@@ -9935,7 +9935,7 @@ mosk_dun02,48,214,5	script	Baba Yaga#rus32	4_F_BABAYAGA,{
 					mes "I don't understand you. What do you want? Kehehehehe.";
 					close;
 				} else if (.@input > 100) {
-					mes "I said no more then 100 at a time. Kehehehehe.";
+					mes "I said no more than 100 at a time. Kehehehehe.";
 					next;
 				} else break;
 			}

+ 2 - 2
npc/quests/quests_yuno.txt

@@ -430,7 +430,7 @@ yuno_in01,103,157,3	script	Bain#juno	98,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	if (countitem(974) > 0 && countitem(612) > 4 && countitem(1003) > 4 && countitem(7068) > 4 && countitem(7043) > 4 && countitem(757) > 2 && countitem(756) > 2 && Zeny > 2000) {
@@ -562,7 +562,7 @@ yuno_in01,100,153,7	script	Bajin	47,0,0,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	if (countitem(974) > 0 && countitem(612) > 4 && countitem(1003) > 4 && countitem(7068) > 4 && countitem(7043) > 4 && countitem(757) > 2 && countitem(756) > 2 && Zeny > 2000) {

+ 1 - 1
npc/quests/the_sign_quest.txt

@@ -9757,7 +9757,7 @@ que_sign01,122,141,4	script	Witch#s	792,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	mes "[Kirkena]";

+ 1 - 1
npc/re/custom/lasagna/lasagna_npcs.txt

@@ -3710,7 +3710,7 @@ lasagna,85,93,5	script	Shaman meow#dorcon	4_DR_KID_01,{
 		npctalk "Meow meow", "", bc_self;
 		next;
 		mes "[Shaman meow]";
-		mes "When I told him that ¡°a noble person from a new place solves the problem,¡± I meant that the the problem will move onto ^0000cda new person^000000. Seems like he misunderstood me and sent you.";
+		mes "When I told him that ¡°a noble person from a new place solves the problem,¡± I meant that the problem will move onto ^0000cda new person^000000. Seems like he misunderstood me and sent you.";
 		next;
 		mes "[" + strcharinfo(0) + "]";
 		mes "T-then, you've also...";

+ 1 - 1
npc/re/guild3/agit_main_te.txt

@@ -481,7 +481,7 @@ function GuardianData;
 		next;
 		cutin "",255;
 		mes .@npc_name$;
-		mes "The Contract terms of the hired Kafra Employee are for 1 month and after this term, you will need to to pay an additional fee.";
+		mes "The Contract terms of the hired Kafra Employee are for 1 month and after this term, you will need to pay an additional fee.";
 		mes "It will be useful for our members.";
 		close;
 

+ 1 - 1
npc/re/instances/NightmarishJitterbug.txt

@@ -3908,7 +3908,7 @@ OnStop:
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	cutin "min02",0;

+ 1 - 1
npc/re/jobs/3-1/archbishop.txt

@@ -1135,7 +1135,7 @@ job3_arch02,113,327,5	script	Valkyrie#arch_01	403,{
 	mes "It'll be helpful to find the rest of pieces.";
 	next;
 	mes "[Valkyrie Anguhilde]";
-	mes "Then I look forward a good news.";
+	mes "Then I look forward to good news.";
 	close2;
 	getitem 12382,1; //ValkyrieB_Scroll
 	viewpoint 1,244,46,1,0xFFFF99;

+ 1 - 1
npc/re/jobs/3-2/minstrel.txt

@@ -1710,7 +1710,7 @@ OnTouch:
 		mes "Why don't we go back to Prontera?";
 		next;
 		mes "[Karian]";
-		mes "I can't get rid of the the memories that I was impressed with when I entered Prontera's gates.";
+		mes "I can't get rid of the memories that I was impressed with when I entered Prontera's gates.";
 		set job_min,22;
 		changequest 11153,11154;
 		donpcevent "Karian#cmd8::OnDisable";

+ 1 - 1
npc/re/jobs/3-2/wanderer.txt

@@ -448,7 +448,7 @@ comodo,140,86,5	script	Cheerless Maestro	479,{
 			next;
 			emotion ET_QUESTION, playerattached();
 			mes "[" + strcharinfo(0) + "]";
-			mes "I've seen other Maestro's performances but there was no one better then Guitar Song.";
+			mes "I've seen other Maestro's performances but there was no one better than Guitar Song.";
 			next;
 			mes "[Guitar Song]";
 			mes "He he he! Yes, I know I am super great!";

+ 3 - 3
npc/re/jobs/novice/academy.txt

@@ -2624,7 +2624,7 @@ iz_ac01,100,39,5	script	Academy Receptionist#1	4_F_01,{
 				mes "You can choose the course freely and each course has individual features.";
 				next;
 				mes "[Receptionist]";
-				mes "And this is the the basic equipment for the educational course.";
+				mes "And this is the basic equipment for the educational course.";
 				mes "Please make a good use of it.";
 				mes "Be careful with it as it won't be provided again.";
 				setquest 4269;
@@ -6249,7 +6249,7 @@ iz_ac01,138,69,3	script	Lady#ac	1_F_ORIENT_02,{
 	mes "^3377FF Haven't the kids feeding Picky awaken yet?^000000";
 	next;
 	mes "[Lady]";
-	mes "^3377FF When are you going to Morocc over the dessert?^000000";
+	mes "^3377FF When are you going to Morocc over the desert?^000000";
 	next;
 	mes "[Lady]";
 	mes "... Anonymous...";
@@ -7330,7 +7330,7 @@ iz_ac02,142,85,6	script	Lusa#ac	4_F_GUNSLINGER,{
 			mes "Now y'all need to understand, guns aren't some little thing that you just swing at an animal, you don't wiggle those there fingers and shock them to death.";
 			next;
 			mes "[Lusa]";
-			mes "No! You shoot things, which means ya need to aim straight. This takes alot of ^ff0000dexterity^000000 on the part of the gunslinger.";
+			mes "No! You shoot things, which means ya need to aim straight. This takes a lot of ^ff0000dexterity^000000 on the part of the gunslinger.";
 			next;
 			mes "[Lusa]";
 			mes "Now before ya go running off shooting dem guns in the air, all high fallootin and dancing around. Ya need to understand that this isn't an easy job!";

+ 2 - 2
npc/re/merchants/eden_market.txt

@@ -96,8 +96,8 @@ OnClock0000:
 	npcshopupdate "para_hei10",7642,0,1;
 	npcshopupdate "para_hei10",22687,0,1;
 	npcshopupdate "para_hei10",23016,0,1;
-	npcshopupdate "para_key10",7026,10;
-	npcshopupdate "para_key10",7027,10;
+	npcshopupdate "para_key10",7026,0,10;
+	npcshopupdate "para_key10",7027,0,10;
 	npcshopupdate "para_wp00",1181,0,1;
 	npcshopupdate "para_arm10",5007,0,1;
 	npcshopupdate "para_ptn00",678,0,999;

+ 1 - 1
npc/re/quests/eden/eden_common.txt

@@ -31,7 +31,7 @@ moc_para01,27,35,5	script	Secretary Lime Evenor	4_F_EDEN_OFFICER,{
 		mes "- Currently you're carrying -";
 		mes "- too many items with you. -";
 		mes "- Please try again -";
-		mes "- after you loose some weight. -";
+		mes "- after you lose some weight. -";
 		close;
 	}
 	if (countitem(6219) > 0) {

+ 1 - 1
npc/re/quests/eden/eden_quests.txt

@@ -585,7 +585,7 @@ S_Quest3:
 		mes "I don't know if it is the proper course or not, but anyway it's the last course of our training.";
 		next;
 		mes "[Boya]";
-		mes "First take a ship to to Byalan Island from Izlude!";
+		mes "First take a ship to Byalan Island from Izlude!";
 		mes "There is an underground cave. Go in and get to the bottom floor where you will find a historic underwater city..";
 		next;
 		mes "[Boya]";

+ 3 - 3
npc/re/quests/eden/eden_tutorial.txt

@@ -390,7 +390,7 @@ moc_para01,34,178,3	script	Tutorial Instructor	904,{
 		mes "^006400SOCKET ENCHANT^000000!!";
 		next;
 		mes "[Tutorial Instructor]";
-		mes "There. The Enchant is done. You can't understand the the process by just watching me, so I'll let you look at the items themselves.";
+		mes "There. The Enchant is done. You can't understand the process by just watching me, so I'll let you look at the items themselves.";
 		delitem 909,10; //Jellopy
 		completequest 9171;
 		setquest 9172;
@@ -1061,7 +1061,7 @@ moc_para01,12,179,6	script	Battleground Master	419,{
 					switch(rand(1,3)) {
 					case 1:
 						mes "[Battleground Expert]";
-						mes "For starters, you have to pick either the side of [] Camp or [] Camp in order to to participate in Battleground.";
+						mes "For starters, you have to pick either the side of [] Camp or [] Camp in order to participate in Battleground.";
 						mes "What words go in the empty spaces of []?";
 						next;
 						if(select("Guillaume, Tierra:Rachel, KVM:Guillaume, Croix:Maroll, KVM") == 3)
@@ -1311,7 +1311,7 @@ moc_para01,28,167,3	script	Memorial Dungeon Expert	868,{
 						mes "If you ever want to go over things about ^006400Memorial Dungeon^000000, come talk to me any time.";
 						next;
 						mes "[Memorial Dungeon Expert]";
-						mes "Now, off you go to the the ^0000FFMap Expert^000000!";
+						mes "Now, off you go to the ^0000FFMap Expert^000000!";
 						completequest 4164;
 						setquest 4165;
 						getexp 2000,1000;

+ 1 - 1
npc/re/quests/quests_16_1.txt

@@ -4629,7 +4629,7 @@ prt_cas_q,14,184,5	script	Isenhonor Walther#ep16wal	4_M_1STPRIN1,{
 		mes "Adventurer, how did your meeting with the Guardian Knight in Alberta go? Not that I expect too much...";
 		next;
 		mes "[Isenhonor]";
-		mes "However, still, I have hoped to hear a good news from you...";
+		mes "However, still, I have hoped to hear good news from you...";
 		close;
 	}
 	if (ep16_wal == 6) {

+ 1 - 1
npc/re/quests/quests_16_2.txt

@@ -4489,7 +4489,7 @@ rebel_in,70,78,3	script	Elena Volkova#16.2rm	4_F_ELENA,{
 		}
 		if (lebedev_quest_16_2 == 0) {
 			mes "[USU commander Elena]";
-			mes "Not busy? That's a good news.";
+			mes "Not busy? That's good news.";
 			mes "Apart from fighting... I would like to ask you for a favor.";
 			next;
 			mes "[USU commander Elena]";

+ 2 - 2
npc/re/quests/quests_17_1.txt

@@ -3388,7 +3388,7 @@ pub_cat,106,69,7	script	Lazy#171_cat	4_M_LAZY,{
 		mes "[Lazy]";
 		mes "No? Well that's alright with me.";
 		mes "I'm fine.";
-		mes "I'm not blind. Even in my position, I've noticed the the Enterprise is hiding something from us!";
+		mes "I'm not blind. Even in my position, I've noticed the Enterprise is hiding something from us!";
 		next;
 		cutin "16lei_03",0;
 		mes "[Lazy]";
@@ -4092,7 +4092,7 @@ sp_rudus,193,284,0	script	Rookie#171_rudus	4_M_ROOKIE,{
 	}
 	cutin "16loo_01",2;
 	mes "[Rookie]";
-	mes "It's nice to suddenly have so much work to do... But I won't be able to to do everything on own...";
+	mes "It's nice to suddenly have so much work to do... But I won't be able to do everything on my own...";
 	close3;
 
 OnInit:

+ 1 - 1
npc/re/quests/quests_17_2.txt

@@ -4711,7 +4711,7 @@ ba_bath,165,43,3	script	Shrine#172ba02	4_EP17_BUCKETS,5,5,{
 		next;
 		cutin "16loo_03",2;
 		mes "[Rookie]";
-		mes "We should focus on searching for the dangerous goods rather than the the missing persons. The identity of the dangerous being has not yet been revealed, and various testimonies and circumstances presumed it's a humans, monster, automatic doll, and supernatural beings.";
+		mes "We should focus on searching for the dangerous goods rather than the missing persons. The identity of the dangerous being has not yet been revealed, and various testimonies and circumstances presumed it's a humans, monster, automatic doll, and supernatural beings.";
 		next;
 		cutin "16loo_01",2;
 		mes "[Rookie]";

+ 1 - 1
npc/re/warps/fields/morroc_fild.txt

@@ -18,7 +18,7 @@
 //= 1.5 Commented moc_fild20 warps replaced with new NPCs. [Euphy]
 //============================================================
 
-//= Sograt Dessert ===========================================
+//= Sograt Desert ===========================================
 //moc_fild01,101,16,0	warp	mocf01-1	15,3,moc_fild04,317,376
 //moc_fild01,101,16,0	warp	mocf01-1	15,3,moc_fild20,210,342
 moc_fild01,22,242,0	warp	mocf005	2,2,prt_fild09,380,237

+ 15 - 8
src/map/battle.cpp

@@ -3858,13 +3858,17 @@ static void battle_calc_skill_base_damage(struct Damage* wd, struct block_list *
 		case RK_DRAGONBREATH_WATER:
 			{
 				int damagevalue = (sstatus->hp / 50 + status_get_max_sp(src) / 4) * skill_lv;
-
 				if(status_get_lv(src) > 100)
 					damagevalue = damagevalue * status_get_lv(src) / 100;
-				if(sd)
-					damagevalue = damagevalue * ( 90 + 10 * pc_checkskill( sd, RK_DRAGONTRAINING ) + ( pc_checkskill( sd, DK_DRAGONIC_AURA ) >= 1 ? ( sstatus->pow / 4 + sstatus->patk / 2 ) : 0 ) ) / 100;
-				if (sc && sc->getSCE(SC_DRAGONIC_AURA))// Need official damage increase. [Rytech]
-					damagevalue += damagevalue * 50 / 100;
+				if(sd) {
+					if (pc_checkskill( sd, DK_DRAGONIC_AURA ) >= 1) {
+						damagevalue = damagevalue * (90 + 10 * pc_checkskill( sd, RK_DRAGONTRAINING ) + sstatus->pow / 5 ) / 100;
+					} else {
+						damagevalue = damagevalue * (90 + 10 * pc_checkskill( sd, RK_DRAGONTRAINING )) / 100;
+					}
+				}
+				if (sc && sc->getSCE(SC_DRAGONIC_AURA))
+					damagevalue += damagevalue * sc->getSCE(SC_DRAGONIC_AURA)->val1 * 10 / 100;
 				ATK_ADD(wd->damage, wd->damage2, damagevalue);
 #ifdef RENEWAL
 				ATK_ADD(wd->weaponAtk, wd->weaponAtk2, damagevalue);
@@ -6899,9 +6903,12 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
 		battle_attack_sc_bonus(&wd, src, target, skill_id, skill_lv);
 
 		if (sd) { //monsters, homuns and pets have their damage computed directly
-			wd.damage = (int64)floor((float)((wd.statusAtk + wd.weaponAtk + wd.equipAtk + wd.percentAtk) * (100 + sstatus->patk) / 100 + wd.masteryAtk + bonus_damage));
-			if (is_attack_left_handed(src, skill_id))
-				wd.damage2 = (int64)floor((float)((wd.statusAtk2 + wd.weaponAtk2 + wd.equipAtk2 + wd.percentAtk2) * (100 + sstatus->patk) / 100 + wd.masteryAtk2 + bonus_damage));
+			//PATK mod applies to Dragonbreaths if Dragonic Aura is skilled only - [munkrej]
+			if (!((skill_id == RK_DRAGONBREATH || skill_id == RK_DRAGONBREATH_WATER) && pc_checkskill( sd, DK_DRAGONIC_AURA ) == 0)) {
+				wd.damage = (int64)floor((float)((wd.statusAtk + wd.weaponAtk + wd.equipAtk + wd.percentAtk) * (100 + sstatus->patk) / 100 + wd.masteryAtk + bonus_damage));
+				if (is_attack_left_handed(src, skill_id))
+					wd.damage2 = (int64)floor((float)((wd.statusAtk2 + wd.weaponAtk2 + wd.equipAtk2 + wd.percentAtk2) * (100 + sstatus->patk) / 100 + wd.masteryAtk2 + bonus_damage));
+			}
 
 			// CritAtkRate modifier
 			if (wd.type == DMG_CRITICAL || wd.type == DMG_MULTI_HIT_CRITICAL) {

+ 2 - 1
src/map/clif.hpp

@@ -1181,7 +1181,8 @@ enum out_ui_type : int8 {
 	OUT_UI_STYLIST,
 	OUT_UI_CAPTCHA,
 	OUT_UI_MACRO,
-	OUT_UI_QUEST = 6,
+	OUT_UI_TIP = 5,
+	OUT_UI_QUEST,
 	OUT_UI_ATTENDANCE,
 	OUT_UI_ENCHANTGRADE,
 	OUT_UI_ENCHANT = 10,

+ 2 - 0
src/map/mob.cpp

@@ -4447,6 +4447,8 @@ uint64 MobDatabase::parseBodyNode(const ryml::NodeRef& node) {
 
 		name.resize(NAME_LENGTH);
 		mob->jname = name;
+	} else if (!exists) {
+		mob->jname = mob->name;
 	}
 
 	if (this->nodeExists(node, "Level")) {

+ 5 - 0
src/map/pc.cpp

@@ -1926,6 +1926,11 @@ bool pc_lastpoint_special( map_session_data& sd ){
 		return true;
 	}
 
+	if (strcmpi(sd.status.last_point.map, MAP_JAIL) == 0) {
+		// Don't return jailed player to save point.
+		return false;
+	}
+
 	// Maybe since the player's logout the nosave mapflag was added to the map
 	if( mapdata->getMapFlag(MF_NOSAVE) ){
 		// The map has a specific return point

+ 36 - 0
src/map/script.cpp

@@ -26939,6 +26939,40 @@ BUILDIN_FUNC(macro_detector) {
 	return SCRIPT_CMD_SUCCESS;
 }
 
+// ===================================
+// *has_autoloot({<char_id>});
+// This command checks whether a player configured autoloot.
+// Returns current autoloot value on success.
+// ===================================
+BUILDIN_FUNC(has_autoloot) {
+	map_session_data *sd;
+
+	if (!script_charid2sd(2, sd)) {
+		script_pushint(st, 0);
+		return SCRIPT_CMD_FAILURE;
+	}
+
+	script_pushint(st, sd->state.autoloot);
+
+	return SCRIPT_CMD_SUCCESS;
+}
+
+BUILDIN_FUNC(opentips){
+#if PACKETVER < 20171122
+	ShowError( "buildin_opentips: This command requires PACKETVER 20171122 or newer.\n" );
+	return SCRIPT_CMD_FAILURE;
+#else
+	map_session_data* sd;
+
+	if (!script_charid2sd(3, sd)) {
+		return SCRIPT_CMD_FAILURE;
+	}
+
+	clif_ui_open( *sd, OUT_UI_TIP, script_getnum(st, 2) );
+	return SCRIPT_CMD_SUCCESS;
+#endif
+}
+
 #include <custom/script.inc>
 
 // declarations that were supposed to be exported from npc_chat.cpp
@@ -27694,6 +27728,8 @@ struct script_function buildin_func[] = {
 	BUILDIN_DEF(getfamerank, "?"),
 	BUILDIN_DEF(isdead, "?"),
 	BUILDIN_DEF(macro_detector, "?"),
+	BUILDIN_DEF(has_autoloot,"?"),
+	BUILDIN_DEF(opentips, "i?"),
 
 #include <custom/script_def.inc>
 

+ 3 - 0
src/map/skill.cpp

@@ -1813,6 +1813,7 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl, uint
 		}
 		break;
 	case NPC_CRITICALWOUND:
+	case NPC_WIDECRITICALWOUND:
 		sc_start(src,bl,SC_CRITICALWOUND,100,skill_lv,skill_get_time2(skill_id,skill_lv));
 		break;
 	case NPC_FIRESTORM:
@@ -5669,6 +5670,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 	case EM_EL_DEADLY_POISON:
 	case BO_EXPLOSIVE_POWDER:
 	case BO_MAYHEMIC_THORNS:
+	case NPC_WIDECRITICALWOUND:
 		if( flag&1 ) {//Recursive invocation
 			int sflag = skill_area_temp[0] & 0xFFF;
 			int heal = 0;
@@ -8632,6 +8634,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 	case NPC_HELLJUDGEMENT2:
 	case NPC_PULSESTRIKE:
 	case LG_MOONSLASHER:
+	case NPC_WIDECRITICALWOUND:
 		skill_castend_damage_id(src, src, skill_id, skill_lv, tick, flag);
 		break;
 

+ 5 - 2
src/map/status.cpp

@@ -11445,6 +11445,9 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 				val1 = rnd()%ELE_ALL;
 			break;
 		case SC_CRITICALWOUND:
+			// Level 1 ~ 5 & 6 ~ 10 has different duration
+			// Level 6 ~ 10 use effect of level 1 ~ 5
+			val1 = 1 + ((val1-1)%5);
 			val2 = 20*val1; // Heal effectiveness decrease
 			break;
 		case SC_MAGICMIRROR:
@@ -14015,7 +14018,7 @@ TIMER_FUNC(status_change_timer){
 			int hp = 0;
 			if( status->hp < status->max_hp && !sc->getSCE(SC_BERSERK) )
 				hp = (sce->val1 < 0) ? (int)(status->max_hp * -1 * sce->val1 / 100.) : sce->val1;
-			status_heal(bl, hp, 0, 2);
+			status_heal(bl, hp, 0, 0);
 			sc_timer_next((sce->val2 * 1000) + tick);
 			return 0;
 		}
@@ -14027,7 +14030,7 @@ TIMER_FUNC(status_change_timer){
 			int sp = 0;
 			if( status->sp < status->max_sp && !sc->getSCE(SC_BERSERK) )
 				sp = (sce->val1 < 0) ? (int)(status->max_sp * -1 * sce->val1 / 100.) : sce->val1;
-			status_heal(bl, 0, sp, 2);
+			status_heal(bl, 0, sp, 0);
 			sc_timer_next((sce->val2 * 1000) + tick);
 			return 0;
 		}