#include "Contents/Effects/Particles/EZ2STREffect.h" #include "Client/Mode/CGameMode.h" #include "Client/Mode/ModeMgr.h" #include "Client/Session/Session.h" #include "Contents/Actors/GameActor.h" #include "Contents/Actors/RenderObject.h" #include "Contents/Camera/Camera.h" #include "Contents/Configuration/ServiceOptions.h" #include "Contents/Effects/Core/EffectLists.h" #include "Contents/Effects/Core/EffectMemoryMgr.h" #include "Contents/Effects/Core/EffectTypes.h" #include "Contents/Skills/ClientSkills.h" #include "Contents/Sound/SoundMgr.h" #include "Contents/World/World.h" #include "Render/Renderer.h" #include "Render/Projection/ScreenRectangle.h" #include "Render/Primitives/TextureQuad.h" #include "Script/LuaScript.h" #include "Utility/Math/AffineMatrix.h" #include "Utility/Text/FormatString.h" #include #include #include #include // OFFSET: 0x00B51810 // FUNCTION: fn_19030 CEZ2STRScreenEffect::CEZ2STRScreenEffect() : CEffect(-1), particle(nullptr), name("빨간포션.str"), fadePulse(0), overlayColor(0), followCamera(0), cameraAngle(0.0), jobScaled(0) { } // OFFSET: 0x00B51D60 // FUNCTION: fn_19036 float GetHatEffectOffsetX(int id, const char* name) { float offset = 0.0f; float result = 0.0f; switch (id) { case EF_STRANGELIGHTS: case EF_SUPER_STAR: offset = 5.0f; result = offset; break; case EF_LJOSALFAR: offset = 8.0f; result = offset; break; case EF_SJ_DOCUMENT: offset = 0.5f; result = offset; break; case EF_NEWMOON_KICK: case EF_FULLMOON_KICK: case EF_NEW_ARMSCANNON_01_UP: case EF_NEW_ARMSCANNON_01_DOWN: case EF_NEW_ARMSCANNON_05_UP: case EF_NEW_ARMSCANNON_05_DOWN: case EF_MINEFFECT_ARMSCANNON_01: case EF_MINEFFECT_ARMSCANNON_05: offset = 1.0f; result = offset; break; case EF_TETRA_VORTEX_FIRE_EXP: case EF_TETRA_VORTEX_EARTH_EXP: offset = -0.5f; result = offset; break; case EF_NEW_ARMSCANNON_07_UP: case EF_NEW_ARMSCANNON_07_DOWN: case EF_NEW_ARMSCANNON_11_UP: case EF_NEW_ARMSCANNON_11_DOWN: case EF_MINEFFECT_ARMSCANNON_07: case EF_MINEFFECT_ARMSCANNON_11: offset = -1.0f; result = offset; break; } std::string text(name); if (text.find("strangelights") != std::string::npos) { offset = 5.0f; result = offset; } else if (text.find("superstar") != std::string::npos) { offset = 5.0f; result = offset; } else if (text.find("ljosalfar") != std::string::npos) { offset = 8.0f; result = offset; } if (id >= 0x9B5) { double position = 0.0; g_session.m_hotkeyScript->Call("GetHatEfPosX", "d>l", id - 0x9B5, &position); result = static_cast(offset + position); } return result; } // OFFSET: 0x00B52060 // FUNCTION: fn_19037 int GetHatEffectOffsetY(int id, CGameActor* actor) { bool ignored = false; if (id >= 0x9B5) { g_session.m_hotkeyScript->Call("IsIgnoredRidingState_Include_AttachedToHead", "d>b", id - 0x9B5, &ignored); } else if (id == EF_NEW_D_MACHINE) { ignored = true; } int offset = 0; if (actor) { if (ignored == true) { offset = 18; } else { offset = static_cast(actor->GetNameHeight()); } } switch (id) { case EF_STRANGELIGHTS: offset += 5; break; case EF_BITE_SCAR: offset += 5; break; case EF_KVASIRSONATA: offset += 5; break; case EF_D_TAIL: offset -= 8; break; case EF_FLOWERSMOKE: offset -= 8; break; case EF_MARKING_USE_CHANGEMONSTER: offset -= 8; break; case EF_SU_GROOMING: offset -= 8; break; case EF_RICHS_COIN_A: offset -= 8; break; case EF_RL_ANTI_MATERIAL_BLAST: offset -= 8; break; case EF_HEAT_BARREL: offset -= 8; break; case EF_H_MINE: offset -= 8; break; case EF_NPC_GATE_SKYBLUE: offset -= 8; break; case EF_FSTONE: offset -= 7; break; case EF_CHAIN_REACTION_SHOT: offset -= 7; break; case EF_QSCARABA: offset -= 5; break; case EF_MAPLE_FALLS: offset -= 5; break; case EF_MAGICAL_FEATHER: offset -= 5; break; case EF_TIME_ACCESSORY: offset -= 5; break; case EF_TETRA_VORTEX_CORE: offset -= 5; break; case EF_QSCARABA_VISUAL: offset -= 5; break; case EF_NEW_RUSH_QUAKE_HIT: offset -= 5; break; case EF_FIRST_BRAND_HIT: offset -= 5; break; case EF_ABYSS_DAGGER_HIT_2: offset -= 5; break; case EF_FRESHSHRIMP: case EF_SU_TUNABELLY: case EF_SU_SCRATCH: case EF_SU_BITE: case EF_SU_SCAROFTAROU: case EF_SU_ARCLOUSEDASH: case EF_SU_PICKYPECK: case EF_SU_BUNCHOFSHRIMP: case EF_STRATUM_TREMOR: case EF_STRATUM_TREMOR_BOTTOM: offset -= 8; break; case EF_SU_CHATTERING: case EF_SU_POWEROFFLOCK: offset += 8; break; case EF_C_MAKER: offset -= 6; break; case EF_FIREDANCE: offset -= 6; break; case EF_WE_CHEERUP: offset -= 6; break; case EF_SOLARBURST: offset -= 6; break; case EF_FLASH_KICK: offset -= 6; break; case EF_TETRA_VORTEX_CORE_REUSE: offset -= 6; break; case EF_DESTRUCTIVE_HURRICANE_HIT: offset -= 6; break; case EF_DEADLY_PROJECTION_HIT: offset -= 6; break; case EF_SOUL_VC_STRIKE_HIT: offset -= 6; break; case EF_FROZEN_SLASH_HIT: offset -= 6; break; case EF_ARBITRIUM_HIT: offset -= 6; break; case EF_ABYSS_DAGGER_HIT_1830: offset -= 6; break; case EF_DEEP_BLIND_TRAP: offset -= 6; break; case EF_SWIFT_TRAP: offset -= 6; break; case EF_SOLID_TRAP: offset -= 6; break; case EF_ETERNAL_SLASH_HIT_2: offset -= 6; break; case EF_HAWK_BOOMERANG_HIT: offset -= 6; break; case EF_ROSEBLOSSOM_SHOT: offset -= 6; break; case EF_TERRA_DRIVE_HIT: offset -= 6; break; case EF_ABYSS_DAGGER_HIT_3: offset -= 6; break; case EF_OVERSLASH_HIT: offset -= 6; break; case EF_WE_ONEFOREVER: offset -= 4; break; case EF_SJ_DOCUMENT: offset -= 4; break; case EF_NEW_CROSSRIPPERSLASHER: offset -= 4; break; case EF_MINEFFECT_CROSSRIPPERSLASHER: offset -= 4; break; case EF_ROCKDOWN_HIT: offset -= 4; break; case EF_CRIMSON_ARROW_HIT: offset -= 4; break; case EF_VIOLENT_QUAKE_HIT: offset -= 4; break; case EF_MYSTERY_ILLUSION_HIT: offset -= 4; break; case EF_TORNADO_STORM_HIT: offset -= 4; break; case EF_ALL_BLOOM_HIT: offset -= 4; break; case EF_ETERNAL_SLASH_HIT_1: offset -= 4; break; case EF_CRYSTAL_IMPACT_HIT: offset -= 4; break; case EF_FATAL_SHADOW_CROW_HIT: offset -= 4; break; case EF_DEEP_BLIND_TRAP_HIT: offset -= 4; break; case EF_SWIFT_TRAP_HIT: offset -= 4; break; case EF_SOLID_TRAP_HIT: offset -= 4; break; case EF_IMPACT_CRATER_HIT: offset -= 4; break; case EF_HAWK_RUSH: offset -= 4; break; case EF_ABYSS_DAGGER_HIT: offset -= 4; break; case EF_GALE_STORM_HIT: offset -= 4; break; case EF_INCREASING_ACTIVITY_CAST_BOTTOM: offset -= 4; break; case EF_ACTIVITY_BURN_CAST_BOTTOM: offset -= 4; break; case EF_DIAMOND_STORM_BOTTOM: offset -= 4; break; case EF_ROSEBLOSSOM_HIT: offset -= 4; break; case EF_FRENZY_SHOT_HIT: offset -= 4; break; case EF_SHIELD_SHOOTING_HIT: offset -= 4; break; case EF_NPC_KILLING_AURA_HIT: offset -= 4; break; case EF_NPC_CANE_OF_EVIL_EYE: offset -= 4; break; case EF_GOLDENE_TONE: offset -= 4; break; case EF_BLAZING_AND_FURIOUS: offset -= 4; break; case EF_THE_ONE_FIGHTER_RISES_BOTTOM: offset -= 4; break; case EF_TEMPERING: offset -= 4; break; case EF_BLAST_FORGE_HIT: offset -= 4; break; case EF_FALLING_STAR: offset -= 10; break; case EF_PROMINENCE_KICK: offset -= 10; break; case EF_SOUL_REVOLVE: offset -= 10; break; case EF_SOUL_GOLEM: offset -= 16; break; case EF_NEWMOON_KICK: case EF_FULLMOON_KICK: case EF_SOUL_CURSE: case EF_NEW_ARMSCANNON_05_UP: case EF_NEW_ARMSCANNON_05_DOWN: case EF_NEW_ARMSCANNON_07_UP: case EF_NEW_ARMSCANNON_07_DOWN: case EF_MINEFFECT_ARMSCANNON_05: case EF_MINEFFECT_ARMSCANNON_07: case EF_BLUE_WAVE_1: case EF_BLUE_WAVE_2: case EF_BLUE_WAVE_3: case EF_RED_WAVE_1: case EF_RED_WAVE_2: case EF_RED_WAVE_3: offset -= 6; break; case EF_TETRA_VORTEX_CAST: offset -= 2; break; case EF_NEW_ENCHANTING_SHADOW_BOTTOM: offset -= 2; break; case EF_SWIFT_TRAP_CAST: offset -= 2; break; case EF_SHADOW_STAB: offset -= 2; break; case EF_SPELL_ENCHANTING: offset -= 2; break; case EF_METALLIC_FURY: offset -= 2; break; case EF_DEFT_STAB: offset -= 2; break; case EF_SHIELD_SHOOTING_CAST: offset -= 2; break; case EF_THE_W_PROTECTION_REUSE: offset -= 2; break; case EF_ELEMENTAL_BUSTER_FIRE_REUSE: offset -= 2; break; case EF_DESTRUCTIVE_HURRICANE_BOTTOM_REUSE: offset -= 2; break; case EF_TETRA_VORTEX_BALL_1: case EF_TETRA_VORTEX_BALL_2: case EF_TETRA_VORTEX_BALL_3: case EF_TETRA_VORTEX_BALL_4: offset -= 10; break; case EF_TETRA_VORTEX_FIRE_EXP: case EF_TETRA_VORTEX_WATER_EXP: case EF_TETRA_VORTEX_WIND_EXP: case EF_TETRA_VORTEX_FIRE_GROUND: case EF_TETRA_VORTEX_WATER_GROUND: case EF_TETRA_VORTEX_WIND_GROUND: case EF_TETRA_VORTEX_EARTH_GROUND: case EF_TETRA_VORTEX_CORE_GROUND: case EF_NEW_AROMAOIL: case EF_NEW_AROMAOIL_BOTTOM: case EF_NEW_BATHFOAM: case EF_NEW_BATHFOAM_BOTTOM: case EF_STORMSLASH_1: case EF_STORMSLASH_2: case EF_STORMSLASH_3: case EF_STORMSLASH_4: case EF_STORMSLASH_5: case EF_SERVANT_SIGN: case EF_SERVANT_SIGN_DOWN: case EF_SERVANT_SIGN_DOWN_BOTTOM: case EF_SERVANT_PHANTOM_DOWN: case EF_SERVANT_PHANTOM_HIT: case EF_SERVANT_PHANTOM_HIT_BOTTOM: case EF_SERVANT_PHANTOM_SUB: case EF_SERVANT_PHANTOM_SUB_BOTTOM: case EF_SERVANT_DEMOLITION_COLLECT: case EF_SERVANT_DEMOLITION_HIT: case EF_SERVANT_DEMOLITION_LEFTDOWN: case EF_SERVANT_DEMOLITION_RIGHTDOWN: case EF_DRAGONIC_AURA: case EF_DRAGONIC_AURA_BOTTOM: case EF_DRAGONIC_AURA_HIT: case EF_DRAGONIC_AURA_HIT_BOTTOM: case EF_DRAGONIC_AURA_BUFF: case EF_DRAGONIC_AURA_BUFF_BOTTOM: case EF_MADNESS_CRUSHER: case EF_MADNESS_CRUSHER_BOTTOM: case EF_NEW_AUTOSHADOWSPELL: case EF_NEW_AUTOSHADOWSPELL_BOTTOM: case EF_DESTRUCTIVE_HURRICANE: case EF_DESTRUCTIVE_HURRICANE_BOTTOM: case EF_DESTRUCTIVE_HURRICANE_CAST: case EF_DESTRUCTIVE_HURRICANE_CAST_BOTTOM: case EF_DESTRUCTIVE_HURRICANE_CLIMAX: case EF_DEADLY_PROJECTION_CAST: case EF_DEADLY_PROJECTION_CAST_BOTTOM: case EF_DEADLY_PROJECTION: case EF_SOUL_VC_STRIKE_CAST: case EF_SOUL_VC_STRIKE_CAST_BOTTOM: case EF_ROCKDOWN: case EF_ROCKDOWN_BOTTOM: case EF_ROCKDOWN_CAST: case EF_ROCKDOWN_CAST_BOTTOM: case EF_RAIN_OF_CRYSTAL: case EF_RAIN_OF_CRYSTAL_BOTTOM: case EF_CRIMSON_ARROW_CAST: case EF_CRIMSON_ARROW_CAST_BOTTOM: case EF_VIOLENT_QUAKE_CAST: case EF_VIOLENT_QUAKE_CAST_BOTTOM: case EF_ASTRAL_STRIKE_CAST: case EF_ASTRAL_STRIKE_CAST_BOTTOM: case EF_MYSTERY_ILLUSION: case EF_MYSTERY_ILLUSION_BOTTOM: case EF_MYSTERY_ILLUSION_CAST: case EF_MYSTERY_ILLUSION_CAST_BOTTOM: case EF_TORNADO_STORM: case EF_TORNADO_STORM_BOTTOM: case EF_TORNADO_STORM_CAST: case EF_TORNADO_STORM_CAST_BOTTOM: case EF_VIOLENT_QUAKE_BOTTOM: case EF_ALL_BLOOM: case EF_ALL_BLOOM_BOTTOM: case EF_ALL_BLOOM_CAST: case EF_ALL_BLOOM_CAST_BOTTOM: case EF_CLIMAX_LIGHT: case EF_CLIMAX_CAST: case EF_CLIMAX_CAST_LOOP: case EF_FLORAL_FLARE_ROAD_CAST: case EF_FLORAL_FLARE_ROAD_CAST_BOTTOM: case EF_FLORAL_FLARE_ROAD_HIT: case EF_FATAL_SHADOW_CROW: case EF_FATAL_SHADOW_CROW_BOTTOM: case EF_SOLID_TRAP_CAST: case EF_SOLID_TRAP_CAST_BOTTOM: case EF_STRATUM_TREMOR_CAST: case EF_STRATUM_TREMOR_CAST_BOTTOM: case EF_STRATUM_TREMOR_HIT: case EF_IMPACT_CRATER: case EF_IMPACT_CRATER_BOTTOM: case EF_WIND_SIGN: case EF_WIND_SIGN_LOOP: case EF_HAWK_BOOMERANG_CAST: case EF_HAWK_BOOMERANG_START: case EF_INCREASING_ACTIVITY: case EF_INCREASING_ACTIVITY_CAST: case EF_ACTIVITY_BURN: case EF_ACTIVITY_BURN_CAST: case EF_SERPENS_CAST: case EF_SERPENS_HIT: case EF_SERPENS_SHIELD: case EF_DILUVIO_ICE: case EF_DILUVIO_ICE_BOTTOM: case EF_DILUVIO_CAST: case EF_DILUVIO_CAST_BOTTOM: case EF_DILUVIO_HIT: case EF_DILUVIO_ARMOR: case EF_DIAMOND_STORM_CAST: case EF_DIAMOND_STORM_CAST_BOTTOM: case EF_DIAMOND_STORM_HIT: case EF_VENOM_SWAMP_BOTTOM: case EF_VENOM_SWAMP_CAST: case EF_VENOM_SWAMP_CAST_BOTTOM: case EF_VENOM_SWAMP_HIT: case EF_ARDOR: case EF_ARDOR_BOTTOM: case EF_ARDOR_CAST: case EF_ARDOR_CAST_BOTTOM: case EF_ARDOR_HIT: case EF_ARDOR_FLAMEARMOR: case EF_LIGHTNING_LAND: case EF_LIGHTNING_LAND_BOTTOM: case EF_LIGHTNING_LAND_CAST: case EF_LIGHTNING_LAND_CAST_BOTTOM: case EF_LIGHTNING_LAND_HIT: case EF_CONFLAGRATION: case EF_CONFLAGRATION_BOTTOM: case EF_CONFLAGRATION_CAST: case EF_CONFLAGRATION_CAST_BOTTOM: case EF_CONFLAGRATION_HIT: case EF_SOUND_BLEND: case EF_SOUND_BLEND_CAST: case EF_SOUND_BLEND_CAST_BOTTOM: case EF_SOUND_BLEND_RED: case EF_JAWAII_SERENADE: case EF_JAWAII_SERENADE_CAST: case EF_JAWAII_SERENADE_CAST_BOTTOM: case EF_PRONMARCH: case EF_PRONMARCH_CAST: case EF_PRONMARCH_CAST_BOTTOM: case EF_NIFLHEIM: case EF_NIFLHEIM_CAST: case EF_ABYSS_STRIKE_CAST: case EF_ABYSS_STRIKE_CAST_BOTTOM: case EF_PROCELLA: case EF_PROCELLA_BOTTOM: case EF_PROCELLA_CAST: case EF_PROCELLA_CAST_BOTTOM: case EF_PROCELLA_HIT: case EF_PROCELLA_STORM: case EF_TERREMOTUS: case EF_TERREMOTUS_CAST: case EF_TERREMOTUS_CAST_BOTTOM: case EF_TERREMOTUS_HIT: case EF_TERREMOTUS_PROTECT: case EF_GEF_NOCTURN: case EF_GEF_NOCTURN_CAST: case EF_GEF_NOCTURN_CAST_BOTTOM: case EF_ROKI_CAPRICCIO: case EF_ROKI_CAPRICCIO_CAST: case EF_ROKI_CAPRICCIO_CAST_BOTTOM: case EF_MUSICAL_INTERLUDE: case EF_MUSICAL_INTERLUDE_CAST: case EF_AIN_RHAPSODY: case EF_AIN_RHAPSODY_CAST: case EF_TERRA_DRIVE: case EF_TERRA_DRIVE_BOTTOM: case EF_TERRA_DRIVE_CAST: case EF_TERRA_DRIVE_CAST_BOTTOM: case EF_ELEMENTAL_BUSTER_CAST: case EF_ELEMENTAL_BUSTER_FIRE: case EF_ELEMENTAL_BUSTER_FIRE_BOTTOM: case EF_ELEMENTAL_BUSTER_FIRE_HIT: case EF_ELEMENTAL_BUSTER_LAND: case EF_ELEMENTAL_BUSTER_LAND_BOTTOM: case EF_ELEMENTAL_BUSTER_LAND_HIT: case EF_ELEMENTAL_BUSTER_POISON: case EF_ELEMENTAL_BUSTER_POISON_BOTTOM: case EF_ELEMENTAL_BUSTER_POISON_HIT: case EF_ELEMENTAL_BUSTER_WATER: case EF_ELEMENTAL_BUSTER_WATER_BOTTOM: case EF_ELEMENTAL_BUSTER_WATER_HIT: case EF_ELEMENTAL_BUSTER_WIND: case EF_ELEMENTAL_BUSTER_WIND_BOTTOM: case EF_ELEMENTAL_BUSTER_WIND_HIT: case EF_OVERSLASH: case EF_OVERSLASH_BOTTOM: case EF_OVERSLASH_CAST: case EF_ADVANCED_PROTECTION: case EF_ADVANCED_PROTECTION_BOTTOM: case EF_ADVANCED_PROTECTION_CAST: case EF_ADVANCED_PROTECTION_CAST_BOTTOM: case EF_CROSS_RAIN_BOTTOM: case EF_CROSS_RAIN_CAST: case EF_CROSS_RAIN_CAST_BOTTOM: case EF_GUARD_STANCE: case EF_GUARD_STANCE_CAST: case EF_GUARD_STANCE_CAST_BOTTOM: case EF_ATTACK_STANCE: case EF_ATTACK_STANCE_CAST: case EF_ATTACK_STANCE_CAST_BOTTOM: case EF_GRAND_JUDGEMENT: case EF_GRAND_JUDGEMENT_BOTTOM: case EF_GRAND_JUDGEMENT_BUFF: case EF_GRAND_JUDGEMENT_CAST: case EF_GRAND_JUDGEMENT_CAST_BOTTOM: case EF_HOLY_SHIELD_CAST: case EF_HOLY_SHIELD: case EF_HOLY_SHIELD_LOOP: case EF_THE_W_PROTECTION: case EF_THE_W_PROTECTION_CAST: case EF_GUARDIANSHIELD: case EF_GUARDIANSHIELD_BOTTOM: case EF_GUARDIANSHIELD_SUB: case EF_JUDGEMENT_CROSS: case EF_JUDGEMENT_CROSS_BOTTOM: case EF_JUDGEMENT_CROSS_CAST: case EF_JUDGEMENT_CROSS_CAST_BOTTOM: case EF_REBOUND_SHIELD: case EF_REBOUND_SHIELD_BOTTOM: case EF_REBOUND_SHIELD_CAST: case EF_REBOUND_SHIELD_CAST_BOTTOM: case EF_ULTIMATESACRIFICE: case EF_ULTIMATESACRIFICE_BOTTOM: case EF_ULTIMATESACRIFICE_SHINE: case EF_HELLTREE_CAST: case EF_HELLTREE_CAST_BOTTOM: case EF_HELLTREE_DUSTY: case EF_HELLTREE_HOWLING: case EF_RESEARCH_REPORT: case EF_RESEARCH_REPORT_CAST: case EF_RESEARCH_REPORT_CAST_BOTTOM: case EF_STATE_LASSITUDE: case EF_STATE_SWOONING: case EF_STATE_HOLYFLAME: case EF_WOODEN_WARRIOR_CAST: case EF_WOODEN_WARRIOR_CAST_BOTTOM: case EF_WOODEN_WARRIOR_ATTACK: case EF_WOODEN_WARRIOR_ATTACK_HIT: case EF_WOODEN_WARRIOR_THROWROCK: case EF_WOODEN_WARRIOR_THROWROCK_HIT: case EF_SERPENS_DEEP_POISONING: case EF_SERPENS_DEEP_POISONING_BOTTOM: case EF_DILUVIO_COLD_FORCE: case EF_DILUVIO_COLD_FORCE_BOTTOM: case EF_ARDOR_FLAMETECHNIC: case EF_ARDOR_FLAMETECHNIC_BOTTOM: case EF_PROCELLA_GRACE_BREEZE: case EF_PROCELLA_GRACE_BREEZE_BOTTOM: case EF_TERREMOTUS_EARTH_CARE: case EF_TERREMOTUS_EARTH_CARE_BOTTOM: case EF_STATE_LIGHTNINGSTRIKE: case EF_STATE_CONFLAGRATION: case EF_STATE_FROSTBITE: case EF_STATE_FROSTBITE_FINISH: case EF_STATE_CRYSTALLIZATION: case EF_STATE_DEADLYPOISON: case EF_SERVANT_SIGN_BOTTOM: offset -= 2; break; case EF_NEW_ARMSCANNON_01_UP: case EF_NEW_ARMSCANNON_01_DOWN: case EF_NEW_ARMSCANNON_11_UP: case EF_NEW_ARMSCANNON_11_DOWN: case EF_MINEFFECT_ARMSCANNON_01: case EF_MINEFFECT_ARMSCANNON_11: case EF_EFFLIGO: case EF_EFFLIGO_BOTTOM: case EF_EFFLIGO_HIT: case EF_FLAME_TRAP: case EF_FLAME_TRAP_HIT: case EF_CRESCIVEBOLT_CAST: case EF_CRESCIVEBOLT_HIT: case EF_ETERNAL_SLASH_HIT: case EF_SHADOW_STAB_HIT2: case EF_SERPENS_BOTTOM: case EF_SERPENS_CAST_BOTTOM: case EF_ETERNAL_SLASH_HIT_3: case EF_CHAIN_REACTION_SHOT_HITSUB: case EF_ABYSS_STRIKE: case EF_ABYSS_STRIKE_BOTTOM: case EF_ABYSS_STRIKE_GROUND: case EF_ABYSS_STRIKE_GROUND_BOTTOM: case EF_ABYSS_STRIKE_HIT: case EF_NEEDLE_STINGER: case EF_NEEDLE_STINGER_BOTTOM: case EF_NEEDLE_STINGER_HIT: case EF_ABSOLUTE_ZEPHYR: case EF_ABSOLUTE_ZEPHYR_BOTTOM: case EF_ABSOLUTE_ZEPHYR_HIT: case EF_TWISTER_CUTTER: case EF_TWISTER_CUTTER_HIT: case EF_HEILIGE_PFERD: case EF_HEILIGE_PFERD_BOTTOM: case EF_HEILIGE_PFERD_CAST: case EF_GLANZEN_SPIES: case EF_GLANZEN_SPIES_HIT: case EF_TETRA_VORTEX_WATER_SUB_2: case EF_TETRA_VORTEX_EARTH_SUB_2: case EF_NPC_20TH_CRYSTAL_S: case EF_NPC_20TH_CRYSTAL_M: case EF_NPC_20TH_CRYSTAL_L: case EF_NPC_GATE_GREEN_1: case EF_NPC_GATE_PURPLE_1: case EF_NPC_GATE_RED_1: case EF_NPC_GATE_GREEN_2: case EF_NPC_GATE_PURPLE_2: case EF_NPC_GATE_RED_2: case EF_NPC_GATE_GREEN_3: case EF_NPC_GATE_PURPLE_3: case EF_NPC_GATE_RED_3: offset -= 4; break; case EF_NEW_REVERBERATION_HIT: offset -= 3; break; case EF_NEW_EARTHGRAVE_HIT: offset -= 3; break; case EF_NEW_EPICLESIS: offset -= 3; break; case EF_ABR_INFINITY_CAST: offset -= 3; break; case EF_NEW_AIMEDBOLT_END: case EF_NEW_AIMEDBOLT_TARGET_LOOP: case EF_NEW_VULCANARM: case EF_NEW_VULCANARM_BOTTOM: case EF_NEW_VULCANARM_SHOTHOLE: case EF_NEW_D_MACHINE_CAST: case EF_NEW_D_MACHINE_CAST_BOTTOM: case EF_UNK_1839: case EF_A_MACHINE_CAST: case EF_A_MACHINE_HIT: case EF_ACIDIFIED_ZONE_FIRE_CAST: case EF_ACIDIFIED_ZONE_FIRE_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_FIRE_HIT: case EF_ACIDIFIED_ZONE_FIRE_START: case EF_ACIDIFIED_ZONE_FIRE_START_BOTTOM: case EF_ACIDIFIED_ZONE_FIRE_LOOP: case EF_ACIDIFIED_ZONE_FIRE_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_WATER_CAST: case EF_ACIDIFIED_ZONE_WATER_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_WATER_HIT: case EF_ACIDIFIED_ZONE_WATER_START: case EF_ACIDIFIED_ZONE_WATER_START_BOTTOM: case EF_ACIDIFIED_ZONE_WATER_LOOP: case EF_ACIDIFIED_ZONE_WATER_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_WIND_CAST: case EF_ACIDIFIED_ZONE_WIND_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_WIND_HIT: case EF_ACIDIFIED_ZONE_WIND_START: case EF_ACIDIFIED_ZONE_WIND_START_BOTTOM: case EF_ACIDIFIED_ZONE_WIND_LOOP: case EF_ACIDIFIED_ZONE_WIND_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_GROUND_CAST: case EF_ACIDIFIED_ZONE_GROUND_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_GROUND_HIT: case EF_ACIDIFIED_ZONE_GROUND_START: case EF_ACIDIFIED_ZONE_GROUND_START_BOTTOM: case EF_ACIDIFIED_ZONE_GROUND_LOOP: case EF_ACIDIFIED_ZONE_GROUND_LOOP_BOTTOM: offset -= 3; break; case EF_FROZEN_SLASH: case EF_FROZEN_SLASH_CAST: case EF_FROZEN_SLASH_CAST_BOTTOM: case EF_COMPETENTIA: case EF_COMPETENTIA_BOTTOM: case EF_COMPETENTIA_LOOP: case EF_COMPETENTIA_LOOP_BOTTOM: case EF_SINCERE_FAITH: case EF_SINCERE_FAITH_BOTTOM: case EF_MYSTICSYMPHONY: case EF_MYSTICSYMPHONY_CAST: case EF_MYSTICSYMPHONY_NOTE: case EF_ABYSS_SQUARE: case EF_ABYSS_SQUARE_BOTTOM: --offset; break; case EF_NEW_DILECTIO_HEAL_TARGET_BOTTOM: ++offset; break; case EF_CRYSTAL_IMPACT_BUFF: offset += 4; break; case EF_NEW_ENCHANTING_SHADOW: --offset; break; case EF_BENEDICTUM: --offset; break; case EF_GALE_STORM_CAST: --offset; break; case EF_POWERFUL_FAITH: --offset; break; case EF_FIRM_FAITH: --offset; break; case EF_FIRST_BRAND: case EF_FIRST_BRAND_START: case EF_SECOND_FAITH: case EF_SECOND_FAITH_START: case EF_FROM_THE_ABYSS: case EF_ABYSS_STRIKE_HIT_2: offset -= 5; break; case EF_CHAIN_REACTION_SHOT_CAST: case EF_CHAIN_REACTION_SHOT_CAST_BOTTOM: ++offset; break; case EF_20TH_FIREWORK: offset += 16; break; } if (id >= 0x9B5) { int position = 0; g_session.m_hotkeyScript->Call("GetHatEfPos", "d>d", id - 0x9B5, &position); offset += position; } return offset - 7; } // OFFSET: 0x00B56210 // FUNCTION: fn_19041 bool CEZ2STRScreenEffect::IsAttachedToHead() const { switch (this->id) { case EF_C_MAKER: case EF_D_TAIL: case EF_MARKING_USE_CHANGEMONSTER: case EF_ACH_COMPLETE: case EF_FRESHSHRIMP: case EF_SU_TUNABELLY: case EF_SU_SCRATCH: case EF_SU_BITE: case EF_SU_SCAROFTAROU: case EF_SU_ARCLOUSEDASH: case EF_SU_PICKYPECK: case EF_SU_BUNCHOFSHRIMP: case EF_BITE_SCAR: case EF_SU_GROOMING: case EF_SU_CHATTERING: case EF_SU_POWEROFFLOCK: case EF_FIREDANCE: case EF_RICHS_COIN_A: case EF_RL_ANTI_MATERIAL_BLAST: case EF_HEAT_BARREL: case EF_H_MINE: case EF_WE_ONEFOREVER: case EF_WE_CHEERUP: case EF_SOLARBURST: case EF_SJ_DOCUMENT: case EF_FALLING_STAR: case EF_FLASH_KICK: case EF_SOUL_GOLEM: case EF_NEWMOON_KICK: case EF_FULLMOON_KICK: case EF_SOUL_CURSE: case EF_PROMINENCE_KICK: case EF_SOUL_REVOLVE: case EF_NEW_ADORAMUS: case EF_NEW_ADORAMUS_BOTTOM: case EF_TETRA_VORTEX_CAST: case EF_TETRA_VORTEX_CORE: case EF_TETRA_VORTEX_BALL_1: case EF_TETRA_VORTEX_BALL_2: case EF_TETRA_VORTEX_BALL_3: case EF_TETRA_VORTEX_BALL_4: case EF_TETRA_VORTEX_FIRE_EXP: case EF_TETRA_VORTEX_WATER_EXP: case EF_TETRA_VORTEX_WIND_EXP: case EF_TETRA_VORTEX_EARTH_EXP: case EF_TETRA_VORTEX_FIRE_GROUND: case EF_TETRA_VORTEX_WATER_GROUND: case EF_TETRA_VORTEX_WIND_GROUND: case EF_TETRA_VORTEX_EARTH_GROUND: case EF_NEW_CRIMSONROCK: case EF_NEW_CRIMSONROCK_BOTTOM: case EF_TETRA_VORTEX_CORE_GROUND: case EF_NEW_CROSSRIPPERSLASHER: case EF_NEW_ARMSCANNON_01_UP: case EF_NEW_ARMSCANNON_01_DOWN: case EF_NEW_ARMSCANNON_05_UP: case EF_NEW_ARMSCANNON_05_DOWN: case EF_NEW_ARMSCANNON_07_UP: case EF_NEW_ARMSCANNON_07_DOWN: case EF_NEW_ARMSCANNON_11_UP: case EF_NEW_ARMSCANNON_11_DOWN: case EF_QSCARABA_VISUAL: case EF_NEW_RAYOFGENESIS: case EF_NEW_RAYOFGENESIS_CAST: case EF_NEW_RAYOFGENESIS_CAST_BOTTOM: case EF_NEW_RAYOFGENESIS_HIT: case EF_MINEFFECT_CROSSRIPPERSLASHER: case EF_MINEFFECT_ARMSCANNON_01: case EF_MINEFFECT_ARMSCANNON_05: case EF_MINEFFECT_ARMSCANNON_07: case EF_MINEFFECT_ARMSCANNON_11: case EF_NEW_METALLICSOUND: case EF_NEW_METALLICSOUND_BOTTOM: case EF_NEW_METALLICSOUND_HIT: case EF_NEW_REPRODUCE: case EF_NEW_REPRODUCE_BOTTOM: case EF_NEW_SOULEXPANSION_CAST: case EF_NEW_SOULEXPANSION_CAST_BOTTOM: case EF_NEW_SOULEXPANSION_LOOP: case EF_NEW_SOULEXPANSION_LOOP_BOTTOM: case EF_NEW_SOULEXPANSION_HIT: case EF_NEW_SOULEXPANSION_HIT_BOTTOM: case EF_NEW_REVERBERATION_HIT: case EF_NEW_AROMAOIL: case EF_NEW_AROMAOIL_BOTTOM: case EF_NEW_BATHFOAM: case EF_NEW_BATHFOAM_BOTTOM: case EF_TETRA_VORTEX_CORE_REUSE: case EF_BLUE_WAVE_1: case EF_BLUE_WAVE_2: case EF_BLUE_WAVE_3: case EF_RED_WAVE_1: case EF_RED_WAVE_2: case EF_RED_WAVE_3: case EF_NEW_EARTHGRAVE_HIT: case EF_NEW_IGNITIONBREAK: case EF_NEW_IGNITIONBREAK_BOTTOM: case EF_NEW_IGNITIONBREAK_CAST: case EF_NEW_JUDEX_CAST: case EF_NEW_JUDEX_CAST_BOTTOM: case EF_NEW_JUDEX_CAST_LOOP: case EF_NEW_JUDEX_CAST_LOOP_BOTTOM: case EF_NEW_JUDEX_TARGET: case EF_NEW_JUDEX_TARGET_BOTTOM: case EF_NEW_CHAINLIGHTNING_CAST: case EF_NEW_CHAINLIGHTNING_CAST_BOTTOM: case EF_NEW_CHAINLIGHTNING_LOCKON: case EF_NEW_CHAINLIGHTNING_TARGET: case EF_NEW_MANDRAGORA: case EF_NEW_MANDRAGORA_BOTTOM: case EF_NEW_MANDRAGORA_CAST: case EF_NEW_SOUNDOFDESTRUCTION_CAST: case EF_NEW_SOUNDOFDESTRUCTION_CAST_BOTTOM: case EF_NEW_SOUNDOFDESTRUCTION_TARGET: case EF_NEW_AIMEDBOLT_01: case EF_NEW_AIMEDBOLT_05: case EF_NEW_AIMEDBOLT_07: case EF_NEW_AIMEDBOLT_11: case EF_NEW_AIMEDBOLT_CAST_BOTTOM: case EF_NEW_AIMEDBOLT_END: case EF_NEW_AIMEDBOLT_TARGET_LOOP: case EF_NEW_UNLIMIT: case EF_NEW_UNLIMIT_BOTTOM: case EF_NEW_EPICLESIS: case EF_STORMSLASH_1: case EF_STORMSLASH_2: case EF_STORMSLASH_3: case EF_STORMSLASH_4: case EF_STORMSLASH_5: case EF_NEW_POWERSWING_01: case EF_NEW_POWERSWING_05: case EF_NEW_POWERSWING_07: case EF_NEW_POWERSWING_11: case EF_NEW_POWERSWING_BOTTOM: case EF_NEW_VULCANARM: case EF_NEW_VULCANARM_BOTTOM: case EF_NEW_VULCANARM_SHOTHOLE: case EF_NEW_EARTHDRIVE_TARGET: case EF_SERVANT_SIGN: case EF_SERVANT_SIGN_DOWN: case EF_SERVANT_SIGN_DOWN_BOTTOM: case EF_SERVANT_PHANTOM_DOWN: case EF_SERVANT_PHANTOM_HIT: case EF_SERVANT_PHANTOM_HIT_BOTTOM: case EF_SERVANT_PHANTOM_SUB: case EF_SERVANT_PHANTOM_SUB_BOTTOM: case EF_SERVANT_DEMOLITION_COLLECT: case EF_SERVANT_DEMOLITION_HIT: case EF_SERVANT_DEMOLITION_LEFTDOWN: case EF_SERVANT_DEMOLITION_RIGHTDOWN: case EF_DRAGONIC_AURA: case EF_DRAGONIC_AURA_BOTTOM: case EF_DRAGONIC_AURA_HIT: case EF_DRAGONIC_AURA_HIT_BOTTOM: case EF_DRAGONIC_AURA_BUFF: case EF_DRAGONIC_AURA_BUFF_BOTTOM: case EF_MADNESS_CRUSHER: case EF_MADNESS_CRUSHER_BOTTOM: case EF_NEW_AUTOSHADOWSPELL: case EF_NEW_AUTOSHADOWSPELL_BOTTOM: case EF_DESTRUCTIVE_HURRICANE: case EF_DESTRUCTIVE_HURRICANE_BOTTOM: case EF_DESTRUCTIVE_HURRICANE_CAST: case EF_DESTRUCTIVE_HURRICANE_CAST_BOTTOM: case EF_DESTRUCTIVE_HURRICANE_CLIMAX: case EF_DESTRUCTIVE_HURRICANE_HIT: case EF_DEADLY_PROJECTION_CAST: case EF_DEADLY_PROJECTION_CAST_BOTTOM: case EF_DEADLY_PROJECTION_HIT: case EF_DEADLY_PROJECTION: case EF_SOUL_VC_STRIKE_CAST: case EF_SOUL_VC_STRIKE_CAST_BOTTOM: case EF_SOUL_VC_STRIKE_HIT: case EF_ROCKDOWN: case EF_ROCKDOWN_BOTTOM: case EF_ROCKDOWN_CAST: case EF_ROCKDOWN_CAST_BOTTOM: case EF_ROCKDOWN_HIT: case EF_VIGOR_CAST: case EF_VIGOR_BUFF: case EF_RAIN_OF_CRYSTAL: case EF_RAIN_OF_CRYSTAL_BOTTOM: case EF_CRIMSON_ARROW_CAST: case EF_CRIMSON_ARROW_CAST_BOTTOM: case EF_CRIMSON_ARROW_HIT: case EF_VIOLENT_QUAKE_CAST: case EF_VIOLENT_QUAKE_CAST_BOTTOM: case EF_VIOLENT_QUAKE_HIT: case EF_ASTRAL_STRIKE_CAST: case EF_ASTRAL_STRIKE_CAST_BOTTOM: case EF_MYSTERY_ILLUSION: case EF_MYSTERY_ILLUSION_BOTTOM: case EF_MYSTERY_ILLUSION_CAST: case EF_MYSTERY_ILLUSION_CAST_BOTTOM: case EF_MYSTERY_ILLUSION_HIT: case EF_TORNADO_STORM: case EF_TORNADO_STORM_BOTTOM: case EF_TORNADO_STORM_CAST: case EF_TORNADO_STORM_CAST_BOTTOM: case EF_TORNADO_STORM_HIT: case EF_FROZEN_SLASH: case EF_FROZEN_SLASH_CAST: case EF_FROZEN_SLASH_CAST_BOTTOM: case EF_FROZEN_SLASH_HIT: case EF_FROZEN_SLASH_ICE_01: case EF_FROZEN_SLASH_ICE_02: case EF_FROZEN_SLASH_ICE_03: case EF_FROZEN_SLASH_ICE_04: case EF_FROZEN_SLASH_ICE_05: case EF_FROZEN_SLASH_ICE_06: case EF_FROZEN_SLASH_ICE_07: case EF_FROZEN_SLASH_ICE_08: case EF_VIOLENT_QUAKE_BOTTOM: case EF_ALL_BLOOM: case EF_ALL_BLOOM_BOTTOM: case EF_ALL_BLOOM_CAST: case EF_ALL_BLOOM_CAST_BOTTOM: case EF_ALL_BLOOM_HIT: case EF_CLIMAX_LIGHT: case EF_CLIMAX_CAST: case EF_CLIMAX_CAST_LOOP: case EF_FLORAL_FLARE_ROAD_CAST: case EF_FLORAL_FLARE_ROAD_CAST_BOTTOM: case EF_FLORAL_FLARE_ROAD_HIT: case EF_MEDIALE_VOTUM: case EF_MEDIALE_VOTUM_CAST: case EF_MEDIALE_VOTUM_LOOP: case EF_ARGUTUS_VITA_CAST: case EF_ARGUTUS_TELUM_CAST: case EF_PRESENS_ACIES_CAST: case EF_NEW_D_MACHINE: case EF_NEW_D_MACHINE_CAST: case EF_NEW_D_MACHINE_CAST_BOTTOM: case EF_NEW_D_MACHINE_START: case EF_NEW_D_MACHINE_END: case EF_ARBITRIUM_CAST: case EF_ARBITRIUM_CAST_BOTTOM: case EF_ARBITRIUM: case EF_ARBITRIUM_BOTTOM: case EF_ARBITRIUM_HIT: case EF_DANCING_KNIFE_CAST: case EF_DANCING_KNIFE_CAST_BOTTOM: case EF_ABYSS_DAGGER_HIT_1830: case EF_NEW_REPARATIO_CAST: case EF_NEW_REPARATIO_CAST_BOTTOM: case EF_NEW_REPARATIO: case EF_NEW_REPARATIO_BOTTOM: case EF_NEW_REPARATIO_TARGET: case EF_NEW_REPARATIO_TARGET_BOTTOM: case EF_ETERNAL_SLASH_HIT_1: case EF_UNK_1839: case EF_A_MACHINE_CAST: case EF_A_MACHINE_HIT: case EF_EFFLIGO: case EF_EFFLIGO_BOTTOM: case EF_EFFLIGO_HIT: case EF_COMPETENTIA: case EF_COMPETENTIA_BOTTOM: case EF_COMPETENTIA_LOOP: case EF_COMPETENTIA_LOOP_BOTTOM: case EF_CRYSTAL_IMPACT: case EF_CRYSTAL_IMPACT_BOTTOM: case EF_CRYSTAL_IMPACT_CAST: case EF_CRYSTAL_IMPACT_CAST_BOTTOM: case EF_CRYSTAL_IMPACT_HIT: case EF_CRYSTAL_IMPACT_BUFF: case EF_RELIGIO: case EF_RELIGIO_CAST: case EF_NEW_ENCHANTING_SHADOW: case EF_NEW_ENCHANTING_SHADOW_BOTTOM: case EF_FATAL_SHADOW_CROW: case EF_FATAL_SHADOW_CROW_BOTTOM: case EF_FATAL_SHADOW_CROW_HIT: case EF_DEEP_BLIND_TRAP_CAST: case EF_DEEP_BLIND_TRAP: case EF_DEEP_BLIND_TRAP_HIT: case EF_SWIFT_TRAP_CAST: case EF_SWIFT_TRAP: case EF_SWIFT_TRAP_HIT: case EF_SOLID_TRAP_CAST: case EF_SOLID_TRAP_CAST_BOTTOM: case EF_SOLID_TRAP: case EF_SOLID_TRAP_HIT: case EF_NEW_RUSH_QUAKE: case EF_NEW_RUSH_QUAKE_BOTTOM: case EF_NEW_RUSH_QUAKE_HIT: case EF_BENEDICTUM: case EF_BENEDICTUM_CAST: case EF_BENEDICTUM_CAST_BOTTOM: case EF_STRATUM_TREMOR_CAST: case EF_STRATUM_TREMOR_CAST_BOTTOM: case EF_STRATUM_TREMOR_HIT: case EF_STRATUM_TREMOR: case EF_STRATUM_TREMOR_BOTTOM: case EF_IMPACT_CRATER: case EF_IMPACT_CRATER_BOTTOM: case EF_IMPACT_CRATER_HIT: case EF_WIND_SIGN: case EF_WIND_SIGN_LOOP: case EF_ABR_MOTHER_CAST: case EF_ABR_MOTHER_01: case EF_ABR_MOTHER_02: case EF_HAWK_RUSH: case EF_ABR_INFINITY: case EF_ABR_INFINITY_BOTTOM: case EF_ABR_INFINITY_CAST: case EF_ABR_INFINITY_HIT: case EF_ETERNAL_SLASH_HIT_2: case EF_NEW_D_CANNON: case EF_NEW_D_CANNON_CAST: case EF_NEW_D_CANNON_HIT: case EF_FLAME_TRAP: case EF_FLAME_TRAP_HIT: case EF_NEW_DILECTIO_HEAL: case EF_NEW_DILECTIO_HEAL_CAST: case EF_NEW_DILECTIO_HEAL_CAST_BOTTOM: case EF_NEW_DILECTIO_HEAL_TARGET: case EF_NEW_DILECTIO_HEAL_TARGET_BOTTOM: case EF_NEW_PRAMEN_BOTTOM: case EF_NEW_PRAMEN_CAST: case EF_NEW_PRAMEN: case EF_NEW_BATTLE_W: case EF_NEW_BATTLE_W_CAST: case EF_NEW_BATTLE_W_BOTTOM: case EF_NEW_BATTLE_W_HIT: case EF_NEW_AXE_STOMP_HIT: case EF_NEW_AXE_STOMP_BOTTOM: case EF_NEW_AXE_STOMP: case EF_NEW_AXE_STOMP_12: case EF_NEW_AXE_STOMP_01: case EF_NEW_AXE_STOMP_03: case EF_NEW_AXE_STOMP_05: case EF_NEW_AXE_STOMP_06: case EF_NEW_AXE_STOMP_08: case EF_NEW_AXE_STOMP_09: case EF_NEW_AXE_STOMP_11: case EF_CRESCIVEBOLT_CAST: case EF_CRESCIVEBOLT_HIT: case EF_SHADOW_STAB: case EF_ETERNAL_SLASH_HIT: case EF_SHADOW_STAB_HIT2: case EF_SINCERE_FAITH: case EF_SINCERE_FAITH_BOTTOM: case EF_ABYSS_DAGGER: case EF_ABYSS_DAGGER_HIT: case EF_HAWK_BOOMERANG_CAST: case EF_HAWK_BOOMERANG_HIT: case EF_HAWK_BOOMERANG_START: case EF_GALE_STORM_CAST: case EF_GALE_STORM_HIT: case EF_FIRST_FAITH_POWER: case EF_FIRST_FAITH_POWER_CAST: case EF_FIRST_FAITH_POWER_START: case EF_JUDGE: case EF_JUDGE_CAST: case EF_JUDGE_START: case EF_JUDGE_AURA: case EF_THIRD_EXOR_FLAME: case EF_THIRD_EXOR_FLAME_CAST: case EF_THIRD_EXOR_FLAME_START: case EF_THIRD_EXOR_FLAME_AURA: case EF_POWERFUL_FAITH: case EF_OLEUM_SANCTUM: case EF_OLEUM_SANCTUM_BOTTOM: case EF_OLEUM_SANCTUM_HIT: case EF_OLEUM_SANCTUM_LOOP: case EF_INCREASING_ACTIVITY: case EF_INCREASING_ACTIVITY_CAST: case EF_INCREASING_ACTIVITY_CAST_BOTTOM: case EF_EXPLOSION_BLASTER: case EF_EXPLOSION_BLASTER_BOTTOM: case EF_EXPLOSION_BLASTER_HIT: case EF_FIRM_FAITH: case EF_MYSTICSYMPHONY: case EF_MYSTICSYMPHONY_CAST: case EF_MYSTICSYMPHONY_NOTE: case EF_ACTIVITY_BURN: case EF_ACTIVITY_BURN_CAST: case EF_ACTIVITY_BURN_CAST_BOTTOM: case EF_KVASIRSONATA: case EF_KVASIRSONATA_CAST: case EF_KVASIRSONATA_CAST_BOTTOM: case EF_SERPENS_BOTTOM: case EF_SERPENS_CAST: case EF_SERPENS_CAST_BOTTOM: case EF_SERPENS_HIT: case EF_SERPENS_SHIELD: case EF_CHAIN_REACTION_SHOT_CAST: case EF_CHAIN_REACTION_SHOT_CAST_BOTTOM: case EF_ETERNAL_SLASH_HIT_3: case EF_CHAIN_REACTION_SHOT_HITSUB: case EF_CHAIN_REACTION_SHOT: case EF_DILUVIO_ICE: case EF_DILUVIO_ICE_BOTTOM: case EF_DILUVIO_CAST: case EF_DILUVIO_CAST_BOTTOM: case EF_DILUVIO_HIT: case EF_DILUVIO_ARMOR: case EF_SPELL_ENCHANTING: case EF_DIAMOND_STORM_BOTTOM: case EF_DIAMOND_STORM_CAST: case EF_DIAMOND_STORM_CAST_BOTTOM: case EF_DIAMOND_STORM_HIT: case EF_VENOM_SWAMP_BOTTOM: case EF_VENOM_SWAMP_CAST: case EF_VENOM_SWAMP_CAST_BOTTOM: case EF_VENOM_SWAMP_HIT: case EF_ARDOR: case EF_ARDOR_BOTTOM: case EF_ARDOR_CAST: case EF_ARDOR_CAST_BOTTOM: case EF_ARDOR_HIT: case EF_ARDOR_FLAMEARMOR: case EF_LIGHTNING_LAND: case EF_LIGHTNING_LAND_BOTTOM: case EF_LIGHTNING_LAND_CAST: case EF_LIGHTNING_LAND_CAST_BOTTOM: case EF_LIGHTNING_LAND_HIT: case EF_ROSEBLOSSOM_CAST: case EF_ROSEBLOSSOM_CAST_BOTTOM: case EF_ROSEBLOSSOM_HIT: case EF_ROSEBLOSSOM_ROSE: case EF_ROSEBLOSSOM_SHOT: case EF_FIRST_BRAND: case EF_FIRST_BRAND_AURA: case EF_FIRST_BRAND_HIT: case EF_FIRST_BRAND_START: case EF_CONFLAGRATION: case EF_CONFLAGRATION_BOTTOM: case EF_CONFLAGRATION_CAST: case EF_CONFLAGRATION_CAST_BOTTOM: case EF_CONFLAGRATION_HIT: case EF_SOUND_BLEND: case EF_SOUND_BLEND_CAST: case EF_SOUND_BLEND_CAST_BOTTOM: case EF_SOUND_BLEND_RED: case EF_METALLIC_FURY: case EF_JAWAII_SERENADE: case EF_JAWAII_SERENADE_CAST: case EF_JAWAII_SERENADE_CAST_BOTTOM: case EF_PRONMARCH: case EF_PRONMARCH_CAST: case EF_PRONMARCH_CAST_BOTTOM: case EF_RHYTHMSHOOTING_CAST: case EF_RHYTHMSHOOTING_CAST_BOTTOM: case EF_RHYTHMSHOOTING_HIT: case EF_NIFLHEIM: case EF_NIFLHEIM_CAST: case EF_SECOND_FAITH: case EF_SECOND_FAITH_AURA: case EF_SECOND_FAITH_START: case EF_SECOND_FLAME: case EF_SECOND_FLAME_BOTTOM: case EF_THIRD_FLAME_BOMB: case EF_THIRD_FLAME_BOMB_BOTTOM: case EF_ABYSS_STRIKE: case EF_ABYSS_STRIKE_BOTTOM: case EF_ABYSS_STRIKE_CAST: case EF_ABYSS_STRIKE_CAST_BOTTOM: case EF_ABYSS_STRIKE_GROUND: case EF_ABYSS_STRIKE_GROUND_BOTTOM: case EF_ABYSS_STRIKE_HIT: case EF_MASSIVE_FLAME_BLASTER: case EF_MASSIVE_FLAME_BLASTER_HIT: case EF_MASSIVE_FLAME_BLASTER_HIT_BOTTOM: case EF_THIRD_CONSECRATION: case EF_PROCELLA: case EF_PROCELLA_BOTTOM: case EF_PROCELLA_CAST: case EF_PROCELLA_CAST_BOTTOM: case EF_PROCELLA_HIT: case EF_PROCELLA_STORM: case EF_TERREMOTUS: case EF_TERREMOTUS_CAST: case EF_TERREMOTUS_CAST_BOTTOM: case EF_TERREMOTUS_HIT: case EF_TERREMOTUS_PROTECT: case EF_FROM_THE_ABYSS: case EF_ABYSS_STRIKE_HIT_2: case EF_THIRD_PUNISH: case EF_THIRD_PUNISH_BOTTOM: case EF_FRENZY_SHOT_HIT: case EF_GEF_NOCTURN: case EF_GEF_NOCTURN_CAST: case EF_GEF_NOCTURN_CAST_BOTTOM: case EF_ROKI_CAPRICCIO: case EF_ROKI_CAPRICCIO_CAST: case EF_ROKI_CAPRICCIO_CAST_BOTTOM: case EF_MUSICAL_INTERLUDE: case EF_MUSICAL_INTERLUDE_CAST: case EF_AIN_RHAPSODY: case EF_AIN_RHAPSODY_CAST: case EF_ABYSS_SLAYER: case EF_ABYSS_SLAYER_CAST: case EF_ABYSS_SLAYER_CAST_BOTTOM: case EF_ABYSS_SQUARE: case EF_ABYSS_SQUARE_BOTTOM: case EF_ABYSS_DAGGER_HIT_2: case EF_DEFT_STAB: case EF_TERRA_DRIVE: case EF_TERRA_DRIVE_BOTTOM: case EF_TERRA_DRIVE_CAST: case EF_TERRA_DRIVE_CAST_BOTTOM: case EF_TERRA_DRIVE_HIT: case EF_ELEMENTAL_BUSTER_CAST: case EF_ELEMENTAL_BUSTER_FIRE: case EF_ELEMENTAL_BUSTER_FIRE_BOTTOM: case EF_ELEMENTAL_BUSTER_FIRE_HIT: case EF_ELEMENTAL_BUSTER_LAND: case EF_ELEMENTAL_BUSTER_LAND_BOTTOM: case EF_ELEMENTAL_BUSTER_LAND_HIT: case EF_ELEMENTAL_BUSTER_POISON: case EF_ELEMENTAL_BUSTER_POISON_BOTTOM: case EF_ELEMENTAL_BUSTER_POISON_HIT: case EF_ELEMENTAL_BUSTER_WATER: case EF_ELEMENTAL_BUSTER_WATER_BOTTOM: case EF_ELEMENTAL_BUSTER_WATER_HIT: case EF_ELEMENTAL_BUSTER_WIND: case EF_ELEMENTAL_BUSTER_WIND_BOTTOM: case EF_ELEMENTAL_BUSTER_WIND_HIT: case EF_UNLUCKY_RUSH_CAST: case EF_ABYSS_DAGGER_HIT_3: case EF_OVERSLASH: case EF_OVERSLASH_BOTTOM: case EF_OVERSLASH_CAST: case EF_OVERSLASH_HIT: case EF_ADVANCED_PROTECTION: case EF_ADVANCED_PROTECTION_BOTTOM: case EF_ADVANCED_PROTECTION_CAST: case EF_ADVANCED_PROTECTION_CAST_BOTTOM: case EF_CROSS_RAIN_BOTTOM: case EF_CROSS_RAIN_CAST: case EF_CROSS_RAIN_CAST_BOTTOM: case EF_GUARD_STANCE: case EF_GUARD_STANCE_CAST: case EF_GUARD_STANCE_CAST_BOTTOM: case EF_ATTACK_STANCE: case EF_ATTACK_STANCE_CAST: case EF_ATTACK_STANCE_CAST_BOTTOM: case EF_GRAND_JUDGEMENT: case EF_GRAND_JUDGEMENT_BOTTOM: case EF_GRAND_JUDGEMENT_BUFF: case EF_GRAND_JUDGEMENT_CAST: case EF_GRAND_JUDGEMENT_CAST_BOTTOM: case EF_HOLY_SHIELD_CAST: case EF_HOLY_SHIELD: case EF_HOLY_SHIELD_LOOP: case EF_SHIELD_SHOOTING_CAST: case EF_SHIELD_SHOOTING_HIT: case EF_THE_W_PROTECTION: case EF_THE_W_PROTECTION_CAST: case EF_GUARDIANSHIELD: case EF_GUARDIANSHIELD_BOTTOM: case EF_GUARDIANSHIELD_SUB: case EF_JUDGEMENT_CROSS: case EF_JUDGEMENT_CROSS_BOTTOM: case EF_JUDGEMENT_CROSS_CAST: case EF_JUDGEMENT_CROSS_CAST_BOTTOM: case EF_REBOUND_SHIELD: case EF_REBOUND_SHIELD_BOTTOM: case EF_REBOUND_SHIELD_CAST: case EF_REBOUND_SHIELD_CAST_BOTTOM: case EF_ULTIMATESACRIFICE: case EF_ULTIMATESACRIFICE_BOTTOM: case EF_ULTIMATESACRIFICE_SHINE: case EF_ACIDIFIED_ZONE_FIRE_CAST: case EF_ACIDIFIED_ZONE_FIRE_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_FIRE_HIT: case EF_ACIDIFIED_ZONE_FIRE_START: case EF_ACIDIFIED_ZONE_FIRE_START_BOTTOM: case EF_ACIDIFIED_ZONE_FIRE_LOOP: case EF_ACIDIFIED_ZONE_FIRE_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_WATER_CAST: case EF_ACIDIFIED_ZONE_WATER_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_WATER_HIT: case EF_ACIDIFIED_ZONE_WATER_START: case EF_ACIDIFIED_ZONE_WATER_START_BOTTOM: case EF_ACIDIFIED_ZONE_WATER_LOOP: case EF_ACIDIFIED_ZONE_WATER_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_WIND_CAST: case EF_ACIDIFIED_ZONE_WIND_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_WIND_HIT: case EF_ACIDIFIED_ZONE_WIND_START: case EF_ACIDIFIED_ZONE_WIND_START_BOTTOM: case EF_ACIDIFIED_ZONE_WIND_LOOP: case EF_ACIDIFIED_ZONE_WIND_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_GROUND_CAST: case EF_ACIDIFIED_ZONE_GROUND_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_GROUND_HIT: case EF_ACIDIFIED_ZONE_GROUND_START: case EF_ACIDIFIED_ZONE_GROUND_START_BOTTOM: case EF_ACIDIFIED_ZONE_GROUND_LOOP: case EF_ACIDIFIED_ZONE_GROUND_LOOP_BOTTOM: case EF_HELLTREE_CAST: case EF_HELLTREE_CAST_BOTTOM: case EF_HELLTREE_DUSTY: case EF_HELLTREE_HOWLING: case EF_RESEARCH_REPORT: case EF_RESEARCH_REPORT_CAST: case EF_RESEARCH_REPORT_CAST_BOTTOM: case EF_STATE_LASSITUDE: case EF_STATE_SWOONING: case EF_STATE_HOLYFLAME: case EF_WOODEN_WARRIOR_CAST: case EF_WOODEN_WARRIOR_CAST_BOTTOM: case EF_WOODEN_WARRIOR_ATTACK: case EF_WOODEN_WARRIOR_ATTACK_HIT: case EF_WOODEN_WARRIOR_THROWROCK: case EF_WOODEN_WARRIOR_THROWROCK_HIT: case EF_WOODEN_FAIRY_CAST: case EF_WOODEN_FAIRY_CAST_BOTTOM: case EF_WOODEN_FAIRY_DUSTY: case EF_SERPENS_DEEP_POISONING: case EF_SERPENS_DEEP_POISONING_BOTTOM: case EF_DILUVIO_COLD_FORCE: case EF_DILUVIO_COLD_FORCE_BOTTOM: case EF_ARDOR_FLAMETECHNIC: case EF_ARDOR_FLAMETECHNIC_BOTTOM: case EF_PROCELLA_GRACE_BREEZE: case EF_PROCELLA_GRACE_BREEZE_BOTTOM: case EF_TERREMOTUS_EARTH_CARE: case EF_TERREMOTUS_EARTH_CARE_BOTTOM: case EF_STATE_LIGHTNINGSTRIKE: case EF_STATE_CONFLAGRATION: case EF_STATE_FROSTBITE: case EF_STATE_FROSTBITE_FINISH: case EF_STATE_CRYSTALLIZATION: case EF_STATE_DEADLYPOISON: case EF_THIRD_CONSECRATION_BOTTOM: case EF_SERVANT_SIGN_BOTTOM: case EF_NPC_KILLING_AURA_HIT: case EF_NPC_CANE_OF_EVIL_EYE: case EF_TOXIN_OF_MANDARA_BOMB: case EF_TOXIN_OF_MANDARA_BOMB_BOTTOM: case EF_TOXIN_OF_MANDARA_SHOCK: case EF_NEEDLE_STINGER: case EF_NEEDLE_STINGER_BOTTOM: case EF_NEEDLE_STINGER_HIT: case EF_ABSOLUTE_ZEPHYR: case EF_ABSOLUTE_ZEPHYR_BOTTOM: case EF_ABSOLUTE_ZEPHYR_HIT: case EF_TWISTER_CUTTER: case EF_TWISTER_CUTTER_HIT: case EF_HEILIGE_PFERD: case EF_HEILIGE_PFERD_BOTTOM: case EF_HEILIGE_PFERD_CAST: case EF_GOLDENE_TONE: case EF_GLANZEN_SPIES: case EF_GLANZEN_SPIES_HIT: case EF_BLAZING_AND_FURIOUS: case EF_THE_ONE_FIGHTER_RISES_BOTTOM: case EF_TEMPERING: case EF_BLAST_FORGE_HIT: case EF_TETRA_VORTEX_WATER_SUB_2: case EF_TETRA_VORTEX_EARTH_SUB_2: case EF_NPC_20TH_CRYSTAL_S: case EF_NPC_20TH_CRYSTAL_M: case EF_NPC_20TH_CRYSTAL_L: case EF_NPC_GATE_GREEN_1: case EF_NPC_GATE_PURPLE_1: case EF_NPC_GATE_RED_1: case EF_20TH_FIREWORK: case EF_NPC_GATE_GREEN_2: case EF_NPC_GATE_PURPLE_2: case EF_NPC_GATE_RED_2: case EF_NPC_GATE_GREEN_3: case EF_NPC_GATE_PURPLE_3: case EF_NPC_GATE_RED_3: case EF_NPC_GATE_SKYBLUE: case EF_RUNE_ACTIVE_FINISH: case EF_RUNESET_ACTIVE: case EF_RUNESET_UPGRADE_SUCCESS: case EF_RUNESET_UPGRADE_FAIL: case EF_RUNE_BROKEN: case EF_NEW_BATTLE_W_HIT_2: case EF_NEW_PRAMEN_REUSE: case EF_THE_W_PROTECTION_REUSE: case EF_ELEMENTAL_BUSTER_FIRE_REUSE: case EF_DESTRUCTIVE_HURRICANE_BOTTOM_REUSE: case EF_CRYSTAL_IMPACT_BOTTOM_REUSE: case EF_NEW_JUDEX_TARGET_REUSE: case EF_RUNE_SLOT_SMALL: case EF_RUNE_SLOT_BIG: return true; default: return false; } } // OFFSET: 0x00B51A60 // FUNCTION: fn_19032 bool CEZ2STRScreenEffect::ApplyHeadOffset(CEZ2STRParticle* particle) { if (this->headAttached != 1 && this->IsAttachedToHead() != true) { return false; } CGameActor* actor = static_cast(FindRenderObject(this->actor)); if (!actor) { return false; } float offsetX = GetHatEffectOffsetX(this->id, particle->m_name.c_str()); float offsetY = static_cast(GetHatEffectOffsetY(this->id, actor)); if (this->jobScaled == 1 && g_session.IsDoramJob(actor->GetEffectiveJob(-1)) == true) { offsetY -= 3.0f; } float factor = GetSkillFactor(actor->GetEffectiveJob(-1)); if (((actor->render.flags >> 4) & 1) != 0 && this->fadePulse == 1) { float scale = 1.0f; actor->ScaleByFadePulse(scale); factor = scale * factor; } float shiftX = offsetX * factor; float shiftY = factor * offsetY; if (!(shiftX >= 0.0f || shiftY >= 0.0f)) { return false; } vector3d position = particle->position; const matrix& view = static_cast(g_modeMgr.GetGameMode())->camera->frame.view; const matrix& inverse = static_cast(g_modeMgr.GetGameMode())->camera->frame.inverse; float x = position.y * view.values[3] + position.x * view.values[0] + position.z * view.values[6] + view.values[9] + shiftX; float y = position.y * view.values[4] + position.x * view.values[1] + position.z * view.values[7] + view.values[10] - shiftY; float z = position.y * view.values[5] + position.x * view.values[2] + position.z * view.values[8] + view.values[11]; float worldX = y * inverse.values[3] + x * inverse.values[0] + z * inverse.values[6] + inverse.values[9]; float worldY = y * inverse.values[4] + x * inverse.values[1] + z * inverse.values[7] + inverse.values[10]; float worldZ = y * inverse.values[5] + x * inverse.values[2] + z * inverse.values[8] + inverse.values[11]; particle->position.x = worldX; particle->position.y = worldY; particle->position.z = worldZ; return true; } // OFFSET: 0x00B51CC0 // FUNCTION: fn_19033 void CEZ2STRScreenEffect::Close() { FreeParticle(this->particle); } // OFFSET: 0x00B51CD0 // FUNCTION: fn_19034 vector3d CEZ2STRScreenEffect::GetWindowOffset() { if (CEZ2STRParticle* particle = this->particle) { return particle->m_windowOffset; } vector3d zero; zero.x = 0.0f; zero.y = 0.0f; zero.z = 0.0f; return zero; } // OFFSET: 0x00B51D20 // FUNCTION: fn_19035 bool CEZ2STRScreenEffect::IsVisible() { if (this->id != 0x76C) { return CEffect::IsVisible(); } CGameActor* actor = static_cast(FindRenderObject(this->actor)); if (!actor) { return false; } if (actor->hpGaugeFlags > 0) { return actor->EffectVisible(); } return true; } // OFFSET: 0x00B56790 // FUNCTION: fn_19042 bool CEZ2STRScreenEffect::IsAlive() { int id = this->id; if (this->headAttached == 1) { return this->ActorExists(); } switch (id) { case EF_PNEUMA: case EF_RED_CROSS: case EF_BITE_SCAR: case EF_RL_ANTI_MATERIAL_BLAST: case EF_H_MINE: case EF_FLASH_KICK: case EF_TETRA_VORTEX_BALL_1: case EF_TETRA_VORTEX_BALL_2: case EF_TETRA_VORTEX_BALL_3: case EF_TETRA_VORTEX_BALL_4: case EF_NEW_ROLLINGCUTTER_COUNT_01: case EF_NEW_ROLLINGCUTTER_COUNT_02: case EF_NEW_ROLLINGCUTTER_COUNT_03: case EF_NEW_ROLLINGCUTTER_COUNT_04: case EF_NEW_ROLLINGCUTTER_COUNT_05: case EF_NEW_ROLLINGCUTTER_COUNT_06: case EF_NEW_ROLLINGCUTTER_COUNT_07: case EF_NEW_ROLLINGCUTTER_COUNT_08: case EF_NEW_ROLLINGCUTTER_COUNT_09: case EF_NEW_ROLLINGCUTTER_COUNT_10: case EF_QSCARABA_VISUAL: case EF_MINEFFECT_ROLLINGCUTTER_01: case EF_MINEFFECT_ROLLINGCUTTER_02: case EF_MINEFFECT_ROLLINGCUTTER_03: case EF_MINEFFECT_ROLLINGCUTTER_04: case EF_MINEFFECT_ROLLINGCUTTER_05: case EF_MINEFFECT_ROLLINGCUTTER_06: case EF_MINEFFECT_ROLLINGCUTTER_07: case EF_MINEFFECT_ROLLINGCUTTER_08: case EF_MINEFFECT_ROLLINGCUTTER_09: case EF_MINEFFECT_ROLLINGCUTTER_10: case EF_TETRA_VORTEX_CORE_REUSE: case EF_BLUE_WAVE_1: case EF_BLUE_WAVE_2: case EF_BLUE_WAVE_3: case EF_RED_WAVE_1: case EF_RED_WAVE_2: case EF_RED_WAVE_3: case EF_NEW_EPICLESIS: case EF_SERVANT_SIGN: case EF_DRAGONIC_AURA_BUFF: case EF_DRAGONIC_AURA_BUFF_BOTTOM: case EF_DEADLY_PROJECTION: case EF_VIGOR_BUFF: case EF_MYSTERY_ILLUSION: case EF_MYSTERY_ILLUSION_BOTTOM: case EF_TORNADO_STORM: case EF_TORNADO_STORM_BOTTOM: case EF_VIOLENT_QUAKE_BOTTOM: case EF_ALL_BLOOM: case EF_ALL_BLOOM_BOTTOM: case EF_NEW_D_MACHINE: case EF_UNK_1839: case EF_DEEP_BLIND_TRAP: case EF_SWIFT_TRAP: case EF_SOLID_TRAP: case EF_STRATUM_TREMOR: case EF_STRATUM_TREMOR_BOTTOM: case EF_WIND_SIGN_LOOP: case EF_FLAME_TRAP: case EF_CALUMITYGALE_LOOP: case EF_FIRST_FAITH_POWER: case EF_JUDGE: case EF_JUDGE_AURA: case EF_THIRD_EXOR_FLAME: case EF_THIRD_EXOR_FLAME_AURA: case EF_OLEUM_SANCTUM_LOOP: case EF_MYSTICSYMPHONY_NOTE: case EF_VENOM_SWAMP_BOTTOM: case EF_LIGHTNING_LAND: case EF_LIGHTNING_LAND_BOTTOM: case EF_FIRST_BRAND: case EF_FIRST_BRAND_AURA: case EF_CONFLAGRATION: case EF_CONFLAGRATION_BOTTOM: case EF_SOUND_BLEND: case EF_SECOND_FAITH: case EF_SECOND_FAITH_AURA: case EF_ABYSS_SLAYER: case EF_ABYSS_SQUARE: case EF_ABYSS_SQUARE_BOTTOM: case EF_CROSS_RAIN_BOTTOM: case EF_GRAND_JUDGEMENT_BUFF: case EF_HOLY_SHIELD_LOOP: case EF_ACIDIFIED_ZONE_FIRE_LOOP: case EF_ACIDIFIED_ZONE_FIRE_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_WATER_LOOP: case EF_ACIDIFIED_ZONE_WATER_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_WIND_LOOP: case EF_ACIDIFIED_ZONE_WIND_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_GROUND_LOOP: case EF_ACIDIFIED_ZONE_GROUND_LOOP_BOTTOM: case EF_STATE_LIGHTNINGSTRIKE: case EF_STATE_CONFLAGRATION: case EF_STATE_FROSTBITE: case EF_STATE_CRYSTALLIZATION: case EF_SERVANT_SIGN_BOTTOM: case EF_NPC_KILLING_AURA: case EF_NPC_20TH_CRYSTAL_S: case EF_NPC_20TH_CRYSTAL_M: case EF_NPC_20TH_CRYSTAL_L: case EF_NPC_GATE_GREEN_1: case EF_NPC_GATE_PURPLE_1: case EF_NPC_GATE_RED_1: case EF_NPC_GATE_GREEN_2: case EF_NPC_GATE_PURPLE_2: case EF_NPC_GATE_RED_2: case EF_NPC_GATE_GREEN_3: case EF_NPC_GATE_PURPLE_3: case EF_NPC_GATE_RED_3: case EF_NPC_GATE_SKYBLUE: case EF_NEW_BATTLE_W_HIT_2: return this->ActorExists(); } CEZ2STRParticle* particle = this->particle; if (0.0f == particle->life) { return true; } return particle->life * 60.0f > static_cast(particle->elapsedFrames); } // OFFSET: 0x00B56D30 // FUNCTION: fn_19043 void CEZ2STRScreenEffect::InitParticle(CEZ2STRParticle* particle, int id) { switch (id) { case EF_POTION1: particle->Open("빨간포션.str"); break; case EF_POTION2: particle->Open("주홍포션.str"); break; case EF_POTION3: particle->Open("노란포션.str"); break; case EF_POTION4: particle->Open("하얀포션.str"); break; case EF_POTION5: particle->Open("파란포션.str"); break; case EF_POTION6: particle->Open("초록포션.str"); break; case EF_POTION7: particle->Open("fruit.str"); break; case EF_POTION8: particle->Open("fruit_.str"); break; case EF_STORMGUST: particle->Open("StormGust.str"); break; case EF_KO_JYUMONJIKIRI: particle->Open("jyumonjikiri.str"); break; case EF_KO_SETSUDAN: particle->Open("setsudan.str"); break; case EF_RED_CROSS: particle->Open("red_cross.str"); break; case EF_KO_IZAYOI: particle->Open("ez_cure.str"); break; case EF_KAIHOU1: particle->Open("술식해방.str"); break; case EF_AKAITSUKI: particle->Open("불길한붉은달빛.str"); break; case EF_ZANGETSU: particle->Open("초승달2.str"); break; case EF_KO_ZENKAI_WATER: particle->Open("술식전개3.str"); break; case EF_KO_ZENKAI_LAND: particle->Open("술식전개4.str"); break; case EF_KO_ZENKAI_FIRE: particle->Open("술식전개2.str"); break; case EF_KO_ZENKAI_WIND: particle->Open("술식전개5.str"); break; case EF_KG_KYOMU: particle->Open("허무의그림자.str"); break; case EF_GENSOU: particle->Open("흐린달빛환상2.str"); break; case EF_GLASSWALL: particle->Open("SafetyWall.str"); break; case EF_HAT_EFFECT: particle->Open("cloudh.str"); break; case EF_MOONSTAR: particle->Open("moonstar.str"); break; case EF_MUSIC_HAT: particle->Open("EFST_DECORATION_OF_MUSIC\\note_1.str"); break; case EF_HAPPINESSSTAR: particle->Open("efst_happiness_star\\moonstar2.str"); break; case EF_STRANGELIGHTS: particle->Open("strangelights.str"); break; case EF_SUPER_STAR: particle->Open("superstar.str"); break; case EF_HAMMER_OF_GOD: particle->Open("RL_HAMER_GOD\\hogg2.str"); break; case EF_MASS_SPIRAL: particle->Open("RL_MESS_SPIRAL\\S5.str"); break; case EF_FIRE_RAIN: particle->Open("RL_FIRE_RAIN\\fire_rain.str"); break; case EF_BANISHING_BUSTER: particle->Open("RL_BANISHING_BUSTER\\vanishing1.str"); break; case EF_SLUGSHOT: particle->Open("RL_SLUGSHOT\\slug.str"); break; case EF_D_TAIL: particle->Open("RL_d_tail\\dtdt.str"); break; case EF_RL_EXPLOSION: particle->Open("RL_EXPLOSION\\boom.str"); break; case EF_C_MAKER: particle->Open("RL_C_MAKER\\deffender.str"); break; case EF_C_MAKER_1: particle->Open("RL_C_MAKER\\cm.str"); break; case EF_QD_SHOT: particle->Open("RL_QUICK_DRAW\\qd2.str"); break; case EF_P_ALTER: particle->Open("RL_P_ALTER\\platinum.str"); break; case EF_S_STORM: particle->Open("RL_STORM\\S_STORM.str"); break; case EF_FLOWERSMOKE: particle->Open("efst_flowersmoke\\flowersmoke.str"); break; case EF_FSTONE: particle->Open("efst_fstone\\fstone.str"); break; case EF_QSCARABA: particle->Open("efst_qscaraba\\qscaraba.str"); break; case EF_LJOSALFAR: particle->Open("efst_ljosalfar\\ljosalfar.str"); break; case EF_MAPLE_FALLS: particle->Open("efst_maple_falls\\maple_falls.str"); break; case EF_MARKING_USE_CHANGEMONSTER: particle->Open("Arrows_Effect_finish\\pol.str"); break; case EF_MAGICAL_FEATHER: particle->Open("efst_magical_feather\\magical_feather.str"); break; case EF_MERMAID_LONGING: particle->Open("efst_mermaid_loging\\bubblebubble.str"); break; case EF_ACH_COMPLETE: particle->Open("ach_complete\\ppring3.str"); break; case EF_TIME_ACCESSORY: particle->Open("efst_time_accessory\\time_accessory.str"); break; case EF_FRESHSHRIMP: particle->Open("su_freshshrimp\\su_freshshrimp.str"); break; case EF_SU_TUNABELLY: particle->Open("su_tunabelly\\su_tunabelly.str"); break; case EF_SU_SV_STEMSPEAR: particle->Open("su_sv_stemspear\\su_sv_stemspear.str"); break; case EF_SU_SCRATCH: particle->Open("su_scratch\\su_scratch.str"); break; case EF_SU_BITE: particle->Open("su_bite\\su_bite.str"); break; case EF_SU_SCAROFTAROU: particle->Open("su_scaroftarou\\su_scaroftarou.str"); break; case EF_SU_ARCLOUSEDASH: particle->Open("su_arclousedash\\su_arclousedash.str"); break; case EF_SU_PICKYPECK: particle->Open("su_pickypeck\\su_pickypeck.str"); break; case EF_SU_BUNCHOFSHRIMP: particle->Open("su_bunchofshrimp\\su_bunchofshrimp.str"); break; case EF_BITE_SCAR: particle->Open("bite_scar\\bite_scar.str"); break; case EF_WIDE_CRITICAL_WOUND: particle->Open("wide_critical_wound\\wide_critical_wound.str"); break; case EF_SU_GROOMING: particle->Open("su_grooming\\su_grooming.str"); break; case EF_SU_CHATTERING: particle->Open("su_chattering\\su_chattering.str"); break; case EF_SU_LOPE: particle->Open("su_nyanggrass\\su_nyanggrass.str"); break; case EF_SU_HISS: particle->Open("su_hiss\\su_hiss.str"); break; case EF_SU_POWEROFFLOCK: particle->Open("su_powerofflock\\su_powerofflock.str"); break; case EF_SU_SVG_SPIRIT: particle->Open("su_svg_spirit\\su_svg_spirit.str"); break; case EF_PNEUMA: { int index = rand() % 3; index = index < 0 ? 0 : index; particle->Open(FormatOwnedString("Pneuma%d.str", index + 1)); break; } case EF_FIREDANCE: particle->Open("RL_fire_dance\\firedance.str"); break; case EF_RICHS_COIN_A: particle->Open("RL_richs_coin_A\\reachs.str"); break; case EF_RL_ANTI_MATERIAL_BLAST: particle->Open("RL_anti_material\\anti.str"); break; case EF_E_CHAIN: particle->Open("RL_e_chain\\eternal.str"); break; case EF_HEAT_BARREL: particle->Open("RL_heat_barrel\\htb.str"); break; case EF_H_MINE: particle->Open("RL_h_mine\\mine.str"); break; case EF_WE_ONEFOREVER: particle->Open("we_oneforever\\we_oneforever.str"); break; case EF_WE_CHEERUP: particle->Open("we_cheerup\\we_cheerup.str"); break; case EF_QUAGMIRE_VISUAL: particle->Open("Quagmire\\Quagmire.str"); break; case EF_LORD_OF_VERMILLION_VISUAL: particle->Open("lord_of_vermillion\\lord_of_vermillion.str"); break; case EF_METEOR_STORM_VISUAL: { int index = rand() % 3; index = index < 0 ? 0 : index; particle->Open(FormatOwnedString("MeteorStorm\\meteor%d.str", index + 1).c_str()); break; } case EF_SOLARBURST: particle->Open("solar_burst\\solar_burst.str"); break; case EF_SJ_DOCUMENT: particle->Open("sj_document\\sj_document.str"); break; case EF_FALLING_STAR: particle->Open("falling_star\\falling_star.str"); break; case EF_FLASH_KICK: particle->Open("flash_kick\\flash_kick.str"); break; case EF_SOUL_GOLEM: particle->Open("soul_golem\\soul_golem.str"); break; case EF_NEWMOON_KICK: particle->Open("newmoon_kick\\newmoon_kick.str"); break; case EF_FULLMOON_KICK: particle->Open("fullmoon_kick\\fullmoon_kick.str"); break; case EF_SOUL_CURSE: particle->Open("soul_curse\\soul_curse.str"); break; case EF_PROMINENCE_KICK: particle->Open("prominence_kick\\prominence_kick.str"); break; case EF_SOUL_REVOLVE: particle->Open("soul_revolve\\soul_revolve.str"); break; case EF_TEST_EFFECT_00: case EF_TEST_EFFECT_01: case EF_TEST_EFFECT_02: case EF_TEST_EFFECT_03: case EF_TEST_EFFECT_04: case EF_TEST_EFFECT_05: case EF_TEST_EFFECT_06: case EF_TEST_EFFECT_07: case EF_TEST_EFFECT_08: case EF_TEST_EFFECT_09: particle->Open(FormatOwnedString("test_effect\\%02d\\%02d.str", id - 0x4DC, id - 0x4DC)); break; case EF_NEW_METEORSTORM: particle->Open("new_meteostorm\\new_meteostorm\\new_meteostorm.str"); break; case EF_NEW_METEORSTORM_BOTTOM: particle->Open("new_meteostorm\\new_meteostorm_bottom\\new_meteostorm_bottom.str"); break; case EF_NEW_ADORAMUS: particle->Open("new_adoramus\\new_adoramus\\new_adoramus.str"); break; case EF_NEW_ADORAMUS_BOTTOM: particle->Open("new_adoramus\\new_adoramus_bottom\\new_adoramus_bottom.str"); break; case EF_TETRA_VORTEX_CAST: particle->Open("tetravortex\\tetra_cast\\tetra_cast.str"); break; case EF_TETRA_VORTEX_CORE: particle->Open("tetravortex\\tetra_ball_00_core\\tetra_ball_00_core.str"); break; case EF_TETRA_VORTEX_BALL_1: particle->Open("tetravortex\\tetra_ball_01_fire\\tetra_01_fire.str"); break; case EF_TETRA_VORTEX_BALL_2: particle->Open("tetravortex\\tetra_ball_04_water\\tetra_04_water.str"); break; case EF_TETRA_VORTEX_BALL_3: particle->Open("tetravortex\\tetra_ball_02_wind\\tetra_02_wind.str"); break; case EF_TETRA_VORTEX_BALL_4: particle->Open("tetravortex\\tetra_ball_03_earth\\tetra_03_earth.str"); break; case EF_TETRA_VORTEX_FIRE_EXP: particle->Open("tetravortex\\tetra_01_fire_explosion\\tetra_01_fire_expn.str"); break; case EF_TETRA_VORTEX_WATER_EXP: particle->Open("tetravortex\\tetra_04_water_explosion\\tetra_04_water_expn.str"); break; case EF_TETRA_VORTEX_WIND_EXP: particle->Open("tetravortex\\tetra_02_wind_explosion\\tetra_02_wind_expn.str"); break; case EF_TETRA_VORTEX_EARTH_EXP: particle->Open("tetravortex\\tetra_03_earth_explosion\\tetra_03_earth_expn.str"); break; case EF_TETRA_VORTEX_FIRE_GROUND: particle->Open("tetravortex\\tetra_01_fire_ground\\tetra_01_fire_grd.str"); break; case EF_TETRA_VORTEX_WATER_GROUND: particle->Open("tetravortex\\tetra_04_water_ground\\tetra_04_water_grd.str"); break; case EF_TETRA_VORTEX_WIND_GROUND: particle->Open("tetravortex\\tetra_02_wind_ground\\tetra_02_wind_grd.str"); break; case EF_TETRA_VORTEX_EARTH_GROUND: particle->Open("tetravortex\\tetra_03_earth_ground\\tetra_03_earth_grd.str"); break; case EF_TETRA_VORTEX_CORE_GROUND: particle->Open("tetravortex\\tetra_ball_00_core_ground\\tetra_ball_00_core_grd.str"); break; case EF_TETRA_VORTEX_FIRE_SUB: particle->Open("tetravortex\\tetra_01_fire_sub_explosion\\tetra_01_fire_sub_expn.str"); break; case EF_TETRA_VORTEX_WATER_SUB: particle->Open("tetravortex\\tetra_04_water_sub_explosion\\tetra_04_water_sub_expn.str"); break; case EF_TETRA_VORTEX_WIND_SUB: particle->Open("tetravortex\\tetra_02_wind_sub_explosion\\tetra_02_wind_sub_expn.str"); break; case EF_TETRA_VORTEX_EARTH_SUB: particle->Open("tetravortex\\tetra_03_earth_sub_explosion\\tetra_03_earth_sub_expn.str"); break; case EF_NEW_CRIMSONROCK: particle->Open("new_crimsonrock\\new_crimsonrock\\new_crimsonrock.str"); break; case EF_NEW_CRIMSONROCK_BOTTOM: particle->Open("new_crimsonrock\\new_crimsonrock_bottom\\new_crimsonrock_bottom.str"); break; case EF_NEW_CRIMSONROCK_SUB: particle->Open("new_crimsonrock\\new_crimsonrock_sub_explosion\\new_crimsonrock_sub_explosion.str"); break; case EF_NEW_DIAMONDDUST: particle->Open("new_diamonddust\\new_diamonddust\\new_diamonddust.str"); break; case EF_NEW_DIAMONDDUST_BOTTOM: particle->Open("new_diamonddust\\new_diamonddust_bottom\\new_diamonddust_bottom.str"); break; case EF_NEW_DIAMONDDUST_CAST: particle->Open("new_diamonddust\\new_diamonddust_cast\\new_diamonddust_cast.str"); break; case EF_NEW_SEVERERAINSTORM_CAST: particle->Open("new_severerainstorm\\new_severerainstorm_cast\\new_severerainstorm_cast.str"); break; case EF_NEW_SECRAMENT: particle->Open("new_secrament\\new_secrament\\new_secrament.str"); break; case EF_NEW_SECRAMENT_AURA: particle->Open("new_secrament\\new_secrament_aura\\new_secrament_aura.str"); break; case EF_NEW_PSYCHICWAVE: particle->Open("new_psychicwave\\new_psychicwave\\new_psychicwave.str"); break; case EF_NEW_PSYCHICWAVE_BOTTOM: particle->Open("new_psychicwave\\new_psychicwave_bottom\\new_psychicwave_bottom.str"); break; case EF_NEW_PSYCHICWAVE_CAST: particle->Open("new_psychicwave\\new_psychicwave_cast\\new_psychicwave_cast.str"); break; case EF_NEW_ARROWSTORM_00: particle->Open("new_arrowstorm\\new_arrowstorm_00\\new_arrowstorm_00.str"); break; case EF_NEW_ARROWSTORM_01: particle->Open("new_arrowstorm\\new_arrowstorm_01\\new_arrowstorm_01.str"); break; case EF_NEW_TRIANGLESHOT: particle->Open("new_triangleshot\\new_triangleshot\\new_triangleshot.str"); break; case EF_NEW_TRIANGLESHOT_BOTTOM: particle->Open("new_triangleshot\\new_triangleshot_bottom\\new_triangleshot_bottom.str"); break; case EF_NEW_RAMPAGEBLASTER: particle->Open("new_rampageblaster\\new_rampageblaster\\new_rampageblaster.str"); break; case EF_NEW_RAMPAGEBLASTER_BOTTOM: particle->Open("new_rampageblaster\\new_rampageblaster_bottom\\new_rampageblaster_bottom.str"); break; case EF_NEW_FEINTBOMB: particle->Open("new_peintbomb\\new_peintbomb\\new_peintbomb.str"); break; case EF_NEW_FEINTBOMB_BOTTOM: particle->Open("new_peintbomb\\new_peintbomb_bottom\\new_peintbomb_bottom.str"); break; case EF_NEW_ROLLINGCUTTER: particle->Open("new_rollingcutter\\new_rollingcutter\\new_rollingcutter.str"); break; case EF_NEW_ROLLINGCUTTER_COUNT_01: particle->Open("new_rollingcutter\\new_rollingcutter_count_01\\new_rollingcutter_count_01.str"); break; case EF_NEW_ROLLINGCUTTER_COUNT_02: particle->Open("new_rollingcutter\\new_rollingcutter_count_02\\new_rollingcutter_count_02.str"); break; case EF_NEW_ROLLINGCUTTER_COUNT_03: particle->Open("new_rollingcutter\\new_rollingcutter_count_03\\new_rollingcutter_count_03.str"); break; case EF_NEW_ROLLINGCUTTER_COUNT_04: particle->Open("new_rollingcutter\\new_rollingcutter_count_04\\new_rollingcutter_count_04.str"); break; case EF_NEW_ROLLINGCUTTER_COUNT_05: particle->Open("new_rollingcutter\\new_rollingcutter_count_05\\new_rollingcutter_count_05.str"); break; case EF_NEW_ROLLINGCUTTER_COUNT_06: particle->Open("new_rollingcutter\\new_rollingcutter_count_06\\new_rollingcutter_count_06.str"); break; case EF_NEW_ROLLINGCUTTER_COUNT_07: particle->Open("new_rollingcutter\\new_rollingcutter_count_07\\new_rollingcutter_count_07.str"); break; case EF_NEW_ROLLINGCUTTER_COUNT_08: particle->Open("new_rollingcutter\\new_rollingcutter_count_08\\new_rollingcutter_count_08.str"); break; case EF_NEW_ROLLINGCUTTER_COUNT_09: particle->Open("new_rollingcutter\\new_rollingcutter_count_09\\new_rollingcutter_count_09.str"); break; case EF_NEW_ROLLINGCUTTER_COUNT_10: particle->Open("new_rollingcutter\\new_rollingcutter_count_10\\new_rollingcutter_count_10.str"); break; case EF_NEW_CROSSRIPPERSLASHER: particle->Open("new_crossripperslasher\\new_crossripperslasher\\new_crossripperslasher.str"); break; case EF_NEW_CROSSRIPPERSLASHER_00: particle->Open("new_crossripperslasher\\new_crossripperslasher_clock_00\\new_crossripperslasher_clock_00.str"); break; case EF_NEW_CROSSRIPPERSLASHER_01: particle->Open("new_crossripperslasher\\new_crossripperslasher_clock_01\\new_crossripperslasher_clock_01.str"); break; case EF_NEW_CROSSRIPPERSLASHER_03: particle->Open("new_crossripperslasher\\new_crossripperslasher_clock_03\\new_crossripperslasher_clock_03.str"); break; case EF_NEW_CROSSRIPPERSLASHER_05: particle->Open("new_crossripperslasher\\new_crossripperslasher_clock_05\\new_crossripperslasher_clock_05.str"); break; case EF_NEW_CROSSRIPPERSLASHER_06: particle->Open("new_crossripperslasher\\new_crossripperslasher_clock_06\\new_crossripperslasher_clock_06.str"); break; case EF_NEW_CROSSRIPPERSLASHER_07: particle->Open("new_crossripperslasher\\new_crossripperslasher_clock_07\\new_crossripperslasher_clock_07.str"); break; case EF_NEW_CROSSRIPPERSLASHER_09: particle->Open("new_crossripperslasher\\new_crossripperslasher_clock_09\\new_crossripperslasher_clock_09.str"); break; case EF_NEW_CROSSRIPPERSLASHER_11: particle->Open("new_crossripperslasher\\new_crossripperslasher_clock_11\\new_crossripperslasher_clock_11.str"); break; case EF_NEW_TIGERCANNON: particle->Open("new_tigercannon\\new_tigercannon.str"); break; case EF_NEW_ARMSCANNON_01_DOWN: particle->Open("new_armscannon\\new_armscannon_01_clock_down\\new_armscannon_01_clock_down.str"); break; case EF_NEW_ARMSCANNON_01_UP: particle->Open("new_armscannon\\new_armscannon_01_clock_up\\new_armscannon_01_clock_up.str"); break; case EF_NEW_ARMSCANNON_05_DOWN: particle->Open("new_armscannon\\new_armscannon_05_clock_down\\new_armscannon_05_clock_down.str"); break; case EF_NEW_ARMSCANNON_05_UP: particle->Open("new_armscannon\\new_armscannon_05_clock_up\\new_armscannon_05_clock_up.str"); break; case EF_NEW_ARMSCANNON_07_DOWN: particle->Open("new_armscannon\\new_armscannon_07_clock_down\\new_armscannon_07_clock_down.str"); break; case EF_NEW_ARMSCANNON_07_UP: particle->Open("new_armscannon\\new_armscannon_07_clock_up\\new_armscannon_07_clock_up.str"); break; case EF_NEW_ARMSCANNON_11_DOWN: particle->Open("new_armscannon\\new_armscannon_11_clock_down\\new_armscannon_11_clock_down.str"); break; case EF_NEW_ARMSCANNON_11_UP: particle->Open("new_armscannon\\new_armscannon_11_clock_up\\new_armscannon_11_clock_up.str"); break; case EF_NEW_ARMSCANNON_EXPLOSION: particle->Open("new_armscannon\\new_armscannon_explosion\\new_armscannon_explosion.str"); break; case EF_NEW_ARMSCANNON_EXPLOSION_BOTTOM: particle->Open("new_armscannon\\new_armscannon_explosion_bottom\\new_armscannon_explosion_bottom.str"); break; case EF_NEW_ARMSCANNON_CAST: particle->Open("new_armscannon\\new_armscannon_cast\\new_armscannon_cast.str"); break; case EF_NEW_ARMSCANNON_CAST_BOTTOM: particle->Open("new_armscannon\\new_armscannon_cast_bottom\\new_armscannon_cast_bottom.str"); break; case EF_NEW_CART_CANNON_EXPLOSION: particle->Open("new_cart_cannon\\new_cart_cannon_explosion\\new_cart_cannon_explosion.str"); break; case EF_NEW_CART_CANNON_EXPLOSION_BOTTOM: particle->Open("new_cart_cannon\\new_cart_cannon_explosion_bottom\\new_cart_cannon_explosion_bottom.str"); break; case EF_NEW_CART_CANNON_FIRE: particle->Open("new_cart_cannon\\new_cart_cannon_fire\\new_cart_cannon_fire.str"); break; case EF_NEW_CART_CANNON_FIRE_BOTTOM: particle->Open("new_cart_cannon\\new_cart_cannon_fire_bottom\\new_cart_cannon_fire_bottom.str"); break; case EF_NEW_CART_CANNON_CAST: particle->Open("new_cart_cannon\\new_cart_cannon_cast\\new_cart_cannon_cast.str"); break; case EF_NEW_CART_CANNON_CAST_BOTTOM: particle->Open("new_cart_cannon\\new_cart_cannon_cast_bottom\\new_cart_cannon_cast_bottom.str"); break; case EF_QSCARABA_VISUAL: particle->Open("efst_qscaraba\\qscaraba.str"); break; case EF_NEW_AXETORNADO: particle->Open("new_axetornado\\new_axetornado\\new_axetornado.str"); break; case EF_NEW_AXETORNADO_BOTTOM: particle->Open("new_axetornado\\new_axetornado_bottom\\new_axetornado_bottom.str"); break; case EF_NEW_CART_TORNADO: particle->Open("new_cart_tornado\\new_cart_tornado\\new_cart_tornado.str"); break; case EF_NEW_CART_TORNADO_BOTTOM: particle->Open("new_cart_tornado\\new_cart_tornado_bottom\\new_cart_tornado_bottom.str"); break; case EF_HELP_ANGEL: particle->Open("help_angel\\help_angel\\help_angel.str"); break; case EF_HELP_ANGEL_BOTTOM: particle->Open("help_angel\\help_angel_bottom\\help_angel_bottom.str"); break; case EF_NEW_BANISHINGPOINT_TARGET: particle->Open("new_banishingpoint\\new_banishingpoint_target\\new_banishingpoint_target.str"); break; case EF_NEW_BANISHINGPOINT_TARGET_BOTTOM: particle->Open("new_banishingpoint\\new_banishingpoint_target_bottom\\new_banishingpoint_target_bottom.str"); break; case EF_NEW_BANISHINGPOINT_CAST: particle->Open("new_banishingpoint\\new_banishingpoint_cast\\new_banishingpoint_cast.str"); break; case EF_NEW_BANISHINGPOINT_CAST_BOTTOM: particle->Open("new_banishingpoint\\new_banishingpoint_cast_bottom\\new_banishingpoint_cast_bottom.str"); break; case EF_NEW_BANISHINGPOINT_01: particle->Open("new_banishingpoint\\new_banishingpoint_01\\new_banishingpoint_01.str"); break; case EF_NEW_BANISHINGPOINT_05: particle->Open("new_banishingpoint\\new_banishingpoint_05\\new_banishingpoint_05.str"); break; case EF_NEW_BANISHINGPOINT_07: particle->Open("new_banishingpoint\\new_banishingpoint_07\\new_banishingpoint_07.str"); break; case EF_NEW_BANISHINGPOINT_11: particle->Open("new_banishingpoint\\new_banishingpoint_11\\new_banishingpoint_11.str"); break; case EF_NEW_DRAGONBREATH_BOMB: particle->Open("new_dragonbreath\\new_dragonbreath_bomb\\new_dragonbreath_bomb.str"); break; case EF_NEW_DRAGONBREATH_BOMB_BOTTOM: particle->Open("new_dragonbreath\\new_dragonbreath_bomb_bottom\\new_dragonbreath_bomb_bottom.str"); break; case EF_NEW_DRAGONBREATH_01: particle->Open("new_dragonbreath\\new_dragonbreath_01_clock\\new_dragonbreath_01_clock.str"); break; case EF_NEW_DRAGONBREATH_05: particle->Open("new_dragonbreath\\new_dragonbreath_05_clock\\new_dragonbreath_05_clock.str"); break; case EF_NEW_DRAGONBREATH_07: particle->Open("new_dragonbreath\\new_dragonbreath_07_clock\\new_dragonbreath_07_clock.str"); break; case EF_NEW_DRAGONBREATH_11: particle->Open("new_dragonbreath\\new_dragonbreath_11_clock\\new_dragonbreath_11_clock.str"); break; case EF_NEW_DRAGONBREATH_WATER_BOMB: particle->Open("new_dragonbreath_water\\new_dragonbreath_water_bomb\\new_dragonbreath_water_bomb.str"); break; case EF_NEW_DRAGONBREATH_WATER_BOMB_BOTTOM: particle->Open("new_dragonbreath_water\\new_dragonbreath_water_bomb_bottom\\new_dragonbreath_water_bomb_bottom.str"); break; case EF_NEW_DRAGONBREATH_WATER_01: particle->Open("new_dragonbreath_water\\new_dragonbreath_water_01_clock\\new_dragonbreath_water_01_clock.str"); break; case EF_NEW_DRAGONBREATH_WATER_05: particle->Open("new_dragonbreath_water\\new_dragonbreath_water_05_clock\\new_dragonbreath_water_05_clock.str"); break; case EF_NEW_DRAGONBREATH_WATER_07: particle->Open("new_dragonbreath_water\\new_dragonbreath_water_07_clock\\new_dragonbreath_water_07_clock.str"); break; case EF_NEW_DRAGONBREATH_WATER_11: particle->Open("new_dragonbreath_water\\new_dragonbreath_water_11_clock\\new_dragonbreath_water_11_clock.str"); break; case EF_NEW_COUNTER_SLASH: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_counter_slash\\new_counter_slash\\new_counter_slash.str"); } else { particle->Open("new_counter_slash\\new_counter_slash\\new_counter_slash.str"); } break; case EF_NEW_COUNTER_SLASH_BOTTOM: particle->Open("new_counter_slash\\new_counter_slash_bottom\\new_counter_slash_bottom.str"); break; case EF_NEW_FATAL_MENACE: particle->Open("new_fatal_menace\\new_fatal_menace\\new_fatal_menace.str"); break; case EF_NEW_FATAL_MENACE_BOTTOM: particle->Open("new_fatal_menace\\new_fatal_menace_bottom\\new_fatal_menace_bottom.str"); break; case EF_NEW_FATAL_MENACE_CAST: particle->Open("new_fatal_menace\\new_fatal_menace_cast\\new_fatal_menace_cast.str"); break; case EF_NEW_FATAL_MENACE_CAST_BOTTOM: particle->Open("new_fatal_menace\\new_fatal_menace_cast_bottom\\new_fatal_menace_cast_bottom.str"); break; case EF_NEW_CANNON_SPEAR_12: particle->Open("new_cannon_spear\\new_cannon_spear_12_clock\\new_cannon_spear_12_clock.str"); break; case EF_NEW_CANNON_SPEAR_01: particle->Open("new_cannon_spear\\new_cannon_spear_01_clock\\new_cannon_spear_01_clock.str"); break; case EF_NEW_CANNON_SPEAR_03: particle->Open("new_cannon_spear\\new_cannon_spear_03_clock\\new_cannon_spear_03_clock.str"); break; case EF_NEW_CANNON_SPEAR_05: particle->Open("new_cannon_spear\\new_cannon_spear_05_clock\\new_cannon_spear_05_clock.str"); break; case EF_NEW_CANNON_SPEAR_06: particle->Open("new_cannon_spear\\new_cannon_spear_06_clock\\new_cannon_spear_06_clock.str"); break; case EF_NEW_CANNON_SPEAR_07: particle->Open("new_cannon_spear\\new_cannon_spear_07_clock\\new_cannon_spear_07_clock.str"); break; case EF_NEW_CANNON_SPEAR_09: particle->Open("new_cannon_spear\\new_cannon_spear_09_clock\\new_cannon_spear_09_clock.str"); break; case EF_NEW_CANNON_SPEAR_11: particle->Open("new_cannon_spear\\new_cannon_spear_11_clock\\new_cannon_spear_11_clock.str"); break; case EF_NEW_CANNON_SPEAR_BOTTOM: particle->Open("new_cannon_spear\\new_cannon_spear_bottom\\new_cannon_spear_bottom.str"); break; case EF_NEW_BASICATTACK: particle->Open("new_hit\\new_basicattack\\new_basicattack.str"); break; case EF_NEW_CRITICALATTACK: particle->Open("new_hit\\new_criticalattack\\new_criticalattack.str"); break; case EF_NEW_RANGEDATTACK: particle->Open(this->name); break; case EF_NEW_COMET: particle->Open("new_comet\\new_comet\\new_comet.str"); break; case EF_NEW_COMET_BOTTOM: particle->Open("new_comet\\new_comet_bottom\\new_comet_bottom.str"); break; case EF_NEW_COMET_CAST_BOTTOM: particle->Open("new_comet\\new_comet_cast_bottom\\new_comet_cast_bottom.str"); break; case EF_NEW_COMET_SUB_EXP: particle->Open("new_comet\\new_comet_sub_explosion\\new_comet_sub_explosion.str"); break; case EF_NEW_COMET_SUB_EXP_BOTTOM: particle->Open("new_comet\\new_comet_sub_explosion_bottom\\new_comet_sub_explosion_bottom.str"); break; case EF_NEW_COMET_CAST: particle->Open("new_comet\\new_comet_cast\\new_comet_cast.str"); break; case EF_NEW_RAYOFGENESIS: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_rayofgenesis\\new_rayofgenesis\\new_rayofgenesis.str"); } else { particle->Open("new_rayofgenesis\\new_rayofgenesis\\new_rayofgenesis.str"); } break; case EF_NEW_RAYOFGENESIS_CAST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_rayofgenesis\\new_rayofgenesis_cast\\new_rayofgenesis_cast.str"); } else { particle->Open("new_rayofgenesis\\new_rayofgenesis_cast\\new_rayofgenesis_cast.str"); } break; case EF_NEW_RAYOFGENESIS_CAST_BOTTOM: particle->Open("new_rayofgenesis\\new_rayofgenesis_cast_bottom\\new_rayofgenesis_cast_bottom.str"); break; case EF_NEW_RAYOFGENESIS_HIT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_rayofgenesis\\new_rayofgenesis_hit\\new_rayofgenesis_hit.str"); } else { particle->Open("new_rayofgenesis\\new_rayofgenesis_hit\\new_rayofgenesis_hit.str"); } break; case EF_MINEFFECT_ADORAMUS: particle->Open("mineffect\\new_adoramus\\new_adoramus\\new_adoramus.str"); break; case EF_MINEFFECT_ADORAMUS_BOTTOM: particle->Open("mineffect\\new_adoramus\\new_adoramus_bottom\\new_adoramus_bottom.str"); break; case EF_MINEFFECT_TETRA_CAST: particle->Open("mineffect\\new_tetravortex\\new_tetravortex_cast\\new_tetravortex_cast.str"); break; case EF_MINEFFECT_TETRA_CORE: particle->Open("mineffect\\new_tetravortex\\new_tetravortex_ball_core\\new_tetravortex_ball_core.str"); break; case EF_MINEFFECT_TETRA_FIRE: particle->Open("mineffect\\new_tetravortex\\new_tetravortex_fire\\new_tetravortex_fire.str"); break; case EF_MINEFFECT_TETRA_WATER: particle->Open("mineffect\\new_tetravortex\\new_tetravortex_water\\new_tetravortex_water.str"); break; case EF_MINEFFECT_TETRA_WIND: particle->Open("mineffect\\new_tetravortex\\new_tetravortex_wind\\new_tetravortex_wind.str"); break; case EF_MINEFFECT_TETRA_EARTH: particle->Open("mineffect\\new_tetravortex\\new_tetravortex_earth\\new_tetravortex_earth.str"); break; case EF_MINEFFECT_TETRA_FIRE_BOTTOM: particle->Open("mineffect\\new_tetravortex\\new_tetravortex_fire_bottom\\new_tetravortex_fire_bottom.str"); break; case EF_MINEFFECT_TETRA_WATER_BOTTOM: particle->Open("mineffect\\new_tetravortex\\new_tetravortex_water_bottom\\new_tetravortex_water_bottom.str"); break; case EF_MINEFFECT_TETRA_WIND_BOTTOM: particle->Open("mineffect\\new_tetravortex\\new_tetravortex_wind_bottom\\new_tetravortex_wind_bottom.str"); break; case EF_MINEFFECT_TETRA_EARTH_BOTTOM: particle->Open("mineffect\\new_tetravortex\\new_tetravortex_earth_bottom\\new_tetravortex_earth_bottom.str"); break; case EF_MINEFFECT_TETRA_CORE_BOTTOM: particle->Open("mineffect\\new_tetravortex\\new_tetravortex_ball_core_bottom\\new_tetravortex_ball_core_bottom.str"); break; case EF_MINEFFECT_CRIMSONROCK: particle->Open("mineffect\\new_crimsonrock\\new_crimsonrock\\new_crimsonrock.str"); break; case EF_MINEFFECT_CRIMSONROCK_BOTTOM: particle->Open("mineffect\\new_crimsonrock\\new_crimsonrock_bottom\\new_crimsonrock_bottom.str"); break; case EF_NEW_JACKFROST_00: particle->Open("new_jackfrost\\new_jackfrost\\new_jackfrost_00.str"); break; case EF_NEW_JACKFROST_01: particle->Open("new_jackfrost\\new_jackfrost\\new_jackfrost_01.str"); break; case EF_NEW_JACKFROST_02: particle->Open("new_jackfrost\\new_jackfrost\\new_jackfrost_02.str"); break; case EF_NEW_JACKFROST_CAST: particle->Open("new_jackfrost\\new_jackfrost_cast\\new_jackfrost_cast.str"); break; case EF_NEW_JACKFROST_RUNE: particle->Open("new_jackfrost\\new_jackfrost_magicrune\\new_jackfrost_frost.str"); break; case EF_MINEFFECT_DIAMONDDUST: particle->Open("mineffect\\new_diamonddust\\new_diamonddust\\new_diamonddust.str"); break; case EF_MINEFFECT_DIAMONDDUST_BOTTOM: particle->Open("mineffect\\new_diamonddust\\new_diamonddust_bottom\\new_diamonddust_bottom.str"); break; case EF_MINEFFECT_DIAMONDDUST_CAST: particle->Open("mineffect\\new_diamonddust\\new_diamonddust_cast\\new_diamonddust_cast.str"); break; case EF_MINEFFECT_SECRAMENT: particle->Open("mineffect\\new_secrament\\new_secrament\\new_secrament.str"); break; case EF_MINEFFECT_PSYCHICWAVE: particle->Open("mineffect\\new_psychicwave\\new_psychicwave\\new_psychicwave.str"); break; case EF_MINEFFECT_PSYCHICWAVE_BOTTOM: particle->Open("mineffect\\new_psychicwave\\new_psychicwave_bottom\\new_psychicwave_bottom.str"); break; case EF_MINEFFECT_PSYCHICWAVE_CAST: particle->Open("mineffect\\new_psychicwave\\new_psychicwave_cast\\new_psychicwave_cast.str"); break; case EF_MINEFFECT_ARROWSTORM_00: particle->Open("mineffect\\new_arrowstorm\\new_arrowstorm_00\\new_arrowstorm_00.str"); break; case EF_MINEFFECT_ARROWSTORM_01: particle->Open("mineffect\\new_arrowstorm\\new_arrowstorm_01\\new_arrowstorm_01.str"); break; case EF_MINEFFECT_TRIANGLESHOT: particle->Open("mineffect\\new_triangleshot\\new_triangleshot\\new_triangleshot.str"); break; case EF_MINEFFECT_TRIANGLESHOT_BOTTOM: particle->Open("mineffect\\new_triangleshot\\new_triangleshot_bottom\\new_triangleshot_bottom.str"); break; case EF_MINEFFECT_RAMPAGEBLASTER: particle->Open("mineffect\\new_rampageblaster\\new_rampageblaster\\new_rampageblaster_exp.str"); break; case EF_MINEFFECT_RAMPAGEBLASTER_BOTTOM: particle->Open("mineffect\\new_rampageblaster\\new_rampageblaster_bottom\\new_rampageblaster_bottom.str"); break; case EF_MINEFFECT_FEINTBOMB: particle->Open("mineffect\\new_peintbomb\\new_peintbomb\\new_peintbomb.str"); break; case EF_MINEFFECT_FEINTBOMB_BOTTOM: particle->Open("mineffect\\new_peintbomb\\new_peintbomb_bottom\\new_peintbomb_bottom.str"); break; case EF_NEW_EARTHGRAVE_VISUAL: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_earthgrave\\new_earthgrave\\new_earthgrave.str"); } else { particle->Open("new_earthgrave\\new_earthgrave\\new_earthgrave.str"); } break; case EF_NEW_EARTHGRAVE_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_earthgrave\\new_earthgrave_bottom\\new_earthgrave_bottom.str"); } else { particle->Open("new_earthgrave\\new_earthgrave_bottom\\new_earthgrave_bottom.str"); } break; case EF_NEW_EARTHGRAVE_HIT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_earthgrave\\new_earthgrave_hit\\new_earthgrave_hit.str"); } else { particle->Open("new_earthgrave\\new_earthgrave_hit\\new_earthgrave_hit.str"); } break; case EF_MINEFFECT_ROLLINGCUTTER_CAST: particle->Open("mineffect\\new_rollingcutter\\new_rollingcutter\\new_rollingcutter_cast.str"); break; case EF_MINEFFECT_ROLLINGCUTTER_01: particle->Open("mineffect\\new_rollingcutter\\new_rollingcutter_count_01\\new_rollingcutter_count_01.str"); break; case EF_MINEFFECT_ROLLINGCUTTER_02: particle->Open("mineffect\\new_rollingcutter\\new_rollingcutter_count_02\\new_rollingcutter_count_02.str"); break; case EF_MINEFFECT_ROLLINGCUTTER_03: particle->Open("mineffect\\new_rollingcutter\\new_rollingcutter_count_03\\new_rollingcutter_count_03.str"); break; case EF_MINEFFECT_ROLLINGCUTTER_04: particle->Open("mineffect\\new_rollingcutter\\new_rollingcutter_count_04\\new_rollingcutter_count_04.str"); break; case EF_MINEFFECT_ROLLINGCUTTER_05: particle->Open("mineffect\\new_rollingcutter\\new_rollingcutter_count_05\\new_rollingcutter_count_05.str"); break; case EF_MINEFFECT_ROLLINGCUTTER_06: particle->Open("mineffect\\new_rollingcutter\\new_rollingcutter_count_06\\new_rollingcutter_count_06.str"); break; case EF_MINEFFECT_ROLLINGCUTTER_07: particle->Open("mineffect\\new_rollingcutter\\new_rollingcutter_count_07\\new_rollingcutter_count_07.str"); break; case EF_MINEFFECT_ROLLINGCUTTER_08: particle->Open("mineffect\\new_rollingcutter\\new_rollingcutter_count_08\\new_rollingcutter_count_08.str"); break; case EF_MINEFFECT_ROLLINGCUTTER_09: particle->Open("mineffect\\new_rollingcutter\\new_rollingcutter_count_09\\new_rollingcutter_count_09.str"); break; case EF_MINEFFECT_ROLLINGCUTTER_10: particle->Open("mineffect\\new_rollingcutter\\new_rollingcutter_count_10\\new_rollingcutter_count_10.str"); break; case EF_MINEFFECT_CROSSRIPPERSLASHER: particle->Open("mineffect\\new_crossripperslasher\\new_crossripperslasher\\new_crossripperslasher.str"); break; case EF_MINEFFECT_CROSSRIPPERSLASHER_12: particle->Open("mineffect\\new_crossripperslasher\\new_crossripperslasher_12\\new_crossripperslasher_12.str"); break; case EF_MINEFFECT_CROSSRIPPERSLASHER_01: particle->Open("mineffect\\new_crossripperslasher\\new_crossripperslasher_01\\new_crossripperslasher_01.str"); break; case EF_MINEFFECT_CROSSRIPPERSLASHER_03: particle->Open("mineffect\\new_crossripperslasher\\new_crossripperslasher_03\\new_crossripperslasher_03.str"); break; case EF_MINEFFECT_CROSSRIPPERSLASHER_05: particle->Open("mineffect\\new_crossripperslasher\\new_crossripperslasher_05\\new_crossripperslasher_05.str"); break; case EF_MINEFFECT_CROSSRIPPERSLASHER_06: particle->Open("mineffect\\new_crossripperslasher\\new_crossripperslasher_06\\new_crossripperslasher_06.str"); break; case EF_MINEFFECT_CROSSRIPPERSLASHER_07: particle->Open("mineffect\\new_crossripperslasher\\new_crossripperslasher_07\\new_crossripperslasher_07.str"); break; case EF_MINEFFECT_CROSSRIPPERSLASHER_09: particle->Open("mineffect\\new_crossripperslasher\\new_crossripperslasher_09\\new_crossripperslasher_09.str"); break; case EF_MINEFFECT_CROSSRIPPERSLASHER_11: particle->Open("mineffect\\new_crossripperslasher\\new_crossripperslasher_11\\new_crossripperslasher_11.str"); break; case EF_MINEFFECT_ARMSCANNON_01: particle->Open("mineffect\\new_armscannon\\new_armscannon_01\\new_armscannon_01.str"); break; case EF_MINEFFECT_ARMSCANNON_05: particle->Open("mineffect\\new_armscannon\\new_armscannon_05\\new_armscannon_05.str"); break; case EF_MINEFFECT_ARMSCANNON_07: particle->Open("mineffect\\new_armscannon\\new_armscannon_07\\new_armscannon_07.str"); break; case EF_MINEFFECT_ARMSCANNON_11: particle->Open("mineffect\\new_armscannon\\new_armscannon_11\\new_armscannon_11.str"); break; case EF_MINEFFECT_ARMSCANNON_EXPLOSION: particle->Open("mineffect\\new_armscannon\\new_armscannon_explosion\\armscannon_explosion.str"); break; case EF_MINEFFECT_ARMSCANNON_EXPLOSION_BOTTOM: particle->Open("mineffect\\new_armscannon\\new_armscannon_explosion_bottom\\armscannon_explosion_bottom.str"); break; case EF_MINEFFECT_ARMSCANNON_CAST: particle->Open("mineffect\\new_armscannon\\new_armscannon_cast\\new_armscannon_cast.str"); break; case EF_MINEFFECT_ARMSCANNON_CAST_BOTTOM: particle->Open("mineffect\\new_armscannon\\new_armscannon_cast_bottom\\new_armscannon_cast_bottom.str"); break; case EF_MINEFFECT_AXETORNADO: particle->Open("mineffect\\new_axetornado\\new_axetornado\\new_axetornado.str"); break; case EF_MINEFFECT_AXETORNADO_BOTTOM: particle->Open("mineffect\\new_axetornado\\new_axetornado_bottom\\new_axetornado_bottom.str"); break; case EF_MINEFFECT_CART_CANNON_EXPLOSION: particle->Open("mineffect\\new_cart_cannon\\new_cart_cannon_explosion\\armscannon_explosion.str"); break; case EF_MINEFFECT_CART_CANNON_EXPLOSION_BOTTOM: particle->Open("mineffect\\new_cart_cannon\\new_cart_cannon_explosion_bottom\\armscannon_explosion_bottom.str"); break; case EF_MINEFFECT_CART_CANNON_FIRE_BOTTOM: particle->Open("mineffect\\new_cart_cannon\\new_cart_cannon_fire_bottom\\new_cartcannon_cast_bottom.str"); break; case EF_MINEFFECT_CART_CANNON_CAST: particle->Open("mineffect\\new_cart_cannon\\new_cart_cannon_cast\\new_cart_cannon_cast.str"); break; case EF_MINEFFECT_CART_CANNON_CAST_BOTTOM: particle->Open("mineffect\\new_cart_cannon\\new_cart_cannon_cast_bottom\\new_cart_cannon_cast_bottom.str"); break; case EF_MINEFFECT_CART_TORNADO: particle->Open("mineffect\\new_cart_tornado\\new_cart_tornado\\new_carttornado.str"); break; case EF_MINEFFECT_CART_TORNADO_BOTTOM: particle->Open("mineffect\\new_cart_tornado\\new_cart_tornado_bottom\\new_carttornado_bottom.str"); break; case EF_MINEFFECT_BANISHINGPOINT_TARGET: particle->Open("mineffect\\new_banishingpoint\\new_banishingpoint_target\\new_banishingpoint_target.str"); break; case EF_MINEFFECT_BANISHINGPOINT_TARGET_BOTTOM: particle->Open("mineffect\\new_banishingpoint\\new_banishingpoint_target_bottom\\new_banishingpoint_target_bottom.str"); break; case EF_MINEFFECT_BANISHINGPOINT_CAST: particle->Open("mineffect\\new_banishingpoint\\new_banishingpoint_cast\\new_banishingpoint_cast.str"); break; case EF_MINEFFECT_BANISHINGPOINT_CAST_BOTTOM: particle->Open("mineffect\\new_banishingpoint\\new_banishingpoint_cast_bottom\\new_banishingpoint_cast_combine.str"); break; case EF_MINEFFECT_BANISHINGPOINT_01: particle->Open("mineffect\\new_banishingpoint\\new_banishingpoint_01\\new_banishingpoint_01.str"); break; case EF_MINEFFECT_BANISHINGPOINT_05: particle->Open("mineffect\\new_banishingpoint\\new_banishingpoint_05\\new_banishingpoint_05.str"); break; case EF_MINEFFECT_BANISHINGPOINT_07: particle->Open("mineffect\\new_banishingpoint\\new_banishingpoint_07\\new_banishingpoint_07.str"); break; case EF_MINEFFECT_BANISHINGPOINT_11: particle->Open("mineffect\\new_banishingpoint\\new_banishingpoint_11\\new_banishingpoint_11.str"); break; case EF_MINEFFECT_CANNON_SPEAR_12: particle->Open("mineffect\\new_cannonspear\\new_cannonspear_12\\new_cannonspear_12.str"); break; case EF_MINEFFECT_CANNON_SPEAR_01: particle->Open("mineffect\\new_cannonspear\\new_cannonspear_01\\new_cannonspear_01.str"); break; case EF_MINEFFECT_CANNON_SPEAR_03: particle->Open("mineffect\\new_cannonspear\\new_cannonspear_03\\new_cannonspear_03.str"); break; case EF_MINEFFECT_CANNON_SPEAR_05: particle->Open("mineffect\\new_cannonspear\\new_cannonspear_05\\new_cannonspear_05.str"); break; case EF_MINEFFECT_CANNON_SPEAR_06: particle->Open("mineffect\\new_cannonspear\\new_cannonspear_06\\new_cannonspear_06.str"); break; case EF_MINEFFECT_CANNON_SPEAR_07: particle->Open("mineffect\\new_cannonspear\\new_cannonspear_07\\new_cannonspear_07.str"); break; case EF_MINEFFECT_CANNON_SPEAR_09: particle->Open("mineffect\\new_cannonspear\\new_cannonspear_09\\new_cannonspear_09.str"); break; case EF_MINEFFECT_CANNON_SPEAR_11: particle->Open("mineffect\\new_cannonspear\\new_cannonspear_11\\new_cannonspear_11.str"); break; case EF_MINEFFECT_CANNON_SPEAR_BOTTOM: particle->Open("mineffect\\new_cannonspear\\new_cannonspear_bottom\\new_cannonspear_bottom.str"); break; case EF_MINEFFECT_DRAGONBREATH_BOMB: particle->Open("mineffect\\new_dragonbreath\\new_dragonbreath_fire_bomb\\new_dragonbreath_fire_bomb.str"); break; case EF_MINEFFECT_DRAGONBREATH_01: particle->Open("mineffect\\new_dragonbreath\\new_dragonbreath_fire_01\\new_dragonbreath_fire_01.str"); break; case EF_MINEFFECT_DRAGONBREATH_05: particle->Open("mineffect\\new_dragonbreath\\new_dragonbreath_fire_05\\new_dragonbreath_fire_05.str"); break; case EF_MINEFFECT_DRAGONBREATH_07: particle->Open("mineffect\\new_dragonbreath\\new_dragonbreath_fire_07\\new_dragonbreath_fire_07.str"); break; case EF_MINEFFECT_DRAGONBREATH_11: particle->Open("mineffect\\new_dragonbreath\\new_dragonbreath_fire_11\\new_dragonbreath_fire_11.str"); break; case EF_MINEFFECT_DRAGONBREATH_WATER_BOMB: particle->Open("mineffect\\new_dragonbreath_water\\new_dragonbreath_water_bomb\\new_dragonbreath_water_bomb.str"); break; case EF_MINEFFECT_DRAGONBREATH_WATER_01: particle->Open("mineffect\\new_dragonbreath_water\\new_dragonbreath_water_01\\new_dragonbreath_water_01.str"); break; case EF_MINEFFECT_DRAGONBREATH_WATER_05: particle->Open("mineffect\\new_dragonbreath_water\\new_dragonbreath_water_05\\new_dragonbreath_water_05.str"); break; case EF_MINEFFECT_DRAGONBREATH_WATER_07: particle->Open("mineffect\\new_dragonbreath_water\\new_dragonbreath_water_07\\new_dragonbreath_water_07.str"); break; case EF_MINEFFECT_DRAGONBREATH_WATER_11: particle->Open("mineffect\\new_dragonbreath_water\\new_dragonbreath_water_11\\new_dragonbreath_water_11.str"); break; case EF_MINEFFECT_TIGERCANNON: particle->Open("mineffect\\new_tigercannon\\new_tigercannon.str"); break; case EF_MINEFFECT_SEVERERAINSTORM_CAST: particle->Open("mineffect\\new_severerainstorm\\new_severerainstorm_cast\\new_severerainstorm_cast.str"); break; case EF_MINEFFECT_COMET: particle->Open("mineffect\\new_comet\\new_comet\\new_comet.str"); break; case EF_MINEFFECT_COMET_BOTTOM: particle->Open("mineffect\\new_comet\\new_comet_bottom\\new_comet_bottom.str"); break; case EF_MINEFFECT_COMET_CAST_BOTTOM: particle->Open("mineffect\\new_comet\\new_comet_cast_bottom\\new_comet_cast_bottom.str"); break; case EF_MINEFFECT_COMET_SUB_EXP: particle->Open("mineffect\\new_comet\\new_comet_sub_explosion\\new_comet_sub_explosion.str"); break; case EF_MINEFFECT_COMET_SUB_EXP_BOTTOM: particle->Open("mineffect\\new_comet\\new_comet_sub_explosion_bottom\\new_comet_sub_explosion_bottom.str"); break; case EF_MINEFFECT_COMET_CAST: particle->Open("mineffect\\new_comet\\new_comet_cast\\new_comet_cast.str"); break; case EF_MINEFFECT_JACKFROST_00: particle->Open("mineffect\\new_jackfrost\\new_jackfrost_ice\\new_jackfrost_00.str"); break; case EF_MINEFFECT_JACKFROST_01: particle->Open("mineffect\\new_jackfrost\\new_jackfrost_ice\\new_jackfrost_01.str"); break; case EF_MINEFFECT_JACKFROST_02: particle->Open("mineffect\\new_jackfrost\\new_jackfrost_ice\\new_jackfrost_02.str"); break; case EF_MINEFFECT_JACKFROST_CAST: particle->Open("mineffect\\new_jackfrost\\new_jackfrost_cast\\new_jackfrost_cast.str"); break; case EF_MINEFFECT_JACKFROST_RUNE: particle->Open("mineffect\\new_jackfrost\\new_jackfrost_magicrune\\new_jackfrost_frost.str"); break; case EF_NEW_POISONSMOKE_1: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_poisonsmoke\\new_poisonsmoke\\new_poisonsmoke_1.str"); } else { particle->Open("new_poisonsmoke\\new_poisonsmoke\\new_poisonsmoke_1.str"); } break; case EF_NEW_POISONSMOKE_2: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_poisonsmoke\\new_poisonsmoke\\new_poisonsmoke_2.str"); } else { particle->Open("new_poisonsmoke\\new_poisonsmoke\\new_poisonsmoke_2.str"); } break; case EF_NEW_POISONSMOKE_CAST: particle->Open("new_poisonsmoke\\new_poisonsmoke_cast\\new_poisonsmoke_cast.str"); break; case EF_NEW_FEARBREEZE: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_fearbreeze\\new_fearbreeze.str"); } else { particle->Open("new_fearbreeze\\new_fearbreeze.str"); } break; case EF_NEW_HELLINFERNO: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_hellInferno\\new_hellInferno\\new_hellInferno.str"); } else { particle->Open("new_hellInferno\\new_hellInferno\\new_hellInferno.str"); } break; case EF_NEW_HELLINFERNO_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_hellInferno\\new_hellInferno_bottom\\new_hellInferno_bottom.str"); } else { particle->Open("new_hellInferno\\new_hellInferno_bottom\\new_hellInferno_bottom.str"); } break; case EF_NEW_HELLINFERNO_CAST_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_hellInferno\\new_hellInferno_cast_bottom\\new_hellInferno_cast_bottom.str"); } else { particle->Open("new_hellInferno\\new_hellInferno_cast_bottom\\new_hellInferno_cast_bottom.str"); } break; case EF_NEW_HELLINFERNO_SUB: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_hellInferno\\new_hellInferno_sub\\new_hellInferno_sub.str"); } else { particle->Open("new_hellInferno\\new_hellInferno_sub\\new_hellInferno_sub.str"); } break; case EF_NEW_HELLINFERNO_SUB_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_hellInferno\\new_hellInferno_sub_bottom\\new_hellInferno_sub_bottom.str"); } else { particle->Open("new_hellInferno\\new_hellInferno_sub_bottom\\new_hellInferno_sub_bottom.str"); } break; case EF_NEW_CLEARANCE: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_clearence\\new_clearence\\new_clearence.str"); } else { particle->Open("new_clearence\\new_clearence\\new_clearence.str"); } break; case EF_NEW_CLEARANCE_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_clearence\\new_clearence_bottom\\new_clearence_bottom.str"); } else { particle->Open("new_clearence\\new_clearence_bottom\\new_clearence_bottom.str"); } break; case EF_NEW_CLEARANCE_CAST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_clearence\\new_clearence_cast\\new_clearence_cast.str"); } else { particle->Open("new_clearence\\new_clearence_cast\\new_clearence_cast.str"); } break; case EF_NEW_VARETYRSPEAR: particle->Open("new_varetyrspear\\new_varetyrspear\\new_varetyrspear.str"); break; case EF_NEW_VARETYRSPEAR_BOTTOM: particle->Open("new_varetyrspear\\new_varetyrspear_bottom\\new_varetyrspear_bottom.str"); break; case EF_NEW_VARETYRSPEAR_CAST: particle->Open("new_varetyrspear\\new_varetyrspear_cast\\new_varetyrspear_cast.str"); break; case EF_NEW_VARETYRSPEAR_CAST_BOTTOM: particle->Open("new_varetyrspear\\new_varetyrspear_cast_bottom\\new_varetyrspear_cast_bottom.str"); break; case EF_NEW_CROSSIMPACT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_crossimpact\\new_crossimpact\\new_crossimpact.str"); } else { particle->Open("new_crossimpact\\new_crossimpact\\new_crossimpact.str"); } break; case EF_NEW_CROSSIMPACT_TARGET: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_crossimpact\\new_crossimpact_target\\new_crossimpact_target.str"); } else { particle->Open("new_crossimpact\\new_crossimpact_target\\new_crossimpact_target.str"); } break; case EF_NEW_REVERBERATION_HIT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_reverberation\\new_reverberation_hit\\new_reverberation_hit.str"); } else { particle->Open("new_reverberation\\new_reverberation_hit\\new_reverberation_hit.str"); } break; case EF_NEW_FALLENEMPIRE: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_fallenempire\\new_fallenempire\\new_fallenempire.str"); } else { particle->Open("new_fallenempire\\new_fallenempire\\new_fallenempire.str"); } break; case EF_NEW_FALLENEMPIRE_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_fallenempire\\new_fallenempire_bottom\\new_fallenempire_bottom.str"); } else { particle->Open("new_fallenempire\\new_fallenempire_bottom\\new_fallenempire_bottom.str"); } break; case EF_NEW_FALLENEMPIRE_HIT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_fallenempire\\new_fallenempire_hit\\new_fallenempire_hit.str"); } else { particle->Open("new_fallenempire\\new_fallenempire_hit\\new_fallenempire_hit.str"); } break; case EF_NEW_GATEOFHELL_CAST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_gateofhell\\new_gateofhell_cast\\new_gateofhell_cast.str"); } else { particle->Open("new_gateofhell\\new_gateofhell_cast\\new_gateofhell_cast.str"); } break; case EF_NEW_GATEOFHELL_TARGET: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_gateofhell\\new_gateofhell_target\\new_gateofhell_target.str"); } else { particle->Open("new_gateofhell\\new_gateofhell_target\\new_gateofhell_target.str"); } break; case EF_NEW_HOWLINGOFLION: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_howlingoflion\\new_howlingoflion\\new_howlingoflion.str"); } else { particle->Open("new_howlingoflion\\new_howlingoflion\\new_howlingoflion.str"); } break; case EF_NEW_HOWLINGOFLION_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_howlingoflion\\new_howlingoflion_bottom\\new_howlingoflion_bottom.str"); } else { particle->Open("new_howlingoflion\\new_howlingoflion_bottom\\new_howlingoflion_bottom.str"); } break; case EF_NEW_HOWLINGOFLION_CAST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_howlingoflion\\new_howlingoflion_cast\\new_howlingoflion_cast.str"); } else { particle->Open("new_howlingoflion\\new_howlingoflion_cast\\new_howlingoflion_cast.str"); } break; case EF_NEW_HOWLINGOFLION_CAST_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_howlingoflion\\new_howlingoflion_cast_bottom\\new_howlingoflion_cast_bottom.str"); } else { particle->Open("new_howlingoflion\\new_howlingoflion_cast_bottom\\new_howlingoflion_cast_bottom.str"); } break; case EF_NEW_HOWLINGOFLION_HIT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_howlingoflion\\new_howlingoflion_hit\\new_howlingoflion_hit.str"); } else { particle->Open("new_howlingoflion\\new_howlingoflion_hit\\new_howlingoflion_hit.str"); } break; case EF_NEW_METALLICSOUND: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_metalicsound\\new_metalicsound\\new_metalicsound.str"); } else { particle->Open("new_metalicsound\\new_metalicsound\\new_metalicsound.str"); } break; case EF_NEW_METALLICSOUND_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_metalicsound\\new_metalicsound_bottom\\new_metalicsound_bottom.str"); } else { particle->Open("new_metalicsound\\new_metalicsound_bottom\\new_metalicsound_bottom.str"); } break; case EF_NEW_METALLICSOUND_HIT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_metalicsound\\new_metalicsound_hit\\new_metalicsound_hit.str"); } else { particle->Open("new_metalicsound\\new_metalicsound_hit\\new_metalicsound_hit.str"); } break; case EF_NEW_REPRODUCE: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_reproduce\\new_reproduce\\new_reproduce.str"); } else { particle->Open("new_reproduce\\new_reproduce\\new_reproduce.str"); } break; case EF_NEW_REPRODUCE_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_reproduce\\new_reproduce_bottom\\new_reproduce_bottom.str"); } else { particle->Open("new_reproduce\\new_reproduce_bottom\\new_reproduce_bottom.str"); } break; case EF_NEW_SOULEXPANSION_CAST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_soulexpansion\\new_soulexpansion_cast\\new_soulexpansion_cast.str"); } else { particle->Open("new_soulexpansion\\new_soulexpansion_cast\\new_soulexpansion_cast.str"); } break; case EF_NEW_SOULEXPANSION_CAST_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_soulexpansion\\new_soulexpansion_cast_bottom\\new_soulexpansion_cast_bottom.str"); } else { particle->Open("new_soulexpansion\\new_soulexpansion_cast_bottom\\new_soulexpansion_cast_bottom.str"); } break; case EF_NEW_SOULEXPANSION_LOOP: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_soulexpansion\\new_soulexpansion_loop\\new_soulexpansion_loop.str"); } else { particle->Open("new_soulexpansion\\new_soulexpansion_loop\\new_soulexpansion_loop.str"); } break; case EF_NEW_SOULEXPANSION_LOOP_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_soulexpansion\\new_soulexpansion_loop_bottom\\new_soulexpansion_loop_bottom.str"); } else { particle->Open("new_soulexpansion\\new_soulexpansion_loop_bottom\\new_soulexpansion_loop_bottom.str"); } break; case EF_NEW_SOULEXPANSION_HIT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_soulexpansion\\new_soulexpansion_hit\\new_soulexpansion_hit.str"); } else { particle->Open("new_soulexpansion\\new_soulexpansion_hit\\new_soulexpansion_hit.str"); } break; case EF_NEW_SOULEXPANSION_HIT_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_soulexpansion\\new_soulexpansion_hit_bottom\\new_soulexpansion_hit_bottom.str"); } else { particle->Open("new_soulexpansion\\new_soulexpansion_hit_bottom\\new_soulexpansion_hit_bottom.str"); } break; case EF_NEW_AROMAOIL: particle->Open("new_aromaoil\\new_aromaoil\\new_aromaoil_combine.str"); break; case EF_NEW_AROMAOIL_BOTTOM: particle->Open("new_aromaoil\\new_aromaoil_bottom\\new_aromaoil_bottom.str"); break; case EF_NEW_BATHFOAM: particle->Open("new_bathfoam\\new_bathfoam\\new_bathfoam.str"); break; case EF_NEW_BATHFOAM_BOTTOM: particle->Open("new_bathfoam\\new_bathfoam_bottom\\new_bathfoam_bottom.str"); break; case EF_TETRA_VORTEX_CORE_REUSE: particle->Open("tetravortex\\tetra_ball_00_core\\tetra_ball_00_core.str"); break; case EF_GRADE_ENCHANT_INTRO: particle->Open("grade_enchant\\new_intro\\new_intro.str"); break; case EF_GRADE_ENCHANT_SUCCESS: particle->Open("grade_enchant\\new_success\\new_success.str"); break; case EF_GRADE_ENCHANT_FAILED: particle->Open("grade_enchant\\new_failed\\new_failed.str"); break; case EF_BLUE_WAVE_1: particle->Open("blue_wave\\ef_mon_electric.str"); break; case EF_BLUE_WAVE_2: particle->Open("blue_wave\\ef_mon_electric2.str"); break; case EF_BLUE_WAVE_3: particle->Open("blue_wave\\ef_mon_electric3.str"); break; case EF_RED_WAVE_1: particle->Open("red_wave\\ef_mon_explodngwave.str"); break; case EF_RED_WAVE_2: particle->Open("red_wave\\ef_mon_explodngwave2.str"); break; case EF_RED_WAVE_3: particle->Open("red_wave\\ef_mon_explodngwave3.str"); break; case EF_NEW_WALLOFTHORN_CAST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_wallofthorn\\new_wallofthorn_cast\\new_wallofthorn_cast.str"); } else { particle->Open("new_wallofthorn\\new_wallofthorn_cast\\new_wallofthorn_cast.str"); } break; case EF_NEW_WALLOFTHORN_CAST_BOTTOM: particle->Open("new_wallofthorn\\new_wallofthorn_cast_bottom\\new_wallofthorn_cast_bottom.str"); break; case EF_NEW_IGNITIONBREAK: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_ignitionbreak\\new_ignitionbreak\\new_ignitionbreak.str"); } else { particle->Open("new_ignitionbreak\\new_ignitionbreak\\new_ignitionbreak.str"); } break; case EF_NEW_IGNITIONBREAK_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_ignitionbreak\\new_ignitionbreak_bottom\\new_ignitionbreak_bottom.str"); } else { particle->Open("new_ignitionbreak\\new_ignitionbreak_bottom\\new_ignitionbreak_bottom.str"); } break; case EF_NEW_IGNITIONBREAK_CAST: particle->Open("new_ignitionbreak\\new_ignitionbreak_cast\\new_ignitionbreak_cast.str"); break; case EF_NEW_JUDEX_CAST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_judex\\new_judex_cast\\new_judex_cast.str"); } else { particle->Open("new_judex\\new_judex_cast\\new_judex_cast.str"); } break; case EF_NEW_JUDEX_CAST_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_judex\\new_judex_cast_bottom\\new_judex_cast_bottom.str"); } else { particle->Open("new_judex\\new_judex_cast_bottom\\new_judex_cast_bottom.str"); } break; case EF_NEW_JUDEX_CAST_LOOP: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_judex\\new_judex_cast_loop\\new_judex_cast_loop.str"); } else { particle->Open("new_judex\\new_judex_cast_loop\\new_judex_cast_loop.str"); } break; case EF_NEW_JUDEX_CAST_LOOP_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_judex\\new_judex_cast_loop_bottom\\new_judex_cast_loop_bottom.str"); } else { particle->Open("new_judex\\new_judex_cast_loop_bottom\\new_judex_cast_loop_bottom.str"); } break; case EF_NEW_JUDEX_TARGET: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_judex\\new_judex_target\\new_judex_target.str"); } else { particle->Open("new_judex\\new_judex_target\\new_judex_target.str"); } break; case EF_NEW_JUDEX_TARGET_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_judex\\new_judex_target_bottom\\new_judex_target_bottom.str"); } else { particle->Open("new_judex\\new_judex_target_bottom\\new_judex_target_bottom.str"); } break; case EF_NEW_JUDEX_LIGHT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_judex\\new_judex_light\\new_judex_light.str"); } else { particle->Open("new_judex\\new_judex_light\\new_judex_light.str"); } break; case EF_NEW_JUDEX_LIGHT_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_judex\\new_judex_light_bottom\\new_judex_light_bottom.str"); } else { particle->Open("new_judex\\new_judex_light_bottom\\new_judex_light_bottom.str"); } break; case EF_NEW_CHAINLIGHTNING_CAST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_chainlightning\\new_chainlightning_cast\\new_chainlightning_cast.str"); } else { particle->Open("new_chainlightning\\new_chainlightning_cast\\new_chainlightning_cast.str"); } break; case EF_NEW_CHAINLIGHTNING_CAST_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_chainlightning\\new_chainlightning_cast_bottom\\new_chainlightning_cast_bottom.str"); } else { particle->Open("new_chainlightning\\new_chainlightning_cast_bottom\\new_chainlightning_cast_bottom.str"); } break; case EF_NEW_CHAINLIGHTNING_LOCKON: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_chainlightning\\new_chainlightning_lockon\\new_chainlightning_lockon.str"); } else { particle->Open("new_chainlightning\\new_chainlightning_lockon\\new_chainlightning_lockon.str"); } break; case EF_NEW_CHAINLIGHTNING_TARGET: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_chainlightning\\new_chainlightning_target\\new_chainlightning_target.str"); } else { particle->Open("new_chainlightning\\new_chainlightning_target\\new_chainlightning_target.str"); } break; case EF_NEW_MANDRAGORA: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_mandragora\\new_mandragora\\new_mandragora.str"); } else { particle->Open("new_mandragora\\new_mandragora\\new_mandragora.str"); } break; case EF_NEW_MANDRAGORA_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_mandragora\\new_mandragora_bottom\\new_mandragora_bottom.str"); } else { particle->Open("new_mandragora\\new_mandragora_bottom\\new_mandragora_bottom.str"); } break; case EF_NEW_MANDRAGORA_CAST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_mandragora\\new_mandragora_cast\\new_mandragora_cast.str"); } else { particle->Open("new_mandragora\\new_mandragora_cast\\new_mandragora_cast.str"); } break; case EF_NEW_SOUNDOFDESTRUCTION_CAST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_soundofdestruction\\new_soundofdestruction_cast\\new_soundofdestruction_cast.str"); } else { particle->Open("new_soundofdestruction\\new_soundofdestruction_cast\\new_soundofdestruction_cast.str"); } break; case EF_NEW_SOUNDOFDESTRUCTION_CAST_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_soundofdestruction\\new_soundofdestruction_cast_bottom\\new_soundofdestruction_cast_bottom.str"); } else { particle->Open("new_soundofdestruction\\new_soundofdestruction_cast_bottom\\new_soundofdestruction_cast_bottom.str"); } break; case EF_NEW_SOUNDOFDESTRUCTION_TARGET: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_soundofdestruction\\new_soundofdestruction_target\\new_soundofdestruction_target.str"); } else { particle->Open("new_soundofdestruction\\new_soundofdestruction_target\\new_soundofdestruction_target.str"); } break; case EF_NEW_AIMEDBOLT_01: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_aimedbolt\\new_aimedbolt_attack_01clock\\new_aimedbolt_attack_01clock.str"); } else { particle->Open("new_aimedbolt\\new_aimedbolt_attack_01clock\\new_aimedbolt_attack_01clock.str"); } break; case EF_NEW_AIMEDBOLT_05: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_aimedbolt\\new_aimedbolt_attack_05clock\\new_aimedbolt_attack_05clock.str"); } else { particle->Open("new_aimedbolt\\new_aimedbolt_attack_05clock\\new_aimedbolt_attack_05clock.str"); } break; case EF_NEW_AIMEDBOLT_07: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_aimedbolt\\new_aimedbolt_attack_07clock\\new_aimedbolt_attack_07clock.str"); } else { particle->Open("new_aimedbolt\\new_aimedbolt_attack_07clock\\new_aimedbolt_attack_07clock.str"); } break; case EF_NEW_AIMEDBOLT_11: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_aimedbolt\\new_aimedbolt_attack_11clock\\new_aimedbolt_attack_11clock.str"); } else { particle->Open("new_aimedbolt\\new_aimedbolt_attack_11clock\\new_aimedbolt_attack_11clock.str"); } break; case EF_NEW_AIMEDBOLT_CAST_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_aimedbolt\\new_aimedbolt_cast_bottom\\new_aimedbolt_cast_bottom.str"); } else { particle->Open("new_aimedbolt\\new_aimedbolt_cast_bottom\\new_aimedbolt_cast_bottom.str"); } break; case EF_NEW_AIMEDBOLT_END: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_aimedbolt\\new_aimedbolt_target_end\\new_aimedbolt_end.str"); } else { particle->Open("new_aimedbolt\\new_aimedbolt_target_end\\new_aimedbolt_end.str"); } break; case EF_NEW_AIMEDBOLT_TARGET_LOOP: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_aimedbolt\\new_aimedbolt_target_loop\\new_aimedbolt_target_loop.str"); } else { particle->Open("new_aimedbolt\\new_aimedbolt_target_loop\\new_aimedbolt_target_loop.str"); } break; case EF_NEW_UNLIMIT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_unlimit\\new_unlimit\\new_unlimit.str"); } else { particle->Open("new_unlimit\\new_unlimit\\new_unlimit.str"); } break; case EF_NEW_UNLIMIT_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_unlimit\\new_unlimit_bottom\\new_unlimit_bottom.str"); } else { particle->Open("new_unlimit\\new_unlimit_bottom\\new_unlimit_bottom.str"); } break; case EF_NEW_EPICLESIS: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_epiclesis\\new_epiclesis_combine.str"); } else { particle->Open("new_epiclesis\\new_epiclesis_combine\\new_epiclesis_combine.str"); } break; case EF_NEW_AXEBOOMERANG_CAST: particle->Open("new_axeboomerang\\new_axeboomerang_cast\\new_axeboomerang_cast.str"); break; case EF_NEW_AXEBOOMERANG_CAST_BOTTOM: particle->Open("new_axeboomerang\\new_axeboomerang_cast_bottom\\new_axeboomerang_cast_bottom.str"); break; case EF_NEW_AXEBOOMERANG_HIT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_axeboomerang\\new_axeboomerang_hit\\new_axeboomerang_hit.str"); } else { particle->Open("new_axeboomerang\\new_axeboomerang_hit\\new_axeboomerang_hit.str"); } break; case EF_HACKANDSLASH: particle->Load("hackandslash\\hackandslash\\hackandslash.str"); break; case EF_HACKANDSLASH_BOTTOM: particle->Load("hackandslash\\hackandslash_bottom\\hackandslash_bottom.str"); break; case EF_HACKANDSLASH_HIT: particle->Load("hackandslash\\hackandslash_hit\\hackandslash_hit.str"); break; case EF_NEW_SPELLFIST_FIRE: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_spellfist\\new_spellfist_fire\\new_spellfist_fire.str"); } else { particle->Open("new_spellfist\\new_spellfist_fire\\new_spellfist_fire.str"); } break; case EF_NEW_SPELLFIST_FIRE_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_spellfist\\new_spellfist_fire_bottom\\new_spellfist_fire_bottom.str"); } else { particle->Open("new_spellfist\\new_spellfist_fire_bottom\\new_spellfist_fire_bottom.str"); } break; case EF_NEW_SPELLFIST_WATER: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_spellfist\\new_spellfist_water\\new_spellfist_water.str"); } else { particle->Open("new_spellfist\\new_spellfist_water\\new_spellfist_water.str"); } break; case EF_NEW_SPELLFIST_WATER_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_spellfist\\new_spellfist_water_bottom\\new_spellfist_water_bottom.str"); } else { particle->Open("new_spellfist\\new_spellfist_water_bottom\\new_spellfist_water_bottom.str"); } break; case EF_NEW_SPELLFIST_WIND: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_spellfist\\new_spellfist_wind\\new_spellfist_wind.str"); } else { particle->Open("new_spellfist\\new_spellfist_wind\\new_spellfist_wind.str"); } break; case EF_STORMSLASH_1: particle->Load("stormslash\\stormslash\\stormslash_1.str"); break; case EF_STORMSLASH_2: particle->Load("stormslash\\stormslash\\stormslash_2.str"); break; case EF_STORMSLASH_3: particle->Load("stormslash\\stormslash\\stormslash_3.str"); break; case EF_STORMSLASH_4: particle->Load("stormslash\\stormslash\\stormslash_4.str"); break; case EF_STORMSLASH_5: particle->Load("stormslash\\stormslash\\stormslash_5.str"); break; case EF_NEW_CARTBOOST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_cartboost\\new_cartboost\\new_cartboost.str"); } else { particle->Open("new_cartboost\\new_cartboost\\new_cartboost.str"); } break; case EF_NEW_CARTBOOST_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_cartboost\\new_cartboost_bottom\\new_cartboost_bottom.str"); } else { particle->Open("new_cartboost\\new_cartboost_bottom\\new_cartboost_bottom.str"); } break; case EF_NEW_OVERBRAND_01: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_overbrand\\new_overbrand_01_clock\\new_overbrand_01_clock.str"); } else { particle->Open("new_overbrand\\new_overbrand_01_clock\\new_overbrand_01_clock.str"); } break; case EF_NEW_OVERBRAND_03: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_overbrand\\new_overbrand_03_clock\\new_overbrand_03_clock.str"); } else { particle->Open("new_overbrand\\new_overbrand_03_clock\\new_overbrand_03_clock.str"); } break; case EF_NEW_OVERBRAND_05: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_overbrand\\new_overbrand_05_clock\\new_overbrand_05_clock.str"); } else { particle->Open("new_overbrand\\new_overbrand_05_clock\\new_overbrand_05_clock.str"); } break; case EF_NEW_OVERBRAND_06: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_overbrand\\new_overbrand_06_clock\\new_overbrand_06_clock.str"); } else { particle->Open("new_overbrand\\new_overbrand_06_clock\\new_overbrand_06_clock.str"); } break; case EF_NEW_OVERBRAND_07: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_overbrand\\new_overbrand_07_clock\\new_overbrand_07_clock.str"); } else { particle->Open("new_overbrand\\new_overbrand_07_clock\\new_overbrand_07_clock.str"); } break; case EF_NEW_OVERBRAND_09: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_overbrand\\new_overbrand_09_clock\\new_overbrand_09_clock.str"); } else { particle->Open("new_overbrand\\new_overbrand_09_clock\\new_overbrand_09_clock.str"); } break; case EF_NEW_OVERBRAND_11: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_overbrand\\new_overbrand_11_clock\\new_overbrand_11_clock.str"); } else { particle->Open("new_overbrand\\new_overbrand_11_clock\\new_overbrand_11_clock.str"); } break; case EF_NEW_OVERBRAND_12: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_overbrand\\new_overbrand_12_clock\\new_overbrand_12_clock.str"); } else { particle->Open("new_overbrand\\new_overbrand_12_clock\\new_overbrand_12_clock.str"); } break; case EF_NEW_OVERBRAND_CAST: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_overbrand\\new_overbrand_cast\\new_overbrand_cast.str"); } else { particle->Open("new_overbrand\\new_overbrand_cast\\new_overbrand_cast.str"); } break; case EF_NEW_OVERBRAND_CAST_BOTTOM: particle->Open("new_overbrand\\new_overbrand_cast_bottom\\new_overbrand_cast_bottom.str"); break; case EF_NEW_OVERBRAND_HIT: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_overbrand\\new_overbrand_hit\\new_overbrand_hit.str"); } else { particle->Open("new_overbrand\\new_overbrand_hit\\new_overbrand_hit.str"); } break; case EF_NEW_WINDCUTTER: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_windcutter\\new_windcutter\\new_windcutter.str"); } else { particle->Open("new_windcutter\\new_windcutter\\new_windcutter.str"); } break; case EF_NEW_WINDCUTTER_BOTTOM_01: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_windcutter\\new_windcutter_bottom_01clock\\new_windcutter_bottom_01clock.str"); } else { particle->Open("new_windcutter\\new_windcutter_bottom_01clock\\new_windcutter_bottom_01clock.str"); } break; case EF_NEW_WINDCUTTER_BOTTOM_05: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_windcutter\\new_windcutter_bottom_05clock\\new_windcutter_bottom_05clock.str"); } else { particle->Open("new_windcutter\\new_windcutter_bottom_05clock\\new_windcutter_bottom_05clock.str"); } break; case EF_NEW_WINDCUTTER_TARGET: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_windcutter\\new_windcutter_target\\new_windcutter_target.str"); } else { particle->Open("new_windcutter\\new_windcutter_target\\new_windcutter_target.str"); } break; case EF_NEW_SERVANTWEAPON_HIT: particle->Load("new_servantweapon\\new_servantweapon_hit\\new_servantweapon_hit.str"); break; case EF_NEW_SERVANTWEAPON_HIT_BOTTOM: particle->Load("new_servantweapon\\new_servantweapon_hit_bottom\\new_servantweapon_hit_bottom.str"); break; case EF_NEW_SERVANTWEAPON_SHOOT_BOTTOM: particle->Load("new_servantweapon\\new_servantweapon_shoot_bottom\\new_servantweapon_shoot_bottom.str"); break; case EF_NEW_POWERSWING_01: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_powerswing\\new_powerswing_01_clock\\new_powerswing_01_clock.str"); } else { particle->Open("new_powerswing\\new_powerwing_01_clock\\new_powerwing_01_clock.str"); } break; case EF_NEW_POWERSWING_05: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_powerswing\\new_powerswing_05_clock\\new_powerswing_05_clock.str"); } else { particle->Open("new_powerswing\\new_powerwing_05_clock\\new_powerwing_05_clock.str"); } break; case EF_NEW_POWERSWING_07: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_powerswing\\new_powerswing_07_clock\\new_powerswing_07_clock.str"); } else { particle->Open("new_powerswing\\new_powerwing_07_clock\\new_powerwing_07_clock.str"); } break; case EF_NEW_POWERSWING_11: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_powerswing\\new_powerswing_11_clock\\new_powerswing_11_clock.str"); } else { particle->Open("new_powerswing\\new_powerwing_11_clock\\new_powerwing_11_clock.str"); } break; case EF_NEW_POWERSWING_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_powerswing\\new_powerswing_bottom\\new_powerswing_bottom.str"); } else { particle->Open("new_powerswing\\new_powerswing_bottom\\new_powerswing_bottom.str"); } break; case EF_NEW_VULCANARM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_vulcanarm\\new_vulcanarm\\new_vulcanarm.str"); } else { particle->Open("new_vulcanarm\\new_vulcanarm\\new_vulcanarm.str"); } break; case EF_NEW_VULCANARM_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_vulcanarm\\new_vulcanarm_bottom\\new_vulcanarm_bottom.str"); } else { particle->Open("new_vulcanarm\\new_vulcanarm_bottom\\new_vulcanarm_bottom.str"); } break; case EF_NEW_VULCANARM_SHOTHOLE: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_vulcanarm\\new_vulcanarm_shothole\\new_vulcanarm_shothole.str"); } else { particle->Open("new_vulcanarm\\new_vulcanarm_shothole\\new_vulcanarm_shothole.str"); } break; case EF_NEW_EARTHDRIVE: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_earthdrive\\new_earthdrive\\new_earthdrive.str"); } else { particle->Open("new_earthdrive\\new_earthdrive\\new_earthdrive.str"); } break; case EF_NEW_EARTHDRIVE_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_earthdrive\\new_earthdrive_bottom\\new_earthdrive_bottom.str"); } else { particle->Open("new_earthdrive\\new_earthdrive_bottom\\new_earthdrive_bottom.str"); } break; case EF_NEW_EARTHDRIVE_TARGET: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_earthdrive\\new_earthdrive_target\\new_earthdrive_target.str"); } else { particle->Open("new_earthdrive\\new_earthdrive_target\\new_earthdrive_target.str"); } break; case EF_SERVANT_SIGN: particle->Load("servant_sign\\servant_sign\\servant_sign.str"); break; case EF_SERVANT_SIGN_BOTTOM: particle->Load("servant_sign\\servant_sign_bottom\\servant_sign_bottom.str"); break; case EF_SERVANT_SIGN_DOWN: particle->Load("servant_sign\\servant_sign_down\\servant_sign_down.str"); break; case EF_SERVANT_SIGN_DOWN_BOTTOM: particle->Load("servant_sign\\servant_sign_down_bottom\\servant_sign_down_bottom.str"); break; case EF_SERVANT_PHANTOM_DOWN: particle->Load("servant_phantom\\servant_phantom_down\\servant_phantom_down.str"); break; case EF_SERVANT_PHANTOM_HIT: particle->Load("servant_phantom\\servant_phantom_hit\\servant_phantom_hit.str"); break; case EF_SERVANT_PHANTOM_HIT_BOTTOM: particle->Load("servant_phantom\\servant_phantom_hit_bottom\\servant_phantom_hit_bottom.str"); break; case EF_SERVANT_PHANTOM_SUB: particle->Load("servant_phantom\\servant_phantom_sub\\servant_phantom_sub.str"); break; case EF_SERVANT_PHANTOM_SUB_BOTTOM: particle->Load("servant_phantom\\servant_phantom_sub_bottom\\servant_phantom_sub_bottom.str"); break; case EF_SERVANT_DEMOLITION_COLLECT: particle->Load("servant_demolition\\servant_demolition_collect\\servant_demolition_collect.str"); break; case EF_SERVANT_DEMOLITION_HIT: particle->Load("servant_demolition\\servant_demolition_hit\\servant_demolition_hit.str"); break; case EF_SERVANT_DEMOLITION_LEFTDOWN: particle->Load("servant_demolition\\servant_demolition_leftdown\\servant_demolition_leftdown.str"); break; case EF_SERVANT_DEMOLITION_RIGHTDOWN: particle->Load("servant_demolition\\servant_demolition_rightdown\\servant_demolition_rightdown.str"); break; case EF_DRAGONIC_AURA: particle->Load("dragonnic_ora\\dragonnic_ora\\dragonnic_ora.str"); break; case EF_DRAGONIC_AURA_BOTTOM: particle->Load("dragonnic_ora\\dragonnic_ora_bottom\\dragonnic_ora_bottom.str"); break; case EF_DRAGONIC_AURA_HIT: particle->Load("dragonnic_ora\\dragonnic_ora_hit\\dragonnic_ora_hit.str"); break; case EF_DRAGONIC_AURA_HIT_BOTTOM: particle->Load("dragonnic_ora\\dragonnic_ora_hit_bottom\\dragonnic_ora_hit_bottom.str"); break; case EF_DRAGONIC_AURA_BUFF: particle->Load("dragonnic_ora\\dragonnic_ora_buff\\dragonnic_ora_buff.str"); break; case EF_DRAGONIC_AURA_BUFF_BOTTOM: particle->Load("dragonnic_ora\\dragonnic_ora_buff_bottom\\dragonnic_ora_buff_bottom.str"); break; case EF_MADNESS_CRUSHER: particle->Load("madness_crusher\\madness_crusher\\madness_crusher.str"); break; case EF_MADNESS_CRUSHER_BOTTOM: particle->Load("madness_crusher\\madness_crusher_bottom\\madness_crusher_bottom.str"); break; case EF_VIGOR_CAST: particle->Load("vigor\\vigor_cast\\vigor_cast.str"); break; case EF_VIGOR_BUFF: particle->Load("vigor\\vigor_buff\\vigor_buff.str"); break; case EF_NEW_AUTOSHADOWSPELL: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_autoshadowspell\\new_autoshadowspell\\new_autoshadowspell.str"); } else { particle->Open("new_autoshadowspell\\new_autoshadowspell\\new_autoshadowspell.str"); } break; case EF_NEW_AUTOSHADOWSPELL_BOTTOM: if (g_serviceOptions.Get(229)) { particle->Open("mineffect\\new_autoshadowspell\\new_autoshadowspell_bottom\\new_autoshadowspell_bottom.str"); } else { particle->Open("new_autoshadowspell\\new_autoshadowspell_bottom\\new_autoshadowspell_bottom.str"); } break; case EF_DESTRUCTIVE_HURRICANE: particle->Load("destructive_hurricane\\destructive_hurricane\\destructive_hurricane.str"); break; case EF_DESTRUCTIVE_HURRICANE_BOTTOM: particle->Load("destructive_hurricane\\destructive_hurricane_bottom\\destructive_hurricane_bottom.str"); break; case EF_DESTRUCTIVE_HURRICANE_CAST: particle->Load("destructive_hurricane\\destructive_hurricane_cast\\destructive_hurricane_cast.str"); break; case EF_DESTRUCTIVE_HURRICANE_CAST_BOTTOM: particle->Load("destructive_hurricane\\destructive_hurricane_cast_bottom\\destructive_hurricane_cast_bottom.str"); break; case EF_DESTRUCTIVE_HURRICANE_CLIMAX: particle->Load("destructive_hurricane\\destructive_hurricane_climax\\destructive_hurricane_climax.str"); break; case EF_DESTRUCTIVE_HURRICANE_HIT: particle->Load("destructive_hurricane\\destructive_hurricane_hit\\destructive_hurricane_hit.str"); break; case EF_DEADLY_PROJECTION_CAST: particle->Load("deadly_projection\\deadly_projection_cast\\deadly_projection_cast.str"); break; case EF_DEADLY_PROJECTION_CAST_BOTTOM: particle->Load("deadly_projection\\deadly_projection_cast_bottom\\deadly_projection_cast_bottom.str"); break; case EF_DEADLY_PROJECTION_HIT: particle->Load("deadly_projection\\deadly_projection_hit\\deadly_projection_hit.str"); break; case EF_DEADLY_PROJECTION: particle->Load("deadly_projection\\efst_deadly_defeasance\\efst_deadly_defeasance.str"); break; case EF_SOUL_VC_STRIKE_CAST: particle->Load("soul_vc_strike\\soul_vc_strike_cast\\soul_vc_strike_cast.str"); break; case EF_SOUL_VC_STRIKE_CAST_BOTTOM: particle->Load("soul_vc_strike\\soul_vc_strike_cast_bottom\\soul_vc_strike_cast_bottom.str"); break; case EF_SOUL_VC_STRIKE_HIT: particle->Load("soul_vc_strike\\soul_vc_strike_hit\\soul_vc_strike_hit.str"); break; case EF_ROCKDOWN: particle->Load("rockdown\\rockdown\\rockdown.str"); break; case EF_ROCKDOWN_BOTTOM: particle->Load("rockdown\\rockdown_bottom\\rockdown_bottom.str"); break; case EF_ROCKDOWN_CAST: particle->Load("rockdown\\rockdown_cast\\rockdown_cast.str"); break; case EF_ROCKDOWN_CAST_BOTTOM: particle->Load("rockdown\\rockdown_cast_bottom\\rockdown_cast_bottom.str"); break; case EF_ROCKDOWN_HIT: particle->Load("rockdown\\rockdown_hit\\rockdown_hit.str"); break; case EF_RAIN_OF_CRYSTAL: particle->Load("rain_of_crystal\\rain_of_crystal_casting\\rain_of_crystal_casting.str"); break; case EF_RAIN_OF_CRYSTAL_BOTTOM: particle->Load("rain_of_crystal\\rain_of_crystal_casting_bottom\\rain_of_crystal_casting_bottom.str"); break; case EF_CRIMSON_ARROW_CAST: particle->Load("crimsonarrow\\crimsonarrow_cast\\crimsonarrow_cast.str"); break; case EF_CRIMSON_ARROW_CAST_BOTTOM: particle->Load("crimsonarrow\\crimsonarrow_cast_bottom\\crimsonarrow_cast_bottom.str"); break; case EF_CRIMSON_ARROW_HIT: particle->Load("crimsonarrow\\crimsonarrow_hit\\crimsonarrow_hit.str"); break; case EF_VIOLENT_QUAKE_CAST: particle->Load("violentquake\\violentquake_cast\\violentquake_cast.str"); break; case EF_VIOLENT_QUAKE_CAST_BOTTOM: particle->Load("violentquake\\violentquake_cast_bottom\\violentquake_cast_bottom.str"); break; case EF_VIOLENT_QUAKE_HIT: particle->Load("violentquake\\violentquake_hit\\violentquake_hit.str"); break; case EF_VIOLENT_QUAKE_BOTTOM: particle->Load("violentquake\\violentquake_bottom\\violentquake_bottom.str"); break; case EF_NEW_CHARGINGPIERCE_CAST: particle->Load("new_chargingpierce\\new_chargingpierce_cast\\new_chargingpierce_cast.str"); break; case EF_NEW_CHARGINGPIERCE_CAST_BOTTOM: particle->Load("new_chargingpierce\\new_chargingpierce_cast_bottom\\new_chargingpierce_cast_bottom.str"); break; case EF_NEW_CHARGINGPIERCE_HIT: particle->Load("new_chargingpierce\\new_chargingpierce_hit\\new_chargingpierce_hit.str"); break; case EF_ASTRAL_STRIKE_CAST: particle->Load("astralstrike\\astralstrike_cast\\astralstrike_cast.str"); break; case EF_ASTRAL_STRIKE_CAST_BOTTOM: particle->Load("astralstrike\\astralstrike_cast_bottom\\astralstrike_cast_bottom.str"); break; case EF_MYSTERY_ILLUSION: particle->Load("mystery_illusion\\mystery_illusion\\mystery_illusion.str"); break; case EF_MYSTERY_ILLUSION_BOTTOM: particle->Load("mystery_illusion\\mystery_illusion_bottom\\mystery_illusion_bottom.str"); break; case EF_MYSTERY_ILLUSION_CAST: particle->Load("mystery_illusion\\mystery_illusion_cast\\mystery_illusion_cast.str"); break; case EF_MYSTERY_ILLUSION_CAST_BOTTOM: particle->Load("mystery_illusion\\mystery_illusion_cast_bottom\\mystery_illusion_cast_bottom.str"); break; case EF_MYSTERY_ILLUSION_HIT: particle->Load("mystery_illusion\\mystery_illusion_hit\\mystery_illusion_hit.str"); break; case EF_TORNADO_STORM: particle->Load("tornadostorm\\tornadostorm\\tornadostorm.str"); break; case EF_TORNADO_STORM_BOTTOM: particle->Load("tornadostorm\\tornadostorm_bottom\\tornadostorm_bottom.str"); break; case EF_TORNADO_STORM_CAST: particle->Load("tornadostorm\\tornadostorm_cast\\tornadostorm_cast.str"); break; case EF_TORNADO_STORM_CAST_BOTTOM: particle->Load("tornadostorm\\tornadostorm_cast_bottom\\tornadostorm_cast_bottom.str"); break; case EF_TORNADO_STORM_HIT: particle->Load("tornadostorm\\tornadostorm_hit\\tornadostorm_hit.str"); break; case EF_FROZEN_SLASH: particle->Load("frozen_slash\\frozen_slash\\frozen_slash.str"); break; case EF_FROZEN_SLASH_CAST: particle->Load("frozen_slash\\frozen_slash_casting\\frozen_slash_cast.str"); break; case EF_FROZEN_SLASH_CAST_BOTTOM: particle->Load("frozen_slash\\frozen_slash_casting_bottom\\frozen_slash_cast_bottom.str"); break; case EF_FROZEN_SLASH_HIT: particle->Load("frozen_slash\\frozen_slash_hit\\frozen_slash_hit.str"); break; case EF_FROZEN_SLASH_ICE_01: particle->Load("frozen_slash\\frozen_slash_ice\\frozen_slash_ice_01.str"); break; case EF_FROZEN_SLASH_ICE_02: particle->Load("frozen_slash\\frozen_slash_ice\\frozen_slash_ice_02.str"); break; case EF_FROZEN_SLASH_ICE_03: particle->Load("frozen_slash\\frozen_slash_ice\\frozen_slash_ice_03.str"); break; case EF_FROZEN_SLASH_ICE_04: particle->Load("frozen_slash\\frozen_slash_ice\\frozen_slash_ice_04.str"); break; case EF_FROZEN_SLASH_ICE_05: particle->Load("frozen_slash\\frozen_slash_ice\\frozen_slash_ice_05.str"); break; case EF_FROZEN_SLASH_ICE_06: particle->Load("frozen_slash\\frozen_slash_ice\\frozen_slash_ice_06.str"); break; case EF_FROZEN_SLASH_ICE_07: particle->Load("frozen_slash\\frozen_slash_ice\\frozen_slash_ice_07.str"); break; case EF_FROZEN_SLASH_ICE_08: particle->Load("frozen_slash\\frozen_slash_ice\\frozen_slash_ice_08.str"); break; case EF_ALL_BLOOM: particle->Load("allbloom\\allbloom\\allbloom.str"); break; case EF_ALL_BLOOM_BOTTOM: particle->Load("allbloom\\allbloom_bottom\\allbloom_bottom.str"); break; case EF_ALL_BLOOM_CAST: particle->Load("allbloom\\allbloom_cast\\allbloom_cast.str"); break; case EF_ALL_BLOOM_CAST_BOTTOM: particle->Load("allbloom\\allbloom_cast_bottom\\allbloom_cast_bottom.str"); break; case EF_ALL_BLOOM_HIT: particle->Load("allbloom\\allbloom_hit\\allbloom_hit.str"); break; case EF_CLIMAX_LIGHT: particle->Load("climax\\climax_light\\climax_light.str"); break; case EF_CLIMAX_CAST: particle->Load("climax\\climax_cast\\climax_cast.str"); break; case EF_CLIMAX_CAST_LOOP: particle->Load("climax\\climax_cast_loop\\climax_cast_loop.str"); break; case EF_FLORAL_FLARE_ROAD_CAST: particle->Load("froral_flareroad\\froral_flareroad_cast\\froral_flareroad_cast.str"); break; case EF_FLORAL_FLARE_ROAD_CAST_BOTTOM: particle->Load("froral_flareroad\\froral_flareroad_cast_bottom\\froral_flareroad_cast_bottom.str"); break; case EF_FLORAL_FLARE_ROAD_HIT: particle->Load("froral_flareroad\\froral_flareroad_hit\\froral_flareroad_hit.str"); break; case EF_MEDIALE_VOTUM: particle->Load("medialevotum\\medialevotum\\medialevotum.str"); break; case EF_MEDIALE_VOTUM_CAST: particle->Load("medialevotum\\medialevotum_cast\\medialevotum_cast.str"); break; case EF_MEDIALE_VOTUM_LOOP: particle->Open("medialevotum\\medialevotum_loop\\medialevotum_loop.str"); break; case EF_ARGUTUS_VITA: particle->Load("argutusvita\\argutusvita\\argutusvita.str"); break; case EF_ARGUTUS_VITA_CAST: particle->Load("argutusvita\\argutusvita_cast\\argutusvita_cast.str"); break; case EF_ARGUTUS_TELUM: particle->Load("argutustelum\\argutustelum\\argutustelum.str"); break; case EF_ARGUTUS_TELUM_CAST: particle->Load("argutustelum\\argutustelum_cast\\argutustelum_cast.str"); break; case EF_PRESENS_ACIES: particle->Load("presensacies\\presensacies\\presensacies.str"); break; case EF_PRESENS_ACIES_CAST: particle->Load("presensacies\\presensacies_cast\\presensacies_cast.str"); break; case EF_ABR_MOTHER_CAST: particle->Load("new_abr_mother\\new_abr_mother_cast\\new_abr_mother_cast.str"); break; case EF_ABR_MOTHER_01: particle->Load("new_abr_mother\\new_abr_mother_01\\new_abr_mother_01.str"); break; case EF_ABR_MOTHER_02: particle->Load("new_abr_mother\\new_abr_mother_02\\new_abr_mother_02.str"); break; case EF_NEW_D_MACHINE: particle->Load("new_d_machine\\new_d_machine\\new_d_machine.str"); break; case EF_NEW_D_MACHINE_CAST: particle->Load("new_d_machine\\new_d_machine_cast\\new_d_machine_cast.str"); break; case EF_NEW_D_MACHINE_CAST_BOTTOM: particle->Load("new_d_machine\\new_d_machine_cast_bottom\\new_d_machine_cast_bottom.str"); break; case EF_NEW_D_MACHINE_START: particle->Load("new_d_machine\\new_d_machine_start_end\\new_d_machine_start.str"); break; case EF_NEW_D_MACHINE_END: particle->Load("new_d_machine\\new_d_machine_start_end\\new_d_machine_end.str"); break; case EF_A_MACHINE_CAST: particle->Load("a_machine\\a_machine_cast\\a_machine_cast.str"); break; case EF_A_MACHINE_HIT: particle->Load("a_machine\\a_machine_hit\\a_machine_hit.str"); break; case EF_NEW_AXE_STOMP: particle->Load("new_axe_stomp\\new_axe_stomp\\new_axe_stomp.str"); break; case EF_NEW_AXE_STOMP_HIT: particle->Load("new_axe_stomp\\new_axe_stomp_hit\\new_axe_stomp_hit.str"); break; case EF_NEW_AXE_STOMP_BOTTOM: particle->Load("new_axe_stomp\\new_axe_stomp_bottom\\new_axe_stomp_bottom.str"); break; case EF_NEW_AXE_STOMP_12: particle->Load("new_axe_stomp\\new_axe_stomp_12c\\new_axe_stomp_12c.str"); break; case EF_NEW_AXE_STOMP_01: particle->Load("new_axe_stomp\\new_axe_stomp_01c\\new_axe_stomp_01c.str"); break; case EF_NEW_AXE_STOMP_03: particle->Load("new_axe_stomp\\new_axe_stomp_03c\\new_axe_stomp_03.str"); break; case EF_NEW_AXE_STOMP_05: particle->Load("new_axe_stomp\\new_axe_stomp_05c\\new_axe_stomp_05c.str"); break; case EF_NEW_AXE_STOMP_06: particle->Load("new_axe_stomp\\new_axe_stomp_06c\\new_axe_stomp_06c.str"); break; case EF_NEW_AXE_STOMP_08: particle->Load("new_axe_stomp\\new_axe_stomp_08c\\new_axe_stomp_08c.str"); break; case EF_NEW_AXE_STOMP_09: particle->Load("new_axe_stomp\\new_axe_stomp_09c\\new_axe_stomp_09c.str"); break; case EF_NEW_AXE_STOMP_11: particle->Load("new_axe_stomp\\new_axe_stomp_11c\\new_axe_stomp_11c.str"); break; case EF_NEW_RUSH_QUAKE: particle->Load("new_rush_quake\\new_rush_quake\\new_rush_quake.str"); break; case EF_NEW_RUSH_QUAKE_BOTTOM: particle->Load("new_rush_quake\\new_rush_quake_bottom\\new_rush_quake.str"); break; case EF_NEW_RUSH_QUAKE_HIT: particle->Load("new_rush_quake\\new_rush_quake_hit\\new_rush_quake_hit.str"); break; case EF_ARBITRIUM: particle->Load("arbitrium\\arbitrium\\arbitrium.str"); break; case EF_ARBITRIUM_BOTTOM: particle->Load("arbitrium\\arbitrium_bottom\\arbitrium_bottom.str"); break; case EF_ARBITRIUM_CAST: particle->Open("arbitrium\\arbitrium_cast\\arbitrium_cast.str"); break; case EF_ARBITRIUM_CAST_BOTTOM: particle->Load("arbitrium\\arbitrium_cast_bottom\\arbitrium_cast_bottom.str"); break; case EF_ARBITRIUM_HIT: particle->Load("arbitrium\\arbitrium_hit\\arbitrium_hit.str"); break; case EF_DANCING_KNIFE_CAST: particle->Load("dancing_knife\\dancing_knife_cast\\dancing_knife_cast.str"); break; case EF_DANCING_KNIFE_CAST_BOTTOM: particle->Load("dancing_knife\\dancing_knife_cast_bottom\\dancing_knife_cast_bottom.str"); break; case EF_ABYSS_DAGGER_HIT_1830: particle->Load("abyss_dagger\\abyss_dagger_hit\\abyss_dagger_hit.str"); break; case EF_ETERNAL_SLASH_HIT_1: particle->Load("eternal_slash\\eternal_slash_hit\\eternal_slash_hit.str"); break; case EF_NEW_REPARATIO_CAST: particle->Open("new_reparatio\\new_reparatio_cast\\new_reparatio_cast.str"); break; case EF_NEW_REPARATIO_CAST_BOTTOM: particle->Load("new_reparatio\\new_reparatio_cast_bottom\\new_reparatio_cast_bottom.str"); break; case EF_NEW_REPARATIO: particle->Load("new_reparatio\\new_reparatio\\new_reparatio.str"); break; case EF_NEW_REPARATIO_BOTTOM: particle->Load("new_reparatio\\new_reparatio_bottom\\new_reparatio_bottom.str"); break; case EF_NEW_REPARATIO_TARGET: particle->Load("new_reparatio\\new_reparatio_target\\new_reparatio_target.str"); break; case EF_NEW_REPARATIO_TARGET_BOTTOM: particle->Open("new_reparatio\\new_reparatio_target_bottom\\new_reparatio_target_bottom.str"); break; case EF_EFFLIGO: particle->Load("effligo\\effligo\\effligo.str"); break; case EF_EFFLIGO_BOTTOM: particle->Load("effligo\\effligo_bottom\\effligo_bottom.str"); break; case EF_EFFLIGO_HIT: particle->Load("effligo\\effligo_hit\\effligo_hit.str"); break; case EF_COMPETENTIA: particle->Load("competentia\\competentia\\competentia.str"); break; case EF_COMPETENTIA_BOTTOM: particle->Open("competentia\\competentia_bottom\\competentia_bottom.str"); break; case EF_COMPETENTIA_LOOP: particle->Open("competentia\\competentia_loop\\competentia_loop.str"); break; case EF_COMPETENTIA_LOOP_BOTTOM: particle->Load("competentia\\competentia_loop_bottom\\competentia_loop_bottom.str"); break; case EF_PNEUMATICUS_PROCELLA_CAST: particle->Load("pneumaticusprocella\\pneumaticusprocella_cast\\pneumaticusprocella_cast.str"); break; case EF_NEW_PRAMEN_BOTTOM: particle->Load("new_pramen\\new_pramen_bottom\\new_pramen_bottom.str"); break; case EF_NEW_PRAMEN_CAST: particle->Load("new_pramen\\new_pramen_cast\\new_pramen_cast.str"); break; case EF_NEW_PRAMEN: particle->Load("new_pramen\\new_pramen\\new_pramen.str"); break; case EF_NEW_DILECTIO_HEAL: particle->Load("new_dilectioheal\\new_dilectioheal\\new_dilectioheal.str"); break; case EF_NEW_DILECTIO_HEAL_CAST: particle->Open("new_dilectioheal\\new_dilectioheal_cast\\new_dilectioheal_cast.str"); break; case EF_NEW_DILECTIO_HEAL_CAST_BOTTOM: particle->Load("new_dilectioheal\\new_dilectioheal_cast_bottom\\new_dilectioheal_cast_bottom.str"); break; case EF_NEW_DILECTIO_HEAL_TARGET: particle->Load("new_dilectioheal\\new_dilectioheal_target\\new_dilectioheal_target.str"); break; case EF_NEW_DILECTIO_HEAL_TARGET_BOTTOM: particle->Load("new_dilectioheal\\new_dilectioheal_target_bottom\\new_dilectioheal_target_bottom.str"); break; case EF_CRYSTAL_IMPACT: particle->Load("crystal_impact\\crystal_impact\\crystal_impact.str"); break; case EF_CRYSTAL_IMPACT_BOTTOM: particle->Load("crystal_impact\\crystal_impact_bottom\\crystal_impact_bottom.str"); break; case EF_CRYSTAL_IMPACT_CAST: particle->Load("crystal_impact\\crystal_impact_cast\\crystal_impact_cast.str"); break; case EF_CRYSTAL_IMPACT_CAST_BOTTOM: particle->Load("crystal_impact\\crystal_impact_cast_bottom\\crystal_impact_cast_bottom.str"); break; case EF_CRYSTAL_IMPACT_HIT: particle->Load("crystal_impact\\crystal_impact_hit\\crystal_impact_hit.str"); break; case EF_CRYSTAL_IMPACT_BUFF: particle->Load("crystal_impact\\crystal_impact_buff\\crystal_impact_buff.str"); break; case EF_NEW_ENCHANTING_SHADOW: particle->Load("enchanting_shadow\\enchanting_shadow\\new_enchanting_shadow.str"); break; case EF_NEW_ENCHANTING_SHADOW_BOTTOM: particle->Load("enchanting_shadow\\enchanting_shadow_bottom\\new_enchanting_shadow_bottom.str"); break; case EF_FLAME_TRAP_HIT: particle->Load("flametrap\\flametrap_hit\\flametrap_hit.str"); break; case EF_FLAME_TRAP_CAST: particle->Load("flametrap\\flametrap_cast\\flametrap_cast.str"); break; case EF_FLAME_TRAP: particle->Load("flametrap\\flametrap\\flametrap.str"); break; case EF_RELIGIO: particle->Load("religio\\religio\\religio.str"); break; case EF_RELIGIO_CAST: particle->Load("religio\\religio_cast\\religio_cast.str"); break; case EF_FATAL_SHADOW_CROW: particle->Load("fatal_shadow_crow\\fatal_shadow_crow\\fatal_shadow_crow.str"); break; case EF_FATAL_SHADOW_CROW_BOTTOM: particle->Load("fatal_shadow_crow\\fatal_shadow_crow_bottom\\fatal_shadow_crow_bottom.str"); break; case EF_FATAL_SHADOW_CROW_HIT: particle->Load("fatal_shadow_crow\\fatal_shadow_crow_hit\\fatal_shadow_crow_hit.str"); break; case EF_SHADOW_EXCEED_CAST: particle->Load("shadow_exceed\\shadow_exceed_cast\\shadow_exceed_cast.str"); break; case EF_DEEP_BLIND_TRAP: particle->Load("deepblindtrap\\deepblindtrap\\deepblindtrap.str"); break; case EF_DEEP_BLIND_TRAP_CAST: particle->Load("deepblindtrap\\deepblindtrap_cast\\deepblindtrap_cast.str"); break; case EF_DEEP_BLIND_TRAP_HIT: particle->Load("deepblindtrap\\deepblindtrap_hit\\deepblindtrap_hit.str"); break; case EF_CALUMITYGALE: particle->Load("4wh_calumitygale\\calumitygale\\calumitygale.str"); break; case EF_CALUMITYGALE_CAST: particle->Load("4wh_calumitygale\\calumitygale_cast\\calumitygale_cast.str"); break; case EF_CALUMITYGALE_LOOP: particle->Load("4wh_calumitygale\\calumitygale_loop\\calumitygale_loop.str"); break; case EF_SWIFT_TRAP: particle->Load("swifttrap\\swifttrap\\swifttrap.str"); break; case EF_SWIFT_TRAP_CAST: particle->Load("swifttrap\\swifttrap_cast\\swifttrap_cast.str"); break; case EF_SWIFT_TRAP_HIT: particle->Load("swifttrap\\swifttrap_hit\\swifttrap_hit.str"); break; case EF_SOLID_TRAP: particle->Load("solidtrap\\solidtrap\\solidtrap.str"); break; case EF_SOLID_TRAP_CAST: particle->Load("solidtrap\\solidtrap_cast\\solidtrap_cast.str"); break; case EF_SOLID_TRAP_CAST_BOTTOM: particle->Load("solidtrap\\solidtrap_cast_bottom\\solidtrap_cast_bottom.str"); break; case EF_SOLID_TRAP_HIT: particle->Load("solidtrap\\solidtrap_hit\\solidtrap_hit.str"); break; case EF_BENEDICTUM: particle->Load("benedictum\\benedictum\\benedictum.str"); break; case EF_BENEDICTUM_CAST: particle->Open("benedictum\\benedictum_cast\\benedictum_cast.str"); break; case EF_BENEDICTUM_CAST_BOTTOM: particle->Load("benedictum\\benedictum_cast_bottom\\benedictum_cast_bottom.str"); break; case EF_STRATUM_TREMOR_CAST: particle->Load("strantumtremor\\strantumtremor_cast\\strantumtremor_cast.str"); break; case EF_STRATUM_TREMOR_CAST_BOTTOM: particle->Load("strantumtremor\\strantumtremor_cast_bottom\\strantumtremor_cast_bottom.str"); break; case EF_STRATUM_TREMOR_HIT: particle->Load("strantumtremor\\strantumtremor_hit\\strantumtremor_hit.str"); break; case EF_STRATUM_TREMOR: particle->Load("strantumtremor\\strantumtremor\\strantumtremor.str"); break; case EF_STRATUM_TREMOR_BOTTOM: particle->Load("strantumtremor\\strantumtremor_bottom\\strantumtremor_bottom.str"); break; case EF_IMPACT_CRATER: particle->Load("impact_crater\\impact_crater\\impact_crater.str"); break; case EF_IMPACT_CRATER_BOTTOM: particle->Load("impact_crater\\impact_crater_bottom\\impact_crater_bottom.str"); break; case EF_IMPACT_CRATER_HIT: particle->Load("impact_crater\\impact_crater_hit\\impact_crater_hit.str"); break; case EF_WIND_SIGN: particle->Load("windsign\\windsign\\windsign.str"); break; case EF_WIND_SIGN_LOOP: particle->Load("windsign\\windsign_loop\\windsign_loop.str"); break; case EF_ABR_INFINITY: particle->Load("new_abr_infinity\\new_abr_infinity\\new_abr_infinity.str"); break; case EF_ABR_INFINITY_BOTTOM: particle->Load("new_abr_infinity\\new_abr_infinity_bottom\\new_abr_infinity_bottom.str"); break; case EF_ABR_INFINITY_CAST: particle->Load("new_abr_infinity\\new_abr_infinity_cast\\new_abr_infinity_cast.str"); break; case EF_ABR_INFINITY_HIT: particle->Load("new_abr_infinity\\new_abr_infinity_hit\\new_abr_infinity_hit.str"); break; case EF_NEW_BATTLE_W: particle->Load("new_battle_w\\new_battle_w\\new_battle_w.str"); break; case EF_NEW_BATTLE_W_CAST: particle->Load("new_battle_w\\new_battle_w_cast\\new_battle_w_cast.str"); break; case EF_NEW_BATTLE_W_BOTTOM: particle->Load("new_battle_w\\new_battle_w_bottom\\new_battle_w_bottom.str"); break; case EF_NEW_BATTLE_W_HIT: particle->Load("new_battle_w\\new_battle_w_hit\\new_battle_w_hit.str"); break; case EF_NEW_D_CANNON: particle->Load("new_d_cannon\\new_d_cannon\\new_d_cannon.str"); break; case EF_NEW_D_CANNON_CAST: particle->Load("new_d_cannon\\new_d_cannon_cast\\new_d_cannon_cast.str"); break; case EF_NEW_D_CANNON_HIT: particle->Load("new_d_cannon\\new_d_cannon_hit\\new_d_cannon_hit.str"); break; case EF_HAWK_RUSH: particle->Load("hawkrush\\hawkrush\\hawkrush.str"); break; case EF_ETERNAL_SLASH_HIT_2: particle->Load("eternal_slash\\eternal_slash_hit\\eternal_slash_hit.str"); break; case EF_NEW_POTENT_VENOM: particle->Load("new_potent_venom\\new_potent_venom.str"); break; case EF_CRESCIVEBOLT_CAST: particle->Load("crescivebolt\\crescivebolt_cast\\crescivebolt_cast.str"); break; case EF_CRESCIVEBOLT_HIT: particle->Load("crescivebolt\\crescivebolt_hit\\crescivebolt_hit.str"); break; case EF_SHADOW_STAB: particle->Load("shadow_stab\\shadow_stab\\shadow_stab.str"); break; case EF_ETERNAL_SLASH_HIT: particle->Load("eternal_slash\\eternal_slash_hit\\eternal_slash_hit.str"); break; case EF_SHADOW_STAB_HIT2: particle->Load("shadow_stab\\shadow_stab_hit2\\shadow_stab_hit2.str"); break; case EF_FIRST_FAITH_POWER: particle->Load("4ig_firstfaithpower\\firstfaithpower\\firstfaithpower.str"); break; case EF_FIRST_FAITH_POWER_CAST: particle->Load("4ig_firstfaithpower\\firstfaithpower_cast\\firstfaithpower_cast.str"); break; case EF_FIRST_FAITH_POWER_START: particle->Load("4ig_firstfaithpower\\firstfaithpower_start\\firstfaithpower_start.str"); break; case EF_JUDGE: particle->Load("4ig_judge\\judge\\judge.str"); break; case EF_JUDGE_CAST: particle->Load("4ig_judge\\judge_cast\\judge_cast.str"); break; case EF_JUDGE_START: particle->Load("4ig_judge\\judge_start\\judge_start.str"); break; case EF_JUDGE_AURA: if (!g_serviceOptions.Get(229)) { particle->Open("4ig_judge\\judge_aura\\judge_aura.str"); } break; case EF_THIRD_EXOR_FLAME: particle->Load("4ig_thirdexorflame\\thirdexorflame\\thirdexorflame.str"); break; case EF_THIRD_EXOR_FLAME_CAST: particle->Load("4ig_thirdexorflame\\thirdexorflame_cast\\thirdexorflame_cast.str"); break; case EF_THIRD_EXOR_FLAME_START: particle->Load("4ig_thirdexorflame\\thirdexorflame_start\\thirdexorflame_start.str"); break; case EF_THIRD_EXOR_FLAME_AURA: particle->Load("4ig_thirdexorflame\\thirdexorflame_aura\\thirdexorflame_aura.str"); break; case EF_OLEUM_SANCTUM: particle->Load("4ig_oleumsanctum\\oleumsanctum\\oleumsanctum.str"); break; case EF_OLEUM_SANCTUM_BOTTOM: particle->Load("4ig_oleumsanctum\\oleumsanctum_bottom\\oleumsanctum_bottom.str"); break; case EF_OLEUM_SANCTUM_HIT: particle->Load("4ig_oleumsanctum\\oleumsanctum_hit\\oleumsanctum_hit.str"); break; case EF_OLEUM_SANCTUM_LOOP: particle->Load("4ig_oleumsanctum\\oleumsanctum_loop\\oleumsanctum_loop.str"); break; case EF_EXPLOSION_BLASTER: particle->Load("4ig_explosionblaster\\explosionblaster\\explosionblaster.str"); break; case EF_EXPLOSION_BLASTER_BOTTOM: particle->Load("4ig_explosionblaster\\explosionblaster_bottom\\explosionblaster_bottom.str"); break; case EF_EXPLOSION_BLASTER_HIT: particle->Load("4ig_explosionblaster\\explosionblaster_hit\\explosionblaster_hit.str"); break; case EF_FIRST_BRAND: particle->Load("4ig_firstbrand\\firstbrand\\firstbrand.str"); break; case EF_FIRST_BRAND_AURA: if (!g_serviceOptions.Get(229)) { particle->Open("4ig_firstbrand\\firstbrand_aura\\firstbrand_aura.str"); } break; case EF_FIRST_BRAND_HIT: particle->Load("4ig_firstbrand\\firstbrand_hit\\firstbrand_hit.str"); break; case EF_FIRST_BRAND_START: particle->Load("4ig_firstbrand\\firstbrand_start\\firstbrand_start.str"); break; case EF_SECOND_FAITH: particle->Load("4ig_secondfalth\\secondfalth\\secondfalth.str"); break; case EF_SECOND_FAITH_AURA: particle->Load("4ig_secondfalth\\secondfalth_aura\\secondfalth_aura.str"); break; case EF_SECOND_FAITH_START: particle->Load("4ig_secondfalth\\secondfalth_start\\secondfalth_start.str"); break; case EF_THIRD_FLAME_BOMB: particle->Load("4iq_thirdflamebomb\\thirdflamebomb\\thirdflamebomb.str"); break; case EF_THIRD_FLAME_BOMB_BOTTOM: particle->Load("4iq_thirdflamebomb\\thirdflamebomb_bottom\\thirdflamebomb_bottom.str"); break; case EF_SECOND_FLAME: particle->Load("4iq_secondflame\\secondflame\\secondflame.str"); break; case EF_SECOND_FLAME_BOTTOM: particle->Load("4iq_secondflame\\secondflame_bottom\\secondflame_bottom.str"); break; case EF_SINCERE_FAITH: particle->Load("sincerefaith\\sincerefaith\\sincerefaith.str"); break; case EF_SINCERE_FAITH_BOTTOM: if (!g_serviceOptions.Get(229)) { particle->Open("sincerefaith\\sincerefaith_bottom\\sincerefaith_bottom.str"); } break; case EF_THIRD_CONSECRATION: particle->Load("4iq_thirdconsecration\\thirdconsecration\\thirdconsecration.str"); break; case EF_THIRD_CONSECRATION_BOTTOM: particle->Load("4iq_thirdconsecration\\thirdconsecration_bottom\\thirdconsecration_bottom.str"); break; case EF_THIRD_PUNISH: particle->Load("4iq_thirdpunish\\thirdpunish\\thirdpunish.str"); break; case EF_THIRD_PUNISH_BOTTOM: particle->Load("4iq_thirdpunish\\thirdpunish_bottom\\thirdpunish_bottom.str"); break; case EF_MASSIVE_FLAME_BLASTER: particle->Load("4iq_massivefblaster\\massivefblaster\\massivefblaster.str"); break; case EF_MASSIVE_FLAME_BLASTER_HIT: particle->Load("4iq_massivefblaster\\massivefblaster_hit\\massivefblaster_hit.str"); break; case EF_MASSIVE_FLAME_BLASTER_HIT_BOTTOM: particle->Load("4iq_massivefblaster\\massivefblaster_hit_bottom\\massivefblaster_hit_bottom.str"); break; case EF_ABYSS_DAGGER: particle->Load("abyss_dagger\\abyss_dagger\\abyss_dagger.str"); break; case EF_ABYSS_DAGGER_HIT: particle->Load("abyss_dagger\\abyss_dagger_hit\\abyss_dagger_hit.str"); break; case EF_ABYSS_SLAYER: particle->Load("4abc_abyss_slayer\\abyss_slayer\\abyss_slayer.str"); break; case EF_ABYSS_SLAYER_CAST: particle->Load("4abc_abyss_slayer\\abyss_slayer_cast\\abyss_slayer_cast.str"); break; case EF_ABYSS_SLAYER_CAST_BOTTOM: particle->Load("4abc_abyss_slayer\\abyss_slayer_cast_bottom\\abyss_slayer_cast_bottom.str"); break; case EF_HAWK_BOOMERANG_CAST: particle->Load("hawkvumerang\\hawkvumerang_cast\\hawkvumerang_cast.str"); break; case EF_HAWK_BOOMERANG_HIT: particle->Load("hawkvumerang\\hawkvumerang_hit\\hawkvumerang_hit.str"); break; case EF_HAWK_BOOMERANG_START: particle->Load("hawkvumerang\\hawkvumerang_start\\hawkvumerang_start.str"); break; case EF_GALE_STORM_CAST: particle->Load("galestorm\\galestorm_cast\\galestorm_cast.str"); break; case EF_GALE_STORM_HIT: particle->Load("galestorm\\galestorm_hit\\galestorm_hit.str"); break; case EF_KVASIRSONATA: particle->Load("4tr_kvasirsonata\\kvasirsonata\\kvasirsonata.str"); break; case EF_KVASIRSONATA_CAST: particle->Load("4tr_kvasirsonata\\kvasirsonata_cast\\kvasirsonata_cast.str"); break; case EF_KVASIRSONATA_CAST_BOTTOM: particle->Load("4tr_kvasirsonata\\kvasirsonata_cast_bottom\\kvasirsonata_cast_bottom.str"); break; case EF_POWERFUL_FAITH: particle->Load("powerfulfaith\\powerfulfaith\\powerfulfaith.str"); break; case EF_INCREASING_ACTIVITY: particle->Load("increasing_activity\\increasing_activity\\increasing_activity.str"); break; case EF_INCREASING_ACTIVITY_CAST: particle->Load("increasing_activity\\increasing_activity_cast\\increasing_activity_cast.str"); break; case EF_INCREASING_ACTIVITY_CAST_BOTTOM: particle->Load("increasing_activity\\increasing_activity_cast_bottom\\increasing_activity_cast_bottom.str"); break; case EF_FIRM_FAITH: particle->Load("firmfaith\\firmfaith\\firmfaith.str"); break; case EF_MYSTICSYMPHONY: particle->Load("mysticsymphony\\mysticsymphony\\mysticsymphony.str"); break; case EF_MYSTICSYMPHONY_CAST: particle->Load("mysticsymphony\\mysticsymphony_cast\\mysticsymphony_cast.str"); break; case EF_MYSTICSYMPHONY_NOTE: particle->Load("mysticsymphony\\mysticsymphony_note\\mysticsymphony_note.str"); break; case EF_ACTIVITY_BURN: particle->Load("activity_burn\\activity_burn\\activity_burn.str"); break; case EF_ACTIVITY_BURN_CAST: particle->Load("activity_burn\\activity_burn_cast\\activity_burn_cast.str"); break; case EF_ACTIVITY_BURN_CAST_BOTTOM: particle->Load("activity_burn\\activity_burn_cast_bottom\\activity_burn_cast_bottom.str"); break; case EF_CHAIN_REACTION_SHOT_CAST: particle->Load("chain_reaction_shot\\chain_reaction_shot_cast\\chain_reaction_shot_cast.str"); break; case EF_CHAIN_REACTION_SHOT_CAST_BOTTOM: particle->Load("chain_reaction_shot\\chain_reaction_shot_cast_bottom\\chain_reaction_shot_cast_bottom.str"); break; case EF_ETERNAL_SLASH_HIT_3: particle->Load("eternal_slash\\eternal_slash_hit\\eternal_slash_hit.str"); break; case EF_CHAIN_REACTION_SHOT_HITSUB: particle->Load("chain_reaction_shot\\chain_reaction_shot_hitsub\\chain_reaction_shot_hitsub.str"); break; case EF_CHAIN_REACTION_SHOT: particle->Load("chain_reaction_shot\\chain_reaction_shot\\chain_reaction_shot.str"); break; case EF_SERPENS_BOTTOM: particle->Load("serpens\\serpens_bottom\\serpens_bottom.str"); break; case EF_SERPENS_CAST: particle->Load("serpens\\serpens_cast\\serpens_cast.str"); break; case EF_SERPENS_CAST_BOTTOM: particle->Load("serpens\\serpens_cast_bottom\\serpens_cast_bottom.str"); break; case EF_SERPENS_HIT: particle->Load("serpens\\serpens_hit\\serpens_hit.str"); break; case EF_SERPENS_SHIELD: particle->Load("serpens\\serpens_shield\\serpens_shield.str"); break; case EF_SERPENS_DEEP_POISONING: particle->Load("serpens\\serpens_deep_poisoning\\serpens_deep_poisoning.str"); break; case EF_SERPENS_DEEP_POISONING_BOTTOM: particle->Load("serpens\\serpens_deep_poisoning_bottom\\serpens_deep_poisoning_bottom.str"); break; case EF_DILUVIO_ICE: particle->Load("diluvio\\diluvio_ice\\diluvio_ice.str"); break; case EF_DILUVIO_ICE_BOTTOM: particle->Load("diluvio\\diluvio_ice_bottom\\diluvio_ice_bottom.str"); break; case EF_DILUVIO_CAST: particle->Load("diluvio\\diluvio_cast\\diluvio_cast.str"); break; case EF_DILUVIO_CAST_BOTTOM: particle->Load("diluvio\\diluvio_cast_bottom\\diluvio_cast_bottom.str"); break; case EF_DILUVIO_HIT: particle->Load("diluvio\\diluvio_hit\\diluvio_hit.str"); break; case EF_DILUVIO_ARMOR: particle->Load("diluvio\\diluvio_armor\\diluvio_armor.str"); break; case EF_DILUVIO_COLD_FORCE: particle->Load("diluvio\\diluvio_cold_force\\diluvio_cold_force.str"); break; case EF_DILUVIO_COLD_FORCE_BOTTOM: particle->Load("diluvio\\diluvio_cold_force _bottom\\diluvio_cold_force _bottom.str"); break; case EF_SPELL_ENCHANTING: particle->Load("spell_enchanting\\spell_enchanting\\spell_enchanting.str"); break; case EF_DIAMOND_STORM_BOTTOM: particle->Load("diamond_storm\\diamond_storm_bottom\\diamond_storm_bottom.str"); break; case EF_DIAMOND_STORM_CAST: particle->Load("diamond_storm\\diamond_storm_cast\\diamond_storm_cast.str"); break; case EF_DIAMOND_STORM_CAST_BOTTOM: particle->Load("diamond_storm\\diamond_storm_cast_bottom\\diamond_storm_cast_bottom.str"); break; case EF_DIAMOND_STORM_HIT: particle->Load("diamond_storm\\diamond_storm_hit\\diamond_storm_hit.str"); break; case EF_ROSEBLOSSOM_CAST: particle->Load("roseblossom\\roseblossom_cast\\roseblossom_cast.str"); break; case EF_ROSEBLOSSOM_CAST_BOTTOM: particle->Load("roseblossom\\roseblossom_cast_bottom\\roseblossom_cast_bottom.str"); break; case EF_ROSEBLOSSOM_HIT: particle->Load("roseblossom\\roseblossom_hit\\roseblossom_hit.str"); break; case EF_ROSEBLOSSOM_ROSE: particle->Load("roseblossom\\roseblossom_rose\\roseblossom_rose.str"); break; case EF_ROSEBLOSSOM_SHOT: particle->Load("roseblossom\\roseblossom_shot\\roseblossom_shot.str"); break; case EF_VENOM_SWAMP_BOTTOM: particle->Load("venom_swamp\\venom_swamp_bottom\\venom_swamp_bottom.str"); break; case EF_VENOM_SWAMP_CAST: particle->Load("venom_swamp\\venom_swamp_cast\\venom_swamp_cast.str"); break; case EF_VENOM_SWAMP_CAST_BOTTOM: particle->Load("venom_swamp\\venom_swamp_cast_bottom\\venom_swamp_cast_bottom.str"); break; case EF_VENOM_SWAMP_HIT: particle->Load("venom_swamp\\venom_swamp_hit\\venom_swamp_hit.str"); break; case EF_ARDOR: particle->Load("ardor\\ardor\\ardor.str"); break; case EF_ARDOR_BOTTOM: particle->Load("ardor\\ardor_bottom\\ardor_bottom.str"); break; case EF_ARDOR_CAST: particle->Load("ardor\\ardor_cast\\ardor_cast.str"); break; case EF_ARDOR_CAST_BOTTOM: particle->Load("ardor\\ardor_cast_bottom\\ardor_cast_bottom.str"); break; case EF_ARDOR_HIT: particle->Load("ardor\\ardor_hit\\ardor_hit.str"); break; case EF_ARDOR_FLAMEARMOR: particle->Load("ardor\\ardor_flamearmor\\ardor_flamearmor.str"); break; case EF_ARDOR_FLAMETECHNIC: particle->Load("ardor\\ardor_flametechnic\\ardor_flametechnic.str"); break; case EF_ARDOR_FLAMETECHNIC_BOTTOM: particle->Load("ardor\\ardor_flametechnic_bottom\\ardor_flametechnic_bottom.str"); break; case EF_LIGHTNING_LAND: particle->Load("lightning_land\\lightning_land\\lightning_land.str"); break; case EF_LIGHTNING_LAND_BOTTOM: particle->Load("lightning_land\\lightning_land_bottom\\lightning_land_bottom.str"); break; case EF_LIGHTNING_LAND_CAST: particle->Load("lightning_land\\lightning_land_cast\\lightning_land_cast.str"); break; case EF_LIGHTNING_LAND_CAST_BOTTOM: particle->Load("lightning_land\\lightning_land_cast_bottom\\lightning_land_cast_bottom.str"); break; case EF_LIGHTNING_LAND_HIT: particle->Load("lightning_land\\lightning_land_hit\\lightning_land_hit.str"); break; case EF_CONFLAGRATION: particle->Load("conflagration\\conflagration\\conflagration.str"); break; case EF_CONFLAGRATION_BOTTOM: particle->Load("conflagration\\conflagration_bottom\\conflagration_bottom.str"); break; case EF_CONFLAGRATION_CAST: particle->Load("conflagration\\conflagration_cast\\conflagration_cast.str"); break; case EF_CONFLAGRATION_CAST_BOTTOM: particle->Load("conflagration\\conflagration_cast_bottom\\conflagration_cast_bottom.str"); break; case EF_CONFLAGRATION_HIT: particle->Load("conflagration\\conflagration_hit\\conflagration_hit.str"); break; case EF_SOUND_BLEND: particle->Load("soundblend\\soundblend\\soundblend.str"); break; case EF_SOUND_BLEND_CAST: particle->Load("soundblend\\soundblend_cast\\soundblend_cast.str"); break; case EF_SOUND_BLEND_CAST_BOTTOM: particle->Load("soundblend\\soundblend_cast_bottom\\soundblend_cast_bottom.str"); break; case EF_SOUND_BLEND_RED: particle->Load("soundblend\\soundblend_red\\soundblend_red.str"); break; case EF_METALLIC_FURY: particle->Load("metalicfury\\metalicfury\\metalicfury.str"); break; case EF_JAWAII_SERENADE: particle->Load("jawaii_serenade\\jawaii_serenade\\jawaii_serenade.str"); break; case EF_JAWAII_SERENADE_CAST: particle->Load("jawaii_serenade\\jawaii_serenade_cast\\jawaii_serenade_cast.str"); break; case EF_JAWAII_SERENADE_CAST_BOTTOM: particle->Load("jawaii_serenade\\jawaii_serenade_cast_bottom\\jawaii_serenade_cast_bottom.str"); break; case EF_PRONMARCH: particle->Load("pronmarch\\pronmarch\\pronmarch.str"); break; case EF_PRONMARCH_CAST: particle->Load("pronmarch\\pronmarch_cast\\pronmarch_cast.str"); break; case EF_PRONMARCH_CAST_BOTTOM: particle->Load("pronmarch\\pronmarch_cast_bottom\\pronmarch_cast_bottom.str"); break; case EF_RHYTHMSHOOTING_CAST: particle->Load("rhythmshooting\\rhythmshooting_cast\\rhythmshooting_cast.str"); break; case EF_RHYTHMSHOOTING_CAST_BOTTOM: particle->Load("rhythmshooting\\rhythmshooting_cast_bottom\\rhythmshooting_cast_bottom.str"); break; case EF_RHYTHMSHOOTING_HIT: particle->Load("rhythmshooting\\rhythmshooting_hit\\rhythmshooting_hit.str"); break; case EF_NIFLHEIM: particle->Load("nipelheim\\nipelheim\\nipelheim.str"); break; case EF_NIFLHEIM_CAST: particle->Load("nipelheim\\nipelheim_cast\\nipelheim_cast.str"); break; case EF_ABYSS_STRIKE: particle->Load("abyss_strike\\abyss_strike\\abyss_strike.str"); break; case EF_ABYSS_STRIKE_BOTTOM: particle->Load("abyss_strike\\abyss_strike_bottom\\abyss_strike_bottom.str"); break; case EF_ABYSS_STRIKE_CAST: particle->Load("abyss_strike\\abyss_strike_cast\\abyss_strike_cast.str"); break; case EF_ABYSS_STRIKE_CAST_BOTTOM: particle->Load("abyss_strike\\abyss_strike_cast_bottom\\abyss_strike_cast_bottom.str"); break; case EF_ABYSS_STRIKE_GROUND: particle->Load("abyss_strike\\abyss_strike_ground\\abyss_strike_ground.str"); break; case EF_ABYSS_STRIKE_GROUND_BOTTOM: particle->Load("abyss_strike\\abyss_strike_ground_bottom\\abyss_strike_ground_bottom.str"); break; case EF_ABYSS_STRIKE_HIT: particle->Load("abyss_strike\\abyss_strike_hit\\abyss_strike_hit.str"); break; case EF_PROCELLA: particle->Load("procella\\procella\\procella.str"); break; case EF_PROCELLA_BOTTOM: particle->Load("procella\\procella_bottom\\procella_bottom.str"); break; case EF_PROCELLA_CAST: particle->Load("procella\\procella_cast\\procella_cast.str"); break; case EF_PROCELLA_CAST_BOTTOM: particle->Load("procella\\procella_cast_bottom\\procella_cast_bottom.str"); break; case EF_PROCELLA_HIT: particle->Load("procella\\procella_hit\\procella_hit.str"); break; case EF_PROCELLA_STORM: particle->Load("procella\\procella_storm\\procella_storm.str"); break; case EF_PROCELLA_GRACE_BREEZE: particle->Load("procella\\procella_grace_breeze\\procella_grace_breeze.str"); break; case EF_PROCELLA_GRACE_BREEZE_BOTTOM: particle->Load("procella\\procella_grace_breeze_bottom\\procella_grace_breeze_bottom.str"); break; case EF_TERREMOTUS: particle->Load("terremotus\\terremotus\\terremotus.str"); break; case EF_TERREMOTUS_CAST: particle->Load("terremotus\\terremotus_cast\\terremotus_cast.str"); break; case EF_TERREMOTUS_CAST_BOTTOM: particle->Load("terremotus\\terremotus_cast_bottom\\terremotus_cast_bottom.str"); break; case EF_TERREMOTUS_HIT: particle->Load("terremotus\\terremotus_hit\\terremotus_hit.str"); break; case EF_TERREMOTUS_PROTECT: particle->Load("terremotus\\terremotus_protect\\terremotus_protect.str"); break; case EF_TERREMOTUS_EARTH_CARE: particle->Load("terremotus\\terremotus_earth_care\\terremotus_earth_care.str"); break; case EF_TERREMOTUS_EARTH_CARE_BOTTOM: particle->Load("terremotus\\terremotus_earth_care_bottom\\terremotus_earth_care_bottom.str"); break; case EF_FROM_THE_ABYSS: particle->Load("from_the_abyss\\from_the_abyss_shadow\\from_the_abyss_shadow.str"); break; case EF_ABYSS_STRIKE_HIT_2: particle->Load("abyss_strike\\abyss_strike_hit\\abyss_strike_hit.str"); break; case EF_DEFT_STAB: particle->Load("deft_stab\\deft_stab\\deft_stab.str"); break; case EF_ABYSS_SQUARE: particle->Load("abyss_square\\abyss_square\\abyss_square.str"); break; case EF_ABYSS_SQUARE_BOTTOM: particle->Load("abyss_square\\abyss_square_bottom\\abyss_square_bottom.str"); break; case EF_ABYSS_DAGGER_HIT_2: particle->Load("abyss_dagger\\abyss_dagger_hit\\abyss_dagger_hit.str"); break; case EF_FRENZY_SHOT_HIT: particle->Load("frenzy_shot\\frenzy_shot_hit\\frenzy_shot_hit.str"); break; case EF_GEF_NOCTURN: particle->Load("gef_nocturn\\gef_nocturn\\gef_nocturn.str"); break; case EF_GEF_NOCTURN_CAST: particle->Load("gef_nocturn\\gef_nocturn_cast\\gef_nocturn_cast.str"); break; case EF_GEF_NOCTURN_CAST_BOTTOM: particle->Load("gef_nocturn\\gef_nocturn_cast_bottom\\gef_nocturn_cast_bottom.str"); break; case EF_ROKI_CAPRICCIO: particle->Load("roki_capriccio\\roki_capriccio\\roki_capriccio.str"); break; case EF_ROKI_CAPRICCIO_CAST: particle->Load("roki_capriccio\\roki_capriccio_cast\\roki_capriccio_cast.str"); break; case EF_ROKI_CAPRICCIO_CAST_BOTTOM: particle->Load("roki_capriccio\\roki_capriccio_cast_bottom\\roki_capriccio_cast_bottom.str"); break; case EF_MUSICAL_INTERLUDE: particle->Load("musical_interlude\\musical_interlude\\musical_interlude.str"); break; case EF_MUSICAL_INTERLUDE_CAST: particle->Load("musical_interlude\\musical_interlude_cast\\musical_interlude_cast.str"); break; case EF_AIN_RHAPSODY: particle->Load("ain_rhapsody\\ain_rhapsody\\ain_rhapsody.str"); break; case EF_AIN_RHAPSODY_CAST: particle->Load("ain_rhapsody\\ain_rhapsody_cast\\ain_rhapsody_cast.str"); break; case EF_TERRA_DRIVE: particle->Load("terradrive\\terradrive\\terradrive.str"); break; case EF_TERRA_DRIVE_BOTTOM: particle->Load("terradrive\\terradrive_bottom\\terradrive_bottom.str"); break; case EF_TERRA_DRIVE_CAST: particle->Load("terradrive\\terradrive_cast\\terradrive_cast.str"); break; case EF_TERRA_DRIVE_CAST_BOTTOM: particle->Load("terradrive\\terradrive_cast_bottom\\terradrive_cast_bottom.str"); break; case EF_TERRA_DRIVE_HIT: particle->Load("terradrive\\terradrive_hit\\terradrive_hit.str"); break; case EF_ELEMENTAL_BUSTER_CAST: particle->Load("elemental_buster\\elemental_buster_cast\\elemental_buster_cast.str"); break; case EF_ELEMENTAL_BUSTER_FIRE: particle->Load("elemental_buster\\elemental_buster\\elemental_buster_fire\\elemental_buster_fire.str"); break; case EF_ELEMENTAL_BUSTER_FIRE_BOTTOM: particle->Load("elemental_buster\\elemental_buster\\elemental_buster_fire_bottom\\elemental_buster_fire_bottom.str"); break; case EF_ELEMENTAL_BUSTER_FIRE_HIT: particle->Load("elemental_buster\\elemental_buster_hit\\elemental_buster_fire_hit\\elemental_buster_fire_hit.str"); break; case EF_ELEMENTAL_BUSTER_LAND: particle->Load("elemental_buster\\elemental_buster\\elemental_buster_land\\elemental_buster_land.str"); break; case EF_ELEMENTAL_BUSTER_LAND_BOTTOM: particle->Load("elemental_buster\\elemental_buster\\elemental_buster_land_bottom\\elemental_buster_land_bottom.str"); break; case EF_ELEMENTAL_BUSTER_LAND_HIT: particle->Load("elemental_buster\\elemental_buster_hit\\elemental_buster_land_hit\\elemental_buster_land_hit.str"); break; case EF_ELEMENTAL_BUSTER_POISON: particle->Load("elemental_buster\\elemental_buster\\elemental_buster_poison\\elemental_buster_poison.str"); break; case EF_ELEMENTAL_BUSTER_POISON_BOTTOM: particle->Load("elemental_buster\\elemental_buster\\elemental_buster_poison_bottom\\elemental_buster_poison_bottom.str"); break; case EF_ELEMENTAL_BUSTER_POISON_HIT: particle->Load("elemental_buster\\elemental_buster_hit\\elemental_buster_poison_hit\\elemental_buster_poison_hit.str"); break; case EF_ELEMENTAL_BUSTER_WATER: particle->Load("elemental_buster\\elemental_buster\\elemental_buster_water\\elemental_buster_water.str"); break; case EF_ELEMENTAL_BUSTER_WATER_BOTTOM: particle->Load("elemental_buster\\elemental_buster\\elemental_buster_water_bottom\\elemental_buster_water_bottom.str"); break; case EF_ELEMENTAL_BUSTER_WATER_HIT: particle->Load("elemental_buster\\elemental_buster_hit\\elemental_buster_water_hit\\elemental_buster_water_hit.str"); break; case EF_ELEMENTAL_BUSTER_WIND: particle->Load("elemental_buster\\elemental_buster\\elemental_buster_wind\\elemental_buster_wind.str"); break; case EF_ELEMENTAL_BUSTER_WIND_BOTTOM: particle->Load("elemental_buster\\elemental_buster\\elemental_buster_wind_bottom\\elemental_buster_wind_bottom.str"); break; case EF_ELEMENTAL_BUSTER_WIND_HIT: particle->Load("elemental_buster\\elemental_buster_hit\\elemental_buster_wind_hit\\elemental_buster_wind_hit.str"); break; case EF_UNLUCKY_RUSH_CAST: particle->Load("unlucky_rush\\unlucky_rush_cast\\unlucky_rush_cast.str"); break; case EF_ABYSS_DAGGER_HIT_3: particle->Load("abyss_dagger\\abyss_dagger_hit\\abyss_dagger_hit.str"); break; case EF_OVERSLASH: particle->Load("overslash\\overslash\\overslash.str"); break; case EF_OVERSLASH_BOTTOM: particle->Load("overslash\\overslash_bottom\\overslash_bottom.str"); break; case EF_OVERSLASH_CAST: particle->Load("overslash\\overslash_cast\\overslash_cast.str"); break; case EF_OVERSLASH_HIT: particle->Load("overslash\\overslash_hit\\overslash_hit.str"); break; case EF_ADVANCED_PROTECTION: particle->Load("adv_protection\\adv_protection\\adv_protection.str"); break; case EF_ADVANCED_PROTECTION_BOTTOM: particle->Load("adv_protection\\adv_protection_bottom\\adv_protection_bottom.str"); break; case EF_ADVANCED_PROTECTION_CAST: particle->Load("adv_protection\\adv_protection_cast\\adv_protection_cast.str"); break; case EF_ADVANCED_PROTECTION_CAST_BOTTOM: particle->Load("adv_protection\\adv_protection_cast_bottom\\adv_protection_cast_bottom.str"); break; case EF_CROSS_RAIN_BOTTOM: particle->Load("crossrain\\cross_rain_bottom\\cross_rain_bottom.str"); break; case EF_CROSS_RAIN_CAST: particle->Load("crossrain\\cross_rain_cast\\cross_rain_cast.str"); break; case EF_CROSS_RAIN_CAST_BOTTOM: particle->Load("crossrain\\cross_rain_cast_bottom\\cross_rain_cast_bottom.str"); break; case EF_GUARD_STANCE: particle->Load("guard_stance\\guard_stance\\guard_stance.str"); break; case EF_GUARD_STANCE_CAST: particle->Load("guard_stance\\guard_stance_cast\\guard_stance_cast.str"); break; case EF_GUARD_STANCE_CAST_BOTTOM: particle->Load("guard_stance\\guard_stance_cast_bottom\\guard_stance_cast_bottom.str"); break; case EF_ATTACK_STANCE: particle->Load("attack_stance\\attack_stance\\attack_stance.str"); break; case EF_ATTACK_STANCE_CAST: particle->Load("attack_stance\\attack_stance_cast\\attack_stance_cast.str"); break; case EF_ATTACK_STANCE_CAST_BOTTOM: particle->Load("attack_stance\\attack_stance_cast_bottom\\attack_stance_cast_bottom.str"); break; case EF_GRAND_JUDGEMENT: particle->Load("grand_judgement\\grand_judgement\\grand_judgement.str"); break; case EF_GRAND_JUDGEMENT_BOTTOM: particle->Load("grand_judgement\\grand_judgement_bottom\\grand_judgement_bottom.str"); break; case EF_GRAND_JUDGEMENT_BUFF: particle->Load("grand_judgement\\grand_judgement_buff\\grand_judgement_buff.str"); break; case EF_GRAND_JUDGEMENT_CAST: particle->Load("grand_judgement\\grand_judgement_cast\\grand_judgement_cast.str"); break; case EF_GRAND_JUDGEMENT_CAST_BOTTOM: particle->Load("grand_judgement\\grand_judgement_cast_bottom\\grand_judgement_cast_bottom.str"); break; case EF_HOLY_SHIELD: particle->Load("holy_shield\\holy_shield\\holy_shield.str"); break; case EF_HOLY_SHIELD_CAST: particle->Load("holy_shield\\holy_shield_cast\\holy_shield_cast.str"); break; case EF_HOLY_SHIELD_LOOP: particle->Load("holy_shield\\holy_shield_loop\\holy_shield_loop.str"); break; case EF_SHIELD_SHOOTING_CAST: particle->Load("shield_shooting\\shield_shooting_cast\\shield_shooting_cast.str"); break; case EF_SHIELD_SHOOTING_HIT: particle->Load("shield_shooting\\shield_shooting_hit\\shield_shooting_hit.str"); break; case EF_THE_W_PROTECTION: particle->Load("the_w_protection\\the_w_protection\\the_w_protection.str"); break; case EF_THE_W_PROTECTION_CAST: particle->Load("the_w_protection\\the_w_protection_cast\\the_w_protection_cast.str"); break; case EF_GUARDIANSHIELD: particle->Load("guardianshield\\guardianshield\\guardianshield.str"); break; case EF_GUARDIANSHIELD_BOTTOM: particle->Load("guardianshield\\guardianshield_bottom\\guardianshield_bottom.str"); break; case EF_GUARDIANSHIELD_SUB: particle->Load("guardianshield\\guardianshield_sub\\guardianshield_sub.str"); break; case EF_JUDGEMENT_CROSS: particle->Load("judgement_cross\\judgement_cross\\judgement_cross.str"); break; case EF_JUDGEMENT_CROSS_BOTTOM: particle->Load("judgement_cross\\judgement_cross_bottom\\judgement_cross_bottom.str"); break; case EF_JUDGEMENT_CROSS_CAST: particle->Load("judgement_cross\\judgement_cross_cast\\judgement_cross_cast.str"); break; case EF_JUDGEMENT_CROSS_CAST_BOTTOM: particle->Load("judgement_cross\\judgement_cross_cast_bottom\\judgement_cross_cast_bottom.str"); break; case EF_REBOUND_SHIELD: particle->Load("rebound_shield\\rebound_shield\\rebound_shield.str"); break; case EF_REBOUND_SHIELD_BOTTOM: particle->Load("rebound_shield\\rebound_shield_bottom\\rebound_shield_bottom.str"); break; case EF_REBOUND_SHIELD_CAST: particle->Load("rebound_shield\\rebound_shield_cast\\rebound_shield_cast.str"); break; case EF_REBOUND_SHIELD_CAST_BOTTOM: particle->Load("rebound_shield\\rebound_shield_cast_bottom\\rebound_shield_cast_bottom.str"); break; case EF_ULTIMATESACRIFICE: particle->Load("ultimate_sacrifice\\ultimatesacrifice\\ultimatesacrifice.str"); break; case EF_ULTIMATESACRIFICE_BOTTOM: particle->Load("ultimate_sacrifice\\ultimatesacrifice_bottom\\ultimatesacrifice_bottom.str"); break; case EF_ULTIMATESACRIFICE_SHINE: particle->Load("ultimate_sacrifice\\ultimatesacrifice_shine\\ultimatesacrifice_shine.str"); break; case EF_ACIDIFIED_ZONE_FIRE_CAST: particle->Load("acidified_zone_fire\\acidified_zone_fire_cast\\acidified_zone_fire_cast.str"); break; case EF_ACIDIFIED_ZONE_FIRE_CAST_BOTTOM: particle->Load("acidified_zone_fire\\acidified_zone_fire_cast_bottom\\acidified_zone_fire_cast_bottom.str"); break; case EF_ACIDIFIED_ZONE_FIRE_HIT: particle->Load("acidified_zone_fire\\acidified_zone_fire_hit\\acidified_zone_fire_hit.str"); break; case EF_ACIDIFIED_ZONE_FIRE_START: particle->Load("acidified_zone_fire\\acidified_zone_fire_a_start\\acidified_zone_fire_a_start.str"); break; case EF_ACIDIFIED_ZONE_FIRE_START_BOTTOM: particle->Load("acidified_zone_fire\\acidified_zone_fire_a_start_bottom\\acidified_zone_fire_a_start_bottom.str"); break; case EF_ACIDIFIED_ZONE_FIRE_LOOP: particle->Load("acidified_zone_fire\\acidified_zone_fire_a_loop\\acidified_zone_fire_a_loop.str"); break; case EF_ACIDIFIED_ZONE_FIRE_LOOP_BOTTOM: particle->Load("acidified_zone_fire\\acidified_zone_fire_a_loop_bottom\\acidified_zone_fire_a_loop_bottom.str"); break; case EF_ACIDIFIED_ZONE_WATER_CAST: particle->Load("acidified_zone_water\\acidified_zone_water_cast\\acidified_zone_water_cast.str"); break; case EF_ACIDIFIED_ZONE_WATER_CAST_BOTTOM: particle->Load("acidified_zone_water\\acidified_zone_water_cast_bottom\\acidified_zone_water_cast_bottom.str"); break; case EF_ACIDIFIED_ZONE_WATER_HIT: particle->Load("acidified_zone_water\\acidified_zone_water_hit\\acidified_zone_water_hit.str"); break; case EF_ACIDIFIED_ZONE_WATER_START: particle->Load("acidified_zone_water\\acidified_zone_water_a_start\\acidified_zone_water_a_start.str"); break; case EF_ACIDIFIED_ZONE_WATER_START_BOTTOM: particle->Load("acidified_zone_water\\acidified_zone_water_a_start_bottom\\acidified_zone_water_a_start_bottom.str"); break; case EF_ACIDIFIED_ZONE_WATER_LOOP: particle->Load("acidified_zone_water\\acidified_zone_water_a_loop\\acidified_zone_water_a_loop.str"); break; case EF_ACIDIFIED_ZONE_WATER_LOOP_BOTTOM: particle->Load("acidified_zone_water\\acidified_zone_water_a_loop_bottom\\acidified_zone_water_a_loop_bottom.str"); break; case EF_ACIDIFIED_ZONE_WIND_CAST: particle->Load("acidified_zone_wind\\acidified_zone_wind_cast\\acidified_zone_wind_cast.str"); break; case EF_ACIDIFIED_ZONE_WIND_CAST_BOTTOM: particle->Load("acidified_zone_wind\\acidified_zone_wind_cast_bottom\\acidified_zone_wind_cast_bottom.str"); break; case EF_ACIDIFIED_ZONE_WIND_HIT: particle->Load("acidified_zone_wind\\acidified_zone_wind_hit\\acidified_zone_wind_hit.str"); break; case EF_ACIDIFIED_ZONE_WIND_START: particle->Load("acidified_zone_wind\\acidified_zone_wind_a_start\\acidified_zone_wind_a_start.str"); break; case EF_ACIDIFIED_ZONE_WIND_START_BOTTOM: particle->Load("acidified_zone_wind\\acidified_zone_wind_a_start_bottom\\acidified_zone_wind_a_start_bottom.str"); break; case EF_ACIDIFIED_ZONE_WIND_LOOP: particle->Load("acidified_zone_wind\\acidified_zone_wind_a_loop\\acidified_zone_wind_a_loop.str"); break; case EF_ACIDIFIED_ZONE_WIND_LOOP_BOTTOM: particle->Load("acidified_zone_wind\\acidified_zone_wind_a_loop_bottom\\acidified_zone_wind_a_loop_bottom.str"); break; case EF_ACIDIFIED_ZONE_GROUND_CAST: particle->Load("acidified_zone_ground\\acidified_zone_ground_cast\\acidified_zone_ground_cast.str"); break; case EF_ACIDIFIED_ZONE_GROUND_CAST_BOTTOM: particle->Load("acidified_zone_ground\\acidified_zone_ground_cast_bottom\\acidified_zone_ground_cast_bottom.str"); break; case EF_ACIDIFIED_ZONE_GROUND_HIT: particle->Load("acidified_zone_ground\\acidified_zone_ground_hit\\acidified_zone_ground_hit.str"); break; case EF_ACIDIFIED_ZONE_GROUND_START: particle->Load("acidified_zone_ground\\acidified_zone_ground_a_start\\acidified_zone_ground_a_start.str"); break; case EF_ACIDIFIED_ZONE_GROUND_START_BOTTOM: particle->Load("acidified_zone_ground\\acidified_zone_ground_a_start_bottom\\acidified_zone_ground_a_start_bottom.str"); break; case EF_ACIDIFIED_ZONE_GROUND_LOOP: particle->Load("acidified_zone_ground\\acidified_zone_ground_a_loop\\acidified_zone_ground_a_loop.str"); break; case EF_ACIDIFIED_ZONE_GROUND_LOOP_BOTTOM: particle->Load("acidified_zone_ground\\acidified_zone_ground_a_loop_bottom\\acidified_zone_ground_a_loop_bottom.str"); break; case EF_HELLTREE_CAST: particle->Load("helltree\\helltree_cast\\helltree_cast.str"); break; case EF_HELLTREE_CAST_BOTTOM: particle->Load("helltree\\helltree_cast_bottom\\helltree_cast_bottom.str"); break; case EF_HELLTREE_DUSTY: particle->Load("helltree\\hell_dusty\\hell_dusty.str"); break; case EF_HELLTREE_HOWLING: particle->Load("helltree\\hell_howling\\hell_howling.str"); break; case EF_RESEARCH_REPORT: particle->Load("research_report\\researchreport\\researchreport.str"); break; case EF_RESEARCH_REPORT_CAST: particle->Load("research_report\\researchreport_cast\\researchreport_cast.str"); break; case EF_RESEARCH_REPORT_CAST_BOTTOM: particle->Load("research_report\\researchreport_cast_bottom\\researchreport_cast_bottom.str"); break; case EF_WOODEN_WARRIOR_CAST: particle->Load("wooden_warrior\\wooden_warrior_cast\\wooden_warrior_cast.str"); break; case EF_WOODEN_WARRIOR_CAST_BOTTOM: particle->Load("wooden_warrior\\wooden_warrior_cast_bottom\\wooden_warrior_cast_bottom.str"); break; case EF_WOODEN_WARRIOR_ATTACK: particle->Load("wooden_warrior\\wooden_attack\\wooden_attack\\wooden_attack.str"); break; case EF_WOODEN_WARRIOR_ATTACK_HIT: particle->Load("wooden_warrior\\wooden_attack\\wooden_attack_hit\\wooden_attack_hit.str"); break; case EF_WOODEN_WARRIOR_THROWROCK: particle->Load("wooden_warrior\\throwrock\\throwrock\\throwrock.str"); break; case EF_WOODEN_WARRIOR_THROWROCK_HIT: particle->Load("wooden_warrior\\throwrock\\throwrock_hit\\throwrock_hit.str"); break; case EF_WOODEN_FAIRY_CAST: particle->Load("wooden_fairy\\wooden_cast\\wooden_cast.str"); break; case EF_WOODEN_FAIRY_CAST_BOTTOM: particle->Load("wooden_fairy\\wooden_cast_bottom\\wooden_cast_bottom.str"); break; case EF_WOODEN_FAIRY_DUSTY: particle->Load("wooden_fairy\\fairy_dusty\\fairy_dusty.str"); break; case EF_STATE_LASSITUDE: particle->Open("state_effect\\lassitude\\lassitude.str"); break; case EF_STATE_SWOONING: particle->Open("state_effect\\swooning\\swooning.str"); break; case EF_STATE_HOLYFLAME: particle->Open("state_effect\\holyflame\\holyflame.str"); break; case EF_STATE_LIGHTNINGSTRIKE: particle->Open("state_effect\\lightningstrike\\lightningstrike.str"); break; case EF_STATE_CONFLAGRATION: particle->Open("state_effect\\conflagration\\conflagration.str"); break; case EF_STATE_FROSTBITE: particle->Open("state_effect\\frostbite\\frostbite\\frostbite.str"); break; case EF_STATE_FROSTBITE_FINISH: particle->Open("state_effect\\frostbite\\frostbite_finish\\frostbite_finish.str"); break; case EF_STATE_DEADLYPOISON: particle->Open("state_effect\\deadlypoison\\deadlypoison.str"); break; case EF_STATE_CRYSTALLIZATION: particle->Open("state_effect\\crystallization\\crystallization.str"); break; case EF_NPC_KILLING_AURA: particle->Open("NPC_KILLING_AURA\\npc_killing_aura_bottom\\killing_aura.str"); break; case EF_NPC_KILLING_AURA_END: particle->Open("NPC_KILLING_AURA\\npc_killing_aura_bottom\\killing_aura_end.str"); break; case EF_NPC_KILLING_AURA_HIT: particle->Open("NPC_KILLING_AURA\\npc_killing_aura_hit\\killing_aura_hit.str"); break; case EF_NPC_CANE_OF_EVIL_EYE: particle->Open("NPC_CANE_OF_EVIL_EYE\\npc_cane_of_evil_eye_hit\\npc_cane_of_evil_eye_hit.str"); break; case EF_UI_ENCHANT_INTRO_YELLOW: particle->Open("ui_enchant\\ui_intro_yellow\\ui_intro_yellow.str"); break; case EF_UI_ENCHANT_SUCCESS: particle->Open("ui_enchant\\ui_enchant_success\\ui_enchant_success.str"); break; case EF_UI_ENCHANT_FAIL: particle->Open("ui_enchant\\ui_fail\\ui_enchant_fail.str"); break; case EF_UI_ENCHANT_INTRO_BLUE: particle->Open("ui_enchant\\ui_intro_blue\\ui_intro_blue.str"); break; case EF_UI_LEVELUP_SUCCESS: particle->Open("ui_enchant\\ui_levelup_success\\ui_levelup_success.str"); break; case EF_UI_LEVELUP_FAIL: particle->Open("ui_enchant\\ui_fail\\ui_levelup_fail.str"); break; case EF_UI_ENCHANT_INTRO_GREEN: particle->Open("ui_enchant\\ui_intro_green\\ui_intro_green.str"); break; case EF_UI_RESET_SUCCESS: particle->Open("ui_enchant\\ui_reset_success\\ui_reset_success.str"); break; case EF_UI_RESET_FAIL: particle->Open("ui_enchant\\ui_fail\\ui_reset_fail.str"); break; case EF_RUNE_ACTIVE_FINISH: particle->Open("runesystem\\rune_active\\ui_finish.str"); break; case EF_RUNESET_ACTIVE: particle->Open("runesystem\\runeset_active\\ui_activate.str"); break; case EF_RUNESET_UPGRADE_SUCCESS: particle->Open("runesystem\\runeset_upgrade_success\\rune_upgrade_succecss.str"); break; case EF_RUNESET_UPGRADE_FAIL: particle->Open("runesystem\\runeset_upgrade_fail\\rune_upgrade_fail.str"); break; case EF_RUNE_BROKEN: particle->Open("runesystem\\decom_broken\\ui_broken.str"); break; case EF_RUNE_SLOT_SMALL: particle->Open("runesystem\\rune_slot_small\\rune_slot_small.str"); break; case EF_RUNE_SLOT_BIG: particle->Open("runesystem\\rune_slot_big\\rune_slot_big.str"); break; case EF_TOXIN_OF_MANDARA_BOMB: particle->Open("toxin_of_mandara\\toxin_of_mandara_bomb\\toxin_of_mandara_bomb.str"); break; case EF_TOXIN_OF_MANDARA_BOMB_BOTTOM: particle->Open("toxin_of_mandara\\toxin_of_mandara_bomb_bottom\\toxin_of_mandara_bomb_bottom.str"); break; case EF_TOXIN_OF_MANDARA_SHOCK: particle->Open("toxin_of_mandara\\toxin_of_mandara_shock\\toxin_of_mandara_shock.str"); break; case EF_NEEDLE_STINGER: particle->Open("needle_stinger\\needle_stinger\\needle_stinger.str"); break; case EF_NEEDLE_STINGER_BOTTOM: particle->Open("needle_stinger\\needle_stinger_bottom\\needle_stinger_bottom.str"); break; case EF_NEEDLE_STINGER_HIT: particle->Open("needle_stinger\\needle_stinger_hit\\needle_stinger_hit.str"); break; case EF_ABSOLUTE_ZEPHYR: particle->Open("absolute_zephyr\\absolute_zephyr\\absolute_zephyr.str"); break; case EF_ABSOLUTE_ZEPHYR_BOTTOM: particle->Open("absolute_zephyr\\absolute_zephyr_bottom\\absolute_zephyr_bottom.str"); break; case EF_ABSOLUTE_ZEPHYR_HIT: particle->Open("absolute_zephyr\\absolute_zephyr_hit\\absolute_zephyr_hit.str"); break; case EF_TWISTER_CUTTER: particle->Open("twister_cutter\\twister_cutter\\twister_cutter.str"); break; case EF_TWISTER_CUTTER_HIT: particle->Open("twister_cutter\\twister_cutter_hit\\twister_cutter_hit.str"); break; case EF_HEILIGE_PFERD: particle->Open("heilige_pferd\\heilige_pferd\\heilige_pferd.str"); break; case EF_HEILIGE_PFERD_BOTTOM: particle->Open("heilige_pferd\\heilige_pferd_bottom\\heilige_pferd_bottom.str"); break; case EF_HEILIGE_PFERD_CAST: particle->Open("heilige_pferd\\heilige_pferd_cast\\heilige_pferd_cast.str"); break; case EF_GOLDENE_TONE: particle->Open("goldene_tone\\goldene_tone\\goldene_tone.str"); break; case EF_GLANZEN_SPIES: particle->Open("glanzen_spies\\glanzen_spies\\glanzen_spies.str"); break; case EF_GLANZEN_SPIES_HIT: particle->Open("glanzen_spies\\glanzen_spies_hit\\glanzen_spies_hit.str"); break; case EF_BLAZING_AND_FURIOUS: particle->Open("blazing_and_furious\\blazing_and_furious\\blazing_and_furious.str"); break; case EF_THE_ONE_FIGHTER_RISES_BOTTOM: particle->Open("the_one_fighter_rises\\the_one_fighter_rises_bottom\\the_one_fighter_rises_bottom.str"); break; case EF_TEMPERING: particle->Open("tempering\\tempering\\tempering.str"); break; case EF_BLAST_FORGE_HIT: particle->Open("blast_forge\\blast_forge_hit\\blast_forge_hit.str"); break; case EF_TETRA_VORTEX_WATER_SUB_2: particle->Open("tetravortex\\tetra_04_water_sub_explosion\\tetra_04_water_sub_expn.str"); break; case EF_TETRA_VORTEX_EARTH_SUB_2: particle->Open("tetravortex\\tetra_03_earth_sub_explosion\\tetra_03_earth_sub_expn.str"); break; case EF_NPC_20TH_CRYSTAL_S: particle->Open("npc_20th_crystal\\npc_20th_crystal_s.str"); break; case EF_NPC_20TH_CRYSTAL_M: particle->Open("npc_20th_crystal\\npc_20th_crystal_m.str"); break; case EF_NPC_20TH_CRYSTAL_L: particle->Open("npc_20th_crystal\\npc_20th_crystal_l.str"); break; case EF_NPC_GATE_GREEN_1: case EF_NPC_GATE_GREEN_2: case EF_NPC_GATE_GREEN_3: particle->Open("npc_gate\\npc_gate_green\\npc_gate_green.str"); break; case EF_NPC_GATE_PURPLE_1: case EF_NPC_GATE_PURPLE_2: case EF_NPC_GATE_PURPLE_3: particle->Open("npc_gate\\npc_gate_purple\\npc_gate_purple.str"); break; case EF_NPC_GATE_RED_1: case EF_NPC_GATE_RED_2: case EF_NPC_GATE_RED_3: particle->Open("npc_gate\\npc_gate_red\\npc_gate_red.str"); break; case EF_20TH_FIREWORK: particle->Open("20th_firework\\20th_firework.str"); break; case EF_NPC_GATE_SKYBLUE: particle->Open("npc_gate_skyblue\\npc_gate_skyblue\\npc_gate_skyblue.str"); break; case EF_NEW_BATTLE_W_HIT_2: particle->Open("new_battle_w\\new_battle_w_hit\\new_battle_w_hit.str"); break; case EF_NEW_PRAMEN_REUSE: particle->Open("new_pramen\\new_pramen\\new_pramen.str"); break; case EF_THE_W_PROTECTION_REUSE: particle->Open("the_w_protection\\the_w_protection\\the_w_protection.str"); break; case EF_ELEMENTAL_BUSTER_FIRE_REUSE: particle->Open("elemental_buster\\elemental_buster\\elemental_buster_fire\\elemental_buster_fire.str"); break; case EF_DESTRUCTIVE_HURRICANE_BOTTOM_REUSE: particle->Open("destructive_hurricane\\destructive_hurricane_bottom\\destructive_hurricane_bottom.str"); break; case EF_CRYSTAL_IMPACT_BOTTOM_REUSE: particle->Open("crystal_impact\\crystal_impact_bottom\\crystal_impact_bottom.str"); break; case EF_NEW_JUDEX_TARGET_REUSE: particle->Open("new_judex\\new_judex_target\\new_judex_target.str"); break; default: break; } if (id >= 0x9B5) { const char* name = nullptr; g_session.m_hotkeyScript->Call("GetHatEfResName", "d>s", id - 0x9B5, &name); if (name != nullptr) { particle->Open(name); } } } // OFFSET: 0x00B65EE0 // FUNCTION: fn_19044 void CEZ2STRScreenEffect::OnProcess() { if (this->followCamera == 1 && this->particle) { double yaw = static_cast(g_modeMgr.GetGameMode())->camera->camera.yaw; if (yaw != this->cameraAngle) { CEZ2STRParticle* particle = this->particle; double angle = this->cameraAngle - yaw + particle->m_angle; if (angle < 0.0) { angle += 360.0; } else if (angle > 360.0) { angle -= 360.0; } particle->m_angle = static_cast(angle); this->cameraAngle = yaw; } } CEZ2STRParticle* target = this->particle; target->position.x = this->position[0]; target->position.y = this->position[1]; target->position.z = this->position[2]; if (CEZ2STRParticle* particle = this->particle) { if (this->ApplyHeadOffset(particle) || this->id == 0x584) { particle->Process(0.0f, 0.0f, 0.0f); } else { particle->Process(0.0f, -80.0f, 0.0f); } } ++this->particle->elapsedFrames; if (this->id == 0x851) { int frame = this->particle->elapsedFrames - 30; if (frame >= 0 && frame % 64 == 0) { CRenderObject* player = reinterpret_cast(static_cast(g_modeMgr.GetGameMode())->scene->player); g_soundMgr->PlayWave( "effect\\ABC_ABYSS_SQUARE.wav", player->render.position.x - this->position[0], 0.0f, player->render.position.z - this->position[2], 250, 40, 1.0f, 0 ); } } CGameActor* actor = static_cast(FindRenderObject(this->actor)); if (!actor) { return; } if (this->jobScaled == 1 && actor->GetMonsterTransformJob() <= 0) { float factor = GetSkillFactor(actor->GetEffectiveJob(-1)); if (this->fadePulse == 1) { actor->ScaleByFadePulse(factor); } CEZ2STRParticle* particle = this->particle; float extent[2]; const float* shift = actor->GetExtent(extent); float shiftX = factor * shift[0]; float shiftY = factor * shift[1]; particle->m_shiftX = shiftX; particle->m_shiftY = shiftY; } this->particle->m_lift = *reinterpret_cast(&actor->render.hoverOffsetLow); } // OFFSET: 0x00B661B0 // FUNCTION: fn_19045 void CEZ2STRScreenEffect::Render() { CEZ2STRParticle* particle = this->particle; if (!particle) { return; } switch (this->id) { case EF_GRADE_ENCHANT_INTRO: case EF_UI_ENCHANT_INTRO_YELLOW: case EF_UI_ENCHANT_SUCCESS: case EF_UI_ENCHANT_FAIL: case EF_UI_ENCHANT_INTRO_BLUE: case EF_UI_LEVELUP_SUCCESS: case EF_UI_ENCHANT_INTRO_GREEN: case EF_UI_RESET_SUCCESS: case EF_UI_RESET_FAIL: this->overlayColor += 0x2000000; break; case EF_RUNE_ACTIVE_FINISH: case EF_RUNESET_ACTIVE: case EF_RUNE_BROKEN: this->overlayColor += 0x10000000; break; default: goto draw; } if (this->overlayColor >= 0xAA000000u) { this->overlayColor = 0xAA000000u; } DrawBlendedRectangle(0, 0, g_renderer->viewport.width, g_renderer->viewport.height, this->overlayColor); draw: particle->DrawScreen(static_cast(g_modeMgr.GetGameMode())->camera->frame.view); } // OFFSET: 0x00B66460 // FUNCTION: fn_19046 void CEZ2STRScreenEffect::SetRenderFunc(int argument) { this->particle->submit = reinterpret_cast(argument); } // OFFSET: 0x00B66480 // FUNCTION: fn_19047 void CEZ2STRScreenEffect::SetAlpha(float argument) { if (this->particle) { this->particle->m_alpha = argument; } } // OFFSET: 0x00B664A0 // FUNCTION: fn_19048 void CEZ2STRScreenEffect::SetId(int id) { CEffect::SetId(id); switch (id) { case EF_HAT_EFFECT: case EF_MOONSTAR: case EF_STRANGELIGHTS: case EF_SUPER_STAR: case EF_C_MAKER_1: case EF_MUSIC_HAT: case EF_FLOWERSMOKE: case EF_FSTONE: case EF_QSCARABA: case EF_LJOSALFAR: case EF_HAPPINESSSTAR: case EF_MAPLE_FALLS: case EF_MAGICAL_FEATHER: case EF_MERMAID_LONGING: case EF_GIFT_OF_SNOW: case EF_TIME_ACCESSORY: this->headAttached = 1; break; default: if (id >= 0x9B5) { this->headAttached = 1; } break; } } // OFFSET: 0x00B66540 // FUNCTION: fn_19049 void CEZ2STRScreenEffect::SetWindowOffset(int argument1, int argument2, int argument3, int argument4, int argument5) { CEZ2STRParticle* particle = this->particle; if (!particle) { return; } const vector3d offset = *reinterpret_cast(&argument1); particle->m_windowOffset.x = offset.x; particle->m_windowOffset.y = offset.y; particle->m_windowOffset.z = offset.z; if (static_cast(argument4) == 1) { this->particle->m_attachToWindow = true; this->particle->m_windowId = argument5; } } // OFFSET: 0x00B665B0 // FUNCTION: fn_19050 void CEZ2STRScreenEffect::SetFlags(int argument) { this->particle->flags = argument; } // OFFSET: 0x00B665D0 // FUNCTION: fn_19051 void CEZ2STRScreenEffect::SetRepeat(int argument) { if (this->particle) { this->particle->m_repeat = argument - 1; } } // OFFSET: 0x00B665F0 // FUNCTION: fn_19052 void CEZ2STRScreenEffect::SetLifeTime(int argument) { if (this->particle) { this->particle->m_lifeTime = argument; } } // OFFSET: 0x00B66610 // FUNCTION: fn_19053 void CEZ2STRScreenEffect::SetAngle(float argument) { if (this->particle) { this->particle->m_angle = argument; } } // OFFSET: 0x00B66630 // FUNCTION: fn_19054 void CEZ2STRScreenEffect::SetScale(float argument) { if (this->particle) { this->particle->m_scale = argument; } } // OFFSET: 0x00B66650 // FUNCTION: fn_19055 void CEZ2STRScreenEffect::AdvanceFrame(int argument) { if (this->particle) { this->particle->Advance(*reinterpret_cast(&argument)); } } // OFFSET: 0x00B66680 // FUNCTION: fn_19056 void CEZ2STRScreenEffect::SetDelay(int argument) { if (this->particle) { this->particle->m_delay = argument; } } // OFFSET: 0x00B666A0 // FUNCTION: fn_19057 void CEZ2STRScreenEffect::SetResource(int argument) { this->name = reinterpret_cast(argument); FreeParticle(this->particle); this->Open(); } // OFFSET: 0x00B52970 // FUNCTION: fn_19038 int CEZ2STRScreenEffect::GetFrame() { return this->particle->m_frame; } // OFFSET: 0x00B52980 // FUNCTION: fn_19039 void CEZ2STRScreenEffect::Open() { CEZ2STRParticle* particle = static_cast( CreateEZ2STRParticle(reinterpret_cast(this->position), 5) ); if (!particle) { return; } particle->m_actorId = this->actor; if (this->headAttached == 1) { this->retained = 1; particle->m_loop = true; bool adjustSize = false; g_session.m_hotkeyScript->Call("IsAdjustSizeWhenShrinkState", "d>b", this->id - 0x9B5, &adjustSize); particle->m_followActor = adjustSize; bool adjustPosition = false; g_session.m_hotkeyScript->Call("IsAdjustPositionWhenShrinkState", "d>b", this->id - 0x9B5, &adjustPosition); this->fadePulse = adjustPosition; } switch (this->id) { case EF_RED_CROSS: case EF_MARKING_USE_CHANGEMONSTER: case EF_BITE_SCAR: case EF_RL_ANTI_MATERIAL_BLAST: case EF_H_MINE: case EF_FLASH_KICK: case EF_TEST_EFFECT_00: case EF_TEST_EFFECT_01: case EF_TEST_EFFECT_02: case EF_TEST_EFFECT_03: case EF_TEST_EFFECT_04: case EF_TEST_EFFECT_05: case EF_TEST_EFFECT_06: case EF_TEST_EFFECT_07: case EF_TEST_EFFECT_08: case EF_TEST_EFFECT_09: case EF_TETRA_VORTEX_BALL_1: case EF_TETRA_VORTEX_BALL_2: case EF_TETRA_VORTEX_BALL_3: case EF_TETRA_VORTEX_BALL_4: particle->m_loop = true; break; case EF_QSCARABA_VISUAL: case EF_NEW_RANGEDATTACK: case EF_NEW_JACKFROST_CAST: case EF_MINEFFECT_JACKFROST_CAST: case EF_TETRA_VORTEX_CORE_REUSE: case EF_BLUE_WAVE_1: case EF_BLUE_WAVE_2: case EF_BLUE_WAVE_3: case EF_RED_WAVE_1: case EF_RED_WAVE_2: case EF_RED_WAVE_3: case EF_NEW_EPICLESIS: case EF_SERVANT_SIGN: case EF_DRAGONIC_AURA_BUFF: case EF_DRAGONIC_AURA_BUFF_BOTTOM: case EF_DEADLY_PROJECTION: case EF_VIGOR_BUFF: case EF_MYSTERY_ILLUSION: case EF_TORNADO_STORM_BOTTOM: case EF_VIOLENT_QUAKE_BOTTOM: case EF_ALL_BLOOM: case EF_ALL_BLOOM_BOTTOM: case EF_MEDIALE_VOTUM_LOOP: case EF_NEW_D_MACHINE: case EF_UNK_1839: case EF_COMPETENTIA_LOOP: case EF_COMPETENTIA_LOOP_BOTTOM: case EF_DEEP_BLIND_TRAP: case EF_SWIFT_TRAP: case EF_SOLID_TRAP: case EF_STRATUM_TREMOR: case EF_STRATUM_TREMOR_BOTTOM: case EF_WIND_SIGN_LOOP: case EF_FLAME_TRAP: case EF_CALUMITYGALE_LOOP: case EF_FIRST_FAITH_POWER: case EF_JUDGE: case EF_JUDGE_AURA: case EF_THIRD_EXOR_FLAME: case EF_THIRD_EXOR_FLAME_AURA: case EF_OLEUM_SANCTUM_LOOP: case EF_MYSTICSYMPHONY_NOTE: case EF_VENOM_SWAMP_BOTTOM: case EF_LIGHTNING_LAND: case EF_LIGHTNING_LAND_BOTTOM: case EF_FIRST_BRAND: case EF_FIRST_BRAND_AURA: case EF_CONFLAGRATION: case EF_CONFLAGRATION_BOTTOM: case EF_SOUND_BLEND: case EF_SECOND_FAITH: case EF_SECOND_FAITH_AURA: case EF_ABYSS_SLAYER: case EF_ABYSS_SQUARE: case EF_ABYSS_SQUARE_BOTTOM: case EF_CROSS_RAIN_BOTTOM: case EF_GRAND_JUDGEMENT_BUFF: case EF_HOLY_SHIELD_LOOP: case EF_ACIDIFIED_ZONE_FIRE_LOOP: case EF_ACIDIFIED_ZONE_FIRE_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_WATER_LOOP: case EF_ACIDIFIED_ZONE_WATER_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_WIND_LOOP: case EF_ACIDIFIED_ZONE_WIND_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_GROUND_LOOP: case EF_ACIDIFIED_ZONE_GROUND_LOOP_BOTTOM: case EF_STATE_LIGHTNINGSTRIKE: case EF_STATE_CONFLAGRATION: case EF_STATE_FROSTBITE: case EF_STATE_CRYSTALLIZATION: case EF_SERVANT_SIGN_BOTTOM: case EF_NPC_KILLING_AURA: case EF_NPC_20TH_CRYSTAL_S: case EF_NPC_20TH_CRYSTAL_M: case EF_NPC_20TH_CRYSTAL_L: case EF_NPC_GATE_GREEN_1: case EF_NPC_GATE_PURPLE_1: case EF_NPC_GATE_RED_1: case EF_NPC_GATE_GREEN_2: case EF_NPC_GATE_PURPLE_2: case EF_NPC_GATE_RED_2: case EF_NPC_GATE_GREEN_3: case EF_NPC_GATE_PURPLE_3: case EF_NPC_GATE_RED_3: case EF_NPC_GATE_SKYBLUE: case EF_NEW_BATTLE_W_HIT_2: this->retained = 1; particle->m_loop = true; break; case EF_MYSTERY_ILLUSION_BOTTOM: this->AddEvent(0, "effect\\AG_MYSTERY_ILLUSION.wav", 0, 0); this->retained = 1; particle->m_loop = true; break; case EF_TORNADO_STORM: this->AddEvent(0, "effect\\AG_TORNADO_STORM.wav", 0, 0); this->retained = 1; particle->m_loop = true; break; case EF_MEDIALE_VOTUM: this->AddEvent(0, "effect\\CD_MEDIALE_VOTUM.wav", 0, 0); break; default: break; } if (this->instanceId > 0) { particle->m_loop = true; } particle->InitParticleQuad(particle->vertices); this->particle = particle; this->InitParticle(particle, this->id); CGameMode* mode = static_cast(g_modeMgr.GetGameMode()); this->cameraAngle = static_cast(mode->camera->camera.yaw); if (this->id >= 0x9B5) { g_session.m_hotkeyScript->Call("IsAttachedToHead", "d>b", this->id - 0x9B5, &this->jobScaled); } } // OFFSET: 0x00B531E0 // FUNCTION: fn_19040 void CEZ2STRScreenEffect::InitEvents() { const int id = this->id; switch (id) { case EF_POTION1: case EF_POTION2: case EF_POTION3: case EF_POTION4: case EF_POTION7: this->AddEvent(0, "_heal_effect.wav", 0, 0); break; case EF_POTION5: case EF_POTION6: case EF_POTION8: this->AddEvent(0, "effect\\흡기.wav", 0, 0); break; case EF_HAMMER_OF_GOD: this->AddEvent(0, "effect\\RL_HAMMER_OF_GOD.wav", 0, 0); break; case EF_SU_TUNABELLY: this->AddEvent(0, "effect\\su_tunabelly.wav", 0, 0); break; case EF_SU_SV_STEMSPEAR: this->AddEvent(0, "effect\\su_stemspear.wav", 0, 0); break; case EF_SU_SCRATCH: this->AddEvent(0, "effect\\su_scratch.wav", 0, 0); break; case EF_SU_SCAROFTAROU: this->AddEvent(0, "effect\\su_scaroftarou.wav", 0, 0); break; case EF_SU_PICKYPECK: this->AddEvent(0, "effect\\su_pickypeck.wav", 0, 0); break; case EF_SU_BUNCHOFSHRIMP: this->AddEvent(0, "effect\\su_brunchofshrimp.wav", 0, 0); break; case EF_SU_GROOMING: this->AddEvent(0, "effect\\su_grooming.wav", 0, 0); break; case EF_SU_CHATTERING: this->AddEvent(0, "effect\\su_chattering.wav", 0, 0); break; case EF_SU_HISS: this->AddEvent(0, "effect\\su_hiss.wav", 0, 0); break; case EF_SU_POWEROFFLOCK: this->AddEvent(0, "effect\\su_powerofflock.wav", 0, 0); break; case EF_SU_SVG_SPIRIT: this->AddEvent(0, "effect\\su_svg_spirit.wav", 0, 0); break; case EF_QUAGMIRE_VISUAL: { int random = rand() % 12; if (random < 0) { random = 0; } if (random == 0) { this->AddEvent(0, "effect\\wizard_quagmire.wav", 0, std::bit_cast(-100.0f)); } break; } case EF_LORD_OF_VERMILLION_VISUAL: this->AddEvent(0, "effect\\wizard_meteo.wav", 0, 0); this->AddEvent(0, "effect\\hunter_blastmine.wav", 0, 0); this->AddEvent(0, "effect\\hunter_blastmine.wav", 0xa, 0); this->AddEvent(0, "effect\\wizard_meteo.wav", 0x14, 0); this->AddEvent(0, "effect\\wizard_meteo.wav", 0x32, 0); this->AddEvent(0, "effect\\wizard_meteo.wav", 0x50, 0); this->AddEvent(0, "effect\\wizard_meteo.wav", 0x64, 0); this->AddEvent(0, "effect\\wizard_meteo.wav", 0x82, 0); this->AddEvent(0, "effect\\wizard_meteo.wav", 0x8c, 0); this->AddEvent(0, "effect\\wizard_meteo.wav", 0xb4, 0); this->AddEvent(0, "effect\\wizard_meteo.wav", 0xc8, 0); this->AddEvent(1, nullptr, 0x32, 0); this->AddEvent(1, nullptr, 0x64, 0); this->AddEvent(1, nullptr, 0x96, 0); this->AddEvent(1, nullptr, 0xc8, 0); this->AddEvent(1, nullptr, 0xfa, 0); break; case EF_METEOR_STORM_VISUAL: this->AddEvent(0, "effect\\wizard_meteor.wav", 0, 0); this->AddEvent(1, nullptr, 0x28, 0); break; case EF_NEW_CART_CANNON_CAST_BOTTOM: case EF_NEW_RAYOFGENESIS_CAST_BOTTOM: case EF_MINEFFECT_CART_CANNON_CAST_BOTTOM: case EF_NEW_HELLINFERNO_CAST_BOTTOM: case EF_DESTRUCTIVE_HURRICANE_CAST_BOTTOM: case EF_ROCKDOWN_CAST_BOTTOM: case EF_VIOLENT_QUAKE_CAST_BOTTOM: case EF_MYSTERY_ILLUSION_CAST_BOTTOM: case EF_TORNADO_STORM_CAST_BOTTOM: case EF_ALL_BLOOM_CAST_BOTTOM: case EF_CLIMAX_CAST: case EF_CRYSTAL_IMPACT_CAST: case EF_STRATUM_TREMOR_CAST_BOTTOM: case EF_DILUVIO_CAST_BOTTOM: case EF_VENOM_SWAMP_CAST_BOTTOM: case EF_LIGHTNING_LAND_CAST_BOTTOM: case EF_ELEMENTAL_BUSTER_CAST: this->AddEvent(0, "effect\\EF_BeginSpell.wav", 0, 0); this->particle->flags = 13; break; case EF_NEW_AXETORNADO_BOTTOM: case EF_MINEFFECT_AXETORNADO_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "ice_titan_attack.wav", 5, 0); break; case EF_NEW_FATAL_MENACE_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\EF_Bash.wav", 0, 0); this->AddEvent(0, "effect\\rog_intimidate.wav", 0x23, 0); break; case EF_NEW_CANNON_SPEAR_BOTTOM: case EF_MINEFFECT_CANNON_SPEAR_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\EF_hit2.wav", 0xa, 0); this->AddEvent(0, "effect\\EF_hit4.wav", 0x14, 0); break; case EF_NEW_CRITICALATTACK: this->AddEvent(0, "effect\\EF_hit2.wav", 0, 0); break; case EF_NEW_RAYOFGENESIS: this->AddEvent(0, "effect\\mon_맹룡과강.wav", 5, 0); this->AddEvent(0, "effect\\mon_맹룡과강.wav", 5, 0); this->AddEvent(0, "effect\\mon_맹룡과강.wav", 5, 0); break; case EF_NEW_COMET: case EF_MINEFFECT_COMET: this->AddEvent(0, "effect\\g크레이지위드.wav", 0, 0); break; case EF_NEW_POISONSMOKE_1: case EF_NEW_POISONSMOKE_2: case EF_BLUE_WAVE_1: case EF_BLUE_WAVE_2: case EF_BLUE_WAVE_3: case EF_RED_WAVE_1: case EF_RED_WAVE_2: case EF_RED_WAVE_3: this->particle->flags = 5; break; case EF_NEW_FEARBREEZE: this->AddEvent(0, "effect\\EF_Bash.wav", 0, 0); break; case EF_NEW_HELLINFERNO: this->AddEvent(0, "hell_in.wav", 0, 0); break; case EF_NEW_CLEARANCE: this->AddEvent(0, "effect\\샤프슈팅.wav", 0, 0); this->AddEvent(0, "effect\\흡기.wav", 0, 0); break; case EF_NEW_VARETYRSPEAR: this->AddEvent(0, "effect\\프레셔.wav", 3, 0); this->AddEvent(0, "effect\\S바레티르스피어.wav", 0x16, 0); this->AddEvent(1, nullptr, 0x16, 0); break; case EF_NEW_CROSSIMPACT: this->AddEvent(0, "effect\\EF_StoneCurse.wav", 0, 0); break; case EF_NEW_SOULEXPANSION_HIT_BOTTOM: this->AddEvent(0, "effect\\매직 크래쉬.wav", 0, 0); this->particle->flags = 13; break; case EF_GRADE_ENCHANT_INTRO: case EF_GRADE_ENCHANT_SUCCESS: case EF_UI_ENCHANT_INTRO_YELLOW: case EF_UI_ENCHANT_SUCCESS: case EF_UI_ENCHANT_INTRO_BLUE: case EF_UI_LEVELUP_SUCCESS: case EF_UI_ENCHANT_INTRO_GREEN: case EF_UI_RESET_SUCCESS: case EF_RUNE_ACTIVE_FINISH: case EF_RUNESET_ACTIVE: case EF_RUNESET_UPGRADE_SUCCESS: case EF_RUNESET_UPGRADE_FAIL: case EF_RUNE_BROKEN: case EF_RUNE_SLOT_SMALL: case EF_RUNE_SLOT_BIG: this->particle->flags = 517; break; case EF_GRADE_ENCHANT_FAILED: this->particle->flags = 517; this->AddEvent(1, nullptr, 0xb4, 0); break; case EF_NEW_CHAINLIGHTNING_TARGET: this->AddEvent(0, "chainlight.wav", 0, 0); break; case EF_NEW_SOUNDOFDESTRUCTION_TARGET: this->AddEvent(0, "effect\\priest_lexaeterna.wav", 0, 0); break; case EF_NEW_AIMEDBOLT_CAST_BOTTOM: case EF_DEADLY_PROJECTION_CAST_BOTTOM: case EF_SOUL_VC_STRIKE_CAST_BOTTOM: case EF_RAIN_OF_CRYSTAL_BOTTOM: case EF_CRIMSON_ARROW_CAST_BOTTOM: case EF_ASTRAL_STRIKE_CAST_BOTTOM: case EF_FROZEN_SLASH_CAST_BOTTOM: case EF_FLORAL_FLARE_ROAD_CAST_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\EF_BeginSpell.wav", 0, 0); break; case EF_NEW_EPICLESIS: this->AddEvent(0, "effect\\EF_GlassWall.wav", 0x1e, 0); break; case EF_HACKANDSLASH_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\DK_HACKANDSLASHER.wav", 0, 0); break; case EF_NEW_WINDCUTTER: this->AddEvent(0, "effect\\wl_siennaexecrate.wav", 0, 0); break; case EF_NEW_POWERSWING_BOTTOM: case EF_NEW_RUSH_QUAKE_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\wizard_fire_pillar_b.wav", 0xf, 0); this->AddEvent(1, nullptr, 0x14, 0); break; case EF_NEW_EARTHDRIVE: this->AddEvent(0, "effect\\wizard_earthspike.wav", 0x14, 0); this->AddEvent(1, nullptr, 0x14, 0); break; case EF_SERVANT_SIGN_DOWN_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\DK_SERVANT_W_SIGN.wav", 0x28, 0); break; case EF_SERVANT_PHANTOM_HIT: this->AddEvent(0, "effect\\DK_SERVANT_W_PHANTOM.wav", 0, 0); break; case EF_DRAGONIC_AURA: this->AddEvent(0, "effect\\DK_DRAGONIC_AURA1.wav", 0, 0); break; case EF_DRAGONIC_AURA_HIT: this->AddEvent(0, "effect\\DK_DRAGONIC_AURA2.wav", 1, 0); break; case EF_MADNESS_CRUSHER: this->AddEvent(0, "effect\\DK_MADNESS_CRUSHER.wav", 1, 0); break; case EF_DESTRUCTIVE_HURRICANE: this->AddEvent(0, "effect\\AG_DESTRUCTIVE_HURRICANE.wav", 0, 0); break; case EF_DEADLY_PROJECTION_HIT: { CGameActor* actor = static_cast(FindRenderObject(this->actor)); if (actor && actor->bodyState == 0 && actor->effectState == 0) { this->AddEvent(0, "effect\\AG_DEADLY_PROJECTION.wav", 0, 0); } break; } case EF_ROCKDOWN: this->AddEvent(0, "effect\\AG_ROCK_DOWN.wav", 0, 0); break; case EF_NEW_CHARGINGPIERCE_HIT: this->AddEvent(0, "effect\\DK_CHARGINGPIERCE1.wav", 0, 0); break; case EF_FROZEN_SLASH: this->AddEvent(0, "effect\\AG_FROZEN_SLASH.wav", 0, 0); break; case EF_VIGOR_CAST: this->AddEvent(0, "effect\\DK_VIGOR.wav", 0, 0); break; case EF_SERVANT_DEMOLITION_HIT: this->AddEvent(0, "effect\\DK_SERVANT_W_DEMOL.wav", 0, 0); break; case EF_STORMSLASH_1: case EF_STORMSLASH_2: case EF_STORMSLASH_3: case EF_STORMSLASH_4: case EF_STORMSLASH_5: for (int i = 0; i <= id - 0x686; ++i) { this->AddEvent(0, FormatOwnedString("effect\\DK_STORMSLASH%d.wav", rand() % 4 + 1).c_str(), i * 15, 0); } break; case EF_ABR_MOTHER_01: this->particle->flags = 13; this->AddEvent(0, "effect\\MT_ABR_NET_REPAIR.wav", 0, 0); break; case EF_ABR_MOTHER_02: this->particle->flags = 13; this->AddEvent(0, "effect\\MT_ABR_NET_SUPPORT.wav", 0, 0); break; case EF_NEW_D_MACHINE_START: this->AddEvent(0, "effect\\MT_D_MACHINE.wav", 0, 0); this->particle->flags = 13; break; case EF_NEW_AXE_STOMP_BOTTOM: this->particle->flags = 13; this->AddEvent(1, nullptr, 0x14, 0); break; case EF_SECOND_FLAME_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\wizard_fire_pillar_b.wav", 0xf, 0); this->AddEvent(1, nullptr, 0x28, 0); break; case EF_ARBITRIUM_BOTTOM: this->AddEvent(0, "effect\\CD_ARBITRIUM.wav", 0, 0); this->particle->flags = 13; break; case EF_NEW_DILECTIO_HEAL_TARGET_BOTTOM: this->AddEvent(0, "effect\\CD_DILECTIO_HEAL.wav", 0, 0); this->particle->flags = 13; break; case EF_COMPETENTIA_BOTTOM: this->AddEvent(0, "effect\\CD_COMPETENTIA.wav", 0, 0); this->particle->flags = 13; break; case EF_CRYSTAL_IMPACT: this->AddEvent(0, "effect\\AG_CRYSTAL_IMPACT.wav", 0, 0); break; case EF_CALUMITYGALE_CAST: case EF_INCREASING_ACTIVITY_CAST_BOTTOM: case EF_ACTIVITY_BURN_CAST_BOTTOM: case EF_SERPENS_CAST_BOTTOM: case EF_ARDOR_CAST_BOTTOM: case EF_PROCELLA_CAST_BOTTOM: case EF_TERREMOTUS_CAST_BOTTOM: case EF_TERRA_DRIVE_CAST_BOTTOM: case EF_GUARD_STANCE_CAST_BOTTOM: case EF_ATTACK_STANCE_CAST_BOTTOM: case EF_GRAND_JUDGEMENT_CAST_BOTTOM: case EF_HELLTREE_CAST_BOTTOM: case EF_WOODEN_WARRIOR_CAST_BOTTOM: case EF_WOODEN_FAIRY_CAST_BOTTOM: this->particle->flags = 13; [[fallthrough]]; case EF_NEW_GATEOFHELL_CAST: case EF_NEW_HOWLINGOFLION_CAST: case EF_NEW_METALLICSOUND: case EF_NEW_SOULEXPANSION_CAST: case EF_NEW_WALLOFTHORN_CAST: case EF_NEW_JUDEX_CAST_LOOP: case EF_NEW_CHAINLIGHTNING_CAST: case EF_NEW_MANDRAGORA_CAST: case EF_NEW_SOUNDOFDESTRUCTION_CAST: case EF_NEW_SPELLFIST_FIRE: case EF_NEW_SPELLFIST_WATER: case EF_NEW_SPELLFIST_WIND: case EF_MEDIALE_VOTUM_CAST: case EF_ARGUTUS_VITA_CAST: case EF_ARGUTUS_TELUM_CAST: case EF_PRESENS_ACIES_CAST: case EF_ARBITRIUM_CAST: case EF_DANCING_KNIFE_CAST: case EF_RELIGIO_CAST: case EF_NEW_ENCHANTING_SHADOW: case EF_SHADOW_EXCEED_CAST: case EF_SOLID_TRAP_CAST: case EF_BENEDICTUM_CAST: case EF_NEW_DILECTIO_HEAL_CAST: case EF_CRESCIVEBOLT_CAST: case EF_PNEUMATICUS_PROCELLA_CAST: case EF_HAWK_BOOMERANG_CAST: case EF_GALE_STORM_CAST: case EF_FIRST_FAITH_POWER_CAST: case EF_JUDGE_CAST: case EF_THIRD_EXOR_FLAME_CAST: case EF_OVERSLASH_CAST: case EF_CROSS_RAIN_CAST: case EF_HOLY_SHIELD_CAST: case EF_SHIELD_SHOOTING_CAST: case EF_JUDGEMENT_CROSS_CAST: case EF_REBOUND_SHIELD_CAST: this->AddEvent(0, "effect\\EF_BeginSpell.wav", 0, 0); break; case EF_MASSIVE_FLAME_BLASTER: this->AddEvent(0, "effect\\IQ_MASSIVE_F_BLASTER.wav", 0, 0); this->particle->flags = 13; break; case EF_THIRD_FLAME_BOMB_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\IQ_THIRD_FLAME_BOMB.wav", 0, 0); break; case EF_THIRD_PUNISH_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\IQ_THIRD_PUNISH.wav", 0, 0); break; case EF_KVASIRSONATA_CAST_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\TR_KVASIR_SONATA.wav", 0, 0); break; case EF_STRATUM_TREMOR: this->AddEvent(0, "effect\\AG_STRANTUM_TREMOR1.wav", 0, 0); [[fallthrough]]; case EF_STRATUM_TREMOR_BOTTOM: this->particle->flags = 13; switch (this->effectLevel) { case 1: this->SetScale(0.7f); break; case 2: case 3: case 4: case 5: this->SetScale(1.25f); break; } break; case EF_SHADOW_STAB: { float fromReciprocalDepth = 0.0f; float toReciprocalDepth = 0.0f; float fromX; float fromY; float toX; float toY; g_renderer->ProjectViewport(this->position, static_cast(g_modeMgr.GetGameMode())->camera->frame.view.values, &fromX, &fromY, &fromReciprocalDepth); g_renderer->ProjectViewport(this->sourcePosition, static_cast(g_modeMgr.GetGameMode())->camera->frame.view.values, &toX, &toY, &toReciprocalDepth); const float dx = toX - fromX; const float dy = toY - fromY; double angle = static_cast(std::acos(static_cast(dx / SquareRoot(dy * dy + dx * dx)))) / 3.141592f * 180.0f; if (fromY > toY) { angle = 360.0 - angle; } if (this->particle) { this->particle->m_angle = static_cast(angle); } break; } case EF_SINCERE_FAITH: this->particle->flags = 13; [[fallthrough]]; case EF_POWERFUL_FAITH: case EF_FIRM_FAITH: this->AddEvent(0, "effect\\IQ_FAITH.wav", 0, 0); break; case EF_INCREASING_ACTIVITY: this->particle->m_repeat = 2; this->AddEvent(0, "effect\\EM_INCREASING_ACTIVITY.wav", 0, 0); break; case EF_CHAIN_REACTION_SHOT: { float fromReciprocalDepth = 0.0f; float toReciprocalDepth = 0.0f; float fromX; float fromY; float toX; float toY; g_renderer->ProjectViewport(this->position, static_cast(g_modeMgr.GetGameMode())->camera->frame.view.values, &fromX, &fromY, &fromReciprocalDepth); g_renderer->ProjectViewport(this->sourcePosition, static_cast(g_modeMgr.GetGameMode())->camera->frame.view.values, &toX, &toY, &toReciprocalDepth); const float dx = toX - fromX; const float dy = toY - fromY; double angle = static_cast(std::acos(static_cast(-dx / SquareRoot(dy * dy + dx * dx)))) / 3.141592f * 180.0f; if (toY > fromY) { angle = 360.0 - angle; } if (this->particle) { this->particle->m_angle = static_cast(angle); } break; } case EF_MYSTICSYMPHONY_CAST: this->particle->flags = 13; [[fallthrough]]; case EF_KVASIRSONATA_CAST: case EF_CHAIN_REACTION_SHOT_CAST: case EF_ROSEBLOSSOM_CAST: case EF_SOUND_BLEND_CAST: case EF_JAWAII_SERENADE_CAST: case EF_PRONMARCH_CAST: case EF_RHYTHMSHOOTING_CAST: case EF_NIFLHEIM_CAST: case EF_ABYSS_STRIKE_CAST: case EF_GEF_NOCTURN_CAST: case EF_ROKI_CAPRICCIO_CAST: case EF_MUSICAL_INTERLUDE_CAST: case EF_AIN_RHAPSODY_CAST: case EF_ABYSS_SLAYER_CAST: case EF_UNLUCKY_RUSH_CAST: case EF_ADVANCED_PROTECTION_CAST: case EF_THE_W_PROTECTION_CAST: case EF_ACIDIFIED_ZONE_FIRE_CAST: case EF_ACIDIFIED_ZONE_WATER_CAST: case EF_ACIDIFIED_ZONE_WIND_CAST: case EF_ACIDIFIED_ZONE_GROUND_CAST: case EF_RESEARCH_REPORT_CAST: this->AddEvent(0, "effect\\ef_beginspell.wav", 0, 0); break; case EF_SERPENS_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\EM_SUMMON_ELEMENTAL_SERPENS_2.wav", 0, 0); break; case EF_RELIGIO: this->AddEvent(0, "effect\\CD_RELIGIO.wav", 0, 0); break; case EF_BENEDICTUM: this->AddEvent(0, "effect\\CD_BENEDICTUM.wav", 0, 0); break; case EF_ARGUTUS_VITA: case EF_ARGUTUS_TELUM: this->AddEvent(0, "effect\\CD_ARGUTUS_VITA.wav", 0, 0); break; case EF_EFFLIGO_BOTTOM: this->AddEvent(0, "effect\\CD_EFFLIGO.wav", 0, 0); break; case EF_PRESENS_ACIES: this->AddEvent(0, "effect\\CD_PRESENS_ACIES.wav", 0, 0); break; case EF_NEW_PRAMEN_BOTTOM: this->AddEvent(0, "effect\\CD_FRAMEN.wav", 0, 0); break; case EF_DILUVIO_ICE: this->AddEvent(0, "effect\\EM_SUMMON_ELEMENTAL_DILUVIO_2.wav", 0, 0); break; case EF_DIAMOND_STORM_BOTTOM: { CEZ2STRParticle* particle = this->particle; particle->life = EffectLifetime(EF_DIAMOND_STORM_BOTTOM) / 60.0f; this->particle->flags = 13; this->AddEvent(0, "effect\\EM_DIAMOND_STORM.wav", 0, 0); break; } case EF_DIAMOND_STORM_CAST_BOTTOM: case EF_CONFLAGRATION_CAST_BOTTOM: this->AddEvent(0, "effect\\ef_beginspell.wav", 0, 0); this->particle->flags = 13; break; case EF_VENOM_SWAMP_BOTTOM: this->particle->flags = 13; this->AddEvent(0, "effect\\EM_VENOM_SWAMP.wav", 0, 0); break; case EF_ARDOR: this->AddEvent(0, "effect\\EM_SUMMON_ELEMENTAL_ARDOR_2.wav", 0, 0); break; case EF_LIGHTNING_LAND: this->AddEvent(0, "effect\\EM_LIGHTNING_LAND.wav", 0, 0); break; case EF_ROSEBLOSSOM_SHOT: { float fromReciprocalDepth = 0.0f; float toReciprocalDepth = 0.0f; float fromX; float fromY; float toX; float toY; g_renderer->ProjectViewport(this->position, static_cast(g_modeMgr.GetGameMode())->camera->frame.view.values, &fromX, &fromY, &fromReciprocalDepth); g_renderer->ProjectViewport(this->sourcePosition, static_cast(g_modeMgr.GetGameMode())->camera->frame.view.values, &toX, &toY, &toReciprocalDepth); const float dx = toX - fromX; const float dy = toY - fromY; double angle = static_cast(std::acos(static_cast(-dx / SquareRoot(dy * dy + dx * dx)))) / 3.141592f * 180.0f; if (toY > fromY) { angle = 360.0 - angle; } if (this->particle) { this->particle->m_angle = static_cast(angle); } this->AddEvent(0, "effect\\TR_ROSEBLOSSOM_SHOT.wav", 0, 0); break; } case EF_CONFLAGRATION: this->AddEvent(0, "effect\\EM_CONFLAGRATION.wav", 0, 0); break; case EF_JAWAII_SERENADE: this->particle->flags = 13; this->AddEvent(0, "effect\\TR_JAWAII_SERENADE.wav", 0, 0); break; case EF_PROCELLA: this->AddEvent(0, "effect\\EM_SUMMON_ELEMENTAL_PROCELLA_2.wav", 0, 0); break; case EF_TERREMOTUS: this->AddEvent(0, "effect\\EM_SUMMON_ELEMENTAL_TERREMOTUS_2.wav", 0, 0); break; case EF_FROM_THE_ABYSS: this->particle->flags = 13; this->AddEvent(0, "effect\\ABC_FROM_THE_ABYSS.wav", 0, 0); break; case EF_HAWK_RUSH: this->AddEvent(0, "effect\\WH_HAWKRUSH.wav", 0, 0); break; case EF_WIND_SIGN: this->AddEvent(0, "effect\\WH_WIND_SIGN.wav", 0, 0); break; case EF_CALUMITYGALE: this->AddEvent(0, "effect\\WH_CALAMITYGALE.wav", 0, 0); break; case EF_DEEP_BLIND_TRAP: case EF_SWIFT_TRAP: case EF_SOLID_TRAP: case EF_FLAME_TRAP: this->AddEvent(0, "effect\\WH_TRAP.wav", 0, 0); break; case EF_DEEP_BLIND_TRAP_HIT: this->AddEvent(0, "effect\\WH_DEEP_BLIND_TRAP_HIT.wav", 0, 0); break; case EF_SOLID_TRAP_HIT: this->AddEvent(0, "effect\\WH_SOLID_TRAP_HIT.wav", 0, 0); break; case EF_SWIFT_TRAP_HIT: this->AddEvent(0, "effect\\WH_SWIFT_TRAP_HIT.wav", 0, 0); break; case EF_FLAME_TRAP_HIT: this->AddEvent(0, "effect\\WH_FLAMETRAP_HIT.wav", 0, 0); break; case EF_TERRA_DRIVE: this->AddEvent(0, "effect\\EM_TERRA_DRIVE.wav", 0, 0); break; case EF_ETERNAL_SLASH_HIT: this->AddEvent(0, "effect\\SHC_SHADOW_STAB.wav", 0, 0); break; case EF_ETERNAL_SLASH_HIT_2: this->AddEvent(0, "effect\\SHC_ETERNAL_SLASH.wav", 0, 0); break; case EF_IMPACT_CRATER_HIT: this->AddEvent(0, "effect\\SHC_IMPACT_CRATER.wav", 0, 0); break; case EF_FATAL_SHADOW_CROW: this->AddEvent(0, "effect\\SHC_FATAL_SHADOW_CROW.wav", 0, 0); break; case EF_NEW_POTENT_VENOM: this->AddEvent(0, "effect\\SHC_POTENT_VENOM.wav", 0, 0); break; case EF_NEW_AXE_STOMP: this->AddEvent(0, "effect\\MT_AXE_STOMP.wav", 0, 0); break; case EF_NEW_RUSH_QUAKE_HIT: this->AddEvent(0, "effect\\MT_RUSH_QUAKE.wav", 0, 0); break; case EF_WOODEN_WARRIOR_THROWROCK: { const double angle = ScreenAngle(*reinterpret_cast(this->position), *reinterpret_cast(this->sourcePosition)); this->particle->m_angle = static_cast(angle + 180.0); this->AddEvent(0, "effect\\BO_THROWROCK.wav", 0, 0); break; } case EF_WOODEN_WARRIOR_ATTACK: { const double angle = ScreenAngle(*reinterpret_cast(this->position), *reinterpret_cast(this->sourcePosition)); this->particle->m_angle = static_cast(angle + 180.0); this->AddEvent(0, "effect\\BO_WOODEN_ATTACK.wav", 0, 0); break; } case EF_ROSEBLOSSOM_ROSE: this->AddEvent(0, "effect\\TR_ROSEBLOSSOM_ROSE.wav", 0, 0); break; case EF_SOUND_BLEND: this->AddEvent(0, "effect\\TR_SOUNDBLEND_SHOT.wav", 0, 0); break; case EF_SOUND_BLEND_RED: this->AddEvent(0, "effect\\TR_SOUNDBLEND_HIT.wav", 0, 0); break; case EF_METALLIC_FURY: this->AddEvent(0, "effect\\TR_METALIC_FURY.wav", 0, 0); break; case EF_GEF_NOCTURN: this->AddEvent(0, "effect\\TR_GEF_NOCTURN.wav", 0, 0); break; case EF_ROKI_CAPRICCIO: this->AddEvent(0, "effect\\TR_ROKI_CAPRICCIO.wav", 0, 0); break; case EF_AIN_RHAPSODY: this->AddEvent(0, "effect\\TR_AIN_RHAPSODY.wav", 0, 0); break; case EF_MUSICAL_INTERLUDE: this->AddEvent(0, "effect\\TR_MUSICAL_INTERLUDE.wav", 0, 0); break; case EF_NIFLHEIM: this->AddEvent(0, "effect\\TR_NIPELHEIM_REQUIEM.wav", 0, 0); break; case EF_PRONMARCH: this->AddEvent(0, "effect\\TR_PRON_MARCH.wav", 0, 0); break; case EF_MYSTICSYMPHONY: this->AddEvent(0, "effect\\TR_MYSTIC_SYMPHONY.wav", 0, 0); break; case EF_OLEUM_SANCTUM: this->AddEvent(0, "effect\\IQ_OLEUM_SANCTUM.wav", 0x32, 0); break; case EF_EXPLOSION_BLASTER: this->AddEvent(0, "effect\\IQ_EXPOSION_BLASTER.wav", 0, 0); break; case EF_FIRST_FAITH_POWER_START: this->AddEvent(0, "effect\\IQ_FIRST_FAITH_POWER.wav", 0, 0); break; case EF_JUDGE_START: this->AddEvent(0, "effect\\IQ_JUDGE.wav", 0, 0); break; case EF_THIRD_EXOR_FLAME_START: this->AddEvent(0, "effect\\IQ_THIRD_EXOR_FLAME.wav", 0, 0); break; case EF_FIRST_BRAND_START: this->AddEvent(0, "effect\\IQ_FIRST_BRAND.wav", 0, 0); break; case EF_SECOND_FAITH: this->AddEvent(0, "effect\\IQ_SECOND_FAITH.wav", 0x14, 0); break; case EF_SECOND_FLAME: this->AddEvent(0, "effect\\IQ_SECOND_FLAME.wav", 0, 0); break; case EF_THIRD_CONSECRATION: this->AddEvent(0, "effect\\IQ_THIRD_CONSECRATION.wav", 0, 0); break; case EF_THE_W_PROTECTION: this->AddEvent(0, "apocalips_attack.wav", 0, 0); break; case EF_ADVANCED_PROTECTION: this->AddEvent(0, "effect\\BO_ADVANCE_PROTECTION.wav", 0, 0); break; case EF_WOODEN_FAIRY_DUSTY: this->AddEvent(0, "effect\\BO_FAIRY_DUSTY.wav", 0, 0); break; case EF_RESEARCH_REPORT: this->AddEvent(0, "effect\\BO_RESEARCHREPORT.wav", 0, 0); break; case EF_HELLTREE_HOWLING: this->AddEvent(0, "effect\\BO_HELL_HOWLING.wav", 0, 0); break; case EF_ABYSS_DAGGER: this->AddEvent(0, "effect\\ABC_ABYSS_DAGGER.wav", 0, 0); break; case EF_ABYSS_STRIKE: this->AddEvent(0, "effect\\ABC_ABYSS_STRIKE.wav", 0, 0); break; case EF_DEFT_STAB: this->AddEvent(0, "effect\\ABC_DEFT_STAB1.wav", 0, 0); break; case EF_SPELL_ENCHANTING: this->AddEvent(0, "effect\\EM_SPELL_ENCHANTING.wav", 0, 0); break; case EF_ACTIVITY_BURN: this->AddEvent(0, "effect\\EM_ACTIVITY_BURN.wav", 0, 0); break; case EF_ELEMENTAL_BUSTER_FIRE: this->AddEvent(0, "effect\\EM_ELEMETAL_BUSTER_FIRE.wav", 0, 0); break; case EF_ELEMENTAL_BUSTER_WATER: this->AddEvent(0, "effect\\EM_ELEMETAL_BUSTER_WATER.wav", 0, 0); break; case EF_ELEMENTAL_BUSTER_POISON: this->AddEvent(0, "effect\\EM_ELEMETAL_BUSTER_POISON.wav", 0, 0); break; case EF_ELEMENTAL_BUSTER_LAND: this->AddEvent(0, "effect\\EM_ELEMETAL_BUSTER_GROUND.wav", 0, 0); break; case EF_ELEMENTAL_BUSTER_WIND: this->AddEvent(0, "effect\\EM_ELEMETAL_BUSTER_WIND.wav", 0, 0); break; case EF_ARDOR_FLAMETECHNIC: this->AddEvent(0, "effect\\EF_FireArrow1.wav", 0, 0); this->AddEvent(1, nullptr, 0, 0); break; case EF_DILUVIO_COLD_FORCE: this->AddEvent(0, "effect\\EF_IceArrow1.wav", 0, 0); this->AddEvent(1, nullptr, 0, 0); break; case EF_PROCELLA_GRACE_BREEZE: this->AddEvent(0, "effect\\EF_LightBolt3.wav", 0, 0); this->AddEvent(1, nullptr, 0, 0); break; case EF_TERREMOTUS_EARTH_CARE: this->AddEvent(0, "effect\\wizard_earthspike.wav", 0, 0); this->AddEvent(1, nullptr, 0, 0); break; case EF_SERPENS_DEEP_POISONING: this->AddEvent(0, "effect\\ef_detoxication.wav", 0, 0); this->AddEvent(1, nullptr, 0, 0); break; case EF_GUARD_STANCE: case EF_ATTACK_STANCE: this->AddEvent(0, "effect\\IG_GUARD_STANCE.wav", 0, 0); break; case EF_GUARDIANSHIELD_SUB: this->AddEvent(0, "effect\\IG_GUARDIAN_SHIELD.wav", 0, 0); break; case EF_REBOUND_SHIELD: this->AddEvent(0, "effect\\IG_REBOUND_SHIELD.wav", 0, 0); break; case EF_ULTIMATESACRIFICE: this->AddEvent(0, "effect\\IG_ULTIMATE_SACRIFICE.wav", 0, 0); break; case EF_HOLY_SHIELD: this->AddEvent(0, "effect\\IG_HOLY_SHIELD1.wav", 0, 0); break; case EF_HOLY_SHIELD_LOOP: this->AddEvent(0, "effect\\IG_HOLY_SHIELD2.wav", 0x22, 0); break; case EF_GRAND_JUDGEMENT: this->AddEvent(0, "effect\\IG_GRAND_JUDGEMENT.wav", 0, 0); break; case EF_OVERSLASH: this->AddEvent(0, "effect\\IG_OVERSLASH.wav", 0, 0); break; case EF_UI_ENCHANT_FAIL: case EF_UI_LEVELUP_FAIL: case EF_UI_RESET_FAIL: this->particle->flags = 0x205; this->AddEvent(1, nullptr, 0, 0); break; case EF_TETRA_VORTEX_WATER_SUB_2: this->AddEvent(0, "effect\\drop_effect_1.wav", 0, 0); break; case EF_TETRA_VORTEX_EARTH_SUB_2: this->AddEvent(0, "effect\\drop_effect_2.wav", 0, 0); break; case EF_20TH_FIREWORK: this->AddEvent(0, "effect\\pokjuk_jap.wav", 0, 0); break; case EF_NPC_GATE_GREEN_2: case EF_NPC_GATE_PURPLE_2: case EF_NPC_GATE_RED_2: this->particle->m_scale = 0.6f; break; case EF_NPC_GATE_GREEN_3: case EF_NPC_GATE_PURPLE_3: case EF_NPC_GATE_RED_3: this->particle->m_scale = 0.35f; break; case EF_NEW_METEORSTORM_BOTTOM: case EF_NEW_ADORAMUS_BOTTOM: case EF_TETRA_VORTEX_FIRE_GROUND: case EF_TETRA_VORTEX_WATER_GROUND: case EF_TETRA_VORTEX_WIND_GROUND: case EF_TETRA_VORTEX_EARTH_GROUND: case EF_NEW_CRIMSONROCK_BOTTOM: case EF_TETRA_VORTEX_CORE_GROUND: case EF_NEW_DIAMONDDUST_BOTTOM: case EF_NEW_DIAMONDDUST_CAST: case EF_NEW_SECRAMENT: case EF_NEW_PSYCHICWAVE_BOTTOM: case EF_NEW_PSYCHICWAVE_CAST: case EF_NEW_TRIANGLESHOT_BOTTOM: case EF_NEW_RAMPAGEBLASTER_BOTTOM: case EF_NEW_FEINTBOMB_BOTTOM: case EF_NEW_ARMSCANNON_01_DOWN: case EF_NEW_ARMSCANNON_11_DOWN: case EF_NEW_ARMSCANNON_EXPLOSION_BOTTOM: case EF_NEW_CART_CANNON_EXPLOSION_BOTTOM: case EF_NEW_CART_CANNON_FIRE_BOTTOM: case EF_NEW_CART_TORNADO_BOTTOM: case EF_HELP_ANGEL_BOTTOM: case EF_NEW_BANISHINGPOINT_TARGET_BOTTOM: case EF_NEW_BANISHINGPOINT_CAST_BOTTOM: case EF_NEW_DRAGONBREATH_BOMB_BOTTOM: case EF_NEW_ARMSCANNON_CAST_BOTTOM: case EF_NEW_DRAGONBREATH_WATER_BOMB_BOTTOM: case EF_NEW_COUNTER_SLASH_BOTTOM: case EF_NEW_FATAL_MENACE_CAST_BOTTOM: case EF_NEW_COMET_BOTTOM: case EF_NEW_COMET_CAST_BOTTOM: case EF_NEW_COMET_SUB_EXP_BOTTOM: case EF_MINEFFECT_ADORAMUS_BOTTOM: case EF_MINEFFECT_TETRA_FIRE_BOTTOM: case EF_MINEFFECT_TETRA_WATER_BOTTOM: case EF_MINEFFECT_TETRA_WIND_BOTTOM: case EF_MINEFFECT_TETRA_EARTH_BOTTOM: case EF_MINEFFECT_TETRA_CORE_BOTTOM: case EF_MINEFFECT_CRIMSONROCK_BOTTOM: case EF_MINEFFECT_DIAMONDDUST_BOTTOM: case EF_MINEFFECT_DIAMONDDUST_CAST: case EF_MINEFFECT_SECRAMENT: case EF_MINEFFECT_PSYCHICWAVE_BOTTOM: case EF_MINEFFECT_PSYCHICWAVE_CAST: case EF_MINEFFECT_TRIANGLESHOT_BOTTOM: case EF_MINEFFECT_RAMPAGEBLASTER_BOTTOM: case EF_MINEFFECT_FEINTBOMB_BOTTOM: case EF_MINEFFECT_ARMSCANNON_01: case EF_MINEFFECT_ARMSCANNON_11: case EF_MINEFFECT_ARMSCANNON_EXPLOSION_BOTTOM: case EF_MINEFFECT_ARMSCANNON_CAST_BOTTOM: case EF_MINEFFECT_CART_CANNON_EXPLOSION_BOTTOM: case EF_MINEFFECT_CART_CANNON_FIRE_BOTTOM: case EF_MINEFFECT_CART_TORNADO_BOTTOM: case EF_MINEFFECT_BANISHINGPOINT_TARGET_BOTTOM: case EF_MINEFFECT_BANISHINGPOINT_CAST_BOTTOM: case EF_MINEFFECT_COMET_BOTTOM: case EF_MINEFFECT_COMET_CAST_BOTTOM: case EF_MINEFFECT_COMET_SUB_EXP_BOTTOM: case EF_NEW_POISONSMOKE_CAST: case EF_NEW_HELLINFERNO_BOTTOM: case EF_NEW_HELLINFERNO_SUB_BOTTOM: case EF_NEW_CLEARANCE_BOTTOM: case EF_NEW_VARETYRSPEAR_BOTTOM: case EF_NEW_VARETYRSPEAR_CAST_BOTTOM: case EF_NEW_FALLENEMPIRE_BOTTOM: case EF_NEW_HOWLINGOFLION_BOTTOM: case EF_NEW_HOWLINGOFLION_CAST_BOTTOM: case EF_NEW_METALLICSOUND_BOTTOM: case EF_NEW_REPRODUCE_BOTTOM: case EF_NEW_SOULEXPANSION_CAST_BOTTOM: case EF_NEW_SOULEXPANSION_LOOP_BOTTOM: case EF_NEW_AROMAOIL_BOTTOM: case EF_NEW_BATHFOAM_BOTTOM: case EF_NEW_WALLOFTHORN_CAST_BOTTOM: case EF_NEW_EARTHGRAVE_BOTTOM: case EF_NEW_IGNITIONBREAK_BOTTOM: case EF_NEW_JUDEX_CAST_BOTTOM: case EF_NEW_JUDEX_CAST_LOOP_BOTTOM: case EF_NEW_JUDEX_TARGET_BOTTOM: case EF_NEW_JUDEX_LIGHT_BOTTOM: case EF_NEW_CHAINLIGHTNING_CAST_BOTTOM: case EF_NEW_CHAINLIGHTNING_LOCKON: case EF_NEW_MANDRAGORA_BOTTOM: case EF_NEW_SOUNDOFDESTRUCTION_CAST_BOTTOM: case EF_NEW_UNLIMIT_BOTTOM: case EF_NEW_AXEBOOMERANG_CAST_BOTTOM: case EF_NEW_SPELLFIST_FIRE_BOTTOM: case EF_NEW_SPELLFIST_WATER_BOTTOM: case EF_NEW_CARTBOOST_BOTTOM: case EF_NEW_OVERBRAND_CAST_BOTTOM: case EF_NEW_WINDCUTTER_BOTTOM_01: case EF_NEW_WINDCUTTER_BOTTOM_05: case EF_NEW_SERVANTWEAPON_HIT_BOTTOM: case EF_NEW_SERVANTWEAPON_SHOOT_BOTTOM: case EF_NEW_VULCANARM_BOTTOM: case EF_NEW_EARTHDRIVE_BOTTOM: case EF_SERVANT_PHANTOM_HIT_BOTTOM: case EF_SERVANT_PHANTOM_SUB_BOTTOM: case EF_DRAGONIC_AURA_BOTTOM: case EF_DRAGONIC_AURA_HIT_BOTTOM: case EF_DRAGONIC_AURA_BUFF_BOTTOM: case EF_MADNESS_CRUSHER_BOTTOM: case EF_NEW_AUTOSHADOWSPELL_BOTTOM: case EF_DESTRUCTIVE_HURRICANE_BOTTOM: case EF_ROCKDOWN_BOTTOM: case EF_NEW_CHARGINGPIERCE_CAST_BOTTOM: case EF_MYSTERY_ILLUSION_BOTTOM: case EF_TORNADO_STORM_BOTTOM: case EF_VIOLENT_QUAKE_BOTTOM: case EF_ALL_BLOOM_BOTTOM: case EF_CLIMAX_CAST_LOOP: case EF_NEW_D_MACHINE_CAST_BOTTOM: case EF_ARBITRIUM_CAST_BOTTOM: case EF_COMPETENTIA_LOOP_BOTTOM: case EF_CRYSTAL_IMPACT_CAST_BOTTOM: case EF_NEW_ENCHANTING_SHADOW_BOTTOM: case EF_IMPACT_CRATER_BOTTOM: case EF_ABR_INFINITY_BOTTOM: case EF_ABR_INFINITY_CAST: case EF_NEW_DILECTIO_HEAL_CAST_BOTTOM: case EF_NEW_PRAMEN_CAST: case EF_NEW_BATTLE_W_BOTTOM: case EF_FIRST_FAITH_POWER: case EF_JUDGE: case EF_JUDGE_AURA: case EF_THIRD_EXOR_FLAME: case EF_THIRD_EXOR_FLAME_AURA: case EF_CHAIN_REACTION_SHOT_CAST_BOTTOM: case EF_DILUVIO_ICE_BOTTOM: case EF_ARDOR_BOTTOM: case EF_LIGHTNING_LAND_BOTTOM: case EF_ROSEBLOSSOM_CAST_BOTTOM: case EF_FIRST_BRAND_AURA: case EF_CONFLAGRATION_BOTTOM: case EF_SOUND_BLEND_CAST_BOTTOM: case EF_JAWAII_SERENADE_CAST_BOTTOM: case EF_PRONMARCH_CAST_BOTTOM: case EF_RHYTHMSHOOTING_CAST_BOTTOM: case EF_SECOND_FAITH_AURA: case EF_ABYSS_STRIKE_BOTTOM: case EF_ABYSS_STRIKE_CAST_BOTTOM: case EF_ABYSS_STRIKE_GROUND_BOTTOM: case EF_MASSIVE_FLAME_BLASTER_HIT_BOTTOM: case EF_PROCELLA_BOTTOM: case EF_GEF_NOCTURN_CAST_BOTTOM: case EF_ROKI_CAPRICCIO_CAST_BOTTOM: case EF_ABYSS_SLAYER_CAST_BOTTOM: case EF_ABYSS_SQUARE_BOTTOM: case EF_TERRA_DRIVE_BOTTOM: case EF_ELEMENTAL_BUSTER_FIRE_BOTTOM: case EF_ELEMENTAL_BUSTER_LAND_BOTTOM: case EF_ELEMENTAL_BUSTER_POISON_BOTTOM: case EF_ELEMENTAL_BUSTER_WATER_BOTTOM: case EF_ELEMENTAL_BUSTER_WIND_BOTTOM: case EF_OVERSLASH_BOTTOM: case EF_ADVANCED_PROTECTION_BOTTOM: case EF_ADVANCED_PROTECTION_CAST_BOTTOM: case EF_CROSS_RAIN_BOTTOM: case EF_CROSS_RAIN_CAST_BOTTOM: case EF_GRAND_JUDGEMENT_BOTTOM: case EF_GUARDIANSHIELD_BOTTOM: case EF_JUDGEMENT_CROSS_BOTTOM: case EF_JUDGEMENT_CROSS_CAST_BOTTOM: case EF_REBOUND_SHIELD_BOTTOM: case EF_REBOUND_SHIELD_CAST_BOTTOM: case EF_ULTIMATESACRIFICE_BOTTOM: case EF_ACIDIFIED_ZONE_FIRE_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_FIRE_START_BOTTOM: case EF_ACIDIFIED_ZONE_FIRE_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_WATER_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_WATER_START_BOTTOM: case EF_ACIDIFIED_ZONE_WATER_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_WIND_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_WIND_START_BOTTOM: case EF_ACIDIFIED_ZONE_WIND_LOOP_BOTTOM: case EF_ACIDIFIED_ZONE_GROUND_CAST_BOTTOM: case EF_ACIDIFIED_ZONE_GROUND_START_BOTTOM: case EF_ACIDIFIED_ZONE_GROUND_LOOP_BOTTOM: case EF_RESEARCH_REPORT_CAST_BOTTOM: case EF_SERPENS_DEEP_POISONING_BOTTOM: case EF_DILUVIO_COLD_FORCE_BOTTOM: case EF_ARDOR_FLAMETECHNIC_BOTTOM: case EF_PROCELLA_GRACE_BREEZE_BOTTOM: case EF_TERREMOTUS_EARTH_CARE_BOTTOM: case EF_THIRD_CONSECRATION_BOTTOM: case EF_SERVANT_SIGN_BOTTOM: case EF_NPC_KILLING_AURA: case EF_TOXIN_OF_MANDARA_BOMB_BOTTOM: case EF_NEEDLE_STINGER_BOTTOM: case EF_ABSOLUTE_ZEPHYR_BOTTOM: case EF_HEILIGE_PFERD_BOTTOM: case EF_HEILIGE_PFERD_CAST: case EF_THE_ONE_FIGHTER_RISES_BOTTOM: case EF_DESTRUCTIVE_HURRICANE_BOTTOM_REUSE: this->particle->flags = 13; break; default: if (id >= 0x9B5) { bool renderBefore = false; g_session.m_hotkeyScript->Call("IsRenderBeforeCharacter", "d>b", id - 0x9B5, &renderBefore); if (renderBefore) { this->particle->flags = 13; } } break; } }