summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/groups.conf1
-rw-r--r--conf/messages.conf3
-rw-r--r--doc/atcommands.txt6
-rw-r--r--doc/effect_list.md1126
-rw-r--r--doc/effect_list.txt986
-rw-r--r--doc/script_commands.txt27
-rw-r--r--src/common/HPMDataCheck.h2
-rw-r--r--src/map/achievement.c69
-rw-r--r--src/map/achievement.h4
-rw-r--r--src/map/atcommand.c19
-rw-r--r--src/map/clif.c135
-rw-r--r--src/map/clif.h5
-rw-r--r--src/map/messages_main.h44
-rw-r--r--src/map/messages_re.h6
-rw-r--r--src/map/packets.h18
-rw-r--r--src/map/packets_keys_main.h5
-rw-r--r--src/map/packets_keys_zero.h5
-rw-r--r--src/map/packets_shuffle_main.h5
-rw-r--r--src/map/packets_shuffle_re.h5
-rw-r--r--src/map/packets_shuffle_zero.h5
-rw-r--r--src/map/packets_struct.h49
-rw-r--r--src/map/pc.c32
-rw-r--r--src/map/pc.h2
-rw-r--r--src/map/script.c75
-rw-r--r--src/plugins/HPMHooking/HPMHooking.Defs.inc20
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc24
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc6
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.Hooks.inc175
28 files changed, 1763 insertions, 1096 deletions
diff --git a/conf/groups.conf b/conf/groups.conf
index 3f0c34ffb..16eca6e96 100644
--- a/conf/groups.conf
+++ b/conf/groups.conf
@@ -126,6 +126,7 @@ groups: (
go: true
breakguild: true
channel: true
+ camerainfo: true
}
permissions: {
}
diff --git a/conf/messages.conf b/conf/messages.conf
index f986e4649..9fc85cb55 100644
--- a/conf/messages.conf
+++ b/conf/messages.conf
@@ -448,7 +448,8 @@
// Return pet to egg message
451: You can't return your pet because your inventory is full.
-//452-497 FREE
+452: usage @camerainfo range rotation latitude
+//453-497 FREE
// Messages of others (not for GM commands)
// ----------------------------------------
diff --git a/doc/atcommands.txt b/doc/atcommands.txt
index fb3628e00..b455d9151 100644
--- a/doc/atcommands.txt
+++ b/doc/atcommands.txt
@@ -1498,3 +1498,9 @@ Reloads the 'conf/clans.conf' file.
Obs: it will reload 'db/clans.conf' too since it's included inside 'conf/clans.conf'
---------------------------------------
+
+@camerainfo {<range>, <rotation>, <latitude>}
+
+Allow show/hide or change client camera parameters
+
+---------------------------------------
diff --git a/doc/effect_list.md b/doc/effect_list.md
new file mode 100644
index 000000000..8ba8d36c9
--- /dev/null
+++ b/doc/effect_list.md
@@ -0,0 +1,1126 @@
+# Client Effects List
+A list of client-side effects sorted by ID in ascending order.
+
+# Copyright
+> This file is part of Hercules.
+> http://herc.ws - http://github.com/HerculesWS/Hercules
+>
+> Copyright (C) 2012-2018 Hercules Dev Team
+> Copyright (C) Athena Dev Teams
+>
+> Hercules is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+>
+> This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+> See the GNU General Public License for more details.
+>
+> You should have received a copy of the GNU General Public License along with this program.
+> If not, see <http://www.gnu.org/licenses/>.
+
+## Description
+The following is a compiled list of visual and sound effects which the client
+can produce. Each list entry contains a number and a short description of the
+effect. You can produce these effects ingame by using the `@effect` atcommand.
+It's also possible to attach effects to item/npc scripts by using the
+`specialeffect()` script command.
+
+ ID | Constant Name | Description
+ --: | :----------------------------- | :----------------------------------
+ -1 | EF_NONE | None
+ 0 | EF_HIT1 | Regular Hit
+ 1 | EF_HIT2 | Bash
+ 2 | EF_HIT3 | Melee Skill Hit
+ 3 | EF_HIT4 | Melee Skill Hit
+ 4 | EF_HIT5 | Melee Skill Hit
+ 5 | EF_HIT6 | Melee Skill Hit
+ 6 | EF_ENTRY | Being Warped
+ 7 | EF_EXIT | Item Heal effect
+ 8 | EF_WARP | Yellow Ripple Effect
+ 9 | EF_ENHANCE | Different Type of Heal
+ 10 | EF_COIN | Mammonite
+ 11 | EF_ENDURE | Endure
+ 12 | EF_BEGINSPELL | Yellow cast aura
+ 13 | EF_GLASSWALL | Blue Box
+ 14 | EF_HEALSP | Blue restoring effect
+ 15 | EF_SOULSTRIKE | Soul Strike
+ 16 | EF_BASH | Hide
+ 17 | EF_MAGNUMBREAK | Magnum Break
+ 18 | EF_STEAL | Steal
+ 19 | EF_HIDING | (Invalid)
+ 20 | EF_PATTACK | Envenom/Poison
+ 21 | EF_DETOXICATION | Detoxify
+ 22 | EF_SIGHT | Sight
+ 23 | EF_STONECURSE | Stone Curse
+ 24 | EF_FIREBALL | Fire Ball
+ 25 | EF_FIREWALL | Fire Wall
+ 26 | EF_ICEARROW | A sound (a swipe?)
+ 27 | EF_FROSTDIVER | Frost Diver (Traveling to Target)
+ 28 | EF_FROSTDIVER2 | Frost Diver (Hitting)
+ 29 | EF_LIGHTBOLT | Lightning Bolt
+ 30 | EF_THUNDERSTORM | Thunder Storm
+ 31 | EF_FIREARROW | Weird bubbles launching from feet
+ 32 | EF_NAPALMBEAT | Small clustered explosions
+ 33 | EF_RUWACH | Ruwach
+ 34 | EF_TELEPORTATION | Old Map Exit Animation (unused)
+ 35 | EF_READYPORTAL | Old Warp Portal (unused)
+ 36 | EF_PORTAL | Old Warp Portal (unused)
+ 37 | EF_INCAGILITY | AGI Up
+ 38 | EF_DECAGILITY | AGI Down
+ 39 | EF_AQUA | Aqua Benedicta
+ 40 | EF_SIGNUM | Signum Crucis
+ 41 | EF_ANGELUS | Angelus
+ 42 | EF_BLESSING | Blessing
+ 43 | EF_INCAGIDEX | Dex + Agi Up
+ 44 | EF_SMOKE | Little Fog Smoke.
+ 45 | EF_FIREFLY | Faint Little Ball Things.
+ 46 | EF_SANDWIND | Sand Wind
+ 47 | EF_TORCH | Torch
+ 48 | EF_SPRAYPOND | Small Piece of Glass
+ 49 | EF_FIREHIT | Firebolt/Wall Hits
+ 50 | EF_FIRESPLASHHIT | Spinning Fire Thing
+ 51 | EF_COLDHIT | Ice Elemental Hit
+ 52 | EF_WINDHIT | Wind Elemental Hit
+ 53 | EF_POISONHIT | Puff of Purpulish Smoke?
+ 54 | EF_BEGINSPELL2 | Cast Initiation Aura (Water Element)
+ 55 | EF_BEGINSPELL3 | Cast Initiation Aura (Fire Element)
+ 56 | EF_BEGINSPELL4 | Cast Initiation Aura (Wind Element)
+ 57 | EF_BEGINSPELL5 | Cast Initiation Aura (Earth Element)
+ 58 | EF_BEGINSPELL6 | Cast Initiation Aura (Holy Element)
+ 59 | EF_BEGINSPELL7 | Cast Initiation Aura (Poison Element)
+ 60 | EF_LOCKON | Cast target circle
+ 61 | EF_WARPZONE | Old Warp Portal (NPC Warp, unused)
+ 62 | EF_SIGHTRASHER | Sight Trasher
+ 63 | EF_BARRIER | Moonlight Sphere
+ 64 | EF_ARROWSHOT | Something Like Puruple/Yellow Light Bullet
+ 65 | EF_INVENOM | Something Like Absorb of Power
+ 66 | EF_CURE | Cure
+ 67 | EF_PROVOKE | Provoke
+ 68 | EF_MVP | MVP Banner
+ 69 | EF_SKIDTRAP | Skid Trap
+ 70 | EF_BRANDISHSPEAR | Brandish Spear
+ 71 | EF_CONE | Spiral White balls
+ 72 | EF_SPHERE | Bigger Spiral White balls
+ 73 | EF_BOWLINGBASH | Blue/White Small Aura
+ 74 | EF_ICEWALL | Ice Wall
+ 75 | EF_GLORIA | Gloria
+ 76 | EF_MAGNIFICAT | Magnificat
+ 77 | EF_RESURRECTION | Resurrection
+ 78 | EF_RECOVERY | Status Recovery
+ 79 | EF_EARTHSPIKE | Earth Spike
+ 80 | EF_SPEARBMR | Spear Boomerang
+ 81 | EF_PIERCE | Skill hit
+ 82 | EF_TURNUNDEAD | Turn Undead
+ 83 | EF_SANCTUARY | Sanctuary
+ 84 | EF_IMPOSITIO | Impositio Manus
+ 85 | EF_LEXAETERNA | Lex Aeterna
+ 86 | EF_ASPERSIO | Aspersio
+ 87 | EF_LEXDIVINA | Lex Divina
+ 88 | EF_SUFFRAGIUM | Suffragium
+ 89 | EF_STORMGUST | Storm Gust
+ 90 | EF_LORD | Lord of Vermilion
+ 91 | EF_BENEDICTIO | B. S. Sacramenti
+ 92 | EF_METEORSTORM | Meteor Storm
+ 93 | EF_YUFITEL | Jupitel Thunder (Ball)
+ 94 | EF_YUFITELHIT | Jupitel Thunder (Hit)
+ 95 | EF_QUAGMIRE | Quagmire
+ 96 | EF_FIREPILLAR | Fire Pillar
+ 97 | EF_FIREPILLARBOMB | Fire Pillar/Land Mine hit
+ 98 | EF_HASTEUP | Adrenaline Rush
+ 99 | EF_FLASHER | Flasher Trap
+ 100 | EF_REMOVETRAP | Yellow ball fountain
+ 101 | EF_REPAIRWEAPON | Weapon Repair
+ 102 | EF_CRASHEARTH | Hammerfall
+ 103 | EF_PERFECTION | Weapon Perfection
+ 104 | EF_MAXPOWER | Maximize Power
+ 105 | EF_BLASTMINE | (nothing)
+ 106 | EF_BLASTMINEBOMB | Blast Mine Trap
+ 107 | EF_CLAYMORE | Claymore Trap
+ 108 | EF_FREEZING | Freezing Trap
+ 109 | EF_BUBBLE | Bailaban Blue bubble Map Effect
+ 110 | EF_GASPUSH | Trap Used by Giearth
+ 111 | EF_SPRINGTRAP | Spring Trap
+ 112 | EF_KYRIE | Kyrie Eleison
+ 113 | EF_MAGNUS | Magnus Exorcismus
+ 114 | EF_BOTTOM | Old Magnus Exorcismus Map Unit (unused)
+ 115 | EF_BLITZBEAT | Blitz Beat
+ 116 | EF_WATERBALL | Fling Watersphere
+ 117 | EF_WATERBALL2 | Waterball
+ 118 | EF_FIREIVY | Fling Firesphere
+ 119 | EF_DETECTING | Detect
+ 120 | EF_CLOAKING | Cloaking
+ 121 | EF_SONICBLOW | Sonic Blow (Part 1/2)
+ 122 | EF_SONICBLOWHIT | Multi hit effect
+ 123 | EF_GRIMTOOTH | Grimtooth Cast
+ 124 | EF_VENOMDUST | Venom Dust
+ 125 | EF_ENCHANTPOISON | Enchant Poison
+ 126 | EF_POISONREACT | Poison React
+ 127 | EF_POISONREACT2 | Small Posion React
+ 128 | EF_OVERTHRUST | Over Thrust
+ 129 | EF_SPLASHER | Venom Splasher Explosion
+ 130 | EF_TWOHANDQUICKEN | Two-Hand Quicken
+ 131 | EF_AUTOCOUNTER | Auto-Counter Hit
+ 132 | EF_GRIMTOOTHATK | Grimtooth Hit
+ 133 | EF_FREEZE | Ice Effect (Used by NPCs)
+ 134 | EF_FREEZED | Ice Effect (Used by NPCs)
+ 135 | EF_ICECRASH | Ice Effect (Used by NPCs)
+ 136 | EF_SLOWPOISON | Slow Poison
+ 137 | EF_BOTTOM2 | Old Sanctuary Map Unit (unused)
+ 138 | EF_FIREPILLARON | Fire pillar
+ 139 | EF_SANDMAN | Sandman Trap
+ 140 | EF_REVIVE | Ressurection Aura
+ 141 | EF_PNEUMA | Pneuma
+ 142 | EF_HEAVENSDRIVE | Heaven's Drive
+ 143 | EF_SONICBLOW2 | Sonic Blow (Part 2/2)
+ 144 | EF_BRANDISH2 | Brandish Spear Pre-Hit Effect
+ 145 | EF_SHOCKWAVE | Shockwave Trap
+ 146 | EF_SHOCKWAVEHIT | Shockwave Trap Hit
+ 147 | EF_EARTHHIT | Pierce Hit
+ 148 | EF_PIERCESELF | Pierce Cast Animation
+ 149 | EF_BOWLINGSELF | Bowling Bash
+ 150 | EF_SPEARSTABSELF | Pierce Cast Animation
+ 151 | EF_SPEARBMRSELF | Spear Boomerang Cast
+ 152 | EF_HOLYHIT | Turn Undead
+ 153 | EF_CONCENTRATION | Increase Concentration
+ 154 | EF_REFINEOK | Refine Success
+ 155 | EF_REFINEFAIL | Refine Fail
+ 156 | EF_JOBCHANGE | jobchange.str not found error
+ 157 | EF_LVUP | levelup.str not found error
+ 158 | EF_JOBLVUP | Job Level Up
+ 159 | EF_TOPRANK | PvP circle
+ 160 | EF_PARTY | PvP Party Circle
+ 161 | EF_RAIN | (Nothing)
+ 162 | EF_SNOW | Snow
+ 163 | EF_SAKURA | White Sakura Leaves
+ 164 | EF_STATUS_STATE | (Nothing)
+ 165 | EF_BANJJAKII | Comodo Fireworks Ball
+ 166 | EF_MAKEBLUR | Energy Coat (Visual Effect)
+ 167 | EF_TAMINGSUCCESS | (Nothing)
+ 168 | EF_TAMINGFAILED | (Nothing)
+ 169 | EF_ENERGYCOAT | Energy Coat Animation
+ 170 | EF_CARTREVOLUTION | Cart Revolution
+ 171 | EF_VENOMDUST2 | Venom Dust Map Unit
+ 172 | EF_CHANGEDARK | Change Element (Dark)
+ 173 | EF_CHANGEFIRE | Change Element (Fire)
+ 174 | EF_CHANGECOLD | Change Element (Water)
+ 175 | EF_CHANGEWIND | Change Element (Wind)
+ 176 | EF_CHANGEFLAME | Change Element (Fire)
+ 177 | EF_CHANGEEARTH | Change Element (Earth)
+ 178 | EF_CHAINGEHOLY | Change Element (Holy)
+ 179 | EF_CHANGEPOISON | Change Element (Poison)
+ 180 | EF_HITDARK | Darkness Attack
+ 181 | EF_MENTALBREAK | Mental Breaker
+ 182 | EF_MAGICALATTHIT | Magical Hit
+ 183 | EF_SUI_EXPLOSION | Self Destruction
+ 184 | EF_DARKATTACK | (Nothing)
+ 185 | EF_SUICIDE | (Nothing)
+ 186 | EF_COMBOATTACK1 | Combo Attack 1
+ 187 | EF_COMBOATTACK2 | Combo Attack 2
+ 188 | EF_COMBOATTACK3 | Combo Attack 3
+ 189 | EF_COMBOATTACK4 | Combo Attack 4
+ 190 | EF_COMBOATTACK5 | Combo Attack 5
+ 191 | EF_GUIDEDATTACK | Guided Attack
+ 192 | EF_POISONATTACK | Poison Attack
+ 193 | EF_SILENCEATTACK | Silence Attack
+ 194 | EF_STUNATTACK | Stun Attack
+ 195 | EF_PETRIFYATTACK | Petrify Attack
+ 196 | EF_CURSEATTACK | Curse Attack
+ 197 | EF_SLEEPATTACK | Sleep Attack
+ 198 | EF_TELEKHIT | (Nothing)
+ 199 | EF_PONG | Small Popping Bubble Map Effect
+ 200 | EF_LEVEL99 | Normal level 99 Aura (Middle)
+ 201 | EF_LEVEL99_2 | Normal level 99 Aura (Bottom)
+ 202 | EF_LEVEL99_3 | Lv 99 Aura Bubble
+ 203 | EF_GUMGANG | Fury (Visual Effect)
+ 204 | EF_POTION1 | Red Herb/Potion
+ 205 | EF_POTION2 | Orange Potion
+ 206 | EF_POTION3 | Yellow Herb/Potion
+ 207 | EF_POTION4 | White Herb/Potion
+ 208 | EF_POTION5 | Blue Herb/Potion
+ 209 | EF_POTION6 | Green Herb/Potion
+ 210 | EF_POTION7 | Yellow Circle Healing Effect
+ 211 | EF_POTION8 | Blue Circle Healing Effect
+ 212 | EF_DARKBREATH | Dark Breath
+ 213 | EF_DEFFENDER | Defender
+ 214 | EF_KEEPING | Keeping
+ 215 | EF_SUMMONSLAVE | Summon Slave
+ 216 | EF_BLOODDRAIN | Blood Drain
+ 217 | EF_ENERGYDRAIN | Energy Drain
+ 218 | EF_POTION_CON | Concentration Potion
+ 219 | EF_POTION_ | Awakening Potion
+ 220 | EF_POTION_BERSERK | Berserk Potion
+ 221 | EF_POTIONPILLAR | Intense light beam
+ 222 | EF_DEFENDER | Defender (Crusader)
+ 223 | EF_GANBANTEIN | Holy Cast Aura
+ 224 | EF_WIND | Wind (Map effect)
+ 225 | EF_VOLCANO | Volcano casting effect
+ 226 | EF_GRANDCROSS | Grand Cross Effect
+ 227 | EF_INTIMIDATE | Snatch
+ 228 | EF_CHOOKGI | (Nothing)
+ 229 | EF_CLOUD | (Nothing)
+ 230 | EF_CLOUD2 | (Nothing)
+ 231 | EF_MAPPILLAR | Map Light Pillar Animation 1
+ 232 | EF_LINELINK | Sacrifice (Visual Effect)
+ 233 | EF_CLOUD3 | Fog
+ 234 | EF_SPELLBREAKER | Spell Breaker
+ 235 | EF_DISPELL | Dispell
+ 236 | EF_DELUGE | Deluge Cast Aura
+ 237 | EF_VIOLENTGALE | Violent Gale Cast Aura
+ 238 | EF_LANDPROTECTOR | Magnetic Earth Cast Aura
+ 239 | EF_BOTTOM_VO | Volcano (Visual Effect)
+ 240 | EF_BOTTOM_DE | Deluge (Visual Effect)
+ 241 | EF_BOTTOM_VI | Violent Gale (Visual Effect)
+ 242 | EF_BOTTOM_LA | Magnetic Earth (Visual Effect)
+ 243 | EF_FASTMOVE | (Invalid)
+ 244 | EF_MAGICROD | Magic Rod
+ 245 | EF_HOLYCROSS | Holy Cross
+ 246 | EF_SHIELDCHARGE | Shield Charge
+ 247 | EF_MAPPILLAR2 | Map Light Pillar Animation 2
+ 248 | EF_PROVIDENCE | Resistant Souls
+ 249 | EF_SHIELDBOOMERANG | Shield Boomerang
+ 250 | EF_SPEARQUICKEN | Spear Quicken
+ 251 | EF_DEVOTION | Devotion
+ 252 | EF_REFLECTSHIELD | Reflect Shield
+ 253 | EF_ABSORBSPIRITS | Absorb Spirit Spheres
+ 254 | EF_STEELBODY | Mental Strength (Visual Effect)
+ 255 | EF_FLAMELAUNCHER | Elemental Endow (Fire)
+ 256 | EF_FROSTWEAPON | Elemental Endow (Water)
+ 257 | EF_LIGHTNINGLOADER | Elemental Endow (Wind)
+ 258 | EF_SEISMICWEAPON | Elemental Endow (Earth)
+ 259 | EF_MAPPILLAR3 | Map Light Pillar Animation 3
+ 260 | EF_MAPPILLAR4 | Map Light Pillar Animation 4
+ 261 | EF_GUMGANG2 | Fury Cast Animation
+ 262 | EF_TEIHIT1 | Raging Quadruple Blow
+ 263 | EF_GUMGANG3 | Raging Quadruple Blow 2
+ 264 | EF_TEIHIT2 | (Nothing)
+ 265 | EF_TANJI | Throw Spirit Sphere
+ 266 | EF_TEIHIT1X | Raging Quadruple Blow 3
+ 267 | EF_CHIMTO | Occult Impaction
+ 268 | EF_STEALCOIN | Steal Coin
+ 269 | EF_STRIPWEAPON | Divest Weapon
+ 270 | EF_STRIPSHIELD | Divest Shield
+ 271 | EF_STRIPARMOR | Divest Armor
+ 272 | EF_STRIPHELM | Divest Helm
+ 273 | EF_CHAINCOMBO | Raging Quadruple Blow 4
+ 274 | EF_RG_COIN | Steal Coin Animation
+ 275 | EF_BACKSTAP | Back Stab Animation
+ 276 | EF_TEIHIT3 | Raging Thrust
+ 277 | EF_BOTTOM_DISSONANCE | Dissoance Map Unit
+ 278 | EF_BOTTOM_LULLABY | Lullaby Map Unit
+ 279 | EF_BOTTOM_RICHMANKIM | Mr Kim a Rich Man Map Unit
+ 280 | EF_BOTTOM_ETERNALCHAOS | Eternal Chaos Map Unit
+ 281 | EF_BOTTOM_DRUMBATTLEFIELD | A Drum on the Battlefield Map Unit
+ 282 | EF_BOTTOM_RINGNIBELUNGEN | The Ring Of Nibelungen Map Unit
+ 283 | EF_BOTTOM_ROKISWEIL | Loki's Veil Map Unit
+ 284 | EF_BOTTOM_INTOABYSS | Into the Abyss Map Unit
+ 285 | EF_BOTTOM_SIEGFRIED | Invunerable Siegfriend Map Unit
+ 286 | EF_BOTTOM_WHISTLE | A Wistle Map Unit
+ 287 | EF_BOTTOM_ASSASSINCROSS | Assassin Cross of Sunset Map Unit
+ 288 | EF_BOTTOM_POEMBRAGI | A Poem of Bragi Map Unit
+ 289 | EF_BOTTOM_APPLEIDUN | The Apple Of Idun Map Unit
+ 290 | EF_BOTTOM_UGLYDANCE | Ugly Dance Map Unit
+ 291 | EF_BOTTOM_HUMMING | Humming Map Unit
+ 292 | EF_BOTTOM_DONTFORGETME | Please don't Forget Me Map Unit
+ 293 | EF_BOTTOM_FORTUNEKISS | Fortune's Kiss Map Unit
+ 294 | EF_BOTTOM_SERVICEFORYOU | Service For You Map Unit
+ 295 | EF_TALK_FROSTJOKE | Frost Joke
+ 296 | EF_TALK_SCREAM | Scream
+ 297 | EF_POKJUK | Fire Works (Visual Effect)
+ 298 | EF_THROWITEM | Acid Terror Animnation
+ 299 | EF_THROWITEM2 | (Nothing)
+ 300 | EF_CHEMICALPROTECTION | Chemical Protection
+ 301 | EF_POKJUK_SOUND | Fire Works (Sound Effect)
+ 302 | EF_DEMONSTRATION | Bomb
+ 303 | EF_CHEMICAL2 | (Unused)
+ 304 | EF_TELEPORTATION2 | Teleportation Animation
+ 305 | EF_PHARMACY_OK | Pharmacy Success
+ 306 | EF_PHARMACY_FAIL | Pharmacy Failed
+ 307 | EF_FORESTLIGHT | Forest Light 1
+ 308 | EF_THROWITEM3 | Throw Stone
+ 309 | EF_FIRSTAID | First Aid
+ 310 | EF_SPRINKLESAND | Sprinkle Sand
+ 311 | EF_LOUD | Crazy Uproar
+ 312 | EF_HEAL | Heal Effect
+ 313 | EF_HEAL2 | Heal Effect 2
+ 314 | EF_EXIT2 | Old Map Exit effect (Unused)
+ 315 | EF_GLASSWALL2 | Safety Wall
+ 316 | EF_READYPORTAL2 | Warp Portal Animation 1
+ 317 | EF_PORTAL2 | Warp Portal Animation 2
+ 318 | EF_BOTTOM_MAG | Magnus Exorcisimus Map Unit
+ 319 | EF_BOTTOM_SANC | Sanctuary Map Unit
+ 320 | EF_HEAL3 | Offensive Heal
+ 321 | EF_WARPZONE2 | Warp NPC
+ 322 | EF_FORESTLIGHT2 | Forest Light 2
+ 323 | EF_FORESTLIGHT3 | Forest Light 3
+ 324 | EF_FORESTLIGHT4 | Forest Light 4
+ 325 | EF_HEAL4 | Heal Effect 4
+ 326 | EF_FOOT | Chase Walk Left Foot
+ 327 | EF_FOOT2 | Chse Walk Right Foot
+ 328 | EF_BEGINASURA | Monk Asura Strike
+ 329 | EF_TRIPLEATTACK | Triple Strike
+ 330 | EF_HITLINE | Combo Finish
+ 331 | EF_HPTIME | Natural HP Regeneration
+ 332 | EF_SPTIME | Natural SP Regeneration
+ 333 | EF_MAPLE | Autumn Leaves
+ 334 | EF_BLIND | Blind
+ 335 | EF_POISON | Poison
+ 336 | EF_GUARD | Kyrie Eleison/Parrying Shield
+ 337 | EF_JOBLVUP50 | Class Change
+ 338 | EF_ANGEL2 | Super Novice/Taekwon Level Up Angel
+ 339 | EF_MAGNUM2 | Spiral Pierce
+ 340 | EF_CALLZONE | (Nothing)
+ 341 | EF_PORTAL3 | Wedding Warp Portal
+ 342 | EF_COUPLECASTING | Wedding Skill
+ 343 | EF_HEARTCASTING | Another Merry Skill
+ 344 | EF_ENTRY2 | Character map entry effect
+ 345 | EF_SAINTWING | Wings (Animated)
+ 346 | EF_SPHEREWIND | Like Moonlight But Blue
+ 347 | EF_COLORPAPER | Wedding Ceremony
+ 348 | EF_LIGHTSPHERE | Like 1000 Blade trepassing
+ 349 | EF_WATERFALL | Waterfall (Horizonatal)
+ 350 | EF_WATERFALL_90 | Waterfall (Vertical)
+ 351 | EF_WATERFALL_SMALL | Small Waterfall (Horizonatal)
+ 352 | EF_WATERFALL_SMALL_90 | Small Waterfall (Vertical)
+ 353 | EF_WATERFALL_T2 | Dark Waterfall (Horizonatal)
+ 354 | EF_WATERFALL_T2_90 | Dark Waterfall (Vertical)
+ 355 | EF_WATERFALL_SMALL_T2 | Dark Small Waterfall (Horizonatal)
+ 356 | EF_WATERFALL_SMALL_T2_90 | Dark Small Waterfall (Vertical)
+ 357 | EF_MINI_TETRIS | (Nothing)
+ 358 | EF_GHOST | Niflheim Ghost
+ 359 | EF_BAT | Niflheim Bat Slow
+ 360 | EF_BAT2 | Niflheim Bat Fast
+ 361 | EF_SOULBREAKER | Soul Destroyer
+ 362 | EF_LEVEL99_4 | Trancendant Level 99 Aura 1
+ 363 | EF_VALLENTINE | Valentine Day Heart With Wings
+ 364 | EF_VALLENTINE2 | Valentine Day Heart
+ 365 | EF_PRESSURE | Gloria Domini
+ 366 | EF_BASH3D | Martyr's Reckoning
+ 367 | EF_AURABLADE | Aura Blade
+ 368 | EF_REDBODY | Berserk
+ 369 | EF_LKCONCENTRATION | Concentration
+ 370 | EF_BOTTOM_GOSPEL | Gospel Map Unit
+ 371 | EF_ANGEL | Level Up
+ 372 | EF_DEVIL | Death
+ 373 | EF_DRAGONSMOKE | House Smoke
+ 374 | EF_BOTTOM_BASILICA | Basilica
+ 375 | EF_ASSUMPTIO | Assumptio (Visual Effect)
+ 376 | EF_HITLINE2 | Palm Strike
+ 377 | EF_BASH3D2 | Matyr's Reckoning 2
+ 378 | EF_ENERGYDRAIN2 | Soul Drain (1st Part)
+ 379 | EF_TRANSBLUEBODY | Soul Drain (2nd Part)
+ 380 | EF_MAGICCRASHER | Magic Crasher
+ 381 | EF_LIGHTSPHERE2 | Blue Starburst (Unknown use)
+ 382 | EF_LIGHTBLADE | (Nothing)
+ 383 | EF_ENERGYDRAIN3 | Health Conversion
+ 384 | EF_LINELINK2 | Soul Change (Sound Effect)
+ 385 | EF_LINKLIGHT | Soul Change (Visual Effect)
+ 386 | EF_TRUESIGHT | True Sight
+ 387 | EF_FALCONASSAULT | Falcon Assault
+ 388 | EF_TRIPLEATTACK2 | Focused Arrow Strike (Sound Effect)
+ 389 | EF_PORTAL4 | Wind Walk
+ 390 | EF_MELTDOWN | Shattering Strike
+ 391 | EF_CARTBOOST | Cart Boost
+ 392 | EF_REJECTSWORD | Reject Sword
+ 393 | EF_TRIPLEATTACK3 | Arrow Vulcan
+ 394 | EF_SPHEREWIND2 | Sheltering Bliss
+ 395 | EF_LINELINK3 | Marionette Control (Sound Effect)
+ 396 | EF_PINKBODY | Marionette Control (Visual Effect)
+ 397 | EF_LEVEL99_5 | Trancended 99 Aura (Middle)
+ 398 | EF_LEVEL99_6 | Trancended 99 Aura (Bottom)
+ 399 | EF_BASH3D3 | Head Crush
+ 400 | EF_BASH3D4 | Joint Beat
+ 401 | EF_NAPALMVALCAN | Napalm Vulcan Sound
+ 402 | EF_PORTAL5 | Dangerous Soul Collect
+ 403 | EF_MAGICCRASHER2 | Mind Breaker
+ 404 | EF_BOTTOM_SPIDER | Fiber Lock
+ 405 | EF_BOTTOM_FOGWALL | Wall Of Fog
+ 406 | EF_SOULBURN | Soul Burn
+ 407 | EF_SOULCHANGE | Soul Change
+ 408 | EF_BABY | Mom, Dad, I love you! (Baby Skill)
+ 409 | EF_SOULBREAKER2 | Meteor Assault
+ 410 | EF_RAINBOW | Rainbow
+ 411 | EF_PEONG | Leap
+ 412 | EF_TANJI2 | Like Throw Spirit Sphere
+ 413 | EF_PRESSEDBODY | Axe Kick
+ 414 | EF_SPINEDBODY | Round Kick
+ 415 | EF_KICKEDBODY | Counter Kick
+ 416 | EF_AIRTEXTURE | (Nothing)
+ 417 | EF_HITBODY | Flash
+ 418 | EF_DOUBLEGUMGANG | Warmth Lightning
+ 419 | EF_REFLECTBODY | Kaite (Visual Effect)
+ 420 | EF_BABYBODY | Eswoo (Small) (Visual Effect)
+ 421 | EF_BABYBODY2 | Eswoo (Alt. Small) (Visual Effect)
+ 422 | EF_GIANTBODY | Eswoo (Normal) (Visual Effect)
+ 423 | EF_GIANTBODY2 | Eswoo (Alt. Normal) (Visual Effect)
+ 424 | EF_ASURABODY | Spirit Link (Visual Effect)
+ 425 | EF_4WAYBODY | Esma Hit (Visual Effect)
+ 426 | EF_QUAKEBODY | Sprint Collision (Visual Effect)
+ 427 | EF_ASURABODY_MONSTER | (Nothing)
+ 428 | EF_HITLINE3 | (Nothing)
+ 429 | EF_HITLINE4 | Taekwon Kick Hit 1
+ 430 | EF_HITLINE5 | Taekwon Kick Hit 2
+ 431 | EF_HITLINE6 | Taekwon Kick Hit 3
+ 432 | EF_ELECTRIC | Solar, Lunar and Stellar Perception (Visual Effect)
+ 433 | EF_ELECTRIC2 | Solar, Lunar and Stellar Opposition (Visual Effect)
+ 434 | EF_HITLINE7 | Taekwon Kick Hit 4
+ 435 | EF_STORMKICK | Whirlwind Kick
+ 436 | EF_HALFSPHERE | White Barrier (Unused)
+ 437 | EF_ATTACKENERGY | White barrier 2 (Unused)
+ 438 | EF_ATTACKENERGY2 | Kaite Reflect Animation
+ 439 | EF_CHEMICAL3 | Flying Side Kick
+ 440 | EF_ASSUMPTIO2 | Assumptio (Animation)
+ 441 | EF_BLUECASTING | Comfort Skills Cast Aura
+ 442 | EF_RUN | Foot Prints caused by Sprint.
+ 443 | EF_STOPRUN | (Nothing)
+ 444 | EF_STOPEFFECT | Sprint Stop Animation
+ 445 | EF_JUMPBODY | High Jump (Jump)
+ 446 | EF_LANDBODY | High Jump (Return Down)
+ 447 | EF_FOOT3 | Running Left Foot
+ 448 | EF_FOOT4 | Running Right Foot
+ 449 | EF_TAE_READY | KA-Spell (1st Part)
+ 450 | EF_GRANDCROSS2 | Darkcross
+ 451 | EF_SOULSTRIKE2 | Dark Strike
+ 452 | EF_YUFITEL2 | Something Like Jupitel Thunder
+ 453 | EF_NPC_STOP | Paralized
+ 454 | EF_DARKCASTING | Like Blind
+ 455 | EF_GUMGANGNPC | Another Warmth Lightning
+ 456 | EF_AGIUP | Power Up
+ 457 | EF_JUMPKICK | Flying Side Kick (2nd Part)
+ 458 | EF_QUAKEBODY2 | Running/Sprint (running into a wall)
+ 459 | EF_STORMKICK1 | Brown tornado that spins sprite (unused)
+ 460 | EF_STORMKICK2 | Green tornado (unused)
+ 461 | EF_STORMKICK3 | Blue tornado (unused)
+ 462 | EF_STORMKICK4 | Kaupe Dodge Effect
+ 463 | EF_STORMKICK5 | Kaupe Dodge Effect
+ 464 | EF_STORMKICK6 | White tornado (unused)
+ 465 | EF_STORMKICK7 | Purple tornado (unused)
+ 466 | EF_SPINEDBODY2 | Another Round Kick
+ 467 | EF_BEGINASURA1 | Warm/Mild Wind (Earth)
+ 468 | EF_BEGINASURA2 | Warm/Mild Wind (Wind)
+ 469 | EF_BEGINASURA3 | Warm/Mild Wind (Water)
+ 470 | EF_BEGINASURA4 | Warm/Mild Wind (Fire)
+ 471 | EF_BEGINASURA5 | Warm/Mild Wind (Undead)
+ 472 | EF_BEGINASURA6 | Warm/Mild Wind (Shadow)
+ 473 | EF_BEGINASURA7 | Warm/Mild Wind (Holy)
+ 474 | EF_AURABLADE2 | (Nothing)
+ 475 | EF_DEVIL1 | Demon of The Sun Moon And Stars (Level 1)
+ 476 | EF_DEVIL2 | Demon of The Sun Moon And Stars (Level 2)
+ 477 | EF_DEVIL3 | Demon of The Sun Moon And Stars (Level 3)
+ 478 | EF_DEVIL4 | Demon of The Sun Moon And Stars (Level 4)
+ 479 | EF_DEVIL5 | Demon of The Sun Moon And Stars (Level 5)
+ 480 | EF_DEVIL6 | Demon of The Sun Moon And Stars (Level 6)
+ 481 | EF_DEVIL7 | Demon of The Sun Moon And Stars (Level 7)
+ 482 | EF_DEVIL8 | Demon of The Sun Moon And Stars (Level 8)
+ 483 | EF_DEVIL9 | Demon of The Sun Moon And Stars (Level 9)
+ 484 | EF_DEVIL10 | Demon of The Sun Moon And Stars (Level 10)
+ 485 | EF_DOUBLEGUMGANG2 | Mental Strength Lightning but White
+ 486 | EF_DOUBLEGUMGANG3 | Mental Strength Lightning
+ 487 | EF_BLACKDEVIL | Demon of The Sun Moon And Stars Ground Effect
+ 488 | EF_FLOWERCAST | Comfort Skills
+ 489 | EF_FLOWERCAST2 | (Nothing)
+ 490 | EF_FLOWERCAST3 | (Nothing)
+ 491 | EF_MOCHI | Element Potions
+ 492 | EF_LAMADAN | Cooking Foods
+ 493 | EF_EDP | Enchant Deadly Poison
+ 494 | EF_SHIELDBOOMERANG2 | Throwing Tomahawk
+ 495 | EF_RG_COIN2 | Full Strip Sound
+ 496 | EF_GUARD2 | Preserve
+ 497 | EF_SLIM | Twilight Alchemy 1
+ 498 | EF_SLIM2 | Twilight Alchemy 2
+ 499 | EF_SLIM3 | Twilight Alchemy 3
+ 500 | EF_CHEMICALBODY | Player Become Blue with Blue Aura
+ 501 | EF_CASTSPIN | Chase Walk Animation
+ 502 | EF_PIERCEBODY | Player Become Yellow with Yellow Aura
+ 503 | EF_SOULLINK | Soul Link Word
+ 504 | EF_CHOOKGI2 | (Nothing)
+ 505 | EF_MEMORIZE | Memorize
+ 506 | EF_SOULLIGHT | (Nothing)
+ 507 | EF_MAPAE | Authoritative Badge
+ 508 | EF_ITEMPOKJUK | Fire Cracker
+ 509 | EF_05VAL | Valentine Day Hearth (Wings)
+ 510 | EF_BEGINASURA11 | Champion Asura Strike
+ 511 | EF_NIGHT | (Nothing)
+ 512 | EF_CHEMICAL2DASH | Chain Crush Combo
+ 513 | EF_GROUNDSAMPLE | Area Cast
+ 514 | EF_GI_EXPLOSION | Really Big Circle
+ 515 | EF_CLOUD4 | Einbroch Fog
+ 516 | EF_CLOUD5 | Airship Cloud
+ 517 | EF_BOTTOM_HERMODE | (Nothing)
+ 518 | EF_CARTTER | Cart Termination
+ 519 | EF_ITEMFAST | Speed Down Potion
+ 520 | EF_SHIELDBOOMERANG3 | Shield Bumerang
+ 521 | EF_DOUBLECASTBODY | Player Become Red with Red Aura
+ 522 | EF_GRAVITATION | Gravitation Field
+ 523 | EF_TAROTCARD1 | Tarot Card of Fate (The Fool)
+ 524 | EF_TAROTCARD2 | Tarot Card of Fate (The Magician)
+ 525 | EF_TAROTCARD3 | Tarot Card of Fate (The High Priestess)
+ 526 | EF_TAROTCARD4 | Tarot Card of Fate (The Chariot)
+ 527 | EF_TAROTCARD5 | Tarot Card of Fate (Strength)
+ 528 | EF_TAROTCARD6 | Tarot Card of Fate (The Lovers)
+ 529 | EF_TAROTCARD7 | Tarot Card of Fate (The Wheel of Fortune)
+ 530 | EF_TAROTCARD8 | Tarot Card of Fate (The Hanged Man)
+ 531 | EF_TAROTCARD9 | Tarot Card of Fate (Death)
+ 532 | EF_TAROTCARD10 | Tarot Card of Fate (Temperance)
+ 533 | EF_TAROTCARD11 | Tarot Card of Fate (The Devil)
+ 534 | EF_TAROTCARD12 | Tarot Card of Fate (The Tower)
+ 535 | EF_TAROTCARD13 | Tarot Card of Fate (The Star)
+ 536 | EF_TAROTCARD14 | Tarot Card of Fate (The Sun)
+ 537 | EF_ACIDDEMON | Acid Demonstration
+ 538 | EF_GREENBODY | Player Become Green with Green Aura
+ 539 | EF_THROWITEM4 | Throw Random Bottle
+ 540 | EF_BABYBODY_BACK | Instant Small->Normal
+ 541 | EF_THROWITEM5 | (Nothing)
+ 542 | EF_BLUEBODY | KA-Spell (1st Part)
+ 543 | EF_HATED | Kahii
+ 544 | EF_REDLIGHTBODY | Warmth Red Sprite
+ 545 | EF_RO2YEAR | Sound And... PUFF Client Crash :P
+ 546 | EF_SMA_READY | Kaupe
+ 547 | EF_STIN | Estin
+ 548 | EF_RED_HIT | Instant Red Sprite
+ 549 | EF_BLUE_HIT | Instant Blue Sprite
+ 550 | EF_QUAKEBODY3 | Another Effect like Running Hit
+ 551 | EF_SMA | Effect Like Estun but with Circle
+ 552 | EF_SMA2 | (Nothing)
+ 553 | EF_STIN2 | Esma
+ 554 | EF_HITTEXTURE | Large White Cloud
+ 555 | EF_STIN3 | Estun
+ 556 | EF_SMA3 | (Nothing)
+ 557 | EF_BLUEFALL | Juperos Energy Waterfall (Horizontal)
+ 558 | EF_BLUEFALL_90 | Juperos Energy Waterfall (Vertical)
+ 559 | EF_FASTBLUEFALL | Juperos Energy Waterfall Fast (Horizontal)
+ 560 | EF_FASTBLUEFALL_90 | Juperos Energy Waterfall Fast (Vertical)
+ 561 | EF_BIG_PORTAL | Juperos Warp
+ 562 | EF_BIG_PORTAL2 | Juperos Warp
+ 563 | EF_SCREEN_QUAKE | Earthquake Effect (Juperos Elevator)
+ 564 | EF_HOMUNCASTING | Wedding Cast
+ 565 | EF_HFLIMOON1 | Filir Moonlight Lvl 1
+ 566 | EF_HFLIMOON2 | Filir Moonlight Lvl 2
+ 567 | EF_HFLIMOON3 | Filir Moonlight Lvl 3
+ 568 | EF_HO_UP | Another Job Level Up
+ 569 | EF_HAMIDEFENCE | Amistr Bulwark
+ 570 | EF_HAMICASTLE | Amistr Castling
+ 571 | EF_HAMIBLOOD | Amistr Bloodlust
+ 572 | EF_HATED2 | Warmth Soul
+ 573 | EF_TWILIGHT1 | Twilight Alchemy 1
+ 574 | EF_TWILIGHT2 | Twilight Alchemy 2
+ 575 | EF_TWILIGHT3 | Twilight Alchemy 3
+ 576 | EF_ITEM_THUNDER | Box Effect (Thunder)
+ 577 | EF_ITEM_CLOUD | Box Effect (Cloud)
+ 578 | EF_ITEM_CURSE | Box Effect (Curse)
+ 579 | EF_ITEM_ZZZ | Box Effect (Sleep)
+ 580 | EF_ITEM_RAIN | Box Effect (Rain)
+ 581 | EF_ITEM_LIGHT | Box Effect (Sunlight)
+ 582 | EF_ANGEL3 | Another Super Novice/Taekwon Angel
+ 583 | EF_M01 | Warmth Hit
+ 584 | EF_M02 | Full Buster
+ 585 | EF_M03 | 5 Medium Size Explosion
+ 586 | EF_M04 | Somatology Lab Mobs Aura
+ 587 | EF_M05 | Big Purple Flame
+ 588 | EF_M06 | Little Red Flame
+ 589 | EF_M07 | Eswoo
+ 590 | EF_KAIZEL | Running Stop
+ 591 | EF_KAAHI | (Nothing)
+ 592 | EF_CLOUD6 | Thanatos Tower Bloody Clouds
+ 593 | EF_FOOD01 | Food Effect (STR)
+ 594 | EF_FOOD02 | Food Effect (INT)
+ 595 | EF_FOOD03 | Food Effect (VIT)
+ 596 | EF_FOOD04 | Food Effect (AGI)
+ 597 | EF_FOOD05 | Food Effect (DEX)
+ 598 | EF_FOOD06 | Food Effect (LUK)
+ 599 | EF_SHRINK | Cast Time Sound and Flashing Animation on Player
+ 600 | EF_THROWITEM6 | Throw Venom Knife
+ 601 | EF_SIGHT2 | Sight Blaster
+ 602 | EF_QUAKEBODY4 | Close Confine (Grab Effect)
+ 603 | EF_FIREHIT2 | Spinning fire ball (like 50, but smaller)
+ 604 | EF_NPC_STOP2 | Close Confine (Ground Effect)
+ 605 | EF_NPC_STOP2_DEL | (Nothing)
+ 606 | EF_FVOICE | Pang Voice (Visual Effect)
+ 607 | EF_WINK | Wink of Charm (Visual Effect)
+ 608 | EF_COOKING_OK | Cooking Success
+ 609 | EF_COOKING_FAIL | Cooking Failed
+ 610 | EF_TEMP_OK | Success
+ 611 | EF_TEMP_FAIL | Failed
+ 612 | EF_HAPGYEOK | Korean Words and /no1 Emoticon
+ 613 | EF_THROWITEM7 | Throw Shuriken
+ 614 | EF_THROWITEM8 | Throw Kunai
+ 615 | EF_THROWITEM9 | Throw Fumma Shuriken
+ 616 | EF_THROWITEM10 | Throw Money
+ 617 | EF_BUNSINJYUTSU | Illusionary Shadow
+ 618 | EF_KOUENKA | Crimson Fire Bolossom
+ 619 | EF_HYOUSENSOU | Lightning Spear Of Ice
+ 620 | EF_BOTTOM_SUITON | Water Escape Technique
+ 621 | EF_STIN4 | Wind Blade
+ 622 | EF_THUNDERSTORM2 | Lightning Crash
+ 623 | EF_CHEMICAL4 | Piercing Shot
+ 624 | EF_STIN5 | Kamaitachi
+ 625 | EF_MADNESS_BLUE | Madness Canceller
+ 626 | EF_MADNESS_RED | Adjustment
+ 627 | EF_RG_COIN3 | Disarm (Sound Effect)
+ 628 | EF_BASH3D5 | Dust
+ 629 | EF_CHOOKGI3 | (Nothing)
+ 630 | EF_KIRIKAGE | Shadow Slash
+ 631 | EF_TATAMI | Reverse Tatami Map Unit
+ 632 | EF_KASUMIKIRI | Mist Slash
+ 633 | EF_ISSEN | Final Strike
+ 634 | EF_KAEN | Crimson Fire Formation
+ 635 | EF_BAKU | Dragon Fire Formation
+ 636 | EF_HYOUSYOURAKU | Falling Ice Pillar
+ 637 | EF_DESPERADO | Desperado
+ 638 | EF_LIGHTNING_S | Ground Drift Grenade
+ 639 | EF_BLIND_S | Ground Drift Grenade
+ 640 | EF_POISON_S | Ground Drift Grenade
+ 641 | EF_FREEZING_S | Ground Drift Grenade
+ 642 | EF_FLARE_S | Ground Drift Grenade
+ 643 | EF_RAPIDSHOWER | Rapid Shower
+ 644 | EF_MAGICALBULLET | Magic Bullet
+ 645 | EF_SPREADATTACK | Spread Attack
+ 646 | EF_TRACKCASTING | Tracking (Shown While Casting)
+ 647 | EF_TRACKING | Tracking
+ 648 | EF_TRIPLEACTION | Triple Action
+ 649 | EF_BULLSEYE | Bull's Eye
+ 650 | EF_MAP_MAGICZONE | Ice Cave Level 4 Circle
+ 651 | EF_MAP_MAGICZONE2 | Ice Cave Level 4 Big Circle
+ 652 | EF_DAMAGE1 | Like Regeneration Number but Red with a Sound
+ 653 | EF_DAMAGE1_2 | Like Regeneration Number but Red
+ 654 | EF_DAMAGE1_3 | Like Regeneration Number but Purple
+ 655 | EF_UNDEADBODY | Mobs Skill (Change Undead Element)
+ 656 | EF_UNDEADBODY_DEL | Last animation before Change Undead Element finish
+ 657 | EF_GREEN_NUMBER | (Nothing)
+ 658 | EF_BLUE_NUMBER | (Nothing)
+ 659 | EF_RED_NUMBER | (Nothing)
+ 660 | EF_PURPLE_NUMBER | (Nothing)
+ 661 | EF_BLACK_NUMBER | (Nothing)
+ 662 | EF_WHITE_NUMBER | (Nothing)
+ 663 | EF_YELLOW_NUMBER | (Nothing)
+ 664 | EF_PINK_NUMBER | (Nothing)
+ 665 | EF_BUBBLE_DROP | Little Blue Ball Falling From the Sky
+ 666 | EF_NPC_EARTHQUAKE | Earthquake
+ 667 | EF_DA_SPACE | (Nothing)
+ 668 | EF_DRAGONFEAR | Dragonfear
+ 669 | EF_BLEEDING | Wide Bleeding
+ 670 | EF_WIDECONFUSE | Dragon fear (Visual Effect)
+ 671 | EF_BOTTOM_RUNNER | The Japan Earth Symbol (like 'Seven Wind Lv1', but on the ground)
+ 672 | EF_BOTTOM_TRANSFER | The Japan Wind Symbol (like 'Seven Wind Lv2', but on the ground)
+ 673 | EF_CRYSTAL_BLUE | Map turns Blue (like Soul Link)
+ 674 | EF_BOTTOM_EVILLAND | Evil Land Cell
+ 675 | EF_GUARD3 | Like Parrying/Kyrie Eleison barrier but Yellow with small Cross in every barrier piece
+ 676 | EF_NPC_SLOWCAST | Slow Casting
+ 677 | EF_CRITICALWOUND | Critical Wounds/Bleeding Attack
+ 678 | EF_GREEN99_3 | White 99 Aura Bubbles
+ 679 | EF_GREEN99_5 | Green Aura (Middle)
+ 680 | EF_GREEN99_6 | Green Aura (Bottom)
+ 681 | EF_MAPSPHERE | Dimensional Gorge Map Effect
+ 682 | EF_POK_LOVE | I Love You Banner
+ 683 | EF_POK_WHITE | Happy White Day Banner
+ 684 | EF_POK_VALEN | Happy Valentine Day Banner
+ 685 | EF_POK_BIRTH | Happy Birthday Banner
+ 686 | EF_POK_CHRISTMAS | Merry Christmas Banner
+ 687 | EF_MAP_MAGICZONE3 | Cast Circle-Like effect 1
+ 688 | EF_MAP_MAGICZONE4 | Cast Circle-Like effect 2
+ 689 | EF_DUST | Endless Tower Map Effect
+ 690 | EF_TORCH_RED | Burning Flame (Red)
+ 691 | EF_TORCH_GREEN | Burning Flame (Green)
+ 692 | EF_MAP_GHOST | Unknown Aura Bubbles (Small ghosts)
+ 693 | EF_GLOW1 | Translucent yellow circle
+ 694 | EF_GLOW2 | Translucent green circle
+ 695 | EF_GLOW4 | Rotating green light
+ 696 | EF_TORCH_PURPLE | The same of 690 and 691 but Blue/Purple
+ 697 | EF_CLOUD7 | (Nothing)
+ 698 | EF_CLOUD8 | (Nothing)
+ 699 | EF_FLOWERLEAF | Fall of powder from the sky and raise of some leaf
+ 700 | EF_MAPSPHERE2 | Big Colored Green Sphere.
+ 701 | EF_GLOW11 | Huge Blue Sphere
+ 702 | EF_GLOW12 | Little Colored Violet Sphere
+ 703 | EF_CIRCLELIGHT | Light Infiltration with fall of pownder
+ 704 | EF_ITEM315 | Client Error (mobile_ef02.str)
+ 705 | EF_ITEM316 | Client Error (mobile_ef01.str)
+ 706 | EF_ITEM317 | Client Error (mobile_ef03.str)
+ 707 | EF_ITEM318 | Client Crash :P
+ 708 | EF_STORM_MIN | Storm Gust (same as 89)
+ 709 | EF_POK_JAP | A Firework that split in 4 mini fireworks
+ 710 | EF_MAP_GREENLIGHT | A Sphere like Effect 701 but Green, and a bit more larger
+ 711 | EF_MAP_MAGICWALL | A big violet wall
+ 712 | EF_MAP_GREENLIGHT2 | A Little Flame Sphere
+ 713 | EF_YELLOWFLY1 | A lot of Very Small and Yellow Sphere
+ 714 | EF_YELLOWFLY2 | (Nothing)
+ 715 | EF_BOTTOM_BLUE | Little blue Basilica
+ 716 | EF_BOTTOM_BLUE2 | Same as 715
+ 717 | EF_WEWISH | Christmas Carol (copy of Angelus)
+ 718 | EF_FIREPILLARON2 | Judex (Visual Effect)
+ 719 | EF_FORESTLIGHT5 | Renovatio (light beam)
+ 720 | EF_SOULBREAKER3 | Yellow version of Soul Breaker
+ 721 | EF_ADO_STR | Adoramus (lightning bolt)
+ 722 | EF_IGN_STR | Ignition Break (big explosion)
+ 723 | EF_CHIMTO2 | Hundred Spear (sound effect)
+ 724 | EF_WINDCUTTER | Green version of Detecting
+ 725 | EF_DETECT2 | Oratorio (like Detecting)
+ 726 | EF_FROSTMYSTY | Frost Misty (blue vapor and bubbles)
+ 727 | EF_CRIMSON_STR | Crimson Rock
+ 728 | EF_HELL_STR | Small fire (part of Hell Inferno)
+ 729 | EF_SPR_MASH | Marsh of Abyss (like Close Confine)
+ 730 | EF_SPR_SOULE | Small, cartoony explosion (part of Soul Expansion)
+ 731 | EF_DHOWL_STR | Dragon Howling (blinking, expanding circle)
+ 732 | EF_EARTHWALL | Spike from the ground
+ 733 | EF_SOULBREAKER4 | Fluffy Ball flying by
+ 734 | EF_CHAINL_STR | Chain Lightning
+ 735 | EF_CHOOKGI_FIRE | (Nothing)
+ 736 | EF_CHOOKGI_WIND | (Nothing)
+ 737 | EF_CHOOKGI_WATER | (Nothing)
+ 738 | EF_CHOOKGI_GROUND | (Nothing)
+ 739 | EF_MAGENTA_TRAP | Old Magenta Trap
+ 740 | EF_COBALT_TRAP | Old Cobald Trap
+ 741 | EF_MAIZE_TRAP | Old Maize Trap
+ 742 | EF_VERDURE_TRAP | Old Verdure Trap
+ 743 | EF_NORMAL_TRAP | White Ranger Trap
+ 744 | EF_CLOAKING2 | Camouflage
+ 745 | EF_AIMED_STR | Aimed Bolt (crosshairs)
+ 746 | EF_ARROWSTORM_STR | Arrow Storm
+ 747 | EF_LAULAMUS_STR | Falling white feathers
+ 748 | EF_LAUAGNUS_STR | Falling blue feathers
+ 749 | EF_MILSHIELD_STR | Millennium Shield
+ 750 | EF_CONCENTRATION2 | Detonator (blue sparkles)
+ 751 | EF_FIREBALL2 | Releasing summoned warlock spheres
+ 752 | EF_BUNSINJYUTSU2 | Like Energy Coat, but not as dark
+ 753 | EF_CLEARTIME | Clearance
+ 754 | EF_GLASSWALL3 | Green warp portal (root of Epiclesis)
+ 755 | EF_ORATIO | Oratio (spinning blue symbol)
+ 756 | EF_POTION_BERSERK2 | Enchant Blade (like Berserk Potion)
+ 757 | EF_CIRCLEPOWER | Third Class Aura (Middle)
+ 758 | EF_ROLLING1 | Rolling Cutter - Spin Count 1
+ 759 | EF_ROLLING2 | Rolling Cutter - Spin Count 2
+ 760 | EF_ROLLING3 | Rolling Cutter - Spin Count 3
+ 761 | EF_ROLLING4 | Rolling Cutter - Spin Count 4
+ 762 | EF_ROLLING5 | Rolling Cutter - Spin Count 5
+ 763 | EF_ROLLING6 | Rolling Cutter - Spin Count 6
+ 764 | EF_ROLLING7 | Rolling Cutter - Spin Count 7
+ 765 | EF_ROLLING8 | Rolling Cutter - Spin Count 8
+ 766 | EF_ROLLING9 | Rolling Cutter - Spin Count 9
+ 767 | EF_ROLLING10 | Rolling Cutter - Spin Count 10
+ 768 | EF_PURPLEBODY | Blinking
+ 769 | EF_STIN6 | Cross Ripper Slasher (flying knives)
+ 770 | EF_RG_COIN4 | Strip sound
+ 771 | EF_POISONWAV | Poison sound
+ 772 | EF_POISONSMOKE | Poison particles
+ 773 | EF_GUMGANG4 | Expanding purple aura (part of Phantom Menace)
+ 774 | EF_SHIELDBOOMERANG4 | Axe Boomerang
+ 775 | EF_CASTSPIN2 | Spinning character sprite
+ 776 | EF_VULCANWAV | Like Desperado sound effect
+ 777 | EF_AGIUP2 | Faded light from the ground [S]
+ 778 | EF_DETECT3 | Expanding white aura (like Clearance)
+ 779 | EF_AGIUP3 | Faded light from the ground [S]
+ 780 | EF_DETECT4 | Expanding red aura (from Infrared Scan)
+ 781 | EF_ELECTRIC3 | Magnetic Field (purple chains)
+ 782 | EF_GUARD4 | All-around shield [S]
+ 783 | EF_BOTTOM_BARRIER | Yellow shaft of light
+ 784 | EF_BOTTOM_STEALTH | White shaft of light
+ 785 | EF_REPAIRTIME | Upward flying wrenches
+ 786 | EF_NC_ANAL | Symbol with bleeping sound [S]
+ 787 | EF_FIRETHROW | Flare Launcher (line of fire)
+ 788 | EF_VENOMIMPRESS | Venom Impress (green skull)
+ 789 | EF_FROSTMISTY | Freezing Status Effect (two ancillas)
+ 790 | EF_BURNING | Burning Status Effect (flame symbol)
+ 791 | EF_COLDTHROW | Two ice shots
+ 792 | EF_MAKEHALLU | Upward streaming white particles
+ 793 | EF_HALLUTIME | Same, but more brief
+ 794 | EF_INFRAREDSCAN | Infrared Scan (red lasers)
+ 795 | EF_CRASHAXE | Power Swing (axe crash)
+ 796 | EF_GTHUNDER | Spinning blue triangles
+ 797 | EF_STONERING | Stapo
+ 798 | EF_INTIMIDATE2 | Red triangles (like Intimidate)
+ 799 | EF_STASIS | Stasis (expanding blue mist) [S]
+ 800 | EF_REDLINE | Hell Inferno (red lights)
+ 801 | EF_FROSTDIVER3 | Jack Frost unit (ice spikes)
+ 802 | EF_BOTTOM_BASILICA2 | White Imprison
+ 803 | EF_RECOGNIZED | Recognized Spell
+ 804 | EF_TETRA | Tetra Vortex [S]
+ 805 | EF_TETRACASTING | Tetra Vortex cast animation (blinking colors)
+ 806 | EF_FIREBALL3 | Flying by as fast as a rocket
+ 807 | EF_INTIMIDATE3 | Kidnapping sound
+ 808 | EF_RECOGNIZED2 | Like Recognized Spell, but one symbol
+ 809 | EF_CLOAKING3 | Shadowy filter [S]
+ 810 | EF_INTIMIDATE4 | Damp thud sound [S]
+ 811 | EF_STRETCH | Body Painting
+ 812 | EF_BLACKBODY | Black expanding aura
+ 813 | EF_ENERVATION | Masquerade - Enervation
+ 814 | EF_ENERVATION2 | Masquerade - Groomy
+ 815 | EF_ENERVATION3 | Masquerade - Ignorance
+ 816 | EF_ENERVATION4 | Masquerade - Laziness
+ 817 | EF_ENERVATION5 | Masquerade - Unlucky
+ 818 | EF_ENERVATION6 | Masquerade - Weakness
+ 819 | EF_LINELINK4 | (Nothing)
+ 820 | EF_RG_COIN5 | Strip Accessory
+ 821 | EF_WATERFALL_ANI | Waterfall
+ 822 | EF_BOTTOM_MANHOLE | Dimension Door (spinning blue aura)
+ 823 | EF_MANHOLE | in-the-manhole effect
+ 824 | EF_MAKEFEINT | Some filter
+ 825 | EF_FORESTLIGHT6 | Dimension Door (aura + blue light)
+ 826 | EF_DARKCASTING2 | Expanding black casting anim.
+ 827 | EF_BOTTOM_ANI | Chaos Panic (spinning brown aura)
+ 828 | EF_BOTTOM_MAELSTROM | Maelstrom (spinning pink aura)
+ 829 | EF_BOTTOM_BLOODYLUST | Bloody Lust (spinning red aura)
+ 830 | EF_BEGINSPELL_N1 | Blue aura (Arch Bishop cast animation)
+ 831 | EF_BEGINSPELL_N2 | Blue cone [S]
+ 832 | EF_HEAL_N | Sonic Wave
+ 833 | EF_CHOOKGI_N | (Nothing)
+ 834 | EF_JOBLVUP50_2 | Light shooting away circlish
+ 835 | EF_CHEMICAL2DASH2 | Fastness yellow-reddish
+ 836 | EF_CHEMICAL2DASH3 | Fastness yellow-pinkish
+ 837 | EF_ROLLINGCAST | Casting [S]
+ 838 | EF_WATER_BELOW | Watery aura
+ 839 | EF_WATER_FADE | [Client Error]
+ 840 | EF_BEGINSPELL_N3 | Red cone
+ 841 | EF_BEGINSPELL_N4 | Green cone
+ 842 | EF_BEGINSPELL_N5 | Yellow cone
+ 843 | EF_BEGINSPELL_N6 | White cone
+ 844 | EF_BEGINSPELL_N7 | Purple cone
+ 845 | EF_BEGINSPELL_N8 | light-bluish turquoise cone
+ 846 | EF_WATER_SMOKE | (Nothing)
+ 847 | EF_DANCE1 | Gloomy Day (white/red light rays)
+ 848 | EF_DANCE2 | Gloomy Day (white/blue light rays)
+ 849 | EF_LINKPARTICLE | (Nothing)
+ 850 | EF_SOULLIGHT2 | (Nothing)
+ 851 | EF_SPR_PARTICLE | Green mushy-foggy stuff (dull)
+ 852 | EF_SPR_PARTICLE2 | Green mushy-foggy stuff (bright)
+ 853 | EF_SPR_PLANT | Bright green flower area
+ 854 | EF_CHEMICAL_V | Blue beam of light with notes
+ 855 | EF_SHOOTPARTICLE | (Nothing)
+ 856 | EF_BOT_REVERB | Reverberation (red eighth notes)
+ 857 | EF_RAIN_PARTICLE | Severe Rainstorm (falling red and blue beams)
+ 858 | EF_CHEMICAL_V2 | Deep Sleep Lullaby (two red beams and music notes)
+ 859 | EF_SECRA | Holograph of text (blue)
+ 860 | EF_BOT_REVERB2 | Distorted note (blue)
+ 861 | EF_CIRCLEPOWER2 | Green aura (from Circle of Life's Melody)
+ 862 | EF_SECRA2 | Randomize Spell (holograph of text)
+ 863 | EF_CHEMICAL_V3 | Dominion Impulse (two spears of light)
+ 864 | EF_ENERVATION7 | Gloomy Day (colorful lines)
+ 865 | EF_CIRCLEPOWER3 | Blue aura (from Song of Mana)
+ 866 | EF_SPR_PLANT2 | Dance with a Warg (Wargs)
+ 867 | EF_CIRCLEPOWER4 | Yellow aura (from Dance with a Warg)
+ 868 | EF_SPR_PLANT3 | Song of Mana (Violies)
+ 869 | EF_RG_COIN6 | Strip sound [S]
+ 870 | EF_SPR_PLANT4 | Ghostly Succubuses of fire
+ 871 | EF_CIRCLEPOWER5 | Red aura (from Lerad's Dew)
+ 872 | EF_SPR_PLANT5 | Lerad's Dew (Minerals)
+ 873 | EF_CIRCLEPOWER6 | Stargate-wormhole stuff (bright purple)
+ 874 | EF_SPR_PLANT6 | Melody of Sink (Ktullanuxes)
+ 875 | EF_CIRCLEPOWER7 | Stargate-wormhole stuff (bright turquoise)
+ 876 | EF_SPR_PLANT7 | Warcry of Beyond (Garms)
+ 877 | EF_CIRCLEPOWER8 | Stargate-wormhole stuff (white)
+ 878 | EF_SPR_PLANT8 | Unlimited Humming Voice (Miyabi Ningyos)
+ 879 | EF_HEARTASURA | Siren's Voice (heart-like)
+ 880 | EF_BEGINSPELL_150 | Bluish castish cone
+ 881 | EF_LEVEL99_150 | Blue aura
+ 882 | EF_PRIMECHARGE | Whirl of fireflies (red)
+ 883 | EF_GLASSWALL4 | Epiclesis (transparent green tree)
+ 884 | EF_GRADIUS_LASER | Green beam
+ 885 | EF_BASH3D6 | Blue light beams
+ 886 | EF_GUMGANG5 | Blue castish cone
+ 887 | EF_HITLINE8 | Wavy sparks
+ 888 | EF_ELECTRIC4 | Earth Shaker (same as 432)
+ 889 | EF_TEIHIT1T | Fast light beams
+ 890 | EF_SPINMOVE | Rotation
+ 891 | EF_FIREBALL4 | Magic shots [S]
+ 892 | EF_TRIPLEATTACK4 | Fastness with hitting sound[S]
+ 893 | EF_CHEMICAL3S | Blue-white light passing by
+ 894 | EF_GROUNDSHAKE | (Nothing)
+ 895 | EF_DQ9_CHARGE | Big wheel of flat light beams
+ 896 | EF_DQ9_CHARGE2 | Still sun shaped lightning aura
+ 897 | EF_DQ9_CHARGE3 | Animated sun shaped lightning aura
+ 898 | EF_DQ9_CHARGE4 | Animated, curvy sun shaped lightning aura
+ 899 | EF_BLUELINE | White/red light shots from below
+ 900 | EF_SELFSCROLL | Animated, slow curvy sun shaped lightning aura
+ 901 | EF_SPR_LIGHTPRINT | Explosion
+ 902 | EF_PNG_TEST | Floating bedtable texture
+ 903 | EF_BEGINSPELL_YB | Castish flamey cone
+ 904 | EF_CHEMICAL2DASH4 | Yellow/pink lights passing by
+ 905 | EF_GROUNDSHAKE2 | Expanding circle
+ 906 | EF_PRESSURE2 | Shield Press (falling shield)
+ 907 | EF_RG_COIN7 | Chainy, metalish sound [S]
+ 908 | EF_PRIMECHARGE2 | Prestige (sphere of yellow particles)
+ 909 | EF_PRIMECHARGE3 | Banding (sphere of red particles)
+ 910 | EF_PRIMECHARGE4 | Inspiration (sphere of blue particles)
+ 911 | EF_GREENCASTING | Green castish animation [S]
+ 912 | EF_WALLOFTHORN | Wall of Thorns unit (green fog cloud)
+ 913 | EF_FIREBALL5 | Magic projectiles
+ 914 | EF_THROWITEM11 | (Nothing)
+ 915 | EF_SPR_PLANT9 | Crazy Weed
+ 916 | EF_DEMONICFIRE | Demonic Fire
+ 917 | EF_DEMONICFIRE2 | More angry, demonic flames
+ 918 | EF_DEMONICFIRE3 | Fire Insignia (demonic flames)
+ 919 | EF_HELLSPLANT | Hell's Plant (green snapping plant)
+ 920 | EF_FIREWALL2 | Fire Walk unit
+ 921 | EF_VACUUM | Vacuum Extreme (whirlwind)
+ 922 | EF_SPR_PLANT10 | Psychic Wave
+ 923 | EF_SPR_LIGHTPRINT2 | Poison Buster
+ 924 | EF_POISONSMOKE2 | Poisoning animation
+ 925 | EF_MAKEHALLU2 | Some filter
+ 926 | EF_SHOCKWAVE2 | Electric Walk unit
+ 927 | EF_SPR_PLANT11 | Earth Grave (speary roots)
+ 928 | EF_COLDTHROW2 | Ice cloud projectiles
+ 929 | EF_DEMONICFIRE4 | Warmer (field of flames)
+ 930 | EF_PRESSURE3 | Varetyr Spear (falling spear)
+ 931 | EF_LINKPARTICLE2 | (Nothing)
+ 932 | EF_SOULLIGHT3 | Firefly
+ 933 | EF_CHAREFFECT | [Client Crash]
+ 934 | EF_GUMGANG6 | White, castishly expanding cone
+ 935 | EF_FIREBALL6 | Green magic projectile
+ 936 | EF_GUMGANG7 | Red, castishly expanding cone
+ 937 | EF_GUMGANG8 | Yellow, castishly expanding cone
+ 938 | EF_GUMGANG9 | Dark-red, castishly expanding cone
+ 939 | EF_BOTTOM_DE2 | Blue, conish aura
+ 940 | EF_COLDSTATUS | Snow flake
+ 941 | EF_SPR_LIGHTPRINT3 | Explosion of red, demonic fire
+ 942 | EF_WATERBALL3 | Expanding, white dome
+ 943 | EF_HEAL_N2 | Green, fluffy projectile
+ 944 | EF_RAIN_PARTICLE2 | Falling gems
+ 945 | EF_CLOUD9 | (Nothing)
+ 946 | EF_YELLOWFLY3 | Floating lights
+ 947 | EF_EL_GUST | Blue lightning sphere
+ 948 | EF_EL_BLAST | Two blue lightning spheres
+ 949 | EF_EL_AQUAPLAY | Flat, spinning diamond
+ 950 | EF_EL_UPHEAVAL | Circling, planetlike spheres
+ 951 | EF_EL_WILD_STORM | Three lightning spheres
+ 952 | EF_EL_CHILLY_AIR | Flat, spinning gem and two lightning spheres
+ 953 | EF_EL_CURSED_SOIL | Spinning, planetlike spheres
+ 954 | EF_EL_COOLER | Two lightblue glowing spheres
+ 955 | EF_EL_TROPIC | Three spinning flame spheres
+ 956 | EF_EL_PYROTECHNIC | Flame
+ 957 | EF_EL_PETROLOGY | Spinning planetlike sphere
+ 958 | EF_EL_HEATER | Two flames
+ 959 | EF_POISON_MIST | Purple flame
+ 960 | EF_ERASER_CUTTER | Small yellow explosion
+ 961 | EF_SILENT_BREEZE | Cartoony whirlwind
+ 962 | EF_MAGMA_FLOW | Rising fire
+ 963 | EF_GRAYBODY | Dark filter (like Stone Curse)
+ 964 | EF_LAVA_SLIDE | Same as 920
+ 965 | EF_SONIC_CLAW | Small white explosion
+ 966 | EF_TINDER_BREAKER | Bone crack
+ 967 | EF_MIDNIGHT_FRENZY | Another little explosion
+ 968 | EF_MACRO |
+ 969 | EF_CHEMICAL_ALLRANGE |
+ 970 | EF_TETRA_FIRE |
+ 971 | EF_TETRA_WATER |
+ 972 | EF_TETRA_WIND |
+ 973 | EF_TETRA_GROUND |
+ 974 | EF_EMITTER |
+ 975 | EF_VOLCANIC_ASH |
+ 976 | EF_LEVEL99_ORB1 |
+ 977 | EF_LEVEL99_ORB2 |
+ 978 | EF_LEVEL150 |
+ 979 | EF_LEVEL150_SUB |
+ 980 | EF_THROWITEM4_1 |
+ 981 | EF_THROW_HAPPOKUNAI |
+ 982 | EF_THROW_MULTIPLE_COIN |
+ 983 | EF_THROW_BAKURETSU |
+ 984 | EF_ROTATE_HUUMARANKA |
+ 985 | EF_ROTATE_BG |
+ 986 | EF_ROTATE_LINE_GRAY |
+ 987 | EF_2011RWC |
+ 988 | EF_2011RWC2 |
+ 989 | EF_KAIHOU |
+ 990 | EF_GROUND_EXPLOSION |
+ 991 | EF_KG_KAGEHUMI |
+ 992 | EF_KO_ZENKAI_WATER |
+ 993 | EF_KO_ZENKAI_LAND |
+ 994 | EF_KO_ZENKAI_FIRE |
+ 995 | EF_KO_ZENKAI_WIND |
+ 996 | EF_KO_JYUMONJIKIRI |
+ 997 | EF_KO_SETSUDAN |
+ 998 | EF_RED_CROSS |
+ 999 | EF_KO_IZAYOI |
+1000 | EF_ROTATE_LINE_BLUE |
+1001 | EF_KG_KYOMU |
+1002 | EF_KO_HUUMARANKA |
+1003 | EF_BLUELIGHTBODY |
+1004 | EF_KAGEMUSYA |
+1005 | EF_OB_GENSOU |
+1006 | EF_NO100_FIRECRACKER |
+1007 | EF_KO_MAKIBISHI |
+1008 | EF_KAIHOU1 |
+1009 | EF_AKAITSUKI |
+1010 | EF_ZANGETSU |
+1011 | EF_GENSOU |
+1012 | EF_HAT_EFFECT |
+1013 | EF_CHERRYBLOSSOM |
+1014 | EF_EVENT_CLOUD |
+1015 | EF_RUN_MAKE_OK |
+1016 | EF_RUN_MAKE_FAILURE |
+1017 | EF_MIRESULT_MAKE_OK |
+1018 | EF_MIRESULT_MAKE_FAIL |
+1019 | EF_ALL_RAY_OF_PROTECTION |
+1020 | EF_VENOMFOG |
+1021 | EF_DUSTSTORM |
+1022 | EF_LEVEL160 |
+1023 | EF_LEVEL160_SUB |
+1024 | EF_MAPCHAIN |
+1025 | EF_MAGIC_FLOOR |
+1026 | EF_ICEMINE |
+1027 | EF_FLAMECORSS |
+1028 | EF_ICEMINE_1 |
+1029 | EF_DANCE_BLADE_ATK |
+1030 | EF_DARKPIERCING |
+1031 | EF_INVINCIBLEOFF2 |
+1032 | EF_MAXPAIN |
+1033 | EF_DEATHSUMMON |
+1034 | EF_MOONSTAR |
+1035 | EF_STRANGELIGHTS |
+1036 | EF_SUPER_STAR |
+1037 | EF_YELLOBODY |
+1038 | EF_COLORPAPER2 |
+1039 | EF_EVILS_PAW |
+1040 | EF_GC_DARKCROW |
+1041 | EF_RK_DRAGONBREATH_WATER |
+1042 | EF_ALL_FULL_THROTTLE |
+1043 | EF_SR_FLASHCOMBO |
+1044 | EF_RK_LUXANIMA |
+1045 | EF_CLOUD10 |
+1046 | EF_SO_ELEMENTAL_SHIELD |
+1047 | EF_AB_OFFERTORIUM |
+1048 | EF_WL_TELEKINESIS_INTENSE |
+1049 | EF_GN_ILLUSIONDOPING |
+1050 | EF_NC_MAGMA_ERUPTION |
+1051 | EF_LG_KINGS_GRACE |
+1052 | EF_BLOODDRAIN2 |
+1053 | EF_NPC_WIDEWEB |
+1054 | EF_NPC_BURNT |
+1055 | EF_NPC_CHILL |
+1056 | EF_RA_UNLIMIT |
+1057 | EF_AB_OFFERTORIUM_RING |
+1058 | EF_SC_ESCAPE |
+1059 | EF_WM_FRIGG_SONG |
+1060 | EF_FLICKER |
+1061 | EF_C_MAKER |
+1062 | EF_HAMMER_OF_GOD |
+1063 | EF_MASS_SPIRAL |
+1064 | EF_FIRE_RAIN |
+1065 | EF_WHITEBODY |
+1066 | EF_BANISHING_BUSTER |
+1067 | EF_SLUGSHOT |
+1068 | EF_D_TAIL |
+1069 | EF_BIND_TRAP1 |
+1070 | EF_BIND_TRAP2 |
+1071 | EF_BIND_TRAP3 |
+1072 | EF_JUMPBODY1 |
+1073 | EF_ANIMATED_EMITTER |
+1074 | EF_RL_EXPLOSION |
+1075 | EF_C_MAKER_1 |
+1076 | EF_QD_SHOT |
+1077 | EF_P_ALTER |
+1078 | EF_S_STORM |
+1079 | EF_MUSIC_HAT |
+1080 | EF_CLOUD_KILL |
+1081 | EF_ESCAPE |
+1082 | EF_XENO_SLASHER |
+1083 | EF_FLOWERSMOKE |
+1084 | EF_FSTONE |
+1085 | EF_QSCARABA |
+1086 | EF_LJOSALFAR |
+1087 | EF_HAPPINESSSTAR |
+1088 | EF_POWER_OF_GAIA |
+1089 | EF_MAPLE_FALLS |
+1090 | EF_MARKING_USE_CHANGEMONSTER |
+1091 | EF_MAGICAL_FEATHER |
+1092 | EF_MERMAID_LONGING |
+1093 | EF_GIFT_OF_SNOW |
+1094 | EF_ACH_COMPLETE |
+1095 | EF_TIME_ACCESSORY |
+1096 | EF_SPRITEMABLE |
+1097 | EF_TUNAPARTY |
diff --git a/doc/effect_list.txt b/doc/effect_list.txt
deleted file mode 100644
index 01ea2753b..000000000
--- a/doc/effect_list.txt
+++ /dev/null
@@ -1,986 +0,0 @@
-//===== Hercules Documentation ===============================
-//= Client Effects List
-//===== By: ==================================================
-//= Hercules Dev Team
-//===== Current Version: =====================================
-//= 20120822
-//===== Description: =========================================
-//= A list of client-side effects sorted by ID.
-//============================================================
-
-The following is a compiled list of visual and sound effects which the client
-can produce when receiving a packet with id 0x1f3 (01f3 <ID>.l <type>.l).
-Each list entry contains a number and a short description of the effect.
-You can produce these effects ingame by doing "@effect <number> 22" (22=self).
-It's also possible to attach effects to item/npc scripts by using 'misceffect'.
-
-Number Description
------- -----------
-0. Regular Hit
-1. Bash
-2. Melee Skill Hit
-3. Melee Skill Hit
-4. Melee Skill Hit
-5. Melee Skill Hit
-6. Being Warped
-7. Item Heal effect
-8. Yellow Ripple Effect
-9. Different Type of Heal
-10. Mammonite
-11. Endure
-12. Yellow cast aura
-13. Blue Box
-14. Blue restoring effect
-15. Soul Strike
-16. Hide
-17. Magnum Break
-18. Steal
-19. (Invalid)
-20. Envenom/Poison
-21. Detoxify
-22. Sight
-23. Stone Curse
-24. Fire Ball
-25. Fire Wall
-26. A sound (a swipe?)
-27. Frost Diver (Traveling to Target)
-28. Frost Diver (Hitting)
-29. Lightning Bolt
-30. Thunder Storm
-31. Weird bubbles launching from feet
-32. Small clustered explosions
-33. Ruwach
-34. Old Map Exit Animation (unused)
-35. Old Warp Portal (unused)
-36. Old Warp Portal (unused)
-37. AGI Up
-38. AGI Down
-39. Aqua Benedicta
-40. Signum Crucis
-41. Angelus
-42. Blessing
-43. Dex + Agi Up
-44. Little Fog Smoke.
-45. Faint Little Ball Things.
-46. Sand Wind
-47. Torch
-48. Small Piece of Glass
-49. Firebolt/Wall Hits
-50. Spinning Fire Thing
-51. Ice Elemental Hit
-52. Wind Elemental Hit
-53. Puff of Purpulish Smoke?
-54. Cast Initiation Aura (Water Element)
-55. Cast Initiation Aura (Fire Element)
-56. Cast Initiation Aura (Wind Element)
-57. Cast Initiation Aura (Earth Element)
-58. Cast Initiation Aura (Holy Element)
-59. Cast Initiation Aura (Poison Element)
-60. Cast target circle
-61. Old Warp Portal (NPC Warp, unused)
-62. Sight Trasher
-63. Moonlight Sphere
-64. Something Like Puruple/Yellow Light Bullet
-65. Something Like Absorb of Power
-66. Cure
-67. Provoke
-68. MVP Banner
-69. Skid Trap
-70. Brandish Spear
-71. Spiral White balls
-72. Bigger Spiral White balls
-73. Blue/White Small Aura
-74. Ice Wall
-75. Gloria
-76. Magnificat
-77. Resurrection
-78. Status Recovery
-79. Earth Spike
-80. Spear Boomerang
-81. Skill hit
-82. Turn Undead
-83. Sanctuary
-84. Impositio Manus
-85. Lex Aeterna
-86. Aspersio
-87. Lex Divina
-88. Suffragium
-89. Storm Gust
-90. Lord of Vermilion
-91. B. S. Sacramenti
-92. Meteor Storm
-93. Jupitel Thunder (Ball)
-94. Jupitel Thunder (Hit)
-95. Quagmire
-96. Fire Pillar
-97. Fire Pillar/Land Mine hit
-98. Adrenaline Rush
-99. Flasher Trap
-100. Yellow ball fountain
-101. Weapon Repair
-102. Hammerfall
-103. Weapon Perfection
-104. Maximize Power
-105. (nothing)
-106. Blast Mine Trap
-107. Claymore Trap
-108. Freezing Trap
-109. Bailaban Blue bubble Map Effect
-110. Trap Used by Giearth
-111. Spring Trap
-112. Kyrie Eleison
-113. Magnus Exorcismus
-114. Old Magnus Exorcismus Map Unit (unused)
-115. Blitz Beat
-116. Fling Watersphere
-117. Waterball
-118. Fling Firesphere
-119. Detect
-120. Cloaking
-121. Sonic Blow (Part 1/2)
-122. Multi hit effect
-123. Grimtooth Cast
-124. Venom Dust
-125. Enchant Poison
-126. Poison React
-127. Small Posion React
-128. Over Thrust
-129. Venom Splasher Explosion
-130. Two-Hand Quicken
-131. Auto-Counter Hit
-132. Grimtooth Hit
-133. Ice Effect (Used by NPCs)
-134. Ice Effect (Used by NPCs)
-135. Ice Effect (Used by NPCs)
-136. Slow Poison
-137. Old Sanctuary Map Unit (unused)
-138. Fire pillar
-139. Sandman Trap
-140. Ressurection Aura
-141. Pneuma
-142. Heaven's Drive
-143. Sonic Blow (Part 2/2)
-144. Brandish Spear Pre-Hit Effect
-145. Shockwave Trap
-146. Shockwave Trap Hit
-147. Pierce Hit
-148. Pierce Cast Animation
-149. Bowling Bash
-150. Pierce Cast Animation
-151. Spear Boomerang Cast
-152. Turn Undead
-153. Increase Concentration
-154. Refine Success
-155. Refine Fail
-156. jobchange.str not found error
-157. levelup.str not found error
-158. Job Level Up
-159. PvP circle
-160. PvP Party Circle
-161. (Nothing)
-162. Snow
-163. White Sakura Leaves
-164. (Nothing)
-165. Comodo Fireworks Ball
-166. Energy Coat (Visual Effect)
-167. (Nothing)
-168. (Nothing)
-169. Energy Coat Animation
-170. Cart Revolution
-171. Venom Dust Map Unit
-172. Change Element (Dark)
-173. Change Element (Fire)
-174. Change Element (Water)
-175. Change Element (Wind)
-176. Change Element (Fire)
-177. Change Element (Earth)
-178. Change Element (Holy)
-179. Change Element (Poison)
-180. Darkness Attack
-181. Mental Breaker
-182. Magical Hit
-183. Self Destruction
-184. (Nothing)
-185. (Nothing)
-186. Combo Attack 1
-187. Combo Attack 2
-188. Combo Attack 3
-189. Combo Attack 4
-190. Combo Attack 5
-191. Guided Attack
-192. Poison Attack
-193. Silence Attack
-194. Stun Attack
-195. Petrify Attack
-196. Curse Attack
-197. Sleep Attack
-198. (Nothing)
-199. Small Popping Bubble Map Effect
-200. Normal level 99 Aura (Middle)
-201. Normal level 99 Aura (Bottom)
-202. Lv 99 Aura Bubble
-203. Fury (Visual Effect)
-204. Red Herb/Potion
-205. Orange Potion
-206. Yellow Herb/Potion
-207. White Herb/Potion
-208. Blue Herb/Potion
-209. Green Herb/Potion
-210. Yellow Circle Healing Effect
-211. Blue Circle Healing Effect
-212. Dark Breath
-213. Defender
-214. Keeping
-215. Summon Slave
-216. Blood Drain
-217. Energy Drain
-218. Concentration Potion
-219. Awakening Potion
-220. Berserk Potion
-221. Intense light beam
-222. Defender (Crusader)
-223. Holy Cast Aura
-224. Wind (Map effect)
-225. Volcano casting effect
-226. Grand Cross Effect
-227. Snatch
-228. (Nothing)
-229. (Nothing)
-230. (Nothing)
-231. Map Light Pillar Animation 1
-232. Sacrifice (Visual Effect)
-233. Fog
-234. Spell Breaker
-235. Dispell
-236. Deluge Cast Aura
-237. Violent Gale Cast Aura
-238. Magnetic Earth Cast Aura
-239. Volcano (Visual Effect)
-240. Deluge (Visual Effect)
-241. Violent Gale (Visual Effect)
-242. Magnetic Earth (Visual Effect)
-243. (Invalid)
-244. Magic Rod
-245. Holy Cross
-246. Shield Charge
-247. Map Light Pillar Animation 2
-248. Resistant Souls
-249. Shield Boomerang
-250. Spear Quicken
-251. Devotion
-252. Reflect Shield
-253. Absorb Spirit Spheres
-254. Mental Strength (Visual Effect)
-255. Elemental Endow (Fire)
-256. Elemental Endow (Water)
-257. Elemental Endow (Wind)
-258. Elemental Endow (Earth)
-259. Map Light Pillar Animation 3
-260. Map Light Pillar Animation 4
-261. Fury Cast Animation
-262. Raging Quadruple Blow
-263. Raging Quadruple Blow 2
-264. (Nothing)
-265. Throw Spirit Sphere
-266. Raging Quadruple Blow 3
-267. Occult Impaction
-268. Steal Coin
-269. Divest Weapon
-270. Divest Shield
-271. Divest Armor
-272. Divest Helm
-273. Raging Quadruple Blow 4
-274. Steal Coin Animation
-275. Back Stab Animation
-276. Raging Thrust
-277. Dissoance Map Unit
-278. Lullaby Map Unit
-279. Mr Kim a Rich Man Map Unit
-280. Eternal Chaos Map Unit
-281. A Drum on the Battlefield Map Unit
-282. The Ring Of Nibelungen Map Unit
-283. Loki's Veil Map Unit
-284. Into the Abyss Map Unit
-285. Invunerable Siegfriend Map Unit
-286. A Wistle Map Unit
-287. Assassin Cross of Sunset Map Unit
-288. A Poem of Bragi Map Unit
-289. The Apple Of Idun Map Unit
-290. Ugly Dance Map Unit
-291. Humming Map Unit
-292. Please don't Forget Me Map Unit
-293. Fortune's Kiss Map Unit
-294. Service For You Map Unit
-295. Frost Joke
-296. Scream
-297. Fire Works (Visual Effect)
-298. Acid Terror Animnation
-299. (Nothing)
-300. Chemical Protection
-301. Fire Works (Sound Effect)
-302. Bomb
-303. (Unused)
-304. Teleportation Animation
-305. Pharmacy Success
-306. Pharmacy Failed
-307. Forest Light 1
-308. Throw Stone
-309. First Aid
-310. Sprinkle Sand
-311. Crazy Uproar
-312. Heal Effect
-313. Heal Effect 2
-314. Old Map Exit effect (Unused)
-315. Safety Wall
-316. Warp Portal Animation 1
-317. Warp Portal Animation 2
-318. Magnus Exorcisimus Map Unit
-319. Sanctuary Map Unit
-320. Offensive Heal
-321. Warp NPC
-322. Forest Light 2
-323. Forest Light 3
-324. Forest Light 4
-325. Heal Effect 4
-326. Chase Walk Left Foot
-327. Chse Walk Right Foot
-328. Monk Asura Strike
-329. Triple Strike
-330. Combo Finish
-331. Natural HP Regeneration
-332. Natural SP Regeneration
-333. Autumn Leaves
-334. Blind
-335. Poison
-336. Kyrie Eleison/Parrying Shield
-337. Class Change
-338. Super Novice/Taekwon Level Up Angel
-339. Spiral Pierce
-340. (Nothing)
-341. Wedding Warp Portal
-342. Wedding Skill
-343. Another Merry Skill
-344. Character map entry effect
-345. Wings (Animated)
-346. Like Moonlight But Blue
-347. Wedding Ceremony
-348. Like 1000 Blade trepassing
-349. Waterfall (Horizonatal)
-350. Waterfall (Vertical)
-351. Small Waterfall (Horizonatal)
-352. Small Waterfall (Vertical)
-353. Dark Waterfall (Horizonatal)
-354. Dark Waterfall (Vertical)
-355. Dark Small Waterfall (Horizonatal)
-356. Dark Small Waterfall (Vertical)
-357. (Nothing)
-358. Niflheim Ghost
-359. Niflheim Bat Slow
-360. Niflheim Bat Fast
-361. Soul Destroyer
-362. Trancendant Level 99 Aura 1
-363. Valentine Day Heart With Wings
-364. Valentine Day Heart
-365. Gloria Domini
-366. Martyr's Reckoning
-367. Aura Blade
-368. Berserk
-369. Concentration
-370. Gospel Map Unit
-371. Level Up
-372. Death
-373. House Smoke
-374. Basilica
-375. Assumptio (Visual Effect)
-376. Palm Strike
-377. Matyr's Reckoning 2
-378. Soul Drain (1st Part)
-379. Soul Drain (2nd Part)
-380. Magic Crasher
-381. Blue Starburst (Unknown use)
-382. (Nothing)
-383. Health Conversion
-384. Soul Change (Sound Effect)
-385. Soul Change (Visual Effect)
-386. True Sight
-387. Falcon Assault
-388. Focused Arrow Strike (Sound Effect)
-389. Wind Walk
-390. Shattering Strike
-391. Cart Boost
-392. Reject Sword
-393. Arrow Vulcan
-394. Sheltering Bliss
-395. Marionette Control (Sound Effect)
-396. Marionette Control (Visual Effect)
-397. Trancended 99 Aura (Middle)
-398. Trancended 99 Aura (Bottom)
-399. Head Crush
-400. Joint Beat
-401. Napalm Vulcan Sound
-402. Dangerous Soul Collect
-403. Mind Breaker
-404. Fiber Lock
-405. Wall Of Fog
-406. Soul Burn
-407. Soul Change
-408. Mom, Dad, I love you! (Baby Skill)
-409. Meteor Assault
-410. Rainbow
-411. Leap
-412. Like Throw Spirit Sphere
-413. Axe Kick
-414. Round Kick
-415. Counter Kick
-416. (Nothing)
-417. Flash
-418. Warmth Lightning
-419. Kaite (Visual Effect)
-420. Eswoo (Small) (Visual Effect)
-421. Eswoo (Alt. Small) (Visual Effect)
-422. Eswoo (Normal) (Visual Effect)
-423. Eswoo (Alt. Normal) (Visual Effect)
-424. Spirit Link (Visual Effect)
-425. Esma Hit (Visual Effect)
-426. Sprint Collision (Visual Effect)
-427. (Nothing)
-428. (Nothing)
-429. Taekwon Kick Hit 1
-430. Taekwon Kick Hit 2
-431. Taekwon Kick Hit 3
-432. Solar, Lunar and Stellar Perception (Visual Effect)
-433. Solar, Lunar and Stellar Opposition (Visual Effect)
-434. Taekwon Kick Hit 4
-435. Whirlwind Kick
-436. White Barrier (Unused)
-437. White barrier 2 (Unused)
-438. Kaite Reflect Animation
-439. Flying Side Kick
-440. Assumptio (Animation)
-441. Comfort Skills Cast Aura
-442. Foot Prints caused by Sprint.
-443. (Nothing)
-444. Sprint Stop Animation
-445. High Jump (Jump)
-446. High Jump (Return Down)
-447. Running Left Foot
-448. Running Right Foot
-449. KA-Spell (1st Part)
-450. Darkcross
-451. Dark Strike
-452. Something Like Jupitel Thunder
-453. Paralized
-454. Like Blind
-455. Another Warmth Lightning
-456. Power Up
-457. Flying Side Kick (2nd Part)
-458. Running/Sprint (running into a wall)
-459. Brown tornado that spins sprite (unused)
-460. Green tornado (unused)
-461. Blue tornado (unused)
-462. Kaupe Dodge Effect
-463. Kaupe Dodge Effect
-464. White tornado (unused)
-465. Purple tornado (unused)
-466. Another Round Kick
-467. Warm/Mild Wind (Earth)
-468. Warm/Mild Wind (Wind)
-469. Warm/Mild Wind (Water)
-470. Warm/Mild Wind (Fire)
-471. Warm/Mild Wind (Undead)
-472. Warm/Mild Wind (Shadow)
-473. Warm/Mild Wind (Holy)
-474. (Nothing)
-475. Demon of The Sun Moon And Stars (Level 1)
-476. Demon of The Sun Moon And Stars (Level 2)
-477. Demon of The Sun Moon And Stars (Level 3)
-478. Demon of The Sun Moon And Stars (Level 4)
-479. Demon of The Sun Moon And Stars (Level 5)
-480. Demon of The Sun Moon And Stars (Level 6)
-481. Demon of The Sun Moon And Stars (Level 7)
-482. Demon of The Sun Moon And Stars (Level 8)
-483. Demon of The Sun Moon And Stars (Level 9)
-484. Demon of The Sun Moon And Stars (Level 10)
-485. Mental Strength Lightning but White
-486. Mental Strength Lightning
-487. Demon of The Sun Moon And Stars Ground Effect
-488. Comfort Skills
-489. (Nothing)
-490. (Nothing)
-491. Element Potions
-492. Cooking Foods
-493. Enchant Deadly Poison
-494. Throwing Tomahawk
-495. Full Strip Sound
-496. Preserve
-497. Twilight Alchemy 1
-498. Twilight Alchemy 2
-499. Twilight Alchemy 3
-500. Player Become Blue with Blue Aura
-501. Chase Walk Animation
-502. Player Become Yellow with Yellow Aura
-503. Soul Link Word
-504. (Nothing)
-505. Memorize
-506. (Nothing)
-507. Authoritative Badge
-508. Fire Cracker
-509. Valentine Day Hearth (Wings)
-510. Champion Asura Strike
-511. (Nothing)
-512. Chain Crush Combo
-513. Area Cast
-514. Really Big Circle
-515. Einbroch Fog
-516. Airship Cloud
-517. (Nothing)
-518. Cart Termination
-519. Speed Down Potion
-520. Shield Bumerang
-521. Player Become Red with Red Aura
-522. Gravitation Field
-523. Tarot Card of Fate (The Fool)
-524. Tarot Card of Fate (The Magician)
-525. Tarot Card of Fate (The High Priestess)
-526. Tarot Card of Fate (The Chariot)
-527. Tarot Card of Fate (Strength)
-528. Tarot Card of Fate (The Lovers)
-529. Tarot Card of Fate (The Wheel of Fortune)
-530. Tarot Card of Fate (The Hanged Man)
-531. Tarot Card of Fate (Death)
-532. Tarot Card of Fate (Temperance)
-533. Tarot Card of Fate (The Devil)
-534. Tarot Card of Fate (The Tower)
-535. Tarot Card of Fate (The Star)
-536. Tarot Card of Fate (The Sun)
-537. Acid Demonstration
-538. Player Become Green with Green Aura
-539. Throw Random Bottle
-540. Instant Small->Normal
-541. (Nothing)
-542. KA-Spell (1st Part)
-543. Kahii
-544. Warmth Red Sprite
-545. Sound And... PUFF Client Crash :P
-546. Kaupe
-547. Estin
-548. Instant Red Sprite
-549. Instant Blue Sprite
-550. Another Effect like Running Hit
-551. Effect Like Estun but with Circle
-552. (Nothing)
-553. Esma
-554. Large White Cloud
-555. Estun
-556. (Nothing)
-557. Juperos Energy Waterfall (Horizontal)
-558. Juperos Energy Waterfall (Vertical)
-559. Juperos Energy Waterfall Fast (Horizontal)
-560. Juperos Energy Waterfall Fast (Vertical)
-561. Juperos Warp
-562. Juperos Warp
-563. Earthquake Effect (Juperos Elevator)
-564. Wedding Cast
-565. Filir Moonlight Lvl 1
-566. Filir Moonlight Lvl 2
-567. Filir Moonlight Lvl 3
-568. Another Job Level Up
-569. Amistr Bulwark
-570. Amistr Castling
-571. Amistr Bloodlust
-572. Warmth Soul
-573. Twilight Alchemy 1
-574. Twilight Alchemy 2
-575. Twilight Alchemy 3
-576. Box Effect (Thunder)
-577. Box Effect (Cloud)
-578. Box Effect (Curse)
-579. Box Effect (Sleep)
-580. Box Effect (Rain)
-581. Box Effect (Sunlight)
-582. Another Super Novice/Taekwon Angel
-583. Warmth Hit
-584. Full Buster
-585. 5 Medium Size Explosion
-586. Somatology Lab Mobs Aura
-587. Big Purple Flame
-588. Little Red Flame
-589. Eswoo
-590. Running Stop
-591. (Nothing)
-592. Thanatos Tower Bloody Clouds
-593. Food Effect (STR)
-594. Food Effect (INT)
-595. Food Effect (VIT)
-596. Food Effect (AGI)
-597. Food Effect (DEX)
-598. Food Effect (LUK)
-599. Cast Time Sound and Flashing Animation on Player
-600. Throw Venom Knife
-601. Sight Blaster
-602. Close Confine (Grab Effect)
-603. Spinning fire ball (like 50, but smaller)
-604. Close Confine (Ground Effect)
-605. (Nothing)
-606. Pang Voice (Visual Effect)
-607. Wink of Charm (Visual Effect)
-608. Cooking Success
-609. Cooking Failed
-610. Success
-611. Failed
-612. Korean Words and /no1 Emoticon
-613. Throw Shuriken
-614. Throw Kunai
-615. Throw Fumma Shuriken
-616. Throw Money
-617. Illusionary Shadow
-618. Crimson Fire Bolossom
-619. Lightning Spear Of Ice
-620. Water Escape Technique
-621. Wind Blade
-622. Lightning Crash
-623. Piercing Shot
-624. Kamaitachi
-625. Madness Canceller
-626. Adjustment
-627. Disarm (Sound Effect)
-628. Dust
-629. (Nothing)
-630. Shadow Slash
-631. Reverse Tatami Map Unit
-632. Mist Slash
-633. Final Strike
-634. Crimson Fire Formation
-635. Dragon Fire Formation
-636. Falling Ice Pillar
-637. Desperado
-638. Ground Drift Grenade
-639. Ground Drift Grenade
-640. Ground Drift Grenade
-641. Ground Drift Grenade
-642. Ground Drift Grenade
-643. Rapid Shower
-644. Magic Bullet
-645. Spread Attack
-646. Tracking (Shown While Casting)
-647. Tracking
-648. Triple Action
-649. Bull's Eye
-650. Ice Cave Level 4 Circle
-651. Ice Cave Level 4 Big Circle
-652. Like Regeneration Number but Red with a Sound
-653. Like Regeneration Number but Red
-654. Like Regeneration Number but Purple
-655. Mobs Skill (Change Undead Element)
-656. Last animation before Change Undead Element finish
-657. (Nothing)
-658. (Nothing)
-659. (Nothing)
-660. (Nothing)
-661. (Nothing)
-662. (Nothing)
-663. (Nothing)
-664. (Nothing)
-665. Little Blue Ball Falling From the Sky
-666. Earthquake
-667. (Nothing)
-668. Dragonfear
-669. Wide Bleeding
-670. Dragon fear (Visual Effect)
-671. The Japan Earth Symbol (like 'Seven Wind Lv1', but on the ground)
-672. The Japan Wind Symbol (like 'Seven Wind Lv2', but on the ground)
-673. Map turns Blue (like Soul Link)
-674. Evil Land Cell
-675. Like Parrying/Kyrie Eleison barrier but Yellow with small Cross in every barrier piece
-676. Slow Casting
-677. Critical Wounds/Bleeding Attack
-678. White 99 Aura Bubbles
-679. Green Aura (Middle)
-680. Green Aura (Bottom)
-681. Dimensional Gorge Map Effect
-682. I Love You Banner
-683. Happy White Day Banner
-684. Happy Valentine Day Banner
-685. Happy Birthday Banner
-686. Merry Christmas Banner
-687. Cast Circle-Like effect 1
-688. Cast Circle-Like effect 2
-689. Endless Tower Map Effect
-690. Burning Flame (Red)
-691. Burning Flame (Green)
-692. Unknown Aura Bubbles (Small ghosts)
-693. Translucent yellow circle
-694. Translucent green circle
-695. Rotating green light
-696. The same of 690 and 691 but Blue/Purple
-697. (Nothing)
-698. (Nothing)
-699. Fall of powder from the sky and raise of some leaf
-700. Big Colored Green Sphere.
-701. Huge Blue Sphere
-702. Little Colored Violet Sphere
-703. Light Infiltration with fall of pownder
-704. Client Error (mobile_ef02.str)
-705. Client Error (mobile_ef01.str)
-706. Client Error (mobile_ef03.str)
-707. Client Crash :P
-708. Storm Gust (same as 89)
-709. A Firework that split in 4 mini fireworks
-710. A Sphere like Effect 701 but Green, and a bit more larger
-711. A big violet wall
-712. A Little Flame Sphere
-713. A lot of Very Small and Yellow Sphere
-714. (Nothing)
-715. Little blue Basilica
-716. Same as 715
-717. Christmas Carol (copy of Angelus)
-718. Judex (Visual Effect)
-719. Renovatio (light beam)
-720. Yellow version of Soul Breaker
-721. Adoramus (lightning bolt)
-722. Ignition Break (big explosion)
-723. Hundred Spear (sound effect)
-724. Green version of Detecting
-725. Oratorio (like Detecting)
-726. Frost Misty (blue vapor and bubbles)
-727. Crimson Rock
-728. Small fire (part of Hell Inferno)
-729. Marsh of Abyss (like Close Confine)
-730. Small, cartoony explosion (part of Soul Expansion)
-731. Dragon Howling (blinking, expanding circle)
-732. Spike from the ground
-733. Fluffy Ball flying by
-734. Chain Lightning
-735. (Nothing)
-736. (Nothing)
-737. (Nothing)
-738. (Nothing)
-739. Old Magenta Trap
-740. Old Cobald Trap
-741. Old Maize Trap
-742. Old Verdure Trap
-743. White Ranger Trap
-744. Camouflage
-745. Aimed Bolt (crosshairs)
-746. Arrow Storm
-747. Falling white feathers
-748. Falling blue feathers
-749. Millennium Shield
-750. Detonator (blue sparkles)
-751. Releasing summoned warlock spheres
-752. Like Energy Coat, but not as dark
-753. Clearance
-754. Green warp portal (root of Epiclesis)
-755. Oratio (spinning blue symbol)
-756. Enchant Blade (like Berserk Potion)
-757. Third Class Aura (Middle)
-758. Rolling Cutter - Spin Count 1
-759. Rolling Cutter - Spin Count 2
-760. Rolling Cutter - Spin Count 3
-761. Rolling Cutter - Spin Count 4
-762. Rolling Cutter - Spin Count 5
-763. Rolling Cutter - Spin Count 6
-764. Rolling Cutter - Spin Count 7
-765. Rolling Cutter - Spin Count 8
-766. Rolling Cutter - Spin Count 9
-767. Rolling Cutter - Spin Count 10
-768. Blinking
-769. Cross Ripper Slasher (flying knives)
-770. Strip sound
-771. Poison sound
-772. Poison particles
-773. Expanding purple aura (part of Phantom Menace)
-774. Axe Boomerang
-775. Spinning character sprite
-776. Like Desperado sound effect
-777. Faded light from the ground [S]
-778. Expanding white aura (like Clearance)
-779. Faded light from the ground [S]
-780. Expanding red aura (from Infrared Scan)
-781. Magnetic Field (purple chains)
-782. All-around shield [S]
-783. Yellow shaft of light
-784. White shaft of light
-785. Upward flying wrenches
-786. Symbol with bleeping sound [S]
-787. Flare Launcher (line of fire)
-788. Venom Impress (green skull)
-789. Freezing Status Effect (two ancillas)
-790. Burning Status Effect (flame symbol)
-791. Two ice shots
-792. Upward streaming white particles
-793. Same, but more brief
-794. Infrared Scan (red lasers)
-795. Power Swing (axe crash)
-796. Spinning blue triangles
-797. Stapo
-798. Red triangles (like Intimidate)
-799. Stasis (expanding blue mist) [S]
-800. Hell Inferno (red lights)
-801. Jack Frost unit (ice spikes)
-802. White Imprison
-803. Recognized Spell
-804. Tetra Vortex [S]
-805. Tetra Vortex cast animation (blinking colors)
-806. Flying by as fast as a rocket
-807. Kidnapping sound
-808. Like Recognized Spell, but one symbol
-809. Shadowy filter [S]
-810. Damp thud sound [S]
-811. Body Painting
-812. Black expanding aura
-813. Masquerade - Enervation
-814. Masquerade - Groomy
-815. Masquerade - Ignorance
-816. Masquerade - Laziness
-817. Masquerade - Unlucky
-818. Masquerade - Weakness
-819. (Nothing)
-820. Strip Accessory
-821. Waterfall
-822. Dimension Door (spinning blue aura)
-823. in-the-manhole effect
-824. Some filter
-825. Dimension Door (aura + blue light)
-826. Expanding black casting anim.
-827. Chaos Panic (spinning brown aura)
-828. Maelstrom (spinning pink aura)
-829. Bloody Lust (spinning red aura)
-830. Blue aura (Arch Bishop cast animation)
-831. Blue cone [S]
-832. Sonic Wave
-833. (Nothing)
-834. Light shooting away circlish
-835. Fastness yellow-reddish
-836. Fastness yellow-pinkish
-837. Casting [S]
-838. Watery aura
-839. [Client Error]
-840. Red cone
-841. Green cone
-842. Yellow cone
-843. White cone
-844. Purple cone
-845. light-bluish turquoise cone
-846. (Nothing)
-847. Gloomy Day (white/red light rays)
-848. Gloomy Day (white/blue light rays)
-849. (Nothing)
-850. (Nothing)
-851. Green mushy-foggy stuff (dull)
-852. Green mushy-foggy stuff (bright)
-853. Bright green flower area
-854. Blue beam of light with notes
-855. (Nothing)
-856. Reverberation (red eighth notes)
-857. Severe Rainstorm (falling red and blue beams)
-858. Deep Sleep Lullaby (two red beams and music notes)
-859. Holograph of text (blue)
-860. Distorted note (blue)
-861. Green aura (from Circle of Life's Melody)
-862. Randomize Spell (holograph of text)
-863. Dominion Impulse (two spears of light)
-864. Gloomy Day (colorful lines)
-865. Blue aura (from Song of Mana)
-866. Dance with a Warg (Wargs)
-867. Yellow aura (from Dance with a Warg)
-868. Song of Mana (Violies)
-869. Strip sound [S]
-870. Ghostly Succubuses of fire
-871. Red aura (from Lerad's Dew)
-872. Lerad's Dew (Minerals)
-873. Stargate-wormhole stuff (bright purple)
-874. Melody of Sink (Ktullanuxes)
-875. Stargate-wormhole stuff (bright turquoise)
-876. Warcry of Beyond (Garms)
-877. Stargate-wormhole stuff (white)
-878. Unlimited Humming Voice (Miyabi Ningyos)
-879. Siren's Voice (heart-like)
-880. Bluish castish cone
-881. Blue aura
-882. Whirl of fireflies (red)
-883. Epiclesis (transparent green tree)
-884. Green beam
-885. Blue light beams
-886. Blue castish cone
-887. Wavy sparks
-888. Earth Shaker (same as 432)
-889. Fast light beams
-890. Rotation
-891. Magic shots [S]
-892. Fastness with hitting sound[S]
-893. Blue-white light passing by
-894. (Nothing)
-895. Big wheel of flat light beams
-896. Still sun shaped lightning aura
-897. Animated sun shaped lightning aura
-898. Animated, curvy sun shaped lightning aura
-899. White/red light shots from below
-900. Animated, slow curvy sun shaped lightning aura
-901. Explosion
-902. Floating bedtable texture
-903. Castish flamey cone
-904. Yellow/pink lights passing by
-905. Expanding circle
-906. Shield Press (falling shield)
-907. Chainy, metalish sound [S]
-908. Prestige (sphere of yellow particles)
-909. Banding (sphere of red particles)
-910. Inspiration (sphere of blue particles)
-911. Green castish animation [S]
-912. Wall of Thorns unit (green fog cloud)
-913. Magic projectiles
-914. (Nothing)
-915. Crazy Weed
-916. Demonic Fire
-917. More angry, demonic flames
-918. Fire Insignia (demonic flames)
-919. Hell's Plant (green snapping plant)
-920. Fire Walk unit
-921. Vacuum Extreme (whirlwind)
-922. Psychic Wave
-923. Poison Buster
-924. Poisoning animation
-925. Some filter
-926. Electric Walk unit
-927. Earth Grave (speary roots)
-928. Ice cloud projectiles
-929. Warmer (field of flames)
-930. Varetyr Spear (falling spear)
-931. (Nothing)
-932. Firefly
-933. [Client Crash]
-934. White, castishly expanding cone
-935. Green magic projectile
-936. Red, castishly expanding cone
-937. Yellow, castishly expanding cone
-938. Dark-red, castishly expanding cone
-939. Blue, conish aura
-940. Snow flake
-941. Explosion of red, demonic fire
-942. Expanding, white dome
-943. Green, fluffy projectile
-944. Falling gems
-945. (Nothing)
-946. Floating lights
-947. Blue lightning sphere
-948. Two blue lightning spheres
-949. Flat, spinning diamond
-950. Circling, planetlike spheres
-951. Three lightning spheres
-952. Flat, spinning gem and two lightning spheres
-953. Spinning, planetlike spheres
-954. Two lightblue glowing spheres
-955. Three spinning flame spheres
-956. Flame
-957. Spinning planetlike sphere
-958. Two flames
-959. Purple flame
-960. Small yellow explosion
-961. Cartoony whirlwind
-962. Rising fire
-963. Dark filter (like Stone Curse)
-964. Same as 920
-965. Small white explosion
-966. Bone crack
-967. Another little explosion
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index 343eb02cb..6cb7eb135 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -5992,6 +5992,17 @@ Example usage:
---------------------------------------
+*removespecialeffect(<effect number>{, <send_target>{, <unit id>{, <account id>}}})
+*removespecialeffect(<effect number>{, <send_target>{, "<NPC Name>"{, <account id>}}})
+
+Works for:
+ main client from version 2018-10-02
+ re client from version 2018-10-02
+This command will remove special effect. All parameters same with specialeffect.
+Examples and detailed explanation about parameters see in specialeffect.
+
+---------------------------------------
+
*specialeffect2(<effect number>{, <send_target>{, "<Player Name>"}})
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ -10172,3 +10183,19 @@ Show in client message by <message_id> from msg string table.
Optional <color> can be used for set color for whole message.
---------------------------------------
+
+*camerainfo()
+
+Show or hide camera info window.
+Works for 20160525 clients or newer.
+
+---------------------------------------
+
+*changecamera(<range>, <rotation>, <latitude>{, <target>})
+
+Change camera range, rotation, latitude.
+The optional target parameter specifies who will get changed
+camera.
+Works for 20160525 clients or newer.
+
+---------------------------------------
diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h
index f5875fe11..21b90ee50 100644
--- a/src/common/HPMDataCheck.h
+++ b/src/common/HPMDataCheck.h
@@ -660,6 +660,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_ZC_ADD_ITEM_TO_MAIL", sizeof(struct PACKET_ZC_ADD_ITEM_TO_MAIL), SERVER_TYPE_MAP },
{ "PACKET_ZC_ADD_ITEM_TO_STORE", sizeof(struct PACKET_ZC_ADD_ITEM_TO_STORE), SERVER_TYPE_MAP },
{ "PACKET_ZC_ADD_MEMBER_TO_GROUP", sizeof(struct PACKET_ZC_ADD_MEMBER_TO_GROUP), SERVER_TYPE_MAP },
+ { "PACKET_ZC_CAMERA_INFO", sizeof(struct PACKET_ZC_CAMERA_INFO), SERVER_TYPE_MAP },
{ "PACKET_ZC_CASH_ITEM_DELETE", sizeof(struct PACKET_ZC_CASH_ITEM_DELETE), SERVER_TYPE_MAP },
{ "PACKET_ZC_CASH_TIME_COUNTER", sizeof(struct PACKET_ZC_CASH_TIME_COUNTER), SERVER_TYPE_MAP },
{ "PACKET_ZC_CHECKNAME", sizeof(struct PACKET_ZC_CHECKNAME), SERVER_TYPE_MAP },
@@ -707,6 +708,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE", sizeof(struct PACKET_ZC_PRIVATE_AIRSHIP_RESPONSE), SERVER_TYPE_MAP },
{ "PACKET_ZC_PROPERTY_HOMUN", sizeof(struct PACKET_ZC_PROPERTY_HOMUN), SERVER_TYPE_MAP },
{ "PACKET_ZC_READ_MAIL", sizeof(struct PACKET_ZC_READ_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_REMOVE_EFFECT", sizeof(struct PACKET_ZC_REMOVE_EFFECT), SERVER_TYPE_MAP },
{ "PACKET_ZC_REPAIRITEMLIST", sizeof(struct PACKET_ZC_REPAIRITEMLIST), SERVER_TYPE_MAP },
{ "PACKET_ZC_REPAIRITEMLIST_sub", sizeof(struct PACKET_ZC_REPAIRITEMLIST_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_SEARCH_STORE_INFO_ACK", sizeof(struct PACKET_ZC_SEARCH_STORE_INFO_ACK), SERVER_TYPE_MAP },
diff --git a/src/map/achievement.c b/src/map/achievement.c
index 1fb513ea0..68fc8a983 100644
--- a/src/map/achievement.c
+++ b/src/map/achievement.c
@@ -1016,44 +1016,56 @@ static bool achievement_check_title(struct map_session_data *sd, int title_id) {
return false;
}
-/**
- * Achievement rewards are given to player
- * @param sd session data
- * @param ad achievement data
- */
-static void achievement_get_rewards(struct map_session_data *sd, const struct achievement_data *ad) {
- int i = 0;
- struct achievement *ach = NULL;
-
+static void achievement_get_rewards_buffs(struct map_session_data *sd, const struct achievement_data *ad)
+{
nullpo_retv(sd);
nullpo_retv(ad);
- if ((ach = achievement->ensure(sd, ad)) == NULL)
- return;
-
- /* Buff */
if (ad->rewards.bonus != NULL)
script->run(ad->rewards.bonus, 0, sd->bl.id, 0);
+}
- /* Give Items */
- for (i = 0; i < VECTOR_LENGTH(ad->rewards.item); i++) {
- struct item it = { 0 };
- int total = 0;
+// TODO: kro send items by rodex
+static void achievement_get_rewards_items(struct map_session_data *sd, const struct achievement_data *ad)
+{
+ nullpo_retv(sd);
+ nullpo_retv(ad);
- it.nameid = VECTOR_INDEX(ad->rewards.item, i).id;
- total = VECTOR_INDEX(ad->rewards.item, i).amount;
+ struct item it = { 0 };
+ it.identify = 1;
- it.identify = 1;
+ for (int i = 0; i < VECTOR_LENGTH(ad->rewards.item); i++) {
+ it.nameid = VECTOR_INDEX(ad->rewards.item, i).id;
+ int total = VECTOR_INDEX(ad->rewards.item, i).amount;
//Check if it's stackable.
if (!itemdb->isstackable(it.nameid)) {
- int j = 0;
- for (j = 0; j < total; ++j)
- pc->additem(sd, &it, (it.amount = 1), LOG_TYPE_SCRIPT);
+ it.amount = 1;
+ for (int j = 0; j < total; ++j)
+ pc->additem(sd, &it, 1, LOG_TYPE_SCRIPT);
} else {
- pc->additem(sd, &it, (it.amount = total), LOG_TYPE_SCRIPT);
+ it.amount = total;
+ pc->additem(sd, &it, total, LOG_TYPE_SCRIPT);
}
}
+}
+
+/**
+ * Achievement rewards are given to player
+ * @param sd session data
+ * @param ad achievement data
+ */
+static bool achievement_get_rewards(struct map_session_data *sd, const struct achievement_data *ad)
+{
+ nullpo_retr(false, sd);
+ nullpo_retr(false, ad);
+
+ struct achievement *ach = achievement->ensure(sd, ad);
+ if (ach == NULL)
+ return false;
+
+ /* Buff */
+ achievement->get_rewards_buffs(sd, ad);
ach->rewarded_at = time(NULL);
@@ -1062,9 +1074,14 @@ static void achievement_get_rewards(struct map_session_data *sd, const struct ac
VECTOR_PUSH(sd->title_ids, ad->rewards.title_id);
clif->achievement_send_list(sd->fd, sd);
} else {
- clif->achievement_reward_ack(sd->fd, sd, ad);
clif->achievement_send_update(sd->fd, sd, ad); // send update.
+ clif->achievement_reward_ack(sd->fd, sd, ad);
}
+
+ /* Give Items */
+ achievement->get_rewards_items(sd, ad);
+
+ return true;
}
/**
@@ -1977,4 +1994,6 @@ void achievement_defaults(void)
achievement->init_titles = achievement_init_titles;
achievement->check_title = achievement_check_title;
achievement->get_rewards = achievement_get_rewards;
+ achievement->get_rewards_buffs = achievement_get_rewards_buffs;
+ achievement->get_rewards_items = achievement_get_rewards_items;
}
diff --git a/src/map/achievement.h b/src/map/achievement.h
index beba120a2..de5eaa060 100644
--- a/src/map/achievement.h
+++ b/src/map/achievement.h
@@ -277,7 +277,9 @@ struct achievement_interface {
/* */
void (*init_titles) (struct map_session_data *sd);
bool (*check_title) (struct map_session_data *sd, int title_id);
- void (*get_rewards) (struct map_session_data *sd, const struct achievement_data *ad);
+ bool (*get_rewards) (struct map_session_data *sd, const struct achievement_data *ad);
+ void (*get_rewards_buffs) (struct map_session_data *sd, const struct achievement_data *ad);
+ void (*get_rewards_items) (struct map_session_data *sd, const struct achievement_data *ad);
};
#ifdef HERCULES_CORE
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 2538f797c..a7dc5dd95 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -9810,6 +9810,24 @@ ACMD(reloadclans)
return true;
}
+// show camera window or change camera parameters
+ACMD(camerainfo)
+{
+ if (*message == '\0') {
+ clif->camera_showWindow(sd);
+ return true;
+ }
+ float range = 0;
+ float rotation = 0;
+ float latitude = 0;
+ if (sscanf(message, "%15f %15f %15f", &range, &rotation, &latitude) < 3) {
+ clif->message(fd, msg_fd(fd, 452)); // usage @camerainfo range rotation latitude
+ return false;
+ }
+ clif->camera_change(sd, range, rotation, latitude, SELF);
+ return true;
+}
+
/**
* Fills the reference of available commands in atcommand DBMap
**/
@@ -10092,6 +10110,7 @@ static void atcommand_basecommands(void)
ACMD_DEF(leaveclan),
ACMD_DEF(reloadclans),
ACMD_DEF(setzone),
+ ACMD_DEF(camerainfo),
};
int i;
diff --git a/src/map/clif.c b/src/map/clif.c
index 76625f0ba..1e9844f14 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -2789,11 +2789,11 @@ static void clif_item_normal(short idx, struct NORMALITEM_INFO *p, struct item *
static void clif_inventoryList(struct map_session_data *sd)
{
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
clif->inventoryStart(sd, INVTYPE_INVENTORY, "");
#endif
clif->inventoryItems(sd, INVTYPE_INVENTORY);
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
clif->inventoryEnd(sd, INVTYPE_INVENTORY);
#endif
}
@@ -2816,7 +2816,7 @@ static void clif_inventoryItems(struct map_session_data *sd, enum inventory_type
if (normal) {
itemlist_normal.PacketType = inventorylistnormalType;
itemlist_normal.PacketLength = (sizeof(itemlist_normal) - sizeof(itemlist_normal.list)) + (sizeof(struct NORMALITEM_INFO) * normal);
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
itemlist_normal.invType = type;
#endif
@@ -2829,7 +2829,7 @@ static void clif_inventoryItems(struct map_session_data *sd, enum inventory_type
if( equip ) {
itemlist_equip.PacketType = inventorylistequipType;
itemlist_equip.PacketLength = (sizeof(itemlist_equip) - sizeof(itemlist_equip.list)) + (sizeof(struct EQUIPITEM_INFO) * equip);
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
itemlist_equip.invType = type;
#endif
@@ -2849,7 +2849,7 @@ static void clif_inventoryItems(struct map_session_data *sd, enum inventory_type
static void clif_equipList(struct map_session_data *sd)
{
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
clif->inventoryStart(sd, INVTYPE_INVENTORY, "");
clif->inventoryItems(sd, INVTYPE_INVENTORY);
clif->inventoryEnd(sd, INVTYPE_INVENTORY);
@@ -2876,7 +2876,7 @@ static void clif_equipItems(struct map_session_data *sd, enum inventory_type typ
if (equip) {
itemlist_equip.PacketType = inventorylistequipType;
itemlist_equip.PacketLength = (sizeof(itemlist_equip) - sizeof(itemlist_equip.list)) + (sizeof(struct EQUIPITEM_INFO) * equip);
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
itemlist_equip.invType = type;
#endif
@@ -2914,7 +2914,7 @@ static void clif_guildStorageList(struct map_session_data *sd, struct item *item
static void clif_inventoryStart(struct map_session_data *sd, enum inventory_type type, const char *name)
{
-#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
nullpo_retv(sd);
nullpo_retv(name);
@@ -2922,10 +2922,10 @@ static void clif_inventoryStart(struct map_session_data *sd, enum inventory_type
memset(buf, 0, sizeof(buf));
struct ZC_INVENTORY_START *p = (struct ZC_INVENTORY_START *)buf;
p->packetType = 0xb08;
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
p->invType = type;
#endif
-#if PACKETVER_RE_NUM >= 20180919 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180919 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
int strLen = (int)safestrnlen(name, 24);
if (strLen > 24)
strLen = 24;
@@ -2942,12 +2942,12 @@ static void clif_inventoryStart(struct map_session_data *sd, enum inventory_type
static void clif_inventoryEnd(struct map_session_data *sd, enum inventory_type type)
{
-#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
nullpo_retv(sd);
struct ZC_INVENTORY_END p;
p.packetType = 0xb0b;
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
p.invType = type;
#endif
p.flag = 0;
@@ -2983,10 +2983,10 @@ static void clif_storageItems(struct map_session_data *sd, enum inventory_type t
storelist_normal.PacketType = storageListNormalType;
storelist_normal.PacketLength = ( sizeof( storelist_normal ) - sizeof( storelist_normal.list ) ) + (sizeof(struct NORMALITEM_INFO) * normal);
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
storelist_normal.invType = type;
#endif
-#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919
+#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919 && PACKETVER_MAIN_NUM < 20181002
safestrncpy(storelist_normal.name, "Storage", NAME_LENGTH);
#endif
@@ -2997,10 +2997,10 @@ static void clif_storageItems(struct map_session_data *sd, enum inventory_type t
storelist_equip.PacketType = storageListEquipType;
storelist_equip.PacketLength = ( sizeof( storelist_equip ) - sizeof( storelist_equip.list ) ) + (sizeof(struct EQUIPITEM_INFO) * equip);
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
storelist_equip.invType = type;
#endif
-#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919
+#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919 && PACKETVER_MAIN_NUM < 20181002
safestrncpy(storelist_equip.name, "Storage", NAME_LENGTH);
#endif
@@ -3013,11 +3013,11 @@ static void clif_storageItems(struct map_session_data *sd, enum inventory_type t
static void clif_cartList(struct map_session_data *sd)
{
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
clif->inventoryStart(sd, INVTYPE_CART, "");
#endif
clif->cartItems(sd, INVTYPE_CART);
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
clif->inventoryEnd(sd, INVTYPE_CART);
#endif
}
@@ -3043,7 +3043,7 @@ static void clif_cartItems(struct map_session_data *sd, enum inventory_type type
if (normal) {
itemlist_normal.PacketType = cartlistnormalType;
itemlist_normal.PacketLength = (sizeof(itemlist_normal) - sizeof(itemlist_normal.list)) + (sizeof(struct NORMALITEM_INFO) * normal);
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
itemlist_normal.invType = type;
#endif
@@ -3053,7 +3053,7 @@ static void clif_cartItems(struct map_session_data *sd, enum inventory_type type
if (equip) {
itemlist_equip.PacketType = cartlistequipType;
itemlist_equip.PacketLength = (sizeof(itemlist_equip) - sizeof(itemlist_equip.list)) + (sizeof(struct EQUIPITEM_INFO) * equip);
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
itemlist_equip.invType = type;
#endif
@@ -7721,6 +7721,7 @@ static void clif_mvp_noitem(struct map_session_data *sd)
/// 1 = "You are already in a Guild."
/// 2 = "That Guild Name already exists."
/// 3 = "You need the necessary item to create a Guild."
+/// 4 = "Can't create a Guild in this area."
static void clif_guild_created(struct map_session_data *sd, int flag)
{
int fd;
@@ -8207,6 +8208,7 @@ static void clif_guild_invite(struct map_session_data *sd, struct guild *g)
/// 1 = Offer rejected.
/// 2 = Offer accepted.
/// 3 = Guild full.
+/// 4 = Offline or not exists
static void clif_guild_inviteack(struct map_session_data *sd, int flag)
{
int fd;
@@ -8863,6 +8865,45 @@ static void clif_specialeffect_value(struct block_list *bl, int effect_id, int n
clif->send(buf, packet_len(0x284), bl, SELF);
}
}
+
+/// Remove special effects (ZC_REMOVE_EFFECT).
+/// 0b0d <id>.L <effect id>.L
+/// effect id:
+/// @see doc/effect_list.txt
+static void clif_removeSpecialEffect(struct block_list *bl, int effectId, enum send_target target)
+{
+#if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002
+ nullpo_retv(bl);
+
+ struct PACKET_ZC_REMOVE_EFFECT p;
+ p.packetType = 0xb0d;
+ p.aid = bl->id;
+ p.effectId = effectId;
+
+ clif->send(&p, sizeof(p), bl, target);
+
+ if (clif->isdisguised(bl)) {
+ p.aid = -bl->id;
+ clif->send(&p, sizeof(p), bl, SELF);
+ }
+#endif
+}
+
+static void clif_removeSpecialEffect_single(struct block_list *bl, int effectId, struct block_list *targetBl)
+{
+#if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002
+ nullpo_retv(bl);
+ nullpo_retv(targetBl);
+
+ struct PACKET_ZC_REMOVE_EFFECT p;
+ p.packetType = 0xb0d;
+ p.aid = bl->id;
+ p.effectId = effectId;
+
+ clif->send(&p, sizeof(p), targetBl, SELF);
+#endif
+}
+
/**
* Modification of clif_messagecolor to send colored messages to players to chat log only (doesn't display overhead).
*
@@ -17556,6 +17597,7 @@ static int clif_instance(int instance_id, int type, int flag)
case 2:
// S 0x2cc <Standby Position>.W
// To announce Instancing queue creation if no maps available
+ // flag is priority, negative value mean cancel reservation
WBUFW(buf,0) = 0x02CC;
WBUFW(buf,2) = flag;
clif->send(buf,packet_len(0x02CC),&sd->bl,target);
@@ -18837,8 +18879,20 @@ static void clif_monster_hp_bar(struct mob_data *md, struct map_session_data *sd
}
/* [Ind/Hercules] placeholder for unsupported incoming packets (avoids server disconnecting client) */
-static void __attribute__ ((unused)) clif_parse_dull(int fd, struct map_session_data *sd)
+static void clif_parse_dull(int fd, struct map_session_data *sd)
{
+ const int cmd = clif->cmd;
+ Assert_retv(cmd <= MAX_PACKET_DB && cmd >= MIN_PACKET_DB);
+
+ int packet_len = packet_db[cmd].len;
+ if (packet_len == -1) { // variable-length packet
+ packet_len = RFIFOW(fd, 2);
+ }
+ if (sd) {
+ ShowWarning("Unhandled packet 0x%04d (length %d), %s session #%d, %d/%d (AID/CID)\n", cmd, packet_len, sd->state.active ? "authed" : "unauthed", fd, sd->status.account_id, sd->status.char_id);
+ } else {
+ ShowWarning("Unhandled packet 0x%04d (length %d), session #%d\n", cmd, packet_len, fd);
+ }
return;
}
@@ -20624,7 +20678,7 @@ static void clif_achievement_reward_ack(int fd, struct map_session_data *sd, con
nullpo_retv(ad);
p.packet_id = achievementRewardAckType;
- p.received = 1;
+ p.failed = 0;
p.ach_id = ad->id;
clif->send(&p, packet_len(achievementRewardAckType), &sd->bl, SELF);
@@ -21868,6 +21922,32 @@ static void clif_parse_memorial_dungeon_command(int fd, struct map_session_data
}
}
+static void clif_camera_showWindow(struct map_session_data *sd)
+{
+#if PACKETVER >= 20160525
+ struct PACKET_ZC_CAMERA_INFO p;
+ p.packetType = 0xa78;
+ p.action = 1;
+ p.range = 0;
+ p.rotation = 0;
+ p.latitude = 0;
+ clif->send(&p, sizeof(p), &sd->bl, SELF);
+#endif
+}
+
+static void clif_camera_change(struct map_session_data *sd, float range, float rotation, float latitude, enum send_target target)
+{
+#if PACKETVER >= 20160525
+ struct PACKET_ZC_CAMERA_INFO p;
+ p.packetType = 0xa78;
+ p.action = 0;
+ p.range = range;
+ p.rotation = rotation;
+ p.latitude = latitude;
+ clif->send(&p, sizeof(p), &sd->bl, target);
+#endif
+}
+
/*==========================================
* Main client packet processing function
*------------------------------------------*/
@@ -21919,6 +21999,7 @@ static int clif_parse(int fd)
parse_cmd_func = clif->parse_cmd;
cmd = parse_cmd_func(fd,sd);
+ clif->cmd = cmd;
if (VECTOR_LENGTH(HPM->packets[hpClif_Parse]) > 0) {
int result = HPM->parse_packets(fd,cmd,hpClif_Parse);
@@ -21982,8 +22063,8 @@ static int clif_parse(int fd)
else
packet_db[cmd].func(fd, sd);
}
-#ifdef DUMP_UNKNOWN_PACKET
else {
+#ifdef DUMP_UNKNOWN_PACKET
const char* packet_txt = "save/packet.txt";
FILE* fp;
@@ -22009,8 +22090,10 @@ static int clif_parse(int fd)
ShowDump(RFIFOP(fd,0), packet_len);
}
- }
+#else
+ clif->pDull(fd, sd);
#endif
+ }
RFIFOSKIP(fd, packet_len);
@@ -22182,6 +22265,7 @@ void clif_defaults(void)
clif->map_port = 5121;
clif->ally_only = false;
clif->delayed_damage_ers = NULL;
+ clif->cmd = -1;
/* core */
clif->init = do_init_clif;
clif->final = do_final_clif;
@@ -22416,6 +22500,8 @@ void clif_defaults(void)
clif->specialeffect = clif_specialeffect;
clif->specialeffect_single = clif_specialeffect_single;
clif->specialeffect_value = clif_specialeffect_value;
+ clif->removeSpecialEffect = clif_removeSpecialEffect;
+ clif->removeSpecialEffect_single = clif_removeSpecialEffect_single;
clif->millenniumshield = clif_millenniumshield;
clif->spiritcharm = clif_charm;
clif->charm_single = clif_charm_single;
@@ -23026,6 +23112,9 @@ void clif_defaults(void)
clif->cz_req_style_change_sub = clif_cz_req_style_change_sub;
clif->style_change_response = clif_style_change_response;
+ clif->camera_showWindow = clif_camera_showWindow;
+ clif->camera_change = clif_camera_change;
+
// -- Pet Evolution
clif->pPetEvolution = clif_parse_pet_evolution;
clif->petEvolutionResult = clif_pet_evolution_result;
diff --git a/src/map/clif.h b/src/map/clif.h
index 86e53e1e9..13c34c77d 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -684,6 +684,7 @@ struct clif_interface {
uint16 map_port;
char map_ip_str[128];
int map_fd;
+ int cmd;
/* for clif_clearunit_delayed */
struct eri *delay_clearunit_ers;
/* Cash Shop [Ind/Hercules] */
@@ -939,6 +940,8 @@ struct clif_interface {
void (*specialeffect) (struct block_list* bl, int type, enum send_target target);
void (*specialeffect_single) (struct block_list* bl, int type, int fd);
void (*specialeffect_value) (struct block_list* bl, int effect_id, int num, send_target target);
+ void (*removeSpecialEffect) (struct block_list *bl, int effectId, enum send_target target);
+ void (*removeSpecialEffect_single) (struct block_list *bl, int effectId, struct block_list *targetBl);
void (*millenniumshield) (struct block_list *bl, short shields );
void (*spiritcharm) (struct map_session_data *sd);
void (*charm_single) (int fd, struct map_session_data *sd);
@@ -1549,6 +1552,8 @@ struct clif_interface {
void (*petEvolutionResult) (int fd, enum pet_evolution_result result);
void (*party_dead_notification) (struct map_session_data *sd);
void (*pMemorialDungeonCommand) (int fd, struct map_session_data *sd);
+ void (*camera_showWindow) (struct map_session_data *sd);
+ void (*camera_change) (struct map_session_data *sd, float range, float rotation, float latitude, enum send_target target);
};
#ifdef HERCULES_CORE
diff --git a/src/map/messages_main.h b/src/map/messages_main.h
index f26fdb50b..e56eb42a1 100644
--- a/src/map/messages_main.h
+++ b/src/map/messages_main.h
@@ -23,7 +23,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20180829
+Latest version: 20181002
*/
enum clif_messages {
@@ -17569,9 +17569,11 @@ DEATH: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
MSG_ID_AFB = 0xafb,
#endif
#if PACKETVER >= 20150826
-/*20150826 to latest
+/*20150826 to 20180919
해당 태그는 이름으로 사용하실 수 없습니다.
Name with this tag cannot be used.
+20181002 to latest
+ 해당 내용은 이름으로 사용하실 수 없습니다.
*/
MSG_ID_AFC = 0xafc,
#endif
@@ -21285,6 +21287,44 @@ NOW LOADING..
*/
MSG_ID_DD5 = 0xdd5,
#endif
+#if PACKETVER >= 20181002
+/*20181002 to latest
+삭제
+*/
+ MSG_ID_DD6 = 0xdd6,
+/*20181002 to latest
+답장
+*/
+ MSG_ID_DD7 = 0xdd7,
+/*20181002 to latest
+전송
+*/
+ MSG_ID_DD8 = 0xdd8,
+/*20181002 to latest
+이름확인
+*/
+ MSG_ID_DD9 = 0xdd9,
+/*20181002 to latest
+공지
+Notice
+*/
+ MSG_ID_DDA = 0xdda,
+/*20181002 to latest
+일반
+General
+*/
+ MSG_ID_DDB = 0xddb,
+/*20181002 to latest
+반송
+Clear
+*/
+ MSG_ID_DDC = 0xddc,
+/*20181002 to latest
+검색
+Search
+*/
+ MSG_ID_DDD = 0xddd,
+#endif
};
#endif /* MAP_MESSAGES_MAIN_H */
diff --git a/src/map/messages_re.h b/src/map/messages_re.h
index c263150e3..474030df1 100644
--- a/src/map/messages_re.h
+++ b/src/map/messages_re.h
@@ -23,7 +23,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20180919
+Latest version: 20181002
*/
enum clif_messages {
@@ -17045,9 +17045,11 @@ DEATH: %.1f%% (Basic 100.0%% VIP Bonus %.1f%% + %s %.1f%%)
MSG_ID_AFB = 0xafb,
#endif
#if PACKETVER >= 20150826
-/*20150826 to latest
+/*20150826 to 20180919
해당 태그는 이름으로 사용하실 수 없습니다.
Name with this tag cannot be used.
+20181002 to latest
+ 해당 내용은 이름으로 사용하실 수 없습니다.
*/
MSG_ID_AFC = 0xafc,
#endif
diff --git a/src/map/packets.h b/src/map/packets.h
index a897601b3..dc610ce2a 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -4337,4 +4337,22 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x0b0d,10,clif->pDull/*,XXX*/);
#endif
+
+// 2018-10-02aRagexe
+#if PACKETVER_MAIN_NUM >= 20181002
+// new packets
+ packet(0x0b10,10,clif->pDull/*,XXX*/);
+ packet(0x0b11,4,clif->pDull/*,XXX*/);
+// changed packet sizes
+ packet(0x0b08,-1); // ZC_INVENTORY_START
+#endif
+
+// 2018-10-02aRagexeRE
+#if PACKETVER_RE_NUM >= 20181002
+// new packets
+ packet(0x0b10,10,clif->pDull/*,XXX*/);
+ packet(0x0b11,4,clif->pDull/*,XXX*/);
+// changed packet sizes
+#endif
+
#endif /* MAP_PACKETS_H */
diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h
index a9d9a7020..03ece5d27 100644
--- a/src/map/packets_keys_main.h
+++ b/src/map/packets_keys_main.h
@@ -874,7 +874,7 @@
packetKeys(0x6A596301,0x76866D0E,0x32294A45);
#endif
-// 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE
+// 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE
#if PACKETVER == 20131223 || \
PACKETVER == 20140508 || \
PACKETVER == 20140611 || \
@@ -903,7 +903,8 @@
PACKETVER == 20180829 || \
PACKETVER == 20180831 || \
PACKETVER == 20180912 || \
- PACKETVER >= 20180919
+ PACKETVER == 20180919 || \
+ PACKETVER >= 20181002
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h
index bbc1f7332..1b6cd537c 100644
--- a/src/map/packets_keys_zero.h
+++ b/src/map/packets_keys_zero.h
@@ -29,7 +29,7 @@
/* This file is autogenerated, please do not commit manual changes */
-// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero
+// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero
#if PACKETVER == 20171018 || \
PACKETVER == 20171019 || \
PACKETVER == 20171023 || \
@@ -58,7 +58,8 @@
PACKETVER == 20180829 || \
PACKETVER == 20180905 || \
PACKETVER == 20180912 || \
- PACKETVER >= 20180919
+ PACKETVER == 20180919 || \
+ PACKETVER >= 20180928
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h
index 8bc395da1..53bdfa59d 100644
--- a/src/map/packets_shuffle_main.h
+++ b/src/map/packets_shuffle_main.h
@@ -3344,7 +3344,7 @@
packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
#endif
-// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe, 2018-08-01cRagexe, 2018-08-08bRagexe, 2018-08-22cRagexe, 2018-08-29aRagexe, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-19aRagexe
+// 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-28bRagexe, 2018-04-04bRagexe, 2018-04-18aRagexe, 2018-04-25cRagexe, 2018-05-02bRagexe, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-23aRagexe, 2018-05-30aRagexe, 2018-06-05bRagexe, 2018-06-20cRagexe, 2018-06-20eRagexe, 2018-06-21aRagexe, 2018-07-04aRagexe, 2018-07-18bRagexe, 2018-07-18cRagexe, 2018-08-01cRagexe, 2018-08-08bRagexe, 2018-08-22cRagexe, 2018-08-29aRagexe, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-19aRagexe, 2018-10-02aRagexe, 2018-10-02bRagexe
#if PACKETVER == 20140611 || \
PACKETVER == 20150225 || \
PACKETVER == 20180315 || \
@@ -3369,7 +3369,8 @@
PACKETVER == 20180829 || \
PACKETVER == 20180831 || \
PACKETVER == 20180912 || \
- PACKETVER >= 20180919
+ PACKETVER == 20180919 || \
+ PACKETVER >= 20181002
packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h
index 157a8a431..e77b97cac 100644
--- a/src/map/packets_shuffle_re.h
+++ b/src/map/packets_shuffle_re.h
@@ -9662,7 +9662,7 @@
packet(0x083c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
#endif
-// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-09-12dRagexeRE, 2018-09-19aRagexeRE
+// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-09-12dRagexeRE, 2018-09-19aRagexeRE, 2018-10-02aRagexeRE, 2018-10-02bRagexeRE
#if PACKETVER == 20180704 || \
PACKETVER == 20180711 || \
PACKETVER == 20180718 || \
@@ -9671,7 +9671,8 @@
PACKETVER == 20180822 || \
PACKETVER == 20180829 || \
PACKETVER == 20180912 || \
- PACKETVER >= 20180919
+ PACKETVER == 20180919 || \
+ PACKETVER >= 20181002
packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h
index b7253fdda..fedefbe3d 100644
--- a/src/map/packets_shuffle_zero.h
+++ b/src/map/packets_shuffle_zero.h
@@ -36,7 +36,7 @@
/* This file is autogenerated, please do not commit manual changes */
-// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero
+// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero
#if PACKETVER == 20171018 || \
PACKETVER == 20171019 || \
PACKETVER == 20171023 || \
@@ -65,7 +65,8 @@
PACKETVER == 20180829 || \
PACKETVER == 20180905 || \
PACKETVER == 20180912 || \
- PACKETVER >= 20180919
+ PACKETVER == 20180919 || \
+ PACKETVER >= 20180928
packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index af76a66d7..29a3355f7 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -198,7 +198,7 @@ enum packet_headers {
#else
dropflooritemType = 0x9e,
#endif
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
inventorylistnormalType = 0xb09,
#elif PACKETVER >= 20120925
inventorylistnormalType = 0x991,
@@ -209,7 +209,7 @@ enum packet_headers {
#else
inventorylistnormalType = 0xa3,
#endif
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
inventorylistequipType = 0xb0a,
#elif PACKETVER >= 20150226
inventorylistequipType = 0xa0d,
@@ -222,7 +222,7 @@ enum packet_headers {
#else
inventorylistequipType = 0xa4,
#endif
-#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
storageListNormalType = 0xb09,
#elif PACKETVER >= 20120925
storageListNormalType = 0x995,
@@ -233,7 +233,7 @@ enum packet_headers {
#else
storageListNormalType = 0xa5,
#endif
-#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
storageListEquipType = 0xb0a,
#elif PACKETVER >= 20150226
storageListEquipType = 0xa10,
@@ -246,7 +246,7 @@ enum packet_headers {
#else
storageListEquipType = 0xa6,
#endif
-#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
cartlistnormalType = 0xb09,
#elif PACKETVER >= 20120925
cartlistnormalType = 0x993,
@@ -257,7 +257,7 @@ enum packet_headers {
#else
cartlistnormalType = 0x123,
#endif
-#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
cartlistequipType = 0xb0a,
#elif PACKETVER >= 20150226
cartlistequipType = 0xa0f,
@@ -1174,7 +1174,7 @@ struct packet_roulette_itemrecv_ack {
struct packet_itemlist_normal {
int16 PacketType;
int16 PacketLength;
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
uint8 invType;
#endif
struct NORMALITEM_INFO list[MAX_ITEMLIST];
@@ -1183,7 +1183,7 @@ struct packet_itemlist_normal {
struct packet_itemlist_equip {
int16 PacketType;
int16 PacketLength;
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
uint8 invType;
#endif
struct EQUIPITEM_INFO list[MAX_ITEMLIST];
@@ -1192,10 +1192,10 @@ struct packet_itemlist_equip {
struct ZC_STORE_ITEMLIST_NORMAL {
int16 PacketType;
int16 PacketLength;
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
uint8 invType;
#endif
-#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919
+#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919 && PACKETVER_MAIN_NUM < 20181002
char name[NAME_LENGTH];
#endif
struct NORMALITEM_INFO list[MAX_ITEMLIST];
@@ -1203,13 +1203,13 @@ struct ZC_STORE_ITEMLIST_NORMAL {
struct ZC_INVENTORY_START {
int16 packetType;
-#if PACKETVER_RE_NUM >= 20180919 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180919 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
int16 packetLength;
#endif
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
uint8 invType;
#endif
-#if PACKETVER_RE_NUM >= 20180919 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180919 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
char name[];
#else
char name[NAME_LENGTH];
@@ -1218,7 +1218,7 @@ struct ZC_INVENTORY_START {
struct ZC_INVENTORY_END {
int16 packetType;
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
uint8 invType;
#endif
char flag;
@@ -1227,10 +1227,10 @@ struct ZC_INVENTORY_END {
struct ZC_STORE_ITEMLIST_EQUIP {
int16 PacketType;
int16 PacketLength;
-#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919
+#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
uint8 invType;
#endif
-#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919
+#if PACKETVER >= 20120925 && PACKETVER_RE_NUM < 20180829 && PACKETVER_ZERO_NUM < 20180919 && PACKETVER_MAIN_NUM < 20181002
char name[NAME_LENGTH];
#endif
struct EQUIPITEM_INFO list[MAX_ITEMLIST];
@@ -2722,7 +2722,7 @@ struct packet_achievement_update {
struct packet_achievement_reward_ack {
uint16 packet_id;
- uint8 received;
+ uint8 failed;
uint32 ach_id;
} __attribute__((packed));
@@ -2836,6 +2836,21 @@ struct PACKET_CZ_MEMORIALDUNGEON_COMMAND {
int32 command;
} __attribute__((packed));
+struct PACKET_ZC_REMOVE_EFFECT {
+ int16 packetType;
+ uint32 aid;
+ uint32 effectId;
+} __attribute__((packed));
+
+struct PACKET_ZC_CAMERA_INFO {
+ int16 packetType;
+ int8 action;
+ float range;
+ float rotation;
+ float latitude;
+} __attribute__((packed));
+
+
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#pragma pack(pop)
#endif // not NetBSD < 6 / Solaris
diff --git a/src/map/pc.c b/src/map/pc.c
index 961dda9f5..56f42690d 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -4506,14 +4506,15 @@ static int pc_payzeny(struct map_session_data *sd, int zeny, enum e_log_pick_typ
sd->status.zeny -= zeny;
clif->updatestatus(sd,SP_ZENY);
- achievement->validate_zeny(sd, -zeny); // Achievements [Smokexyz/Hercules]
+ if (zeny > 0) {
+ achievement->validate_zeny(sd, -zeny); // Achievements [Smokexyz/Hercules]
+ logs->zeny(sd, type, tsd ? tsd : sd, -zeny);
- if(!tsd) tsd = sd;
- logs->zeny(sd, type, tsd, -zeny);
- if( zeny > 0 && sd->state.showzeny ) {
- char output[255];
- sprintf(output, "Removed %dz.", zeny);
- clif_disp_onlyself(sd, output);
+ if (sd->state.showzeny) {
+ char output[255];
+ sprintf(output, "Removed %dz.", zeny);
+ clif_disp_onlyself(sd, output);
+ }
}
return 0;
@@ -4644,14 +4645,15 @@ static int pc_getzeny(struct map_session_data *sd, int zeny, enum e_log_pick_typ
sd->status.zeny += zeny;
clif->updatestatus(sd,SP_ZENY);
- achievement->validate_zeny(sd, zeny); // Achievements [Smokexyz/Hercules]
+ if (zeny > 0) {
+ achievement->validate_zeny(sd, zeny); // Achievements [Smokexyz/Hercules]
+ logs->zeny(sd, type, tsd ? tsd : sd, zeny);
- if(!tsd) tsd = sd;
- logs->zeny(sd, type, tsd, zeny);
- if( zeny > 0 && sd->state.showzeny ) {
- char output[255];
- sprintf(output, "Gained %dz.", zeny);
- clif_disp_onlyself(sd, output);
+ if (sd->state.showzeny) {
+ char output[255];
+ sprintf(output, "Gained %dz.", zeny);
+ clif_disp_onlyself(sd, output);
+ }
}
return 0;
@@ -4689,7 +4691,7 @@ static int pc_search_inventory(struct map_session_data *sd, int item_id)
* 6 = ?
* 7 = stack limitation
*------------------------------------------*/
-static int pc_additem(struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type)
+static int pc_additem(struct map_session_data *sd, const struct item *item_data, int amount, e_log_pick_type log_type)
{
struct item_data *data;
int i;
diff --git a/src/map/pc.h b/src/map/pc.h
index 17a9b8200..4ee5f560b 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -937,7 +937,7 @@ END_ZEROED_BLOCK; /* End */
int (*inventoryblank) (struct map_session_data *sd);
int (*search_inventory) (struct map_session_data *sd,int item_id);
int (*payzeny) (struct map_session_data *sd,int zeny, enum e_log_pick_type type, struct map_session_data *tsd);
- int (*additem) (struct map_session_data *sd,struct item *item_data,int amount,e_log_pick_type log_type);
+ int (*additem) (struct map_session_data *sd, const struct item *item_data, int amount, e_log_pick_type log_type);
int (*getzeny) (struct map_session_data *sd,int zeny, enum e_log_pick_type type, struct map_session_data *tsd);
int (*delitem) (struct map_session_data *sd,int n,int amount,int type, short reason, e_log_pick_type log_type);
diff --git a/src/map/script.c b/src/map/script.c
index 422085c42..be608830f 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -15361,6 +15361,50 @@ static BUILDIN(specialeffect2)
return true;
}
+static BUILDIN(removespecialeffect)
+{
+ struct block_list *bl = NULL;
+ int type = script_getnum(st, 2);
+ enum send_target target = AREA;
+
+ if (script_hasdata(st, 3)) {
+ target = script_getnum(st, 3);
+ }
+
+ if (script_hasdata(st, 4)) {
+ if (script_isstringtype(st, 4)) {
+ struct npc_data *nd = npc->name2id(script_getstr(st, 4));
+ if (nd != NULL) {
+ bl = &nd->bl;
+ }
+ } else {
+ bl = map->id2bl(script_getnum(st, 4));
+ }
+ } else {
+ bl = map->id2bl(st->oid);
+ }
+
+ if (bl == NULL) {
+ return true;
+ }
+
+ if (target == SELF) {
+ struct map_session_data *sd;
+ if (script_hasdata(st, 5)) {
+ sd = map->id2sd(script_getnum(st, 5));
+ } else {
+ sd = script->rid2sd(st);
+ }
+ if (sd != NULL) {
+ clif->removeSpecialEffect_single(bl, type, &sd->bl);
+ }
+ } else {
+ clif->removeSpecialEffect(bl, type, target);
+ }
+
+ return true;
+}
+
/*==========================================
* Nude [Valaris]
*------------------------------------------*/
@@ -24736,6 +24780,32 @@ static BUILDIN(msgtable2)
return true;
}
+// show/hide camera info
+static BUILDIN(camerainfo)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+
+ clif->camera_showWindow(sd);
+ return true;
+}
+
+// allow change some camera parameters
+static BUILDIN(changecamera)
+{
+ struct map_session_data *sd = script_rid2sd(st);
+ if (sd == NULL)
+ return false;
+
+ enum send_target target = SELF;
+ if (script_hasdata(st, 5)) {
+ target = script_getnum(st, 5);
+ }
+ clif->camera_change(sd, (float)script_getnum(st, 2), (float)script_getnum(st, 3), (float)script_getnum(st, 4), target);
+ return true;
+}
+
/**
* Adds a built-in script function.
*
@@ -25132,6 +25202,7 @@ static void script_parse_builtin(void)
BUILDIN_DEF(skilleffect,"vi"), // skill effect [Celest]
BUILDIN_DEF(npcskilleffect,"viii"), // npc skill effect [Valaris]
BUILDIN_DEF(specialeffect,"i???"), // npc skill effect [Valaris]
+ BUILDIN_DEF(removespecialeffect,"i???"),
BUILDIN_DEF_DEPRECATED(specialeffect2,"i??"), // skill effect on players[Valaris]
BUILDIN_DEF(nude,""), // nude command [Valaris]
BUILDIN_DEF(mapwarp,"ssii??"), // Added by RoVeRT
@@ -25465,6 +25536,10 @@ static void script_parse_builtin(void)
// -- HatEffect
BUILDIN_DEF(hateffect, "ii"),
+
+ // camera
+ BUILDIN_DEF(camerainfo, ""),
+ BUILDIN_DEF(changecamera, "iii?"),
};
int i, len = ARRAYLENGTH(BUILDIN);
RECREATE(script->buildin, char *, script->buildin_count + len); // Pre-alloc to speed up
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc
index f80dc9003..a8d48546d 100644
--- a/src/plugins/HPMHooking/HPMHooking.Defs.inc
+++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc
@@ -176,8 +176,12 @@ typedef void (*HPMHOOK_pre_achievement_init_titles) (struct map_session_data **s
typedef void (*HPMHOOK_post_achievement_init_titles) (struct map_session_data *sd);
typedef bool (*HPMHOOK_pre_achievement_check_title) (struct map_session_data **sd, int *title_id);
typedef bool (*HPMHOOK_post_achievement_check_title) (bool retVal___, struct map_session_data *sd, int title_id);
-typedef void (*HPMHOOK_pre_achievement_get_rewards) (struct map_session_data **sd, const struct achievement_data **ad);
-typedef void (*HPMHOOK_post_achievement_get_rewards) (struct map_session_data *sd, const struct achievement_data *ad);
+typedef bool (*HPMHOOK_pre_achievement_get_rewards) (struct map_session_data **sd, const struct achievement_data **ad);
+typedef bool (*HPMHOOK_post_achievement_get_rewards) (bool retVal___, struct map_session_data *sd, const struct achievement_data *ad);
+typedef void (*HPMHOOK_pre_achievement_get_rewards_buffs) (struct map_session_data **sd, const struct achievement_data **ad);
+typedef void (*HPMHOOK_post_achievement_get_rewards_buffs) (struct map_session_data *sd, const struct achievement_data *ad);
+typedef void (*HPMHOOK_pre_achievement_get_rewards_items) (struct map_session_data **sd, const struct achievement_data **ad);
+typedef void (*HPMHOOK_post_achievement_get_rewards_items) (struct map_session_data *sd, const struct achievement_data *ad);
#endif // MAP_ACHIEVEMENT_H
#ifdef MAP_ATCOMMAND_H /* atcommand */
typedef void (*HPMHOOK_pre_atcommand_init) (bool *minimal);
@@ -1512,6 +1516,10 @@ typedef void (*HPMHOOK_pre_clif_specialeffect_single) (struct block_list **bl, i
typedef void (*HPMHOOK_post_clif_specialeffect_single) (struct block_list *bl, int type, int fd);
typedef void (*HPMHOOK_pre_clif_specialeffect_value) (struct block_list **bl, int *effect_id, int *num, send_target *target);
typedef void (*HPMHOOK_post_clif_specialeffect_value) (struct block_list *bl, int effect_id, int num, send_target target);
+typedef void (*HPMHOOK_pre_clif_removeSpecialEffect) (struct block_list **bl, int *effectId, enum send_target *target);
+typedef void (*HPMHOOK_post_clif_removeSpecialEffect) (struct block_list *bl, int effectId, enum send_target target);
+typedef void (*HPMHOOK_pre_clif_removeSpecialEffect_single) (struct block_list **bl, int *effectId, struct block_list **targetBl);
+typedef void (*HPMHOOK_post_clif_removeSpecialEffect_single) (struct block_list *bl, int effectId, struct block_list *targetBl);
typedef void (*HPMHOOK_pre_clif_millenniumshield) (struct block_list **bl, short *shields);
typedef void (*HPMHOOK_post_clif_millenniumshield) (struct block_list *bl, short shields);
typedef void (*HPMHOOK_pre_clif_spiritcharm) (struct map_session_data **sd);
@@ -2616,6 +2624,10 @@ typedef void (*HPMHOOK_pre_clif_party_dead_notification) (struct map_session_dat
typedef void (*HPMHOOK_post_clif_party_dead_notification) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_pMemorialDungeonCommand) (int *fd, struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_pMemorialDungeonCommand) (int fd, struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_camera_showWindow) (struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_camera_showWindow) (struct map_session_data *sd);
+typedef void (*HPMHOOK_pre_clif_camera_change) (struct map_session_data **sd, float *range, float *rotation, float *latitude, enum send_target *target);
+typedef void (*HPMHOOK_post_clif_camera_change) (struct map_session_data *sd, float range, float rotation, float latitude, enum send_target target);
#endif // MAP_CLIF_H
#ifdef COMMON_CORE_H /* cmdline */
typedef void (*HPMHOOK_pre_cmdline_init) (void);
@@ -5872,8 +5884,8 @@ typedef int (*HPMHOOK_pre_pc_search_inventory) (struct map_session_data **sd, in
typedef int (*HPMHOOK_post_pc_search_inventory) (int retVal___, struct map_session_data *sd, int item_id);
typedef int (*HPMHOOK_pre_pc_payzeny) (struct map_session_data **sd, int *zeny, enum e_log_pick_type *type, struct map_session_data **tsd);
typedef int (*HPMHOOK_post_pc_payzeny) (int retVal___, struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd);
-typedef int (*HPMHOOK_pre_pc_additem) (struct map_session_data **sd, struct item **item_data, int *amount, e_log_pick_type *log_type);
-typedef int (*HPMHOOK_post_pc_additem) (int retVal___, struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type);
+typedef int (*HPMHOOK_pre_pc_additem) (struct map_session_data **sd, const struct item **item_data, int *amount, e_log_pick_type *log_type);
+typedef int (*HPMHOOK_post_pc_additem) (int retVal___, struct map_session_data *sd, const struct item *item_data, int amount, e_log_pick_type log_type);
typedef int (*HPMHOOK_pre_pc_getzeny) (struct map_session_data **sd, int *zeny, enum e_log_pick_type *type, struct map_session_data **tsd);
typedef int (*HPMHOOK_post_pc_getzeny) (int retVal___, struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd);
typedef int (*HPMHOOK_pre_pc_delitem) (struct map_session_data **sd, int *n, int *amount, int *type, short *reason, e_log_pick_type *log_type);
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
index 8762975e1..889faa44c 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
@@ -136,6 +136,10 @@ struct {
struct HPMHookPoint *HP_achievement_check_title_post;
struct HPMHookPoint *HP_achievement_get_rewards_pre;
struct HPMHookPoint *HP_achievement_get_rewards_post;
+ struct HPMHookPoint *HP_achievement_get_rewards_buffs_pre;
+ struct HPMHookPoint *HP_achievement_get_rewards_buffs_post;
+ struct HPMHookPoint *HP_achievement_get_rewards_items_pre;
+ struct HPMHookPoint *HP_achievement_get_rewards_items_post;
struct HPMHookPoint *HP_atcommand_init_pre;
struct HPMHookPoint *HP_atcommand_init_post;
struct HPMHookPoint *HP_atcommand_final_pre;
@@ -1104,6 +1108,10 @@ struct {
struct HPMHookPoint *HP_clif_specialeffect_single_post;
struct HPMHookPoint *HP_clif_specialeffect_value_pre;
struct HPMHookPoint *HP_clif_specialeffect_value_post;
+ struct HPMHookPoint *HP_clif_removeSpecialEffect_pre;
+ struct HPMHookPoint *HP_clif_removeSpecialEffect_post;
+ struct HPMHookPoint *HP_clif_removeSpecialEffect_single_pre;
+ struct HPMHookPoint *HP_clif_removeSpecialEffect_single_post;
struct HPMHookPoint *HP_clif_millenniumshield_pre;
struct HPMHookPoint *HP_clif_millenniumshield_post;
struct HPMHookPoint *HP_clif_spiritcharm_pre;
@@ -2208,6 +2216,10 @@ struct {
struct HPMHookPoint *HP_clif_party_dead_notification_post;
struct HPMHookPoint *HP_clif_pMemorialDungeonCommand_pre;
struct HPMHookPoint *HP_clif_pMemorialDungeonCommand_post;
+ struct HPMHookPoint *HP_clif_camera_showWindow_pre;
+ struct HPMHookPoint *HP_clif_camera_showWindow_post;
+ struct HPMHookPoint *HP_clif_camera_change_pre;
+ struct HPMHookPoint *HP_clif_camera_change_post;
struct HPMHookPoint *HP_cmdline_init_pre;
struct HPMHookPoint *HP_cmdline_init_post;
struct HPMHookPoint *HP_cmdline_final_pre;
@@ -6719,6 +6731,10 @@ struct {
int HP_achievement_check_title_post;
int HP_achievement_get_rewards_pre;
int HP_achievement_get_rewards_post;
+ int HP_achievement_get_rewards_buffs_pre;
+ int HP_achievement_get_rewards_buffs_post;
+ int HP_achievement_get_rewards_items_pre;
+ int HP_achievement_get_rewards_items_post;
int HP_atcommand_init_pre;
int HP_atcommand_init_post;
int HP_atcommand_final_pre;
@@ -7687,6 +7703,10 @@ struct {
int HP_clif_specialeffect_single_post;
int HP_clif_specialeffect_value_pre;
int HP_clif_specialeffect_value_post;
+ int HP_clif_removeSpecialEffect_pre;
+ int HP_clif_removeSpecialEffect_post;
+ int HP_clif_removeSpecialEffect_single_pre;
+ int HP_clif_removeSpecialEffect_single_post;
int HP_clif_millenniumshield_pre;
int HP_clif_millenniumshield_post;
int HP_clif_spiritcharm_pre;
@@ -8791,6 +8811,10 @@ struct {
int HP_clif_party_dead_notification_post;
int HP_clif_pMemorialDungeonCommand_pre;
int HP_clif_pMemorialDungeonCommand_post;
+ int HP_clif_camera_showWindow_pre;
+ int HP_clif_camera_showWindow_post;
+ int HP_clif_camera_change_pre;
+ int HP_clif_camera_change_post;
int HP_cmdline_init_pre;
int HP_cmdline_init_post;
int HP_cmdline_final_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
index 2f3f1840f..b11e2d61c 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
@@ -83,6 +83,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(achievement->init_titles, HP_achievement_init_titles) },
{ HP_POP(achievement->check_title, HP_achievement_check_title) },
{ HP_POP(achievement->get_rewards, HP_achievement_get_rewards) },
+ { HP_POP(achievement->get_rewards_buffs, HP_achievement_get_rewards_buffs) },
+ { HP_POP(achievement->get_rewards_items, HP_achievement_get_rewards_items) },
/* atcommand_interface */
{ HP_POP(atcommand->init, HP_atcommand_init) },
{ HP_POP(atcommand->final, HP_atcommand_final) },
@@ -576,6 +578,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->specialeffect, HP_clif_specialeffect) },
{ HP_POP(clif->specialeffect_single, HP_clif_specialeffect_single) },
{ HP_POP(clif->specialeffect_value, HP_clif_specialeffect_value) },
+ { HP_POP(clif->removeSpecialEffect, HP_clif_removeSpecialEffect) },
+ { HP_POP(clif->removeSpecialEffect_single, HP_clif_removeSpecialEffect_single) },
{ HP_POP(clif->millenniumshield, HP_clif_millenniumshield) },
{ HP_POP(clif->spiritcharm, HP_clif_spiritcharm) },
{ HP_POP(clif->charm_single, HP_clif_charm_single) },
@@ -1128,6 +1132,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(clif->petEvolutionResult, HP_clif_petEvolutionResult) },
{ HP_POP(clif->party_dead_notification, HP_clif_party_dead_notification) },
{ HP_POP(clif->pMemorialDungeonCommand, HP_clif_pMemorialDungeonCommand) },
+ { HP_POP(clif->camera_showWindow, HP_clif_camera_showWindow) },
+ { HP_POP(clif->camera_change, HP_clif_camera_change) },
/* cmdline_interface */
{ HP_POP(cmdline->init, HP_cmdline_init) },
{ HP_POP(cmdline->final, HP_cmdline_final) },
diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
index 860e47f1b..6405c03a2 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
@@ -1459,27 +1459,80 @@ bool HP_achievement_check_title(struct map_session_data *sd, int title_id) {
}
return retVal___;
}
-void HP_achievement_get_rewards(struct map_session_data *sd, const struct achievement_data *ad) {
+bool HP_achievement_get_rewards(struct map_session_data *sd, const struct achievement_data *ad) {
int hIndex = 0;
+ bool retVal___ = false;
if (HPMHooks.count.HP_achievement_get_rewards_pre > 0) {
- void (*preHookFunc) (struct map_session_data **sd, const struct achievement_data **ad);
+ bool (*preHookFunc) (struct map_session_data **sd, const struct achievement_data **ad);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_achievement_get_rewards_pre[hIndex].func;
- preHookFunc(&sd, &ad);
+ retVal___ = preHookFunc(&sd, &ad);
}
if (*HPMforce_return) {
*HPMforce_return = false;
- return;
+ return retVal___;
}
}
{
- HPMHooks.source.achievement.get_rewards(sd, ad);
+ retVal___ = HPMHooks.source.achievement.get_rewards(sd, ad);
}
if (HPMHooks.count.HP_achievement_get_rewards_post > 0) {
- void (*postHookFunc) (struct map_session_data *sd, const struct achievement_data *ad);
+ bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, const struct achievement_data *ad);
for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_achievement_get_rewards_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, ad);
+ }
+ }
+ return retVal___;
+}
+void HP_achievement_get_rewards_buffs(struct map_session_data *sd, const struct achievement_data *ad) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_get_rewards_buffs_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, const struct achievement_data **ad);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_buffs_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_get_rewards_buffs_pre[hIndex].func;
+ preHookFunc(&sd, &ad);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.get_rewards_buffs(sd, ad);
+ }
+ if (HPMHooks.count.HP_achievement_get_rewards_buffs_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, const struct achievement_data *ad);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_buffs_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_get_rewards_buffs_post[hIndex].func;
+ postHookFunc(sd, ad);
+ }
+ }
+ return;
+}
+void HP_achievement_get_rewards_items(struct map_session_data *sd, const struct achievement_data *ad) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_achievement_get_rewards_items_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, const struct achievement_data **ad);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_items_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_achievement_get_rewards_items_pre[hIndex].func;
+ preHookFunc(&sd, &ad);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.achievement.get_rewards_items(sd, ad);
+ }
+ if (HPMHooks.count.HP_achievement_get_rewards_items_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, const struct achievement_data *ad);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_achievement_get_rewards_items_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_achievement_get_rewards_items_post[hIndex].func;
postHookFunc(sd, ad);
}
}
@@ -14403,6 +14456,58 @@ void HP_clif_specialeffect_value(struct block_list *bl, int effect_id, int num,
}
return;
}
+void HP_clif_removeSpecialEffect(struct block_list *bl, int effectId, enum send_target target) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_removeSpecialEffect_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, int *effectId, enum send_target *target);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_removeSpecialEffect_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_removeSpecialEffect_pre[hIndex].func;
+ preHookFunc(&bl, &effectId, &target);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.removeSpecialEffect(bl, effectId, target);
+ }
+ if (HPMHooks.count.HP_clif_removeSpecialEffect_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, int effectId, enum send_target target);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_removeSpecialEffect_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_removeSpecialEffect_post[hIndex].func;
+ postHookFunc(bl, effectId, target);
+ }
+ }
+ return;
+}
+void HP_clif_removeSpecialEffect_single(struct block_list *bl, int effectId, struct block_list *targetBl) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_removeSpecialEffect_single_pre > 0) {
+ void (*preHookFunc) (struct block_list **bl, int *effectId, struct block_list **targetBl);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_removeSpecialEffect_single_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_removeSpecialEffect_single_pre[hIndex].func;
+ preHookFunc(&bl, &effectId, &targetBl);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.removeSpecialEffect_single(bl, effectId, targetBl);
+ }
+ if (HPMHooks.count.HP_clif_removeSpecialEffect_single_post > 0) {
+ void (*postHookFunc) (struct block_list *bl, int effectId, struct block_list *targetBl);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_removeSpecialEffect_single_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_removeSpecialEffect_single_post[hIndex].func;
+ postHookFunc(bl, effectId, targetBl);
+ }
+ }
+ return;
+}
void HP_clif_millenniumshield(struct block_list *bl, short shields) {
int hIndex = 0;
if (HPMHooks.count.HP_clif_millenniumshield_pre > 0) {
@@ -28782,6 +28887,58 @@ void HP_clif_pMemorialDungeonCommand(int fd, struct map_session_data *sd) {
}
return;
}
+void HP_clif_camera_showWindow(struct map_session_data *sd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_camera_showWindow_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_camera_showWindow_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_camera_showWindow_pre[hIndex].func;
+ preHookFunc(&sd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.camera_showWindow(sd);
+ }
+ if (HPMHooks.count.HP_clif_camera_showWindow_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_camera_showWindow_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_camera_showWindow_post[hIndex].func;
+ postHookFunc(sd);
+ }
+ }
+ return;
+}
+void HP_clif_camera_change(struct map_session_data *sd, float range, float rotation, float latitude, enum send_target target) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_clif_camera_change_pre > 0) {
+ void (*preHookFunc) (struct map_session_data **sd, float *range, float *rotation, float *latitude, enum send_target *target);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_camera_change_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_clif_camera_change_pre[hIndex].func;
+ preHookFunc(&sd, &range, &rotation, &latitude, &target);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.clif.camera_change(sd, range, rotation, latitude, target);
+ }
+ if (HPMHooks.count.HP_clif_camera_change_post > 0) {
+ void (*postHookFunc) (struct map_session_data *sd, float range, float rotation, float latitude, enum send_target target);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_camera_change_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_clif_camera_change_post[hIndex].func;
+ postHookFunc(sd, range, rotation, latitude, target);
+ }
+ }
+ return;
+}
/* cmdline_interface */
void HP_cmdline_init(void) {
int hIndex = 0;
@@ -59054,11 +59211,11 @@ int HP_pc_payzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type ty
}
return retVal___;
}
-int HP_pc_additem(struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type) {
+int HP_pc_additem(struct map_session_data *sd, const struct item *item_data, int amount, e_log_pick_type log_type) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_pc_additem_pre > 0) {
- int (*preHookFunc) (struct map_session_data **sd, struct item **item_data, int *amount, e_log_pick_type *log_type);
+ int (*preHookFunc) (struct map_session_data **sd, const struct item **item_data, int *amount, e_log_pick_type *log_type);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_additem_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_additem_pre[hIndex].func;
@@ -59073,7 +59230,7 @@ int HP_pc_additem(struct map_session_data *sd, struct item *item_data, int amoun
retVal___ = HPMHooks.source.pc.additem(sd, item_data, amount, log_type);
}
if (HPMHooks.count.HP_pc_additem_post > 0) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, struct item *item_data, int amount, e_log_pick_type log_type);
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, const struct item *item_data, int amount, e_log_pick_type log_type);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_additem_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_additem_post[hIndex].func;
retVal___ = postHookFunc(retVal___, sd, item_data, amount, log_type);